diff --git a/Source/HBIOS/dsrtc.asm b/Source/HBIOS/dsrtc.asm index c4e8608b..be29dc5e 100644 --- a/Source/HBIOS/dsrtc.asm +++ b/Source/HBIOS/dsrtc.asm @@ -247,9 +247,7 @@ DSRTC_DISPATCH: JP Z,DSRTC_SETALM ; SET ALARM DEC A JP Z,DSRTC_DEVICE ; REPORT RTC DEVICE INFO - CALL SYSCHK - LD A,ERR_NOFUNC - OR A + SYSCHKERR(ERR_NOFUNC) RET ; ; NVRAM FUNCTIONS ARE NOT AVAILABLE IN SIMULATOR @@ -258,9 +256,7 @@ DSRTC_GETBLK: DSRTC_SETBLK: DSRTC_GETALM: DSRTC_SETALM: - CALL SYSCHK - LD A,ERR_NOTIMPL - OR A + SYSCHKERR(ERR_NOTIMPL) RET ; ; RTC GET TIME diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 4bb00aa7..9fa24610 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -132,6 +132,11 @@ MODCNT .SET MODCNT + 1 #DEFINE LED(N) \; #ENDIF ; +#DEFINE SYSCHKERR(HB_ERR) \ + #DEFCONT \ CALL SYSCHKA + #DEFCONT \ LD A,HB_ERR + #DEFCONT \ OR A +; ; ; #IF (INTMODE == 0) @@ -3128,7 +3133,7 @@ HB_DISPATCH: PUSH AF LD A,(HB_STACK - HB_STKSIZ + $08) CP $FF - CALL SYSCHK + SYSCHKERR(ERR_INTERNAL) LD A,$FF LD (HB_STACK - HB_STKSIZ + $08),A POP AF @@ -3156,9 +3161,7 @@ HB_DISPATCH1: ; FALL THRU ; HB_DISPERR: - CALL SYSCHK - LD A,ERR_NOFUNC - OR A + SYSCHKERR(ERR_NOFUNC) RET ; ;================================================================================================== @@ -3620,9 +3623,7 @@ RTC_DISPATCH: RET ; RTC_DISPERR: - CALL SYSCHK - LD A,ERR_NOHW - OR A + SYSCHKERR(ERR_NOHW) RET ; ; SET RTC DISPATCH ADDRESS, USED BY RTC DRIVERS DURING INIT @@ -3820,9 +3821,7 @@ SYS_RESET: JR Z,SYS_RESCOLD CP BF_SYSRES_USER JR Z,SYS_RESUSER - CALL SYSCHK - LD A,ERR_NOFUNC - OR A ; SIGNAL ERROR + SYSCHKERR(ERR_NOFUNC) RET ; ; SOFT RESET HBIOS, RELEASE HEAP MEMORY NOT USED BY HBIOS @@ -4026,9 +4025,7 @@ SYS_ALLOC: ; ALL OTHER REGISTERS PRESERVED ; 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 ; ; GET SYSTEM INFORMATION @@ -4068,9 +4065,7 @@ SYS_GET: JP Z,SYS_GETBNKINFO CP BF_SYSGET_CPUSPD JP Z,SYS_GETCPUSPD - CALL SYSCHK - LD A,ERR_NOFUNC ; SIGNAL ERROR - OR A ; SET FLAGS + SYSCHKERR(ERR_NOFUNC) ; SIGNAL ERROR RET ; ; GET TIMER @@ -4157,7 +4152,7 @@ SYS_GETBNKINFO: XOR A RET ; -; GET SYSTEM CPU SPEED ORMANCE ATTRIBUTES +; GET SYSTEM CPU SPEED PERFORMANCE ATTRIBUTES ; RETURNS: ; L: CLOCK MULT (0:HALF, 1:FULL, 2: DOUBLE) ; D: MEMORY WAIT STATES @@ -4362,9 +4357,7 @@ SYS_SET: JR Z,SYS_SETBOOTINFO CP BF_SYSSET_CPUSPD JR Z,SYS_SETCPUSPD - CALL SYSCHK - LD A,ERR_NOFUNC ; SIGNAL ERROR - OR A ; SET FLAGS + SYSCHKERR(ERR_NOFUNC) ; SIGNAL ERROR RET ; ; SET BOOT INFORMATION @@ -4725,9 +4718,7 @@ SYS_INT: JR Z,SYS_INTGET CP BF_SYSINT_SET JR Z,SYS_INTSET - CALL SYSCHK - LD A,ERR_NOFUNC ; SIGNAL ERROR - OR A ; SET FLAGS + SYSCHKERR(ERR_NOFUNC) ; SIGNAL ERROR RET ; ; GET INTERRUPT SYSTEM INFORMATION @@ -4753,9 +4744,7 @@ SYS_INTINFO: ; SYS_INTVECADR: #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 #ENDIF #IF (INTMODE == 1) @@ -4769,9 +4758,7 @@ SYS_INTVECADR: LD A,E ; INCOMING INDEX POSITION TO A CP C ; COMPARE TO VECTOR COUNT 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 SYS_INTGET1: OR A ; CLEAR CARRY @@ -5252,15 +5239,11 @@ HB_DISPCALC: RET ; JUMP TO DRIVER FUNC ADR ON TOS ; HB_FUNCERR: - CALL SYSCHK - LD A,ERR_NOFUNC ; SIGNAL ERROR - OR A ; SET FLAGS + SYSCHKERR(ERR_NOFUNC) ; SIGNAL ERROR RET ; HB_UNITERR: - CALL SYSCHK - LD A,ERR_NOUNIT ; SIGNAL ERROR - OR A ; SET FLAGS + SYSCHKERR(ERR_NOUNIT) ; SIGNAL ERROR RET ; ; ADD AN ENTRY TO THE UNIT TABLE AT ADDRESS IN HL @@ -5347,9 +5330,7 @@ HB_ALLOC: HB_ALLOC1: ; ERROR RETURN POP DE ; RESTORE INCOMING DE - CALL SYSCHK - LD A,ERR_NOMEM ; SIGNAL ERROR - OR A ; SET FLAGS + SYSCHKERR(ERR_NOMEM) ; SIGNAL ERROR RET ; HB_TMPSZ .DW 0 @@ -6337,12 +6318,12 @@ HB_RDSEC: ; ; SYSTEM CHECK: DUMP MACHINE STATE AND CONTINUE? ; -SYSCHK: +SYSCHKA: ; CHECK DIAG LEVEL TO SEE IF WE SHOULD DISPLAY PUSH AF ; PRESERVE INCOMING AF VALUE LD A,(CB_DIAGLVL) ; GET DIAGNOSTIC 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 ; ; DISPLAY SYSCHK MESSAGE @@ -6351,6 +6332,17 @@ SYSCHK: CALL WRITESTR ; PRINT IT POP DE ; RESTORE DE VALUE 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 ; SYSCHK1: diff --git a/Source/HBIOS/md.asm b/Source/HBIOS/md.asm index f96a782c..8277468e 100644 --- a/Source/HBIOS/md.asm +++ b/Source/HBIOS/md.asm @@ -157,9 +157,7 @@ MD_FNTBL: MD_VERIFY: MD_FORMAT: MD_DEFMED: - CALL SYSCHK ; INVALID SUB-FUNCTION - LD A,ERR_NOTIMPL - OR A + SYSCHKERR(ERR_NOTIMPL) ; INVALID SUB-FUNCTION RET ; ; @@ -182,9 +180,7 @@ MD_CAP: ; ASSUMES THAT UNIT 0 IS RAM, UNIT 1 IS ROM JR Z,MD_CAP0 ; UNIT 0 DEC A ; TRY UNIT 1 JR Z,MD_CAP1 ; UNIT 1 - CALL SYSCHK ; INVALID UNIT - LD A,ERR_NOUNIT - OR A + SYSCHKERR(ERR_NOUNIT) ; INVALID UNIT RET MD_CAP0: LD A,(HCB + HCB_RAMBANKS) ; POINT TO RAM BANK COUNT diff --git a/Source/HBIOS/ppide.asm b/Source/HBIOS/ppide.asm index 2b18f519..fd55cb1c 100644 --- a/Source/HBIOS/ppide.asm +++ b/Source/HBIOS/ppide.asm @@ -470,9 +470,7 @@ PPIDE_FNTBL: PPIDE_VERIFY: PPIDE_FORMAT: PPIDE_DEFMED: - CALL SYSCHK ; NOT IMPLEMENTED - LD A,ERR_NOTIMPL - OR A + SYSCHKERR(ERR_NOTIMPL) ; NOT IMPLEMENTED RET ; ; diff --git a/Source/HBIOS/sio.asm b/Source/HBIOS/sio.asm index f1de029c..4342d9f2 100644 --- a/Source/HBIOS/sio.asm +++ b/Source/HBIOS/sio.asm @@ -843,9 +843,7 @@ SIO_INITGO: LD L,SIO1_VEC ; ASSUME CHIP 1 DEC A ; CHIP 1? JR Z,SIO_INITIVT ; IF SO, DO IT - CALL SYSCHK ; IMPOSSIBLE SITUATION - LD A,ERR_NOUNIT - OR A + SYSCHKERR(ERR_NOUNIT) ; IMPOSSIBLE SITUATION RET SIO_INITIVT: LD A,L ; VALUE TO A