Browse Source

Merge pull request #306 from b1ackmai1er/dev

SYSCHK changes
pull/331/head
Wayne Warthen 3 years ago
committed by GitHub
parent
commit
069aa2b5be
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 32
      Source/Doc/Architecture.md
  2. 8
      Source/HBIOS/bqrtc.asm
  3. 1
      Source/HBIOS/cfg_dyno.asm
  4. 1
      Source/HBIOS/cfg_ezz80.asm
  5. 1
      Source/HBIOS/cfg_master.asm
  6. 1
      Source/HBIOS/cfg_mbc.asm
  7. 1
      Source/HBIOS/cfg_mk4.asm
  8. 1
      Source/HBIOS/cfg_n8.asm
  9. 1
      Source/HBIOS/cfg_rcz180.asm
  10. 1
      Source/HBIOS/cfg_rcz280.asm
  11. 1
      Source/HBIOS/cfg_rcz80.asm
  12. 1
      Source/HBIOS/cfg_rph.asm
  13. 1
      Source/HBIOS/cfg_sbc.asm
  14. 1
      Source/HBIOS/cfg_scz180.asm
  15. 2
      Source/HBIOS/cfg_una.asm
  16. 1
      Source/HBIOS/cfg_zeta.asm
  17. 1
      Source/HBIOS/cfg_zeta2.asm
  18. 4
      Source/HBIOS/cvdu.asm
  19. 8
      Source/HBIOS/ds7rtc.asm
  20. 8
      Source/HBIOS/dsrtc.asm
  21. 8
      Source/HBIOS/fd.asm
  22. 4
      Source/HBIOS/gdc.asm
  23. 102
      Source/HBIOS/hbios.asm
  24. 105
      Source/HBIOS/hbios.inc
  25. 4
      Source/HBIOS/hdsk.asm
  26. 4
      Source/HBIOS/ide.asm
  27. 10
      Source/HBIOS/intrtc.asm
  28. 8
      Source/HBIOS/md.asm
  29. 4
      Source/HBIOS/ppide.asm
  30. 8
      Source/HBIOS/ppp.asm
  31. 8
      Source/HBIOS/prp.asm
  32. 4
      Source/HBIOS/rf.asm
  33. 8
      Source/HBIOS/rp5rtc.asm
  34. 8
      Source/HBIOS/sd.asm
  35. 8
      Source/HBIOS/simrtc.asm
  36. 4
      Source/HBIOS/sio.asm
  37. 5
      Source/HBIOS/std.asm
  38. 4
      Source/HBIOS/tms.asm
  39. 4
      Source/HBIOS/vga.asm

32
Source/Doc/Architecture.md

