Browse Source

Merge pull request #654 from dinoboards/dean-dev-2026-01-24-refactor-apply-constant-literals-for-cpu-types

hbios: refactor HB_CPUTYPE values to use constants literal definition…
master
Wayne Warthen 4 days ago
committed by GitHub
parent
commit
10f76c6bf4
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  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
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
Speed KHz (BC). The returned Status (A) is a standard HBIOS result
code.

3
Source/HBIOS/ez80cpu.asm

@ -54,8 +54,7 @@ EZ80_PREINIT:
LD L, RTP
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 (EZ80_PLT_VERSION), HL

23
Source/HBIOS/hbios.asm

@ -2464,7 +2464,7 @@ HB_CLRIVT_Z:
; 4: Z8280
; 5: eZ80
;
LD HL,0 ; L = 0 MEANS Z80
LD HL,CPT_Z80 ; L = 0 MEANS Z80
;
#IF (CPUFAM == CPU_Z180)
;
@ -2474,13 +2474,13 @@ HB_CLRIVT_Z:
LD A,E ; CHECK IF MULTIPLY HAPPENED
CP 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)
IN0 A,(Z180_CCR) ; SUPPOSEDLY ONLY ON S-CLASS
INC A ; FF -> 0
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)
; 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
INC A ; FF -> 0
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
;
@ -2501,7 +2501,7 @@ HB_CLRIVT_Z:
; ON THE Z80 CPU AND CLEAR THE S FLAG
; ON THE Z280 MPU.
JP M,HB_CPU1 ; IF Z80, SKIP AHEAD
LD L,4 ; WE ARE Z280
LD L,CPT_Z280 ; WE ARE Z280
;
#ENDIF
;
@ -2735,7 +2735,7 @@ HB_CPU2:
;
#IF (Z180_CLKDIV >= 1)
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!
; SET CLOCK DIVIDE TO 1 RESULTING IN FULL XTAL SPEED
LD A,$80
@ -2747,7 +2747,7 @@ HB_CPU2:
;
#IF (Z180_CLKDIV >= 2)
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!
; SET CPU MULTIPLIER TO 1 RESULTING IN XTAL * 2 SPEED
; ALSO SET CCR AGAIN BECAUSE OF REPORTS THAT CCR
@ -6297,7 +6297,7 @@ SYS_GETCPUSPD1:
#IF (CPUFAM == CPU_Z180)
LD HL,0 ; INIT CPU SPEED TO HALF
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
;
; GET CCR BIT
@ -6307,7 +6307,7 @@ SYS_GETCPUSPD1:
LD L,A ; SAVE IN L
;
LD A,(HB_CPUTYPE) ; LOAD CPUTYPE
CP 3 ; REV. N?
CP CPT_Z180_N ; REV. N?
JR C,SYS_GETCPUSPD1 ; IF NOT, NO CMR
;
; GET CMR BIT
@ -6640,7 +6640,7 @@ SYS_SETCPUSPD2:
LD A,L ; GET SPEED REQUESTED
CP $FF ; NO CHANGE?
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
CP L ; TOO HIGH FOR CPU TYPE?
JP C,SYS_SETCPUSPD_ERR ; CPU CAN'T DO SPD MULT
@ -8876,6 +8876,7 @@ PS_PRTSC0:
;
RET
;
; INDEXED AS PER CPT_xxx
HB_CPU_STR: .TEXT " Z80$"
.TEXT " Z80180$"
.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_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_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_MHZ .DB " MHz",0
;
; INDEXED AS PER CPT_xxx
LCD_CPU .DW LCD_CPU_Z80
.DW LCD_CPU_Z180
.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_VERBOSE .EQU 24 ; HBIOS DISPLAYS ANYTHING IT KNOWS HOW TO
;
; CPU TYPES
; CPU FAMILY TYPES
;
CPU_NONE .EQU 0 ; NO CPU TYPE DEFINED
CPU_Z80 .EQU 1 ; Z80 FAMILY
CPU_Z180 .EQU 2 ; Z180 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
;

Loading…
Cancel
Save