|
|
|
@ -931,8 +931,6 @@ DSKY_ENTRY: |
|
|
|
;_____________________________________________________________________________ |
|
|
|
; |
|
|
|
CALL MTERM_INIT ; INIT 8255 FOR MTERM |
|
|
|
LD HL,CPUUP ; SET POINTER TO DATA BUFFER |
|
|
|
CALL SEGDISPLAY ; DISPLAY |
|
|
|
; |
|
|
|
;__COMMAND_PARSE______________________________________________________________ |
|
|
|
; |
|
|
|
@ -940,6 +938,9 @@ DSKY_ENTRY: |
|
|
|
;_____________________________________________________________________________ |
|
|
|
; |
|
|
|
FRONTPANELLOOP: |
|
|
|
LD HL,CPUUP ; SET POINTER TO DATA BUFFER |
|
|
|
CALL DSKY_SHOWRAW ; DISPLAY |
|
|
|
|
|
|
|
CALL KB_GET ; GET KEY FROM KB |
|
|
|
|
|
|
|
CP 10H ; IS PORT READ? |
|
|
|
@ -978,44 +979,20 @@ DOPORTREAD: |
|
|
|
CALL GETPORT ; GET PORT INTO A |
|
|
|
PORTREADLOOP: |
|
|
|
LD C,A ; STORE PORT IN "C" |
|
|
|
SRL A ; ROTATE HIGH NIB TO LOW |
|
|
|
SRL A ; |
|
|
|
SRL A ; |
|
|
|
SRL A ; |
|
|
|
LD (DISPLAYBUF+2),A ; SHOW HIGH NIB IN DISP 2 |
|
|
|
LD A,C ; RESTORE PORT VALUE INTO "A" |
|
|
|
AND 0FH ; CLEAR HIGH NIB, LEAVING LOW |
|
|
|
LD (DISPLAYBUF+3),A ; SHOW LOW NIB IN DISP 3 |
|
|
|
LD DE,DISPLAYBUF+2 ; POINT TO POS 2 IN BUF |
|
|
|
CALL PUTVALUE ; DISPLAY PORT NUM |
|
|
|
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+6),A ; SHOW HIGH NIB IN DISP 6 |
|
|
|
LD A,C ; RESTORE VALUE TO "A" |
|
|
|
AND 0FH ; CLEAR HIGH NIB, LEAVING LOW |
|
|
|
LD (DISPLAYBUF+7),A ; DISPLAY LOW NIB IN DISP 7 |
|
|
|
LD A,10H ; CLEAR OTHER DISPLAYS |
|
|
|
LD (DISPLAYBUF+5),A ; |
|
|
|
LD (DISPLAYBUF+4),A ; |
|
|
|
LD A,13H ; "P" |
|
|
|
LD (DISPLAYBUF+0),A ; STORE IN DISP 0 |
|
|
|
LD A,14H ; "O" |
|
|
|
LD (DISPLAYBUF+1),A ; STORE IN DISP 1 |
|
|
|
LD HL,DISPLAYBUF ; SET POINTER TO DISPLAY BUFFER |
|
|
|
INC DE ; ADVANCE BUF PTR |
|
|
|
INC DE ; ... TO LAST TWO POSITIONS |
|
|
|
CALL PUTVALUE ; DISPLAY PORT VALUE |
|
|
|
CALL ENCDISPLAY ; DISPLAY BUFFER CONTENTS |
|
|
|
PORTREADGETKEY: |
|
|
|
CALL KB_GET ; GET KEY FROM KB |
|
|
|
CP 12H ; [CL] PRESSED, EXIT |
|
|
|
JR Z,PORTREADEXIT ; |
|
|
|
JR Z,FRONTPANELLOOP ; |
|
|
|
CP 10H ; [PR] PRESSED, PROMPT FOR NEW PORT |
|
|
|
JR Z,DOPORTREAD ; |
|
|
|
JR PORTREADGETKEY ; NO VALID KEY, LOOP |
|
|
|
PORTREADEXIT: |
|
|
|
LD HL,CPUUP ; SET POINTER TO DATA BUFFER |
|
|
|
CALL SEGDISPLAY ; DISPLAY |
|
|
|
JP FRONTPANELLOOP ; |
|
|
|
; |
|
|
|
;__DOPORTWRITE________________________________________________________________ |
|
|
|
; |
|
|
|
@ -1027,28 +1004,22 @@ PORTREADEXIT: |
|
|
|
DOPORTWRITE: |
|
|
|
CALL GETPORT ; GET PORT INTO A |
|
|
|
PORTWRITELOOP: |
|
|
|
LD C,A ; STORE PORT IN "C" |
|
|
|
SRL A ; ROTATE HIGH NIB INTO LOW |
|
|
|
SRL A ; |
|
|
|
SRL A ; |
|
|
|
SRL A ; |
|
|
|
LD (DISPLAYBUF+2),A ; DISPLAY HIGH NIB IN DISPLAY 2 |
|
|
|
LD A,C ; RESTORE PORT VALUE INTO "A" |
|
|
|
AND 0FH ; CLEAR OUT HIGH NIB |
|
|
|
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+4),A ; |
|
|
|
LD A,13H ; DISPLAY "P" IN DISP 0 |
|
|
|
LD (DISPLAYBUF+0),A ; |
|
|
|
LD A,14H ; DISPLAY "O" IN DISP 1 |
|
|
|
LD (DISPLAYBUF+1),A ; |
|
|
|
LD HL,DISPLAYBUF ; POINT TO DISPLAY BUFFER |
|
|
|
LD L,A ; SAVE PORT NUM |
|
|
|
LD DE,DISPLAYBUF+2 ; POINT TO POS 2 IN BUF |
|
|
|
CALL PUTVALUE ; DISPLAY PORT NUM |
|
|
|
CALL GETVALUE ; INPUT A BYTE VALUE, RETURN IN "A" |
|
|
|
LD C,L ; RESTORE PORT NUM |
|
|
|
OUT (C),A ; OUTPUT VALUE TO PORT STORED IN "C" |
|
|
|
LD HL,CPUUP ; SET POINTER TO DATA BUFFER |
|
|
|
CALL SEGDISPLAY ; DISPLAY |
|
|
|
JP FRONTPANELLOOP ; |
|
|
|
LD DE,DISPLAYBUF+6 ; DISPLAY WRITTEN PORT VALUE |
|
|
|
CALL PUTVALUE ; ... WITHOUT DP'S |
|
|
|
CALL ENCDISPLAY ; DISPLAY BUFFER CONTENTS |
|
|
|
PORTWRITEGETKEY: |
|
|
|
CALL KB_GET ; GET KEY FROM KB |
|
|
|
CP 12H ; [CL] PRESSED, EXIT |
|
|
|
JR Z,FRONTPANELLOOP ; |
|
|
|
CP 11H ; [PW] PRESSED, PROMPT FOR NEW PORT |
|
|
|
JR Z,DOPORTWRITE ; |
|
|
|
JR PORTWRITEGETKEY ; NO VALID KEY, LOOP |
|
|
|
; |
|
|
|
;__DOGO_______________________________________________________________________ |
|
|
|
; |
|
|
|
@ -1057,60 +1028,17 @@ PORTWRITELOOP: |
|
|
|
; |
|
|
|
DOGO: |
|
|
|
CALL GETADDR ; GET ADDRESS INTO HL |
|
|
|
JP (HL) ; GO THERE! |
|
|
|
; |
|
|
|
;__DODEPOSIT__________________________________________________________________ |
|
|
|
; |
|
|
|
; PERFORM DEPOSIT FRONT PANEL ACTION |
|
|
|
; PANEL TEMPLATE "8888 88" |
|
|
|
; POS 01234567 |
|
|
|
;_____________________________________________________________________________ |
|
|
|
; |
|
|
|
DODEPOSIT: |
|
|
|
CALL GETADDR ; GET ADDRESS INTO HL |
|
|
|
PUSH HL |
|
|
|
DEPOSITLOOP: |
|
|
|
LD A,H ; |
|
|
|
SRL A ; |
|
|
|
SRL A ; |
|
|
|
SRL A ; |
|
|
|
SRL A ; |
|
|
|
LD (DISPLAYBUF+0),A ; |
|
|
|
LD A,H ; |
|
|
|
AND 0FH ; |
|
|
|
LD (DISPLAYBUF+1),A ; |
|
|
|
LD A,L ; |
|
|
|
SRL A ; |
|
|
|
SRL A ; |
|
|
|
SRL A ; |
|
|
|
SRL A ; |
|
|
|
LD (DISPLAYBUF+2),A ; |
|
|
|
LD A,L ; |
|
|
|
AND 0FH ; |
|
|
|
LD (DISPLAYBUF+3),A ; |
|
|
|
LD A,10H ; |
|
|
|
LD (DISPLAYBUF+4),A ; |
|
|
|
LD HL,DISPLAYBUF ; |
|
|
|
CALL GETVALUE ; |
|
|
|
POP HL ; |
|
|
|
LD (HL),A ; |
|
|
|
DEPOSITGETKEY: |
|
|
|
CALL KB_GET ; GET KEY FROM KB |
|
|
|
CP 12H ; [CL] PRESSED, EXIT |
|
|
|
JR Z,DEPOSITEXIT ; |
|
|
|
CP 13H ; [EN] PRESSED, INC ADDRESS AND LOOP |
|
|
|
JR Z,DEPOSITFW ; |
|
|
|
CP 14H ; [DE] PRESSED, PROMPT FOR NEW ADDRESS |
|
|
|
JR Z,DODEPOSIT ; |
|
|
|
JR DEPOSITGETKEY ; NO VALID KEY, LOOP |
|
|
|
DEPOSITFW: |
|
|
|
INC HL ; |
|
|
|
PUSH HL ; STORE HL |
|
|
|
JR DEPOSITLOOP ; |
|
|
|
DEPOSITEXIT: |
|
|
|
LD HL,CPUUP ; SET POINTER TO DATA BUFFER |
|
|
|
CALL SEGDISPLAY ; DISPLAY |
|
|
|
JP FRONTPANELLOOP ; |
|
|
|
PUSH HL ; EXEC ADR TO TOS |
|
|
|
LD HL,GOTO ; POINT TO "GO" MSG |
|
|
|
CALL INITBUF |
|
|
|
POP HL |
|
|
|
LD DE,DISPLAYBUF+4 |
|
|
|
LD A,H |
|
|
|
CALL PUTVALUE |
|
|
|
LD A,L |
|
|
|
CALL PUTVALUE |
|
|
|
CALL ENCDISPLAY ; DISPLAY |
|
|
|
JP (HL) ; AND RUN |
|
|
|
; |
|
|
|
;__DOEXAMINE__________________________________________________________________ |
|
|
|
; |
|
|
|
@ -1121,44 +1049,24 @@ DEPOSITEXIT: |
|
|
|
; |
|
|
|
DOEXAMINE: |
|
|
|
CALL GETADDR ; GET ADDRESS INTO HL |
|
|
|
PUSH HL ; STORE HL |
|
|
|
EXAMINELOOP: |
|
|
|
LD A,H ; MOVE HIGH BYTE IN "A" |
|
|
|
SRL A ; SHOW HIGH NIBBLE IN DISP 0 |
|
|
|
SRL A ; |
|
|
|
SRL A ; |
|
|
|
SRL A ; |
|
|
|
LD (DISPLAYBUF+0),A ; |
|
|
|
LD A,H ; RESTORE HIGH BYTE |
|
|
|
AND 0FH ; CLEAR HIGH NIBBLE |
|
|
|
LD (DISPLAYBUF+1),A ; DISPLAY LOW NIBBLE IN DISP 1 |
|
|
|
LD A,L ; PUT LOW BYTE IN "A" |
|
|
|
SRL A ; SHOW HIGH NIBBLE IN DISP 2 |
|
|
|
SRL A ; |
|
|
|
SRL A ; |
|
|
|
SRL A ; |
|
|
|
LD (DISPLAYBUF+2),A ; |
|
|
|
LD A,L ; RESTORE LOW BYTE IN "A" |
|
|
|
AND 0FH ; CLEAR OUT HIGH NIBBLE |
|
|
|
LD (DISPLAYBUF+3),A ; DISPLAY LOW NIBBLE IN DISP 3 |
|
|
|
LD A,10H ; CLEAR OUT DISP 4 |
|
|
|
LD (DISPLAYBUF+4),A ; |
|
|
|
LD A,(HL) ; GET VALUE FROM ADDRESS IN HL |
|
|
|
SRL A ; DISPLAY HIGH NIB IN DISPLAY 6 |
|
|
|
SRL A ; |
|
|
|
SRL A ; |
|
|
|
SRL A ; |
|
|
|
LD (DISPLAYBUF+6),A ; |
|
|
|
LD DE,DISPLAYBUF+0 |
|
|
|
LD A,H |
|
|
|
CALL PUTVALUE |
|
|
|
LD A,L |
|
|
|
CALL PUTVALUE |
|
|
|
LD A,$10 |
|
|
|
LD (DE),A |
|
|
|
INC DE |
|
|
|
LD (DE),A |
|
|
|
INC DE |
|
|
|
LD A,(HL) ; GET VALUE FROM ADDRESS IN HL |
|
|
|
AND 0FH ; CLEAR OUT HIGH NIBBLE |
|
|
|
LD (DISPLAYBUF+7),A ; DISPLAY LOW NIBBLE IN DISPLAY 7 |
|
|
|
LD HL,DISPLAYBUF ; POINT TO DISPLAY BUFFER |
|
|
|
CALL PUTVALUE |
|
|
|
CALL ENCDISPLAY ; DISPLAY BUFFER ON DISPLAYS |
|
|
|
POP HL ; RESTORE HL |
|
|
|
EXAMINEGETKEY: |
|
|
|
CALL KB_GET ; GET KEY FROM KB |
|
|
|
CP 12H ; [CL] PRESSED, EXIT |
|
|
|
JR Z,EXAMINEEXIT ; |
|
|
|
JP Z,FRONTPANELLOOP ; |
|
|
|
CP 13H ; [EN] PRESSED, INC ADDRESS AND LOOP |
|
|
|
JR Z,EXAMINEFW ; |
|
|
|
CP 15H ; [DE] PRESSED, PROMPT FOR NEW ADDRESS |
|
|
|
@ -1166,12 +1074,44 @@ EXAMINEGETKEY: |
|
|
|
JR EXAMINEGETKEY ; NO VALID KEY, LOOP |
|
|
|
EXAMINEFW: |
|
|
|
INC HL ; HL++ |
|
|
|
PUSH HL ; STORE HL |
|
|
|
JR EXAMINELOOP ; |
|
|
|
EXAMINEEXIT: |
|
|
|
LD HL,CPUUP ; SET POINTER TO DATA BUFFER |
|
|
|
CALL SEGDISPLAY ; DISPLAY |
|
|
|
JP FRONTPANELLOOP ; |
|
|
|
; |
|
|
|
;__DODEPOSIT__________________________________________________________________ |
|
|
|
; |
|
|
|
; PERFORM DEPOSIT FRONT PANEL ACTION |
|
|
|
; PANEL TEMPLATE "8888 88" |
|
|
|
; POS 01234567 |
|
|
|
;_____________________________________________________________________________ |
|
|
|
; |
|
|
|
DODEPOSIT: |
|
|
|
CALL GETADDR ; GET ADDRESS INTO HL |
|
|
|
DEPOSITLOOP: |
|
|
|
LD DE,DISPLAYBUF+0 |
|
|
|
LD A,H |
|
|
|
CALL PUTVALUE |
|
|
|
LD A,L |
|
|
|
CALL PUTVALUE |
|
|
|
LD A,$10 |
|
|
|
LD (DE),A |
|
|
|
INC DE |
|
|
|
LD (DE),A |
|
|
|
CALL GETVALUE ; |
|
|
|
LD (HL),A ; |
|
|
|
LD DE,DISPLAYBUF+6 ; DISPLAY WRITTEN MEM VALUE |
|
|
|
CALL PUTVALUE ; ... WITHOUT DP'S |
|
|
|
CALL ENCDISPLAY ; DISPLAY BUFFER CONTENTS |
|
|
|
DEPOSITGETKEY: |
|
|
|
CALL KB_GET ; GET KEY FROM KB |
|
|
|
CP 12H ; [CL] PRESSED, EXIT |
|
|
|
JP Z,FRONTPANELLOOP ; |
|
|
|
CP 13H ; [EN] PRESSED, INC ADDRESS AND LOOP |
|
|
|
JR Z,DEPOSITFW ; |
|
|
|
CP 14H ; [DE] PRESSED, PROMPT FOR NEW ADDRESS |
|
|
|
JR Z,DODEPOSIT ; |
|
|
|
JR DEPOSITGETKEY ; NO VALID KEY, LOOP |
|
|
|
DEPOSITFW: |
|
|
|
INC HL ; |
|
|
|
JR DEPOSITLOOP ; |
|
|
|
; |
|
|
|
;__GETADDR____________________________________________________________________ |
|
|
|
; |
|
|
|
@ -1181,64 +1121,70 @@ EXAMINEEXIT: |
|
|
|
;_____________________________________________________________________________ |
|
|
|
; |
|
|
|
GETADDR: |
|
|
|
PUSH BC ; STORE BC |
|
|
|
GETADDR0: |
|
|
|
LD HL,ADDR ; INITIALIZE DISPLAYBUF |
|
|
|
LD DE,DISPLAYBUF |
|
|
|
LD BC,8 |
|
|
|
LDIR |
|
|
|
GETADDR1: |
|
|
|
LD HL,DISPLAYBUF ; DISPLAY PROMPT |
|
|
|
CALL INITBUF |
|
|
|
JR GETVALW |
|
|
|
; |
|
|
|
;__GETVAL16___________________________________________________________________ |
|
|
|
; |
|
|
|
; GET 16 BIT VALUE FROM FRONT PANEL |
|
|
|
; PANEL TEMPLATE "????8888" |
|
|
|
; POS 01234567 |
|
|
|
;_____________________________________________________________________________ |
|
|
|
; |
|
|
|
GETVALW: |
|
|
|
LD A,80H ; |
|
|
|
LD (DISPLAYBUF+4),A ; |
|
|
|
LD (DISPLAYBUF+5),A ; |
|
|
|
LD (DISPLAYBUF+6),A ; |
|
|
|
LD (DISPLAYBUF+7),A ; |
|
|
|
GETVALW1: |
|
|
|
CALL ENCDISPLAY ; |
|
|
|
GETADDRLOOP: |
|
|
|
GETVALWLOOP: |
|
|
|
CALL KB_GET ; |
|
|
|
CP 10H ; |
|
|
|
JP M,GETADDRNUM ; NUMBER PRESSED, STORE IT |
|
|
|
JP M,GETVALWNUM ; NUMBER PRESSED, STORE IT |
|
|
|
CP 13H ; EN PRESSED, DONE |
|
|
|
JR Z,GETADDRDONE ; |
|
|
|
JR Z,GETVALWDONE ; |
|
|
|
CP 12H ; CLEAR PRESSED, CLEAR |
|
|
|
JR Z,GETADDR0 ; |
|
|
|
JR GETADDRLOOP ; INVALID KEY, LOOP |
|
|
|
GETADDRDONE: |
|
|
|
LD HL,00H ; HL=0 |
|
|
|
JR Z,GETVALW ; |
|
|
|
JR GETVALWLOOP ; INVALID KEY, LOOP |
|
|
|
GETVALWNUM: |
|
|
|
OR $80 ; SET DP |
|
|
|
LD C,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+7),A ; |
|
|
|
JR GETVALW1 ; |
|
|
|
GETVALWDONE: |
|
|
|
LD A,(DISPLAYBUF+6) ; GET DIGIT IN DISPLAY 6 |
|
|
|
AND $0F |
|
|
|
SLA A ; ROTATE IT TO HIGH NIBBLE |
|
|
|
SLA A ; |
|
|
|
SLA A ; |
|
|
|
SLA A ; |
|
|
|
LD C,A ; STORE IT IN "C" |
|
|
|
LD A,(DISPLAYBUF+7) ; GET DIGIT IN DISPLAY 7 |
|
|
|
AND 0FH ; CLEAR HIGH NIBBLE |
|
|
|
AND $0F |
|
|
|
OR C ; ADD IN NIBBLE STORED IN C |
|
|
|
LD L,A ; STORE IT IN LOW BYTE OF ADDRESS POINTER |
|
|
|
LD A,(DISPLAYBUF+4) ; GET DIGIT IN DISPLAY 4 |
|
|
|
AND $0F |
|
|
|
SLA A ; ROTATE IT TO HIGH NIBBLE |
|
|
|
SLA A ; |
|
|
|
SLA A ; |
|
|
|
SLA A ; |
|
|
|
LD C,A ; STORE IT IN "C" |
|
|
|
LD A,(DISPLAYBUF+5) ; GET DIGIT IN DISPLAY 5 |
|
|
|
AND 0FH ; CLEAR HIGH NIBBLE |
|
|
|
AND $0F |
|
|
|
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 4,5,6 & 7 |
|
|
|
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+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+7),A ; |
|
|
|
JR GETADDR1 ; |
|
|
|
; |
|
|
|
;__GETPORT____________________________________________________________________ |
|
|
|
; |
|
|
|
@ -1247,61 +1193,22 @@ GETADDRNUM: |
|
|
|
; POS 01234567 |
|
|
|
;_____________________________________________________________________________ |
|
|
|
; |
|
|
|
;***use getvalue below after init of displaybuf |
|
|
|
GETPORT: |
|
|
|
PUSH BC ; STORE BC |
|
|
|
GETPORT0: |
|
|
|
LD HL,PORT ; INITIALIZE DISPLAYBUF |
|
|
|
LD DE,DISPLAYBUF |
|
|
|
LD BC,8 |
|
|
|
LDIR |
|
|
|
GETPORT1: |
|
|
|
LD HL,DISPLAYBUF ; DISPLAY PROMPT |
|
|
|
CALL ENCDISPLAY ; |
|
|
|
GETPORTLOOP: |
|
|
|
CALL KB_GET ; |
|
|
|
CP 10H ; |
|
|
|
JP M,GETPORTNUM ; NUMBER PRESSED, STORE IT |
|
|
|
CP 13H ; EN PRESSED, DONE |
|
|
|
JR Z,GETPORTDONE ; |
|
|
|
CP 12H ; CLEAR PRESSED, CLEAR |
|
|
|
JR Z,GETPORT0 |
|
|
|
JR GETPORTLOOP ; INVALID KEY, LOOP |
|
|
|
GETPORTDONE: |
|
|
|
LD A,(DISPLAYBUF+6) ; |
|
|
|
SLA A ; |
|
|
|
SLA A ; |
|
|
|
SLA A ; |
|
|
|
SLA A ; |
|
|
|
LD C,A ; |
|
|
|
LD A,(DISPLAYBUF+7) ; |
|
|
|
AND 0FH ; |
|
|
|
OR C ; |
|
|
|
LD C,A ; |
|
|
|
LD A,10H ; |
|
|
|
LD (DISPLAYBUF+7),A ; |
|
|
|
LD (DISPLAYBUF+6),A ; |
|
|
|
LD A,C ; |
|
|
|
POP BC ; RESTORE BC |
|
|
|
RET |
|
|
|
GETPORTNUM: |
|
|
|
LD C,A ; |
|
|
|
LD A,(DISPLAYBUF+7) ; |
|
|
|
LD (DISPLAYBUF+6),A ; |
|
|
|
LD A,C ; |
|
|
|
LD (DISPLAYBUF+7),A ; |
|
|
|
JR GETPORT1 ; |
|
|
|
CALL INITBUF |
|
|
|
JR GETVALUE |
|
|
|
; |
|
|
|
;__GETVALUE___________________________________________________________________ |
|
|
|
; |
|
|
|
; GET VALUE FROM FRONT PANEL |
|
|
|
; GET 8 BIT VALUE FROM FRONT PANEL |
|
|
|
; PANEL TEMPLATE "??????88" |
|
|
|
; POS 01234567 |
|
|
|
;_____________________________________________________________________________ |
|
|
|
; |
|
|
|
GETVALUE: |
|
|
|
PUSH BC ; STORE BC |
|
|
|
JR GETVALUECLEAR ; |
|
|
|
LD A,80H ; |
|
|
|
LD (DISPLAYBUF+6),A ; |
|
|
|
LD (DISPLAYBUF+7),A ; |
|
|
|
GETVALUE1: |
|
|
|
CALL ENCDISPLAY ; |
|
|
|
GETVALUELOOP: |
|
|
|
@ -1311,37 +1218,50 @@ GETVALUELOOP: |
|
|
|
CP 13H ; EN PRESSED, DONE |
|
|
|
JR Z,GETVALUEDONE ; |
|
|
|
CP 12H ; CLEAR PRESSED, CLEAR |
|
|
|
JR Z,GETVALUECLEAR ; |
|
|
|
JR Z,GETVALUE ; |
|
|
|
JR GETVALUELOOP ; INVALID KEY, LOOP |
|
|
|
GETVALUEDONE: |
|
|
|
LD A,(DISPLAYBUF+6) ; |
|
|
|
SLA A ; |
|
|
|
SLA A ; |
|
|
|
SLA A ; |
|
|
|
SLA A ; |
|
|
|
LD C,A ; |
|
|
|
LD A,(DISPLAYBUF+7) ; |
|
|
|
AND 0FH ; |
|
|
|
OR C ; |
|
|
|
LD C,A ; |
|
|
|
LD A,10H ; |
|
|
|
LD (DISPLAYBUF+7),A ; |
|
|
|
LD (DISPLAYBUF+6),A ; |
|
|
|
LD A,C ; |
|
|
|
POP BC ; RESTORE BC |
|
|
|
RET |
|
|
|
GETVALUENUM: |
|
|
|
OR $80 ; SET DP |
|
|
|
LD C,A ; |
|
|
|
LD A,(DISPLAYBUF+7) ; |
|
|
|
LD (DISPLAYBUF+6),A ; |
|
|
|
LD A,C ; |
|
|
|
LD (DISPLAYBUF+7),A ; |
|
|
|
JR GETVALUE1 ; |
|
|
|
GETVALUECLEAR: |
|
|
|
LD A,00H ; |
|
|
|
LD (DISPLAYBUF+7),A ; |
|
|
|
LD (DISPLAYBUF+6),A ; |
|
|
|
JR GETVALUE1 ; |
|
|
|
GETVALUEDONE: |
|
|
|
LD A,(DISPLAYBUF+6) ; |
|
|
|
AND $0F |
|
|
|
RLCA ; |
|
|
|
RLCA ; |
|
|
|
RLCA ; |
|
|
|
RLCA ; |
|
|
|
LD C,A ; |
|
|
|
LD A,(DISPLAYBUF+7) ; |
|
|
|
AND $0F |
|
|
|
OR C ; |
|
|
|
RET |
|
|
|
; |
|
|
|
;__PUTVALUE___________________________________________________________________ |
|
|
|
; |
|
|
|
; INSERT HEX DIGITS OF A INTO AN ENCODED DSKY DISPLAY BUFFER |
|
|
|
; AT POSTION SPECIFIED BY DE. ON RETURN, DE POINTS TO NEXT |
|
|
|
; POSITION IN DISPLAY BUFFER. |
|
|
|
;_____________________________________________________________________________ |
|
|
|
; |
|
|
|
PUTVALUE: |
|
|
|
PUSH AF ; SAVE INCOMING VALUE |
|
|
|
RLCA ; HIGH NIBBLE -> LOW NIBBLE |
|
|
|
RLCA ; ... |
|
|
|
RLCA ; ... |
|
|
|
RLCA ; ... |
|
|
|
AND $0F ; ISOLATE LOW NIBBLE |
|
|
|
LD (DE),A ; PLACE DIGIT VALUE IN BUFFER |
|
|
|
INC DE ; NEXT BUFFER POSITION |
|
|
|
POP AF ; RECOVER ORIGINAL VALUE |
|
|
|
AND $0F ; ISOLATE LOW NIBBLE |
|
|
|
LD (DE),A ; PLACE DIGIT VALUE IN BUFFER |
|
|
|
INC DE ; NEXT BUFFER POSITION |
|
|
|
RET ; DONE |
|
|
|
; |
|
|
|
;__MTERM_INIT_________________________________________________________________ |
|
|
|
; |
|
|
|
@ -1362,9 +1282,28 @@ MTERM_INIT: |
|
|
|
;_____________________________________________________________________________ |
|
|
|
; |
|
|
|
KB_GET: |
|
|
|
PUSH BC |
|
|
|
PUSH DE |
|
|
|
PUSH HL ; SAVE HL |
|
|
|
CALL KY_GET ; GET A KEY |
|
|
|
POP HL ; RESTORE HL |
|
|
|
POP DE |
|
|
|
POP BC |
|
|
|
RET |
|
|
|
; |
|
|
|
;__INITBUF____________________________________________________________________ |
|
|
|
; |
|
|
|
; INITIALIZE DISPLAY BUFFER FROM VALUE AT ADDRESS IN HL |
|
|
|
;_____________________________________________________________________________ |
|
|
|
; |
|
|
|
INITBUF: |
|
|
|
;PUSH BC |
|
|
|
;PUSH DE |
|
|
|
LD DE,DISPLAYBUF |
|
|
|
LD BC,8 |
|
|
|
LDIR |
|
|
|
;POP DE |
|
|
|
;POP BC |
|
|
|
RET |
|
|
|
; |
|
|
|
;__ENCDISPLAY_________________________________________________________________ |
|
|
|
@ -1373,49 +1312,53 @@ KB_GET: |
|
|
|
;_____________________________________________________________________________ |
|
|
|
; |
|
|
|
ENCDISPLAY: |
|
|
|
PUSH HL |
|
|
|
LD HL,DISPLAYBUF |
|
|
|
JR ENCBUF0 |
|
|
|
; |
|
|
|
;__ENCBUF_____________________________________________________________________ |
|
|
|
; |
|
|
|
; DISPLAY CONTENTS OF BUFFER AT HL DECODED PER SEGDECODE TABLE |
|
|
|
;_____________________________________________________________________________ |
|
|
|
; |
|
|
|
ENCBUF: |
|
|
|
PUSH HL ; SAVE HL |
|
|
|
ENCBUF0: |
|
|
|
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: |
|
|
|
ENCBUF1: |
|
|
|
LD A,(HL) ; GET SOURCE BYTE |
|
|
|
INC HL ; BUMP TO NEXT BYTE FOR NEXT PASS |
|
|
|
PUSH AF ; SAVE IT |
|
|
|
AND $80 ; ISOLATE HI BIT (DP) |
|
|
|
XOR $80 ; FLIP IT |
|
|
|
LD C,A ; SAVE IN C |
|
|
|
POP AF ; RECOVER ORIGINAL |
|
|
|
AND $7F ; REMOVE HI BIT (DP) |
|
|
|
PUSH HL ; SAVE POINTER |
|
|
|
LD HL,SEGDECODE |
|
|
|
CALL ADDHLA |
|
|
|
LD HL,SEGDECODE ; POINT TO DECODE TABLE |
|
|
|
CALL ADDHLA ; OFFSET BY INCOMING VALUE |
|
|
|
LD A,(HL) ; GET DECODED VALUE |
|
|
|
OR C ; RECOMBINE WITH DP 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 |
|
|
|
DJNZ ENCBUF1 ; LOOP THRU ALL BUF POSITIONS |
|
|
|
LD HL,DECODEBUF ; POINT TO DECODED BUFFER |
|
|
|
CALL SEGDISPLAY ; DISPLAY IT |
|
|
|
CALL DSKY_SHOWRAW ; DISPLAY IT |
|
|
|
POP DE ; RESTORE DE |
|
|
|
POP BC ; RESTORE BC |
|
|
|
POP AF ; RESTORE AF |
|
|
|
POP HL ; RESTORE HL |
|
|
|
RET |
|
|
|
; |
|
|
|
;__SEGDISPLAY_________________________________________________________________ |
|
|
|
; |
|
|
|
; DISPLAY CONTENTS OF DISPLAYBUF IN DECODED HEX BITS 0-3 ARE DISPLAYED DIG, BIT 7 IS DP |
|
|
|
; |
|
|
|
;_____________________________________________________________________________ |
|
|
|
; |
|
|
|
;***remove this and replace occurences with dsky_showraw |
|
|
|
SEGDISPLAY: |
|
|
|
PUSH AF |
|
|
|
PUSH BC |
|
|
|
CALL DSKY_SHOWRAW |
|
|
|
POP BC |
|
|
|
POP AF |
|
|
|
RET |
|
|
|
; |
|
|
|
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) |
|
|
|
GOTO .DB $1A,$14,$10,$10,$00,$00,$00,$00 ; "Go 0000" (ENCODED) |
|
|
|
|
|
|
|
;_KB DECODE TABLE_____________________________________________________________ |
|
|
|
; |
|
|
|
@ -1438,15 +1381,13 @@ KB_DECODE: |
|
|
|
; |
|
|
|
;_HEX 7_SEG_DECODE_TABLE______________________________________________________ |
|
|
|
; |
|
|
|
; 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 |
|
|
|
; SET BIT 7 TO DISPLAY W/ DECIMAL POINT |
|
|
|
;_____________________________________________________________________________ |
|
|
|
SEGDECODE: |
|
|
|
; 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 |
|
|
|
|
|
|
|
.DB $7B,$30,$6D,$75,$36,$57,$5F,$70,$7F,$77,$7E,$1F,$4B,$3D,$4F,$4E |
|
|
|
; - . P o r t A d r G |
|
|
|
.DB $00,$04,$00,$6E,$1D,$0C,$14,$7E,$3D,$0C,$5B |
|
|
|
; |
|
|
|
DISPLAYBUF: .FILL 8,0 |
|
|
|
DECODEBUF: .FILL 8,0 |
|
|
|
|