Browse Source

hbios: refactor HB_CPUTYPE values to use constants literal definitions instead of hard coded numbers

pull/654/head
Dean Netherton 5 days ago
parent
commit
45ee72352e
  1. 2
      Source/Doc/SystemGuide.md
  2. 3
      Source/HBIOS/ez80cpu.asm
  3. 23
      Source/HBIOS/hbios.asm
  4. 1
      Source/HBIOS/lcd.asm
  5. 13
      Source/HBIOS/std.asm

2
Source/Doc/SystemGuide.md

@ -2987,7 +2987,7 @@ HBIOS result code.
This function returns information about the active CPU environment. The This function returns information about the active CPU environment. The
Z80 CPU Variant (H) will be one of: 0=Z80, 1=Z180, 2=Z180-K, 3=Z180-N, Z80 CPU Variant (H) will be one of: 0=Z80, 1=Z180, 2=Z180-K, 3=Z180-N,
4=Z280. The current CPU speed is provided as both CPU Speed MHz (L) and
4=Z280, 5=eZ80. The current CPU speed is provided as both CPU Speed MHz (L) and
CPU Speed KHz (DE). The raw oscillator speed is provided as Oscillator CPU Speed KHz (DE). The raw oscillator speed is provided as Oscillator
Speed KHz (BC). The returned Status (A) is a standard HBIOS result Speed KHz (BC). The returned Status (A) is a standard HBIOS result
code. code.

3
Source/HBIOS/ez80cpu.asm

@ -54,8 +54,7 @@ EZ80_PREINIT:
LD L, RTP LD L, RTP
EZ80_UTIL_VER_EXCH() EZ80_UTIL_VER_EXCH()
; TODO: MAP THE FIRMWARE CPU TO HBIOS (eZ80 ONLY HAS ONE CPU TYPE AS OF NOW)
LD A, 5
LD A, CPT_EZ80
LD (HB_CPUTYPE),A LD (HB_CPUTYPE),A
LD (EZ80_PLT_VERSION), HL LD (EZ80_PLT_VERSION), HL

23
Source/HBIOS/hbios.asm

