mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
Finish DBGMON and Cleanup
This commit is contained in:
@@ -19,6 +19,7 @@ HTIMENABLE .EQU FALSE ; TRUE FOR SIMH TIMER SUPPORT
|
||||
SIMRTCENABLE .EQU FALSE ; SIMH CLOCK DRIVER
|
||||
DSRTCENABLE .EQU TRUE ; DS-1302 CLOCK DRIVER
|
||||
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTCMODE_STD, DSRTCMODE_MFPIC
|
||||
DSRTCCHG .EQU FALSE ; DS-1302 CONFIGURE CHARGE ON (TRUE) OR OFF (FALSE)
|
||||
;
|
||||
ASCIENABLE .EQU TRUE ; TRUE FOR Z180 ASCI SUPPORT
|
||||
UARTENABLE .EQU TRUE ; TRUE FOR UART SUPPORT (ALMOST ALWAYS WANT THIS TO BE TRUE)
|
||||
|
||||
@@ -19,6 +19,7 @@ HTIMENABLE .EQU FALSE ; TRUE FOR SIMH TIMER SUPPORT
|
||||
SIMRTCENABLE .EQU FALSE ; SIMH CLOCK DRIVER
|
||||
DSRTCENABLE .EQU TRUE ; DS-1302 CLOCK DRIVER
|
||||
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTCMODE_STD, DSRTCMODE_MFPIC
|
||||
DSRTCCHG .EQU FALSE ; DS-1302 CONFIGURE CHARGE ON (TRUE) OR OFF (FALSE)
|
||||
;
|
||||
ASCIENABLE .EQU TRUE ; TRUE FOR Z180 ASCI SUPPORT
|
||||
UARTENABLE .EQU TRUE ; TRUE FOR UART SUPPORT (ALMOST ALWAYS WANT THIS TO BE TRUE)
|
||||
|
||||
@@ -19,6 +19,7 @@ HTIMENABLE .EQU FALSE ; TRUE FOR SIMH TIMER SUPPORT
|
||||
SIMRTCENABLE .EQU FALSE ; SIMH CLOCK DRIVER
|
||||
DSRTCENABLE .EQU FALSE ; DS-1302 CLOCK DRIVER
|
||||
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTCMODE_STD, DSRTCMODE_MFPIC
|
||||
DSRTCCHG .EQU FALSE ; DS-1302 CONFIGURE CHARGE ON (TRUE) OR OFF (FALSE)
|
||||
;
|
||||
ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT
|
||||
UARTENABLE .EQU FALSE ; TRUE FOR UART SUPPORT (ALMOST ALWAYS WANT THIS TO BE TRUE)
|
||||
|
||||
@@ -19,6 +19,7 @@ HTIMENABLE .EQU FALSE ; TRUE FOR SIMH TIMER SUPPORT
|
||||
SIMRTCENABLE .EQU FALSE ; SIMH CLOCK DRIVER
|
||||
DSRTCENABLE .EQU FALSE ; DS-1302 CLOCK DRIVER
|
||||
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTCMODE_STD, DSRTCMODE_MFPIC
|
||||
DSRTCCHG .EQU FALSE ; DS-1302 CONFIGURE CHARGE ON (TRUE) OR OFF (FALSE)
|
||||
;
|
||||
ASCIENABLE .EQU TRUE ; TRUE FOR Z180 ASCI SUPPORT
|
||||
UARTENABLE .EQU FALSE ; TRUE FOR UART SUPPORT (ALMOST ALWAYS WANT THIS TO BE TRUE)
|
||||
|
||||
@@ -19,6 +19,7 @@ HTIMENABLE .EQU FALSE ; TRUE FOR SIMH TIMER SUPPORT
|
||||
SIMRTCENABLE .EQU FALSE ; SIMH CLOCK DRIVER
|
||||
DSRTCENABLE .EQU TRUE ; DS-1302 CLOCK DRIVER
|
||||
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTCMODE_STD, DSRTCMODE_MFPIC
|
||||
DSRTCCHG .EQU FALSE ; DS-1302 CONFIGURE CHARGE ON (TRUE) OR OFF (FALSE)
|
||||
;
|
||||
ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT
|
||||
UARTENABLE .EQU TRUE ; TRUE FOR UART SUPPORT (ALMOST ALWAYS WANT THIS TO BE TRUE)
|
||||
|
||||
@@ -1072,29 +1072,29 @@ PORTREADLOOP:
|
||||
SRL A ;
|
||||
SRL A ;
|
||||
SRL A ;
|
||||
LD (DISPLAYBUF+5),A ; SHOW HIGH NIB IN DISP 5
|
||||
LD (DISPLAYBUF+2),A ; SHOW HIGH NIB IN DISP 5
|
||||
LD A,C ; RESTORE PORT VALUE INTO "A"
|
||||
AND 0FH ; CLEAR HIGH NIB, LEAVING LOW
|
||||
LD (DISPLAYBUF+4),A ; SHOW LOW NIB IN DISP 4
|
||||
LD (DISPLAYBUF+3),A ; SHOW LOW NIB IN DISP 4
|
||||
IN A,(C) ; GET PORT VALUE FROM PORT IN "C"
|
||||
LD C,A ; STORE VALUE IN "C"
|
||||
SRL A ; ROTATE HIGH NIB TO LOW
|
||||
SRL A ;
|
||||
SRL A ;
|
||||
SRL A ;
|
||||
LD (DISPLAYBUF+1),A ; SHOW HIGH NIB IN DISP 1
|
||||
LD (DISPLAYBUF+6),A ; SHOW HIGH NIB IN DISP 1
|
||||
LD A,C ; RESTORE VALUE TO "A"
|
||||
AND 0FH ; CLEAR HIGH NIB, LEAVING LOW
|
||||
LD (DISPLAYBUF),A ; DISPLAY LOW NIB IN DISP 0
|
||||
LD (DISPLAYBUF+7),A ; DISPLAY LOW NIB IN DISP 0
|
||||
LD A,10H ; CLEAR OTHER DISPLAYS
|
||||
LD (DISPLAYBUF+2),A ;
|
||||
LD (DISPLAYBUF+3),A ;
|
||||
LD (DISPLAYBUF+5),A ;
|
||||
LD (DISPLAYBUF+4),A ;
|
||||
LD A,13H ; "P"
|
||||
LD (DISPLAYBUF+7),A ; STORE IN DISP 7
|
||||
LD (DISPLAYBUF+0),A ; STORE IN DISP 7
|
||||
LD A,14H ; "O"
|
||||
LD (DISPLAYBUF+6),A ; STORE IN DISP 6
|
||||
LD (DISPLAYBUF+1),A ; STORE IN DISP 6
|
||||
LD HL,DISPLAYBUF ; SET POINTER TO DISPLAY BUFFER
|
||||
CALL HEXDISPLAY ; DISPLAY BUFFER CONTENTS
|
||||
CALL ENCDISPLAY ; DISPLAY BUFFER CONTENTS
|
||||
PORTREADGETKEY:
|
||||
CALL KB_GET ; GET KEY FROM KB
|
||||
CP 12H ; [CL] PRESSED, EXIT
|
||||
@@ -1120,17 +1120,17 @@ PORTWRITELOOP:
|
||||
SRL A ;
|
||||
SRL A ;
|
||||
SRL A ;
|
||||
LD (DISPLAYBUF+5),A ; DISPLAY HIGH NIB IN DISPLAY 5
|
||||
LD (DISPLAYBUF+2),A ; DISPLAY HIGH NIB IN DISPLAY 5
|
||||
LD A,C ; RESTORE PORT VALUE INTO "A"
|
||||
AND 0FH ; CLEAR OUT HIGH NIB
|
||||
LD (DISPLAYBUF+4),A ; DISPLAY LOW NIB IN DISPLAY 4
|
||||
LD (DISPLAYBUF+3),A ; DISPLAY LOW NIB IN DISPLAY 4
|
||||
LD A,10H ; CLEAR OUT DISPLAYS 2 AND 3
|
||||
LD (DISPLAYBUF+2),A ;
|
||||
LD (DISPLAYBUF+3),A ;
|
||||
LD (DISPLAYBUF+5),A ;
|
||||
LD (DISPLAYBUF+4),A ;
|
||||
LD A,13H ; DISPLAY "P" IN DISP 7
|
||||
LD (DISPLAYBUF+7),A ;
|
||||
LD (DISPLAYBUF+0),A ;
|
||||
LD A,14H ; DISPLAY "O" IN DISP 6
|
||||
LD (DISPLAYBUF+6),A ;
|
||||
LD (DISPLAYBUF+1),A ;
|
||||
LD HL,DISPLAYBUF ; POINT TO DISPLAY BUFFER
|
||||
CALL GETVALUE ; INPUT A BYTE VALUE, RETURN IN "A"
|
||||
OUT (C),A ; OUTPUT VALUE TO PORT STORED IN "C"
|
||||
@@ -1161,21 +1161,21 @@ DEPOSITLOOP:
|
||||
SRL A ;
|
||||
SRL A ;
|
||||
SRL A ;
|
||||
LD (DISPLAYBUF+7),A ;
|
||||
LD (DISPLAYBUF+0),A ;
|
||||
LD A,H ;
|
||||
AND 0FH ;
|
||||
LD (DISPLAYBUF+6),A ;
|
||||
LD (DISPLAYBUF+1),A ;
|
||||
LD A,L ;
|
||||
SRL A ;
|
||||
SRL A ;
|
||||
SRL A ;
|
||||
SRL A ;
|
||||
LD (DISPLAYBUF+5),A ;
|
||||
LD (DISPLAYBUF+2),A ;
|
||||
LD A,L ;
|
||||
AND 0FH ;
|
||||
LD (DISPLAYBUF+4),A ;
|
||||
LD A,10H ;
|
||||
LD (DISPLAYBUF+3),A ;
|
||||
LD A,10H ;
|
||||
LD (DISPLAYBUF+4),A ;
|
||||
LD HL,DISPLAYBUF ;
|
||||
CALL GETVALUE ;
|
||||
POP HL ;
|
||||
@@ -1212,32 +1212,32 @@ EXAMINELOOP:
|
||||
SRL A ;
|
||||
SRL A ;
|
||||
SRL A ;
|
||||
LD (DISPLAYBUF+7),A ;
|
||||
LD (DISPLAYBUF+0),A ;
|
||||
LD A,H ; RESTORE HIGH BYTE
|
||||
AND 0FH ; CLEAR HIGH NIBBLE
|
||||
LD (DISPLAYBUF+6),A ; DISPLAY LOW NIBBLE IN DISP 6
|
||||
LD (DISPLAYBUF+1),A ; DISPLAY LOW NIBBLE IN DISP 6
|
||||
LD A,L ; PUT LOW BYTE IN "A"
|
||||
SRL A ; SHOW HIGH NIBBLE IN DISP 5
|
||||
SRL A ;
|
||||
SRL A ;
|
||||
SRL A ;
|
||||
LD (DISPLAYBUF+5),A ;
|
||||
LD (DISPLAYBUF+2),A ;
|
||||
LD A,L ; RESTORE LOW BYTE IN "A"
|
||||
AND 0FH ; CLEAR OUT HIGH NIBBLE
|
||||
LD (DISPLAYBUF+4),A ; DISPLAY LOW NIBBLE IN DISP 4
|
||||
LD (DISPLAYBUF+3),A ; DISPLAY LOW NIBBLE IN DISP 4
|
||||
LD A,10H ; CLEAR OUT DISP 3
|
||||
LD (DISPLAYBUF+3),A ;
|
||||
LD (DISPLAYBUF+4),A ;
|
||||
LD A,(HL) ; GET VALUE FROM ADDRESS IN HL
|
||||
SRL A ; DISPLAY HIGH NIB IN DISPLAY 1
|
||||
SRL A ;
|
||||
SRL A ;
|
||||
SRL A ;
|
||||
LD (DISPLAYBUF+1),A ;
|
||||
LD (DISPLAYBUF+6),A ;
|
||||
LD A,(HL) ; GET VALUE FROM ADDRESS IN HL
|
||||
AND 0FH ; CLEAR OUT HIGH NIBBLE
|
||||
LD (DISPLAYBUF),A ; DISPLAY LOW NIBBLE IN DISPLAY 0
|
||||
LD (DISPLAYBUF+7),A ; DISPLAY LOW NIBBLE IN DISPLAY 0
|
||||
LD HL,DISPLAYBUF ; POINT TO DISPLAY BUFFER
|
||||
CALL HEXDISPLAY ; DISPLAY BUFFER ON DISPLAYS
|
||||
CALL ENCDISPLAY ; DISPLAY BUFFER ON DISPLAYS
|
||||
POP HL ; RESTORE HL
|
||||
EXAMINEGETKEY:
|
||||
CALL KB_GET ; GET KEY FROM KB
|
||||
@@ -1264,10 +1264,14 @@ EXAMINEEXIT:
|
||||
;
|
||||
GETADDR:
|
||||
PUSH BC ; STORE BC
|
||||
JR GETADDRCLEAR ;
|
||||
GETADDR0:
|
||||
LD HL,ADDR ; INITIALIZE DISPLAYBUF
|
||||
LD DE,DISPLAYBUF
|
||||
LD BC,8
|
||||
LDIR
|
||||
GETADDR1:
|
||||
LD HL,ADDR ; DISPLAY PROMPT
|
||||
CALL SEGDISPLAY ;
|
||||
LD HL,DISPLAYBUF ; DISPLAY PROMPT
|
||||
CALL ENCDISPLAY ;
|
||||
GETADDRLOOP:
|
||||
CALL KB_GET ;
|
||||
CP 10H ;
|
||||
@@ -1275,107 +1279,48 @@ GETADDRLOOP:
|
||||
CP 13H ; EN PRESSED, DONE
|
||||
JR Z,GETADDRDONE ;
|
||||
CP 12H ; CLEAR PRESSED, CLEAR
|
||||
JR Z,GETADDRCLEAR ;
|
||||
JR Z,GETADDR0 ;
|
||||
JR GETADDRLOOP ; INVALID KEY, LOOP
|
||||
GETADDRDONE:
|
||||
LD HL,00H ; HL=0
|
||||
LD A,(DISPLAYBUF+1) ; GET DIGIT IN DISPLAY 1
|
||||
LD A,(DISPLAYBUF+6) ; GET DIGIT IN DISPLAY 1
|
||||
SLA A ; ROTATE IT TO HIGH NIBBLE
|
||||
SLA A ;
|
||||
SLA A ;
|
||||
SLA A ;
|
||||
LD C,A ; STORE IT IN "C"
|
||||
LD A,(DISPLAYBUF) ; GET DIGIT IN DISPLAY 0
|
||||
LD A,(DISPLAYBUF+7) ; GET DIGIT IN DISPLAY 0
|
||||
AND 0FH ; CLEAR HIGH NIBBLE
|
||||
OR C ; ADD IN NIBBLE STORED IN C
|
||||
LD L,A ; STORE IT IN LOW BYTE OF ADDRESS POINTER
|
||||
LD A,(DISPLAYBUF+3) ; GET DIGIT IN DISPLAY 3
|
||||
LD A,(DISPLAYBUF+4) ; GET DIGIT IN DISPLAY 3
|
||||
SLA A ; ROTATE IT TO HIGH NIBBLE
|
||||
SLA A ;
|
||||
SLA A ;
|
||||
SLA A ;
|
||||
LD C,A ; STORE IT IN "C"
|
||||
LD A,(DISPLAYBUF+2) ; GET DIGIT IN DISPLAY 2
|
||||
LD A,(DISPLAYBUF+5) ; GET DIGIT IN DISPLAY 2
|
||||
AND 0FH ; CLEAR HIGH NIBBLE
|
||||
OR C ; ADD IN NIBBLE STORED IN "C"
|
||||
LD H,A ; STORE BYTE IN HIGH BYTE OF ADDRESS POINTER
|
||||
LD A,10H ; CLEAR OUT DISPLAYS 0,1,2 & 3
|
||||
LD (DISPLAYBUF),A ;
|
||||
LD (DISPLAYBUF+1),A ;
|
||||
LD (DISPLAYBUF+2),A ;
|
||||
LD (DISPLAYBUF+3),A ;
|
||||
LD (DISPLAYBUF+7),A ;
|
||||
LD (DISPLAYBUF+6),A ;
|
||||
LD (DISPLAYBUF+5),A ;
|
||||
LD (DISPLAYBUF+4),A ;
|
||||
POP BC ; RESTORE BC
|
||||
RET
|
||||
GETADDRNUM:
|
||||
LD C,A ;
|
||||
LD A,(DISPLAYBUF+2) ; SHIFT BYTES IN DISPLAY BUF TO THE LEFT
|
||||
LD (DISPLAYBUF+3),A ;
|
||||
LD A,(DISPLAYBUF+1) ;
|
||||
LD (DISPLAYBUF+2),A ;
|
||||
LD A,(DISPLAYBUF) ;
|
||||
LD (DISPLAYBUF+1),A ;
|
||||
LD A,(DISPLAYBUF+5) ; SHIFT BYTES IN DISPLAY BUF TO THE LEFT
|
||||
LD (DISPLAYBUF+4),A ;
|
||||
LD A,(DISPLAYBUF+6) ;
|
||||
LD (DISPLAYBUF+5),A ;
|
||||
LD A,(DISPLAYBUF+7) ;
|
||||
LD (DISPLAYBUF+6),A ;
|
||||
LD A,C ; DISPLAY KEYSTROKE IN RIGHT MOST DISPLAY (0)
|
||||
LD (DISPLAYBUF+0),A ;
|
||||
JR GETADDRDISP ;
|
||||
GETADDRCLEAR:
|
||||
LD A,12H ; CLEAR OUT DISPLAYS 0,1,2 & 3
|
||||
LD (DISPLAYBUF),A ;
|
||||
LD (DISPLAYBUF+1),A ;
|
||||
LD (DISPLAYBUF+2),A ;
|
||||
LD (DISPLAYBUF+3),A ;
|
||||
GETADDRDISP:
|
||||
LD A,(DISPLAYBUF) ; ENCODE DIGITS IN DISPLAY BUFFER TO DISPLAY
|
||||
CALL DECODEDISPLAY ;
|
||||
LD (ADDR),A ;
|
||||
LD A,(DISPLAYBUF+1) ;
|
||||
CALL DECODEDISPLAY ;
|
||||
LD (ADDR+1),A ;
|
||||
LD A,(DISPLAYBUF+2) ;
|
||||
CALL DECODEDISPLAY ;
|
||||
LD (ADDR+2),A ;
|
||||
LD A,(DISPLAYBUF+3) ;
|
||||
CALL DECODEDISPLAY ;
|
||||
LD (ADDR+3),A ;
|
||||
JP GETADDR1 ;
|
||||
;
|
||||
;__DSPSECTOR__________________________________________________________________
|
||||
;
|
||||
; DISPLAY SECTOR IN HL ON FRONT PANEL
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
DSPSECTOR:
|
||||
PUSH BC ; STORE BC
|
||||
PUSH HL ; STORE HL
|
||||
LD A,H ; DISPLAY HIGH BYTE, HIGH NIBBLE
|
||||
SRL A ;
|
||||
SRL A ;
|
||||
SRL A ;
|
||||
SRL A ;
|
||||
AND 0FH ;
|
||||
CALL DECODEDISPLAY ;
|
||||
LD (SEC+3),A ;
|
||||
LD A,H ; DISPLAY HIGH BYTE, LOW NIBBLE
|
||||
AND 0FH ;
|
||||
CALL DECODEDISPLAY ;
|
||||
LD (SEC+2),A ;
|
||||
LD A,L ; DISPLAY LOW BYTE, HIGH NIBBLE
|
||||
AND 0F0H ;
|
||||
SRL A ;
|
||||
SRL A ;
|
||||
SRL A ;
|
||||
SRL A ;
|
||||
AND 0FH ;
|
||||
CALL DECODEDISPLAY ;
|
||||
LD (SEC+1),A ; DISPLAY LOW BYTE, LOW NIBBLE
|
||||
LD A,L ;
|
||||
AND 0FH ;
|
||||
CALL DECODEDISPLAY ;
|
||||
LD (SEC),A ;
|
||||
LD HL,SEC ; DISPLAY PROMPT
|
||||
CALL SEGDISPLAY ;
|
||||
POP HL ; RESTORE HL
|
||||
POP BC ; RESTORE BC
|
||||
RET
|
||||
LD (DISPLAYBUF+7),A ;
|
||||
JR GETADDR1 ;
|
||||
;
|
||||
;__GETPORT____________________________________________________________________
|
||||
;
|
||||
@@ -1384,10 +1329,14 @@ DSPSECTOR:
|
||||
;
|
||||
GETPORT:
|
||||
PUSH BC ; STORE BC
|
||||
JR GETPORTCLEAR ;
|
||||
GETPORT0:
|
||||
LD HL,PORT ; INITIALIZE DISPLAYBUF
|
||||
LD DE,DISPLAYBUF
|
||||
LD BC,8
|
||||
LDIR
|
||||
GETPORT1:
|
||||
LD HL,PORT ; DISPLAY PROMPT
|
||||
CALL SEGDISPLAY ;
|
||||
LD HL,DISPLAYBUF ; DISPLAY PROMPT
|
||||
CALL ENCDISPLAY ;
|
||||
GETPORTLOOP:
|
||||
CALL KB_GET ;
|
||||
CP 10H ;
|
||||
@@ -1395,44 +1344,32 @@ GETPORTLOOP:
|
||||
CP 13H ; EN PRESSED, DONE
|
||||
JR Z,GETPORTDONE ;
|
||||
CP 12H ; CLEAR PRESSED, CLEAR
|
||||
JR Z,GETPORTCLEAR ;
|
||||
JR Z,GETPORT0
|
||||
JR GETPORTLOOP ; INVALID KEY, LOOP
|
||||
GETPORTDONE:
|
||||
LD A,(DISPLAYBUF+1) ;
|
||||
LD A,(DISPLAYBUF+6) ;
|
||||
SLA A ;
|
||||
SLA A ;
|
||||
SLA A ;
|
||||
SLA A ;
|
||||
LD C,A ;
|
||||
LD A,(DISPLAYBUF) ;
|
||||
LD A,(DISPLAYBUF+7) ;
|
||||
AND 0FH ;
|
||||
OR C ;
|
||||
LD C,A ;
|
||||
LD A,10H ;
|
||||
LD (DISPLAYBUF),A ;
|
||||
LD (DISPLAYBUF+1),A ;
|
||||
LD (DISPLAYBUF+7),A ;
|
||||
LD (DISPLAYBUF+6),A ;
|
||||
LD A,C ;
|
||||
POP BC ; RESTORE BC
|
||||
RET
|
||||
GETPORTNUM:
|
||||
LD C,A ;
|
||||
LD A,(DISPLAYBUF) ;
|
||||
LD (DISPLAYBUF+1),A ;
|
||||
LD A,(DISPLAYBUF+7) ;
|
||||
LD (DISPLAYBUF+6),A ;
|
||||
LD A,C ;
|
||||
LD (DISPLAYBUF+0),A ;
|
||||
JR GETPORTDISP ;
|
||||
GETPORTCLEAR:
|
||||
LD A,12H ;
|
||||
LD (DISPLAYBUF),A ;
|
||||
LD (DISPLAYBUF+1),A ;
|
||||
GETPORTDISP:
|
||||
LD A,(DISPLAYBUF) ;
|
||||
CALL DECODEDISPLAY ;
|
||||
LD (PORT),A ;
|
||||
LD A,(DISPLAYBUF+1) ;
|
||||
CALL DECODEDISPLAY ;
|
||||
LD (PORT+1),A ;
|
||||
JP GETPORT1 ;
|
||||
LD (DISPLAYBUF+7),A ;
|
||||
JR GETPORT1 ;
|
||||
;
|
||||
;__GETVALUE___________________________________________________________________
|
||||
;
|
||||
@@ -1443,8 +1380,7 @@ GETVALUE:
|
||||
PUSH BC ; STORE BC
|
||||
JR GETVALUECLEAR ;
|
||||
GETVALUE1:
|
||||
CALL HEXDISPLAY ;
|
||||
|
||||
CALL ENCDISPLAY ;
|
||||
GETVALUELOOP:
|
||||
CALL KB_GET ;
|
||||
CP 10H ;
|
||||
@@ -1455,33 +1391,33 @@ GETVALUELOOP:
|
||||
JR Z,GETVALUECLEAR ;
|
||||
JR GETVALUELOOP ; INVALID KEY, LOOP
|
||||
GETVALUEDONE:
|
||||
LD A,(DISPLAYBUF+1) ;
|
||||
LD A,(DISPLAYBUF+6) ;
|
||||
SLA A ;
|
||||
SLA A ;
|
||||
SLA A ;
|
||||
SLA A ;
|
||||
LD C,A ;
|
||||
LD A,(DISPLAYBUF) ;
|
||||
LD A,(DISPLAYBUF+7) ;
|
||||
AND 0FH ;
|
||||
OR C ;
|
||||
LD C,A ;
|
||||
LD A,10H ;
|
||||
LD (DISPLAYBUF),A ;
|
||||
LD (DISPLAYBUF+1),A ;
|
||||
LD (DISPLAYBUF+7),A ;
|
||||
LD (DISPLAYBUF+6),A ;
|
||||
LD A,C ;
|
||||
POP BC ; RESTORE BC
|
||||
RET
|
||||
GETVALUENUM:
|
||||
LD C,A ;
|
||||
LD A,(DISPLAYBUF) ;
|
||||
LD (DISPLAYBUF+1),A ;
|
||||
LD A,(DISPLAYBUF+7) ;
|
||||
LD (DISPLAYBUF+6),A ;
|
||||
LD A,C ;
|
||||
LD (DISPLAYBUF+0),A ;
|
||||
LD (DISPLAYBUF+7),A ;
|
||||
JR GETVALUE1 ;
|
||||
GETVALUECLEAR:
|
||||
LD A,12H ;
|
||||
LD (DISPLAYBUF),A ;
|
||||
LD (DISPLAYBUF+1),A ;
|
||||
LD (DISPLAYBUF+7),A ;
|
||||
LD (DISPLAYBUF+6),A ;
|
||||
JP GETVALUE1 ;
|
||||
;
|
||||
;__MTERM_INIT_________________________________________________________________
|
||||
@@ -1508,77 +1444,37 @@ KB_GET:
|
||||
POP HL ; RESTORE HL
|
||||
RET
|
||||
;
|
||||
PAUSE:
|
||||
KB_SCAN_DELAY:
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
RET
|
||||
;__ENCDISPLAY_________________________________________________________________
|
||||
;
|
||||
;__HEXDISPLAY_________________________________________________________________
|
||||
;
|
||||
; DISPLAY CONTENTS OF DISPLAYBUF IN DECODED HEX BITS 0-3 ARE DISPLAYED DIG, BIT 7 IS DP
|
||||
;
|
||||
; DISPLAY CONTENTS OF DISPLAYBUF DECODED PER SEGDECODE TABLE
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
HEXDISPLAY:
|
||||
PUSH HL ; STORE HL
|
||||
PUSH AF ; STORE AF
|
||||
PUSH BC ; STORE BC
|
||||
LD BC,0007H
|
||||
ADD HL,BC
|
||||
LD B,08H ; SET DIGIT COUNT
|
||||
LD A,40H | 30H ; SET CONTROL PORT 7218 TO OFF
|
||||
OUT (PPIC),A ; OUTPUT
|
||||
CALL PAUSE ; WAIT
|
||||
LD A,0F0H ; SET CONTROL TO 1111 (DATA COMING, HEX DECODE,NO DECODE, NORMAL)
|
||||
OUT (PPIA),A ; OUTPUT TO PORT
|
||||
LD A,80H | 30H ; STROBE WRITE PULSE WITH CONTROL=1
|
||||
OUT (PPIC),A ; OUTPUT TO PORT
|
||||
CALL PAUSE ; WAIT
|
||||
LD A,40H | 30H ; SET CONTROL PORT 7218 TO OFF
|
||||
OUT (PPIC),A ; OUTPUT
|
||||
HEXDISPLAY_LP:
|
||||
LD A,(HL) ; GET DISPLAY DIGIT
|
||||
CALL DECODEDISPLAY ; DECODE DISPLAY
|
||||
OUT (PPIA),A ; OUT TO PPIA
|
||||
LD A,00H | 30H ; SET WRITE STROBE
|
||||
OUT (PPIC),A ; OUT TO PPIC
|
||||
CALL PAUSE ; DELAY
|
||||
LD A,40H | 30H ; SET CONTROL PORT OFF
|
||||
OUT (PPIC),A ; OUT TO PPIC
|
||||
CALL PAUSE ; WAIT
|
||||
DEC HL ; INC POINTER
|
||||
DJNZ HEXDISPLAY_LP ; LOOP FOR NEXT DIGIT
|
||||
ENCDISPLAY:
|
||||
PUSH HL ; SAVE HL
|
||||
PUSH AF ; SAVE AF
|
||||
PUSH BC ; SAVE BC
|
||||
PUSH DE ; SAVE DE
|
||||
LD DE,DECODEBUF ; DESTINATION FOR DECODED BYTES
|
||||
LD B,8 ; NUMBER OF BYTES TO DECODE
|
||||
ENCDISPLAY1:
|
||||
LD A,(HL) ; GET SOURCE BYTE
|
||||
INC HL ; BUMP TO NEXT BYTE FOR NEXT PASS
|
||||
PUSH HL ; SAVE POINTER
|
||||
LD HL,SEGDECODE
|
||||
CALL ADDHLA
|
||||
LD A,(HL) ; GET DECODED VALUE
|
||||
LD (DE),A ; SAVE IN DEST BUF
|
||||
INC DE ; INC DEST BUF PTR
|
||||
POP HL ; RESTORE POINTER
|
||||
DJNZ ENCDISPLAY1 ; LOOP THRU ALL BUF POSITIONS
|
||||
LD HL,DECODEBUF ; POINT TO DECODED BUFFER
|
||||
CALL SEGDISPLAY ; DISPLAY IT
|
||||
POP DE ; RESTORE DE
|
||||
POP BC ; RESTORE BC
|
||||
POP AF ; RESTORE AF
|
||||
POP HL ; RESTORE HL
|
||||
RET
|
||||
;
|
||||
;__DECODEDISPLAY______________________________________________________________
|
||||
;
|
||||
; DISPLAY CONTENTS OF DISPLAYBUF IN DECODED HEX BITS 0-3 ARE DISPLAYED DIG, BIT 7 IS DP
|
||||
;
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
DECODEDISPLAY:
|
||||
PUSH BC ; STORE BC
|
||||
PUSH HL ; STORE HL
|
||||
LD HL,SEGDECODE ; POINT HL TO DECODE TABLE
|
||||
LD B,00H ; RESET HIGH BYTE
|
||||
LD C,A ; CHAR INTO LOW BYTE
|
||||
ADD HL,BC ; SET TABLE POINTER
|
||||
LD A,(HL) ; GET VALUE
|
||||
POP HL ; RESTORE HL
|
||||
POP BC ; RESTORE BC
|
||||
RET
|
||||
;
|
||||
;__SEGDISPLAY_________________________________________________________________
|
||||
;
|
||||
; DISPLAY CONTENTS OF DISPLAYBUF IN DECODED HEX BITS 0-3 ARE DISPLAYED DIG, BIT 7 IS DP
|
||||
@@ -1586,43 +1482,18 @@ DECODEDISPLAY:
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
SEGDISPLAY:
|
||||
PUSH AF ; STORE AF
|
||||
PUSH BC ; STORE BC
|
||||
LD BC,0007H
|
||||
ADD HL,BC
|
||||
LD B,08H ; SET DIGIT COUNT
|
||||
LD A,40H | 30H ; SET CONTROL PORT 7218 TO OFF
|
||||
OUT (PPIC),A ; OUTPUT
|
||||
CALL PAUSE ; WAIT
|
||||
LD A,0F0H ; SET CONTROL TO 1111 (DATA COMING, HEX DECODE,NO DECODE, NORMAL)
|
||||
OUT (PPIA),A ; OUTPUT TO PORT
|
||||
LD A,80H | 30H ; STROBE WRITE PULSE WITH CONTROL=1
|
||||
OUT (PPIC),A ; OUTPUT TO PORT
|
||||
CALL PAUSE ; WAIT
|
||||
LD A,40H | 30H ; SET CONTROL PORT 7218 TO OFF
|
||||
OUT (PPIC),A ; OUTPUT
|
||||
SEGDISPLAY_LP:
|
||||
LD A,(HL) ; GET DISPLAY DIGIT
|
||||
OUT (PPIA),A ; OUT TO PPIA
|
||||
LD A,00H | 30H ; SET WRITE STROBE
|
||||
OUT (PPIC),A ; OUT TO PPIC
|
||||
CALL PAUSE ; DELAY
|
||||
LD A,40H | 30H ; SET CONTROL PORT OFF
|
||||
OUT (PPIC),A ; OUT TO PPIC
|
||||
CALL PAUSE ; WAIT
|
||||
DEC HL ; INC POINTER
|
||||
DJNZ SEGDISPLAY_LP ; LOOP FOR NEXT DIGIT
|
||||
POP BC ; RESTORE BC
|
||||
POP AF ; RESTORE AF
|
||||
PUSH AF
|
||||
PUSH BC
|
||||
CALL DSKY_SHOWRAW
|
||||
POP BC
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
CPUUP .DB $84,$EE,$BB,$80,$BB,$EE,$CB,$84
|
||||
ADDR .DB $00,$00,$00,$00,$8C,$BD,$BD,$FE
|
||||
PORT .DB $00,$00,$80,$80,$94,$8C,$9D,$EE
|
||||
SEC .DB $80,$80,$80,$80,$80,$CB,$CF,$D7
|
||||
CPUUP .DB $84,$CB,$EE,$BB,$80,$BB,$EE,$84 ; "-CPU UP-" (RAW)
|
||||
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)
|
||||
|
||||
;_KB DECODE TABLE_____________________________________________________________
|
||||
;
|
||||
;
|
||||
KB_DECODE:
|
||||
; 0 1 2 3 4 5 6 7 8 9 A B C D E F
|
||||
@@ -1643,14 +1514,18 @@ KB_DECODE:
|
||||
;
|
||||
;_HEX 7_SEG_DECODE_TABLE______________________________________________________
|
||||
;
|
||||
; 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F, ,-
|
||||
; 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F, ,-,.,P,o
|
||||
; AND WITH 7FH TO TURN ON DP
|
||||
;_____________________________________________________________________________
|
||||
SEGDECODE:
|
||||
.DB $FB,$B0,$ED,$F5,$B6,$D7,$DF,$F0,$FF,$F7,$FE,$9F
|
||||
.DB $CB,$BD,$CF,$CE,$80,$84,$00,$EE,$9D
|
||||
; 0 1 2 3 4 5 6 7 8 9 A B C D E F
|
||||
.DB $FB,$B0,$ED,$F5,$B6,$D7,$DF,$F0,$FF,$F7,$FE,$9F,$CB,$BD,$CF,$CE
|
||||
; - . P o r t A d r
|
||||
.DB $80,$84,$00,$EE,$9D,$8C,$94,$FE,$BD,$8C
|
||||
|
||||
;
|
||||
DISPLAYBUF: .FILL 8,0
|
||||
DECODEBUF: .FILL 8,0
|
||||
;
|
||||
#ELSE
|
||||
;
|
||||
|
||||
@@ -210,15 +210,32 @@ DSKY_HEXOUT1:
|
||||
INC HL
|
||||
INC DE ; NEXT BYTE
|
||||
DJNZ DSKY_HEXOUT1
|
||||
LD HL,DSKY_BUF
|
||||
JR DSKY_SHOWHEX
|
||||
;
|
||||
;==================================================================================================
|
||||
; DSKY SHOW BUFFER
|
||||
; HL: ADDRESS OF BUFFER
|
||||
; ENTER @ SHOWHEX FOR HEX DECODING
|
||||
; ENTER @ SHOWRAW FOR DIRECT SEGMENT DECODING
|
||||
;==================================================================================================
|
||||
;
|
||||
DSKY_SHOWHEX:
|
||||
LD A,$D0 ; 7218 -> (DATA COMING, HEXA DECODE)
|
||||
JR DSKY_SHOW
|
||||
|
||||
DSKY_SHOWRAW:
|
||||
LD A,$F0 ; 7218 -> (DATA COMING, NO DECODE)
|
||||
JR DSKY_SHOW
|
||||
|
||||
DSKY_SHOW:
|
||||
PUSH AF ; SAVE 7218 CONTROL BITS
|
||||
LD A,82H ; SETUP PPI
|
||||
OUT (PPIX),A
|
||||
CALL DSKY_COFF
|
||||
LD A,0D0H ; 7218 -> (DATA COMING, HEXA DECODE)
|
||||
POP AF
|
||||
OUT (PPIA),A
|
||||
CALL DSKY_STROBEC
|
||||
|
||||
LD HL,DSKY_BUF ; POINT TO START OF BUF
|
||||
LD B,DSKY_BUFLEN ; NUMBER OF DIGITS
|
||||
LD C,PPIA
|
||||
DSKY_HEXOUT2:
|
||||
|
||||
@@ -108,124 +108,123 @@ INT_IM1 .EQU $FF00
|
||||
;
|
||||
; RUN THE BOOT LOADER MENU
|
||||
;
|
||||
|
||||
LD DE,STR_BANNER ; DISPLAY BOOT BANNER
|
||||
LD DE,STR_BANNER ; DISPLAY BOOT BANNER
|
||||
|
||||
DOBOOTMENU:
|
||||
CALL WRITESTR ; DISPLAY MESSAGE OR ERROR
|
||||
CALL NEWLINE
|
||||
CALL WRITESTR ; DISPLAY MESSAGE OR ERROR
|
||||
CALL NEWLINE
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
LD HL,BOOT ; POINT TO BOOT MESSAGE
|
||||
CALL SEGDISPLAY ; DISPLAY MESSAGE
|
||||
LD HL,BOOT ; POINT TO BOOT MESSAGE
|
||||
CALL DSKY_SHOWRAW ; DISPLAY MESSAGE
|
||||
#ENDIF
|
||||
;
|
||||
#IF (BOOTTYPE == BT_AUTO)
|
||||
LD BC,100 * BOOT_TIMEOUT
|
||||
LD (BL_TIMEOUT),BC
|
||||
LD BC,100 * BOOT_TIMEOUT
|
||||
LD (BL_TIMEOUT),BC
|
||||
#ENDIF
|
||||
;
|
||||
LD B,MENU_N ; DISPLAY ALL ROM MENU ENTRIES
|
||||
LD DE,MENU_S
|
||||
LD HL,MENU_V
|
||||
LD B,MENU_N ; DISPLAY ALL ROM MENU ENTRIES
|
||||
LD DE,MENU_S
|
||||
LD HL,MENU_V
|
||||
MENU_L: PUSH DE
|
||||
WRITE_M:PUSH BC
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
POP HL
|
||||
LD BC,10
|
||||
ADD HL,BC ; HL POINTS TO MENU KEY
|
||||
WRITEM1:LD A,(DE)
|
||||
CP '$' ; TEST FOR STRING TERMINATOR
|
||||
JP Z,WRITEM2
|
||||
CP (HL)
|
||||
JR NZ,WRITEM3
|
||||
LD A,'('
|
||||
CALL COUT
|
||||
LD A,(DE)
|
||||
CALL COUT
|
||||
LD A,')'
|
||||
PUSH HL
|
||||
PUSH DE
|
||||
POP HL
|
||||
LD BC,10
|
||||
ADD HL,BC ; HL POINTS TO MENU KEY
|
||||
WRITEM1:LD A,(DE)
|
||||
CP '$' ; TEST FOR STRING TERMINATOR
|
||||
JP Z,WRITEM2
|
||||
CP (HL)
|
||||
JR NZ,WRITEM3
|
||||
LD A,'('
|
||||
CALL COUT
|
||||
LD A,(DE)
|
||||
CALL COUT
|
||||
LD A,')'
|
||||
WRITEM3:CALL COUT
|
||||
INC DE
|
||||
JR WRITEM1
|
||||
WRITEM2:POP HL
|
||||
POP BC
|
||||
INC DE
|
||||
JR WRITEM1
|
||||
WRITEM2:POP HL
|
||||
POP BC
|
||||
|
||||
POP DE
|
||||
EX DE,HL
|
||||
ADD HL,DE
|
||||
EX DE,HL
|
||||
DJNZ MENU_L ; NEXT MENU ITEM
|
||||
POP DE
|
||||
EX DE,HL
|
||||
ADD HL,DE
|
||||
EX DE,HL
|
||||
DJNZ MENU_L ; NEXT MENU ITEM
|
||||
|
||||
CALL NEWLINE ; DISPLAY AVAILABLE DRIVES
|
||||
CALL PRTALL
|
||||
CALL PC_COLON
|
||||
CALL NEWLINE ; DISPLAY AVAILABLE DRIVES
|
||||
CALL PRTALL
|
||||
CALL PC_COLON
|
||||
|
||||
DB_BOOTLOOP:
|
||||
|
||||
CALL CST ; CHECK CONSOLE INPUT
|
||||
OR A
|
||||
JR NZ,GOTK1
|
||||
CALL CST ; CHECK CONSOLE INPUT
|
||||
OR A
|
||||
JR NZ,GOTK1
|
||||
|
||||
#IF (DSKYENABLE)
|
||||
CALL KY_STAT ; CHECK DSKY INPUR
|
||||
OR A
|
||||
JR Z,GOTNK
|
||||
CALL KY_STAT ; CHECK DSKY INPUR
|
||||
OR A
|
||||
JR Z,GOTNK
|
||||
|
||||
CALL KY_GET
|
||||
JR MENU_A
|
||||
CALL KY_GET
|
||||
JR MENU_A
|
||||
#ENDIF
|
||||
|
||||
GOTNK: ; CHECK AUTOBOOT TIMEOUT
|
||||
GOTNK: ; CHECK AUTOBOOT TIMEOUT
|
||||
|
||||
#IF (BOOTTYPE == BT_AUTO)
|
||||
LD DE,625 ; DELAY FOR 10MS TO MAKE TIMEOUT CALC EASY
|
||||
CALL VDELAY ; 16US * 625 = 10MS
|
||||
LD BC,(BL_TIMEOUT) ; CHECK/INCREMENT TIMEOUT
|
||||
DEC BC
|
||||
LD (BL_TIMEOUT),BC
|
||||
LD A,B
|
||||
OR C
|
||||
JP NZ,DB_BOOTLOOP
|
||||
LD DE,625 ; DELAY FOR 10MS TO MAKE TIMEOUT CALC EASY
|
||||
CALL VDELAY ; 16US * 625 = 10MS
|
||||
LD BC,(BL_TIMEOUT) ; CHECK/INCREMENT TIMEOUT
|
||||
DEC BC
|
||||
LD (BL_TIMEOUT),BC
|
||||
LD A,B
|
||||
OR C
|
||||
JP NZ,DB_BOOTLOOP
|
||||
|
||||
LD A,BOOT_DEFAULT ; TIMEOUT EXPIRED,
|
||||
JR MENU_A ; PERFORM DEFAULT BOOT ACTION
|
||||
LD A,BOOT_DEFAULT ; TIMEOUT EXPIRED,
|
||||
JR MENU_A ; PERFORM DEFAULT BOOT ACTION
|
||||
#ENDIF
|
||||
JR DB_BOOTLOOP
|
||||
JR DB_BOOTLOOP
|
||||
|
||||
GOTK1: CALL CINUC
|
||||
|
||||
MENU_A: LD B,MENU_N
|
||||
LD DE,MENU_S+10-MENU_V
|
||||
LD HL,MENU_V
|
||||
MENU_C: EX DE,HL
|
||||
ADD HL,DE
|
||||
CP (HL)
|
||||
EX DE,HL
|
||||
JR Z,MENU_X
|
||||
DJNZ MENU_C ; FALL THRU IF IT DOES NOT MATCH ROM MENU
|
||||
MENU_A: LD B,MENU_N
|
||||
LD DE,MENU_S+10-MENU_V
|
||||
LD HL,MENU_V
|
||||
MENU_C: EX DE,HL
|
||||
ADD HL,DE
|
||||
CP (HL)
|
||||
EX DE,HL
|
||||
JR Z,MENU_X
|
||||
DJNZ MENU_C ; FALL THRU IF IT DOES NOT MATCH ROM MENU
|
||||
|
||||
; CHECK FOR DRIVE EXECUTION
|
||||
; CHECK FOR DRIVE EXECUTION
|
||||
|
||||
CP '0' ; 0-9, DISK DEVICE
|
||||
JR C,DB_INVALID
|
||||
CP '9' + 1
|
||||
JR NC,DB_INVALID
|
||||
SUB '0'
|
||||
JP GOBOOTDISK
|
||||
CP '0' ; 0-9, DISK DEVICE
|
||||
JR C,DB_INVALID
|
||||
CP '9' + 1
|
||||
JR NC,DB_INVALID
|
||||
SUB '0'
|
||||
JP GOBOOTDISK
|
||||
|
||||
MENU_X: CALL NEWLINE
|
||||
EX DE,HL ; WE HAVE A VALID ROM MENU OPTION
|
||||
INC HL
|
||||
LD E,(HL)
|
||||
INC HL
|
||||
LD D,(HL)
|
||||
EX DE,HL
|
||||
JP (HL) ; JUMP TO THE ROUTINE TO EXECUTE IT
|
||||
EX DE,HL ; WE HAVE A VALID ROM MENU OPTION
|
||||
INC HL
|
||||
LD E,(HL)
|
||||
INC HL
|
||||
LD D,(HL)
|
||||
EX DE,HL
|
||||
JP (HL) ; JUMP TO THE ROUTINE TO EXECUTE IT
|
||||
|
||||
DB_INVALID:
|
||||
LD DE,STR_INVALID
|
||||
JP DOBOOTMENU
|
||||
LD DE,STR_INVALID
|
||||
JP DOBOOTMENU
|
||||
|
||||
#DEFINE MENU_L(M1,M2,M3,M4,M5,M6,M7,M8,M9,M10) \
|
||||
#DEFCONT \ .DB M1
|
||||
@@ -253,55 +252,55 @@ MENU_1: MENU_L("CP/M $ $", "C", GOROM, BID_BIOSIMG, CPM_ENT, 2000h,
|
||||
MENU_L("DSKY-MON $", "D", GOROM, BID_BIOSIMG, MON_DSKY, 1000h, MON_LOC, MON_SIZ, BID_USR, "DSKY Monitor$")
|
||||
#ENDIF
|
||||
|
||||
.DB "REBOOT$ ", "R"
|
||||
.DW REBOOT
|
||||
.DB "REBOOT$ ", "R"
|
||||
.DW REBOOT
|
||||
|
||||
MENU_E:
|
||||
MENU_V .EQU MENU_1-MENU_S ; LENGTH OF EACH MENU RECORD
|
||||
MENU_N .EQU ((MENU_E-MENU_S)/MENU_V)+1; NUMBER OF MENU ITEMS
|
||||
MENU_N .EQU ((MENU_E-MENU_S)/MENU_V)+1 ; NUMBER OF MENU ITEMS
|
||||
;
|
||||
; BOOT OPTION PROCESSING
|
||||
;
|
||||
GOROM: EX DE,HL
|
||||
INC HL ; HL POINTS TO source-bank
|
||||
GOROM: EX DE,HL
|
||||
INC HL ; HL POINTS TO source-bank
|
||||
|
||||
LD B,4 ; PUT NEXT FOUR ADDRESSES ON STACK
|
||||
GOROM_1:INC HL
|
||||
LD E,(HL)
|
||||
INC HL
|
||||
LD D,(HL)
|
||||
PUSH DE
|
||||
DJNZ GOROM_1
|
||||
LD B,4 ; PUT NEXT FOUR ADDRESSES ON STACK
|
||||
GOROM_1:INC HL
|
||||
LD E,(HL)
|
||||
INC HL
|
||||
LD D,(HL)
|
||||
PUSH DE
|
||||
DJNZ GOROM_1
|
||||
|
||||
POP BC ; SIZE
|
||||
POP DE ; DEST
|
||||
POP HL ; SOURCE
|
||||
LDIR
|
||||
JR CHAIN
|
||||
POP BC ; SIZE
|
||||
POP DE ; DEST
|
||||
POP HL ; SOURCE
|
||||
LDIR
|
||||
JR CHAIN
|
||||
|
||||
GOROMB: EX DE,HL
|
||||
INC HL ; HL POINTS TO source-bank
|
||||
GOROMB: EX DE,HL
|
||||
INC HL ; HL POINTS TO source-bank
|
||||
|
||||
LD B,4 ; PUT NEXT FOUR ADDRESSES ON STACK
|
||||
GOROMB1:INC HL
|
||||
LD E,(HL)
|
||||
INC HL
|
||||
LD D,(HL)
|
||||
PUSH DE
|
||||
DJNZ GOROMB1
|
||||
LD B,4 ; PUT NEXT FOUR ADDRESSES ON STACK
|
||||
GOROMB1:INC HL
|
||||
LD E,(HL)
|
||||
INC HL
|
||||
LD D,(HL)
|
||||
PUSH DE
|
||||
DJNZ GOROMB1
|
||||
|
||||
POP HL ; SIZE
|
||||
LD B,BF_SYSSETCPY ; HBIOS FUNC: SETUP BANK COPY
|
||||
LD D,BID_USR ; D = DEST BANK = USER BANK
|
||||
LD E,BID_OSIMG ; E = SRC BANK = BIOS BANK
|
||||
RST 08
|
||||
POP HL ; SIZE
|
||||
LD B,BF_SYSSETCPY ; HBIOS FUNC: SETUP BANK COPY
|
||||
LD D,BID_USR ; D = DEST BANK = USER BANK
|
||||
LD E,BID_OSIMG ; E = SRC BANK = BIOS BANK
|
||||
RST 08
|
||||
|
||||
POP DE ; DEST
|
||||
POP HL ; SOURCE
|
||||
LD B,BF_SYSBNKCPY ; HBIOS FUNC: PERFORM BANK COPY
|
||||
RST 08 ; DO IT
|
||||
POP DE ; DEST
|
||||
POP HL ; SOURCE
|
||||
LD B,BF_SYSBNKCPY ; HBIOS FUNC: PERFORM BANK COPY
|
||||
RST 08 ; DO IT
|
||||
|
||||
CHAIN: ; EXPECT EXEC ADDRESS ON TOP OF STACK
|
||||
CHAIN: ; EXPECT EXEC ADDRESS ON TOP OF STACK
|
||||
|
||||
#IF (PLATFORM == PLT_UNA)
|
||||
LD BC,$00FB ; GET LOWER PAGE ID
|
||||
@@ -324,17 +323,17 @@ CHAIN: ; EXPECT EXEC ADDRESS ON TOP OF STACK
|
||||
RST 08
|
||||
;
|
||||
LD A,BID_USR ; ACTIVATE USER BANK
|
||||
POP HL ; RECOVER ENTRY ADDRESS
|
||||
DI ; ENTER WITH INTS DISABLED
|
||||
POP HL ; RECOVER ENTRY ADDRESS
|
||||
DI ; ENTER WITH INTS DISABLED
|
||||
CALL HB_BNKCALL ; AND GO
|
||||
HALT ; WE SHOULD NEVER RETURN!!!
|
||||
#ENDIF
|
||||
;
|
||||
; REBOOT ROMLDR
|
||||
; REBOOT ROMLDR
|
||||
;
|
||||
REBOOT: LD A,BID_BOOT ; BOOT BANK
|
||||
LD HL,0 ; ADDRESS ZERO
|
||||
CALL HB_BNKCALL ; DOES NOT RETURN
|
||||
REBOOT: LD A,BID_BOOT ; BOOT BANK
|
||||
LD HL,0 ; ADDRESS ZERO
|
||||
CALL HB_BNKCALL ; DOES NOT RETURN
|
||||
|
||||
GOBOOTDISK:
|
||||
LD (BL_BOOTID),A
|
||||
@@ -544,50 +543,6 @@ DB_ERR:
|
||||
LD DE,STR_BOOTERR
|
||||
JP DOBOOTMENU
|
||||
;
|
||||
#IF (DSKYENABLE)
|
||||
;
|
||||
;__SEGDISPLAY________________________________________________________________________________________
|
||||
;
|
||||
; DISPLAY CONTENTS OF DISPLAYBUF IN DECODED HEX BITS 0-3 ARE DISPLAYED DIG, BIT 7 IS DP
|
||||
;____________________________________________________________________________________________________
|
||||
;
|
||||
SEGDISPLAY:
|
||||
PUSH AF ; STORE AF
|
||||
PUSH BC ; STORE BC
|
||||
PUSH HL ; STORE HL
|
||||
LD BC,0007H
|
||||
ADD HL,BC
|
||||
LD B,08H ; SET DIGIT COUNT
|
||||
LD A,40H | 30H ; SET CONTROL PORT 7218 TO OFF
|
||||
OUT (PPIC),A ; OUTPUT
|
||||
CALL DLY2 ; WAIT
|
||||
LD A,0F0H ; SET CONTROL TO 1111 (DATA COMING, HEX DECODE,NO DECODE, NORMAL)
|
||||
|
||||
SEGDISPLAY1: ;
|
||||
OUT (PPIA),A ; OUTPUT TO PORT
|
||||
LD A,80H | 30H ; STROBE WRITE PULSE WITH CONTROL=1
|
||||
OUT (PPIC),A ; OUTPUT TO PORT
|
||||
CALL DLY2 ; WAIT
|
||||
LD A,40H | 30H ; SET CONTROL PORT 7218 TO OFF
|
||||
OUT (PPIC),A ; OUTPUT
|
||||
|
||||
SEGDISPLAY_LP:
|
||||
LD A,(HL) ; GET DISPLAY DIGIT
|
||||
OUT (PPIA),A ; OUT TO PPIA
|
||||
LD A,00H | 30H ; SET WRITE STROBE
|
||||
OUT (PPIC),A ; OUT TO PPIC
|
||||
CALL DLY2 ; DELAY
|
||||
LD A,40H | 30H ; SET CONTROL PORT OFF
|
||||
OUT (PPIC),A ; OUT TO PPIC
|
||||
CALL DLY2 ; WAIT
|
||||
DEC HL ; INC POINTER
|
||||
DJNZ SEGDISPLAY_LP ; LOOP FOR NEXT DIGIT
|
||||
POP HL ; RESTORE HL
|
||||
POP BC ; RESTORE BC
|
||||
POP AF ; RESTORE AF
|
||||
RET
|
||||
#ENDIF
|
||||
|
||||
#IF (PLATFORM == PLT_UNA)
|
||||
;
|
||||
;
|
||||
@@ -782,11 +737,10 @@ STR_BOOTERR .DB "\r\nBoot failure!$"
|
||||
STR_BANNER .DB "\r\n", PLATFORM_NAME, " Boot Loader"
|
||||
STR_NL .DB "\r\n$"
|
||||
;
|
||||
.IF DSKYENABLE
|
||||
BOOT:
|
||||
; . . t o o b
|
||||
.DB 00H, 00H, 80H, 80H, 094H, 09DH, 09DH, 09FH
|
||||
.ENDIF
|
||||
#IF (DSKYENABLE)
|
||||
; b o o t . .
|
||||
BOOT .DB $9F,$9D,$9D,$94,$80,$80,$00,$00
|
||||
#ENDIF
|
||||
;
|
||||
#DEFINE USEDELAY
|
||||
#INCLUDE "util.asm"
|
||||
|
||||
Reference in New Issue
Block a user