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.