@ -2464,7 +2464,7 @@ HB_CLRIVT_Z:
; 4: Z8280 ; 4: Z8280
; 5: eZ80 ; 5: eZ80
; ;
LD HL,0 ; L = 0 MEANS Z80
LD HL,CPT_Z80 ; L = 0 MEANS Z80
; ;
#IF (CPUFAM == CPU_Z180) #IF (CPUFAM == CPU_Z180)
; ;
@ -2474,13 +2474,13 @@ HB_CLRIVT_Z:
LD A,E ; CHECK IF MULTIPLY HAPPENED LD A,E ; CHECK IF MULTIPLY HAPPENED
CP 30 CP 30
JR NZ,HB_CPU1 ; IT IS A Z80 IF != 30 JR NZ,HB_CPU1 ; IT IS A Z80 IF != 30
INC L ; FLAG Z80180 OR BETTER
INC L ; CPT_Z180 - FLAG Z80180 OR BETTER
; ;
; TEST FOR OLDER S-CLASS (REV K) ; TEST FOR OLDER S-CLASS (REV K)
IN0 A,(Z180_CCR) ; SUPPOSEDLY ONLY ON S-CLASS IN0 A,(Z180_CCR) ; SUPPOSEDLY ONLY ON S-CLASS
INC A ; FF -> 0 INC A ; FF -> 0
JR Z,HB_CPU1 JR Z,HB_CPU1
INC L ; FLAG Z8S180 REV K (SL1960) OR BETTER
INC L ; CPT_Z180_K - FLAG Z8S180 REV K (SL1960) OR BETTER
; ;
; TEST FOR NEWER S-CLASS (REV N) ; TEST FOR NEWER S-CLASS (REV N)
; ON OLDER S-CLASS, ASCI TIME CONSTANT REG DOES NOT EXIST ; ON OLDER S-CLASS, ASCI TIME CONSTANT REG DOES NOT EXIST
@ -2489,7 +2489,7 @@ HB_CLRIVT_Z:
IN0 A,(Z180_ASTC1L) ; ASCI TIME CONSTANT REG IN0 A,(Z180_ASTC1L) ; ASCI TIME CONSTANT REG
INC A ; FF -> 0 INC A ; FF -> 0
JR Z,HB_CPU1 JR Z,HB_CPU1
INC L ; FLAG Z8S180 REV N W/ ASCI BRG
INC L ; CPT_Z180_N - FLAG Z8S180 REV N W/ ASCI BRG
; ;
#ENDIF #ENDIF
; ;
@ -2501,7 +2501,7 @@ HB_CLRIVT_Z:
; ON THE Z80 CPU AND CLEAR THE S FLAG ; ON THE Z80 CPU AND CLEAR THE S FLAG
; ON THE Z280 MPU. ; ON THE Z280 MPU.
JP M,HB_CPU1 ; IF Z80, SKIP AHEAD JP M,HB_CPU1 ; IF Z80, SKIP AHEAD
LD L,4 ; WE ARE Z280
LD L,CPT_Z280 ; WE ARE Z280
; ;
#ENDIF #ENDIF
; ;
@ -2735,7 +2735,7 @@ HB_CPU2:
; ;
#IF (Z180_CLKDIV >= 1) #IF (Z180_CLKDIV >= 1)
LD A,(HB_CPUTYPE) ; GET CPU TYPE LD A,(HB_CPUTYPE) ; GET CPU TYPE
CP 2 ; Z8S180 REV K OR BETTER?
CP CPT_Z180_K ; Z8S180 REV K OR BETTER?
JR C,HB_CPU3 ; IF NOT, NOT POSSIBLE! JR C,HB_CPU3 ; IF NOT, NOT POSSIBLE!
; SET CLOCK DIVIDE TO 1 RESULTING IN FULL XTAL SPEED ; SET CLOCK DIVIDE TO 1 RESULTING IN FULL XTAL SPEED
LD A,$80 LD A,$80
@ -2747,7 +2747,7 @@ HB_CPU2:
; ;
#IF (Z180_CLKDIV >= 2) #IF (Z180_CLKDIV >= 2)
LD A,(HB_CPUTYPE) ; GET CPU TYPE LD A,(HB_CPUTYPE) ; GET CPU TYPE
CP 3 ; Z8S180 REV N OR BETTER?
CP CPT_Z180_N ; Z8S180 REV N OR BETTER?
JR C,HB_CPU3 ; IF NOT, NOT POSSIBLE! JR C,HB_CPU3 ; IF NOT, NOT POSSIBLE!
; SET CPU MULTIPLIER TO 1 RESULTING IN XTAL * 2 SPEED ; SET CPU MULTIPLIER TO 1 RESULTING IN XTAL * 2 SPEED
; ALSO SET CCR AGAIN BECAUSE OF REPORTS THAT CCR ; ALSO SET CCR AGAIN BECAUSE OF REPORTS THAT CCR
@ -6297,7 +6297,7 @@ SYS_GETCPUSPD1:
#IF (CPUFAM == CPU_Z180) #IF (CPUFAM == CPU_Z180)
LD HL,0 ; INIT CPU SPEED TO HALF LD HL,0 ; INIT CPU SPEED TO HALF
LD A,(HB_CPUTYPE) ; LOAD CPUTYPE LD A,(HB_CPUTYPE) ; LOAD CPUTYPE
CP 2 ; S-CLASS OR ABOVE?
CP CPT_Z180_K ; S-CLASS OR ABOVE?
JR C,SYS_GETCPUSPD1 ; IF NOT, NO CCR/CMR JR C,SYS_GETCPUSPD1 ; IF NOT, NO CCR/CMR
; ;
; GET CCR BIT ; GET CCR BIT
@ -6307,7 +6307,7 @@ SYS_GETCPUSPD1:
LD L,A ; SAVE IN L LD L,A ; SAVE IN L
; ;
LD A,(HB_CPUTYPE) ; LOAD CPUTYPE LD A,(HB_CPUTYPE) ; LOAD CPUTYPE
CP 3 ; REV. N?
CP CPT_Z180_N ; REV. N?
JR C,SYS_GETCPUSPD1 ; IF NOT, NO CMR JR C,SYS_GETCPUSPD1 ; IF NOT, NO CMR
; ;
; GET CMR BIT ; GET CMR BIT
@ -6640,7 +6640,7 @@ SYS_SETCPUSPD2:
LD A,L ; GET SPEED REQUESTED LD A,L ; GET SPEED REQUESTED
CP $FF ; NO CHANGE? CP $FF ; NO CHANGE?
JR Z,SYS_SETCPUSPD0A ; SKIP CHECK JR Z,SYS_SETCPUSPD0A ; SKIP CHECK
LD A,(HB_CPUTYPE) ; 1=ORIG, 2=REVK, 3=REVN
LD A,(HB_CPUTYPE) ; 1=CPT_Z180=ORIG, 2=CPT_Z180_K=REVK, 3=CPT_Z180_N=REVN
INC L ; 1=HALF,2=FULL,3=DOUBLE INC L ; 1=HALF,2=FULL,3=DOUBLE
CP L ; TOO HIGH FOR CPU TYPE? CP L ; TOO HIGH FOR CPU TYPE?
JP C,SYS_SETCPUSPD_ERR ; CPU CAN'T DO SPD MULT JP C,SYS_SETCPUSPD_ERR ; CPU CAN'T DO SPD MULT
@ -8876,6 +8876,7 @@ PS_PRTSC0:
; ;
RET RET
; ;
; INDEXED AS PER CPT_xxx
HB_CPU_STR: .TEXT " Z80$" HB_CPU_STR: .TEXT " Z80$"
.TEXT " Z80180$" .TEXT " Z80180$"
.TEXT " Z8S180-K$" .TEXT " Z8S180-K$"
@ -9482,7 +9483,7 @@ HB_TICKS .FILL 4,0 ; 32 BIT TICK COUNTER
HB_SECTCK .DB TICKFREQ ; TICK COUNTER FOR FRACTIONAL SECONDS HB_SECTCK .DB TICKFREQ ; TICK COUNTER FOR FRACTIONAL SECONDS
HB_SECS .FILL 4,0 ; 32 BIT SECONDS COUNTER HB_SECS .FILL 4,0 ; 32 BIT SECONDS COUNTER
; ;
HB_CPUTYPE .DB 0 ; 0=Z80, 1=Z180, 2=Z180-K, 3=Z180-N, 4=Z280
HB_CPUTYPE .DB 0 ; 0=Z80, 1=Z180, 2=Z180-K, 3=Z180-N, 4=Z280, 5=eZ80
HB_CPUOSC .DW CPUOSC / 1000 ; ACTUAL CPU HARDWARE OSC FREQ IN KHZ HB_CPUOSC .DW CPUOSC / 1000 ; ACTUAL CPU HARDWARE OSC FREQ IN KHZ
; ;
HB_BATCOND .DB 0 ; BATTERY CONDITION (0=LOW, 1=OK) HB_BATCOND .DB 0 ; BATTERY CONDITION (0=LOW, 1=OK)

