Address i_RegSel - Register Select = 0 - Status register
Value = 0x00, No data present
Value = 0x01, Data present
Address i_RegSel - Register Select = 0 - Data register
ASCII Data
Software Examples
Read Keyboard
Returns keyboard ASCII character in Reg0
Destroys Reg1
RDKBD JSR WTKBRX WAIT FOR KBD RX CHAR
IOR 0X01 0X0D READ KBD CHAR
RTS
WTKBRX IOR 0X00 0X0C READ KBD STATUS
ARI 0X00 0X01 RX RDY BIT
BEZ WTKBRX LOOP UNTIL CHAR PRESENT
RTS
Poll keyboard Status
Returns keyboard status in Reg0
0x00 = No char
0x01 - Char present
POLLKBD IOR 0X00 0X0C
RTS
Check keyboard for CTRL-C
Returns CTRL-c Status
0x00 - No key pressed or not Ctrl-C key
0x01 - CTRL-C was pressed
CHKCTLC IOR 0X01 0X0C READ KBD STATUS
CMP 0x01 0X00
BEQ DONCTLC KEY WAS NOT PRESSED
SKPCTLC IOR 0X00 0X0D READ KBD DATA
CMP 0X00 0X03 IS CTRL-C
BNE DONCTLC
LRI 0X00 0X01 RETURNS 1 IF CTRL-C
JMP EXITCTLC
DONCTLC LRI 0X00 0X00
EXITCTLC RTS
VHDL Entity
ENTITY Wrap_Keyboard IS
port (
i_CLOCK_50 : IN STD_LOGIC; -- input clock
i_n_reset : IN STD_LOGIC; --
i_kbCS : IN STD_LOGIC; --
i_RegSel : IN STD_LOGIC; -- address
i_rd_Kbd : IN STD_LOGIC; --
i_ps2_clk : IN STD_LOGIC; --
i_ps2_data : IN STD_LOGIC; --
o_kbdDat : OUT STD_LOGIC_vector(7 downto 0));
end Wrap_Keyboard;