From 12c99e914418a4da90d0369c51f693182d1f3535 Mon Sep 17 00:00:00 2001 From: b1ackmai1er Date: Sun, 4 Aug 2019 19:30:52 +0800 Subject: [PATCH] Resync --- Source/HBIOS/hbios.asm | 138 ++++++++++++++++++----------------------- 1 file changed, 62 insertions(+), 76 deletions(-) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index d0011714..75c6c0e2 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -67,14 +67,14 @@ MODCNT .SET MODCNT + 1 ; ; ; -#IF ((PLATFORM == PLT_RCZ80) | (PLATFORM == PLT_RCZ180)) -#DEFINE DIAGP $00 -#ENDIF +;#IF ((PLATFORM == PLT_RCZ80) | (PLATFORM == PLT_RCZ180)) +;#DEFINE DIAGPORT $00 +;#ENDIF ; -#IFDEF DIAGP +#IF (DIAGENABLE) #DEFINE DIAG(N) PUSH AF #DEFCONT \ LD A,N - #DEFCONT \ OUT (DIAGP),A + #DEFCONT \ OUT (DIAGPORT),A #DEFCONT \ POP AF #ELSE #DEFINE DIAG(N) \; @@ -301,7 +301,7 @@ HBX_ROM: HBX_ROM: RLCA ; TIMES 2 - GET 16K PAGE INSTEAD OF 32K OUT (MPGSEL_0),A ; BANK_0: 0K - 16K - ;OUT (DIAGP),A ; *DEBUG* + ;OUT (DIAGPORT),A ; *DEBUG* INC A ; OUT (MPGSEL_1),A ; BANK_1: 16K - 32K RET ; DONE @@ -774,9 +774,9 @@ HB_START: DI ; NO INTERRUPTS IM 1 ; INTERRUPT MODE 1 ; -#IFDEF DIAGP +#IF (DIAGENABLE) LD A,%00000001 - OUT (DIAGP),A + OUT (DIAGPORT),A #ENDIF ; LD SP,HBX_LOC ; SETUP INITIAL STACK JUST BELOW HBIOS PROXY @@ -1347,6 +1347,15 @@ PSCNX .EQU $ + 1 #ENDIF ; #ENDIF +; +#IF 0 +HB_SPDTST: + CALL HB_CPUSPD ; CPU SPEED DETECTION + CALL NEWLINE + LD HL,(CB_CPUKHZ) + CALL PRTD3M ; PRINT AS DECIMAL WITH 3 DIGIT MANTISSA + JR HB_SPDTST +#ENDIF ; HB_EI ; INTERRUPTS SHOULD BE OK NOW ; @@ -2405,7 +2414,7 @@ HB_BADINT: LD HL,HB_BADINTCNT INC (HL) LD A,(HL) - OUT (DIAGP),A + OUT (DIAGPORT),A OR $FF RET HB_BADINTCNT .DB 0 @@ -2732,7 +2741,7 @@ SIZ_MD .EQU $ - ORG_MD .ECHO SIZ_MD .ECHO " bytes.\n" #ENDIF -; + #IF (FDENABLE) ORG_FD .EQU $ #INCLUDE "fd.asm" @@ -2741,7 +2750,7 @@ SIZ_FD .EQU $ - ORG_FD .ECHO SIZ_FD .ECHO " bytes.\n" #ENDIF -; + #IF (RFENABLE) ORG_RF .EQU $ #INCLUDE "rf.asm" @@ -2750,7 +2759,7 @@ SIZ_RF .EQU $ - ORG_RF .ECHO SIZ_RF .ECHO " bytes.\n" #ENDIF -; + #IF (IDEENABLE) ORG_IDE .EQU $ #INCLUDE "ide.asm" @@ -2759,7 +2768,7 @@ SIZ_IDE .EQU $ - ORG_IDE .ECHO SIZ_IDE .ECHO " bytes.\n" #ENDIF -; + #IF (PPIDEENABLE) ORG_PPIDE .EQU $ #INCLUDE "ppide.asm" @@ -2768,7 +2777,7 @@ SIZ_PPIDE .EQU $ - ORG_PPIDE .ECHO SIZ_PPIDE .ECHO " bytes.\n" #ENDIF -; + #IF (SDENABLE) ORG_SD .EQU $ #INCLUDE "sd.asm" @@ -2777,7 +2786,7 @@ SIZ_SD .EQU $ - ORG_SD .ECHO SIZ_SD .ECHO " bytes.\n" #ENDIF -; + #IF (HDSKENABLE) ORG_HDSK .EQU $ #INCLUDE "hdsk.asm" @@ -2786,7 +2795,7 @@ SIZ_HDSK .EQU $ - ORG_HDSK .ECHO SIZ_HDSK .ECHO " bytes.\n" #ENDIF -; + #IF (TERMENABLE) ORG_TERM .EQU $ #INCLUDE "term.asm" @@ -2813,7 +2822,6 @@ SIZ_AY .EQU $ - ORG_AY .ECHO SIZ_AY .ECHO " bytes.\n" #ENDIF -; #IF (PIO_4P | PIO_ZP | PPI_SBC) ORG_PIO .EQU $ #INCLUDE "pio.asm" @@ -2822,15 +2830,7 @@ SIZ_PIO .EQU $ - ORG_PIO .ECHO SIZ_PIO .ECHO " bytes.\n" #ENDIF -; -#IF (UFENABLE) -ORG_UF .EQU $ - #INCLUDE "usbfifo.asm" -SIZ_UF .EQU $ - ORG_UF - .ECHO "USB-FIFO occupies " - .ECHO SIZ_UF - .ECHO " bytes.\n" -#ENDIF + ; #DEFINE USEDELAY #INCLUDE "util.asm" @@ -2867,42 +2867,39 @@ HB_CPUSPD: RET NZ ; HB_CPUSPD1: -; LD B,8 -;HB_CPUSPDX: -; PUSH BC +#IF ((PLATFORM == PLT_N8) | (PLATFORM == PLT_MK4) | (PLATFORM == PLT_RCZ180)) + ; USE MEM W/S = 2 AND I/O W/S = 3 FOR TEST + IN0 A,(Z180_DCNTL) + PUSH AF + LD A,$B0 + ;LD A,$F0 + OUT0 (Z180_DCNTL),A +#ENDIF ; WAIT FOR AN INITIAL TICK TO ALIGN, THEN WAIT ; FOR SECOND TICK AND TO GET A FULL ONE SECOND LOOP COUNT - CALL HB_RDSEC ; GET SECONDS LD (HB_CURSEC),A ; AND INIT CURSEC CALL HB_WAITSEC ; WAIT FOR SECONDS TICK LD (HB_CURSEC),A ; SAVE NEW VALUE CALL HB_WAITSEC ; WAIT FOR SECONDS TICK - -; PUSH DE -; POP BC -; CALL NEWLINE -; CALL PRTHEXWORD - -; POP BC -; DJNZ HB_CPUSPDX +; +#IF ((PLATFORM == PLT_N8) | (PLATFORM == PLT_MK4) | (PLATFORM == PLT_RCZ180)) + ; RESTORE W/S SETTINGS FROM BEFORE TEST + POP AF + OUT0 (Z180_DCNTL),A +#ENDIF ; LD A,H OR L RET Z ; FAILURE, USE DEFAULT CPU SPEED - ; ; MOVE LOOP COUNT TO HL PUSH DE POP HL ; ; TIMES 4 FOR CPU SPEED IN KHZ - RES 0,L ; GRANULARITY -#IF ((PLATFORM == PLT_N8) | (PLATFORM == PLT_MK4) | (PLATFORM == PLT_RCZ180)) - SLA L - RL H -#ENDIF +; RES 0,L ; GRANULARITY SLA L RL H SLA L @@ -2921,60 +2918,47 @@ HB_WAITSEC: ; RETURN SECS VALUE IN A, LOOP COUNT IN DE LD DE,0 ; INIT LOOP COUNTER HB_WAITSEC1: +; #IF ((PLATFORM == PLT_SBC) | (PLATFORM == PLT_ZETA) | (PLATFORM == PLT_ZETA2) | (PLATFORM == PLT_RCZ80) | (PLATFORM == PLT_EZZ80)) ; LOOP TARGET IS 4000 T-STATES, SO CPU FREQ IN KHZ = LOOP COUNT * 4 CALL DLY32 - CALL DLY8 - CALL DLY2 - JP $ + 3 ; 10 TSTATES - JP $ + 3 ; 10 TSTATES - JP $ + 3 ; 10 TSTATES - JP $ + 3 ; 10 TSTATES - ;LD A,R ; 9 TSTATES - INC BC ; 6 TSTATES - ;LD A,(BC) ; 7 TSTATES - ;NOP ; 4 TSTATES - NOP ; 4 TSTATES + CALL DLY16 + CALL DLY1 ; 27 TSTATES + SBC HL,HL ; 15 TSTATES + SBC HL,HL ; 15 TSTATES + INC HL ; 6 TSTATES + INC HL ; 6 TSTATES #ENDIF - +; #IF ((PLATFORM == PLT_N8) | (PLATFORM == PLT_MK4) | (PLATFORM == PLT_RCZ180)) - ; LOOP TARGET IS 8000 T-STATES, SO CPU FREQ IN KHZ = LOOP COUNT * 8 - ;CALL DLY64 - CALL DLY32 - CALL DLY16 - CALL DLY8 - CALL DLY4 + ; LOOP TARGET IS 4000 T-STATES, SO CPU FREQ IN KHZ = LOOP COUNT * 4 CALL DLY2 - CALL DLY1 ; CALL (25TS) & RET (18TS) = 43TS - OR A ; 7 TSTATES - OR A ; 7 TSTATES - ;OR A ; 7 TSTATES - ;OR A ; 7 TSTATES - NOP ; 6 TSTATES - ;NOP ; 6 TSTATES - ;NOP ; 6 TSTATES - ;NOP ; 6 TSTATES - ;NOP ; 6 TSTATES + ADD IX,BC ; 10 + 4 = 14 TSTATES + NOP ; 5 TSTATES + NOP ; 5 TSTATES + NOP ; 5 TSTATES + NOP ; 5 TSTATES #ENDIF ; - PUSH DE + PUSH DE ; SAVE COUNTER CALL HB_RDSEC ; GET SECONDS - POP DE + POP DE ; RESTORE COUNTER INC DE ; BUMP COUNTER LD HL,HB_CURSEC ; POINT TO COMP VALUE CP (HL) ; TEST FOR CHANGE RET NZ ; DONE IF TICK OCCURRED - LD A,D ; CHECK HL + LD A,D ; CHECK DE OR E ; ... FOR OVERFLOW RET Z ; TIMEOUT, SOMETHING IS WRONG JR HB_WAITSEC1 ; LOOP ; HB_RDSEC: ; READ SECONDS BYTE INTO A - LD C,$81 ; SECONDS REGISTER + LD E,$81 ; SECONDS REGISTER CALL DSRTC_CMD ; SEND THE COMMAND CALL DSRTC_GET ; READ THE REGISTER CALL DSRTC_END ; FINISH IT + LD A,E ; VALUE TO A RET ; #ELSE @@ -3776,6 +3760,8 @@ HB_TICKS .FILL 4,0 ; 32 BIT TICK COUNTER ; HB_CPUTYPE .DB 0 ; 0=Z80, 1=80180, 2=SL1960, 3=ASCI BRG ; +RTCVAL .DB 0 ; SHADOW VALUE FOR RTC LATCH PORT +; STR_BANNER .DB "RetroBrew HBIOS v", BIOSVER, ", ", TIMESTAMP, "$" STR_PLATFORM .DB PLATFORM_NAME, "$" STR_SWITCH .DB "*** Activating CRT Console ***$"