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 |