mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
Various Cleanup
This commit is contained in:
@@ -7,18 +7,20 @@
|
||||
;__REFERENCES_________________________________________________________________
|
||||
; THOMAS SCHERRER BASIC HAR.DWARE TEST ASSEMBLER SOURCES FROM THE Z80 INFO PAGE
|
||||
; INCLUDING ORIGINAL SCHEMATIC CONCEPT
|
||||
; HTTP://Z80 INFO/Z80SOURC.TXT
|
||||
; HTTP://Z80.INFO/Z80SOURC.TXT
|
||||
; CODE SAMPLES FROM BRUCE JONES PUBLIC DOMAIN ROM MONITOR FOR THE SBC-200C
|
||||
; HTTP://WWW RETROTECHNOLOGY.COM/HERBS_STUFF/SD_BRUCE_CODE.ZIP
|
||||
; HTTP://WWW.RETROTECHNOLOGY.COM/HERBS_STUFF/SD_BRUCE_CODE.ZIP
|
||||
; INSPIRATION FROM JOEL OWENS "Z-80 SPACE-TIME PRODUCTIONS SINGLE BOARD COMPUTER"
|
||||
; HTTP://WWW JOELOWENS.ORG/Z80/Z80INDEX.HTML
|
||||
; HTTP://WWW.JOELOWENS.ORG/Z80/Z80INDEX.HTML
|
||||
; GREAT HELP AND TECHNICAL ADVICE FROM ALLISON AT ALPACA_DESIGNERS
|
||||
; HTTP://GROUPS YAHOO.COM/GROUP/ALPACA_DESIGNERS
|
||||
; HTTP://GROUPS.YAHOO.COM/GROUP/ALPACA_DESIGNERS
|
||||
; INTEL SDK-85 ROM DEBUG MONITOR
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
#INCLUDE "std.asm"
|
||||
;
|
||||
BUFLEN .EQU 40 ; INPUT LINE LENGTH
|
||||
;
|
||||
;__MAIN_PROGRAM_______________________________________________________________
|
||||
;
|
||||
; ORG 00100h ; FOR DEBUG IN CP/M (AS .COM)
|
||||
@@ -43,7 +45,7 @@ UART_ENTRY:
|
||||
CALL INITIALIZE ; INITIALIZE SYSTEM
|
||||
|
||||
LD HL,TXT_READY ; POINT AT TEXT
|
||||
CALL PRTSTR ; SHOW WE'RE HERE
|
||||
CALL PRTSTRH ; SHOW WE'RE HERE
|
||||
;
|
||||
;__SERIAL_MONITOR_COMMANDS____________________________________________________
|
||||
;
|
||||
@@ -63,14 +65,16 @@ UART_ENTRY:
|
||||
; PROMPT USER FOR COMMANDS, THEN PARSE THEM
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
|
||||
SERIALCMDLOOP:
|
||||
LD SP,MON_STACK ; RESET STACK
|
||||
LD HL,PROMPT ;
|
||||
LD HL,TXT_PROMPT ;
|
||||
CALL PRTSTR ;
|
||||
LD HL,KEYBUF ; SET POINTER TO KEYBUF AREA
|
||||
CALL GETLN ; GET A LINE OF INPUT FROM THE USER
|
||||
LD HL,KEYBUF ; RESET POINTER TO START OF KEYBUF
|
||||
LD A,C ; GET LINE LENGTH ENTERED
|
||||
OR A ; ZERO?
|
||||
JR Z,SERIALCMDLOOP ; NOTHING ENTERED, LOOP
|
||||
LD A,(HL) ; LOAD FIRST CHAR INTO A (THIS SHOULD BE THE COMMAND)
|
||||
INC HL ; INC POINTER
|
||||
|
||||
@@ -97,7 +101,7 @@ SERIALCMDLOOP:
|
||||
CP 'H' ; IS IT A "H" (Y/N)
|
||||
JP Z,HELP ; HELP COMMAND
|
||||
LD HL,TXT_COMMAND ; POINT AT ERROR TEXT
|
||||
CALL PRTSTR ; PRINT COMMAND LABEL
|
||||
CALL PRTSTRH ; PRINT COMMAND LABEL
|
||||
|
||||
JR SERIALCMDLOOP
|
||||
;
|
||||
@@ -291,7 +295,7 @@ HXLOADEXIT:
|
||||
; SYNTAX: O <PORT> <VALUE>
|
||||
; NOTE: A WORD VALUE IS USED FOR THE PORT NUMBER BECAUSE THE
|
||||
; Z80 WILL ACTUALLY PLACE 16 BITS ON THE BUS USING
|
||||
; THE B AND C REGISTERS IN AN "OUT (C),A"
|
||||
; THE B AND C REGISTERS WITH AN "OUT (C),A" INSTRUCTION
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
POUT:
|
||||
@@ -310,7 +314,7 @@ POUT:
|
||||
; SYNTAX: I <PORT>
|
||||
; NOTE: A WORD VALUE IS USED FOR THE PORT NUMBER BECAUSE THE
|
||||
; Z80 WILL ACTUALLY PLACE 16 BITS ON THE BUS USING
|
||||
; THE B AND C REGISTERS IN AN "INC A,(C)"
|
||||
; THE B AND C REGISTERS WITH AN "IN A,(C)" INSTRUCTION
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
PIN:
|
||||
@@ -486,7 +490,7 @@ HELP:
|
||||
;
|
||||
ERR:
|
||||
LD HL,TXT_ERR ; POINT AT ERROR TEXT
|
||||
CALL PRTSTR ; DISPLAY IT
|
||||
CALL PRTSTRH ; DISPLAY IT
|
||||
JP SERIALCMDLOOP ; AND BACK TO COMMAND LOOP
|
||||
;
|
||||
;__BYTEPARM___________________________________________________________________
|
||||
@@ -520,39 +524,52 @@ WORDPARM:
|
||||
;
|
||||
;__GETLN______________________________________________________________________
|
||||
;
|
||||
; READ A LINE(80) OF TEXT FROM THE SERIAL PORT, HANDLE <BS>, TERM ON <CR>
|
||||
; READ A LINE OF TEXT FROM THE SERIAL PORT, HANDLE <BS>, TERM ON <CR>
|
||||
; EXIT IF TOO MANY CHARS STORE RESULT IN HL. CHAR COUNT IN C.
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
GETLN:
|
||||
LD C,00H ; ZERO CHAR COUNTER
|
||||
PUSH DE ; STORE DE
|
||||
LD C,0 ; ZERO CHAR COUNTER
|
||||
PUSH DE ; SAVE DE
|
||||
GETLNLOP:
|
||||
; ENTRY LOOP
|
||||
CALL KIN ; GET A KEY
|
||||
CP CHR_CR ; IS <CR>?
|
||||
JR Z,GETLNDONE ; YES, EXIT
|
||||
CALL COUT ; OUTPUT KEY TO SCREEN
|
||||
CP CHR_BS ; IS <BS>?
|
||||
JR NZ,GETLNSTORE ; NO, STORE CHAR
|
||||
LD A,C ; A=C
|
||||
CP 0 ;
|
||||
JR Z,GETLNLOP ; NOTHING TO BACKSPACE, IGNORE & GET NEXT KEY
|
||||
DEC HL ; PERFORM BACKSPACE
|
||||
DEC C ; LOWER CHAR COUNTER
|
||||
LD A,0 ;
|
||||
LD (HL),A ; STORE NULL IN BUFFER
|
||||
LD A,20H ; BLANK OUT CHAR ON TERM
|
||||
CALL COUT ;
|
||||
LD A,CHR_BS ;
|
||||
CALL COUT ;
|
||||
JR GETLNLOP ; GET NEXT KEY
|
||||
GETLNSTORE:
|
||||
JR Z,GETLNBS ; IF SO, HANDLE IT
|
||||
CP ' ' ; UNEXPECTED CONTROL CHAR?
|
||||
JR C,GETLNLOP ; IF SO, IGNORE IT AND GET NEXT
|
||||
LD B,A ; SAVE CHAR IN B FOR NOW
|
||||
LD A,C ; GET COUNTER
|
||||
CP BUFLEN - 1 ; MAX OF BUFLEN CHARS LESS SPACE FOR TERM NULL
|
||||
JR Z,GETLNOVF ; IF AT MAX, HANDLE OVERFLOW
|
||||
LD A,B ; GET INPUT CHAR BACK
|
||||
CALL COUT ; OUTPUT KEY TO SCREEN
|
||||
LD (HL),A ; STORE CHAR IN BUFFER
|
||||
INC HL ; INC POINTER
|
||||
INC C ; INC CHAR COUNTER
|
||||
JR GETLNLOP ; GET NEXT CHAR
|
||||
GETLNOVF:
|
||||
; OVERFLOW
|
||||
LD A,CHR_BEL ; BELL CHARACTER
|
||||
CALL COUT ; SEND IT TO CONSOLE
|
||||
JR GETLNLOP ; LOOP
|
||||
GETLNBS:
|
||||
; BACKSPACE
|
||||
LD A,C ; A=C
|
||||
CP 4DH ; OUT OF BUFFER SPACE?
|
||||
JR NZ,GETLNLOP ; NOPE, GET NEXT CHAR
|
||||
OR A ; ZERO?
|
||||
JR Z,GETLNLOP ; IF EMPTY LINE, IGNORE BS & LOOP
|
||||
DEC HL ; BACKUP BUF PTR 1 CHAR
|
||||
DEC C ; DECREMENT CHAR COUNTER
|
||||
LD A,CHR_BS ; BACKSPACE
|
||||
CALL COUT ; TO CONSOLE
|
||||
LD A,20H ; BLANK OUT CHAR ON TERM
|
||||
CALL COUT ; TO CONSOLE
|
||||
LD A,CHR_BS ; BACKSPACE
|
||||
CALL COUT ; TO CONSOLE
|
||||
JR GETLNLOP ; GET NEXT KEY
|
||||
; DONE
|
||||
GETLNDONE:
|
||||
LD (HL),00H ; STORE NULL IN BUFFER
|
||||
POP DE ; RESTORE DE
|
||||
@@ -708,7 +725,17 @@ PHL:
|
||||
CALL PRTHEXBYTE ; DISPLAY IT
|
||||
LD A,L ; GET LOW BYTE
|
||||
CALL PRTHEXBYTE ; DISPLAY IT
|
||||
RET ; DONE
|
||||
RET ; DONE
|
||||
;
|
||||
;__PRTSTRH____________________________________________________________________
|
||||
;
|
||||
; PRINT STRING AT HL W/ MINI HELP SUFFIX
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
PRTSTRH:
|
||||
CALL PRTSTR
|
||||
LD HL,TXT_MINIHELP
|
||||
JP PRTSTR
|
||||
;
|
||||
#IF (PLATFORM == PLT_UNA)
|
||||
;
|
||||
@@ -859,57 +886,32 @@ CST:
|
||||
; RESERVED RAM FOR MONITOR WORKING AREA
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
KEYBUF: .FILL 80,' '
|
||||
KEYBUF: .FILL BUFLEN,0
|
||||
;
|
||||
;__TEXT_STRINGS_______________________________________________________________
|
||||
;
|
||||
; SYSTEM TEXT STRINGS
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
TCRLF:
|
||||
.DB CHR_CR,CHR_LF,'$'
|
||||
|
||||
PROMPT:
|
||||
.DB CHR_CR,CHR_LF,'>','$'
|
||||
|
||||
TXT_READY:
|
||||
.DB CHR_CR,CHR_LF
|
||||
.TEXT "MONITOR READY ('H' FOR HELP)"
|
||||
.DB '$'
|
||||
|
||||
TXT_COMMAND:
|
||||
.DB CHR_CR,CHR_LF
|
||||
.TEXT "UNKNOWN COMMAND ('H' FOR HELP)"
|
||||
.DB '$'
|
||||
|
||||
TXT_ERR:
|
||||
.DB CHR_CR,CHR_LF
|
||||
.TEXT "SYNTAX ERROR ('H' FOR HELP)"
|
||||
.DB '$'
|
||||
|
||||
TXT_CKSUMERR:
|
||||
.DB CHR_CR,CHR_LF
|
||||
.TEXT "CHECKSUM ERROR"
|
||||
.DB '$'
|
||||
|
||||
TXT_BADNUM:
|
||||
.TEXT " *INVALID VALUE*"
|
||||
.DB '$'
|
||||
|
||||
TXT_HELP:
|
||||
.DB CHR_CR,CHR_LF
|
||||
.TEXT "MONITOR COMMANDS (ALL VALUES IN HEX):\r\n"
|
||||
.TEXT "B - BOOT SYSTEM\r\n"
|
||||
.TEXT "D XXXX YYYY - DUMP MEMORY FROM XXXX TO YYYY\r\n"
|
||||
.TEXT "F XXXX YYYY ZZ - FILL MEMORY FROM XXXX TO YYYY WITH ZZ\r\n"
|
||||
.TEXT "I XX - SHOW VALUE AT PORT XX\r\n"
|
||||
.TEXT "K - ECHO KEYBOARD INPUT\r\n"
|
||||
.TEXT "L - LOAD INTEL HEX FORMAT DATA\r\n"
|
||||
.TEXT "M XXXX YYYY ZZZZ - MOVE MEMORY BLOCK XXXX-YYYY TO ZZZZ\r\n"
|
||||
.TEXT "O XX YY - WRITE VALUE YY TO PORT XX\r\n"
|
||||
.TEXT "P XXXX - PROGRAM RAM STARTING AT XXXX\r\n"
|
||||
.TEXT "R XXXX - RUN A PROGRAM AT ADDRESS XXXX"
|
||||
.DB '$'
|
||||
TXT_PROMPT .TEXT "\r\n>$"
|
||||
TXT_READY .TEXT "\r\nMonitor Ready$"
|
||||
TXT_COMMAND .TEXT "\r\nUnknown Command$"
|
||||
TXT_ERR .TEXT "\r\nSyntax Error$"
|
||||
TXT_CKSUMERR .TEXT "\r\nChecksum Error$"
|
||||
TXT_BADNUM .TEXT " *Invalid Hex Byte Value*$"
|
||||
TXT_MINIHELP .TEXT " (H for Help)$"
|
||||
TXT_HELP .TEXT "\r\nMonitor Commands (all values in hex):"
|
||||
.TEXT "\r\nB - Boot system"
|
||||
.TEXT "\r\nD xxxx yyyy - Dump memory from xxxx to yyyy"
|
||||
.TEXT "\r\nF xxxx yyyy zz - Fill memory from xxxx to yyyy with zz"
|
||||
.TEXT "\r\nI xx - Input from port xx"
|
||||
.TEXT "\r\nK - Keyboard echo"
|
||||
.TEXT "\r\nL - Load Intel hex data"
|
||||
.TEXT "\r\nM xxxx yyyy zzzz - Move memory block xxxx-yyyy to zzzz"
|
||||
.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 "$"
|
||||
;
|
||||
#IF DSKYENABLE
|
||||
;
|
||||
@@ -942,11 +944,12 @@ DSKY_ENTRY:
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
FRONTPANELLOOP:
|
||||
LD HL,CPUUP ; SET POINTER TO DATA BUFFER
|
||||
CALL DSKY_SHOWSEG ; DISPLAY
|
||||
LD HL,CPUUP ; SET POINTER TO CPU UP MSG
|
||||
CALL DSKY_SHOWSEG ; DISPLAY UNENCODED
|
||||
|
||||
CALL KB_GET ; GET KEY FROM KB
|
||||
|
||||
FRONTPANELLOOP1:
|
||||
CP KY_PR ; IS PORT READ?
|
||||
JP Z,DOPORTREAD ; YES, JUMP
|
||||
CP KY_PW ; IS PORT WRITE?
|
||||
@@ -970,7 +973,9 @@ EXIT:
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
DOBOOT:
|
||||
JP BOOT
|
||||
LD HL,MSGBOOT ; SET POINTER TO BOOT MESSAGE
|
||||
CALL DSKY_SHOWSEG ; DISPLAY UNENCODED
|
||||
JP BOOT ; DO BOOT
|
||||
;
|
||||
;__DOPORTREAD_________________________________________________________________
|
||||
;
|
||||
@@ -992,10 +997,6 @@ PORTREADLOOP:
|
||||
CALL ENCDISPLAY ; DISPLAY BUFFER CONTENTS
|
||||
PORTREADGETKEY:
|
||||
CALL KB_GET ; GET KEY FROM KB
|
||||
CP KY_CL ; [CL] PRESSED, EXIT
|
||||
JR Z,FRONTPANELLOOP ;
|
||||
CP KY_PR ; [PR] PRESSED, PROMPT FOR NEW PORT
|
||||
JR Z,DOPORTREAD ;
|
||||
JR PORTREADGETKEY ; NO VALID KEY, LOOP
|
||||
;
|
||||
;__DOPORTWRITE________________________________________________________________
|
||||
@@ -1019,10 +1020,6 @@ PORTWRITELOOP:
|
||||
CALL ENCDISPLAY ; DISPLAY BUFFER CONTENTS
|
||||
PORTWRITEGETKEY:
|
||||
CALL KB_GET ; GET KEY FROM KB
|
||||
CP KY_CL ; [CL] PRESSED, EXIT
|
||||
JR Z,FRONTPANELLOOP ;
|
||||
CP KY_PW ; [PW] PRESSED, PROMPT FOR NEW PORT
|
||||
JR Z,DOPORTWRITE ;
|
||||
JR PORTWRITEGETKEY ; NO VALID KEY, LOOP
|
||||
;
|
||||
;__DOGO_______________________________________________________________________
|
||||
@@ -1069,12 +1066,8 @@ EXAMINELOOP:
|
||||
CALL ENCDISPLAY ; DISPLAY BUFFER ON DISPLAYS
|
||||
EXAMINEGETKEY:
|
||||
CALL KB_GET ; GET KEY FROM KB
|
||||
CP KY_CL ; [CL] PRESSED, EXIT
|
||||
JP Z,FRONTPANELLOOP ;
|
||||
CP KY_EN ; [EN] PRESSED, INC ADDRESS AND LOOP
|
||||
JR Z,EXAMINEFW ;
|
||||
CP KY_EX ; [EX] PRESSED, PROMPT FOR NEW ADDRESS
|
||||
JR Z,DOEXAMINE ;
|
||||
JR EXAMINEGETKEY ; NO VALID KEY, LOOP
|
||||
EXAMINEFW:
|
||||
INC HL ; HL++
|
||||
@@ -1106,12 +1099,8 @@ DEPOSITLOOP:
|
||||
CALL ENCDISPLAY ; DISPLAY BUFFER CONTENTS
|
||||
DEPOSITGETKEY:
|
||||
CALL KB_GET ; GET KEY FROM KB
|
||||
CP KY_CL ; [CL] PRESSED, EXIT
|
||||
JP Z,FRONTPANELLOOP ;
|
||||
CP KY_EN ; [EN] PRESSED, INC ADDRESS AND LOOP
|
||||
JR Z,DEPOSITFW ;
|
||||
CP KY_DE ; [DE] PRESSED, PROMPT FOR NEW ADDRESS
|
||||
JR Z,DODEPOSIT ;
|
||||
JR DEPOSITGETKEY ; NO VALID KEY, LOOP
|
||||
DEPOSITFW:
|
||||
INC HL ;
|
||||
@@ -1150,8 +1139,6 @@ GETVALWLOOP:
|
||||
JP M,GETVALWNUM ; NUMBER PRESSED, STORE IT
|
||||
CP KY_EN ; [EN] PRESSED, DONE
|
||||
JR Z,GETVALWDONE ;
|
||||
CP KY_CL ; CLEAR PRESSED, CLEAR
|
||||
JR Z,GETVALW ;
|
||||
JR GETVALWLOOP ; INVALID KEY, LOOP
|
||||
GETVALWNUM:
|
||||
OR $80 ; SET DP
|
||||
@@ -1221,8 +1208,6 @@ GETVALUELOOP:
|
||||
JP M,GETVALUENUM ; NUMBER PRESSED, STORE IT
|
||||
CP KY_EN ; [EN] PRESSED, DONE
|
||||
JR Z,GETVALUEDONE ;
|
||||
CP KY_CL ; CLEAR PRESSED, CLEAR
|
||||
JR Z,GETVALUE ;
|
||||
JR GETVALUELOOP ; INVALID KEY, LOOP
|
||||
GETVALUENUM:
|
||||
OR $80 ; SET DP
|
||||
@@ -1278,6 +1263,14 @@ KB_GET:
|
||||
PUSH DE
|
||||
PUSH HL ; SAVE HL
|
||||
CALL DSKY_GETKEY ; GET A KEY
|
||||
CP KY_EN ; ENTER?
|
||||
JR Z,KB_GET1 ; IF YES, RET TO CALLER
|
||||
CP $10 ; HEX DIGIT?
|
||||
JR C,KB_GET1 ; IF YES, RET TO CALLER
|
||||
; NOT A DIGIT OR [EN], BAIL OUT TO MAIN LOOP TO HANDLE IT
|
||||
LD SP,MON_STACK ; CLEAR STACK
|
||||
JP FRONTPANELLOOP1 ; RESTART AT MAIN LOOP
|
||||
KB_GET1:
|
||||
POP HL ; RESTORE HL
|
||||
POP DE
|
||||
POP BC
|
||||
@@ -1343,7 +1336,8 @@ ENCBUF1:
|
||||
POP HL ; RESTORE HL
|
||||
RET
|
||||
;
|
||||
CPUUP .DB $84,$CB,$EE,$BB,$80,$BB,$EE,$84 ; "-CPU UP-" (RAW)
|
||||
CPUUP .DB $84,$CB,$EE,$BB,$80,$BB,$EE,$84 ; "-CPU UP-" (RAW SEG)
|
||||
MSGBOOT .DB $FF,$9D,$9D,$8F,$20,$80,$80,$80 ; "Boot! " (RAW SEG)
|
||||
ADDR .DB $17,$18,$19,$10,$00,$00,$00,$00 ; "Adr 0000" (ENCODED)
|
||||
PORT .DB $13,$14,$15,$16,$10,$10,$00,$00 ; "Port 00" (ENCODED)
|
||||
GOTO .DB $1A,$14,$10,$10,$00,$00,$00,$00 ; "Go 0000" (ENCODED)
|
||||
@@ -1364,7 +1358,7 @@ SEGDECODE:
|
||||
;
|
||||
; POS $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $1A
|
||||
; GLYPH ' ' '-' '.' 'P' 'o' 'r' 't' 'A' 'd' 'r' 'G'
|
||||
.DB $00, $04, $00, $6E, $1D, $0C, $14, $7E, $3D, $0C, $5B
|
||||
.DB $00, $04, $00, $6E, $1D, $0C, $0F, $7E, $3D, $0C, $5B
|
||||
;
|
||||
DISPLAYBUF: .FILL 8,0
|
||||
;
|
||||
|
||||
@@ -817,6 +817,11 @@ HB_START1: ; BNKCALL ARRIVES HERE, BUT NOW RUNNING IN RAM BANK
|
||||
;
|
||||
DIAG(%00001111)
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
LD HL,MSG_HBVER
|
||||
CALL DSKY_SHOWSEG
|
||||
#ENDIF
|
||||
;
|
||||
; PERFORM DYNAMIC CPU SPEED DERIVATION
|
||||
;
|
||||
CALL HB_CPUSPD ; CPU SPEED DETECTION
|
||||
@@ -989,6 +994,12 @@ PSCNX .EQU $ + 1
|
||||
LD HL,(CB_CPUKHZ)
|
||||
CALL PRTD3M ; PRINT AS DECIMAL WITH 3 DIGIT MANTISSA
|
||||
PRTS("MHz$")
|
||||
#IF ((PLATFORM == PLT_N8) | (PLATFORM == PLT_MK4) | (PLATFORM == PLT_RC180))
|
||||
CALL PC_COMMA
|
||||
PRTS(" IO=0x$")
|
||||
LD A,Z180_BASE
|
||||
CALL PRTHEXBYTE
|
||||
#ENDIF
|
||||
;
|
||||
; DISPLAY CPU CONFIG
|
||||
;
|
||||
@@ -3265,6 +3276,10 @@ STR_PLATFORM .DB PLATFORM_NAME, "$"
|
||||
STR_SWITCH .DB "*** Activating CRT Console ***$"
|
||||
STR_BADINT .DB "\r\n*** BAD INT ***\r\n$"
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
MSG_HBVER .DB $BE,$FF,$8A,$FB,$D7,$6D,$77,$B0 ; "HBIOS291"
|
||||
#ENDIF
|
||||
;
|
||||
HB_CURSEC .DB 0 ; CURRENT SECOND (TEMP)
|
||||
;
|
||||
HB_BCDTMP .FILL 5,0 ; BCD NUMBER STORAGE (TEMP)
|
||||
|
||||
@@ -1395,16 +1395,20 @@ PPIDE_PRTPREFIX:
|
||||
#IF (DSKYENABLE)
|
||||
PPIDE_DSKY:
|
||||
LD HL,DSKY_HEXBUF ; POINT TO DSKY BUFFER
|
||||
IN A,(PPIDE_REG_DRVHD) ; GET DRIVE/HEAD
|
||||
CALL PPIDE_IN
|
||||
.DB PPIDE_REG_DRVHD
|
||||
LD (HL),A ; SAVE IN BUFFER
|
||||
INC HL ; INCREMENT BUFFER POINTER
|
||||
IN A,(PPIDE_REG_CYLHI) ; GET DRIVE/HEAD
|
||||
CALL PPIDE_IN
|
||||
.DB PPIDE_REG_CYLHI
|
||||
LD (HL),A ; SAVE IN BUFFER
|
||||
INC HL ; INCREMENT BUFFER POINTER
|
||||
IN A,(PPIDE_REG_CYLLO) ; GET DRIVE/HEAD
|
||||
CALL PPIDE_IN
|
||||
.DB PPIDE_REG_CYLLO
|
||||
LD (HL),A ; SAVE IN BUFFER
|
||||
INC HL ; INCREMENT BUFFER POINTER
|
||||
IN A,(PPIDE_REG_SECT) ; GET DRIVE/HEAD
|
||||
CALL PPIDE_IN
|
||||
.DB PPIDE_REG_SECT
|
||||
LD (HL),A ; SAVE IN BUFFER
|
||||
CALL DSKY_HEXOUT ; SEND IT TO DSKY
|
||||
RET
|
||||
|
||||
@@ -154,7 +154,7 @@ MENU:
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
; DISPLAY DSKY BOOT MESSAGE
|
||||
LD HL,BOOT ; POINT TO BOOT MESSAGE
|
||||
LD HL,MSG_SEL ; POINT TO BOOT MESSAGE
|
||||
CALL DSKY_SHOWSEG ; DISPLAY MESSAGE
|
||||
#ENDIF
|
||||
;
|
||||
@@ -353,6 +353,10 @@ MENU_N .EQU ((MENU_E - MENU_S) / MENU_V) ; NUMBER OF MENU ITEMS
|
||||
;
|
||||
REBOOT: LD DE,STR_REBOOT ; POINT TO MESSAGE
|
||||
CALL WRITESTR ; PRINT IT
|
||||
#IF (DSKYENABLE)
|
||||
LD HL,MSG_BOOT ; POINT TO BOOT MESSAGE
|
||||
CALL DSKY_SHOWSEG ; DISPLAY MESSAGE
|
||||
#ENDIF
|
||||
LD A,BID_BOOT ; BOOT BANK
|
||||
LD HL,0 ; ADDRESS ZERO
|
||||
CALL HB_BNKCALL ; DOES NOT RETURN
|
||||
@@ -370,6 +374,10 @@ REBOOT: LD DE,STR_REBOOT ; POINT TO MESSAGE
|
||||
GOROM: PUSH DE ; SAVE ROM TABLE ENTRY EXEC ADR PTR
|
||||
LD DE,STR_BOOTROM ; ROM LOADING MSG PREFIX
|
||||
CALL WRITESTR ; PRINT IT
|
||||
#IF (DSKYENABLE)
|
||||
LD HL,MSG_LOAD ; POINT TO LOAD MESSAGE
|
||||
CALL DSKY_SHOWSEG ; DISPLAY MESSAGE
|
||||
#ENDIF
|
||||
POP HL ; EXEC ADR TO HL
|
||||
PUSH HL ; AND RESAVE IT
|
||||
LD A,10 ; OFFSET TO IMAGE DESC
|
||||
@@ -391,7 +399,8 @@ GOROM1: LD E,(HL) ; (1) EXEC ADR
|
||||
;
|
||||
; NOTE: UNA HAS NO INTERBANK MEMORY COPY, SO WE CAN ONLY LOAD
|
||||
; IMAGES FROM THE CURRENT BANK. A SIMPLE LDIR IS USED TO
|
||||
; RELOCATE THE IMAGES
|
||||
; RELOCATE THE IMAGES. AT SOME POINT AN UNA INTERBANK COPY
|
||||
; SHOULD BE IMPLEMENTED HERE.
|
||||
;
|
||||
; COPY IMAGE TO IT'S RUNNING LOCATION
|
||||
POP HL ; POP AND DISCARD BANKS
|
||||
@@ -444,6 +453,11 @@ GOROM2: LD B,BF_SYSSETCPY ; HBIOS FUNC: SETUP BANK COPY
|
||||
LD L,A ; ... AND SAVE AS BOOT BANK
|
||||
LD DE,$0100 ; BOOT VOLUME (UNIT, SLICE)
|
||||
RST 08
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
LD HL,MSG_GO ; POINT TO BOOT MESSAGE
|
||||
CALL DSKY_SHOWSEG ; DISPLAY MESSAGE
|
||||
#ENDIF
|
||||
;
|
||||
; LAUNCH IMAGE W/ USER BANK ACTIVE
|
||||
CALL NEWLINE2
|
||||
@@ -464,6 +478,10 @@ GOBOOTDISK:
|
||||
CALL WRITESTR
|
||||
CALL PRTHEXBYTE
|
||||
PRTS("...$")
|
||||
#IF (DSKYENABLE)
|
||||
LD HL,MSG_LOAD ; POINT TO LOAD MESSAGE
|
||||
CALL DSKY_SHOWSEG ; DISPLAY MESSAGE
|
||||
#ENDIF
|
||||
;
|
||||
LD DE,STR_BOOTDISK1 ; DISK BOOT MESSAGE
|
||||
CALL WRITESTR ; PRINT IT
|
||||
@@ -627,6 +645,11 @@ GOBOOTDISK:
|
||||
LD E,A ; SAVE IN E
|
||||
RST 08
|
||||
JP NZ,DB_ERR ; HANDLE ERRORS
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
LD HL,MSG_GO ; POINT TO BOOT MESSAGE
|
||||
CALL DSKY_SHOWSEG ; DISPLAY MESSAGE
|
||||
#ENDIF
|
||||
;
|
||||
; JUMP TO COLD BOOT ENTRY
|
||||
LD A,BID_USR ; ACTIVATE USER BANK
|
||||
@@ -826,7 +849,7 @@ DEV15 .EQU DEVUNK
|
||||
;==================================================================================================
|
||||
;
|
||||
STR_BANNER .DB "\r\n\r\n", PLATFORM_NAME, " Boot Loader$"
|
||||
STR_BOOTSEL .DB "\r\n\r\nBoot? $"
|
||||
STR_BOOTSEL .DB "\r\n\r\nBoot Selection? $"
|
||||
STR_BOOTDISK .DB "\r\n\r\nBooting Disk Unit $"
|
||||
STR_BOOTROM .DB "\r\n\r\nLoading $"
|
||||
STR_REBOOT .DB "\r\n\r\nRestarting System...$"
|
||||
@@ -838,9 +861,13 @@ STR_BOOTDISK1 .DB "\r\n\r\nReading disk information...$"
|
||||
STR_LOADING .DB "\r\n\r\nLoading...$"
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
; b o o t . .
|
||||
BOOT .DB $9F,$9D,$9D,$94,$80,$80,$00,$00
|
||||
MSG_SEL .DB $FF,$9D,$9D,$8F,$EC,$80,$80,$80 ; "Boot? "
|
||||
MSG_BOOT .DB $FF,$9D,$9D,$8F,$00,$00,$00,$80 ; "Boot... "
|
||||
MSG_LOAD .DB $8B,$9D,$FD,$BD,$00,$00,$00,$80 ; "Load... "
|
||||
MSG_GO .DB $DB,$9D,$00,$00,$00,$80,$80,$80 ; "Go... "
|
||||
#ENDIF
|
||||
|
||||
|
||||
;
|
||||
;==================================================================================================
|
||||
; INCLUDES
|
||||
|
||||
@@ -377,6 +377,7 @@ SD_INITUNIT
|
||||
RET NZ ; ABORT ON ERROR
|
||||
;
|
||||
CALL SD_PRTPREFIX
|
||||
CALL PC_SPACE
|
||||
;
|
||||
; PRINT CARD TYPE
|
||||
LD A,(IY+SD_TYPE) ; GET CARD TYPE VALUE TO A
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
;==================================================================================================
|
||||
;
|
||||
;
|
||||
CHR_BEL .EQU 07H
|
||||
CHR_CR .EQU 0DH
|
||||
CHR_LF .EQU 0AH
|
||||
CHR_BS .EQU 08H
|
||||
|
||||
Reference in New Issue
Block a user