@ -2168,7 +2168,7 @@ IM1, the size of the table is the number of vectors chained together.
For IM2, the size of the table is the number of slots in the vector
table.
#### SYSINT Subfunction 0x10) -- Get Interrupt (INTGET)
#### SYSINT Subfunction 0x10 -- Get Interrupt (INTGET)
| _Entry Parameters_
| BC: 0xFC10
@ -2182,7 +2182,7 @@ On entry, register E must contain an index into the interrupt vector
table. On return, HL will contain the address of the current interrupt
vector at the specified index.
#### SYSINT Subfunction 0x20) -- Set Interrupt (INTSET)
#### SYSINT Subfunction 0x20 -- Set Interrupt (INTSET)
| _Entry Parameters_
| BC: 0xFC20
@ -2236,6 +2236,7 @@ Possible reasons a PANIC may occur are:
- RAM Bank range error when attempting a read or write to a RAM disk.
- Sector read function has not been setup but a read was attempted.
- An interrupt vector has not been set up when an interrupt was received.
- There was an attempt to add more devices than the device table had room for.
- An illegal SD card command was encountered.
@ -2244,21 +2245,30 @@ which section of the software or hardware caused the fault.
### SYSCHK
A syschk error is reported when an internal error is detected. The key differance
to the PANIC error is that execution may be continued. In which case an error
code is returned to the calling routine. The error code is not displayed at the console.
A syschk error is identified when an internal error is detected. When this
occurs an error code is returned to the calling program in the A register.
A non-zero result indicates an error.
Syschk errors may be reported to the console. Whether this occurs depends on
the value of the diagnosis level equate DIAGLVL. By default syschk errors
are not reported to the console.
If the diagnosis level is set to display the diagnosis information, then
memory address, register dump and error code is displayed.
A key differance with the PANIC error is that execution may be continued.
Example error message:
\>>> SYSCHK: @06C4[DFA3:DFC3:0100:F103:04FC:0000:2B5E] Continue (Y/N)
\>>> SYSCHK: @06C4[DFA3:DFC3:0100:F103:04FC:0000:2B5E] FD
Continue (Y/N)
The format of the information provided is the same as with the PANIC report.
The format of the information provided is similar the PANIC report.
@XXXX [-AF-:-BC-:-DE-:-HL-:-SP-:-IX-:-IY-]
@XXXX [-AF-:-BC-:-DE-:-HL-:-SP-:-IX-:-IY-] YY
Syschk error codes are returned in the A register.
The syschk error codes YY is returned in the A register.
| Error | Code |
| Error | Code YY |
| ----------------------------------- | -------- |
| Success | 0x00 |
| Undefined Error | 0xFF |
@ -2305,7 +2315,7 @@ ROMWBW can be configured to display boot progress with the assistance of additio
hardware. This take the form of an LED breakout debugging board connected to an
8-bit output port. As the boot code executes, the LED output display is updated.
To us an LED breakout board, it must be connected the computers data, reset and port
To use a LED breakout board, it must be connected the computers data, reset and port
select lines.
To enable the DIAG option the following settings must be made in the systems .ini

8
Source/HBIOS/bqrtc.asm

@ -161,9 +161,7 @@ BQRTC_DISPATCH:
JP Z, BQRTC_SETALM ; Set Alarm
DEC A
JP Z, BQRTC_DEVICE ; Report RTC device info
CALL SYSCHK
LD A,ERR_NOFUNC
OR A
SYSCHKERR(ERR_NOFUNC)
RET
;
@ -173,9 +171,7 @@ BQRTC_GETBYT:
BQRTC_SETBYT:
BQRTC_GETBLK:
BQRTC_SETBLK:
CALL SYSCHK
LD A,ERR_NOTIMPL
OR A
SYSCHKERR(ERR_NOTIMPL)
RET
; RTC Get Time

1
Source/HBIOS/cfg_dyno.asm

@ -66,6 +66,7 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|RTC]

1
Source/HBIOS/cfg_ezz80.asm

@ -67,6 +67,7 @@ WDOGIO .EQU $6F ; WATCHDOG REGISTER ADR
DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|RTC]

1
Source/HBIOS/cfg_master.asm

@ -98,6 +98,7 @@ WDOGIO .EQU $6F ; WATCHDOG REGISTER ADR
DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|RTC]

1
Source/HBIOS/cfg_mbc.asm

@ -63,6 +63,7 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
;
LEDENABLE .EQU TRUE ; ENABLES STATUS LED
LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC]

1
Source/HBIOS/cfg_mk4.asm

@ -69,6 +69,7 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|RTC]

1
Source/HBIOS/cfg_n8.asm

@ -71,6 +71,7 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED
LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC]

1
Source/HBIOS/cfg_rcz180.asm

@ -69,6 +69,7 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
DIAGENABLE .EQU TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|RTC]

1
Source/HBIOS/cfg_rcz280.asm

@ -74,6 +74,7 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
DIAGENABLE .EQU TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|RTC]

1
Source/HBIOS/cfg_rcz80.asm

@ -68,6 +68,7 @@ WDOGIO .EQU $6E ; WATCHDOG REGISTER ADR
DIAGENABLE .EQU TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|RTC]

1
Source/HBIOS/cfg_rph.asm

@ -69,6 +69,7 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED
LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC]

1
Source/HBIOS/cfg_sbc.asm

@ -63,6 +63,7 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED
LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC]

1
Source/HBIOS/cfg_scz180.asm

@ -64,6 +64,7 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
DIAGENABLE .EQU TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .EQU $0D ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|RTC]

