diff --git a/Source/HBIOS/ez80instr.inc b/Source/HBIOS/ez80instr.inc index dbb4ed8f..4e854af9 100644 --- a/Source/HBIOS/ez80instr.inc +++ b/Source/HBIOS/ez80instr.inc @@ -11,6 +11,27 @@ #DEFINE EZ80_FN .DB $49, $D7 ; RST.L $10 #DEFINE EZ80_BNKSEL .DB $49, $DF ; RST.L $18 + #DEFINE EZ80_UTIL_INIT LD A, 0 \ LD B, 0 \ EZ80_FN + #DEFINE EZ80_UTIL_EHL_TO_HL LD A, 0 \ LD B, 1 \ EZ80_FN + #DEFINE EZ80_UTIL_HL_TO_EHL LD A, 0 \ LD B, 2 \ EZ80_FN + + #DEFINE EZ80_RTC_INIT LD A, 1 \ LD B, 0 \ EZ80_FN + #DEFINE EZ80_RTC_GET_TIME LD A, 1 \ LD B, 1 \ EZ80_FN + #DEFINE EZ80_RTC_SET_TIME LD A, 1 \ LD B, 2 \ EZ80_FN + + #DEFINE EZ80_TMR_GET_TICKS LD A, 2 \ LD B, 0 \ EZ80_FN + #DEFINE EZ80_TMR_GET_SECONDS LD A, 2 \ LD B, 1 \ EZ80_FN + #DEFINE EZ80_TMR_SET_TICKS LD A, 2 \ LD B, 2 \ EZ80_FN + #DEFINE EZ80_TMR_SET_SECONDS LD A, 2 \ LD B, 3 \ EZ80_FN + + #DEFINE EZ80_UART_IN LD A, 3 \ LD B, 0 \ EZ80_FN + #DEFINE EZ80_UART_OUT LD A, 3 \ LD B, 1 \ EZ80_FN + #DEFINE EZ80_UART_IN_STAT LD A, 3 \ LD B, 2 \ EZ80_FN + #DEFINE EZ80_UART_OUT_STAT LD A, 3 \ LD B, 3 \ EZ80_FN + #DEFINE EZ80_UART_CONFIG LD A, 3 \ LD B, 4 \ EZ80_FN + #DEFINE EZ80_UART_QUERY LD A, 3 \ LD B, 5 \ EZ80_FN + #DEFINE EZ80_UART_RESET LD A, 3 \ LD B, 6 \ EZ80_FN + #DEFINE RET.L .DB $49 \ RET #DEFINE IN0_A(p) .DB $ED,$38,p diff --git a/Source/HBIOS/ez80rtc.asm b/Source/HBIOS/ez80rtc.asm index e58bad36..78fae96f 100644 --- a/Source/HBIOS/ez80rtc.asm +++ b/Source/HBIOS/ez80rtc.asm @@ -20,9 +20,7 @@ EZ80RTC_INIT: CALL NEWLINE ; FORMATTING PRTS("EZ80 RTC: ON-CHIP $") - LD A, 1 ; RTC FIRMWARE FUNCTION GROUP - LD B, 0 ; RTC INIT FUNCTION - EZ80_FN + EZ80_RTC_INIT() JR Z, RTC_POWERED PUSH AF @@ -33,9 +31,7 @@ EZ80RTC_INIT: RTC_POWERED: ; DISPLAY CURRENT TIME LD HL, EZ80RTC_BCDBUF_EXT ; POINT TO BCD BUF EXTENDED - LD A, 1 ; RTC FIRMWARE FUNCTION GROUP - LD B, 1 ; READ DATE-TIME INTO (HL) - EZ80_FN + EZ80_RTC_GET_TIME() LD HL, EZ80RTC_BCDBUF ; POINT TO BCD BUF CALL PRTDT ; DISPLAY THIS TIME @@ -83,9 +79,7 @@ EZ80RTC_DISPATCH: EZ80RTC_GETTIM: PUSH HL LD HL, EZ80RTC_BCDBUF_EXT ; POINT TO BCD BUF EXTENDED - LD A, 1 ; RTC FIRMWARE FUNCTION GROUP - LD B, 1 ; READ DATE-TIME INTO (HL) - EZ80_FN + EZ80_RTC_GET_TIME() ; (HL) <- TIME LD A, BID_BIOS ; COPY FROM BIOS BANK LD (HB_SRCBNK), A ; SET IT @@ -118,9 +112,7 @@ EZ80RTC_SETTIM: LD HL, EZ80RTC_BCDBUF_EXT ; POINT TO BCD BUF EXTENDED LD (HL), $20 ; CENTURY NOT SUPPORT BY HBIOS - LD A, 1 ; RTC FIRMWARE FUNCTION GROUP - LD B, 2 ; WRITE DATE-TIME FROM (HL) - EZ80_FN + EZ80_RTC_SET_TIME() ; (HL) -> SYSTEM TIME XOR A ; SIGNAL SUCCESS RET diff --git a/Source/HBIOS/ez80uart.asm b/Source/HBIOS/ez80uart.asm index e79fa9a3..abc7e104 100644 --- a/Source/HBIOS/ez80uart.asm +++ b/Source/HBIOS/ez80uart.asm @@ -58,9 +58,7 @@ EZUART_INIT: ; A: Status (0-OK, else error) ; EZUART_IN: - LD A, 3 ; UART - LD B, 0 ; UART-IN - EZ80_FN ; CHAR RETURNED IN E + EZ80_UART_IN() ; CHAR RETURNED IN E RET ; ; ### Function 0x01 -- Character Output (CIOOUT) @@ -76,9 +74,7 @@ EZUART_IN: ; A: Status (0-OK, else error) ; EZUART_OUT: - LD A, 3 ; UART - LD B, 1 ; UART-OUT - EZ80_FN + EZ80_UART_OUT() RET ; ; ### Function 0x02 -- Character Input Status (CIOIST) @@ -94,9 +90,7 @@ EZUART_OUT: ; A: Status / Characters Pending ; EZUART_IST: - LD A, 3 ; UART - LD B, 2 ; UART-IST - EZ80_FN + EZ80_UART_IN_STAT() RET ; ; ### Function 0x03 -- Character Output Status (CIOOST) @@ -110,9 +104,7 @@ EZUART_IST: ; A: Status (0 -> Full, 1 -> OK to send, < 0 -> HBIOS error code) ; EZUART_OST: - LD A, 3 ; UART - LD B, 3 ; UART-OST - EZ80_FN + EZ80_UART_OUT_STAT() RET BAUD_RATE .EQU 115200 @@ -137,10 +129,7 @@ EZUART_INITDEV: CP $FF JR NZ, NOT_RESET - ; reset requested - LD A, 3 ; UART - LD B, 6 ; UART-RESET - EZ80_FN + EZ80_UART_RESET() RET NOT_RESET: @@ -152,10 +141,7 @@ NOT_RESET: LD DE, 75 ; BAUD RATE DECODE CONSTANT CALL DECODE ; DE:HL := BAUD RATE - ;; convert E:HL{15:0} to HL{23:0} - LD A, 0 - LD B, 1 ; UTIL - LD HL, E:HL - EZ80_FN + EZ80_UTIL_EHL_TO_HL() ; HL{23:0} <- E:HL{15:0} POP DE ; RESTORE REQUESTED LINE CHARACTERISTICS LD A, E @@ -182,9 +168,7 @@ ISKIP3: ; D NOW CONTAINS THE LINE CONTROL BITS AS PER EZ80 FUNCTION - LD A, 3 ; UART - LD B, 4 ; UART-CONFIG - EZ80_FN + EZ80_UART_CONFIG() RET #DEFINE TRANSLATE(nnn,rrr) \ @@ -208,9 +192,7 @@ ISKIP3: ; A: Status (0-OK, else error) ; EZUART_QUERY: - LD A, 3 ; UART - LD B, 5 ; UART-QUERY - EZ80_FN + EZ80_UART_QUERY() ; HL{23:0} := BAUD RATE ; D = LINE CONTROL BITS PUSH DE ; SAVE D diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 03c5edb0..359a3e83 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -1439,7 +1439,7 @@ BOOTWAIT: XOR A ; FUNCTION CODE TO INIT FIRMWARE LD HL, PLT_DESCR - EZ80_FN ; PROVIDE FIRMWARE DETAILS OF BUILD CONFIGURATION + EZ80_UTIL_INIT() ; PROVIDE FIRMWARE DETAILS OF BUILD CONFIGURATION JR PLT_DESCR_END PLT_DESCR: @@ -5048,9 +5048,7 @@ SYS_GETFN: ; SYS_GETTIMER: #IF (CPUFAM == CPU_EZ80) - LD A, 2 - LD B, 0 ; GET TIMER TICK - EZ80_FN + EZ80_TMR_GET_TICKS() RET #ELSE @@ -5071,15 +5069,10 @@ SYS_GETTIMER: ; SYS_GETSECS: #IF (CPUFAM == CPU_EZ80) - LD A, 2 - LD B, 1 ; GET SECOND TICK - EZ80_FN + EZ80_TMR_GET_SECONDS() - LD A, 0 - LD B, 2 ; LD E:HL{15:0}, HL - EZ80_FN + EZ80_UTIL_HL_TO_EHL() ; E:HL{15:0} <- HL{23:0} LD D, 0 - RET #ELSE @@ -5302,14 +5295,8 @@ SYS_SETBOOTINFO: ; SYS_SETTIMER: #IF (CPUFAM == CPU_EZ80) - ;; convert E:HL{15:0} to HL{23:0} - LD A, 0 - LD B, 1 ; UTIL - LD HL, E:HL - EZ80_FN - - LD A, 2 - LD B, 2 ; SET TICKS - EZ80_FN + EZ80_UTIL_EHL_TO_HL() ; HL{23:0} <- E:HL{15:0} + EZ80_TMR_SET_TICKS() RET #ELSE LD BC,HB_TICKS @@ -5326,13 +5313,9 @@ SYS_SETTIMER: ; SYS_SETSECS: #IF (CPUFAM == CPU_EZ80) - LD A, 0 - LD B, 1 ; UTIL - LD HL, E:HL - EZ80_FN + EZ80_UTIL_EHL_TO_HL() ; HL{23:0} <- E:HL{15:0} - LD A, 2 - LD B, 3 ; SET SECS - EZ80_FN + EZ80_TMR_SET_SECONDS() RET #ELSE LD BC,HB_SECS