100 SYS700 110 .OPT OO 120 ; 130 *=$9EE8 140 ; 150 CHRGET =$0073 160 CIAINT =$DC0D 170 BANKIN =$01 180 TEMPZERO =$FD52 190 TEMPBLOC =$FD57 200 TEMPREG =$FD59 210 SOV =$FD5A 220 BASICVEC =$0308 230 BORDER =$D020 240 ; 250 ;*** CHANGE BASIC VECTOR 260 LDA BASICVEC 270 STA TEMPVEC ;MOVE TO END OF PROGRAM 280 LDA BASICVEC+1 290 STA TEMPVEC+1 300 LDA #RAM 330 STA BASICVEC+1 340 RTS 350 ; 360 ;*** MAIN ROUTINE STARTS HERE 370 RAM LDY #$01 380 LDA ($7A),Y ; LOOK AHEAD OF BASIC 390 CMP #"&" ; CHECK FOR CHARACTER 400 BEQ R2 410 JMP LODE 420 R2 JSR CHRGET ; START OF SAVE 430 SEC 440 LDA 46 450 SBC 44 460 CMP #93 ; CHECK SIZE 470 BCC R3 480 DEC BORDER ; WARN TOO LARGE 490 JMP EXIT 500 R3 JSR ZERSA 510 SEC 520 LDA $2D 530 STA SOV 540 SBC $2B 550 STA TEMPBLOC ;GET NUMBER BLKS LOW 560 LDA $2E 570 STA SOV+1 580 SBC $2C 590 STA TEMPBLOC+1 ;NUMBER BLKS HIGH 600 SEC 610 LDA #$00 620 SBC TEMPBLOC ; SUBTRACT BLKS 630 STA $FD 640 STA STRDISK ; START ADDRESS IN RAM DISK 650 LDA #$FD 660 SBC TEMPBLOC+1 670 STA $FE 680 STA STRDISK+1 690 LDA $2B 700 STA $FB 710 LDA $2C 720 STA $FC 730 LDY #$00 740 START LDA ($FB),Y ; SOURCE 750 STA ($FD),Y ; DESTINATION 760 INC $FB 770 BNE S2 780 INC $FC 790 S2 INC $FD 800 BNE S3 810 INC $FE 820 S3 LDA $FB 830 CMP SOV 840 BNE START 850 LDA $FC 860 CMP SOV+1 ;KEEP (null)ING TO THE SOV 870 BNE START 880 JSR ZERLO 890 JMP EXIT 900 LODE CMP #"\" ;CHECK FOR CHARACTER 910 BNE EXIT 920 JSR CHRGET ;START OF LOAD 930 JSR ZERSA 940 LDA STRDISK ;START ADDRESS IN RAM DISK 950 STA $FB ;STORE IN SOURCE 960 LDA STRDISK+1 970 STA $FC 980 LDA $2B ;START OF BASIC (LOW) 990 STA $FD ;DESTINATION (LOW) 1000 LDA $2C ;BASIC (HIGH) 1010 STA $FE ; DESTINATION (HIGH) 1020 LDY #$00 1030 STLD LDA ($FB),Y ;SOURCE 1040 STA ($FD),Y ; TARGET 1050 INC $FB 1060 BNE L2 1070 INC $FC 1080 L2 INC $FD 1090 BNE L3 1100 INC $FE 1110 L3 LDA $FB 1120 CMP #$00 1130 BNE STLD 1140 LDA $FC 1150 CMP #$FD 1160 BNE STLD 1170 LDA $7B ;CHECK FOR RUNNING PRGRM 1180 CMP #$02 1190 BNE PRGM 1200 LDA $FD ;DIRECT MODE THEN SET SOV 1210 STA $2D 1220 LDA $FE ; SOV 1230 STA 46 1240 JSR ZERLO 1250 EXIT JMP (TEMPVEC) 1260 PRGM JSR ZERLO 1270 JSR $E1A1 ;BASIC LOAD ROUTINE 1280 JMP $A7AE ;BACK TO INTERPRETER 1290 ZERSA LDA BANKIN ;SWITCH OUT ROMS 1300 STA TEMPREG 1310 LDA #$7F 1320 STA CIAINT ;KILL INTERUPTS 1330 LDA #$00 1340 STA BANKIN 1350 LDX #$04 1360 ZS1 LDA $FB,X ;MOVE TO A SAFE SPOT 1370 STA TEMPZERO,X 1380 DEX 1390 BNE ZS1 1400 RTS 1410 ZERLO LDX #$04 1420 ZL1 LDA TEMPZERO,X ; PUT BACK 1430 STA $FB,X 1440 DEX 1450 BNE ZL1 1460 LDA TEMPREG ;SWITCH ROMS ON 1470 STA BANKIN 1480 LDA #$81 ;START INTERUPTS 1490 STA CIAINT 1500 RTS 1510 ;************ PROGRAM VARIABLES 1520 STRDISK .BYTE 0,0 ;START ADDRESS IN DISK MEMORY 1530 TEMPVEC .BYTE 0,0 ;POINTS TO INTERPRETER LOOP 1540 ;