Browse Source

SYSCHK changes

Display the error code of syschk enabled
pull/306/head
b1ackmai1er 3 years ago
parent
commit
e25107309b
  1. 8
      Source/HBIOS/dsrtc.asm
  2. 72
      Source/HBIOS/hbios.asm
  3. 8
      Source/HBIOS/md.asm
  4. 4
      Source/HBIOS/ppide.asm
  5. 4
      Source/HBIOS/sio.asm

8
Source/HBIOS/dsrtc.asm

@ -247,9 +247,7 @@ DSRTC_DISPATCH:
JP Z,DSRTC_SETALM ; SET ALARM JP Z,DSRTC_SETALM ; SET ALARM
DEC A DEC A
JP Z,DSRTC_DEVICE ; REPORT RTC DEVICE INFO JP Z,DSRTC_DEVICE ; REPORT RTC DEVICE INFO
CALL SYSCHK
LD A,ERR_NOFUNC
OR A
SYSCHKERR(ERR_NOFUNC)
RET RET
; ;
; NVRAM FUNCTIONS ARE NOT AVAILABLE IN SIMULATOR ; NVRAM FUNCTIONS ARE NOT AVAILABLE IN SIMULATOR
@ -258,9 +256,7 @@ DSRTC_GETBLK:
DSRTC_SETBLK: DSRTC_SETBLK:
DSRTC_GETALM: DSRTC_GETALM:
DSRTC_SETALM: DSRTC_SETALM:
CALL SYSCHK
LD A,ERR_NOTIMPL
OR A
SYSCHKERR(ERR_NOTIMPL)
RET RET
; ;
; RTC GET TIME ; RTC GET TIME

72
Source/HBIOS/hbios.asm

