I am trying to make my own PS2 routine that should read a value from the buffer and return with the value in A. At the moment i am using my PUTCHAR routine which display an character on screen who's input is in A . But i dont see any character changing on screen. Later when this works i will start on decoding the values to key presses.
Can someone look at this code and see what i am doing wrong , why i get no values in A each time call READ_BUFFER .
- Code: Select all
PENT_CONF EQU $EFF7
CMOS_ON EQU $80
CMOS_OFF EQU 0
CMOS_SET_ADR EQU $DFF7
CMOS_RD_WR EQU $BFF7
; Out A - Key value
READ_KEY LD H,$0C
CALL READCMOS ; 0X0C CMOS
SET 0,L ; 0=1
CALL WRITECMOS
LD HL,$F002 ; Enable PS2 keyboard
CALL WRITECMOS
READ_BUFFER LD H,$F0 ; Read key buffer
CALL READCMOS
AND A
JR Z,READ_BUFFER
INC A
JR Z,READ_KEY ; FF
; Out Value in A
RET
; In H - Address of cmos register. In L - Data from register
READCMOS DI
PUSH BC
LD BC,PENT_CONF
LD A,CMOS_ON
OUT (C),A
LD BC,(CMOS_SET_ADR)
OUT (C),H
LD BC,(CMOS_RD_WR)
IN L,(C)
JR OFF_CMOS
; In H - Address of cmos register. Out L - Data to register
WRITECMOS DI
PUSH BC
LD BC,PENT_CONF
LD A,CMOS_ON
OUT (C),A
LD BC,(CMOS_SET_ADR)
OUT (C),H
LD BC,(CMOS_RD_WR)
OUT (C),L
OFF_CMOS LD A,CMOS_OFF
LD BC,(PENT_CONF)
OUT (C),A
POP BC
LD A,L
AND A
RET
Thanx Guys.