Browse Source

ez80: added macros for accessing all firmware functions

master
Dean Netherton 2 years ago
parent
commit
53198e066c
  1. 21
      Source/HBIOS/ez80instr.inc
  2. 16
      Source/HBIOS/ez80rtc.asm
  3. 34
      Source/HBIOS/ez80uart.asm
  4. 33
      Source/HBIOS/hbios.asm

21
Source/HBIOS/ez80instr.inc

@ -11,6 +11,27 @@
#DEFINE EZ80_FN .DB $49, $D7 ; RST.L $10 #DEFINE EZ80_FN .DB $49, $D7 ; RST.L $10
#DEFINE EZ80_BNKSEL .DB $49, $DF ; RST.L $18 #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 RET.L .DB $49 \ RET
#DEFINE IN0_A(p) .DB $ED,$38,p #DEFINE IN0_A(p) .DB $ED,$38,p

16
Source/HBIOS/ez80rtc.asm

@ -20,9 +20,7 @@ EZ80RTC_INIT:
CALL NEWLINE ; FORMATTING CALL NEWLINE ; FORMATTING
PRTS("EZ80 RTC: ON-CHIP $") 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 JR Z, RTC_POWERED
PUSH AF PUSH AF
@ -33,9 +31,7 @@ EZ80RTC_INIT:
RTC_POWERED: RTC_POWERED:
; DISPLAY CURRENT TIME ; DISPLAY CURRENT TIME
LD HL, EZ80RTC_BCDBUF_EXT ; POINT TO BCD BUF EXTENDED 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 LD HL, EZ80RTC_BCDBUF ; POINT TO BCD BUF
CALL PRTDT ; DISPLAY THIS TIME CALL PRTDT ; DISPLAY THIS TIME
@ -83,9 +79,7 @@ EZ80RTC_DISPATCH:
EZ80RTC_GETTIM: EZ80RTC_GETTIM:
PUSH HL PUSH HL
LD HL, EZ80RTC_BCDBUF_EXT ; POINT TO BCD BUF EXTENDED 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 A, BID_BIOS ; COPY FROM BIOS BANK
LD (HB_SRCBNK), A ; SET IT LD (HB_SRCBNK), A ; SET IT
@ -118,9 +112,7 @@ EZ80RTC_SETTIM:
LD HL, EZ80RTC_BCDBUF_EXT ; POINT TO BCD BUF EXTENDED LD HL, EZ80RTC_BCDBUF_EXT ; POINT TO BCD BUF EXTENDED
LD (HL), $20 ; CENTURY NOT SUPPORT BY HBIOS 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 XOR A ; SIGNAL SUCCESS
RET RET

34
Source/HBIOS/ez80uart.asm

@ -58,9 +58,7 @@ EZUART_INIT:
; A: Status (0-OK, else error) ; A: Status (0-OK, else error)
; ;
EZUART_IN: 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 RET
; ;
; ### Function 0x01 -- Character Output (CIOOUT) ; ### Function 0x01 -- Character Output (CIOOUT)
@ -76,9 +74,7 @@ EZUART_IN:
; A: Status (0-OK, else error) ; A: Status (0-OK, else error)
; ;
EZUART_OUT: EZUART_OUT:
LD A, 3 ; UART
LD B, 1 ; UART-OUT
EZ80_FN
EZ80_UART_OUT()
RET RET
; ;
; ### Function 0x02 -- Character Input Status (CIOIST) ; ### Function 0x02 -- Character Input Status (CIOIST)
@ -94,9 +90,7 @@ EZUART_OUT:
; A: Status / Characters Pending ; A: Status / Characters Pending
; ;
EZUART_IST: EZUART_IST:
LD A, 3 ; UART
LD B, 2 ; UART-IST
EZ80_FN
EZ80_UART_IN_STAT()
RET RET
; ;
; ### Function 0x03 -- Character Output Status (CIOOST) ; ### Function 0x03 -- Character Output Status (CIOOST)
@ -110,9 +104,7 @@ EZUART_IST:
; A: Status (0 -> Full, 1 -> OK to send, < 0 -> HBIOS error code) ; A: Status (0 -> Full, 1 -> OK to send, < 0 -> HBIOS error code)
; ;
EZUART_OST: EZUART_OST:
LD A, 3 ; UART
LD B, 3 ; UART-OST
EZ80_FN
EZ80_UART_OUT_STAT()
RET RET
BAUD_RATE .EQU 115200 BAUD_RATE .EQU 115200
@ -137,10 +129,7 @@ EZUART_INITDEV:
CP $FF CP $FF
JR NZ, NOT_RESET JR NZ, NOT_RESET
; reset requested
LD A, 3 ; UART
LD B, 6 ; UART-RESET
EZ80_FN
EZ80_UART_RESET()
RET RET
NOT_RESET: NOT_RESET:
@ -152,10 +141,7 @@ NOT_RESET:
LD DE, 75 ; BAUD RATE DECODE CONSTANT LD DE, 75 ; BAUD RATE DECODE CONSTANT
CALL DECODE ; DE:HL := BAUD RATE 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 POP DE ; RESTORE REQUESTED LINE CHARACTERISTICS
LD A, E LD A, E
@ -182,9 +168,7 @@ ISKIP3:
; D NOW CONTAINS THE LINE CONTROL BITS AS PER EZ80 FUNCTION ; 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 RET
#DEFINE TRANSLATE(nnn,rrr) \ #DEFINE TRANSLATE(nnn,rrr) \
@ -208,9 +192,7 @@ ISKIP3:
; A: Status (0-OK, else error) ; A: Status (0-OK, else error)
; ;
EZUART_QUERY: EZUART_QUERY:
LD A, 3 ; UART
LD B, 5 ; UART-QUERY
EZ80_FN
EZ80_UART_QUERY()
; HL{23:0} := BAUD RATE ; HL{23:0} := BAUD RATE
; D = LINE CONTROL BITS ; D = LINE CONTROL BITS
PUSH DE ; SAVE D PUSH DE ; SAVE D

33
Source/HBIOS/hbios.asm

@ -1439,7 +1439,7 @@ BOOTWAIT:
XOR A ; FUNCTION CODE TO INIT FIRMWARE XOR A ; FUNCTION CODE TO INIT FIRMWARE
LD HL, PLT_DESCR 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 JR PLT_DESCR_END
PLT_DESCR: PLT_DESCR:
@ -5048,9 +5048,7 @@ SYS_GETFN:
; ;
SYS_GETTIMER: SYS_GETTIMER:
#IF (CPUFAM == CPU_EZ80) #IF (CPUFAM == CPU_EZ80)
LD A, 2
LD B, 0 ; GET TIMER TICK
EZ80_FN
EZ80_TMR_GET_TICKS()
RET RET
#ELSE #ELSE
@ -5071,15 +5069,10 @@ SYS_GETTIMER:
; ;
SYS_GETSECS: SYS_GETSECS:
#IF (CPUFAM == CPU_EZ80) #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 LD D, 0
RET RET
#ELSE #ELSE
@ -5302,14 +5295,8 @@ SYS_SETBOOTINFO:
; ;
SYS_SETTIMER: SYS_SETTIMER:
#IF (CPUFAM == CPU_EZ80) #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 RET
#ELSE #ELSE
LD BC,HB_TICKS LD BC,HB_TICKS
@ -5326,13 +5313,9 @@ SYS_SETTIMER:
; ;
SYS_SETSECS: SYS_SETSECS:
#IF (CPUFAM == CPU_EZ80) #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 RET
#ELSE #ELSE
LD BC,HB_SECS LD BC,HB_SECS

Loading…
Cancel
Save