|
|
@ -19,13 +19,6 @@ |
|
|
; |
|
|
; |
|
|
#INCLUDE "std.asm" |
|
|
#INCLUDE "std.asm" |
|
|
; |
|
|
; |
|
|
;__CONSTANTS__________________________________________________________________ |
|
|
|
|
|
; |
|
|
|
|
|
CR: .EQU 0DH ; ASCII CARRIAGE RETURN CHARACTER |
|
|
|
|
|
LF: .EQU 0AH ; ASCII LINE FEED CHARACTER |
|
|
|
|
|
ESC: .EQU 1BH ; ASCII ESCAPE CHARACTER |
|
|
|
|
|
BS: .EQU 08H ; ASCII BACKSPACE CHARACTER |
|
|
|
|
|
; |
|
|
|
|
|
;__MAIN_PROGRAM_______________________________________________________________ |
|
|
;__MAIN_PROGRAM_______________________________________________________________ |
|
|
; |
|
|
; |
|
|
; ORG 00100h ; FOR DEBUG IN CP/M (AS .COM) |
|
|
; ORG 00100h ; FOR DEBUG IN CP/M (AS .COM) |
|
|
@ -49,20 +42,20 @@ UART_ENTRY: |
|
|
CALL INITIALIZE ; INITIALIZE SYSTEM |
|
|
CALL INITIALIZE ; INITIALIZE SYSTEM |
|
|
|
|
|
|
|
|
LD HL,TXT_READY ; POINT AT TEXT |
|
|
LD HL,TXT_READY ; POINT AT TEXT |
|
|
CALL MSG ; SHOW WE'RE HERE |
|
|
|
|
|
|
|
|
CALL PRTSTR ; SHOW WE'RE HERE |
|
|
; |
|
|
; |
|
|
;__SERIAL_MONITOR_COMMANDS____________________________________________________ |
|
|
;__SERIAL_MONITOR_COMMANDS____________________________________________________ |
|
|
; |
|
|
; |
|
|
; B - BOOT SYSTEM |
|
|
; B - BOOT SYSTEM |
|
|
; D XXXX YYYY - DUMP MEMORY FROM XXXX TO YYYY |
|
|
; D XXXX YYYY - DUMP MEMORY FROM XXXX TO YYYY |
|
|
; F XXXX YYYY ZZ - FILL MEMORY FROM XXXX TO YYYY WITH ZZ |
|
|
; F XXXX YYYY ZZ - FILL MEMORY FROM XXXX TO YYYY WITH ZZ |
|
|
; H - LOAD INTEL HEX FORMAT DATA |
|
|
|
|
|
|
|
|
; I XX - SHOW VALUE AT PORT XX |
|
|
; K - ECHO KEYBOARD INPUT |
|
|
; K - ECHO KEYBOARD INPUT |
|
|
; L XX - INPUT FROM PORT XX AND SHOW HEX DATA |
|
|
|
|
|
; M XXXX YYYY ZZZZ - MOVE MEMORY BLOCK XXXX TO YYYY TO ZZZZ |
|
|
|
|
|
; O XX YY - OUTPUT TO PORT XX HEX DATA YY |
|
|
|
|
|
; P XXXX - PROGRAM RAM STARTING AT XXXXH, WILL PROMPT FOR SUCCESSIVE VALUES |
|
|
|
|
|
; R XXXX - RUN A PROGRAM FROM LOCATION XXXX |
|
|
|
|
|
|
|
|
; 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 |
|
|
; |
|
|
; |
|
|
;__COMMAND_PARSE______________________________________________________________ |
|
|
;__COMMAND_PARSE______________________________________________________________ |
|
|
; |
|
|
; |
|
|
@ -72,7 +65,8 @@ UART_ENTRY: |
|
|
|
|
|
|
|
|
SERIALCMDLOOP: |
|
|
SERIALCMDLOOP: |
|
|
LD SP,MON_STACK ; RESET STACK |
|
|
LD SP,MON_STACK ; RESET STACK |
|
|
CALL CRLFA ; CR,LF,> |
|
|
|
|
|
|
|
|
LD HL,PROMPT ; |
|
|
|
|
|
CALL PRTSTR ; |
|
|
LD HL,KEYBUF ; SET POINTER TO KEYBUF AREA |
|
|
LD HL,KEYBUF ; SET POINTER TO KEYBUF AREA |
|
|
CALL GETLN ; GET A LINE OF INPUT FROM THE USER |
|
|
CALL GETLN ; GET A LINE OF INPUT FROM THE USER |
|
|
LD HL,KEYBUF ; RESET POINTER TO START OF KEYBUF |
|
|
LD HL,KEYBUF ; RESET POINTER TO START OF KEYBUF |
|
|
@ -93,7 +87,7 @@ SERIALCMDLOOP: |
|
|
JP Z,PIN ; PORT INPUT |
|
|
JP Z,PIN ; PORT INPUT |
|
|
CP 'D' ; IS IT A "D" (Y/N) |
|
|
CP 'D' ; IS IT A "D" (Y/N) |
|
|
JP Z,DUMPMEM ; DUMP MEMORY |
|
|
JP Z,DUMPMEM ; DUMP MEMORY |
|
|
CP 'K' |
|
|
|
|
|
|
|
|
CP 'K' ; IS IT A "K" (Y/N) |
|
|
JP Z,KLOP ; LOOP ON KEYBOARD |
|
|
JP Z,KLOP ; LOOP ON KEYBOARD |
|
|
CP 'M' ; IS IT A "M" (Y/N) |
|
|
CP 'M' ; IS IT A "M" (Y/N) |
|
|
JP Z,MOVEMEM ; MOVE MEMORY COMMAND |
|
|
JP Z,MOVEMEM ; MOVE MEMORY COMMAND |
|
|
@ -102,7 +96,7 @@ SERIALCMDLOOP: |
|
|
CP 'H' ; IS IT A "H" (Y/N) |
|
|
CP 'H' ; IS IT A "H" (Y/N) |
|
|
JP Z,HELP ; HELP COMMAND |
|
|
JP Z,HELP ; HELP COMMAND |
|
|
LD HL,TXT_COMMAND ; POINT AT ERROR TEXT |
|
|
LD HL,TXT_COMMAND ; POINT AT ERROR TEXT |
|
|
CALL MSG ; PRINT COMMAND LABEL |
|
|
|
|
|
|
|
|
CALL PRTSTR ; PRINT COMMAND LABEL |
|
|
|
|
|
|
|
|
JR SERIALCMDLOOP |
|
|
JR SERIALCMDLOOP |
|
|
; |
|
|
; |
|
|
@ -130,9 +124,9 @@ INITIALIZE: |
|
|
BOOT: |
|
|
BOOT: |
|
|
#IF (PLATFORM == PLT_UNA) |
|
|
#IF (PLATFORM == PLT_UNA) |
|
|
LD BC,$01FB ; UNA FUNC = SET BANK |
|
|
LD BC,$01FB ; UNA FUNC = SET BANK |
|
|
LD DE,$0000 ; ROM BANK 0 |
|
|
|
|
|
|
|
|
LD DE,0 ; ROM BANK 0 |
|
|
CALL $FFFD ; DO IT (RST 08 NOT SAFE HERE) |
|
|
CALL $FFFD ; DO IT (RST 08 NOT SAFE HERE) |
|
|
JP 0000H ; JUMP TO RESTART ADDRESS |
|
|
|
|
|
|
|
|
JP 0 ; JUMP TO RESTART ADDRESS |
|
|
#ELSE |
|
|
#ELSE |
|
|
LD A,BID_BOOT ; BOOT BANK |
|
|
LD A,BID_BOOT ; BOOT BANK |
|
|
LD HL,0 ; ADDRESS ZERO |
|
|
LD HL,0 ; ADDRESS ZERO |
|
|
@ -167,14 +161,12 @@ PROGRM: |
|
|
CP 0 ; TEST FOR TERMINATING NULL |
|
|
CP 0 ; TEST FOR TERMINATING NULL |
|
|
JP NZ,ERR ; ERROR IF NOT TERMINATING NULL |
|
|
JP NZ,ERR ; ERROR IF NOT TERMINATING NULL |
|
|
PROGRM1: |
|
|
PROGRM1: |
|
|
CALL CRLF |
|
|
|
|
|
|
|
|
CALL NEWLINE |
|
|
POP HL |
|
|
POP HL |
|
|
PUSH HL |
|
|
PUSH HL |
|
|
CALL PHL |
|
|
CALL PHL |
|
|
LD A,':' |
|
|
|
|
|
CALL COUT |
|
|
|
|
|
CALL SPACE |
|
|
|
|
|
CALL COUT |
|
|
|
|
|
|
|
|
CALL PC_COLON |
|
|
|
|
|
CALL PC_SPACE |
|
|
LD HL,KEYBUF |
|
|
LD HL,KEYBUF |
|
|
CALL GETLN |
|
|
CALL GETLN |
|
|
LD HL,KEYBUF |
|
|
LD HL,KEYBUF |
|
|
@ -190,7 +182,7 @@ PROGRM1: |
|
|
JR PROGRM1 |
|
|
JR PROGRM1 |
|
|
PROGRM2: |
|
|
PROGRM2: |
|
|
LD HL,TXT_BADNUM |
|
|
LD HL,TXT_BADNUM |
|
|
CALL MSG |
|
|
|
|
|
|
|
|
CALL PRTSTR |
|
|
JR PROGRM1 |
|
|
JR PROGRM1 |
|
|
; |
|
|
; |
|
|
;__KLOP_______________________________________________________________________ |
|
|
;__KLOP_______________________________________________________________________ |
|
|
@ -199,10 +191,10 @@ PROGRM2: |
|
|
;_____________________________________________________________________________ |
|
|
;_____________________________________________________________________________ |
|
|
; |
|
|
; |
|
|
KLOP: |
|
|
KLOP: |
|
|
CALL CRLF ; |
|
|
|
|
|
|
|
|
CALL NEWLINE ; |
|
|
KLOP1: |
|
|
KLOP1: |
|
|
CALL KIN ; GET A KEY |
|
|
CALL KIN ; GET A KEY |
|
|
CP ESC ; IS <ESC>? |
|
|
|
|
|
|
|
|
CP CHR_ESC ; IS <ESC>? |
|
|
JP Z,SERIALCMDLOOP ; IF SO, ALL DONE |
|
|
JP Z,SERIALCMDLOOP ; IF SO, ALL DONE |
|
|
CALL COUT ; OUTPUT KEY TO SCREEN |
|
|
CALL COUT ; OUTPUT KEY TO SCREEN |
|
|
JR KLOP1 ; LOOP |
|
|
JR KLOP1 ; LOOP |
|
|
@ -231,7 +223,7 @@ KLOP1: |
|
|
;_____________________________________________________________________________ |
|
|
;_____________________________________________________________________________ |
|
|
; |
|
|
; |
|
|
HXLOAD: |
|
|
HXLOAD: |
|
|
CALL CRLF ; SHOW READY |
|
|
|
|
|
|
|
|
CALL NEWLINE ; SHOW READY |
|
|
HXLOAD0: |
|
|
HXLOAD0: |
|
|
CALL KIN ; GET THE FIRST CHARACTER, EXPECTING A ':' |
|
|
CALL KIN ; GET THE FIRST CHARACTER, EXPECTING A ':' |
|
|
HXLOAD1: |
|
|
HXLOAD1: |
|
|
@ -255,7 +247,7 @@ HXLOAD1: |
|
|
CALL HXCHKSUM ; UPDATE HEX CHECK SUM |
|
|
CALL HXCHKSUM ; UPDATE HEX CHECK SUM |
|
|
LD A,E ; RECALL THE CHECKSUM BYTE |
|
|
LD A,E ; RECALL THE CHECKSUM BYTE |
|
|
AND A ; IS IT ZERO? |
|
|
AND A ; IS IT ZERO? |
|
|
JP Z,HXLOADEXIT ; MUST BE O K., GO BACK FOR SOME MORE, ELSE |
|
|
|
|
|
|
|
|
JR Z,HXLOADEXIT ; MUST BE O K., GO BACK FOR SOME MORE, ELSE |
|
|
JR HXLOADERR ; CHECKSUMS DON'T ADD UP, ERROR OUT |
|
|
JR HXLOADERR ; CHECKSUMS DON'T ADD UP, ERROR OUT |
|
|
HXLOAD2: |
|
|
HXLOAD2: |
|
|
LD A,D ; RETRIEVE LINE CHARACTER COUNTER |
|
|
LD A,D ; RETRIEVE LINE CHARACTER COUNTER |
|
|
@ -275,8 +267,8 @@ HXLOAD3: |
|
|
JR Z,HXLOADAGAIN ; IF THE CHECKSUM IS STILL OK, CONTINUE ON, ELSE |
|
|
JR Z,HXLOADAGAIN ; IF THE CHECKSUM IS STILL OK, CONTINUE ON, ELSE |
|
|
HXLOADERR: |
|
|
HXLOADERR: |
|
|
LD HL,TXT_CKSUMERR ; GET "CHECKSUM ERROR" MESSAGE |
|
|
LD HL,TXT_CKSUMERR ; GET "CHECKSUM ERROR" MESSAGE |
|
|
CALL MSG ; PRINT MESSAGE FROM (HL) AND TERMINATE THE LOAD |
|
|
|
|
|
JP HXLOADEXIT ; RETURN TO PROMPT |
|
|
|
|
|
|
|
|
CALL PRTSTR ; PRINT MESSAGE FROM (HL) AND TERMINATE THE LOAD |
|
|
|
|
|
JR HXLOADEXIT ; RETURN TO PROMPT |
|
|
HXCHKSUM: |
|
|
HXCHKSUM: |
|
|
LD C,A ; BUILD THE CHECKSUM |
|
|
LD C,A ; BUILD THE CHECKSUM |
|
|
LD A,E ; |
|
|
LD A,E ; |
|
|
@ -286,7 +278,7 @@ HXCHKSUM: |
|
|
RET ; BACK TO CALLER |
|
|
RET ; BACK TO CALLER |
|
|
HXLOADAGAIN: |
|
|
HXLOADAGAIN: |
|
|
CALL KIN ; CATCH THE TRAILING CARRIAGE RETURN |
|
|
CALL KIN ; CATCH THE TRAILING CARRIAGE RETURN |
|
|
JP HXLOAD0 ; LOAD ANOTHER LINE OF DATA |
|
|
|
|
|
|
|
|
JR HXLOAD0 ; LOAD ANOTHER LINE OF DATA |
|
|
HXLOADEXIT: |
|
|
HXLOADEXIT: |
|
|
CALL KIN ; CATCH ANY STRAY TRAILING CHARACTERS |
|
|
CALL KIN ; CATCH ANY STRAY TRAILING CHARACTERS |
|
|
JP SERIALCMDLOOP ; RETURN TO PROMPT |
|
|
JP SERIALCMDLOOP ; RETURN TO PROMPT |
|
|
@ -323,10 +315,10 @@ PIN: |
|
|
CALL WORDPARM ; GET PORT NUMBER |
|
|
CALL WORDPARM ; GET PORT NUMBER |
|
|
JP C,ERR ; HANDLE ERRORS |
|
|
JP C,ERR ; HANDLE ERRORS |
|
|
PUSH DE ; SAVE IT |
|
|
PUSH DE ; SAVE IT |
|
|
CALL CRLF ; |
|
|
|
|
|
|
|
|
CALL NEWLINE ; |
|
|
POP BC ; RESTORE TO BC |
|
|
POP BC ; RESTORE TO BC |
|
|
IN A,(C) ; GET PORT VALUE |
|
|
IN A,(C) ; GET PORT VALUE |
|
|
CALL HXOUT ; PRINT HEX VALUE |
|
|
|
|
|
|
|
|
CALL PRTHEXBYTE ; DISPLAY IT |
|
|
JP SERIALCMDLOOP ; DONE, BACK TO COMMAND LOOP |
|
|
JP SERIALCMDLOOP ; DONE, BACK TO COMMAND LOOP |
|
|
; |
|
|
; |
|
|
;__DUMPMEM____________________________________________________________________ |
|
|
;__DUMPMEM____________________________________________________________________ |
|
|
@ -348,13 +340,11 @@ DUMPMEM: |
|
|
|
|
|
|
|
|
GDATA: |
|
|
GDATA: |
|
|
INC DE ; BUMP DE FOR LATER COMPARE |
|
|
INC DE ; BUMP DE FOR LATER COMPARE |
|
|
CALL CRLF ; |
|
|
|
|
|
|
|
|
CALL NEWLINE ; |
|
|
BLKRD: |
|
|
BLKRD: |
|
|
CALL PHL ; PRINT START LOCATION |
|
|
CALL PHL ; PRINT START LOCATION |
|
|
LD A,':' |
|
|
|
|
|
CALL COUT |
|
|
|
|
|
CALL SPACE |
|
|
|
|
|
CALL COUT |
|
|
|
|
|
|
|
|
CALL PC_COLON |
|
|
|
|
|
CALL PC_SPACE |
|
|
LD C,16 ; SET FOR 16 LOCS |
|
|
LD C,16 ; SET FOR 16 LOCS |
|
|
PUSH HL ; SAVE STARTING HL |
|
|
PUSH HL ; SAVE STARTING HL |
|
|
NXTONE: |
|
|
NXTONE: |
|
|
@ -363,20 +353,20 @@ NXTONE: |
|
|
IN A,(C) ; |
|
|
IN A,(C) ; |
|
|
EXX ; |
|
|
EXX ; |
|
|
AND 7FH ; |
|
|
AND 7FH ; |
|
|
CP ESC ; |
|
|
|
|
|
|
|
|
CP CHR_ESC ; |
|
|
JP Z,SERIALCMDLOOP ; |
|
|
JP Z,SERIALCMDLOOP ; |
|
|
CP 19 ; |
|
|
CP 19 ; |
|
|
JR Z,NXTONE ; |
|
|
JR Z,NXTONE ; |
|
|
LD A,(HL) ; GET BYTE |
|
|
LD A,(HL) ; GET BYTE |
|
|
CALL HXOUT ; PRINT IT |
|
|
|
|
|
CALL SPACE ; |
|
|
|
|
|
|
|
|
CALL PRTHEXBYTE ; DISPLAY IT |
|
|
|
|
|
CALL PC_SPACE ; |
|
|
UPDH: |
|
|
UPDH: |
|
|
INC HL ; POINT NEXT |
|
|
INC HL ; POINT NEXT |
|
|
DEC C ; DEC LOC COUNT |
|
|
DEC C ; DEC LOC COUNT |
|
|
JR NZ,NXTONE ; IF LINE NOT DONE |
|
|
JR NZ,NXTONE ; IF LINE NOT DONE |
|
|
; NOW PRINT 'DECODED' DATA TO RIGHT OF DUMP |
|
|
; NOW PRINT 'DECODED' DATA TO RIGHT OF DUMP |
|
|
PCRLF: |
|
|
PCRLF: |
|
|
CALL SPACE ; SPACE IT |
|
|
|
|
|
|
|
|
CALL PC_SPACE ; SPACE IT |
|
|
LD C,16 ; SET FOR 16 CHARS |
|
|
LD C,16 ; SET FOR 16 CHARS |
|
|
POP HL ; GET BACK START |
|
|
POP HL ; GET BACK START |
|
|
PCRLF0: |
|
|
PCRLF0: |
|
|
@ -401,8 +391,8 @@ UPDH1: |
|
|
DEC C ; DEC CHAR COUNT |
|
|
DEC C ; DEC CHAR COUNT |
|
|
JR NZ,PCRLF0 ; DO NEXT |
|
|
JR NZ,PCRLF0 ; DO NEXT |
|
|
CONTD: |
|
|
CONTD: |
|
|
CALL CRLF ; |
|
|
|
|
|
JP BLKRD ; |
|
|
|
|
|
|
|
|
CALL NEWLINE ; |
|
|
|
|
|
JR BLKRD ; |
|
|
; |
|
|
; |
|
|
;__MOVEMEM____________________________________________________________________ |
|
|
;__MOVEMEM____________________________________________________________________ |
|
|
; |
|
|
; |
|
|
@ -484,7 +474,7 @@ FILLMEM1: |
|
|
; |
|
|
; |
|
|
HELP: |
|
|
HELP: |
|
|
LD HL,TXT_HELP ; POINT AT SYNTAX HELP TEXT |
|
|
LD HL,TXT_HELP ; POINT AT SYNTAX HELP TEXT |
|
|
CALL MSG ; DISPLAY IT |
|
|
|
|
|
|
|
|
CALL PRTSTR ; DISPLAY IT |
|
|
JP SERIALCMDLOOP ; AND BACK TO COMMAND LOOP |
|
|
JP SERIALCMDLOOP ; AND BACK TO COMMAND LOOP |
|
|
; |
|
|
; |
|
|
;__ERR________________________________________________________________________ |
|
|
;__ERR________________________________________________________________________ |
|
|
@ -494,7 +484,7 @@ HELP: |
|
|
; |
|
|
; |
|
|
ERR: |
|
|
ERR: |
|
|
LD HL,TXT_ERR ; POINT AT ERROR TEXT |
|
|
LD HL,TXT_ERR ; POINT AT ERROR TEXT |
|
|
CALL MSG ; DISPLAY IT |
|
|
|
|
|
|
|
|
CALL PRTSTR ; DISPLAY IT |
|
|
JP SERIALCMDLOOP ; AND BACK TO COMMAND LOOP |
|
|
JP SERIALCMDLOOP ; AND BACK TO COMMAND LOOP |
|
|
; |
|
|
; |
|
|
;__BYTEPARM___________________________________________________________________ |
|
|
;__BYTEPARM___________________________________________________________________ |
|
|
@ -507,7 +497,7 @@ BYTEPARM: |
|
|
CALL NONBLANK ; SKIP LEADING BLANKS |
|
|
CALL NONBLANK ; SKIP LEADING BLANKS |
|
|
JP Z,ERR ; SYNTAX ERROR IF PARM NOT FOUND |
|
|
JP Z,ERR ; SYNTAX ERROR IF PARM NOT FOUND |
|
|
CALL ISHEX ; HEX CHAR? |
|
|
CALL ISHEX ; HEX CHAR? |
|
|
JP NZ,BYTEPARM1 ; IF NOT, ERR |
|
|
|
|
|
|
|
|
JR NZ,BYTEPARM1 ; IF NOT, ERR |
|
|
JP HEXBYTE ; RETURN VIA HEXBYTE |
|
|
JP HEXBYTE ; RETURN VIA HEXBYTE |
|
|
BYTEPARM1: |
|
|
BYTEPARM1: |
|
|
SCF ; SIGNAL ERROR |
|
|
SCF ; SIGNAL ERROR |
|
|
@ -523,11 +513,8 @@ WORDPARM: |
|
|
CALL NONBLANK ; SKIP LEADING BLANKS |
|
|
CALL NONBLANK ; SKIP LEADING BLANKS |
|
|
JP Z,ERR ; SYNTAX ERROR IF PARM NOT FOUND |
|
|
JP Z,ERR ; SYNTAX ERROR IF PARM NOT FOUND |
|
|
CALL ISHEX ; HEX CHAR? |
|
|
CALL ISHEX ; HEX CHAR? |
|
|
JP NZ,WORDPARM1 ; IF NOT, ERR |
|
|
|
|
|
|
|
|
JR NZ,BYTEPARM1 ; IF NOT, ERR |
|
|
JP HEXWORD ; RETURN VIA HEXWORD |
|
|
JP HEXWORD ; RETURN VIA HEXWORD |
|
|
WORDPARM1: |
|
|
|
|
|
SCF ; SIGNAL ERROR |
|
|
|
|
|
RET ; RETURN |
|
|
|
|
|
; |
|
|
; |
|
|
;__GETLN______________________________________________________________________ |
|
|
;__GETLN______________________________________________________________________ |
|
|
; |
|
|
; |
|
|
@ -540,10 +527,10 @@ GETLN: |
|
|
PUSH DE ; STORE DE |
|
|
PUSH DE ; STORE DE |
|
|
GETLNLOP: |
|
|
GETLNLOP: |
|
|
CALL KIN ; GET A KEY |
|
|
CALL KIN ; GET A KEY |
|
|
CP CR ; IS <CR>? |
|
|
|
|
|
|
|
|
CP CHR_CR ; IS <CR>? |
|
|
JR Z,GETLNDONE ; YES, EXIT |
|
|
JR Z,GETLNDONE ; YES, EXIT |
|
|
CALL COUT ; OUTPUT KEY TO SCREEN |
|
|
CALL COUT ; OUTPUT KEY TO SCREEN |
|
|
CP BS ; IS <BS>? |
|
|
|
|
|
|
|
|
CP CHR_BS ; IS <BS>? |
|
|
JR NZ,GETLNSTORE ; NO, STORE CHAR |
|
|
JR NZ,GETLNSTORE ; NO, STORE CHAR |
|
|
LD A,C ; A=C |
|
|
LD A,C ; A=C |
|
|
CP 0 ; |
|
|
CP 0 ; |
|
|
@ -554,7 +541,7 @@ GETLNLOP: |
|
|
LD (HL),A ; STORE NULL IN BUFFER |
|
|
LD (HL),A ; STORE NULL IN BUFFER |
|
|
LD A,20H ; BLANK OUT CHAR ON TERM |
|
|
LD A,20H ; BLANK OUT CHAR ON TERM |
|
|
CALL COUT ; |
|
|
CALL COUT ; |
|
|
LD A,BS ; |
|
|
|
|
|
|
|
|
LD A,CHR_BS ; |
|
|
CALL COUT ; |
|
|
CALL COUT ; |
|
|
JR GETLNLOP ; GET NEXT KEY |
|
|
JR GETLNLOP ; GET NEXT KEY |
|
|
GETLNSTORE: |
|
|
GETLNSTORE: |
|
|
@ -584,30 +571,6 @@ KIN: |
|
|
AND 5FH ; MAKE UPPER CASE |
|
|
AND 5FH ; MAKE UPPER CASE |
|
|
RET |
|
|
RET |
|
|
; |
|
|
; |
|
|
;__CRLFA______________________________________________________________________ |
|
|
|
|
|
; |
|
|
|
|
|
; PRINT COMMAND PROMPT TO THE SERIAL PORT |
|
|
|
|
|
;_____________________________________________________________________________ |
|
|
|
|
|
; |
|
|
|
|
|
CRLFA: |
|
|
|
|
|
PUSH HL ; PROTECT HL FROM OVERWRITE |
|
|
|
|
|
LD HL,PROMPT ; |
|
|
|
|
|
CALL MSG ; |
|
|
|
|
|
POP HL ; PROTECT HL FROM OVERWRITE |
|
|
|
|
|
RET ; DONE |
|
|
|
|
|
; |
|
|
|
|
|
;__CRLF_______________________________________________________________________ |
|
|
|
|
|
; |
|
|
|
|
|
; SEND CR & LF TO THE SERIAL PORT |
|
|
|
|
|
;_____________________________________________________________________________ |
|
|
|
|
|
; |
|
|
|
|
|
CRLF: |
|
|
|
|
|
PUSH HL ; PROTECT HL FROM OVERWRITE |
|
|
|
|
|
LD HL,TCRLF ; LOAD MESSAGE POINTER |
|
|
|
|
|
CALL MSG ; SEBD MESSAGE TO SERIAL PORT |
|
|
|
|
|
POP HL ; PROTECT HL FROM OVERWRITE |
|
|
|
|
|
RET ; |
|
|
|
|
|
; |
|
|
|
|
|
;__NONBLANK___________________________________________________________________ |
|
|
;__NONBLANK___________________________________________________________________ |
|
|
; |
|
|
; |
|
|
; FIND NEXT NONBLANK CHARACTER IN BUFFER AT (HL) |
|
|
; FIND NEXT NONBLANK CHARACTER IN BUFFER AT (HL) |
|
|
@ -715,9 +678,9 @@ ALPH: |
|
|
;_____________________________________________________________________________ |
|
|
;_____________________________________________________________________________ |
|
|
; |
|
|
; |
|
|
HEXINS: |
|
|
HEXINS: |
|
|
PUSH BC ;SAVE BC REGS |
|
|
|
|
|
CALL NIBLS ;DO A NIBBLE |
|
|
|
|
|
RLC A ;MOVE FIRST BYTE UPPER NIBBLE |
|
|
|
|
|
|
|
|
PUSH BC ; SAVE BC REGS |
|
|
|
|
|
CALL NIBLS ; DO A NIBBLE |
|
|
|
|
|
RLC A ; MOVE FIRST BYTE UPPER NIBBLE |
|
|
RLC A ; |
|
|
RLC A ; |
|
|
RLC A ; |
|
|
RLC A ; |
|
|
RLC A ; |
|
|
RLC A ; |
|
|
@ -740,66 +703,11 @@ NIBLS: |
|
|
; |
|
|
; |
|
|
PHL: |
|
|
PHL: |
|
|
LD A,H ; GET HI BYTE |
|
|
LD A,H ; GET HI BYTE |
|
|
CALL HXOUT ; DO HEX OUT ROUTINE |
|
|
|
|
|
|
|
|
CALL PRTHEXBYTE ; DISPLAY IT |
|
|
LD A,L ; GET LOW BYTE |
|
|
LD A,L ; GET LOW BYTE |
|
|
CALL HXOUT ; HEX IT |
|
|
|
|
|
|
|
|
CALL PRTHEXBYTE ; DISPLAY IT |
|
|
RET ; DONE |
|
|
RET ; DONE |
|
|
; |
|
|
; |
|
|
;__HXOUT______________________________________________________________________ |
|
|
|
|
|
; |
|
|
|
|
|
; PRINT THE ACCUMULATOR CONTENTS AS HEX DATA ON THE SERIAL PORT |
|
|
|
|
|
;_____________________________________________________________________________ |
|
|
|
|
|
; |
|
|
|
|
|
HXOUT: |
|
|
|
|
|
PUSH BC ; SAVE BC |
|
|
|
|
|
LD B,A ; |
|
|
|
|
|
RLC A ; DO HIGH NIBBLE FIRST |
|
|
|
|
|
RLC A ; |
|
|
|
|
|
RLC A ; |
|
|
|
|
|
RLC A ; |
|
|
|
|
|
AND 0FH ; ONLY THIS NOW |
|
|
|
|
|
ADD A,30H ; TRY A NUMBER |
|
|
|
|
|
CP 3AH ; TEST IT |
|
|
|
|
|
JR C,OUT1 ; IF CY SET PRINT 'NUMBER' |
|
|
|
|
|
ADD A,07H ; MAKE IT AN ALPHA |
|
|
|
|
|
OUT1: |
|
|
|
|
|
CALL COUT ; SCREEN IT |
|
|
|
|
|
LD A,B ; NEXT NIBBLE |
|
|
|
|
|
AND 0FH ; JUST THIS |
|
|
|
|
|
ADD A,30H ; TRY A NUMBER |
|
|
|
|
|
CP 3AH ; TEST IT |
|
|
|
|
|
JR C,OUT2 ; PRINT 'NUMBER' |
|
|
|
|
|
ADD A,07H ; MAKE IT ALPHA |
|
|
|
|
|
OUT2: |
|
|
|
|
|
CALL COUT ; SCREEN IT |
|
|
|
|
|
POP BC ; RESTORE BC |
|
|
|
|
|
RET ; |
|
|
|
|
|
; |
|
|
|
|
|
;__SPACE______________________________________________________________________ |
|
|
|
|
|
; |
|
|
|
|
|
; PRINT A SPACE CHARACTER ON THE SERIAL PORT |
|
|
|
|
|
;_____________________________________________________________________________ |
|
|
|
|
|
; |
|
|
|
|
|
SPACE: |
|
|
|
|
|
PUSH AF ; STORE AF |
|
|
|
|
|
LD A,20H ; LOAD A "SPACE" |
|
|
|
|
|
CALL COUT ; SCREEN IT |
|
|
|
|
|
POP AF ; RESTORE AF |
|
|
|
|
|
RET ; DONE |
|
|
|
|
|
; |
|
|
|
|
|
;__MSG________________________________________________________________________ |
|
|
|
|
|
; |
|
|
|
|
|
; PRINT A STRING TO THE SERIAL PORT |
|
|
|
|
|
;_____________________________________________________________________________ |
|
|
|
|
|
; |
|
|
|
|
|
MSG: |
|
|
|
|
|
LD A,(HL) ; GET CHARACTER TO A |
|
|
|
|
|
OR A ; SET FLAGS |
|
|
|
|
|
RET Z ; DONE IF NULL |
|
|
|
|
|
CALL COUT ; PRINT CHARACTER |
|
|
|
|
|
INC HL ; INC POINTER, TO NEXT CHAR |
|
|
|
|
|
JR MSG ; LOOP |
|
|
|
|
|
; |
|
|
|
|
|
#IF (PLATFORM == PLT_UNA) |
|
|
#IF (PLATFORM == PLT_UNA) |
|
|
; |
|
|
; |
|
|
;__COUT_______________________________________________________________________ |
|
|
;__COUT_______________________________________________________________________ |
|
|
@ -957,49 +865,49 @@ KEYBUF: .FILL 80,' ' |
|
|
;_____________________________________________________________________________ |
|
|
;_____________________________________________________________________________ |
|
|
; |
|
|
; |
|
|
TCRLF: |
|
|
TCRLF: |
|
|
.DB CR,LF,0 |
|
|
|
|
|
|
|
|
.DB CHR_CR,CHR_LF,'$' |
|
|
|
|
|
|
|
|
PROMPT: |
|
|
PROMPT: |
|
|
.DB CR,LF,'>',0 |
|
|
|
|
|
|
|
|
.DB CHR_CR,CHR_LF,'>','$' |
|
|
|
|
|
|
|
|
TXT_READY: |
|
|
TXT_READY: |
|
|
.DB CR,LF |
|
|
|
|
|
|
|
|
.DB CHR_CR,CHR_LF |
|
|
.TEXT "MONITOR READY ('H' FOR HELP)" |
|
|
.TEXT "MONITOR READY ('H' FOR HELP)" |
|
|
.DB 0 |
|
|
|
|
|
|
|
|
.DB '$' |
|
|
|
|
|
|
|
|
TXT_COMMAND: |
|
|
TXT_COMMAND: |
|
|
.DB CR,LF |
|
|
|
|
|
|
|
|
.DB CHR_CR,CHR_LF |
|
|
.TEXT "UNKNOWN COMMAND ('H' FOR HELP)" |
|
|
.TEXT "UNKNOWN COMMAND ('H' FOR HELP)" |
|
|
.DB 0 |
|
|
|
|
|
|
|
|
.DB '$' |
|
|
|
|
|
|
|
|
TXT_ERR: |
|
|
TXT_ERR: |
|
|
.DB CR,LF |
|
|
|
|
|
|
|
|
.DB CHR_CR,CHR_LF |
|
|
.TEXT "SYNTAX ERROR ('H' FOR HELP)" |
|
|
.TEXT "SYNTAX ERROR ('H' FOR HELP)" |
|
|
.DB 0 |
|
|
|
|
|
|
|
|
.DB '$' |
|
|
|
|
|
|
|
|
TXT_CKSUMERR: |
|
|
TXT_CKSUMERR: |
|
|
.DB CR,LF |
|
|
|
|
|
|
|
|
.DB CHR_CR,CHR_LF |
|
|
.TEXT "CHECKSUM ERROR" |
|
|
.TEXT "CHECKSUM ERROR" |
|
|
.DB 0 |
|
|
|
|
|
|
|
|
.DB '$' |
|
|
|
|
|
|
|
|
TXT_BADNUM: |
|
|
TXT_BADNUM: |
|
|
.TEXT " *INVALID VALUE*" |
|
|
.TEXT " *INVALID VALUE*" |
|
|
.DB 0 |
|
|
|
|
|
|
|
|
.DB '$' |
|
|
|
|
|
|
|
|
TXT_HELP: |
|
|
TXT_HELP: |
|
|
.DB CR,LF |
|
|
|
|
|
|
|
|
.DB CHR_CR,CHR_LF |
|
|
.TEXT "MONITOR COMMANDS (ALL VALUES IN HEX):\r\n" |
|
|
.TEXT "MONITOR COMMANDS (ALL VALUES IN HEX):\r\n" |
|
|
.TEXT "B - BOOT SYSTEM\r\n" |
|
|
.TEXT "B - BOOT SYSTEM\r\n" |
|
|
.TEXT "D XXXX YYYY - DUMP MEMORY FROM XXXX TO YYYY\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 "F XXXX YYYY ZZ - FILL MEMORY FROM XXXX TO YYYY WITH ZZ\r\n" |
|
|
.TEXT "I XX - SHOW VALUE FROM PORT XX\r\n" |
|
|
|
|
|
|
|
|
.TEXT "I XX - SHOW VALUE AT PORT XX\r\n" |
|
|
.TEXT "K - ECHO KEYBOARD INPUT\r\n" |
|
|
.TEXT "K - ECHO KEYBOARD INPUT\r\n" |
|
|
.TEXT "L - LOAD INTEL HEX FORMAT DATA\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 "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 "O XX YY - WRITE VALUE YY TO PORT XX\r\n" |
|
|
.TEXT "P XXXX - PROGRAM RAM STARTING AT XXXX\r\n" |
|
|
.TEXT "P XXXX - PROGRAM RAM STARTING AT XXXX\r\n" |
|
|
.TEXT "R XXXX - RUN A PROGRAM AT ADDRESS XXXX" |
|
|
.TEXT "R XXXX - RUN A PROGRAM AT ADDRESS XXXX" |
|
|
.DB 0 |
|
|
|
|
|
|
|
|
.DB '$' |
|
|
; |
|
|
; |
|
|
#IF DSKYENABLE |
|
|
#IF DSKYENABLE |
|
|
; |
|
|
; |
|
|
@ -1062,6 +970,8 @@ DOBOOT: |
|
|
;__DOPORTREAD_________________________________________________________________ |
|
|
;__DOPORTREAD_________________________________________________________________ |
|
|
; |
|
|
; |
|
|
; PERFORM PORT READ FRONT PANEL ACTION |
|
|
; PERFORM PORT READ FRONT PANEL ACTION |
|
|
|
|
|
; PANEL TEMPLATE "Po88 88" |
|
|
|
|
|
; POS 01234567 |
|
|
;_____________________________________________________________________________ |
|
|
;_____________________________________________________________________________ |
|
|
; |
|
|
; |
|
|
DOPORTREAD: |
|
|
DOPORTREAD: |
|
|
@ -1072,33 +982,33 @@ PORTREADLOOP: |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
LD (DISPLAYBUF+2),A ; SHOW HIGH NIB IN DISP 5 |
|
|
|
|
|
|
|
|
LD (DISPLAYBUF+2),A ; SHOW HIGH NIB IN DISP 2 |
|
|
LD A,C ; RESTORE PORT VALUE INTO "A" |
|
|
LD A,C ; RESTORE PORT VALUE INTO "A" |
|
|
AND 0FH ; CLEAR HIGH NIB, LEAVING LOW |
|
|
AND 0FH ; CLEAR HIGH NIB, LEAVING LOW |
|
|
LD (DISPLAYBUF+3),A ; SHOW LOW NIB IN DISP 4 |
|
|
|
|
|
|
|
|
LD (DISPLAYBUF+3),A ; SHOW LOW NIB IN DISP 3 |
|
|
IN A,(C) ; GET PORT VALUE FROM PORT IN "C" |
|
|
IN A,(C) ; GET PORT VALUE FROM PORT IN "C" |
|
|
LD C,A ; STORE VALUE IN "C" |
|
|
LD C,A ; STORE VALUE IN "C" |
|
|
SRL A ; ROTATE HIGH NIB TO LOW |
|
|
SRL A ; ROTATE HIGH NIB TO LOW |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
LD (DISPLAYBUF+6),A ; SHOW HIGH NIB IN DISP 1 |
|
|
|
|
|
|
|
|
LD (DISPLAYBUF+6),A ; SHOW HIGH NIB IN DISP 6 |
|
|
LD A,C ; RESTORE VALUE TO "A" |
|
|
LD A,C ; RESTORE VALUE TO "A" |
|
|
AND 0FH ; CLEAR HIGH NIB, LEAVING LOW |
|
|
AND 0FH ; CLEAR HIGH NIB, LEAVING LOW |
|
|
LD (DISPLAYBUF+7),A ; DISPLAY LOW NIB IN DISP 0 |
|
|
|
|
|
|
|
|
LD (DISPLAYBUF+7),A ; DISPLAY LOW NIB IN DISP 7 |
|
|
LD A,10H ; CLEAR OTHER DISPLAYS |
|
|
LD A,10H ; CLEAR OTHER DISPLAYS |
|
|
LD (DISPLAYBUF+5),A ; |
|
|
LD (DISPLAYBUF+5),A ; |
|
|
LD (DISPLAYBUF+4),A ; |
|
|
LD (DISPLAYBUF+4),A ; |
|
|
LD A,13H ; "P" |
|
|
LD A,13H ; "P" |
|
|
LD (DISPLAYBUF+0),A ; STORE IN DISP 7 |
|
|
|
|
|
|
|
|
LD (DISPLAYBUF+0),A ; STORE IN DISP 0 |
|
|
LD A,14H ; "O" |
|
|
LD A,14H ; "O" |
|
|
LD (DISPLAYBUF+1),A ; STORE IN DISP 6 |
|
|
|
|
|
|
|
|
LD (DISPLAYBUF+1),A ; STORE IN DISP 1 |
|
|
LD HL,DISPLAYBUF ; SET POINTER TO DISPLAY BUFFER |
|
|
LD HL,DISPLAYBUF ; SET POINTER TO DISPLAY BUFFER |
|
|
CALL ENCDISPLAY ; DISPLAY BUFFER CONTENTS |
|
|
CALL ENCDISPLAY ; DISPLAY BUFFER CONTENTS |
|
|
PORTREADGETKEY: |
|
|
PORTREADGETKEY: |
|
|
CALL KB_GET ; GET KEY FROM KB |
|
|
CALL KB_GET ; GET KEY FROM KB |
|
|
CP 12H ; [CL] PRESSED, EXIT |
|
|
CP 12H ; [CL] PRESSED, EXIT |
|
|
JP Z,PORTREADEXIT ; |
|
|
|
|
|
|
|
|
JR Z,PORTREADEXIT ; |
|
|
CP 10H ; [PR] PRESSED, PROMPT FOR NEW PORT |
|
|
CP 10H ; [PR] PRESSED, PROMPT FOR NEW PORT |
|
|
JR Z,DOPORTREAD ; |
|
|
JR Z,DOPORTREAD ; |
|
|
JR PORTREADGETKEY ; NO VALID KEY, LOOP |
|
|
JR PORTREADGETKEY ; NO VALID KEY, LOOP |
|
|
@ -1110,6 +1020,8 @@ PORTREADEXIT: |
|
|
;__DOPORTWRITE________________________________________________________________ |
|
|
;__DOPORTWRITE________________________________________________________________ |
|
|
; |
|
|
; |
|
|
; PERFORM PORT WRITE FRONT PANEL ACTION |
|
|
; PERFORM PORT WRITE FRONT PANEL ACTION |
|
|
|
|
|
; PANEL TEMPLATE "Po88 88" |
|
|
|
|
|
; POS 01234567 |
|
|
;_____________________________________________________________________________ |
|
|
;_____________________________________________________________________________ |
|
|
; |
|
|
; |
|
|
DOPORTWRITE: |
|
|
DOPORTWRITE: |
|
|
@ -1120,16 +1032,16 @@ PORTWRITELOOP: |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
LD (DISPLAYBUF+2),A ; DISPLAY HIGH NIB IN DISPLAY 5 |
|
|
|
|
|
|
|
|
LD (DISPLAYBUF+2),A ; DISPLAY HIGH NIB IN DISPLAY 2 |
|
|
LD A,C ; RESTORE PORT VALUE INTO "A" |
|
|
LD A,C ; RESTORE PORT VALUE INTO "A" |
|
|
AND 0FH ; CLEAR OUT HIGH NIB |
|
|
AND 0FH ; CLEAR OUT HIGH NIB |
|
|
LD (DISPLAYBUF+3),A ; DISPLAY LOW NIB IN DISPLAY 4 |
|
|
|
|
|
LD A,10H ; CLEAR OUT DISPLAYS 2 AND 3 |
|
|
|
|
|
|
|
|
LD (DISPLAYBUF+3),A ; DISPLAY LOW NIB IN DISPLAY 3 |
|
|
|
|
|
LD A,10H ; CLEAR OUT DISPLAYS 4 AND 5 |
|
|
LD (DISPLAYBUF+5),A ; |
|
|
LD (DISPLAYBUF+5),A ; |
|
|
LD (DISPLAYBUF+4),A ; |
|
|
LD (DISPLAYBUF+4),A ; |
|
|
LD A,13H ; DISPLAY "P" IN DISP 7 |
|
|
|
|
|
|
|
|
LD A,13H ; DISPLAY "P" IN DISP 0 |
|
|
LD (DISPLAYBUF+0),A ; |
|
|
LD (DISPLAYBUF+0),A ; |
|
|
LD A,14H ; DISPLAY "O" IN DISP 6 |
|
|
|
|
|
|
|
|
LD A,14H ; DISPLAY "O" IN DISP 1 |
|
|
LD (DISPLAYBUF+1),A ; |
|
|
LD (DISPLAYBUF+1),A ; |
|
|
LD HL,DISPLAYBUF ; POINT TO DISPLAY BUFFER |
|
|
LD HL,DISPLAYBUF ; POINT TO DISPLAY BUFFER |
|
|
CALL GETVALUE ; INPUT A BYTE VALUE, RETURN IN "A" |
|
|
CALL GETVALUE ; INPUT A BYTE VALUE, RETURN IN "A" |
|
|
@ -1150,6 +1062,8 @@ DOGO: |
|
|
;__DODEPOSIT__________________________________________________________________ |
|
|
;__DODEPOSIT__________________________________________________________________ |
|
|
; |
|
|
; |
|
|
; PERFORM DEPOSIT FRONT PANEL ACTION |
|
|
; PERFORM DEPOSIT FRONT PANEL ACTION |
|
|
|
|
|
; PANEL TEMPLATE "8888 88" |
|
|
|
|
|
; POS 01234567 |
|
|
;_____________________________________________________________________________ |
|
|
;_____________________________________________________________________________ |
|
|
; |
|
|
; |
|
|
DODEPOSIT: |
|
|
DODEPOSIT: |
|
|
@ -1183,7 +1097,7 @@ DEPOSITLOOP: |
|
|
DEPOSITGETKEY: |
|
|
DEPOSITGETKEY: |
|
|
CALL KB_GET ; GET KEY FROM KB |
|
|
CALL KB_GET ; GET KEY FROM KB |
|
|
CP 12H ; [CL] PRESSED, EXIT |
|
|
CP 12H ; [CL] PRESSED, EXIT |
|
|
JP Z,DEPOSITEXIT ; |
|
|
|
|
|
|
|
|
JR Z,DEPOSITEXIT ; |
|
|
CP 13H ; [EN] PRESSED, INC ADDRESS AND LOOP |
|
|
CP 13H ; [EN] PRESSED, INC ADDRESS AND LOOP |
|
|
JR Z,DEPOSITFW ; |
|
|
JR Z,DEPOSITFW ; |
|
|
CP 14H ; [DE] PRESSED, PROMPT FOR NEW ADDRESS |
|
|
CP 14H ; [DE] PRESSED, PROMPT FOR NEW ADDRESS |
|
|
@ -1201,6 +1115,8 @@ DEPOSITEXIT: |
|
|
;__DOEXAMINE__________________________________________________________________ |
|
|
;__DOEXAMINE__________________________________________________________________ |
|
|
; |
|
|
; |
|
|
; PERFORM EXAMINE FRONT PANEL ACTION |
|
|
; PERFORM EXAMINE FRONT PANEL ACTION |
|
|
|
|
|
; PANEL TEMPLATE "8888 88" |
|
|
|
|
|
; POS 01234567 |
|
|
;_____________________________________________________________________________ |
|
|
;_____________________________________________________________________________ |
|
|
; |
|
|
; |
|
|
DOEXAMINE: |
|
|
DOEXAMINE: |
|
|
@ -1208,41 +1124,41 @@ DOEXAMINE: |
|
|
PUSH HL ; STORE HL |
|
|
PUSH HL ; STORE HL |
|
|
EXAMINELOOP: |
|
|
EXAMINELOOP: |
|
|
LD A,H ; MOVE HIGH BYTE IN "A" |
|
|
LD A,H ; MOVE HIGH BYTE IN "A" |
|
|
SRL A ; SHOW HIGH NIBBLE IN DISP 7 |
|
|
|
|
|
|
|
|
SRL A ; SHOW HIGH NIBBLE IN DISP 0 |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
LD (DISPLAYBUF+0),A ; |
|
|
LD (DISPLAYBUF+0),A ; |
|
|
LD A,H ; RESTORE HIGH BYTE |
|
|
LD A,H ; RESTORE HIGH BYTE |
|
|
AND 0FH ; CLEAR HIGH NIBBLE |
|
|
AND 0FH ; CLEAR HIGH NIBBLE |
|
|
LD (DISPLAYBUF+1),A ; DISPLAY LOW NIBBLE IN DISP 6 |
|
|
|
|
|
|
|
|
LD (DISPLAYBUF+1),A ; DISPLAY LOW NIBBLE IN DISP 1 |
|
|
LD A,L ; PUT LOW BYTE IN "A" |
|
|
LD A,L ; PUT LOW BYTE IN "A" |
|
|
SRL A ; SHOW HIGH NIBBLE IN DISP 5 |
|
|
|
|
|
|
|
|
SRL A ; SHOW HIGH NIBBLE IN DISP 2 |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
LD (DISPLAYBUF+2),A ; |
|
|
LD (DISPLAYBUF+2),A ; |
|
|
LD A,L ; RESTORE LOW BYTE IN "A" |
|
|
LD A,L ; RESTORE LOW BYTE IN "A" |
|
|
AND 0FH ; CLEAR OUT HIGH NIBBLE |
|
|
AND 0FH ; CLEAR OUT HIGH NIBBLE |
|
|
LD (DISPLAYBUF+3),A ; DISPLAY LOW NIBBLE IN DISP 4 |
|
|
|
|
|
LD A,10H ; CLEAR OUT DISP 3 |
|
|
|
|
|
|
|
|
LD (DISPLAYBUF+3),A ; DISPLAY LOW NIBBLE IN DISP 3 |
|
|
|
|
|
LD A,10H ; CLEAR OUT DISP 4 |
|
|
LD (DISPLAYBUF+4),A ; |
|
|
LD (DISPLAYBUF+4),A ; |
|
|
LD A,(HL) ; GET VALUE FROM ADDRESS IN HL |
|
|
LD A,(HL) ; GET VALUE FROM ADDRESS IN HL |
|
|
SRL A ; DISPLAY HIGH NIB IN DISPLAY 1 |
|
|
|
|
|
|
|
|
SRL A ; DISPLAY HIGH NIB IN DISPLAY 6 |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
SRL A ; |
|
|
LD (DISPLAYBUF+6),A ; |
|
|
LD (DISPLAYBUF+6),A ; |
|
|
LD A,(HL) ; GET VALUE FROM ADDRESS IN HL |
|
|
LD A,(HL) ; GET VALUE FROM ADDRESS IN HL |
|
|
AND 0FH ; CLEAR OUT HIGH NIBBLE |
|
|
AND 0FH ; CLEAR OUT HIGH NIBBLE |
|
|
LD (DISPLAYBUF+7),A ; DISPLAY LOW NIBBLE IN DISPLAY 0 |
|
|
|
|
|
|
|
|
LD (DISPLAYBUF+7),A ; DISPLAY LOW NIBBLE IN DISPLAY 7 |
|
|
LD HL,DISPLAYBUF ; POINT TO DISPLAY BUFFER |
|
|
LD HL,DISPLAYBUF ; POINT TO DISPLAY BUFFER |
|
|
CALL ENCDISPLAY ; DISPLAY BUFFER ON DISPLAYS |
|
|
CALL ENCDISPLAY ; DISPLAY BUFFER ON DISPLAYS |
|
|
POP HL ; RESTORE HL |
|
|
POP HL ; RESTORE HL |
|
|
EXAMINEGETKEY: |
|
|
EXAMINEGETKEY: |
|
|
CALL KB_GET ; GET KEY FROM KB |
|
|
CALL KB_GET ; GET KEY FROM KB |
|
|
CP 12H ; [CL] PRESSED, EXIT |
|
|
CP 12H ; [CL] PRESSED, EXIT |
|
|
JP Z,EXAMINEEXIT ; |
|
|
|
|
|
|
|
|
JR Z,EXAMINEEXIT ; |
|
|
CP 13H ; [EN] PRESSED, INC ADDRESS AND LOOP |
|
|
CP 13H ; [EN] PRESSED, INC ADDRESS AND LOOP |
|
|
JR Z,EXAMINEFW ; |
|
|
JR Z,EXAMINEFW ; |
|
|
CP 15H ; [DE] PRESSED, PROMPT FOR NEW ADDRESS |
|
|
CP 15H ; [DE] PRESSED, PROMPT FOR NEW ADDRESS |
|
|
@ -1260,6 +1176,8 @@ EXAMINEEXIT: |
|
|
;__GETADDR____________________________________________________________________ |
|
|
;__GETADDR____________________________________________________________________ |
|
|
; |
|
|
; |
|
|
; GET ADDRESS FROM FRONT PANEL |
|
|
; GET ADDRESS FROM FRONT PANEL |
|
|
|
|
|
; PANEL TEMPLATE "Adr 8888" |
|
|
|
|
|
; POS 01234567 |
|
|
;_____________________________________________________________________________ |
|
|
;_____________________________________________________________________________ |
|
|
; |
|
|
; |
|
|
GETADDR: |
|
|
GETADDR: |
|
|
@ -1283,27 +1201,27 @@ GETADDRLOOP: |
|
|
JR GETADDRLOOP ; INVALID KEY, LOOP |
|
|
JR GETADDRLOOP ; INVALID KEY, LOOP |
|
|
GETADDRDONE: |
|
|
GETADDRDONE: |
|
|
LD HL,00H ; HL=0 |
|
|
LD HL,00H ; HL=0 |
|
|
LD A,(DISPLAYBUF+6) ; GET DIGIT IN DISPLAY 1 |
|
|
|
|
|
|
|
|
LD A,(DISPLAYBUF+6) ; GET DIGIT IN DISPLAY 6 |
|
|
SLA A ; ROTATE IT TO HIGH NIBBLE |
|
|
SLA A ; ROTATE IT TO HIGH NIBBLE |
|
|
SLA A ; |
|
|
SLA A ; |
|
|
SLA A ; |
|
|
SLA A ; |
|
|
SLA A ; |
|
|
SLA A ; |
|
|
LD C,A ; STORE IT IN "C" |
|
|
LD C,A ; STORE IT IN "C" |
|
|
LD A,(DISPLAYBUF+7) ; GET DIGIT IN DISPLAY 0 |
|
|
|
|
|
|
|
|
LD A,(DISPLAYBUF+7) ; GET DIGIT IN DISPLAY 7 |
|
|
AND 0FH ; CLEAR HIGH NIBBLE |
|
|
AND 0FH ; CLEAR HIGH NIBBLE |
|
|
OR C ; ADD IN NIBBLE STORED IN C |
|
|
OR C ; ADD IN NIBBLE STORED IN C |
|
|
LD L,A ; STORE IT IN LOW BYTE OF ADDRESS POINTER |
|
|
LD L,A ; STORE IT IN LOW BYTE OF ADDRESS POINTER |
|
|
LD A,(DISPLAYBUF+4) ; GET DIGIT IN DISPLAY 3 |
|
|
|
|
|
|
|
|
LD A,(DISPLAYBUF+4) ; GET DIGIT IN DISPLAY 4 |
|
|
SLA A ; ROTATE IT TO HIGH NIBBLE |
|
|
SLA A ; ROTATE IT TO HIGH NIBBLE |
|
|
SLA A ; |
|
|
SLA A ; |
|
|
SLA A ; |
|
|
SLA A ; |
|
|
SLA A ; |
|
|
SLA A ; |
|
|
LD C,A ; STORE IT IN "C" |
|
|
LD C,A ; STORE IT IN "C" |
|
|
LD A,(DISPLAYBUF+5) ; GET DIGIT IN DISPLAY 2 |
|
|
|
|
|
|
|
|
LD A,(DISPLAYBUF+5) ; GET DIGIT IN DISPLAY 5 |
|
|
AND 0FH ; CLEAR HIGH NIBBLE |
|
|
AND 0FH ; CLEAR HIGH NIBBLE |
|
|
OR C ; ADD IN NIBBLE STORED IN "C" |
|
|
OR C ; ADD IN NIBBLE STORED IN "C" |
|
|
LD H,A ; STORE BYTE IN HIGH BYTE OF ADDRESS POINTER |
|
|
LD H,A ; STORE BYTE IN HIGH BYTE OF ADDRESS POINTER |
|
|
LD A,10H ; CLEAR OUT DISPLAYS 0,1,2 & 3 |
|
|
|
|
|
|
|
|
LD A,10H ; CLEAR OUT DISPLAYS 4,5,6 & 7 |
|
|
LD (DISPLAYBUF+7),A ; |
|
|
LD (DISPLAYBUF+7),A ; |
|
|
LD (DISPLAYBUF+6),A ; |
|
|
LD (DISPLAYBUF+6),A ; |
|
|
LD (DISPLAYBUF+5),A ; |
|
|
LD (DISPLAYBUF+5),A ; |
|
|
@ -1325,8 +1243,11 @@ GETADDRNUM: |
|
|
;__GETPORT____________________________________________________________________ |
|
|
;__GETPORT____________________________________________________________________ |
|
|
; |
|
|
; |
|
|
; GET PORT FROM FRONT PANEL |
|
|
; GET PORT FROM FRONT PANEL |
|
|
|
|
|
; PANEL TEMPLATE "Port 88" |
|
|
|
|
|
; POS 01234567 |
|
|
;_____________________________________________________________________________ |
|
|
;_____________________________________________________________________________ |
|
|
; |
|
|
; |
|
|
|
|
|
;***use getvalue below after init of displaybuf |
|
|
GETPORT: |
|
|
GETPORT: |
|
|
PUSH BC ; STORE BC |
|
|
PUSH BC ; STORE BC |
|
|
GETPORT0: |
|
|
GETPORT0: |
|
|
@ -1374,6 +1295,8 @@ GETPORTNUM: |
|
|
;__GETVALUE___________________________________________________________________ |
|
|
;__GETVALUE___________________________________________________________________ |
|
|
; |
|
|
; |
|
|
; GET VALUE FROM FRONT PANEL |
|
|
; GET VALUE FROM FRONT PANEL |
|
|
|
|
|
; PANEL TEMPLATE "??????88" |
|
|
|
|
|
; POS 01234567 |
|
|
;_____________________________________________________________________________ |
|
|
;_____________________________________________________________________________ |
|
|
; |
|
|
; |
|
|
GETVALUE: |
|
|
GETVALUE: |
|
|
@ -1415,10 +1338,10 @@ GETVALUENUM: |
|
|
LD (DISPLAYBUF+7),A ; |
|
|
LD (DISPLAYBUF+7),A ; |
|
|
JR GETVALUE1 ; |
|
|
JR GETVALUE1 ; |
|
|
GETVALUECLEAR: |
|
|
GETVALUECLEAR: |
|
|
LD A,12H ; |
|
|
|
|
|
|
|
|
LD A,00H ; |
|
|
LD (DISPLAYBUF+7),A ; |
|
|
LD (DISPLAYBUF+7),A ; |
|
|
LD (DISPLAYBUF+6),A ; |
|
|
LD (DISPLAYBUF+6),A ; |
|
|
JP GETVALUE1 ; |
|
|
|
|
|
|
|
|
JR GETVALUE1 ; |
|
|
; |
|
|
; |
|
|
;__MTERM_INIT_________________________________________________________________ |
|
|
;__MTERM_INIT_________________________________________________________________ |
|
|
; |
|
|
; |
|
|
@ -1481,6 +1404,7 @@ ENCDISPLAY1: |
|
|
; |
|
|
; |
|
|
;_____________________________________________________________________________ |
|
|
;_____________________________________________________________________________ |
|
|
; |
|
|
; |
|
|
|
|
|
;***remove this and replace occurences with dsky_showraw |
|
|
SEGDISPLAY: |
|
|
SEGDISPLAY: |
|
|
PUSH AF |
|
|
PUSH AF |
|
|
PUSH BC |
|
|
PUSH BC |
|
|
|