2
Source/HBIOS/cfg_una.asm

@ -32,3 +32,5 @@ ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
RTCIO .EQU $70 ; RTC LATCH REGISTER ADR
;
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING

1
Source/HBIOS/cfg_zeta.asm

@ -55,6 +55,7 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED
LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC]

1
Source/HBIOS/cfg_zeta2.asm

@ -66,6 +66,7 @@ WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED
LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC]

4
Source/HBIOS/cvdu.asm

@ -171,9 +171,7 @@ CVDU_VDADEV:
RET
CVDU_VDASCS:
CALL SYSCHK ; NOT IMPLEMENTED (YET)
LD A,ERR_NOTIMPL
OR A
SYSCHKERR(ERR_NOTIMPL) ; NOT IMPLEMENTED (YET)
RET
CVDU_VDASCP:

8
Source/HBIOS/ds7rtc.asm

@ -100,9 +100,7 @@ DS7_DISPATCH:
JP Z, DS7_SETALM ; SET ALARM
DEC A
JP Z, DS7_DEVICE ; REPORT RTC DEVICE INFO
CALL SYSCHK
LD A,ERR_NOFUNC
OR A
SYSCHKERR(ERR_NOFUNC)
RET
;
;-----------------------------------------------------------------------------
@ -269,9 +267,7 @@ DS7_GETBLK:
DS7_SETBLK:
DS7_SETALM
DS7_GETALM
CALL SYSCHK
LD A,ERR_NOTIMPL
OR A
SYSCHKERR(ERR_NOTIMPL)
RET
;-----------------------------------------------------------------------------
; REPORT RTC DEVICE INFO

8
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

8
Source/HBIOS/fd.asm

@ -490,9 +490,7 @@ FD_FNTBL:
FD_VERIFY:
FD_FORMAT:
FD_DEFMED:
CALL SYSCHK ; INVALID SUB-FUNCTION
LD A,ERR_NOTIMPL
OR A
SYSCHKERR(ERR_NOTIMPL) ; INVALID SUB-FUNCTION
RET
;
;
@ -1149,9 +1147,7 @@ FD_RUN1:
JR Z,FC_WRITE
CP DOP_READID
JR Z,FC_READID
CALL SYSCHK
LD A,ERR_NOFUNC
OR A
SYSCHKERR(ERR_NOFUNC)
RET
FD_RUNCHK:

4
Source/HBIOS/gdc.asm

@ -157,9 +157,7 @@ GDC_VDADEV: ; VIDEO DEVICE INFORMATION
RET
;
GDC_VDASCS: ; SET CURSOR STYLE
CALL SYSCHK ; NOT IMPLEMENTED (YET)
LD A,ERR_NOTIMPL
OR A
SYSCHKERR(ERR_NOTIMPL)
RET
GDC_VDASCP: ; SET CURSOR POSITION

102
Source/HBIOS/hbios.asm

