10 REM" [0x16] [0x07] [0x0E] 20 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] Basread. By C.J.Richardson. 30 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] Basread. By C.J.Richardson. 40 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] For 8 Bit Software 50 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] For 8 Bit Software 60 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] This program will print out 70 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] Basic programs from disc. This 80 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] may be a useful search tool. 90 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] Characters below ASCII 32 are 100 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] turned into@,remove line510 110 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] to change this. UseSHIFT+CTRL 120 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] to slow down the output. Use 130 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ESCAPE to read another file. 140 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ------------------------------ 150 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] This program is P.D. 160 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] Please do not alter it in any 170 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] way. If you use any part of it 180 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] please mention me in the 190 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] the titles. Thankyou, CJR. 200 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ------------------------------ 210 DEFFNS="Basread" 220 O%=&200:Z%=TOP+O%:LOMEM=Z%+O%+&100:REM O%=CODE LENGTH. &9C FREE 230 PROCass 240 P%=Z%+2:?(Z%+1)=&D:REPEAT:READA$:$P%=A$:P%=P%+LENA$+1:UNTILA$="OSCLI" 250 ONERROR:CLOSE#0:IFERR<>17 REPORT:PRINTERL:END 260 REPEAT:REPEAT:MODE7 270 PROCd("Basic program reader."):PROCd("By C.J.Richardson") 280 *. 290 PROCd("File to read? RETURN Or * command."):INPUTF$:IFLEFT$(F$,1)="*" OSCLIF$:PROCd("Press a key"):REPEATUNTILGET 300 IFF$=""PROCme:F$="*" 310 UNTILLEFT$(F$,1)<>"*":F%=OPENIN F$ 320 MODE0 330 ?&70=F%:!&77=&0064000A:!&7B=&271003E8 340 CALLstart:CLOSE#F% 350 PRINT"End of file press a key":REPEATUNTILGET:UNTILFALSE 360 DEFPROCd(A$):PRINTTAB(18-LENA$/2)"";A$:PRINTTAB(18-LENA$/2)"";A$:ENDPROC 370 DEFPROCass 380 FORL%=0TO2STEP2:P%=Z%-O%:[:OPTL%:.start:LDA#0:STA&72:STA&73 \ Setup 390 .B%:LDY&70:JSR&FFD7:STA&71:CMP#&D:BNEl15:JSRnl:LDA&81:BEQB%:RTS:.l15 \ Newline? 400 CMP#34:BNEl9:LDA&72:CMP#0:BNEl8:INC&72:INC&72:.l8:DEC&72:LDA&71 \ " found 410 .l9:CMP#&F4:BNEl10:INC&73:LDA#82:JSR&FFEE:LDA#69:JSR&FFEE:LDA#77:JSR&FFEE:JMPB% \ REM found 420 .l10:LDA&73:BNEl2 \ REM is on 430 LDA&72:BNEl2 \ " are on 440 LDA&71:CMP#&8D:BNEC%:JSRl12:.C% \ Calculate target 450 LDA&71:CMP#&80:BMIl2:CLC:SBC#&7E:STA&71: \ Keyword if above &7F 460 .l13:LDX#0:.l3:JSRl5 \ Search data 470 CMP#&D:BNEl3 \ New keyword? 480 DEC&71:LDA&71:CMP#0:BNEl3 \ Keyword found? 490 .l4:JSRl5:CMP#&D:BEQl7:JSR&FFEE:JMPl4:.l7:LDA#Z%DIV256:STAl6+2:JMPB% \ Keyword 500 .l2:LDA&71 510 CLC:CMP#32:BCSok:LDA#64:.ok \ Check and remove low code 520 JSR&FFEE:JMPB% \ Print ASCII code 530 .l5:INX:CPX#0:BNEl6:INCl6+2:.l6:LDA Z%,X:RTS \ Search data 540 .nl:JSR&FFEE:LDA#10:JSR&FFEE:LDA#0:STA&72:STA&73 \ Reset 550 JSRl16:LDA#32:STA&7F 560 .l14:LDA&81:BEQl29:RTS:.l29:LDA#0:STA&76:LDX#6:.l20:SEC:LDY#0:.l17:LDA&75:SBC&77,X 570 PHA:LDA&74:SBC&78,X:BCCl18:STA&74:PLA:STA&75:INY 580 JMPl17:.l18:PLA:TYA:ORA&76:BNEl19:LDA&7F:JMPl21:.l19:TYA:ORA#&30:STA&76 590 .l21:JSR&FFEE:DEX:DEX:BPLl20:LDA&75:ORA#&30:JSR&FFEE \ Print line number 600 RTS 610 .l12 \ GOTO and GOSUB 620 JSRl16:LDA#0:STA&7F:LDA&74:PHA 630 LDA&75:EOR#&40:STA&75 640 LDA&76:EOR#&40:STA&74 650 PLA:STA&76:AND#4:BEQl27:LDA&76:EOR#4:STA&76:JMPl22 660 .l27:LDA&74:ADC#&40:STA&74 670 .l22:LDA&76:CMP#&40:BEQl25 680 .l23:CMP#&70:BNEl24:LDA#&80:JMPl25 690 .l24:CMP#&60:BNEl14:LDA#&C0:JMPl25 700 .l25:CLC:ADC&75:STA&75:LDA&74:ADC#0:STA&74:JMPl14 710 .l16:LDA#0:STA&81:LDY&70:CLC \ File handle 720 JSR&FFD7:STA&74 \ Used by line number and GOTO and GOSUB 730 JSR&FFD7:STA&75:BCCl28:INC&81:RTS:.l28 740 JSR&FFD7:STA&76 750 RTS 760 ]:NEXT 770 ENDPROC 780 DEFPROCme 790 L%=PAGE-1:REPEATL%=L%+1 800 IF?(L%-1)=&D PRINT'STRING$(5-LEN STR$(?L%*256+?(L%+1))," ");STR$(?L%*256+?(L%+1));:L%=L%+3:I%=0:R%=0:PROCremcheck 810 IF?L%=58PROCremcheck 820 IF?L%=34:I%=I%EOR1 830 IFR%<>1:IFI%<>1:IF?L%>&7F:RESTORE:FOR IL%=1TO ?L%-&7F:READ A$:NEXT:PRINTA$;ELSE VDU?L% 840 UNTILL%>TOP-3:PRINT:ENDPROC 850 DEFPROCremcheck:REPEAT:IF?L%<&80:VDU?L%:L%=L%+1:IF?L%=34I%=I%EOR1 860 UNTIL?L%>&7F OR?L%=13:IF?L%=244:R%=1:PRINT"REM";:L%=L%+1 870 ENDPROC 880 DATAAND,DIV,EOR,MOD,OR,ERROR,LINE,OFF,STEP,SPC,TAB(,ELSE,THEN,,OPENIN,PTR,PAGE,TIME,LOMEM,HIMEM,ABS,ACS,ADVAL,ASC,ASN,ATN,BGET,COS,COUNT,DEG,ERL,ERR,EVAL,EXP,EXT,FALSE,FN,GET,INKEY,INSTR(,INT,LEN,LN,LOG,NOT,OPENUP,OPENOUT,PI,POINT(,POS 890 DATARAD,RND,SGN,SIN,SQR,TAN,TO,TRUE,USR,VAL,VPOS,CHR$,GET$,INKEY$,LEFT$(,MID$(,RIGHT$(,STR$,STRING$(,EOF,AUTO,DELETE,LOAD,LIST,NEW,OLD,RENUMBER,SAVE,EDIT,PTR,PAGE,TIME,LOMEM,HIMEM,SOUND,BPUT,CALL,CHAIN,CLEAR,CLOSE,CLG,CLS,DATA,DEF,DIM 900 DATADRAW,END,ENDPROC,ENVELOPE,FOR,GOSUB,GOTO,GCOL,IF,INPUT,LET,LOCAL,MODE,MOVE,NEXT,ON,VDU,PLOT,PRINT,PROC,READ,REM,REPEAT,REPORT,RESTORE,RETURN,RUN,STOP,COLOUR,TRACE,UNTIL,WIDTH,OSCLI