diff --git a/Source/Doc/SystemGuide.md b/Source/Doc/SystemGuide.md index 0fecbcf2..b9d5e57f 100644 --- a/Source/Doc/SystemGuide.md +++ b/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. diff --git a/Source/HBIOS/ez80cpu.asm b/Source/HBIOS/ez80cpu.asm index e17ece9a..d6770791 100644 --- a/Source/HBIOS/ez80cpu.asm +++ b/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 diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 21b251d2..8cfd2e7b 100644 --- a/Source/HBIOS/hbios.asm +++ b/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) diff --git a/Source/HBIOS/lcd.asm b/Source/HBIOS/lcd.asm index aed81cca..20a9cab0 100644 --- a/Source/HBIOS/lcd.asm +++ b/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 diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index edfa318c..c454558c 100644 --- a/Source/HBIOS/std.asm +++ b/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 ;