@ -53,6 +53,8 @@
; - build.inc
; - config/<plt>_<cfg>.asm
; - cfg_<plt>.asm
; - [z180.inc|z280.inc]
; - [eipc.inc]
; - <drivers>.asm
; - <fonts>.asm
; - util.asm
@ -61,7 +63,7 @@
; - decode.asm
; - encode.asm
; - [xio|mio].asm
; - dsky.asm
; - [dsky.asm|dskyng.asm]
; - unlzsa2s.asm
;
; INCLUDE GENERIC STUFF
@ -132,6 +134,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)
@ -1094,14 +1101,14 @@ HB_START:
;
#IFDEF APPBOOT
#IF (MEMMGR == MM_Z280)
LD A,%00000001
LD A,DIAG_01
OUT (DIAGPORT),A
LD DE,Z280_BOOTERR
LD C,9
LD A,%00000010
LD A,DIAG_02
OUT (DIAGPORT),A
CALL $0005
LD A,%00001000
LD A,DIAG_04
OUT (DIAGPORT),A
RET
;
@ -1130,7 +1137,7 @@ Z280_BOOTERR .TEXT "\r\n\r\n*** Application mode boot not supported under Z280 n
#ENDIF
;
#IF (DIAGENABLE)
LD A,%00000001
LD A,DIAG_01
OUT (DIAGPORT),A
#ENDIF
#IF (LEDENABLE)
@ -1240,7 +1247,7 @@ Z280_INITZ:
LD A,Z180_BASE
OUT0 ($3F),A ; AT RESET, ICR IS AT $3F
DIAG(%00000010)
DIAG(DIAG_02)
; DISABLE REFRESH
XOR A
@ -1335,7 +1342,7 @@ Z280_INITZ:
; IS PERFORMED NEXT.
;
#IF (DIAGENABLE)
LD A,%00000011
LD A,DIAG_02
OUT (DIAGPORT),A
#ENDIF
;
@ -1663,7 +1670,7 @@ HB_START1: ; BNKCALL ARRIVES HERE, BUT NOW RUNNING IN RAM BANK
LD SP,HBX_LOC - 2 ; RESET STACK
;
; NOTIFY THAT WE MADE THE TRANSITION!
DIAG(%00000111)
DIAG(DIAG_03)
LED(%00000010)
;
; SET THE IN-RAM FLAG
@ -1790,7 +1797,7 @@ SAVE_REC_M:
#ENDIF
#ENDIF
;
DIAG(%00001111)
DIAG(DIAG_04)
;
#IF (WBWDEBUG == USEMIO) ; BUFFER OUTPUT UNTIL
CALL MIO_INIT ; WE GET TO BOOT MESSAGE
@ -1879,7 +1886,7 @@ HB_CPU1:
;
#ENDIF
;
DIAG(%00011111)
DIAG(DIAG_05)
;
; INIT OSCILLATOR SPEED FROM CONFIG
;
@ -2171,7 +2178,7 @@ Z280_TC .EQU CPUOSC / 4 / 50 / 2 ; TIME CONSTANT
LD A,$FF ; FILL WITH $FF
CALL FILL ; DO IT
;
DIAG(%00111111)
DIAG(DIAG_06)
;
#IF FALSE
;
@ -2227,7 +2234,7 @@ NOT_REC_M0:
;
#ENDIF
;
DIAG(%01111111)
DIAG(DIAG_07)
LED(%00000011)
;
;
@ -2315,7 +2322,7 @@ NXTMIO: LD A,(HL)
#ENDIF
NOT_REC_M2:
;
DIAG(%11111111)
DIAG(DIAG_08)
;
; IO PORT SCAN
;
@ -3128,7 +3135,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 +3163,7 @@ HB_DISPATCH1:
; FALL THRU
;
HB_DISPERR:
CALL SYSCHK
LD A,ERR_NOFUNC
OR A
SYSCHKERR(ERR_NOFUNC)
RET
;
;==================================================================================================
@ -3499,7 +3504,7 @@ HB_DSKFN:
HB_DSKFNADR .EQU $+1
CALL PANIC ; READ ONE SECTOR
#IF (DIAGENABLE & DIAGDISKIO)
DIAG(0) ; CLEAR DIAG LEDS
DIAG(DIAG_00) ; CLEAR DIAG LEDS
#ENDIF
#IF (LEDENABLE & LEDDISKIO)
LED($00)
@ -3620,9 +3625,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 +3823,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 +4027,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 +4067,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 +4154,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 +4359,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 +4720,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 +4746,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 +4760,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 +5241,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 +5332,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,7 +6320,7 @@ 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
@ -6351,6 +6334,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:
@ -6891,7 +6885,7 @@ PS_PRTDEV:
CALL PS_PAD ; PAD N SPACES (SPECIFIED IN A)
RET
;
; PRINT DEVICE NMEMONIC, DEVTYP/NUM SPECIFIED IN DE
; PRINT DEVICE MNEMONIC, DEVTYP/NUM SPECIFIED IN DE
;
PS_PRTNUL:
LD HL,PS_STRNUL

105
Source/HBIOS/hbios.inc

