Prev: F3D5 Up: Map Next: F47D
F409: open RS232 device
Used by the routine at F34A.
F409 20 83 F4 JSR $F483 initialise RS232 output
F40C 8C 97 02 STY $0297 save the RS232 status register
F40F C4 B7 CPY $B7 compare with file name length
F411 F0 0A BEQ $F41D exit loop if done
F413 B1 BB LDA ($BB),Y get file name byte
F415 99 93 02 STA $0293,Y copy to 6551 register set
F418 C8 INY increment index
F419 C0 04 CPY #$04 compare with $04
F41B D0 F2 BNE $F40F loop if not to 4 yet
F41D 20 4A EF JSR $EF4A compute bit count
F420 8E 98 02 STX $0298 save bit count
F423 AD 93 02 LDA $0293 get pseudo 6551 control register
F426 29 0F AND #%00001111 mask 0000 xxxx, baud rate
F428 F0 1C BEQ $F446 if zero skip the baud rate setup
F42A 0A ASL A * 2 bytes per entry
F42B AA TAX copy to the index
F42C AD A6 02 LDA $02A6 get the PAL/NTSC flag
F42F D0 09 BNE $F43A if PAL go set PAL timing
F431 BC C1 FE LDY $FEC1,X get the NTSC baud rate value high byte
F434 BD C0 FE LDA $FEC0,X get the NTSC baud rate value low byte
F437 4C 40 F4 JMP $F440 go save the baud rate values
F43A BC EB E4 LDY $E4EB,X get the PAL baud rate value high byte
F43D BD EA E4 LDA $E4EA,X get the PAL baud rate value low byte
F440 8C 96 02 STY $0296 save the nonstandard bit timing high byte
F443 8D 95 02 STA $0295 save the nonstandard bit timing low byte
F446 AD 95 02 LDA $0295 get the nonstandard bit timing low byte
F449 0A ASL A * 2
F44A 20 2E FF JSR $FF2E
F44D AD 94 02 LDA $0294 read the pseudo 6551 command register
F450 4A LSR A shift the X line/3 line bit into Cb
F451 90 09 BCC $F45C if 3 line skip the DRS test
F453 AD 01 DD LDA $DD01 read VIA 2 DRB, RS232 port
F456 0A ASL A shift DSR in into Cb
F457 B0 03 BCS $F45C if DSR present skip the error set
F459 20 0D F0 JSR $F00D set no DSR
F45C AD 9B 02 LDA $029B get index to Rx buffer end
F45F 8D 9C 02 STA $029C set index to Rx buffer start, clear Rx buffer
F462 AD 9E 02 LDA $029E get index to Tx buffer end
F465 8D 9D 02 STA $029D set index to Tx buffer start, clear Tx buffer
F468 20 27 FE JSR $FE27 read the top of memory
F46B A5 F8 LDA $F8 get the RS232 input buffer pointer high byte
F46D D0 05 BNE $F474 if buffer already set skip the save
F46F 88 DEY decrement top of memory high byte, 256 byte buffer
F470 84 F8 STY $F8 save the RS232 input buffer pointer high byte
F472 86 F7 STX $F7 save the RS232 input buffer pointer low byte
F474 A5 FA LDA $FA get the RS232 output buffer pointer high byte
F476 D0 05 BNE $F47D if ?? go set the top of memory to F0xx
F478 88 DEY
F479 84 FA STY $FA save the RS232 output buffer pointer high byte
F47B 86 F9 STX $F9 save the RS232 output buffer pointer low byte
Prev: F3D5 Up: Map Next: F47D