1*d4f6e58fSAlex Bennée .syntax no_register_prefix 2*d4f6e58fSAlex Bennée 3*d4f6e58fSAlex Bennée .macro start 4*d4f6e58fSAlex Bennée .text 5*d4f6e58fSAlex Bennée .global main 6*d4f6e58fSAlex Bennéemain: 7*d4f6e58fSAlex Bennée .endm 8*d4f6e58fSAlex Bennée 9*d4f6e58fSAlex Bennée .macro quit 10*d4f6e58fSAlex Bennée jump pass 11*d4f6e58fSAlex Bennée nop 12*d4f6e58fSAlex Bennée .endm 13*d4f6e58fSAlex Bennée 14*d4f6e58fSAlex Bennée .macro pass 15*d4f6e58fSAlex Bennée jump pass 16*d4f6e58fSAlex Bennée nop 17*d4f6e58fSAlex Bennée .endm 18*d4f6e58fSAlex Bennée 19*d4f6e58fSAlex Bennée .macro startnostack 20*d4f6e58fSAlex Bennée start 21*d4f6e58fSAlex Bennée .endm 22*d4f6e58fSAlex Bennée 23*d4f6e58fSAlex Bennée .macro fail 24*d4f6e58fSAlex Bennée .data 25*d4f6e58fSAlex Bennée99: 26*d4f6e58fSAlex Bennée .asciz " checkr3 failed\n" 27*d4f6e58fSAlex Bennée .text 28*d4f6e58fSAlex Bennée move.d 99b, $r10 29*d4f6e58fSAlex Bennée jsr _fail 30*d4f6e58fSAlex Bennée nop 31*d4f6e58fSAlex Bennée .endm 32*d4f6e58fSAlex Bennée 33*d4f6e58fSAlex Bennée .macro checkr3 val 34*d4f6e58fSAlex Bennée cmp.d 0x\val, $r3 35*d4f6e58fSAlex Bennée beq 100f 36*d4f6e58fSAlex Bennée nop 37*d4f6e58fSAlex Bennée .data 38*d4f6e58fSAlex Bennée99: 39*d4f6e58fSAlex Bennée .asciz "checkr3 failed\n" 40*d4f6e58fSAlex Bennée .text 41*d4f6e58fSAlex Bennée move.d 99b, $r10 42*d4f6e58fSAlex Bennée jsr _fail 43*d4f6e58fSAlex Bennée nop 44*d4f6e58fSAlex Bennée100: 45*d4f6e58fSAlex Bennée .endm 46*d4f6e58fSAlex Bennée 47*d4f6e58fSAlex Bennée; Test the condition codes 48*d4f6e58fSAlex Bennée .macro test_cc N Z V C 49*d4f6e58fSAlex Bennée .if \N 50*d4f6e58fSAlex Bennée bpl 9f 51*d4f6e58fSAlex Bennée nop 52*d4f6e58fSAlex Bennée .else 53*d4f6e58fSAlex Bennée bmi 9f 54*d4f6e58fSAlex Bennée nop 55*d4f6e58fSAlex Bennée .endif 56*d4f6e58fSAlex Bennée .if \Z 57*d4f6e58fSAlex Bennée bne 9f 58*d4f6e58fSAlex Bennée nop 59*d4f6e58fSAlex Bennée .else 60*d4f6e58fSAlex Bennée beq 9f 61*d4f6e58fSAlex Bennée nop 62*d4f6e58fSAlex Bennée .endif 63*d4f6e58fSAlex Bennée .if \V 64*d4f6e58fSAlex Bennée bvc 9f 65*d4f6e58fSAlex Bennée nop 66*d4f6e58fSAlex Bennée .else 67*d4f6e58fSAlex Bennée bvs 9f 68*d4f6e58fSAlex Bennée nop 69*d4f6e58fSAlex Bennée .endif 70*d4f6e58fSAlex Bennée .if \C 71*d4f6e58fSAlex Bennée bcc 9f 72*d4f6e58fSAlex Bennée nop 73*d4f6e58fSAlex Bennée .else 74*d4f6e58fSAlex Bennée bcs 9f 75*d4f6e58fSAlex Bennée nop 76*d4f6e58fSAlex Bennée .endif 77*d4f6e58fSAlex Bennée ba 8f 78*d4f6e58fSAlex Bennée nop 79*d4f6e58fSAlex Bennée9: 80*d4f6e58fSAlex Bennée .data 81*d4f6e58fSAlex Bennée99: 82*d4f6e58fSAlex Bennée .asciz "test_move_cc failed\n" 83*d4f6e58fSAlex Bennée .text 84*d4f6e58fSAlex Bennée move.d 99b, $r10 85*d4f6e58fSAlex Bennée jsr _fail 86*d4f6e58fSAlex Bennée nop 87*d4f6e58fSAlex Bennée8: 88*d4f6e58fSAlex Bennée .endm 89*d4f6e58fSAlex Bennée 90*d4f6e58fSAlex Bennée 91*d4f6e58fSAlex Bennée .macro test_move_cc N Z V C 92*d4f6e58fSAlex Bennée .if \N 93*d4f6e58fSAlex Bennée bpl 9f 94*d4f6e58fSAlex Bennée nop 95*d4f6e58fSAlex Bennée .else 96*d4f6e58fSAlex Bennée bmi 9f 97*d4f6e58fSAlex Bennée nop 98*d4f6e58fSAlex Bennée .endif 99*d4f6e58fSAlex Bennée .if \Z 100*d4f6e58fSAlex Bennée bne 9f 101*d4f6e58fSAlex Bennée nop 102*d4f6e58fSAlex Bennée .else 103*d4f6e58fSAlex Bennée beq 9f 104*d4f6e58fSAlex Bennée nop 105*d4f6e58fSAlex Bennée .endif 106*d4f6e58fSAlex Bennée ba 8f 107*d4f6e58fSAlex Bennée nop 108*d4f6e58fSAlex Bennée9: 109*d4f6e58fSAlex Bennée .data 110*d4f6e58fSAlex Bennée99: 111*d4f6e58fSAlex Bennée .asciz "test_move_cc failed\n" 112*d4f6e58fSAlex Bennée .text 113*d4f6e58fSAlex Bennée move.d 99b, $r10 114*d4f6e58fSAlex Bennée jsr _fail 115*d4f6e58fSAlex Bennée nop 116*d4f6e58fSAlex Bennée8: 117*d4f6e58fSAlex Bennée .endm 118