@ -156,6 +156,111 @@ ERR_TIMEOUT .EQU -11 ; DEVICE TIMEOUT
ERR_BADCFG .EQU -12 ; INVALID CONFIGURATION
ERR_INTERNAL .EQU -13 ; INTERNAL ERROR
;
; HBIOS DIAG OPTIONS
;
DIAG_PROG .EQU 0 ; PROGRESS BAR
DIAG_STEP .EQU 1 ; STEP BAR
DIAG_ASCII .EQU 2 ; 8-BIT ASCII 30H - 39H
DIAG_BINARY .EQU 3 ; BINARY 00H - 09H
DIAG_7SEG .EQU 4 ; 7-SEGMENT
DIAG_FLASH .EQU 5 ; FLASH
DIAG_TRIG .EQU 6 ; TRIGGER
;
DIAG_DISP .EQU DIAG_PROG ; DEFAULT
;
#IF (DIAG_DISP == DIAG_PROG)
DIAG_00 .EQU 00000000B
DIAG_01 .EQU 00000001B
DIAG_02 .EQU 00000011B
DIAG_03 .EQU 00000111B
DIAG_04 .EQU 00001111B
DIAG_05 .EQU 00011111B
DIAG_06 .EQU 00111111B
DIAG_07 .EQU 01111111B
DIAG_08 .EQU 11111111B
DIAG_09 .EQU 11111111B
#ENDIF
;
#IF (DIAG_DISP == DIAG_STEP)
DIAG_00 .EQU 00000000B
DIAG_01 .EQU 00000001B
DIAG_02 .EQU 00000010B
DIAG_03 .EQU 00000100B
DIAG_04 .EQU 00001000B
DIAG_05 .EQU 00010000B
DIAG_06 .EQU 00100000B
DIAG_07 .EQU 01000000B
DIAG_08 .EQU 10000000B
DIAG_09 .EQU 11111111B
#ENDIF
;
#IF (DIAG_DISP == DIAG_ASCII)
DIAG_00 .EQU '0'
DIAG_01 .EQU '1'
DIAG_02 .EQU '2'
DIAG_03 .EQU '3'
DIAG_04 .EQU '4'
DIAG_05 .EQU '5'
DIAG_06 .EQU '6'
DIAG_07 .EQU '7'
DIAG_08 .EQU '8'
DIAG_09 .EQU '9'
#ENDIF
;
#IF (DIAG_DISP == DIAG_BINARY)
DIAG_00 .EQU 0
DIAG_01 .EQU 1
DIAG_02 .EQU 2
DIAG_03 .EQU 3
DIAG_04 .EQU 4
DIAG_05 .EQU 5
DIAG_06 .EQU 6
DIAG_07 .EQU 7
DIAG_08 .EQU 8
DIAG_09 .EQU 9
#ENDIF
;
#IF (DIAG_DISP == DIAG_7SEG)
; abcdefg
DIAG_00 .EQU 00000000B ; BLANK
DIAG_01 .EQU 01111110B ; 0
DIAG_02 .EQU 00110000B ; 1
DIAG_03 .EQU 01101101B ; 2
DIAG_04 .EQU 01111001B ; 3
DIAG_05 .EQU 00110011B ; 4
DIAG_06 .EQU 01011011B ; 5
DIAG_07 .EQU 00011111B ; 6
DIAG_08 .EQU 01110000B ; 7
DIAG_09 .EQU 01111111B ; 8
DIAG_10 .EQU 01110011B ; 9
#ENDIF
;
#IF (DIAG_DISP == DIAG_FLASH)
DIAG_00 .EQU 00000000B ; OFF
DIAG_01 .EQU 11111111B ; ON
DIAG_02 .EQU 00000000B ; OFF
DIAG_03 .EQU 11111111B ; ON
DIAG_04 .EQU 00000000B ; OFF
DIAG_05 .EQU 11111111B ; ON
DIAG_06 .EQU 00000000B ; OFF
DIAG_07 .EQU 11111111B ; ON
DIAG_08 .EQU 00000000B ; OFF
DIAG_09 .EQU 11111111B ; ON
#ENDIF
;
#IF (DIAG_DISP == DIAG_TRIG)
DIAG_00 .EQU 11111111B ; ON
DIAG_01 .EQU 11111111B ; ON
DIAG_02 .EQU 11111111B ; ON
DIAG_03 .EQU 11111111B ; ON
DIAG_04 .EQU 11111111B ; ON
DIAG_05 .EQU 11111111B ; ON
DIAG_06 .EQU 11111111B ; ON
DIAG_07 .EQU 11111111B ; ON
DIAG_08 .EQU 11111111B ; ON
DIAG_09 .EQU 11111111B ; ON
#ENDIF
;
; MEDIA ID VALUES
;
MID_NONE .EQU 0

