diff --git a/Source/HBIOS/ez80cpudrv.asm b/Source/HBIOS/ez80cpudrv.asm index 13af3f4c..45ebed71 100644 --- a/Source/HBIOS/ez80cpudrv.asm +++ b/Source/HBIOS/ez80cpudrv.asm @@ -77,3 +77,19 @@ EZ80_PLT_C3CYL: .DB EZ80_MEM_CYCLES EZ80_PLT_C2CYL: .DB EZ80_IO_CYCLES + + +; ez80 helper functions/instructions + +_EZ80_CPY_EHL_TO_UHL: + PUSH IX + PUSH AF + .DB $5B, $DD, $21, $00, $00, $00 ; LD.LIL IX, 0 + .DB $49, $DD, $39 ; ADD.L IX, SP + .DB $49, $E5 ; PUSH.L HL + .DB $5B, $DD, $73, $FF ; LD.LIL (IX-1), E + .DB $49, $E1 ; POP.L HL + POP AF + POP IX + RET + diff --git a/Source/HBIOS/ez80instr.inc b/Source/HBIOS/ez80instr.inc index 4d495a3b..5026de24 100644 --- a/Source/HBIOS/ez80instr.inc +++ b/Source/HBIOS/ez80instr.inc @@ -15,7 +15,6 @@ #DEFINE EZ80_BNKSEL .DB $49, $DF #DEFINE EZ80_UTIL_VER_EXCH XOR A \ LD B, 0 \ EZ80_FN - #DEFINE EZ80_UTIL_EHL_TO_HL XOR A \ LD B, 1 \ EZ80_FN #DEFINE EZ80_UTIL_HL_TO_EHL XOR A \ LD B, 2 \ EZ80_FN #DEFINE EZ80_UTIL_SET_BUSTM XOR A \ LD B, 3 \ EZ80_FN #DEFINE EZ80_UTIL_SET_BUSFQ XOR A \ LD B, 4 \ EZ80_FN @@ -117,6 +116,8 @@ IO_SEGMENT .EQU $FF ; THE UPPER 8-BIT ADDRESS FOR I/O #DEFCONT \ LD A, IO_SEGMENT #DEFCONT \ IN A, (addr) +#define EZ80_CPY_EHL_TO_UHL CALL _EZ80_CPY_EHL_TO_UHL + #ELSE #DEFINE EZ80_IO diff --git a/Source/HBIOS/ez80systmr.asm b/Source/HBIOS/ez80systmr.asm index dde6f072..4e73e971 100644 --- a/Source/HBIOS/ez80systmr.asm +++ b/Source/HBIOS/ez80systmr.asm @@ -64,7 +64,7 @@ SYS_GETSECS: ; DE:HL: TIMER VALUE (32 BIT) ; SYS_SETTIMER: - EZ80_UTIL_EHL_TO_HL() ; HL{23:0} <- E:HL{15:0} + EZ80_CPY_EHL_TO_UHL ; HL{23:0} <- E:HL{15:0} EZ80_TMR_SET_TICKS() RET ; @@ -73,7 +73,7 @@ SYS_SETTIMER: ; DE:HL: SECONDS VALUE (32 BIT) ; SYS_SETSECS: - EZ80_UTIL_EHL_TO_HL() ; HL{23:0} <- E:HL{15:0} + EZ80_CPY_EHL_TO_UHL ; HL{23:0} <- E:HL{15:0} EZ80_TMR_SET_SECONDS() RET diff --git a/Source/HBIOS/ez80uart.asm b/Source/HBIOS/ez80uart.asm index cfc624e0..c113c577 100644 --- a/Source/HBIOS/ez80uart.asm +++ b/Source/HBIOS/ez80uart.asm @@ -144,7 +144,7 @@ NOT_RESET: LD DE, 75 ; BAUD RATE DECODE CONSTANT CALL DECODE ; DE:HL := BAUD RATE - EZ80_UTIL_EHL_TO_HL() ; HL{23:0} <- E:HL{15:0} + EZ80_CPY_EHL_TO_UHL ; HL{23:0} <- E:HL{15:0} POP DE ; RESTORE REQUESTED LINE CHARACTERISTICS LD A, E