|
|
|
@ -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 |
|
|
|
; |
|
|
|
;__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 |
|
|
|
@ -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 |
|
|
|
; |
|
|
|
|