@ -132,6 +132,11 @@ MODCNT .SET MODCNT + 1
#DEFINE LED(N) \; #DEFINE LED(N) \;
#ENDIF #ENDIF
; ;
#DEFINE SYSCHKERR(HB_ERR) \
#DEFCONT \ CALL SYSCHKA
#DEFCONT \ LD A,HB_ERR
#DEFCONT \ OR A
;
; ;
; ;
#IF (INTMODE == 0) #IF (INTMODE == 0)
@ -3128,7 +3133,7 @@ HB_DISPATCH:
PUSH AF PUSH AF
LD A,(HB_STACK - HB_STKSIZ + $08) LD A,(HB_STACK - HB_STKSIZ + $08)
CP $FF CP $FF
CALL SYSCHK
SYSCHKERR(ERR_INTERNAL)
LD A,$FF LD A,$FF
LD (HB_STACK - HB_STKSIZ + $08),A LD (HB_STACK - HB_STKSIZ + $08),A
POP AF POP AF
@ -3156,9 +3161,7 @@ HB_DISPATCH1:
; FALL THRU ; FALL THRU
; ;
HB_DISPERR: HB_DISPERR:
CALL SYSCHK
LD A,ERR_NOFUNC
OR A
SYSCHKERR(ERR_NOFUNC)
RET RET
; ;
;================================================================================================== ;==================================================================================================
@ -3620,9 +3623,7 @@ RTC_DISPATCH:
RET RET
; ;
RTC_DISPERR: RTC_DISPERR:
CALL SYSCHK
LD A,ERR_NOHW
OR A
SYSCHKERR(ERR_NOHW)
RET RET
; ;
; SET RTC DISPATCH ADDRESS, USED BY RTC DRIVERS DURING INIT ; SET RTC DISPATCH ADDRESS, USED BY RTC DRIVERS DURING INIT
@ -3820,9 +3821,7 @@ SYS_RESET:
JR Z,SYS_RESCOLD JR Z,SYS_RESCOLD
CP BF_SYSRES_USER CP BF_SYSRES_USER
JR Z,SYS_RESUSER JR Z,SYS_RESUSER
CALL SYSCHK
LD A,ERR_NOFUNC
OR A ; SIGNAL ERROR
SYSCHKERR(ERR_NOFUNC)
RET RET
; ;
; SOFT RESET HBIOS, RELEASE HEAP MEMORY NOT USED BY HBIOS ; SOFT RESET HBIOS, RELEASE HEAP MEMORY NOT USED BY HBIOS
@ -4026,9 +4025,7 @@ SYS_ALLOC:
; ALL OTHER REGISTERS PRESERVED ; ALL OTHER REGISTERS PRESERVED
; ;
SYS_FREE: SYS_FREE:
CALL SYSCHK ; NOT YET IMPLEMENTED
LD A,ERR_NOTIMPL ; NOT YET INMPLEMENTED
OR A ; SET FLAGS
SYSCHKERR(ERR_NOTIMPL) ; NOT YET INMPLEMENTED
RET RET
; ;
; GET SYSTEM INFORMATION ; GET SYSTEM INFORMATION
@ -4068,9 +4065,7 @@ SYS_GET:
JP Z,SYS_GETBNKINFO JP Z,SYS_GETBNKINFO
CP BF_SYSGET_CPUSPD CP BF_SYSGET_CPUSPD
JP Z,SYS_GETCPUSPD JP Z,SYS_GETCPUSPD
CALL SYSCHK
LD A,ERR_NOFUNC ; SIGNAL ERROR
OR A ; SET FLAGS
SYSCHKERR(ERR_NOFUNC) ; SIGNAL ERROR
RET RET
; ;
; GET TIMER ; GET TIMER
@ -4157,7 +4152,7 @@ SYS_GETBNKINFO:
XOR A XOR A
RET RET
; ;
; GET SYSTEM CPU SPEED ORMANCE ATTRIBUTES
; GET SYSTEM CPU SPEED PERFORMANCE ATTRIBUTES
; RETURNS: ; RETURNS:
; L: CLOCK MULT (0:HALF, 1:FULL, 2: DOUBLE) ; L: CLOCK MULT (0:HALF, 1:FULL, 2: DOUBLE)
; D: MEMORY WAIT STATES ; D: MEMORY WAIT STATES
@ -4362,9 +4357,7 @@ SYS_SET:
JR Z,SYS_SETBOOTINFO JR Z,SYS_SETBOOTINFO
CP BF_SYSSET_CPUSPD CP BF_SYSSET_CPUSPD
JR Z,SYS_SETCPUSPD JR Z,SYS_SETCPUSPD
CALL SYSCHK
LD A,ERR_NOFUNC ; SIGNAL ERROR
OR A ; SET FLAGS
SYSCHKERR(ERR_NOFUNC) ; SIGNAL ERROR
RET RET
; ;
; SET BOOT INFORMATION ; SET BOOT INFORMATION
@ -4725,9 +4718,7 @@ SYS_INT:
JR Z,SYS_INTGET JR Z,SYS_INTGET
CP BF_SYSINT_SET CP BF_SYSINT_SET
JR Z,SYS_INTSET JR Z,SYS_INTSET
CALL SYSCHK
LD A,ERR_NOFUNC ; SIGNAL ERROR
OR A ; SET FLAGS
SYSCHKERR(ERR_NOFUNC) ; SIGNAL ERROR
RET RET
; ;
; GET INTERRUPT SYSTEM INFORMATION ; GET INTERRUPT SYSTEM INFORMATION
@ -4753,9 +4744,7 @@ SYS_INTINFO:
; ;
SYS_INTVECADR: SYS_INTVECADR:
#IF (INTMODE == 0) #IF (INTMODE == 0)
CALL SYSCHK ; INVALID FOR INT MODE 0
LD A,ERR_BADCFG ; SIGNAL ERROR
OR A ; SET FLAGS
SYSCHKERR(ERR_BADCFG) ; SIGNAL ERROR. INVALID FOR INT MODE 0
RET RET
#ENDIF #ENDIF
#IF (INTMODE == 1) #IF (INTMODE == 1)
@ -4769,9 +4758,7 @@ SYS_INTVECADR:
LD A,E ; INCOMING INDEX POSITION TO A LD A,E ; INCOMING INDEX POSITION TO A
CP C ; COMPARE TO VECTOR COUNT CP C ; COMPARE TO VECTOR COUNT
JR C,SYS_INTGET1 ; CONTINUE IF POSITION IN RANGE JR C,SYS_INTGET1 ; CONTINUE IF POSITION IN RANGE
CALL SYSCHK ; ELSE ERROR
LD A,ERR_RANGE ; SIGNAL ERROR
OR A ; SET FLAGS
SYSCHKERR(ERR_RANGE) ; ELSE ERROR
RET RET
SYS_INTGET1: SYS_INTGET1:
OR A ; CLEAR CARRY OR A ; CLEAR CARRY
@ -5252,15 +5239,11 @@ HB_DISPCALC:
RET ; JUMP TO DRIVER FUNC ADR ON TOS RET ; JUMP TO DRIVER FUNC ADR ON TOS
; ;
HB_FUNCERR: HB_FUNCERR:
CALL SYSCHK
LD A,ERR_NOFUNC ; SIGNAL ERROR
OR A ; SET FLAGS
SYSCHKERR(ERR_NOFUNC) ; SIGNAL ERROR
RET RET
; ;
HB_UNITERR: HB_UNITERR:
CALL SYSCHK
LD A,ERR_NOUNIT ; SIGNAL ERROR
OR A ; SET FLAGS
SYSCHKERR(ERR_NOUNIT) ; SIGNAL ERROR
RET RET
; ;
; ADD AN ENTRY TO THE UNIT TABLE AT ADDRESS IN HL ; ADD AN ENTRY TO THE UNIT TABLE AT ADDRESS IN HL
@ -5347,9 +5330,7 @@ HB_ALLOC:
HB_ALLOC1: HB_ALLOC1:
; ERROR RETURN ; ERROR RETURN
POP DE ; RESTORE INCOMING DE POP DE ; RESTORE INCOMING DE
CALL SYSCHK
LD A,ERR_NOMEM ; SIGNAL ERROR
OR A ; SET FLAGS
SYSCHKERR(ERR_NOMEM) ; SIGNAL ERROR
RET RET
; ;
HB_TMPSZ .DW 0 HB_TMPSZ .DW 0
@ -6337,12 +6318,12 @@ HB_RDSEC:
; ;
; SYSTEM CHECK: DUMP MACHINE STATE AND CONTINUE? ; SYSTEM CHECK: DUMP MACHINE STATE AND CONTINUE?
; ;
SYSCHK:
SYSCHKA:
; CHECK DIAG LEVEL TO SEE IF WE SHOULD DISPLAY ; CHECK DIAG LEVEL TO SEE IF WE SHOULD DISPLAY
PUSH AF ; PRESERVE INCOMING AF VALUE PUSH AF ; PRESERVE INCOMING AF VALUE
LD A,(CB_DIAGLVL) ; GET DIAGNOSTIC LEVEL LD A,(CB_DIAGLVL) ; GET DIAGNOSTIC LEVEL
CP DL_ERROR ; >= ERROR LEVEL CP DL_ERROR ; >= ERROR LEVEL
JR C,SYSCHK1 ; IF NOT, GO HOME
; JR C,SYSCHK1 ; IF NOT, GO HOME
POP AF ; RESTORE INCOMING AF VALUE POP AF ; RESTORE INCOMING AF VALUE
; ;
; DISPLAY SYSCHK MESSAGE ; DISPLAY SYSCHK MESSAGE
@ -6351,6 +6332,17 @@ SYSCHK:
CALL WRITESTR ; PRINT IT CALL WRITESTR ; PRINT IT
POP DE ; RESTORE DE VALUE POP DE ; RESTORE DE VALUE
CALL XREGDMP ; DUMP REGISTERS CALL XREGDMP ; DUMP REGISTERS
; DISPLAY ERROR CODE. IT IS AT RETURN ADDRESS+1 .. LD A,XX
EX (SP),HL ; GET RETURN ADDRESS
INC HL ; POINT TO THE ERROR CODE
PUSH AF
LD A,(HL) ; DISPLAY
CALL PRTHEXBYTE
POP AF
DEC HL ; RESTORE RETURN ADDRESS
EX (SP),HL
;
JR CONTINUE ; CHECK W/ USER JR CONTINUE ; CHECK W/ USER
; ;
SYSCHK1: SYSCHK1:

