| C64 ROM | Routines |
| Prev: F028 | Up: Map | Next: F086 |
|
Used by the routine at F20E.
|
||||
| F04D | 85 99 | STA $99 | save the input device number | |
| F04F | AD 94 02 | LDA $0294 | get pseudo 6551 command register | |
| F052 | 4A | LSR A | shift the handshake bit to Cb | |
| F053 | 90 28 | BCC $F07D | if 3 line interface go ?? | |
| F055 | 29 08 | AND #%00001000 | mask the duplex bit, pseudo 6551 command is >> 1 | |
| F057 | F0 24 | BEQ $F07D | if full duplex go ?? | |
| F059 | A9 02 | LDA #$02 | mask 0000 00x0, RTS out | |
| F05B | 2C 01 DD | BIT $DD01 | test VIA 2 DRB, RS232 port | |
| F05E | 10 AD | BPL $F00D | if DSR = 0 set no DSR and exit | |
| F060 | F0 22 | BEQ $F084 | if RTS = 0 just exit | |
| F062 | AD A1 02 | LDA $02A1 | get the RS-232 interrupt enable byte | |
| F065 | 4A | LSR A | shift the timer A interrupt enable bit to Cb | |
| F066 | B0 FA | BCS $F062 | loop while the timer A interrupt is enabled | |
| F068 | AD 01 DD | LDA $DD01 | read VIA 2 DRB, RS232 port | |
| F06B | 29 FD | AND #%11111101 | mask xxxx xx0x, clear RTS out | |
| F06D | 8D 01 DD | STA $DD01 | save VIA 2 DRB, RS232 port | |
| F070 | AD 01 DD | LDA $DD01 | read VIA 2 DRB, RS232 port | |
| F073 | 29 04 | AND #%00000100 | mask xxxx x1xx, DTR in | |
| F075 | F0 F9 | BEQ $F070 | loop while DTR low | |
| F077 | A9 90 | LDA #$90 | enable the FLAG interrupt | |
| F079 | 18 | CLC | flag ok | |
| F07A | 4C 3B EF | JMP $EF3B | set VIA 2 ICR from A and return | |
| F07D | AD A1 02 | LDA $02A1 | get the RS-232 interrupt enable byte | |
| F080 | 29 12 | AND #%00010010 | mask 000x 00x0 | |
| F082 | F0 F3 | BEQ $F077 | if FLAG or timer B bits set go enable the FLAG interrupt | |
| F084 | 18 | CLC | flag ok | |
| F085 | 60 | RTS | ||
| Prev: F028 | Up: Map | Next: F086 |