X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=testpico%2Fasmtools.S;h=af34b4156cd6a60d61c9d7c046eb7c2404ba8cca;hb=HEAD;hp=24b64585784f781aa26b38c74dcdde05505b92d9;hpb=635f24506c5a883336e9028e0de7a4a5fb9b2226;p=megadrive.git diff --git a/testpico/asmtools.S b/testpico/asmtools.S index 24b6458..83f03db 100644 --- a/testpico/asmtools.S +++ b/testpico/asmtools.S @@ -6,6 +6,7 @@ move.l (4 + \arg * 4 + \stacksz)(%sp), \reg .endm +# args are always 4 bytes in stack, caller restores sp .macro ldargw arg, stacksz, reg move.w (4 + \arg * 4 + 2 + \stacksz)(%sp), \reg .endm @@ -44,6 +45,8 @@ write16_x16: # destroys d1 .global get_input get_input: +.global get_input_s +get_input_s: move.b #0x40,(0xa10003) moveq.l #0,d0 nop @@ -66,6 +69,8 @@ get_input: and.w d0,d1 /* what changed now */ .endif rts +.global get_input_end +get_input_end: .global get_line get_line: @@ -295,6 +300,7 @@ x32x_enable_end: .global x32x_disable x32x_disable: movea.l #0xa15100, a0 + move.w #0, 6(a0) /* RV=0 */ move.w #1, (a0) /* ADEN (reset sh2) */ move.w #0, (a0) /* adapter disable, reset sh2 */ move.w #1, d0 @@ -534,7 +540,7 @@ test_ym_ab_sync2: movea.l #0xa04000, a0 movea.l #0xa04001, a1 -# move.b #0x3f, (a1) /* 12 clear */ + move.b #0x0f, (a1) /* 12 enable */ moveq.l #0, d0 moveq.l #3, d1 nop /* 4 need ~12c to clear */ @@ -543,6 +549,26 @@ test_ym_ab_sync2: and.b d1, d0 /* 4 */ beq 0b /* 10|8 */ move.b (a0), d0 /* re-read */ + move.b #0x3c, (a1) /* 12 clear, disable */ rts +.global x32x_switch_rv +x32x_switch_rv: + ldargw 0, 0, d0 + move.l (sp)+, d1 + movea.l #0xa15106, a0 + btst #0, d0 + bne 0f + move.w #0, (a0) + or.l #0x880000, d1 + bra 1f +0: + move.w #1, (a0) + and.l #0x07ffff, d1 +1: + movea.l d1, a1 + jmp (a1) +.global x32x_switch_rv_end +x32x_switch_rv_end: + # vim:filetype=asmM68k:ts=4:sw=4:expandtab