8
Source/HBIOS/md.asm

@ -157,9 +157,7 @@ MD_FNTBL:
MD_VERIFY: MD_VERIFY:
MD_FORMAT: MD_FORMAT:
MD_DEFMED: MD_DEFMED:
CALL SYSCHK ; INVALID SUB-FUNCTION
LD A,ERR_NOTIMPL
OR A
SYSCHKERR(ERR_NOTIMPL) ; INVALID SUB-FUNCTION
RET RET
; ;
; ;
@ -182,9 +180,7 @@ MD_CAP: ; ASSUMES THAT UNIT 0 IS RAM, UNIT 1 IS ROM
JR Z,MD_CAP0 ; UNIT 0 JR Z,MD_CAP0 ; UNIT 0
DEC A ; TRY UNIT 1 DEC A ; TRY UNIT 1
JR Z,MD_CAP1 ; UNIT 1 JR Z,MD_CAP1 ; UNIT 1
CALL SYSCHK ; INVALID UNIT
LD A,ERR_NOUNIT
OR A
SYSCHKERR(ERR_NOUNIT) ; INVALID UNIT
RET RET
MD_CAP0: MD_CAP0:
LD A,(HCB + HCB_RAMBANKS) ; POINT TO RAM BANK COUNT LD A,(HCB + HCB_RAMBANKS) ; POINT TO RAM BANK COUNT

4
Source/HBIOS/ppide.asm

@ -470,9 +470,7 @@ PPIDE_FNTBL:
PPIDE_VERIFY: PPIDE_VERIFY:
PPIDE_FORMAT: PPIDE_FORMAT:
PPIDE_DEFMED: PPIDE_DEFMED:
CALL SYSCHK ; NOT IMPLEMENTED
LD A,ERR_NOTIMPL
OR A
SYSCHKERR(ERR_NOTIMPL) ; NOT IMPLEMENTED
RET RET
; ;
; ;

4
Source/HBIOS/sio.asm

@ -843,9 +843,7 @@ SIO_INITGO:
LD L,SIO1_VEC ; ASSUME CHIP 1 LD L,SIO1_VEC ; ASSUME CHIP 1
DEC A ; CHIP 1? DEC A ; CHIP 1?
JR Z,SIO_INITIVT ; IF SO, DO IT JR Z,SIO_INITIVT ; IF SO, DO IT
CALL SYSCHK ; IMPOSSIBLE SITUATION
LD A,ERR_NOUNIT
OR A
SYSCHKERR(ERR_NOUNIT) ; IMPOSSIBLE SITUATION
RET RET
SIO_INITIVT: SIO_INITIVT:
LD A,L ; VALUE TO A LD A,L ; VALUE TO A

Loading…
Cancel
Save