4
Source/HBIOS/hdsk.asm

@ -121,9 +121,7 @@ HDSK_FNTBL:
HDSK_VERIFY:
HDSK_FORMAT:
HDSK_DEFMED:
CALL SYSCHK ; INVALID SUB-FUNCTION
LD A,ERR_NOTIMPL
OR A
SYSCHKERR(ERR_NOTIMPL) ; INVALID SUB-FUNCTION
RET
;
;

4
Source/HBIOS/ide.asm

@ -461,9 +461,7 @@ IDE_FNTBL:
IDE_VERIFY:
IDE_FORMAT:
IDE_DEFMED:
CALL SYSCHK ; NOT IMPLEMENTED
LD A,ERR_NOTIMPL
OR A
SYSCHKERR(ERR_NOTIMPL) ; NOT IMPLEMENTED
RET
;
;

10
Source/HBIOS/intrtc.asm

@ -56,9 +56,7 @@ INTRTC_DISPATCH:
JP Z,INTRTC_SETALM ; SET ALARM
DEC A
JP Z,INTRTC_DEVICE ; REPORT RTC DEVICE INFO
CALL SYSCHK
LD A,ERR_NOFUNC
OR A
SYSCHKERR(ERR_NOFUNC)
RET
;
; NVRAM FUNCTIONS ARE NOT AVAILABLE IN SIMULATOR
@ -69,9 +67,7 @@ INTRTC_GETBLK:
INTRTC_SETBLK:
INTRTC_GETALM:
INTRTC_SETALM:
CALL SYSCHK
LD A,ERR_NOTIMPL
OR A
SYSCHKERR(ERR_NOTIMPL)
RET
;
; RTC GET TIME
@ -205,7 +201,7 @@ INTRTC_INT2:
JR NZ,INTRTC_INTX ; NOPE, DONE
LD (HL),0 ; BACK TO YEAR ZERO
INTRTC_INTX:
JP SYSCHK
JP PANIC
INTRTC_VEC .EQU $-2
;
; CONVERT FROM BINARY BUF (HL) TO BCD BUF (DE)

8
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

4
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
;
;

8
Source/HBIOS/ppp.asm

@ -338,9 +338,7 @@ PPPCON_OST:
;
;
PPPCON_INITDEV:
CALL SYSCHK
LD A,ERR_NOTIMPL
OR A
SYSCHKERR(ERR_NOTIMPL)
RET
;
;
@ -504,9 +502,7 @@ PPPSD_FNTBL:
PPPSD_VERIFY:
PPPSD_FORMAT:
PPPSD_DEFMED:
CALL SYSCHK ; INVALID SUB-FUNCTION
LD A,ERR_NOTIMPL
OR A
SYSCHKERR(ERR_NOTIMPL) ; INVALID SUB-FUNCTION
RET
;
;

8
Source/HBIOS/prp.asm

@ -211,9 +211,7 @@ PRPCON_OST1:
;
;
PRPCON_INITDEV:
CALL SYSCHK
LD A,ERR_NOTIMPL
OR A
SYSCHKERR(ERR_NOTIMPL)
RET
;
;
@ -401,9 +399,7 @@ PRPSD_FNTBL:
PRPSD_VERIFY:
PRPSD_FORMAT:
PRPSD_DEFMED:
CALL SYSCHK ; INVALID SUB-FUNCTION
LD A,ERR_NOTIMPL
OR A
SYSCHKERR(ERR_NOTIMPL) ; INVALID SUB-FUNCTION
RET
;
;

4
Source/HBIOS/rf.asm

