davidjl@eecs.cs.pdx.edu (David J Leitko) (03/22/91)
I am working on a program that needs to be able to do keychecks very
quickly. Since, I'm timing very short events, I have disabled
interrupts, and have been using direct port reads to check for
keypresses. I'd rather not have to resort to interrupts.
Unfortunately, the methods I have been using do not work with the
PS/2 Model 25, and maybe other computers as well.
Does anybody have any suggestions on how this can be accomplished
on a PS/2?
As a second question, does anybody have an up to date listing of
all the possible setting of the Model/SubModel information located
in F000:FFFE? The latest version I have is from "The _New_ Peter
Norton Programmer's Guide to the IBM PC & PS/2", page 64. Any
additional information would be greatly appreciated.
I am enclosing a sample program to demonstrate what I am trying to
do. Note that this is not the code I need a solution for, it just
demonstrates what I'm doing for key checks now. This code works
on PCs, XTs, and ATs. IT WILL LOCK UP ON A PS/2 MODEL 25. (This
is written for TASM...)
--
DOSSEG
.MODEL SMALL
.STACK 100h
.DATA
KeyMsg DB 'Key Pressed', 13, 10, '$'
NotFoundMsg DB 'System not recognized', 13, 10, '$'
KEYBOARD EQU 060h
NO_KEY EQU 09Ch
.CODE
MOV AX, @DATA
MOV DS, AX
CLI
MOV AX, 0F000h ; Figure out the machine model
MOV ES, AX
MOV BH, ES:0FFFEh
TOP_OF_LOOP:
CMP BH, 0FEh
JGE PC_XT_TEST
CMP BH, 0FCh
JE AT_TEST
CMP BH, 0FAh
JE PS2_TEST
NOT_FOUND:
MOV AH, 9 ; System not recognized
MOV DX, OFFSET NotFoundMsg
INT 21h
STI
MOV AH, 04Ch ; Clean exit to DOS
INT 21h
PC_XT_TEST:
IN AL, KEYBOARD ; Quick and dirty.. PC/XT only
AND AL, 00010000b
JNZ KEY_PRESSED
JMP TOP_OF_LOOP
AT_TEST:
IN AL, KEYBOARD ; Quick and dirty.. seems to work
CMP AL, NO_KEY ; on most systems.. other than
JNZ KEY_PRESSED ; PC, XT, or PS/2 Model 25
JMP TOP_OF_LOOP
PS2_TEST:
<PLEASE HELP ME!> ; Can't get anything to work right
JMP TOP_OF_LOOP
KEY_PRESSED:
MOV AH, 9 ; Display success
MOV DX, OFFSET KeyMsg
INT 21h
STI
MOV AH, 04Ch ; Clean exit to DOS
INT 21h
END
--
Thanks for any help you might provide.
--
David J Leitko "Bleah!..." davidjl@eecs.cs.pdx.edu
Computer Science Department ..!uunet!tektronix!pdxgate!davidjl
Portland State University
Portland, Oregon This space intentionally left blank.