some tests
[megadrive.git] / testsram / asmtools.s
CommitLineData
3ee911dc 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# write with instructions that have bit0 clear
9.global write_rreg_i0 /* u8 val */
10write_rreg_i0:
11 ldarg 0, 0, d0
12 movea.l #0xa130f1, a0
13 move.b d0, d0
14 move.b d0, d0
15 move.b d0, (a0)
16 move.b d0, d0
17 move.b d0, d0
18 move.b d0, d0
19 move.b d0, d0
20 rts
21
22
23.global write_rreg_i1 /* u8 val */
24write_rreg_i1:
25 ldarg 0, 0, d1
26 movea.l #0xa130f1, a0
27 move.b d1, d1
28 move.b d1, d1
29 move.b d1, (a0)
30 move.b d1, d1
31 move.b d1, d1
32 move.b d1, d1
33 move.b d1, d1
34 rts
35
36
37.global fillpx16 /* u8 *d, unsigned int blocks, u8 val */
38fillpx16:
39 ldarg 0, 0, a0
40 ldarg 2, 0, d0
41 move.b d0, d1
42 lsl.w #8, d1
43 or.w d1, d0
44 move.w d0, d1
45 swap d0
46 move.w d1, d0
47 ldarg 1, 0, d1
48 subq.l #1, d1
49 movem.l d2, -(sp)
50 move.l #32, d2
510:
52 movep.l d0, 0(a0)
53 movep.l d0, 8(a0)
54 movep.l d0, 16(a0)
55 movep.l d0, 24(a0)
56 add.l d2, a0
57 dbra d1, 0b
58
59 movem.l (sp)+, d2
60 rts
61
62
63.global checkpx4 /* u8 *d, unsigned int blocks, u8 val */
64checkpx4:
65 ldarg 0, 0, a0
66 ldarg 2, 0, d0
67 move.b d0, d1
68 lsl.w #8, d1
69 or.w d1, d0
70 move.w d0, d1
71 swap d0
72 move.w d1, d0
73 ldarg 1, 0, d1
74 subq.l #1, d1
75 movem.l d2-d4, -(sp)
76 move.w d1, d3
77 move.w d1, d4
78 swap d3
790:
80 move.w d4, d1
811:
82 movep.l 0(a0), d2
83 addq.l #8, a0
84 cmp.l d0, d2
85 dbne d1, 1b
86 dbne d3, 0b
87
88 movem.l (sp)+, d2-d4
89 move.l d1, d0
90 cmp.w #-1, d1
91 beq 0f
92 moveq.l #0, d0
930:
94 rts
95
96
97# vim:filetype=asmM68k:ts=4:sw=4:expandtab