Browse Source

Merge pull request #209 from danwerner21/dw-071121-dskyng-work

Dw 071121 dskyng work
pull/211/head
Wayne Warthen 5 years ago
committed by GitHub
parent
commit
f89d609de2
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 74
      Source/Apps/tstdskng.asm
  2. 72
      Source/HBIOS/dskyng.asm

74
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 1000000 ; 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

72
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

Loading…
Cancel
Save