0 REM THE TRANSACTOR VOLUME 6 ISSUE 02 PAGE 42 100 SYS700 110 .OPT OO 120 *=$C000 130 JMP SETUP 140 ; 150 ;KERNAL ENTRIES: 160 CHKIN =$FFC6 170 CHKOUT =$FFC9 180 CLALL =$FFE7 200 GETIN =$FFE4 210 OPEN =$FFC0 220 SETLFS =$FFBA 230 SETNAM =$FFBD 240 VECTOR =$FF8D 250 ; 260 SCRNOUT =$E716 ;CHROUT FOR SCREEN 270 NORMOUT =$F1CA ;CHROUT VECTOR 280 ; 290 ASAVE =$FB ;TEMP STORAGE FOR A 300 BUFPTR =$C6 ;# CHRS IN KBD BUFFR 320 OUTVEC =$0326 ;OUTPUT VECTOR 330 STOPVEC =$0328 ;CHECK STOP VECTOR 340 LOADVEC =$0330 ;LOAD VECTOR 350 SAVEVEC =$0332 ;SAVE VECTOR 370 IOABORT =$032C 380 FILENUM =100 ;RS232 FILE # 390 ; 400 FN .BYTE 6,16 ;RS232 CTRL/COMMAND 420 ; 430 SETUP =* 440 ; 450 ;SAVE OLD VECTORS 460 LDX #VECSAVE 480 SEC 490 JSR VECTOR 500 ; 510 JSR CLALL ;CLOSE ALL FILES 550 JSR RSOPEN ;OPEN RS232 FILE 560 ; 580 SEI 600 ;CHANGE STOP VECTOR 610 LDA #NEWSTOP 640 STA STOPVEC+1 650 ; 660 ;CHANGE LOAD VECTOR 670 LDA #NEWLOAD 700 STA LOADVEC+1 710 ; 720 ;CHANGE SAVE VECTOR 730 LDA #NEWSAVE 760 STA SAVEVEC+1 770 ; 780 ;CHANGE "ABORT I/O" VECTOR 790 LDA #NEWIO 820 STA IOABORT+1 830 ; 831 AFTERSAV =* 832 SEI 840 ;CHANGE OUTPUT VECTOR 850 LDA #NEWOUT: STA OUTVEC+1 870 ; 880 ;CHANGE IRQ VECTOR 890 LDA #INTRTN: STA $0315 920 CLI 930 RTS 940 ; 950 ; 960 NEWOUT =* 970 ;THIS IS THE NEW OUTPUT ROUTINE 980 ;WHICH SENDS TO RS232 AND SCREEN 990 ;THE VECTOR AT $0326 POINTS HERE 1000 ; 1005 SEI 1010 STA ASAVE 1020 TXA: PHA: TYA: PHA ;SAVE X & Y!! 1030 LDA ASAVE 1040 JSR SCRNOUT ;SCREEN 1050 LDX #FILENUM 1060 JSR CHKOUT 1070 LDA ASAVE 1080 JSR NORMOUT ;RS232 1090 PLA: TAY: PLA: TAX 1100 LDA ASAVE ;RESTORE A 1105 CLI 1110 RTS 1120 ; 1130 ; 1140 INTRTN =* 1150 ;PUTS CHAR FROM RS232 INTO 1160 ;KEYBOARD BUFFER 1170 ; 1180 LDX #FILENUM 1190 JSR CHKIN ;CONNECT RS232 CHANNEL 1200 JSR GETIN ;GET CHARACTER 1210 CMP #0 ;NULL 1220 BEQ OUT ;IGNORE NULLS 1230 CMP #3 ;CTRL-C (BREAK) 1240 BNE NOBRK 1250 LDA #$7F ;INDICATE BREAK 1260 STA BRKFLG ;..TO NEW STOP RTN 1270 JMP OUT 1280 NOBRK =* 1290 LDX #0 ;CLEAR STOP 1300 STX BRKFLG ;..FLAG 1310 LDX BUFPTR ;# CHARS IN BUFFER 1320 STA $0277,X ;KEYBOARD BUFFER 1330 INC BUFPTR ;POINT TO NEXT CHAR 1340 OUT =* 1350 LDX #0 ;SWITCH BACK TO 1360 JSR CHKIN ;..KEYBOARD 1370 JMP (VECSAVE) ;SYSTEM IRQ ROUTINE 1380 ; 1390 ; 1400 RSOPEN =* 1410 ;OPEN RS232 FILE 1420 LDX #FN ;...FILENAME 1440 LDA #2 ;FILENAME LENGTH 1450 JSR SETNAM ;SET FILENAME 1460 LDA #FILENUM 1470 LDX #2 1480 LDY #2 1490 JSR SETLFS 1500 JSR OPEN ;OPEN FILE#,2,2,FN 1510 LDX #FILENUM 1520 JSR CHKOUT ;CONNECT CHANNEL 1530 RTS 1540 BRKFLG .BYTE 0 1550 ; 1560 NEWSTOP =* 1570 ;CHECK STOP KEY ROUTINE 1580 LDA BRKFLG 1590 BEQ NOSTOP 1600 STA $91 1610 LDA #0 1620 STA BRKFLG 1630 NOSTOP =* 1640 JMP (VECSAVE+20) 1650 ; 1660 ; 1670 NEWLOAD =* 1680 ;LOAD VECTOR POINTS HERE 1690 ;MUST DISABLE STUFF BEFORE LOAD 1700 PHP: PHA: TXA: PHA 1710 LDX #0 ;0=LOAD 1730 JMP LD 1740 ; 1750 NEWSAVE =* 1760 PHP: PHA: TXA: PHA 1770 LDX #2 ;2=SAVE 1790 ; 1800 LD =* 1830 TYA 1840 PHA 1850 ; 1860 LDA VECSAVE 1870 STA $0314 ;IRQ VECTOR 1880 LDA VECSAVE+1 1890 STA $0315 1900 ; 1910 LDA VECSAVE+18 1920 STA OUTVEC ;OUTPUT VECTOR 1930 LDA VECSAVE+19 1940 STA OUTVEC+1 1950 ; 1970 LDA VECSAVE+28,X ;LOAD/SAVE ADR LO 1980 STA LDSV+1 1990 LDA VECSAVE+29,X ;LOAD/SAVE ADR HI 2000 STA LDSV+2 2010 PLA:TAY:PLA:TAX:PLA:PLP 2020 LDSV JSR *-* ;LOAD OR SAVE ROUTINE 2030 PHP:PHA:TXA:PHA:TYA:PHA 2040 JSR AFTERSAV 2050 PLA:TAY:PLA:TAX:PLA:PLP 2060 RTS 2070 ; 2080 NEWIO =* 2085 LDA #1 ;ALWAYS KEEP 1 FILE OPEN 2090 JMP $F331 2100 ; 2110 VECSAVE *=*+26