diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index 5c572920..634fd0ae 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -29,6 +29,7 @@ Version 2.9.1 - WBW: Support LBA style access in floppy driver - WBW: Added beta version of FAT filesystem utility (copy, dir, del, ren) - SCC: Added support for native memory addressing on Z180-based RC2014 +- PMS: Dynamically discover and display processor type at boot Version 2.9.0 ------------- diff --git a/Source/HBIOS/ay.asm b/Source/HBIOS/ay.asm index fb4a8498..fe245ef7 100644 --- a/Source/HBIOS/ay.asm +++ b/Source/HBIOS/ay.asm @@ -4,9 +4,15 @@ ; WILL ALSO WORK WITH YM2149 ;====================================================================== ; +#IF (PLATFORM == PLT_N8) +AY_RSEL .EQU N8_PSG+0 +AY_RDAT .EQU N8_PSG+1 +AY_ACR .EQU N8_DEFACR +#ELSE AY_RSEL .EQU $9A AY_RDAT .EQU $9B AY_ACR .EQU $9C +#ENDIF AY_R0CHAP .EQU $00 AY_R1CHAP .EQU $01 AY_R2CHBP .EQU $02 diff --git a/Source/HBIOS/cfg_n8.asm b/Source/HBIOS/cfg_n8.asm index 8caeb582..983b7d1b 100644 --- a/Source/HBIOS/cfg_n8.asm +++ b/Source/HBIOS/cfg_n8.asm @@ -36,7 +36,7 @@ TMSENABLE .EQU TRUE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT VGAENABLE .EQU FALSE ; TRUE FOR VGA VIDEO/KBD SUPPORT ; SPKENABLE .EQU FALSE ; TRUE FOR RTC LATCH IOBIT SOUND -AYENABLE .EQU FALSE ; TRUE FOR AY PSG SOUND +AYENABLE .EQU TRUE ; TRUE FOR AY PSG SOUND ; MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) MDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF MDENABLE = TRUE) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index d59ccfb4..e8b74a06 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -968,6 +968,46 @@ HB_START1: ; BNKCALL ARRIVES HERE, BUT NOW RUNNING IN RAM BANK CALL DSKY_SHOWSEG #ENDIF ; +; DISCOVER CPU TYPE +; +; THIS CODE IS DERIVED FROM UNA BY JOHN COFFMAN +; +; 0: Z80 +; 1: Z80180 - ORIGINAL Z180 IDENTICAL TO HD64180 +; 2: Z8S180 - ORIGINAL S-CLASS, REV. K, AKA SL1960, NO ASCI BRG +; 3: Z8S180 - REVISED S-CLASS, REV. N, W/ ASCI BRG +; + LD HL,0 ; L = 0 MEANS Z80 +; +#IF ((PLATFORM == PLT_N8) | (PLATFORM == PLT_MK4) | (PLATFORM == PLT_RCZ180)) +; + ; TEST FOR ORIGINAL Z180 USING MLT + LD DE,$0506 ; 5 X 6 + MLT DE ; DE = 30 IF Z180 + 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 +; + ; TEST FOR OLDER S-CLASS + 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 +; + ; TEST FOR NEWER S-CLASS + OUT0 (Z180_ASTC1L),D ; D = 0 AT THIS POINT + IN0 A,(Z180_ASTC1L) ; COUNTER REG + INC A ; FF -> 0 + JR Z,HB_CPU1 + INC L ; FLAG Z8S180 REV N W/ ASCI BRG +; +#ENDIF +; +HB_CPU1: + LD A,L + LD (HB_CPUTYPE),A +; ; PERFORM DYNAMIC CPU SPEED DERIVATION ; CALL HB_CPUSPD ; CPU SPEED DETECTION @@ -1253,23 +1293,13 @@ PSCNX .EQU $ + 1 LD HL,(CB_CPUKHZ) CALL PRTD3M ; PRINT AS DECIMAL WITH 3 DIGIT MANTISSA PRTS("MHz$") +; #IF ((PLATFORM == PLT_N8) | (PLATFORM == PLT_MK4) | (PLATFORM == PLT_RCZ180)) - LD L,1 ; flag Z180 - LD D,0 - OUT0 (Z180_ASTC1L),D ; D = 0 at this point - IN0 A,(Z180_FRC) ; supposedly only on S-class - INC A ; FF or 00 -> 0 or 1 (weak S-class or higher) - ADD A,L - LD L,A ; result to L and A - IN0 A,(Z180_ASTC1L) ; counter reg - INC A ; FF or 00 -> 0 or 1 (super-S) - ADD A,L - LD L,A ; 1 means Z180 - 80180 - LD A,$30 ; 2 means Z180 S-class, SL1960 version - ADD A,L ; 3 means Z180 advanced S-class, with Baud Rate Generator - PRTS(" Type: $") - CALL COUT ; Courtesy John Coffman MK IV UnaBIOS - PRTS(", IO=0x$") + LD A,(HB_CPUTYPE) ; GET CPU TYPE + PRTS(" REV=$") + ADD A,$30 ; MAKE DISPLAYABLE DIGIT + CALL COUT + PRTS(" IO=0x$") LD A,Z180_BASE CALL PRTHEXBYTE #ENDIF @@ -1930,7 +1960,8 @@ SYS_GETBOOTINFO: ; DE: CPU SPEED IN KHZ ; SYS_GETCPUINFO: - LD H,0 ; NOT YET DEFINED + LD A,(HB_CPUTYPE) + LD H,A LD A,(CB_CPUMHZ) LD L,A LD DE,(CB_CPUKHZ) @@ -3593,6 +3624,8 @@ HEAPCURB .DW 0 ; MARK HEAP ADDRESS AFTER INITIALIZATION ; HB_TICKS .FILL 4,0 ; 32 BIT TICK COUNTER ; +HB_CPUTYPE .DB 0 ; 0=Z80, 1=80180, 2=SL1960, 3=ASCI BRG +; STR_BANNER .DB "RetroBrew HBIOS v", BIOSVER, ", ", TIMESTAMP, "$" STR_PLATFORM .DB PLATFORM_NAME, "$" STR_SWITCH .DB "*** Activating CRT Console ***$"