<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>
Date   : Sun, 27 Nov 1983 10:51:00-PST
From   : ABN.ISCAMS@usc-isid
Subject: Re: KERMIT and TAC

PCKERMIT users:
Here's a patch to PCKERMIT to hopefully solve the TAC intercept character
problem with no hassles about resetting TACs.  Now, please check this out for
me -- I'm an 8080/Z80 hacker and donno nuttin about 8086/8088 code except
what I reasoned out of the PCKERMIT source.

Regards,

David Kirschbaum
Toad Hall

;************************System Dependent****************************
;       Put a char in AH to the port.
PORT   PROC  NEAR 
IF ibmpc
outchr:        sub cx,cx               ; [14 start]
       mov al,ah               ; Parity routine works on AL. [16]
       call dopar              ; Set parity appropriately.     [10]
       mov ah,al               ; Don't overwrite character with status. [16]
       mov dx,03FDH

; Toad Hall note:  hokay - now we got the char in ah.  Need to test and see
;if it's the infamous TAC intercept character (@ in this case).  Sending it
;twice will tell the TAC that it's a true ASCII character for the host: the
;TAC will then send a single @ on to the host, and echo one more back to you.
;If it is, we'll call OUTCH1 to put it out once, and then fall through to
:put it out the second time.  If it isn't, we'll just send one character.
; PS:  Somebody with a manual on this assembler language check this out
; for me - I'm only guessing at the mnemonics since I'm a Z80/8080 hacker.

       cmp ah,40h              ; Is it the @?
       cz outch1               ; Yep, send it the first time..
                               ; ...and fall through for the second.
                               ; Else just send it once.  [Toad Hall]  
;End of Toad Hall TACpatch
outch1:        in al,dx
       test al,20H             ; Transmitter ready?
       jnz outch2              ; Yes
       loop outch1
        jmp r                  ; Timeout
outch2:        mov al,ah               ; Now send it out
       mov dx,03F8H
       out dx,al
       jmp rskp                ; [14 end]
ENDIF
IF Z100
outchr:        mov al,ah               ; Yes, get the character into al
       mov cx,0
       call dopar              ; Set parity appropriately.   [10]

; Toad Hall Note:  somebody check this for me -- I assume here that
; ah has not been trashed by the DOPAR call above, and the char is
; still in ah.  I also assume the BIOS-AUXOUT call don't do nuttin
; to ah or al or wherever the char is being accessed so we can in
; fact call and put it out twice in a row.  [Toad Hall]

       cpi ah,40h              ; Is the char an @ (TAC intercept char)?
       cz bios-auxout          ; Yep - send it once...
                               ; ...and fall through to send the 2nd...
; End of Toad Hall TACpatch.

outch1:        call bios_auxout        ; Send the character
       jmp rskp
ENDIF

<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>