diff --git a/Source/HBIOS/Config/RCZ280_zz80mb.asm b/Source/HBIOS/Config/RCZ280_zz80mb.asm index 88fbd454..5d56493c 100644 --- a/Source/HBIOS/Config/RCZ280_zz80mb.asm +++ b/Source/HBIOS/Config/RCZ280_zz80mb.asm @@ -28,7 +28,7 @@ ; #include "cfg_rcz280.asm" ; -CPUOSC .SET 12000000 ; CPU OSC FREQ IN MHZ +CPUOSC .SET 24000000 ; CPU OSC FREQ IN MHZ INTMODE .SET 3 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2 CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP ; diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index fcddd3df..ea18756c 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -2772,6 +2772,7 @@ HB_WDZ: ; LD A,(CB_CONDEV) ; GET CURRENT CONSOLE LD (HB_NEWCON),A ; AND INIT NEW CONSOLE VAR +; #IF CRTACT ; ; BIOS IS CONFIGURED TO AUTO ACTIVATE CRT DEVICE. FIRST, @@ -2795,11 +2796,6 @@ HB_WDZ: ; #ENDIF ; -; THIS IS A GOOD PLACE TO DETERMINE IF FRONT PANEL HARDWARE REALLY -; EXISTS. -; - CALL FP_DETECT -; #IF (FPSW_ENABLE) ; ; IF WE HAVE FRONT PANEL SWITCHES, THIS IS THE RIGHT PLACE TO HANDLE @@ -2813,8 +2809,9 @@ HB_WDZ: LD A,FPSW_IO CALL PRTHEXBYTE ; - ; THE EXISTENCE OF THE FP WAS TESTED EARLIER. IF IT DOESN'T - ; EXIST, BAIL OUT. + CALL FP_DETECT +; + ; IF FP DOESN'T EXIST, BAIL OUT. LD A,(FPSW_ACTIVE) ; GET FP EXISTENCE FLAG OR A ; SET FLAGS JR NZ,HB_FP1 ; IF WE HAVE ONE, CONTINUE @@ -5114,6 +5111,99 @@ SYS_INTSET1: RET ; DONE ; ;================================================================================================== +; Z280 INTERRUPT VECTOR TABLE +;================================================================================================== +; +#IF (MEMMGR == MM_Z280) +; + ; THE Z280 IVT MUST BE ON A 4K BOUNDARY. IT HAS BEEN LOCATED + ; HERE IN AN EFFORT TO MINIMIZE WASTED SPACE. THERE SHOULD BE + ; A LITTLE LESS THAN 4K OF CODE ABOVE. +; +Z280_IVT_SLACK .EQU $1000 - ($ & $FFF) + .ECHO "Z280 IVT SLACK occupies " + .ECHO Z280_IVT_SLACK + .ECHO " bytes.\n" + ;.FILL $1000 - ($ & $FFF) ; MUST BE 4K ALIGNED! + .FILL Z280_IVT_SLACK ; MUST BE 4K ALIGNED! +; +Z280_IVT: + .DW 0, 0 ; RESERVED + .DW 0 ; NMI MSR + .DW 0 ; NMI VECTOR + .DW $0000 ; INT A MSR + .DW Z280_BADINT ; INT A VECTOR + .DW $0000 ; INT B MSR + .DW Z280_BADINT ; INT B VECTOR + .DW $0000 ; INT C MSR + .DW Z280_BADINT ; INT C VECTOR + .DW $0000 ; COUNTER/TIMER 0 MSR + .DW Z280_BADINT ; COUNTER/TIMER 0 VECTOR + .DW $0000 ; COUNTER/TIMER 1 MSR + .DW Z280_BADINT ; COUNTER/TIMER 1 VECTOR + .DW 0, 0 ; RESERVED + .DW $0000 ; COUNTER/TIMER 2 MSR + .DW Z280_BADINT ; COUNTER/TIMER 2 VECTOR + .DW $0000 ; DMA CHANNEL 0 MSR + .DW Z280_BADINT ; DMA CHANNEL 0 VECTOR + .DW $0000 ; DMA CHANNEL 1 MSR + .DW Z280_BADINT ; DMA CHANNEL 1 VECTOR + .DW $0000 ; DMA CHANNEL 2 MSR + .DW Z280_BADINT ; DMA CHANNEL 2 VECTOR + .DW $0000 ; DMA CHANNEL 3 MSR + .DW Z280_BADINT ; DMA CHANNEL 3 VECTOR + .DW $0000 ; UART RECEIVER MSR + .DW Z280_BADINT ; UART RECEIVER VECTOR + .DW $0000 ; UART TRANSMITTER MSR + .DW Z280_BADINT ; UART TRANSMITTER VECTOR + .DW $0000 ; SINGLE STEP TRAP MSR + .DW Z280_SSTEP ; SINGLE STEP TRAP VECTOR + .DW $0000 ; BREAK ON HALT TRAP MSR + .DW Z280_BRKHLT ; BREAK ON HALT TRAP VECTOR + .DW $0000 ; DIVISION EXCEPTION TRAP MSR + .DW Z280_DIVEXC ; DIVISION EXCEPTION TRAP VECTOR + .DW $0000 ; STACK OVERFLOW WARNING TRAP MSR + .DW Z280_STKOVR ; STACK OVERFLOW WARNING TRAP VECTOR + .DW $0000 ; ACCESS VIOLATION TRAP MSR + .DW Z280_ACCVIO ; ACCESS VIOLATION TRAP VECTOR + .DW $0000 ; SYSTEM CALL TRAP MSR + .DW Z280_SYSCALL ; SYSTEM CALL TRAP VECTOR + .DW $0000 ; PRIVILEGED INSTRUCTION TRAP MSR + .DW Z280_PRIVINST ; PRIVILEGED INSTRUCTION TRAP VECTOR + .DW $0000 ; EPU <- MEMORY EXTENDED INSTRUCTION TRAP MSR + .DW $0000 ; EPU <- MEMORY EXTENDED INSTRUCTION TRAP VECTOR + .DW $0000 ; MEMORY <- EPU EXTENDED INSTRUCTION TRAP MSR + .DW $0000 ; MEMORY <- EPU EXTENDED INSTRUCTION TRAP VECTOR + .DW $0000 ; A <- EPU EXTENDED INSTRUCTION TRAP MSR + .DW $0000 ; A <- EPU EXTENDED INSTRUCTION TRAP VECTOR + .DW $0000 ; EPU INTERNAL OPERATION EXTENDED INSTRUCTION TRAP MSR + .DW $0000 ; EPU INTERNAL OPERATION EXTENDED INSTRUCTION TRAP VECTOR + .DW 0, 0 ; RESERVED + .DW 0, 0 ; RESERVED + ; PROGRAM COUNTER VALUES FOR NMI/INTA (16) + .DW HBX_IV00 + .DW HBX_IV01 + .DW HBX_IV02 + .DW HBX_IV03 + .DW HBX_IV04 + .DW HBX_IV05 + .DW HBX_IV06 + .DW HBX_IV07 + .DW HBX_IV08 + .DW HBX_IV09 + .DW HBX_IV0A + .DW HBX_IV0B + .DW HBX_IV0C + .DW HBX_IV0D + .DW HBX_IV0E + .DW HBX_IV0F + ; THE REMAINDER OF THE Z280 IVT IS TRUNCATED HERE BECAUSE IT + ; TAKES A BUNCH OF SPACE AND IS NOT USED. WE SUPPORT ONLY + ; 16 VECTORED INTERRUPTS AND THEY MUST BE CONNECTED TO INTA. +; +#ENDIF +; +;================================================================================================== ; GLOBAL HBIOS FUNCTIONS ;================================================================================================== ; @@ -5673,94 +5763,6 @@ HB_ALLOC1: HB_TMPSZ .DW 0 HB_TMPREF .DW 0 ; -;================================================================================================== -; Z280 INTERRUPT VECTOR TABLE -;================================================================================================== -; -#IF (MEMMGR == MM_Z280) -; - ; THE Z280 IVT MUST BE ON A 4K BOUNDARY. IT HAS BEEN LOCATED - ; HERE IN AN EFFORT TO MINIMIZE WASTED SPACE. THERE SHOULD BE - ; A LITTLE LESS THAN 4K OF CODE ABOVE. -; - .FILL $1000 - ($ & $FFF) ; MUST BE 4K ALIGNED! -; -Z280_IVT: - .DW 0, 0 ; RESERVED - .DW 0 ; NMI MSR - .DW 0 ; NMI VECTOR - .DW $0000 ; INT A MSR - .DW Z280_BADINT ; INT A VECTOR - .DW $0000 ; INT B MSR - .DW Z280_BADINT ; INT B VECTOR - .DW $0000 ; INT C MSR - .DW Z280_BADINT ; INT C VECTOR - .DW $0000 ; COUNTER/TIMER 0 MSR - .DW Z280_BADINT ; COUNTER/TIMER 0 VECTOR - .DW $0000 ; COUNTER/TIMER 1 MSR - .DW Z280_BADINT ; COUNTER/TIMER 1 VECTOR - .DW 0, 0 ; RESERVED - .DW $0000 ; COUNTER/TIMER 2 MSR - .DW Z280_BADINT ; COUNTER/TIMER 2 VECTOR - .DW $0000 ; DMA CHANNEL 0 MSR - .DW Z280_BADINT ; DMA CHANNEL 0 VECTOR - .DW $0000 ; DMA CHANNEL 1 MSR - .DW Z280_BADINT ; DMA CHANNEL 1 VECTOR - .DW $0000 ; DMA CHANNEL 2 MSR - .DW Z280_BADINT ; DMA CHANNEL 2 VECTOR - .DW $0000 ; DMA CHANNEL 3 MSR - .DW Z280_BADINT ; DMA CHANNEL 3 VECTOR - .DW $0000 ; UART RECEIVER MSR - .DW Z280_BADINT ; UART RECEIVER VECTOR - .DW $0000 ; UART TRANSMITTER MSR - .DW Z280_BADINT ; UART TRANSMITTER VECTOR - .DW $0000 ; SINGLE STEP TRAP MSR - .DW Z280_SSTEP ; SINGLE STEP TRAP VECTOR - .DW $0000 ; BREAK ON HALT TRAP MSR - .DW Z280_BRKHLT ; BREAK ON HALT TRAP VECTOR - .DW $0000 ; DIVISION EXCEPTION TRAP MSR - .DW Z280_DIVEXC ; DIVISION EXCEPTION TRAP VECTOR - .DW $0000 ; STACK OVERFLOW WARNING TRAP MSR - .DW Z280_STKOVR ; STACK OVERFLOW WARNING TRAP VECTOR - .DW $0000 ; ACCESS VIOLATION TRAP MSR - .DW Z280_ACCVIO ; ACCESS VIOLATION TRAP VECTOR - .DW $0000 ; SYSTEM CALL TRAP MSR - .DW Z280_SYSCALL ; SYSTEM CALL TRAP VECTOR - .DW $0000 ; PRIVILEGED INSTRUCTION TRAP MSR - .DW Z280_PRIVINST ; PRIVILEGED INSTRUCTION TRAP VECTOR - .DW $0000 ; EPU <- MEMORY EXTENDED INSTRUCTION TRAP MSR - .DW $0000 ; EPU <- MEMORY EXTENDED INSTRUCTION TRAP VECTOR - .DW $0000 ; MEMORY <- EPU EXTENDED INSTRUCTION TRAP MSR - .DW $0000 ; MEMORY <- EPU EXTENDED INSTRUCTION TRAP VECTOR - .DW $0000 ; A <- EPU EXTENDED INSTRUCTION TRAP MSR - .DW $0000 ; A <- EPU EXTENDED INSTRUCTION TRAP VECTOR - .DW $0000 ; EPU INTERNAL OPERATION EXTENDED INSTRUCTION TRAP MSR - .DW $0000 ; EPU INTERNAL OPERATION EXTENDED INSTRUCTION TRAP VECTOR - .DW 0, 0 ; RESERVED - .DW 0, 0 ; RESERVED - ; PROGRAM COUNTER VALUES FOR NMI/INTA (16) - .DW HBX_IV00 - .DW HBX_IV01 - .DW HBX_IV02 - .DW HBX_IV03 - .DW HBX_IV04 - .DW HBX_IV05 - .DW HBX_IV06 - .DW HBX_IV07 - .DW HBX_IV08 - .DW HBX_IV09 - .DW HBX_IV0A - .DW HBX_IV0B - .DW HBX_IV0C - .DW HBX_IV0D - .DW HBX_IV0E - .DW HBX_IV0F - ; THE REMAINDER OF THE Z280 IVT IS TRUNCATED HERE BECAUSE IT - ; TAKES A BUNCH OF SPACE AND IS NOT USED. WE SUPPORT ONLY - ; 16 VECTORED INTERRUPTS AND THEY MUST BE CONNECTED TO INTA. -; -#ENDIF -; ; Z280 BANK SELECTION (CALLED FROM PROXY) ; #IF (MEMMGR == MM_Z280) diff --git a/Source/HBIOS/sd.asm b/Source/HBIOS/sd.asm index 3207b64b..d6499552 100644 --- a/Source/HBIOS/sd.asm +++ b/Source/HBIOS/sd.asm @@ -9,14 +9,14 @@ ; - TEST XC CARD TYPE DETECTION ; - TRY TO GET INIT TO FAIL, REMOVE DELAYS AT START OF GOIDLE? ; -;---------------------------------------------------------------------------------------------- -; SD Signal Active JUHA N8 CSIO PPI UART DSD MK4 SC MT -; ------------ ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- -; CS (DAT3) LO -> RTC:2 RTC:2 RTC:2 ~PC:4 ~MCR:3 OPR:2 SD:2 ~RTC:2/3OPR:4/5 -; CLK HI -> RTC:1 RTC:1 CSIO PC:1 ~MCR:2 OPR:1 CSIO CSIO SPI -; DI (CMD) HI -> RTC:0 RTC:0 CSIO PC:0 ~MCR:0 OPR:0 CSIO CSIO SPI -; DO (DAT0) HI -> RTC:7 RTC:6 CSIO PB:7 ~MSR:5 OPR:0 CSIO CSIO SPI -;---------------------------------------------------------------------------------------------- +;----------------------------------------------------------------------------------------------------- +; SD Signal Active JUHA N8 CSIO PPI UART DSD MK4 SC MT PIO +; ------------ ------- ------- ------- ------- ------- ------- ------- ------- ------- -------------- +; CS (DAT3) LO -> RTC:2 RTC:2 RTC:2 ~PC:4 ~MCR:3 OPR:2 SD:2 ~RTC:2/3OPR:4/5~OPR:3 +; CLK HI -> RTC:1 RTC:1 CSIO PC:1 ~MCR:2 OPR:1 CSIO CSIO SPI OPR:4 +; DI (CMD) HI -> RTC:0 RTC:0 CSIO PC:0 ~MCR:0 OPR:0 CSIO CSIO SPI OPR:0 +; DO (DAT0) HI -> RTC:7 RTC:6 CSIO PB:7 ~MSR:5 OPR:0 CSIO CSIO SPI OPR:7 +;----------------------------------------------------------------------------------------------------- ; ; CS = CHIP SELECT (AKA DAT3 FOR NON-SPI MODE) ; CLK = CLOCK @@ -167,6 +167,7 @@ RTCDEF .SET RTCDEF | SD_OPRDEF ; SET DEFAULT IN HBIOS MAINLINE SD_DEVMAX .EQU 1 ; NUMBER OF PHYSICAL UNITS (SOCKETS) SD_PPIBASE .EQU SDPPIBASE ; BASE IO PORT FOR PPI SD_PPIB .EQU SDPPIBASE + 1 ; PPI PORT B (INPUT: DOUT) +SD_PPIB .EQU SDPPIBASE + 1 ; PPI PORT B (INPUT: DOUT) SD_PPIC .EQU SDPPIBASE + 2 ; PPI PORT C (OUTPUT: CS, CLK, DIN) SD_PPIX .EQU SDPPIBASE + 3 ; PPI CONTROL PORT SD_OPRREG .EQU SD_PPIC ; PPI PORT C IS OPR REG @@ -298,7 +299,10 @@ SD_INVCS .EQU FALSE ; INVERT CS SD_DEVMAX .EQU 1 ; NUMBER OF PHYSICAL UNITS (SOCKETS) SD_IOBASE .EQU $69 ; IO BASE ADDRESS FOR SD INTERFACE SD_OPRREG .EQU SD_IOBASE ; OUTPUT PORT (OUTPUT: CS, CLK, DIN) -SD_OPRDEF .EQU %11111111 ; OUTPUT PORT DEFAULT STATE +;--- WBW +;SD_OPRDEF .EQU %11111111 ; OUTPUT PORT DEFAULT STATE +SD_OPRDEF .EQU %11101111 ; OUTPUT PORT DEFAULT STATE +;--- SD_INPREG .EQU SD_IOBASE ; INPUT REGISTER SD_CS0 .EQU %00001000 ; SELECT SD_CLK .EQU %00010000 ; CLOCK @@ -1801,6 +1805,7 @@ SD_SETUP: ; #IF (SDMODE == SDMODE_PIO) LD A,SD_OPRDEF ; All output bits high + LD (SD_OPRVAL),A ; WBW OUT (SD_OPRREG),A LD A,$CF ; Port B mode 3 OUT (SD_DDR),A diff --git a/Source/ver.inc b/Source/ver.inc index 14e91216..df4be77a 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,7 +2,7 @@ #DEFINE RMN 3 #DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "3.3.0-dev.33" +#DEFINE BIOSVER "3.3.0-dev.35" #define rmj RMJ #define rmn RMN #define rup RUP diff --git a/Source/ver.lib b/Source/ver.lib index 69b8f659..9e38fd51 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 3 rup equ 0 rtp equ 0 biosver macro - db "3.3.0-dev.33" + db "3.3.0-dev.35" endm