mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
@@ -132,7 +132,7 @@ AY_FND: LD IY, AY_IDAT ; SETUP FUNCTION TABLE
|
||||
LD A, TICKFREQ / 3 ; SCHEDULE IN 1/3 SECOND TO TURN OFF SOUND
|
||||
LD (AY_TIMTIK), A
|
||||
|
||||
LD HL, (VEC_TICK + 1) ; GET CUR SECONDS VECTOR
|
||||
LD HL, (VEC_TICK + 1) ; GET CUR TICKS VECTOR
|
||||
LD (AY_TIMHOOK), HL ; SAVE IT INTERNALLY
|
||||
LD HL, AY_TIMER ; INSTALL TIMER HOOK HANDLER
|
||||
LD (VEC_TICK + 1), HL
|
||||
|
||||
@@ -1,30 +1,29 @@
|
||||
|
||||
#IFNDEF CFG_STATE
|
||||
#DEFINE CFG_STATE
|
||||
|
||||
SYSTIMEN .EQU FALSE
|
||||
|
||||
#IF (CTCENABLE & (INTMODE == 2) & (CTCTIMER))
|
||||
SYSTIMEN .SET TRUE
|
||||
#ENDIF
|
||||
|
||||
#IF (TMSENABLE & (INTMODE == 1) & TMSTIMENABLE)
|
||||
SYSTIMEN .SET TRUE
|
||||
#ENDIF
|
||||
|
||||
#IF ((INTMODE == 1) & (PLATFORM == PLT_SBC) & HTIMENABLE)
|
||||
SYSTIMEN .SET TRUE
|
||||
#ENDIF
|
||||
|
||||
#IF ((INTMODE == 2) & (CPUFAM == CPU_Z180))
|
||||
SYSTIMEN .SET TRUE
|
||||
#ENDIF
|
||||
|
||||
.ECHO "TIMER INTERRUPT "
|
||||
#IF SYSTIMEN
|
||||
.ECHO "ACTIVE\n"
|
||||
#ELSE
|
||||
.ECHO "NOT ACTIVE\n"
|
||||
#ENDIF
|
||||
|
||||
#ENDIF
|
||||
#IFNDEF CFG_STATE
|
||||
#DEFINE CFG_STATE
|
||||
|
||||
SYSTIMEN .EQU FALSE
|
||||
|
||||
#IF (CTCENABLE & (INTMODE == 2) & (CTCTIMER))
|
||||
SYSTIMEN .SET TRUE
|
||||
#ENDIF
|
||||
|
||||
#IF (TMSENABLE & (INTMODE == 1) & TMSTIMENABLE)
|
||||
SYSTIMEN .SET TRUE
|
||||
#ENDIF
|
||||
|
||||
#IF ((INTMODE == 1) & (PLATFORM == PLT_SBC) & HTIMENABLE)
|
||||
SYSTIMEN .SET TRUE
|
||||
#ENDIF
|
||||
|
||||
#IF ((INTMODE == 2) & (CPUFAM == CPU_Z180))
|
||||
SYSTIMEN .SET TRUE
|
||||
#ENDIF
|
||||
|
||||
.ECHO "TIMER INTERRUPT "
|
||||
#IF SYSTIMEN
|
||||
.ECHO "ACTIVE\n"
|
||||
#ELSE
|
||||
.ECHO "NOT ACTIVE\n"
|
||||
#ENDIF
|
||||
|
||||
#ENDIF
|
||||
|
||||
@@ -104,8 +104,10 @@ SERIALCMDLOOP:
|
||||
JP Z,FILLMEM ; FILL MEMORY COMMAND
|
||||
CP 'H' ; IS IT A "H" (Y/N)
|
||||
JP Z,HELP ; HELP COMMAND
|
||||
CP 'S' ; IS IT A "H" (Y/N)
|
||||
JP Z,STOP ; STOP COMMAND
|
||||
CP 'X' ; IS IT A "X" (Y/N)
|
||||
JP Z,HALT ; HALT COMMAND
|
||||
JP Z,EXIT ; EXIT COMMAND
|
||||
LD HL,TXT_COMMAND ; POINT AT ERROR TEXT
|
||||
CALL PRTSTRH ; PRINT COMMAND LABEL
|
||||
|
||||
@@ -148,17 +150,34 @@ BOOT:
|
||||
CALL $FFFD ; DO IT (RST 08 NOT SAFE HERE)
|
||||
JP 0 ; JUMP TO RESTART ADDRESS
|
||||
#ELSE
|
||||
LD A,BID_BOOT ; BOOT BANK
|
||||
LD HL,0 ; ADDRESS ZERO
|
||||
CALL HB_BNKCALL ; DOES NOT RETURN
|
||||
;LD A,BID_BOOT ; BOOT BANK
|
||||
;LD HL,0 ; ADDRESS ZERO
|
||||
;CALL HB_BNKCALL ; DOES NOT RETURN
|
||||
LD B,BF_SYSRESET ; SYSTEM RESTART
|
||||
LD C,BF_SYSRES_COLD ; COLD START
|
||||
CALL $FFF0 ; CALL HBIOS
|
||||
#ENDIF
|
||||
;
|
||||
;__HALT_______________________________________________________________________
|
||||
;__EXIT_______________________________________________________________________
|
||||
;
|
||||
; PERFORM HALT ACTION
|
||||
; PERFORM EXIT ACTION
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
HALT:
|
||||
EXIT:
|
||||
#IF (BIOS == BIOS_UNA)
|
||||
JR BOOT
|
||||
#ELSE
|
||||
LD B,BF_SYSRESET ; SYSTEM RESTART
|
||||
LD C,BF_SYSRES_WARM ; WARM START
|
||||
CALL $FFF0 ; CALL HBIOS
|
||||
#ENDIF
|
||||
;
|
||||
;__STOP_______________________________________________________________________
|
||||
;
|
||||
; PERFORM STOP ACTION (HALT SYSTEM)
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
STOP:
|
||||
DI
|
||||
HALT
|
||||
;
|
||||
@@ -924,7 +943,8 @@ TXT_HELP .TEXT "\r\nMonitor Commands (all values in hex):"
|
||||
.TEXT "\r\nO xx yy - Output to port xx value yy"
|
||||
.TEXT "\r\nP xxxx - Program RAM at xxxx"
|
||||
.TEXT "\r\nR xxxx - Run code at xxxx"
|
||||
.TEXT "\r\nX - Halt system"
|
||||
.TEXT "\r\nS - Stop system (HALT)"
|
||||
.TEXT "\r\nX - Exit monitor"
|
||||
.TEXT "$"
|
||||
;
|
||||
#IF DSKYENABLE
|
||||
|
||||
@@ -179,10 +179,15 @@ waitch
|
||||
LD B,BF_CIOIN ; HBIOS FUNC: INPUT CHAR
|
||||
RST 08 ; DO IT
|
||||
|
||||
; RETURN TO THE LOADER
|
||||
LD A,BID_BOOT ; BOOT BANK
|
||||
LD HL,0 ; ADDRESS ZERO
|
||||
CALL HB_BNKCALL ; DOES NOT RETURN
|
||||
;; RETURN TO THE LOADER
|
||||
;LD A,BID_BOOT ; BOOT BANK
|
||||
;LD HL,0 ; ADDRESS ZERO
|
||||
;CALL HB_BNKCALL ; DOES NOT RETURN
|
||||
|
||||
LD B,BF_SYSRESET ; SYSTEM RESTART
|
||||
LD C,BF_SYSRES_WARM ; WARM START
|
||||
CALL $FFF0 ; CALL HBIOS
|
||||
|
||||
HALT
|
||||
#ENDIF
|
||||
#IF (BIOS == BIOS_UNA)
|
||||
|
||||
@@ -300,9 +300,14 @@ EXIT:
|
||||
; CALL BDOS
|
||||
CALL PRTSTRDE
|
||||
|
||||
LD A,00H
|
||||
LD HL,0000H
|
||||
JP 0FFF9H
|
||||
;LD A,00H
|
||||
;LD HL,0000H
|
||||
;JP 0FFF9H
|
||||
|
||||
LD B,0F0H
|
||||
LD C,01H
|
||||
CALL 0FFF0H
|
||||
|
||||
; RET
|
||||
|
||||
ISOVER:
|
||||
|
||||
@@ -2325,16 +2325,50 @@ SYS_DISPATCH:
|
||||
JP Z,SYS_POKE ; $FB
|
||||
DEC A
|
||||
JP Z,SYS_INT ; $FC
|
||||
CALL PANIC ; INVALID
|
||||
DEC A
|
||||
;
|
||||
; RESTART SYSTEM
|
||||
; SUBFUNCTION IN C
|
||||
;
|
||||
SYS_RESET:
|
||||
LD A,C ; GET REQUESTED SUB-FUNCTION
|
||||
CP BF_SYSRES_INT
|
||||
JR Z,SYS_RESINT
|
||||
CP BF_SYSRES_WARM
|
||||
JR Z,SYS_RESWARM
|
||||
CP BF_SYSRES_COLD
|
||||
JR Z,SYS_RESCOLD
|
||||
OR $FF ; SIGNAL ERROR
|
||||
RET
|
||||
;
|
||||
; SOFT RESET HBIOS, RELEASE HEAP MEMORY NOT USED BY HBIOS
|
||||
;
|
||||
SYS_RESET:
|
||||
SYS_RESINT:
|
||||
LD HL,(HEAPCURB) ; GET HBIOS HEAP THRESHOLD
|
||||
LD (CB_HEAPTOP),HL ; RESTORE HEAP TOP
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
; GO BACK TO ROM BOOT LOADER
|
||||
;
|
||||
SYS_RESWARM:
|
||||
CALL SYS_RESINT
|
||||
; PERFORM BANK CALL TO OS IMAGES BANK IN ROM
|
||||
LD SP,HBX_LOC ; STACK JUST BELOW HBIOS PROXY
|
||||
LD A,BID_IMG0 ; CHAIN TO OS IMAGES BANK
|
||||
LD HL,0 ; ENTER AT ADDRESS 0
|
||||
CALL HBX_BNKCALL ; GO THERE
|
||||
HALT ; WE SHOULD NEVER COME BACK!
|
||||
;
|
||||
; RESTART SYSTEM AS THOUGH POWER HAD JUST BEEN TURNED ON
|
||||
;
|
||||
SYS_RESCOLD:
|
||||
DI
|
||||
LD SP,HBX_LOC ; STACK JUST BELOW HBIOS PROXY
|
||||
LD A,BID_BOOT ; BOOT BANK
|
||||
LD HL,0 ; ADDRESS ZERO
|
||||
CALL HB_BNKCALL ; DOES NOT RETURN
|
||||
;
|
||||
; GET THE CURRENT HBIOS VERSION
|
||||
; ON INPUT, C=0
|
||||
; RETURNS VERSION IN DE AS BCD
|
||||
|
||||
@@ -90,6 +90,10 @@ BF_SYSPEEK .EQU BF_SYS + 10 ; GET A BYTE VALUE FROM ALT BANK
|
||||
BF_SYSPOKE .EQU BF_SYS + 11 ; SET A BYTE VALUE IN ALT BANK
|
||||
BF_SYSINT .EQU BF_SYS + 12 ; MANAGE INTERRUPT VECTORS
|
||||
;
|
||||
BF_SYSRES_INT .EQU $00 ; RESET HBIOS INTERNAL
|
||||
BF_SYSRES_WARM .EQU $01 ; WARM START (RESTART BOOT LOADER)
|
||||
BF_SYSRES_COLD .EQU $02 ; COLD START
|
||||
;
|
||||
BF_SYSGET_CIOCNT .EQU $00 ; GET CHAR UNIT COUNT
|
||||
BF_SYSGET_DIOCNT .EQU $10 ; GET DISK UNIT COUNT
|
||||
BF_SYSGET_RTCCNT .EQU $20 ; GET RTC UNIT COUNT
|
||||
|
||||
@@ -4715,9 +4715,13 @@ MONOUT:
|
||||
POP AF
|
||||
RET
|
||||
|
||||
MONITR: LD A,BID_BOOT ; BOOT BANK
|
||||
LD HL,0 ; ADDRESS ZERO
|
||||
CALL HB_BNKCALL ; DOES NOT RETURN
|
||||
MONITR: ;LD A,BID_BOOT ; BOOT BANK
|
||||
;LD HL,0 ; ADDRESS ZERO
|
||||
;CALL HB_BNKCALL ; DOES NOT RETURN
|
||||
|
||||
LD B,BF_SYSRESET ; SYSTEM RESTART
|
||||
LD C,BF_SYSRES_WARM ; WARM START
|
||||
CALL $FFF0 ; CALL HBIOS
|
||||
|
||||
INITST: LD A,0 ; Clear break flag
|
||||
LD (BRKFLG),A
|
||||
|
||||
@@ -1250,9 +1250,12 @@ st4:
|
||||
#ifndef ZEMU
|
||||
bye:
|
||||
call endchk ; ** Reboot **
|
||||
LD A,BID_BOOT ; BOOT BANK
|
||||
LD HL,0 ; ADDRESS ZERO
|
||||
CALL HB_BNKCALL ; DOES NOT RETURN
|
||||
;LD A,BID_BOOT ; BOOT BANK
|
||||
;LD HL,0 ; ADDRESS ZERO
|
||||
;CALL HB_BNKCALL ; DOES NOT RETURN
|
||||
LD B,BF_SYSRESET ; SYSTEM RESTART
|
||||
LD C,BF_SYSRES_WARM ; WARM START
|
||||
CALL $FFF0 ; CALL HBIOS
|
||||
HALT
|
||||
#endif
|
||||
new:
|
||||
|
||||
@@ -13,9 +13,12 @@ LF .EQU 0AH
|
||||
|
||||
CALL CIN ; DO STUFF
|
||||
;
|
||||
LD A,00H ; RETURN TO ROM LOADER
|
||||
LD HL,0000H
|
||||
JP 0FFF9H
|
||||
;LD A,00H ; RETURN TO ROM LOADER
|
||||
;LD HL,0000H
|
||||
;JP 0FFF9H
|
||||
LD B,BF_SYSRESET ; SYSTEM RESTART
|
||||
LD C,BF_SYSRES_WARM ; WARM START
|
||||
CALL $FFF0 ; CALL HBIOS
|
||||
; RET
|
||||
;
|
||||
;
|
||||
|
||||
Reference in New Issue
Block a user