10 REM LISTBAS - Listing of all BASIC 20 REM lines without use of Basic ROM 30 REM by M.Bobrowski 9'92 Vers. 2.6 40 : 50 MODE 131 60 page=&18:oswrch=&FFEE:osnewl=&FFE7:osbyte=&FFF4 70 ptr=&70:lineno=&72:length=&74:flag=&75:num=&76 80 tempy=&78:token=&79:taddr=&7A 90 : 100 PROCassemble 105 OSCLI"K.0CALL&900|M":PRINT"Press f0 to read the program in memory":REM THIS LINE ADDED BY CJR 110 END 120 : 130 DEF PROCassemble 140 FOR pass=0 TO 2 STEP 2 150 P%=&900 160 [OPT pass 170 PHP:LDA #14:JSR oswrch 180 LDA page:STA ptr+1:LDA #0:STA ptr 190 : 200 .main_loop 210 LDY #1:LDA (ptr),Y 220 CMP #&FF:BNE notlast 230 PLP:RTS 240 : 250 .notlast 260 STA lineno+1 270 INY:LDA (ptr),Y:STA lineno 280 INY:LDA (ptr),Y:STA length 290 LDA &FF:ROL A:BCC noesc 300 LDA #&7E:JSR osbyte 310 BRK:EQUB 17:EQUS "Escape":BRK 320 : 330 .noesc 340 JSR display_lineno 350 LDY #4 360 : 370 .lineloop 380 CPY length:BEQ nextline 390 LDA (ptr),Y:INY 400 CMP #&F4:BEQ rem_or_data 410 CMP #&22:BEQ quote 420 CMP #&DC:BEQ rem_or_data 430 CMP #&8D:BEQ goto 440 JSR ptoken 450 JMP lineloop 460 : 470 .rem_or_data 480 JSR ptoken:JMP read_to_eol 490 : 500 .quote 510 JSR copy_char:JMP read_to_next_quote 520 : 530 .goto 540 LDA (ptr),Y 550 ASL A:ASL A:TAX:AND #&C0 560 INY:EOR (ptr),Y:STA num 570 TXA:ASL A:ASL A 580 INY:EOR (ptr),Y:STA num+1 590 INY:LDA #0:STA flag:JSR pnum 600 JMP lineloop 610 : 620 .read_to_eol 630 LDA (ptr),Y:INY:CMP #13:BEQ nextline 640 JSR pchar:JMP read_to_eol 650 : 660 .nextline 670 CLC:LDA ptr:ADC length:STA ptr 680 BCC nlnc:INC ptr+1 690 .nlnc JSR osnewl 700 JMP main_loop 710 : 720 .read_to_next_quote 730 LDA (ptr),Y:INY:CMP #34:BEQ rest_of_line 740 CMP #13:BEQ nextline 750 JSR pchar:JMP read_to_next_quote 760 .rest_of_line:JSR copy_char 770 JMP lineloop 780 : 790 .pchar 800 CMP #32:BCS pchar2:LDA #46 810 .pchar2:JMP copy_char 820 : 830 .display_lineno 840 LDA #&FF:STA flag:LDA lineno:STA num 850 LDA lineno+1:STA num+1 860 : 870 .pnum 880 LDA num:CMP #&10:LDA num+1:SBC #&27:BCS pdec:JSR spc 890 LDA num:CMP #&E8:LDA num+1:SBC #&3:BCS pdec:JSR spc 900 .byte 910 LDA num+1:BNE pdec 920 LDA num:CMP #100:BCS pdec:JSR spc 930 .tens 940 LDA num:CMP #10:BCS pdec:JSR spc 950 .pdec 960 TYA:PHA:TXA:PHA 970 LDX #0 980 .digit 990 LDY #16:LDA #0 1000 .tendiv 1010 ASL num:ROL num+1:ROL A 1020 CMP #10:BCC less 1030 SBC #10:INC num 1040 .less 1050 DEY:BNE tendiv 1060 CLC:ADC #&30:PHA:INX 1070 LDA num:ORA num+1:BNE digit 1080 .display 1090 PLA:JSR oswrch 1100 DEX:BNE display 1110 PLA:TAX:PLA:TAY 1120 RTS 1130 : 1140 .spc:LDX flag:BEQ nospace 1150 PHA:LDA #32:JSR oswrch 1160 PLA:.nospace:RTS 1170 : 1180 .ptoken 1190 CMP #&80:BCC copy_char 1200 STA token:STY tempy 1210 LDA #token_tab MOD 256:STA taddr 1220 LDA #token_tab DIV 256:STA taddr+1 1230 .find_token:LDY #0 1240 .find_token_loop:LDA (taddr),Y:CMP token 1250 BEQ read_token 1260 INC taddr:BNE find_token_loop 1270 INC taddr+1 1280 JMP find_token_loop 1290 .read_token 1300 INY 1310 .read_token_loop 1320 LDA (taddr),Y:BMI end_of_read 1330 JSR oswrch:INY:BNE read_token_loop 1340 .end_of_read 1350 LDY tempy:RTS 1360 .copy_char 1370 PHP:JSR oswrch 1380 PLP:RTS 1390 : 1400 .token_tab 1410 ]:NEXT 1420 : 1430 I%=0:REPEAT 1440 READ A$:$P%=CHR$(&80+I%)+A$:P%=P%+LENA$+1 1450 I%=I%+1:UNTIL I%=128:!P%=&FF:P%=P%+1 1460 ENDPROC 1470 : 1480 DATA AND,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( 1490 DATA POS,RAD,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 1500 DATA DIM,DRAW,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