megaed-sv: implement ROM load/run
[megadrive.git] / megaed-sv / asmtools.s
CommitLineData
51f3a685 1# Assemble with gas
2# --register-prefix-optional --bitwise-or
3
4.macro ldarg arg, stacksz, reg
5 move.l (4 + \arg * 4 + \stacksz)(%sp), \reg
6.endm
7
8
df43aeea 9.global read_joy_responses /* u8 *rbuf */
51f3a685 10read_joy_responses:
11 ldarg 0, 0, a1
12 movem.l d2-d7, -(sp)
13 movea.l #0xa10003, a0
14 move.b #0x40, (6,a0)
15 move.b #0x40, (a0)
16
17.macro one_test val
18 move.l #100/12-1, d0
190:
20 dbra d0, 0b
21 move.b \val, d0
22 move.b d0, (a0)
23 move.b (a0), d0
24 move.b (a0), d1
25 move.b (a0), d2
26 move.b (a0), d3
27 move.b (a0), d4
28 move.b (a0), d5
29 move.b (a0), d6
30 move.b (a0), d7
31 move.b d0, (a1)+
32 move.b d1, (a1)+
33 move.b d2, (a1)+
34 move.b d3, (a1)+
35 move.b d4, (a1)+
36 move.b d5, (a1)+
37 move.b d6, (a1)+
38 move.b d7, (a1)+
39.endm
40
41 move.w #0x2700, sr
42 one_test #0x00
43 one_test #0x40
44 one_test #0x00
45 one_test #0x40
46 one_test #0x00
47 move.w #0x2000, sr
48 movem.l (sp)+, d2-d7
49 rts
50
51
df43aeea 52.global run_game /* u16 mapper */
53run_game:
54 move.w #0x2700, sr
55 ldarg 0, 0, d7
56 move.l #0xa10000, a7
57 moveq.l #0x00, d1
58 move.b #0xff, d2
59 move.b d1, (0x0b,a7) /* CtrlB */
60 move.b d1, (0x0d,a7) /* CtrlC */
61 move.b d2, (0x0f,a7) /* TxDataA */
62 move.b d1, (0x13,a7) /* S-CtrlA */
63 move.b d2, (0x15,a7) /* TxDataB */
64 move.b d1, (0x19,a7) /* S-CtrlB */
65 move.b d2, (0x1b,a7) /* TxDataC */
66 move.b d1, (0x1f,a7) /* S-CtrlC */
67
68 move.l #0xff0000, a1
69 move.l #0x10000/4/4-1, %d0
700:
71 move.l d1, (%a1)+
72 move.l d1, (%a1)+
73 move.l d1, (%a1)+
74 move.l d1, (%a1)+
75 dbra d0, 0b
76
77 lea (run_game_code,pc), a0
78 move.l #0xfff000, a1
79 move.l #(run_game_code_end - run_game_code)/2-1, d0
800:
81 move.w (%a0)+, (%a1)+
82 dbra d0, 0b
83 jmp 0xfff000
84
85run_game_code:
86 move.w #0x3210, (0xA13006)
87
88 move.w d7, (0xA13010)
89 move.w #0, (0xA13000)
90
91 move.l (0x00), a7
92 move.l (0x04), a0
93 jmp (a0)
94run_game_code_end:
95
96
51f3a685 97# vim:filetype=asmM68k:ts=4:sw=4:expandtab