mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
@@ -908,6 +908,73 @@ FILL_MEM:
|
||||
|
||||
DORAMTEST:
|
||||
|
||||
; VERIFY DATA BUS FUNCTIONALITY BEFORE STARTING MEMORY TEST
|
||||
LD A,$80 ; FIRST 32KB PAGE ONLY
|
||||
LD (PAGE_NUM),A ; STORE WORKING PAGE NUMBER
|
||||
OUT (MPCL_ROM),A ; SWITCH OUT LOWER 32KB ROM PAGE
|
||||
OUT (MPCL_RAM),A ; SWITCH IN LOWER 32KB RAM PAGE
|
||||
LD A,$00 ; INITIALIZE A TO 0
|
||||
|
||||
DATABUSCHECK:
|
||||
LD ($0000),A ; WRITE TO LOWEST RAM ADDRESS
|
||||
LD C,($0000) ; READ VALUE FROM LOWEST RAM ADDRESS
|
||||
CP C ; IS IT SAME AS WRITTEN?
|
||||
JP NZ,DATABUSFAIL ; NO? DATA BUS FAIL HANDLER ROUTINE
|
||||
INC A ; YES, GET NEXT VALUE
|
||||
JP NZ,DATABUSCHECK ; REPEAT FOR ALL 256 VALUES
|
||||
LD HL,TXT_DATA_BUS_PASS ; POINT AT DATA BUS PASS TEXT
|
||||
CALL MSG ; PRINT DATA BUS PASS LABEL
|
||||
JP ADDRBUSCHECK ; CONTINUE WITH ADDRESS BUS TEST
|
||||
|
||||
DATABUSFAIL:
|
||||
PUSH AF ; STORE FAILED VALUE
|
||||
LD HL,TXT_DATA_BUS_FAIL ; POINT AT DATA BUS FAIL TEXT
|
||||
CALL MSG ; PRINT DATA BUS FAIL LABEL
|
||||
POP AF ; RETRIEVE FAILED VALUE
|
||||
CALL HXOUT ; SHOW VALUE THAT FAILED
|
||||
LD HL,TCRLF ; CR & LF
|
||||
CALL MSG ; DISPLAY IT
|
||||
JP SERIALCMDLOOP ; AND BACK TO COMMAND LOOP
|
||||
|
||||
; VERIFY ADDRESS BUS FUNCTIONALITY BEFORE STARTING MEMORY TEST
|
||||
LD A,$80 ; FIRST 32KB PAGE ONLY
|
||||
LD (PAGE_NUM),A ; STORE WORKING PAGE NUMBER
|
||||
OUT (MPCL_ROM),A ; SWITCH OUT LOWER 32KB ROM PAGE
|
||||
OUT (MPCL_RAM),A ; SWITCH IN LOWER 32KB RAM PAGE
|
||||
LD A,$00 ; INITIALIZE A TO 0
|
||||
LD ($0000),A ; WRITE TO LOWEST RAM ADDRESS
|
||||
LD HL,$0001 ; INITIALIZE HL TO CHECK A0
|
||||
|
||||
ADDRBUSCHECK:
|
||||
LD (HL),$FF ; WRITE ALL ONES INTO HL ADDRESS
|
||||
LD C,($0000) ; READ VALUE FROM LOWEST RAM ADDRESS
|
||||
CP C ; IS IT SAME AS WRITTEN? SHOULD BE 0
|
||||
JP NZ,ADDRBUSFAIL ; NO? ADDR BUS FAIL HANDLER ROUTINE
|
||||
PUSH HL ; STORE HL, FOR COPY TO BC
|
||||
POP BC ; RETRIEVE BC (SAME AS HL)
|
||||
ADD HL,BC ; INCREMENT TO NEXT ADDR LINE
|
||||
LD A,H ; WHICH ADDRESS LINE ARE WE AT
|
||||
CP $80 ; ARE WE AT A15?
|
||||
JP NZ,ADDRBUSCHECK ; NO? REPEAT FOR ALL 15 VALUES
|
||||
LD HL,TXT_ADDR_BUS_PASS ; YES? POINT AT ADDR BUS PASS TEXT
|
||||
CALL MSG ; PRINT ADDR BUS PASS LABEL
|
||||
JP MEMSIZELOOP ; CONTINUE WITH REST OF RAM TEST
|
||||
|
||||
ADDRBUSFAIL:
|
||||
PUSH HL ; STORE FAILED ADDR LINE VALUE
|
||||
LD HL,TXT_ADDR_BUS_FAIL ; POINT AT ADDR BUS FAIL TEXT
|
||||
CALL MSG ; PRINT ADDR BUS FAIL LABEL
|
||||
POP HL ; RETRIEVE FAILED ADDR LINE VALUE
|
||||
LD A,H ; PRINT UPPER HALF OF ADDRESS
|
||||
PUSH HL ; STORE FAILED ADDR LINE VALUE
|
||||
CALL HXOUT ; PRINT HIGH ADDR HALF THAT FAILED
|
||||
POP LH ; RETRIEVE FAILED ADDR LINE VALUE
|
||||
LD A,L ; PRINT LOWER HALF OF ADDRESS
|
||||
CALL HXOUT ; PRINT LOW ADDR HALF THAT FAILED
|
||||
LD HL,TCRLF ; CR & LF
|
||||
CALL MSG ; DISPLAY IT
|
||||
JP SERIALCMDLOOP ; AND BACK TO COMMAND LOOP
|
||||
|
||||
MEMSIZELOOP:
|
||||
LD HL,TXT_RAM_TEST_MAIN ; POINT AT RAM TEST MAIN MENU TEXT
|
||||
CALL MSG ; PRINT MENU TEXT LABEL
|
||||
@@ -1139,6 +1206,26 @@ TXT_RAM_FAIL:
|
||||
.DB "RAM FAIL, 32KB PAGE NUMBER: "
|
||||
.DB CR,LF,ENDT
|
||||
|
||||
TXT_DATA_BUS_FAIL:
|
||||
.DB CR,LF
|
||||
.DB "DATA BUS FAIL, VALUE ="
|
||||
.DB ENDT
|
||||
|
||||
TXT_DATA_BUS_PASS:
|
||||
.DB CR,LF
|
||||
.DB "DATA BUS PASS "
|
||||
.DB CR,LF,ENDT
|
||||
|
||||
TXT_ADDR_BUS_FAIL:
|
||||
.DB CR,LF
|
||||
.DB "ADDR BUS FAIL, VALUE ="
|
||||
.DB ENDT
|
||||
|
||||
TXT_ADDR_BUS_PASS:
|
||||
.DB CR,LF
|
||||
.DB "ADDR BUS PASS "
|
||||
.DB CR,LF,ENDT
|
||||
|
||||
TXT_SKIP_16:
|
||||
.DB CR,LF
|
||||
.DB "SKIPPING PAGE 0F "
|
||||
|
||||
@@ -53,16 +53,19 @@ UART_ENTRY:
|
||||
;
|
||||
;__SERIAL_MONITOR_COMMANDS____________________________________________________
|
||||
;
|
||||
; B - BOOT SYSTEM
|
||||
; D XXXX YYYY - DUMP MEMORY FROM XXXX TO YYYY
|
||||
; F XXXX YYYY ZZ - FILL MEMORY FROM XXXX TO YYYY WITH ZZ
|
||||
; I XX - SHOW VALUE AT PORT XX
|
||||
; K - ECHO KEYBOARD INPUT
|
||||
; L - LOAD INTEL HEX FORMAT DATA
|
||||
; M XXXX YYYY ZZZZ - MOVE MEMORY BLOCK XXXX-YYYY TO ZZZZ
|
||||
; O XX YY - WRITE VALUE YY TO PORT XX
|
||||
; P XXXX - PROGRAM RAM STARTING AT XXXX, PROMPT FOR VALUES
|
||||
; R XXXX - RUN A PROGRAM AT ADDRESS XXXX
|
||||
; B - BOOT SYSTEM
|
||||
; D XXXX YYYY - DUMP MEMORY IN RANGE XXXX-YYYY
|
||||
; F XXXX YYYY ZZ - FILL MEMORY IN RANGE XXXX-YYYY WITH ZZ
|
||||
; H - HALT SYSTEM
|
||||
; I XXXX - SHOW VALUE AT PORT XXXX
|
||||
; K - ECHO KEYBOARD INPUT
|
||||
; L - LOAD INTEL HEX FORMAT DATA
|
||||
; M XXXX YYYY ZZZZ - MOVE MEMORY BLOCK XXXX-YYYY TO ZZZZ
|
||||
; O XXXX YY - OUTPUT VALUE YY TO PORT XX
|
||||
; P XXXX - PROGRAM RAM STARTING AT XXXX, PROMPT FOR VALUES
|
||||
; R XXXX - RUN A PROGRAM AT ADDRESS XXXX
|
||||
; S XX - SET ACTIVE BANK TO XX
|
||||
; X - EXIT MONITOR
|
||||
;
|
||||
;__COMMAND_PARSE______________________________________________________________
|
||||
;
|
||||
@@ -71,8 +74,14 @@ UART_ENTRY:
|
||||
;
|
||||
SERIALCMDLOOP:
|
||||
LD SP,MON_STACK ; RESET STACK
|
||||
LD HL,TXT_PROMPT ;
|
||||
CALL PRTSTR ;
|
||||
CALL NEWLINE
|
||||
#IF (BIOS == BIOS_WBW)
|
||||
LD A,($FFE0)
|
||||
CALL PRTHEXBYTE
|
||||
#ENDIF
|
||||
LD A,'>'
|
||||
CALL COUT
|
||||
|
||||
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
|
||||
@@ -102,10 +111,14 @@ SERIALCMDLOOP:
|
||||
JP Z,MOVEMEM ; MOVE MEMORY COMMAND
|
||||
CP 'F' ; IS IT A "F" (Y/N)
|
||||
JP Z,FILLMEM ; FILL MEMORY COMMAND
|
||||
CP 'H' ; IS IT A "H" (Y/N)
|
||||
CP '?' ; IS IT A "?" (Y/N)
|
||||
JP Z,HELP ; HELP COMMAND
|
||||
CP 'S' ; IS IT A "H" (Y/N)
|
||||
JP Z,STOP ; STOP COMMAND
|
||||
CP 'H' ; IS IT A "H" (Y/N)
|
||||
JP Z,HALT ; HALT COMMAND
|
||||
#IF (BIOS == BIOS_WBW)
|
||||
CP 'S' ; IS IT A "S" (Y/N)
|
||||
JP Z,SETBNK ; SET BANK COMMAND
|
||||
#ENDIF
|
||||
CP 'X' ; IS IT A "X" (Y/N)
|
||||
JP Z,EXIT ; EXIT COMMAND
|
||||
LD HL,TXT_COMMAND ; POINT AT ERROR TEXT
|
||||
@@ -135,7 +148,7 @@ INITIALIZE:
|
||||
#IF DSKYENABLE
|
||||
LD B,BF_SYSGET ; HBIOS FUNC=GET SYS INFO
|
||||
LD C,BF_SYSGET_CPUINFO ; HBIOS SUBFUNC=GET CPU INFO
|
||||
RST 08 ; CALL HBIOS
|
||||
CALL $FFF0 ; CALL HBIOS
|
||||
LD A,L ; PUT SPEED IN MHZ IN ACCUM
|
||||
CALL DELAY_INIT
|
||||
#ENDIF
|
||||
@@ -176,15 +189,37 @@ EXIT:
|
||||
CALL $FFF0 ; CALL HBIOS
|
||||
#ENDIF
|
||||
;
|
||||
;__STOP_______________________________________________________________________
|
||||
;__HALT_______________________________________________________________________
|
||||
;
|
||||
; PERFORM STOP ACTION (HALT SYSTEM)
|
||||
; PERFORM HALT ACTION
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
STOP:
|
||||
HALT:
|
||||
DI
|
||||
HALT
|
||||
;
|
||||
;__SETBNK_____________________________________________________________________
|
||||
;
|
||||
; PERFORM SET BANK ACTION
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
#IF (BIOS == BIOS_WBW)
|
||||
;
|
||||
SETBNK:
|
||||
#IF (INTMODE == 1)
|
||||
LD HL,TXT_IMERR
|
||||
CALL PRTSTR
|
||||
#ELSE
|
||||
CALL BYTEPARM ; GET BANK NUMBER
|
||||
JP C,ERR ; HANDLE DATA ENTRY ERROR
|
||||
LD C,A ; PUT IN C FOR FOR FUNC CALL
|
||||
LD B,BF_SYSSETBNK ; SET BANK FUNCTION
|
||||
CALL $FFF0 ; C HAS BANK, DO IT
|
||||
#ENDIF
|
||||
JP SERIALCMDLOOP ; NEXT COMMAND
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
;__RUN________________________________________________________________________
|
||||
;
|
||||
; TRANSFER OUT OF MONITOR, USER OPTION "R"
|
||||
@@ -788,7 +823,7 @@ COUT:
|
||||
; OUTPUT CHARACTER TO CONSOLE VIA UBIOS
|
||||
LD E,A
|
||||
LD BC,$12
|
||||
RST 08
|
||||
CALL $FFFD
|
||||
;
|
||||
; RESTORE ALL REGISTERS
|
||||
POP HL
|
||||
@@ -810,7 +845,7 @@ CIN:
|
||||
;
|
||||
; INPUT CHARACTER FROM CONSOLE VIA UBIOS
|
||||
LD BC,$11
|
||||
RST 08
|
||||
CALL $FFFD
|
||||
LD A,E
|
||||
;
|
||||
; RESTORE REGISTERS (AF IS OUTPUT)
|
||||
@@ -832,7 +867,7 @@ CST:
|
||||
;
|
||||
; GET CONSOLE INPUT STATUS VIA UBIOS
|
||||
LD BC,$13
|
||||
RST 08
|
||||
CALL $FFFD
|
||||
LD A,E
|
||||
;
|
||||
; RESTORE REGISTERS (AF IS OUTPUT)
|
||||
@@ -859,7 +894,7 @@ COUT:
|
||||
LD E,A ; OUTPUT CHAR TO E
|
||||
LD C,CIO_CONSOLE ; CONSOLE UNIT TO C
|
||||
LD B,BF_CIOOUT ; HBIOS FUNC: OUTPUT CHAR
|
||||
RST 08 ; HBIOS OUTPUTS CHARACTER
|
||||
CALL $FFF0 ; HBIOS OUTPUTS CHARACTER
|
||||
;
|
||||
; RESTORE ALL REGISTERS
|
||||
POP HL
|
||||
@@ -882,7 +917,7 @@ CIN:
|
||||
; INPUT CHARACTER FROM CONSOLE VIA HBIOS
|
||||
LD C,CIO_CONSOLE ; CONSOLE UNIT TO C
|
||||
LD B,BF_CIOIN ; HBIOS FUNC: INPUT CHAR
|
||||
RST 08 ; HBIOS READS CHARACTER
|
||||
CALL $FFF0 ; HBIOS READS CHARACTER
|
||||
LD A,E ; MOVE CHARACTER TO A FOR RETURN
|
||||
;
|
||||
; RESTORE REGISTERS (AF IS OUTPUT)
|
||||
@@ -905,7 +940,7 @@ CST:
|
||||
; GET CONSOLE INPUT STATUS VIA HBIOS
|
||||
LD C,CIO_CONSOLE ; CONSOLE UNIT TO C
|
||||
LD B,BF_CIOIST ; HBIOS FUNC: INPUT STATUS
|
||||
RST 08 ; HBIOS RETURNS STATUS IN A
|
||||
CALL $FFF0 ; HBIOS RETURNS STATUS IN A
|
||||
;
|
||||
; RESTORE REGISTERS (AF IS OUTPUT)
|
||||
POP HL
|
||||
@@ -927,27 +962,29 @@ KEYBUF: .FILL BUFLEN,0
|
||||
; SYSTEM TEXT STRINGS
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
TXT_PROMPT .TEXT "\r\n>$"
|
||||
;TXT_PROMPT .TEXT "\r\n>$"
|
||||
TXT_READY .TEXT "\r\n\r\nMonitor Ready$"
|
||||
TXT_COMMAND .TEXT "\r\nUnknown Command$"
|
||||
TXT_ERR .TEXT "\r\nSyntax Error$"
|
||||
TXT_IMERR .TEXT "\r\nCommand not available under interrupt mode 1$"
|
||||
TXT_CKSUMERR .TEXT "\r\nChecksum Error$"
|
||||
TXT_RECORDERR .TEXT "\r\nRecord Type Error$"
|
||||
TXT_LOADED .TEXT "\r\nLoaded$"
|
||||
TXT_BADNUM .TEXT " *Invalid Hex Byte Value*$"
|
||||
TXT_MINIHELP .TEXT " (H for Help)$"
|
||||
TXT_MINIHELP .TEXT " (? 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\nH - Halt system"
|
||||
.TEXT "\r\nI xxxx - Input from port xxxx"
|
||||
.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 "\r\nS - Stop system (HALT)"
|
||||
.TEXT "\r\nO xxxx yy - Output value yy to port xxxx"
|
||||
.TEXT "\r\nP xxxx - Program RAM at address xxxx"
|
||||
.TEXT "\r\nR xxxx - Run code at address xxxx"
|
||||
.TEXT "\r\nS xx - Set bank to xx"
|
||||
.TEXT "\r\nX - Exit monitor"
|
||||
.TEXT "$"
|
||||
;
|
||||
@@ -1530,13 +1567,5 @@ MON_STACK .EQU $
|
||||
.ECHO "DBGMON space remaining: "
|
||||
.ECHO SLACK
|
||||
.ECHO " bytes.\n"
|
||||
;;;
|
||||
;;; DBGMON CURRENTLY OCCUPIES $F000 TO START OF HBX PROXY BECAUSE THE
|
||||
;;; HBIOS PROXY OCCUPIES THE TOP OF COMMON RAM. HOWEVER THE DBGMON
|
||||
;;; IMAGE MUST OCCUPY A FULL $1000 BYTES IN THE ROM.
|
||||
;;; BELOW WE JUST PAD OUT THE IMAGE SO IT
|
||||
;;; OCCUPIES THE FULL $1000 BYTES IN ROM.
|
||||
;;;
|
||||
;; .FILL HBX_SIZ ; PAD FOR HBX SIZE
|
||||
;
|
||||
.END
|
||||
|
||||
@@ -3133,10 +3133,10 @@ SYS_RESINT:
|
||||
; RESET THE HEAP
|
||||
LD HL,(HEAPCURB) ; GET HBIOS HEAP THRESHOLD
|
||||
LD (CB_HEAPTOP),HL ; RESTORE HEAP TOP
|
||||
;
|
||||
; MAKE SURE THE PROPER RESET VECTOR IS AT ADDRESS $0000
|
||||
LD HL,$0040 ; USER RESET CODE STUB
|
||||
LD ($0001),HL ; OPERAND OF JP AT $0000
|
||||
;;
|
||||
; ; MAKE SURE THE PROPER RESET VECTOR IS AT ADDRESS $0000
|
||||
; LD HL,$0040 ; USER RESET CODE STUB
|
||||
; LD ($0001),HL ; OPERAND OF JP AT $0000
|
||||
;
|
||||
XOR A
|
||||
RET
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
#DEFINE RMN 1
|
||||
#DEFINE RUP 1
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "3.1.1-pre.93"
|
||||
#DEFINE BIOSVER "3.1.1-pre.94"
|
||||
|
||||
@@ -3,5 +3,5 @@ rmn equ 1
|
||||
rup equ 1
|
||||
rtp equ 0
|
||||
biosver macro
|
||||
db "3.1.1-pre.93"
|
||||
db "3.1.1-pre.94"
|
||||
endm
|
||||
|
||||
Reference in New Issue
Block a user