<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>
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
<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>