diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index eb9c7ce3..425ed608 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -78,8 +78,8 @@ ; Interrupt Vector Table 0x0500 Varies ; System Initialization Varies Varies ; Function Dispatching Varies Varies -; System API Varies Varies ; Z280 Int Vector Table Varies Varies +; System API Varies Varies ; Internal Functions Varies Varies ; Utility Functions Varies Varies ; Print Summary Function Varies Varies @@ -4808,6 +4808,104 @@ SYS_DISPATCH: HB_DISP_END .EQU $ ; ;================================================================================================== +; Z280 INTERRUPT VECTOR TABLE +;================================================================================================== +; +HB_Z280IVT_BEG .EQU $ +; +; 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. +; +#IF (MEMMGR == MM_Z280) +; +Z280_IVT_SLACK_ORG .EQU $ + ALIGN($1000) +Z280_IVT_SLACK .EQU $ - Z280_IVT_SLACK_ORG + .ECHO "Z280 IVT SLACK = " + .ECHO Z280_IVT_SLACK + .ECHO " bytes.\n" +; +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 +; +HB_Z280IVT_END .EQU $ +; +;================================================================================================== ; SYSTEM API FUNCTIONS ;================================================================================================== ; @@ -6043,104 +6141,6 @@ SYS_INTSET1: HB_SYSAPI_END .EQU $ ; ;================================================================================================== -; Z280 INTERRUPT VECTOR TABLE -;================================================================================================== -; -HB_Z280IVT_BEG .EQU $ -; -; 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. -; -#IF (MEMMGR == MM_Z280) -; -Z280_IVT_SLACK_ORG .EQU $ - ALIGN($1000) -Z280_IVT_SLACK .EQU $ - Z280_IVT_SLACK_ORG - .ECHO "Z280 IVT SLACK = " - .ECHO Z280_IVT_SLACK - .ECHO " bytes.\n" -; -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 -; -HB_Z280IVT_END .EQU $ -; -;================================================================================================== ; GLOBAL INTERNAL HBIOS FUNCTIONS ;================================================================================================== ; @@ -9158,8 +9158,8 @@ SLACK .EQU BNKTOP - $ .ECHO "INTVEC \t" \ .ECHO HB_INTVEC_BEG \ .ECHO "\t" \ .ECHO HB_INTVEC_END - HB_INTVEC_BEG \ .ECHO "\n" .ECHO "SYSINIT \t" \ .ECHO HB_SYSINIT_BEG \ .ECHO "\t" \ .ECHO HB_SYSINIT_END - HB_SYSINIT_BEG \ .ECHO "\n" .ECHO "DISP \t" \ .ECHO HB_DISP_BEG \ .ECHO "\t" \ .ECHO HB_DISP_END - HB_DISP_BEG \ .ECHO "\n" - .ECHO "SYSAPI \t" \ .ECHO HB_SYSAPI_BEG \ .ECHO "\t" \ .ECHO HB_SYSAPI_END - HB_SYSAPI_BEG \ .ECHO "\n" .ECHO "Z280IVT \t" \ .ECHO HB_Z280IVT_BEG \ .ECHO "\t" \ .ECHO HB_Z280IVT_END - HB_Z280IVT_BEG \ .ECHO "\n" + .ECHO "SYSAPI \t" \ .ECHO HB_SYSAPI_BEG \ .ECHO "\t" \ .ECHO HB_SYSAPI_END - HB_SYSAPI_BEG \ .ECHO "\n" .ECHO "INTFUNC \t" \ .ECHO HB_INTFUNC_BEG \ .ECHO "\t" \ .ECHO HB_INTFUNC_END - HB_INTFUNC_BEG \ .ECHO "\n" .ECHO "UTIL \t" \ .ECHO HB_UTIL_BEG \ .ECHO "\t" \ .ECHO HB_UTIL_END - HB_UTIL_BEG \ .ECHO "\n" .ECHO "PRTSUM \t" \ .ECHO HB_PRTSUM_BEG \ .ECHO "\t" \ .ECHO HB_PRTSUM_END - HB_PRTSUM_BEG \ .ECHO "\n"