| C64 ROM | Routines |
| Prev: EFDB | Up: Map | Next: F014 |
|
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 |