|
|
|
@ -64,10 +64,6 @@ |
|
|
|
; - dsky.asm |
|
|
|
; - unlzsa2s.asm |
|
|
|
; |
|
|
|
; TODO |
|
|
|
; - Add remaining service routine stubs for IM3 (NMI, etc.) |
|
|
|
; - Fix app boot under Z280 |
|
|
|
; |
|
|
|
; INCLUDE GENERIC STUFF |
|
|
|
; |
|
|
|
#INCLUDE "std.asm" |
|
|
|
@ -962,6 +958,23 @@ HB_IVT0F: JP HB_BADINT \ .DB 0 |
|
|
|
;================================================================================================== |
|
|
|
; |
|
|
|
HB_START: |
|
|
|
#IFDEF APPBOOT |
|
|
|
#IF (MEMMGR == MM_Z280) |
|
|
|
LD A,%00000001 |
|
|
|
OUT (DIAGPORT),A |
|
|
|
LD DE,Z280_BOOTERR |
|
|
|
LD C,9 |
|
|
|
LD A,%00000010 |
|
|
|
OUT (DIAGPORT),A |
|
|
|
CALL $0005 |
|
|
|
LD A,%00001000 |
|
|
|
OUT (DIAGPORT),A |
|
|
|
RET |
|
|
|
; |
|
|
|
Z280_BOOTERR .TEXT "\r\n\r\n*** Application mode boot not supported under Z280 native memory management!!!\r\n\r\n$" |
|
|
|
#ENDIF |
|
|
|
#ENDIF |
|
|
|
|
|
|
|
DI ; NO INTERRUPTS |
|
|
|
IM 1 ; INTERRUPT MODE 1 |
|
|
|
; |
|
|
|
@ -3602,16 +3615,109 @@ HB_BADINTCNT .DB 0 |
|
|
|
#IF (MEMMGR == MM_Z280) |
|
|
|
; |
|
|
|
Z280_BADINT: |
|
|
|
CALL NEWLINE |
|
|
|
; SAVE REASON CODE FOR POSSIBLE RETURN VIA RETIL |
|
|
|
EX (SP),HL ; GET MSR, SAVE HL |
|
|
|
LD (HB_RCSAV),HL ; SAVE IT |
|
|
|
POP HL ; RECOVER HL, POP STACK |
|
|
|
; SAVE MSR FOR POSSIBLE RETURN VIA RETIL |
|
|
|
EX (SP),HL ; GET MSR, SAVE HL |
|
|
|
LD (HB_MSRSAV),HL ; SAVE IT |
|
|
|
POP HL ; RECOVER HL, POP STACK |
|
|
|
; |
|
|
|
PUSH DE |
|
|
|
LD DE,Z280_BADINTSTR |
|
|
|
CALL NEWLINE2 |
|
|
|
PRTS("+++ $") |
|
|
|
CALL WRITESTR |
|
|
|
POP HL ; DUMP MSR |
|
|
|
POP HL ; GET RET ADR |
|
|
|
CALL PRTHEXWORDHL |
|
|
|
POP DE |
|
|
|
CALL XREGDMP |
|
|
|
; |
|
|
|
; RECOVER MSR, THEN RETURN VIA RETIL |
|
|
|
PUSH HL ; SAVE HL |
|
|
|
LD HL,(HB_RCSAV) ; GET SAVED REASON CODE |
|
|
|
PRTS(" RC=$") |
|
|
|
CALL PRTHEXWORDHL ; DUMP MSR |
|
|
|
LD HL,(HB_MSRSAV) ; GET SAVED MSR |
|
|
|
PRTS(" MSR=$") |
|
|
|
CALL PRTHEXWORDHL ; DUMP MSR |
|
|
|
EX (SP),HL ; MSR TO STK, RECOVER HL |
|
|
|
; |
|
|
|
.DB $ED,$55 ; RETIL |
|
|
|
; |
|
|
|
Z280_SSTEP: |
|
|
|
; SAVE HL AND MSR FOR POSSIBLE RETURN VIA RETIL |
|
|
|
EX (SP),HL ; GET MSR, SAVE HL |
|
|
|
LD (HB_MSRSAV),HL ; SAVE IT |
|
|
|
POP HL ; RECOVER HL, POP STACK |
|
|
|
; |
|
|
|
PUSH DE |
|
|
|
LD DE,Z280_SSTEPSTR |
|
|
|
JP Z280_DIAG |
|
|
|
; |
|
|
|
Z280_BRKHLT: |
|
|
|
; SAVE HL AND MSR FOR POSSIBLE RETURN VIA RETIL |
|
|
|
EX (SP),HL ; GET MSR, SAVE HL |
|
|
|
LD (HB_MSRSAV),HL ; SAVE IT |
|
|
|
POP HL ; RECOVER HL, POP STACK |
|
|
|
; |
|
|
|
PUSH DE |
|
|
|
LD DE,Z280_BRKHLTSTR |
|
|
|
JP Z280_DIAG |
|
|
|
; |
|
|
|
Z280_DIVEXC: |
|
|
|
; SAVE HL AND MSR FOR POSSIBLE RETURN VIA RETIL |
|
|
|
EX (SP),HL ; GET MSR, SAVE HL |
|
|
|
LD (HB_MSRSAV),HL ; SAVE IT |
|
|
|
POP HL ; RECOVER HL, POP STACK |
|
|
|
; |
|
|
|
PUSH DE |
|
|
|
LD DE,Z280_DIVEXCSTR |
|
|
|
JP Z280_DIAG |
|
|
|
; |
|
|
|
Z280_STKOVR: |
|
|
|
; SAVE HL AND MSR FOR POSSIBLE RETURN VIA RETIL |
|
|
|
EX (SP),HL ; GET MSR, SAVE HL |
|
|
|
LD (HB_MSRSAV),HL ; SAVE IT |
|
|
|
POP HL ; RECOVER HL, POP STACK |
|
|
|
; |
|
|
|
PUSH DE |
|
|
|
LD DE,Z280_STKOVRSTR |
|
|
|
JP Z280_DIAG |
|
|
|
; |
|
|
|
Z280_ACCVIO: |
|
|
|
; SAVE HL AND MSR FOR POSSIBLE RETURN VIA RETIL |
|
|
|
EX (SP),HL ; GET MSR, SAVE HL |
|
|
|
LD (HB_MSRSAV),HL ; SAVE IT |
|
|
|
POP HL ; RECOVER HL, POP STACK |
|
|
|
; |
|
|
|
PUSH DE |
|
|
|
LD DE,Z280_ACCVIOSTR |
|
|
|
JP Z280_DIAG |
|
|
|
; |
|
|
|
Z280_DIAG: |
|
|
|
CALL NEWLINE2 |
|
|
|
PRTS("+++ $") |
|
|
|
CALL WRITESTR |
|
|
|
POP DE |
|
|
|
CALL XREGDMP |
|
|
|
; |
|
|
|
; RECOVER MSR, THEN RETURN VIA RETIL |
|
|
|
PUSH HL ; SAVE HL |
|
|
|
LD HL,(HB_MSRSAV) ; GET SAVED MSR |
|
|
|
PRTS(" MSR=$") |
|
|
|
CALL PRTHEXWORDHL ; DUMP MSR |
|
|
|
EX (SP),HL ; MSR TO STK, RECOVER HL |
|
|
|
; |
|
|
|
;.DB $ED,$55 ; RETIL |
|
|
|
DI |
|
|
|
HALT |
|
|
|
; |
|
|
|
Z280_BADINTSTR .TEXT "\n\n*** Z280 BAD INT @$" |
|
|
|
Z280_BADINTSTR .TEXT "BAD INT $" |
|
|
|
Z280_SSTEPSTR .TEXT "SINGLE STEP $" |
|
|
|
Z280_BRKHLTSTR .TEXT "BREAK HALT $" |
|
|
|
Z280_DIVEXCSTR .TEXT "DIVISION EXCEPTION $" |
|
|
|
Z280_STKOVRSTR .TEXT "STACK OVERFLOW $" |
|
|
|
Z280_ACCVIOSTR .TEXT "ACCESS VIOLATION $" |
|
|
|
; |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
@ -3685,7 +3791,8 @@ Z280_PRIVINSTX: |
|
|
|
EX (SP),HL ; MSR TO STK, RECOVER HL |
|
|
|
.DB $ED,$55 ; RETIL |
|
|
|
; |
|
|
|
HB_MSRSAV .DW 0 |
|
|
|
HB_MSRSAV .DW 0 ; SAVED MSR |
|
|
|
HB_RCSAV .DW 0 ; SAVED REASON CODE |
|
|
|
; |
|
|
|
Z280_PRIVSTR .TEXT "\r\n\r\n*** Privileged Instruction @$" |
|
|
|
; |
|
|
|
@ -3898,27 +4005,27 @@ Z280_IVT: |
|
|
|
.DW $0000 ; UART TRANSMITTER MSR |
|
|
|
.DW Z280_BADINT ; UART TRANSMITTER VECTOR |
|
|
|
.DW $0000 ; SINGLE STEP TRAP MSR |
|
|
|
.DW Z280_BADINT ; SINGLE STEP TRAP VECTOR |
|
|
|
.DW Z280_SSTEP ; SINGLE STEP TRAP VECTOR |
|
|
|
.DW $0000 ; BREAK ON HALT TRAP MSR |
|
|
|
.DW Z280_BADINT ; BREAK ON HALT TRAP VECTOR |
|
|
|
.DW Z280_BRKHLT ; BREAK ON HALT TRAP VECTOR |
|
|
|
.DW $0000 ; DIVISION EXCEPTION TRAP MSR |
|
|
|
.DW Z280_BADINT ; DIVISION EXCEPTION TRAP VECTOR |
|
|
|
.DW Z280_DIVEXC ; DIVISION EXCEPTION TRAP VECTOR |
|
|
|
.DW $0000 ; STACK OVERFLOW WARNING TRAP MSR |
|
|
|
.DW Z280_BADINT ; STACK OVERFLOW WARNING TRAP VECTOR |
|
|
|
.DW Z280_STKOVR ; STACK OVERFLOW WARNING TRAP VECTOR |
|
|
|
.DW $0000 ; ACCESS VIOLATION TRAP MSR |
|
|
|
.DW Z280_BADINT ; ACCESS VIOLATION TRAP VECTOR |
|
|
|
.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 Z280_BADINT ; EPU <- MEMORY EXTENDED INSTRUCTION TRAP VECTOR |
|
|
|
.DW $0000 ; EPU <- MEMORY EXTENDED INSTRUCTION TRAP VECTOR |
|
|
|
.DW $0000 ; MEMORY <- EPU EXTENDED INSTRUCTION TRAP MSR |
|
|
|
.DW Z280_BADINT ; MEMORY <- EPU EXTENDED INSTRUCTION TRAP VECTOR |
|
|
|
.DW $0000 ; MEMORY <- EPU EXTENDED INSTRUCTION TRAP VECTOR |
|
|
|
.DW $0000 ; A <- EPU EXTENDED INSTRUCTION TRAP MSR |
|
|
|
.DW Z280_BADINT ; A <- EPU EXTENDED INSTRUCTION TRAP VECTOR |
|
|
|
.DW $0000 ; A <- EPU EXTENDED INSTRUCTION TRAP VECTOR |
|
|
|
.DW $0000 ; EPU INTERNAL OPERATION EXTENDED INSTRUCTION TRAP MSR |
|
|
|
.DW Z280_BADINT ; EPU INTERNAL OPERATION EXTENDED INSTRUCTION TRAP VECTOR |
|
|
|
.DW $0000 ; EPU INTERNAL OPERATION EXTENDED INSTRUCTION TRAP VECTOR |
|
|
|
.DW 0, 0 ; RESERVED |
|
|
|
.DW 0, 0 ; RESERVED |
|
|
|
; PROGRAM COUNTER VALUES FOR NMI/INTA |
|
|
|
|