@ -138,9 +138,7 @@ RF_FNTBL:
RF_VERIFY:
RF_FORMAT:
RF_DEFMED:
CALL SYSCHK ; INVALID SUB-FUNCTION
LD A,ERR_NOTIMPL
OR A
SYSCHKERR(ERR_NOTIMPL) ; INVALID SUB-FUNCTION
RET
;
;

8
Source/HBIOS/rp5rtc.asm

@ -159,9 +159,7 @@ RP5RTC_DISPATCH:
JP Z,RP5RTC_SETALM ; SET ALARM
DEC A
JP Z,RP5RTC_DEVICE ; REPORT RTC DEVICE INFO
CALL SYSCHK
LD A, ERR_NOFUNC
OR A
SYSCHKERR(ERR_NOFUNC)
RET
;
; RTC GET NVRAM BYTE
@ -240,9 +238,7 @@ RP5RTC_GETBLK:
RP5RTC_SETBLK:
RP5RTC_GETALM:
RP5RTC_SETALM:
LD A, ERR_NOTIMPL
CALL SYSCHK
OR A
SYSCHKERR(ERR_NOTIMPL)
RET
;
; RTC GET TIME

8
Source/HBIOS/sd.asm

@ -710,9 +710,7 @@ SD_FNTBL:
SD_VERIFY:
SD_FORMAT:
SD_DEFMED:
CALL SYSCHK ; INVALID SUB-FUNCTION
LD A,ERR_NOTIMPL
OR A
SYSCHKERR(ERR_NOTIMPL) ; INVALID SUB-FUNCTION
RET
;
;
@ -1131,7 +1129,9 @@ SD_INITCARD5:
JR SD_INITCARD6 ; HANDLE MMC OR SDSC
;
SD_INITCARD5A:
CALL SYSCHK
PUSH AF
SYSCHKERR(ERR_NOMEDIA)
POP AF
JP SD_NOMEDIA
;
; CAPACITY CALCULATION FOR MMC OR SDSC (V1) CARDS:

8
Source/HBIOS/simrtc.asm

@ -55,9 +55,7 @@ SIMRTC_DISPATCH:
JP Z,SIMRTC_SETALM ; SET ALARM
DEC A
JP Z,SIMRTC_DEVICE ; REPORT RTC DEVICE INFO
CALL SYSCHK
LD A,ERR_NOFUNC
OR A
SYSCHKERR(ERR_NOFUNC)
RET
;
; NVRAM FUNCTIONS ARE NOT AVAILABLE IN SIMULATOR
@ -68,9 +66,7 @@ SIMRTC_GETBLK:
SIMRTC_SETBLK:
SIMRTC_GETALM:
SIMRTC_SETALM:
CALL SYSCHK
LD A,ERR_NOTIMPL
OR A
SYSCHKERR(ERR_NOTIMPL)
RET
;
; RTC GET TIME

4
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

5
Source/HBIOS/std.asm

@ -56,11 +56,6 @@ BIOS_NONE .EQU 0 ; NO BIOS TYPE DEFINED
BIOS_WBW .EQU 1 ; ROMWBW HBIOS
BIOS_UNA .EQU 2 ; UNA UBIOS
;
; DEFAULT HBIOS DIAGNOSTIC LEVEL
; WILL ULTIMATELY BE MOVED TO CONFIG FILE
;
DIAGLVL .EQU DL_CRITICAL
;
; MEMORY MANAGERS
;
MM_NONE .EQU 0

4
Source/HBIOS/tms.asm

@ -298,9 +298,7 @@ TMS_VDADEV:
RET
TMS_VDASCS:
CALL SYSCHK ; NOT IMPLEMENTED (YET)
LD A,ERR_NOTIMPL
OR A
SYSCHKERR(ERR_NOTIMPL) ; NOT IMPLEMENTED (YET)
RET
TMS_VDASCP:

4
Source/HBIOS/vga.asm

@ -211,9 +211,7 @@ VGA_VDADEV:
RET
VGA_VDASCS:
CALL SYSCHK ; NOT IMPLEMENTED (YET)
LD A,ERR_NOTIMPL
OR A
SYSCHKERR(ERR_NOTIMPL) ; NOT IMPLEMENTED (YET)
RET
VGA_VDASCP:

Loading…
Cancel
Save