Date : Thu, 19 Jan 1984 09:45:29 EST
From : Keith Petersen <w8sdz@brl>
Subject: Kaypro BIOS list bug
The following is forwarded from CompuServe, courtesy Irv Hoff.
---
#: 74332 Sec. 1 - General
Sb: #Kaypro Mystery Solved
18-Jan-84 01:54:26
Fm: JACK CRENSHAW 72325,1327
To: All
Some time ago I reported a problem with the MDM711/Kaypro/Epson combina-
tion, in that the ^P print buffer dropped characters. Periodically, the
subject has come up again, with Irv Hoff and Pete Holsberg trying hardest
to help me solve the problem. I finally got around to looking at the
Kaypro BIOS, and as Pete suspected, there's a bug. The offending piece
of code is in the ROM, and goes:
LISTST: IN 1CH ;GET SYSTEM PORT
BIT 3,A ;TEST PRINTER READY BIT
RZ ;THIS IS THE BUG
MVI A, 0FFH ;ELSE RETURN FF
RET
Note that if the bit 3 is zero, the routine returns garbage in A. The
garbage is whatever is in port 1CH, which includes output as well as
input bits. However, the zero FLAG is set properly, which is why BIOS
function 4 (LIST) works OK. Ironically, if the programmer had used the
usual ANI insruction instead of the Z-80 fancy bit test, he would have
saved two bytes as well as get the right response. The bug is in the
ROM, so can't be easily fixed. The patch is easy, though - Change the
jump vector in the BIOS to: JMP PATCH and add:
PATCH: CALL 0FB65H ;call old bios entry
RNZ ;OK unless its zero
XRA A ;else clear A
RET ;that's all, folks
- Jack Crenshaw