diff --git a/Source/Apps/tstdskng.asm b/Source/Apps/tstdskng.asm index d1abd87e..62db7c88 100644 --- a/Source/Apps/tstdskng.asm +++ b/Source/Apps/tstdskng.asm @@ -16,7 +16,7 @@ FALSE: .EQU 0 TRUE: .EQU !FALSE ; -DSKY_OSC: .EQU 2000000 ; OSCILLATOR FREQ IN HZ +DSKY_OSC: .EQU 100000 ; OSCILLATOR FREQ IN HZ ; BDOS: .EQU FALSE ; BDOS OR DIRECT TO 8250ISH ; @@ -31,25 +31,25 @@ PPI_BASE: .EQU $60 ; PPI BASE IO PORT ; 10 04 ; +--08--+ 80 ; -; KEY CODE MAP (KEY CODES) --CCCRRR +; KEY CODE MAP (KEY CODES) --CCCRRR ; -; 00 08 10 18 -; 01 09 11 19 -; 02 0A 12 1A -; 03 0B 13 1B -; 04 0C 14 1C -; 05 0D 15 1D +; 00 08 10 18 23 +; 01 09 11 19 22 +; 02 0A 12 1A 21 +; 03 0B 13 1B 20 +; 04 0C 14 1C SHIFT +; 05 0D 15 1D CONTROL ; ; LED BIT MAP (BIT VALUES) ; -; $08 $09 $0A $0B -; --- --- --- --- -; 01 01 01 01 -; 02 02 02 02 -; 04 04 04 04 -; 08 08 08 08 -; 10 10 10 10 -; 20 20 20 20 +; $08 $09 $0A $0B $0C +; --- --- --- --- --- +; 01 01 01 01 01 +; 02 02 02 02 02 +; 04 04 04 04 04 +; 08 08 08 08 08 +; 10 10 10 10 10 +; 20 20 20 20 20 ; PPIA: .EQU PPI_BASE + 0 ; PORT A PPIB: .EQU PPI_BASE + 1 ; PORT B @@ -62,12 +62,12 @@ DSKY_PPIX_WR: .EQU %10000010 ; PPIX VALUE FOR WRITES ; PIO CHANNEL C: ; ; 7 6 5 4 3 2 1 0 -; RES /RD /WR CS CS 0 0 A0 +; RES 0 0 CS CS /RD /WR A0 ; ; SETTING BITS 3 & 4 WILL ASSERT /CS ON 3279 -; CLEAR BITS 5 OR 6 TO ASSERT READ/WRITE +; CLEAR BITS 1 OR 2 TO ASSERT READ/WRITE ; -DSKY_PPI_IDLE: .EQU %01100000 +DSKY_PPI_IDLE: .EQU %00000110 ; DSKY_CMD_CLR: .EQU %11011111 ; CLEAR (ALL OFF) DSKY_CMD_CLRX: .EQU %11010011 ; CLEAR (ALL ON) @@ -176,7 +176,7 @@ M1: LD C,0 LD HL,DSPBUF CALL DSKY_PUTENCSTR -; +; M2: CALL CST ; CONSOLE STATUS JR NZ,M4 ; ABORT IF KEY PRESSED @@ -243,12 +243,18 @@ M4: ; DANCING LIGHTS CALL PRTSTRD .DB "\r\nDance, Baby, Dance (console key to end)...$" + + LD A,DSKY_CMD_CLR + CALL DSKY_CMD ; + + + LD E,$01 ; STARTING VALUE M5: CALL CST ; CONSOLE STATUS JR NZ,M8 ; ABORT IF KEY PRESSED - LD B,12 ; NUMBER OF BYTES + LD B,16 ; NUMBER OF BYTES LD C,$00 ; STARTING LOCATION (BYTE) M6: LD A,E @@ -268,14 +274,14 @@ M8: LD A,DSKY_CMD_CLR CALL DSKY_CMD ; -EXIT: +EXIT: ; GOODBYE CALL PRTSTRD .DB "\r\nThank you, please call again\r\n$" ; ; CLEAN UP AND RETURN TO OS LD SP,(STACKSAV) -; +; RET ; ; SETUP PPI FOR WRITING: PUT PPI PORT A IN OUTPUT MODE @@ -288,7 +294,7 @@ DSKY_PPIWR: LD A,(DSKY_PPIX_VAL) CP DSKY_PPIX_WR JR Z,DSKY_PPIWR1 -; +; ; SET PPI TO WRITE MODE LD A,DSKY_PPIX_WR OUT (PPIX),A @@ -317,7 +323,7 @@ DSKY_PPIRD: LD A,(DSKY_PPIX_VAL) CP DSKY_PPIX_RD JR Z,DSKY_PPIRD1 -; +; ; SET PPI TO READ MODE LD A,DSKY_PPIX_RD OUT (PPIX),A @@ -409,10 +415,10 @@ DSKY_DOUT2: OUT (PPIA),A ; ; PULSE /WR - RES 5,B + RES 1,B OUT (C),B NOP ; MAY NOT BE NEEDED - SET 5,B + SET 1,B OUT (C),B ; ; DEASSERT /CS @@ -462,14 +468,14 @@ DSKY_DIN2: LD B,A ; ; ASSERT /RD - RES 6,B + RES 2,B OUT (C),B ; ; GET VALUE IN A,(PPIA) ; ; DEASSERT /RD - SET 6,B + SET 2,B OUT (C),B ; ; DEASSERT /CS @@ -536,7 +542,7 @@ DSKY_PUTSTR: ADD A,DSKY_CMD_WDSP CALL DSKY_CMD POP BC -; +; DSKY_PUTSTR1: LD A,(HL) XOR $FF @@ -556,7 +562,7 @@ DSKY_GETSTR: ADD A,DSKY_CMD_RDSP CALL DSKY_CMD POP BC -; +; DSKY_GETSTR1: PUSH BC CALL DSKY_DIN @@ -623,7 +629,7 @@ DSKY_READ: CALL DSKY_GETSTR LD B,$10 LD HL,DSPBUF -DSKY_READ1: +DSKY_READ1: LD A,(HL) INC HL CALL PC_SPACE @@ -639,7 +645,7 @@ COUT: PUSH DE ; PUSH HL ; -#IF BDOS +#IF BDOS LD C,2 ; BDOS FUNC: CONSOLE OUTPUT LD E,A ; CHARACTER TO E CALL $0005 ; CALL BDOS @@ -984,7 +990,7 @@ DSKY_PPIX_VAL: .DB 0 DSPBUF: .FILL 16,0 ; PAT1: .DB $01,$02,$04,$08,$10,$20,$40,$80 - .DB $11,$22,$44,$88,$FF,$FF,$FF,$FF + .DB $11,$22,$44,$88,$00,$00,$00,$00 PAT1LN: .EQU $ - PAT1 PAT2: .DB $01,$03,$07,$0F,$1F,$3F,$7F,$FF .DB $11,$33,$77,$FF,$00,$00,$00,$00 diff --git a/Source/HBIOS/dskyng.asm b/Source/HBIOS/dskyng.asm index 53305e6a..3ae20965 100644 --- a/Source/HBIOS/dskyng.asm +++ b/Source/HBIOS/dskyng.asm @@ -13,25 +13,25 @@ ; 10 04 ; +--08--+ 80 ; -; KEY CODE MAP (KEY CODES) --CCCRRR +; KEY CODE MAP (KEY CODES) --CCCRRR ; -; 00 08 10 18 -; 01 09 11 19 -; 02 0A 12 1A -; 03 0B 13 1B -; 04 0C 14 1C -; 05 0D 15 1D +; 00 08 10 18 23 +; 01 09 11 19 22 +; 02 0A 12 1A 21 +; 03 0B 13 1B 20 +; 04 0C 14 1C SHIFT +; 05 0D 15 1D CTRL ; ; LED BIT MAP (BIT VALUES) ; -; $08 $09 $0A $0B -; --- --- --- --- -; 01 01 01 01 -; 02 02 02 02 -; 04 04 04 04 -; 08 08 08 08 -; 10 10 10 10 -; 20 20 20 20 +; $08 $09 $0A $0B $0C +; --- --- --- --- --- +; 01 01 01 01 01 +; 02 02 02 02 02 +; 04 04 04 04 04 +; 08 08 08 08 08 +; 10 10 10 10 10 +; 20 20 20 20 10 ; PPIA .EQU DSKYPPIBASE + 0 ; PORT A PPIB .EQU DSKYPPIBASE + 1 ; PORT B @@ -44,12 +44,12 @@ DSKY_PPIX_WR: .EQU %10000010 ; PPIX VALUE FOR WRITES ; PIO CHANNEL C: ; ; 7 6 5 4 3 2 1 0 -; RES /RD /WR CS CS 0 0 A0 +; RES 0 0 CS CS /RD /WR A0 ; ; SETTING BITS 3 & 4 WILL ASSERT /CS ON 3279 -; CLEAR BITS 5 OR 6 TO ASSERT READ/WRITE +; CLEAR BITS 1 OR 2 TO ASSERT READ/WRITE ; -DSKY_PPI_IDLE: .EQU %01100000 +DSKY_PPI_IDLE: .EQU %00000110 ; DSKY_CMD_CLR: .EQU %11011111 ; CLEAR (ALL OFF) DSKY_CMD_CLRX: .EQU %11010011 ; CLEAR (ALL ON) @@ -87,8 +87,8 @@ DSKY_REINIT: ; SET CLOCK SCALER TO 20 LD A,DSKY_CMD_CLK | DSKY_PRESCL CALL DSKY_CMD - LD A,%00001000 ; dan - CALL DSKY_CMD +; LD A,%00001000 ; dan +; CALL DSKY_CMD ; FALL THRU ; DSKY_RESET: @@ -123,6 +123,10 @@ KY_DE .EQU $14 ; DEPOSIT KY_EX .EQU $15 ; EXAMINE KY_GO .EQU $16 ; GO KY_BO .EQU $17 ; BOOT +KY_F4 .EQU $18 ; F4 +KY_F3 .EQU $19 ; F3 +KY_F2 .EQU $20 ; F2 +KY_F1 .EQU $21 ; F1 ; ;__DSKY_STAT_________________________________________________________________________________________ ; @@ -145,7 +149,8 @@ DSKY_GETKEY: LD A,DSKY_CMD_FIFO CALL DSKY_CMD CALL DSKY_DIN - LD B,24 ; SIZE OF DECODE TABLE + AND $3F ; STRIP OFF SHIFT AND CONTROL KEYS (FOR NOW) + LD B,28 ; SIZE OF DECODE TABLE LD C,0 ; INDEX LD HL,DSKY_KEYMAP ; POINT TO BEGINNING OF TABLE DSKY_GETKEY1: @@ -167,14 +172,19 @@ DSKY_KEYMAP: ; POS $00 $01 $02 $03 $04 $05 $06 $07 ; KEY [0] [1] [2] [3] [4] [5] [6] [7] .DB $0D, $04, $0C, $14, $03, $0B, $13, $02 -; +; ; POS $08 $09 $0A $0B $0C $0D $0E $0F ; KEY [8] [9] [A] [B] [C] [D] [E] [F] .DB $0A, $12, $01, $09, $11, $00, $08, $10 -; +; ; POS $10 $11 $12 $13 $14 $15 $16 $17 ; KEY [FW] [BK] [CL] [EN] [DE] [EX] [GO] [BO] .DB $05, $15, $1D, $1C, $1B, $1A, $19, $18 + + ; POS $18 $19 $20 $21 + ; KEY [F4] [F3] [F2] [F1] + .DB $23, $22, $21, $20 + ; #ENDIF ; DSKY_KBD ; @@ -279,10 +289,10 @@ DSKY_DOUT2: OUT (PPIA),A ; ; PULSE /WR - RES 5,B + RES 1,B OUT (C),B NOP ; MAY NOT BE NEEDED - SET 5,B + SET 1,B OUT (C),B ; ; DEASSERT /CS @@ -332,14 +342,14 @@ DSKY_DIN2: LD B,A ; ; ASSERT /RD - RES 6,B + RES 2,B OUT (C),B ; ; GET VALUE IN A,(PPIA) ; ; DEASSERT /RD - SET 6,B + SET 2,B OUT (C),B ; ; DEASSERT /CS @@ -406,7 +416,7 @@ DSKY_PUTSTR: ADD A,DSKY_CMD_WDSP CALL DSKY_CMD POP BC -; +; DSKY_PUTSTR1: LD A,(HL) XOR $FF @@ -426,7 +436,7 @@ DSKY_GETSTR: ADD A,DSKY_CMD_RDSP CALL DSKY_CMD POP BC -; +; DSKY_GETSTR1: PUSH BC CALL DSKY_DIN @@ -471,7 +481,7 @@ DSKY_PPIWR: LD A,(DSKY_PPIX_VAL) CP DSKY_PPIX_WR JR Z,DSKY_PPIWR1 -; +; ; SET PPI TO WRITE MODE LD A,DSKY_PPIX_WR OUT (PPIX),A @@ -505,7 +515,7 @@ DSKY_PPIRD: LD A,(DSKY_PPIX_VAL) CP DSKY_PPIX_RD JR Z,DSKY_PPIRD1 -; +; ; SET PPI TO READ MODE LD A,DSKY_PPIX_RD OUT (PPIX),A