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