Prev: EFDB Up: Map Next: F014
EFE1: open RS232 channel for output
Used by the routine at F250.
EFE1 85 9A STA $9A save the output device number
EFE3 AD 94 02 LDA $0294 read the pseudo 6551 command register
EFE6 4A LSR A shift handshake bit to carry
EFE7 90 29 BCC $F012 if 3 line interface go ??
EFE9 A9 02 LDA #%00000010 mask 0000 00x0, RTS out
EFEB 2C 01 DD BIT $DD01 test VIA 2 DRB, RS232 port
EFEE 10 1D BPL $F00D if DSR = 0 set DSR not present and exit
EFF0 D0 20 BNE $F012 if RTS = 1 just exit
EFF2 AD A1 02 LDA $02A1 get the RS-232 interrupt enable byte
EFF5 29 02 AND #$02 mask 0000 00x0, timer B interrupt
EFF7 D0 F9 BNE $EFF2 loop while the timer B interrupt is enebled
EFF9 2C 01 DD BIT $DD01 test VIA 2 DRB, RS232 port
EFFC 70 FB BVS $EFF9 loop while CTS high
EFFE AD 01 DD LDA $DD01 read VIA 2 DRB, RS232 port
F001 09 02 ORA #%00000010 mask xxxx xx1x, set RTS high
F003 8D 01 DD STA $DD01 save VIA 2 DRB, RS232 port
F006 2C 01 DD BIT $DD01 test VIA 2 DRB, RS232 port
F009 70 07 BVS $F012 exit if CTS high
F00B 30 F9 BMI $F006 loop while DSR high
This entry point is used by the routines at F04D and F409.
set no DSR and exit
F00D A9 40 LDA #$40 set DSR signal not present
F00F 8D 97 02 STA $0297 save the RS232 status register
F012 18 CLC flag ok
F013 60 RTS
Prev: EFDB Up: Map Next: F014