X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=cpu%2FDrZ80%2Fdrz80.s;h=5a4801acff9d30e323d40c3de6e92f8aae5b7185;hb=4b167c12c7ebb23223c347793a2b4d5e9712e384;hp=476065031a58ee9866ff793761549cd6adc74be4;hpb=cc68a136aa179a5f32fe40208371eb9c2b0aadae;p=picodrive.git diff --git a/cpu/DrZ80/drz80.s b/cpu/DrZ80/drz80.s index 4760650..5a4801a 100644 --- a/cpu/DrZ80/drz80.s +++ b/cpu/DrZ80/drz80.s @@ -11,18 +11,21 @@ .global DrZ80Run .global DrZ80Ver - .equiv INTERRUPT_MODE, 0 ;@0 = Use internal int handler, 1 = Use Mames int handler - .equiv FAST_Z80SP, 1 ;@0 = Use mem functions for stack pointer, 1 = Use direct mem pointer - .equiv UPDATE_CONTEXT, 0 - .equiv DRZ80_FOR_PICODRIVE, 1 + .equiv INTERRUPT_MODE, 0 ;@0 = Use internal int handler, 1 = Use Mames int handler + .equiv FAST_Z80SP, 1 ;@0 = Use mem functions for stack pointer, 1 = Use direct mem pointer + .equiv UPDATE_CONTEXT, 0 + .equiv DRZ80_FOR_PICODRIVE, 1 .if INTERRUPT_MODE - .extern Interrupt + .extern Interrupt .endif .if DRZ80_FOR_PICODRIVE - .extern YM2612Read_ - .extern YM2612Read_940 +.include "port_config.s" + .extern YM2612Read_ +.if EXTERNAL_YM2612 + .extern YM2612Read_940 +.endif .extern PicoRead8 .extern Pico .extern z80_write @@ -106,43 +109,39 @@ DrZ80Ver: .long 0x0001 .text .if DRZ80_FOR_PICODRIVE -.include "port_config.s" .macro YM2612Read_and_ret8 - stmfd sp!,{r3,r12,lr} + stmfd sp!,{r3,r12,lr} .if EXTERNAL_YM2612 ldr r1,=PicoOpt ldr r1,[r1] tst r1,#0x200 - bne 10f - bl YM2612Read_ - ldmfd sp!,{r3,r12,pc} -10: - bl YM2612Read_940 + ldrne r2, =YM2612Read_940 + ldreq r2, =YM2612Read_ + mov lr,pc + bx r2 .else bl YM2612Read_ .endif - ldmfd sp!,{r3,r12,pc} + ldmfd sp!,{r3,r12,pc} .endm .macro YM2612Read_and_ret16 - stmfd sp!,{r3,r12,lr} + stmfd sp!,{r3,r12,lr} .if EXTERNAL_YM2612 ldr r0,=PicoOpt ldr r0,[r0] tst r0,#0x200 - bne 10f - bl YM2612Read_ - orr r0,r0,r0,lsl #8 - ldmfd sp!,{r3,r12,pc} -10: - bl YM2612Read_940 + ldrne r2, =YM2612Read_940 + ldreq r2, =YM2612Read_ + mov lr,pc + bx r2 orr r0,r0,r0,lsl #8 .else bl YM2612Read_ orr r0,r0,r0,lsl #8 .endif - ldmfd sp!,{r3,r12,pc} + ldmfd sp!,{r3,r12,pc} .endm pico_z80_read8: @ addr @@ -171,7 +170,7 @@ pico_z80_read8: @ addr cmp r1,#2 @ YM2612 (0x4000-0x5fff) bne 0f and r0,r0,#3 - YM2612Read_and_ret8 + YM2612Read_and_ret8 0: cmp r0,#0x4000 movge r0,#0xff @@ -1460,7 +1459,6 @@ DoInterrupt: bne DoInterrupt_mode1 tst r1,#2 bne DoInterrupt_mode2 - b DoInterrupt_mode0 DoInterrupt_mode0: ;@ get 3 byte vector @@ -6670,11 +6668,14 @@ opcode_DD_NF: ;@ mov r0,#0xFD00 ;@ orr r0,r0,r1 ;@ b end_loop + opcode_DD_NF2: - mov r0,#0xDD0000 - orr r0,r0,#0xCB00 - orr r0,r0,r1 - b end_loop + fetch 15 +;@ notaz: we don't want to deadlock here +;@ mov r0,#0xDD0000 +;@ orr r0,r0,#0xCB00 +;@ orr r0,r0,r1 +;@ b end_loop ;@ADD IX,BC opcode_DD_09: @@ -8069,8 +8070,8 @@ opcode_ED_BB: ;@from the DD location but the address of the IY reg is passed instead ;@of IX -end_loop: - b end_loop +;@end_loop: +;@ b end_loop