Browse Source

Merge pull request #3 from wwarthen/master

Resync
pull/20/head
b1ackmai1er 7 years ago
committed by GitHub
parent
commit
2701c43161
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      Source/HBIOS/cfg_mk4.asm
  2. 1
      Source/HBIOS/cfg_n8.asm
  3. 1
      Source/HBIOS/cfg_rc.asm
  4. 1
      Source/HBIOS/cfg_rc180.asm
  5. 1
      Source/HBIOS/cfg_zeta.asm
  6. 443
      Source/HBIOS/dbgmon.asm
  7. 29
      Source/HBIOS/dsky.asm
  8. 312
      Source/HBIOS/romldr.asm

1
Source/HBIOS/cfg_mk4.asm

@ -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)

1
Source/HBIOS/cfg_n8.asm

@ -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)

1
Source/HBIOS/cfg_rc.asm

@ -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)

1
Source/HBIOS/cfg_rc180.asm

@ -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)

1
Source/HBIOS/cfg_zeta.asm

@ -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)

443
Source/HBIOS/dbgmon.asm

@ -1,5 +1,4 @@
;___ROM_MONITOR_PROGRAM_______________________________________________________
;___ROM_MONITOR_PROGRAM_______________________________________________________
;
; ORIGINAL CODE BY: ANDREW LYNCH (LYNCHAJ@YAHOO COM) 13 FEB 2007
;
@ -1004,6 +1003,7 @@ TXT_HELP:
;
#IF DSKYENABLE
;
#DEFINE DSKY_KBD
#INCLUDE "dsky.asm"
;
;
@ -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_________________________________________________________________
@ -1503,162 +1439,42 @@ MTERM_INIT:
;_____________________________________________________________________________
;
KB_GET:
PUSH HL ; STORE HL
KB_GET_LOOP: ; WAIT FOR KEY
CALL KB_SCAN ; SCAN KB ONCE
CP 00H ; NULL?
JR Z,KB_GET_LOOP ; LOOP WHILE NOT ZERO
LD D,A ; STORE A
LD A,4FH | 30H ; SCAN ALL COL LINES
OUT (PPIC),A ; SEND TO COLUMN LINES
CALL KB_SCAN_DELAY ; DELAY TO ALLOW LINES TO STABILIZE
KB_CLEAR_LOOP: ; WAIT FOR KEY TO CLEAR
IN A,(PPIB) ; GET ROWS
AND 7FH ;ignore PB7 for PPISD
CP 00H ; ANYTHING PRESSED?
JR NZ,KB_CLEAR_LOOP ; YES, EXIT
LD A,D ; RESTORE A
LD D,00H ;
LD HL,KB_DECODE ; POINT TO BEGINNING OF TABLE
KB_GET_LLOOP:
CP (HL) ; MATCH?
JR Z,KB_GET_DONE ; FOUND, DONE
INC HL
INC D ; D + 1
JP NZ,KB_GET_LLOOP ; NOT FOUND, LOOP UNTIL EOT
KB_GET_DONE:
LD A,D ; RESULT INTO A
PUSH HL ; SAVE HL
CALL KY_GET ; GET A KEY
POP HL ; RESTORE HL
RET
;
;__KB_SCAN____________________________________________________________________
;
; SCAN KEYBOARD MATRIX FOR AN INPUT
;
;_____________________________________________________________________________
;
KB_SCAN:
LD C,0000H
LD A,41H | 30H ; SCAN COL ONE
OUT (PPIC),A ; SEND TO COLUMN LINES
CALL KB_SCAN_DELAY ; DELAY TO ALLOW LINES TO STABILIZE
IN A,(PPIB) ; GET ROWS
AND 7FH ;ignore PB7 for PPISD
CP 00H ; ANYTHING PRESSED?
JR NZ,KB_SCAN_FOUND ; YES, EXIT
LD C,0040H
LD A,42H | 30H ; SCAN COL TWO
OUT (PPIC),A ; SEND TO COLUMN LINES
CALL KB_SCAN_DELAY ; DELAY TO ALLOW LINES TO STABILIZE
IN A,(PPIB) ; GET ROWS
AND 7FH ;ignore PB7 for PPISD
CP 00H ; ANYTHING PRESSED?
JR NZ,KB_SCAN_FOUND ; YES, EXIT
LD C,0080H
LD A,44H | 30H ; SCAN COL THREE
OUT (PPIC),A ; SEND TO COLUMN LINES
CALL KB_SCAN_DELAY ; DELAY TO ALLOW LINES TO STABILIZE
IN A,(PPIB) ; GET ROWS
AND 7FH ;ignore PB7 for PPISD
CP 00H ; ANYTHING PRESSED?
JR NZ,KB_SCAN_FOUND ; YES, EXIT
LD C,00C0H ;
LD A,48H | 30H ; SCAN COL FOUR
OUT (PPIC),A ; SEND TO COLUMN LINES
CALL KB_SCAN_DELAY ; DELAY TO ALLOW LINES TO STABILIZE
IN A,(PPIB) ; GET ROWS
AND 7FH ;ignore PB7 for PPISD
CP 00H ; ANYTHING PRESSED?
JR NZ,KB_SCAN_FOUND ; YES, EXIT
LD A, 40H | 30H ; TURN OFF ALL COLUMNS
OUT (PPIC),A ; SEND TO COLUMN LINES
LD A, 00H ; RETURN NULL
RET ; EXIT
KB_SCAN_FOUND:
AND 3FH ; CLEAR TOP TWO BITS
OR C ; ADD IN ROW BITS
LD C,A ; STORE VALUE
LD A, 00H | 30H ; TURN OFF ALL COLUMNS
OUT (PPIC),A ; SEND TO COLUMN LINES
LD A,C ; RESTORE VALUE
RET
PAUSE:
KB_SCAN_DELAY:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RET
;
;__HEXDISPLAY_________________________________________________________________
;__ENCDISPLAY_________________________________________________________________
;
; 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
@ -1666,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
@ -1723,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
;

29
Source/HBIOS/dsky.asm

@ -197,28 +197,45 @@ DSKY_HEXOUT:
LD HL,DSKY_BUF
LD DE,DSKY_HEXBUF
DSKY_HEXOUT1:
LD A,(DE) ; FIRST NIBBLE
LD A,(DE) ; FIRST NIBBLE
SRL A
SRL A
SRL A
SRL A
LD (HL),A
INC HL
LD A,(DE) ; SECOND NIBBLE
LD A,(DE) ; SECOND NIBBLE
AND 0FH
LD (HL),A
INC HL
INC DE ; NEXT BYTE
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:

312
Source/HBIOS/romldr.asm

@ -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 A,BOOT_DEFAULT ; TIMEOUT EXPIRED,
JR MENU_A ; PERFORM DEFAULT BOOT ACTION
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
#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
; 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
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
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
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
POP BC ; SIZE
POP DE ; DEST
POP HL ; SOURCE
LDIR
JR CHAIN
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
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"

Loading…
Cancel
Save