1
Source/HBIOS/lcd.asm

@ -518,6 +518,7 @@ LCD_STR_IO .DB "Disk #", 0
LCD_STR_XPU .DB " CPU",0 LCD_STR_XPU .DB " CPU",0
LCD_STR_MHZ .DB " MHz",0 LCD_STR_MHZ .DB " MHz",0
; ;
; INDEXED AS PER CPT_xxx
LCD_CPU .DW LCD_CPU_Z80 LCD_CPU .DW LCD_CPU_Z80
.DW LCD_CPU_Z180 .DW LCD_CPU_Z180
.DW LCD_CPU_Z180K .DW LCD_CPU_Z180K

13
Source/HBIOS/std.asm

@ -62,13 +62,22 @@ DL_INFO .EQU 16 ; HBIOS DISPLAYS INFORMATIONAL MESSAGES
DL_DETAIL .EQU 20 ; HBIOS DISPLAYS DETAILED DIAGNOSTIC MESSAGES DL_DETAIL .EQU 20 ; HBIOS DISPLAYS DETAILED DIAGNOSTIC MESSAGES
DL_VERBOSE .EQU 24 ; HBIOS DISPLAYS ANYTHING IT KNOWS HOW TO DL_VERBOSE .EQU 24 ; HBIOS DISPLAYS ANYTHING IT KNOWS HOW TO
; ;
; CPU TYPES
; CPU FAMILY TYPES
; ;
CPU_NONE .EQU 0 ; NO CPU TYPE DEFINED CPU_NONE .EQU 0 ; NO CPU TYPE DEFINED
CPU_Z80 .EQU 1 ; Z80 FAMILY CPU_Z80 .EQU 1 ; Z80 FAMILY
CPU_Z180 .EQU 2 ; Z180 FAMILY CPU_Z180 .EQU 2 ; Z180 FAMILY
CPU_Z280 .EQU 3 ; Z280 FAMILY CPU_Z280 .EQU 3 ; Z280 FAMILY
CPU_EZ80 .EQU 4 ; eZ280 FAMILY
CPU_EZ80 .EQU 4 ; eZ80 FAMILY
;
; CPU TYPES (AS RETURNED IN HBIOS SYSGET-CPUINFO)
;
CPT_Z80 .EQU 0 ; Z80
CPT_Z180 .EQU 1 ; Z180
CPT_Z180_K .EQU 2 ; Z180-K
CPT_Z180_N .EQU 3 ; Z180-N
CPT_Z280 .EQU 4 ; Z280
CPT_EZ80 .EQU 5 ; eZ80
; ;
; BIOS MODE ; BIOS MODE
; ;

Loading…
Cancel
Save