Compucolor.org – Virtual Media

Listing of file='LISTER.BAS;01' on disk='vmedia/taylor_text-sector.ccvf'

5 POKE 32940,255:POKE 32941,159
7 CLEAR 2000
10 DATA END,FOR,NEXT,DATA,INPUT,DIM,READ,FILE,GOTO,RUN,IF,RESTORE
20 DATA GOSUB,RETURN,REM,GET,OUT,PUT,PLOT,SAVE,LOAD,POKE,PRINT
30 DATA LIST,CONT,CLEAR,DEF,WAIT,ON,TAB(,TO,FN,SPC(,THEN,NOT,STEP
40 DATA +,-,*,/,^,AND,OR,>,=,<,SGN,INT,ABS,CALL,FRE,INP,POS,SQR
50 DATA RND,LOG,EXP,COS,SIN,TAN,ATN,PEEK,LEN,STR$,VAL,ASC,CHR$
60 DATA LEFT$,RIGHT$,MID$
70 DIM A$(69)
80 FOR I= 0TO 69:READ A$(I):NEXT
85 KB= 33278:FB= 30652:PP= 4
87 BS$= CHR$ (8):NL$= CHR$ (0)+ CHR$ (0)
90 PLOT 12,8,6,2
95 INPUT "MAXIMUM LINE LENGTH : ";K2:IF K2= 0THEN  END
96 POKE 33289,K2
97 PRINT :INPUT  "DRIVE NUMBER : ";DR:PRINT
98 IF  DR < >  0 AND  DR < >  1 GOTO  97
99 CD$ =  "CD"+ CHR$ (DR+ 48)+ ": "
100 INPUT "NAME OF BASIC FILE TO BE LISTED : ";A$
101 INPUT  "VERSION NUMBER : ";VR
102 IF  VR <  0 OR  VR >  255 GOTO  101
105 A$= LEFT$ (A$+ "     ",6)+ ".BAS"
108 PLOT  6,6
110 INPUT "HIT RETURN WHEN DISKETTE LOADED AND PAPER READY ";A
120 PLOT 27,4
130 PRINT "READ ";CD$;" 0 A000-A2FF"
140 PLOT 27,27
150 BLKS= (PEEK (40961)+ 1)* 6- 2
155 PT= 24:LP= 0:LV= 0
160 FOR I= 1TO BLKS
170 B$= ""
180 FOR  K= 0 TO  8
185 J =  40960+ PT+ K:IF  K= 6 THEN  B$= B$+ "."
190 B$= B$+ CHR$ (PEEK (J))
195 NEXT
197 PRINT  B$
200 IF A$= B$THEN 260
210 PT= PT+ 21
220 IF (PT- 1)/ 128= INT ((PT- 1)/ 128)THEN PT= PT+ 2
230 NEXT
235 IF  LV< > 0 THEN  PT= LP:GOTO  300
240 PLOT  29,17:PRINT A$;" NOT FOUND ":PLOT  29,18
245 PRINT  "INSERT NEW DISKETTE OR TRY NEW NAME"
250 GOTO 90
260 J =  PEEK (40960+ PT+ 9):IF  J= VR GOTO  300
270 IF  VR< > 0 GOTO  210
280 IF  J> LV THEN  LV= J:LP= PT
290 GOTO  210
300 TT= 40960+ PT+ 10
310 C$= "":IF PEEK (TT+ 1)= 1THEN C$= "1"
320 ZX= PEEK (TT):GOSUB 400:C$= C$+ ZX$
330 Z1= (PEEK (TT+ 2)+ 256* PEEK (TT+ 3))* 128
335 ZX= INT (Z1/ 256):GOSUB 400:D$= ZX$
340 ZX= Z1- ZX* 256:GOSUB 400:D$= D$+ ZX$
345 MY= PEEK (TT+ 7)+ 256* PEEK (TT+ 8)- PEEK (TT+ 5)- 256* PEEK (TT+ 6)+ 40960
350 POKE 40960,0:PLOT 27,4
360 PRINT "READ ";CD$;" ";C$;" A001 ";D$
370 PLOT 27,27
375 TMP= PEEK (33265)
376 INPUT "START WITH LINE # ? ";M6:IF M6< 0THEN M6= 0
377 INPUT "END WITH LINE # ? ";M7:IF M7= 0OR M7< M6THEN M7= 65535
380 GOTO 500
400 ZA= INT (ZX/ 16):ZB= ZA+ 48:IF ZB> 57THEN ZB= ZB+ 7
410 ZX$= CHR$ (ZB):ZB= ZX- 16* ZA+ 48:IF ZB> 57THEN ZB= ZB+ 7
420 ZX$= ZX$+ CHR$ (ZB):RETURN
500 OO= 7527:R= 40961:PLOT 15,27,18,PP,27,13:POKE FB,96
502 CN= 2
505 PRINT :PRINT B$;"   UNPRINTABLE ASCII CHARACTERS ARE UNDERLINED"
507 IF PEEK (R)= 0THEN GOSUB 620
510 IF CN= > 62THEN PRINT :PRINT :PRINT :CN= 0:GOTO 530
520 CN= CN+ 1
525 M8= PEEK (R+ 2)+ 256* PEEK (R+ 3)
530 IF M8> M7GOTO 610
535 IF M8< M6THEN R= PEEK (R)+ 256* PEEK (R+ 1)+ OO:GOTO 525
540 PRINT :WW$= STR$ (PEEK (R+ 2)+ 256* PEEK (R+ 3)):GOSUB 62010
545 PRINT " ";
550 S= PEEK (R)+ 256* PEEK (R+ 1):IF S= 0GOTO 600
560 S= S+ OO
570 FOR E= R+ 4TO S- 2
575 Y= PEEK (E):IF Y< 32GOTO 660
577 IF Y> 197THEN WW$= STR$ (Y)+ NL$+ BS$+ BS$+ BS$+ NL$+ "___ ":GOSUB 62010:GOTO 588
580 IF Y> 127THEN WW$= A$(Y- 128)+ CHR$ (32):GOSUB 62010:GOTO 588
585 PRINT CHR$ (Y);
588 NEXT
589 IF S= > R+ MYGOTO 610
590 R= S:GOTO 510
600 POKE 33265,TMP:PLOT 6,7:PRINT "DOUBLE ZERO ENCOUNTERED, TERMINATING":GOTO 90
610 POKE 33265,TMP:PLOT 6,7:PRINT "END OF PROGRAM. TERMINATING":GOTO 90
620 POKE 33265,TMP:PLOT 6,1:INPUT "EXTRA LEADING ZERO. SHALL WE PROCEED? Y OR N ";Q$
623 IF LEFT$ (Q$,1)< > "N"THEN R= R+ 1:PLOT 27,13,6,2:RETURN
626 PRINT "TERMINATING":GOTO 90
660 U= U+ 2
670 IF Y< 10THEN PRINT "_";BS$;BS$;Y;:GOTO 588
675 U= U+ 2
680 WW$= "__"+ NL$+ BS$+ BS$+ BS$+ NL$+ STR$ (Y):GOSUB 62010:GOTO 588
730 END
62000 REM  FAST OUTPUT SUBROUTINE
62010 IF PEEK (KB)= 147THEN POKE FB+ 1,1:GOTO 62010
62020 PRINT WW$;:POKE FB+ 1,0
62030 IF PEEK (KB)= 141THEN POKE 33265,TMP:GOTO 626
62040 RETURN