10 DEFFNS="3to7" 20 *FX229 30 MODE7 40 VDU23;8202;0;0;0; 50 HIMEM=&3000 60 DIMscr%(20),code 300,string 80 70 PROCassemble 80 F%=0 90 ONERROR CLOSE#F%:OSCLI"EX.!BOOT":END 100 REM PROCfile 110 A$=$&A00:REM REMOVE THIS LINE IF ABOVE LINE IS ACTIVATED 120 F%=OPENIN A$ 130 PRINT''CHR$(157)CHR$(132)"Colour? Y/N"'' 140 IFINSTR("Yy",GET$) ?&74=1 ELSE ?&74=0 150 IF ?&74 ?&72=130 ELSE ?&72=0 160 B%=&900:times%=0:back%=0:new%=0 170 ?&76=?&74 180 : 190 REPEAT 200 IF NOT EOF#F% new%=1:PROCld 210 G%=&3000 220 REPEAT 230 ?&73=0 240 REPEAT 250 CALL code 260 PRINT'CHR$(?&72)$string; 270 UNTIL ?&73>19 OR G%>=T% 280 depth%=(&4000*(times%-1)+G%-&3000)/(EXT#F%/100) 290 PRINTTAB(0,0)CHR$(157)CHR$(132); 300 IF depth%<10 PRINT" "; 310 PRINTSTR$(depth%)"%"; 320 *FX21 330 IF EOF#F% AND G%>=T% PRINT" ESCAPE Finishes, or (B)ack. ";TAB(39,24);:REPEAT:G$=GET$:UNTILINSTR("Bb",G$) ELSE PRINT" Any Key, or (B)ack, (F)orward.";TAB(39,24);:G$=GET$ 340 IFINSTR("Bb",G$) PROCjumpback 350 IFINSTR("Ff",G$) PROCjumpforward 360 UNTILG%>=T% 370 UNTILFALSE 380 END 390 : 400 DEFPROCld 410 IFback%:times%=times%-1:PTR#F%=scr%(times%) 420 IFnew%:times%=times%+1:scr%(times%)=PTR#F% 430 IF EXT#F%-PTR#F%>&3FFF H%=&4000 ELSE H%=EXT#F%-PTR#F% 440 PRINT'CHR$(157)CHR$(132)" Loading Please Wait " 450 A%=4 460 X%=B% MOD 256 470 Y%=B% DIV 256 480 B%?0=F% 490 B%!1=&3000 500 B%!5=H% 510 CALL&FFD1 520 D%=0:back%=0:new%=0:T%=&3000+H%+D% 530 IF PTR#F%=EXT#F% ENDPROC 540 S%=&6FFF 550 REPEAT 560 D%=D%+1 570 S%=S%+1 580 R%=BGET#F% 590 ?S%=R% 600 UNTIL?S%=13 OR ?S%=10 OR EOF#F% 610 S%?1=&FF 620 T%=&3000+H%+D% 630 ENDPROC 640 : 650 DEFPROCfile 660 REPEAT 670 CLS 680 PRINT"†8-Bit Software 80 to 40 Column"'"†Text Conversion. By C.J.Richardson."'"†Please enter filename to Convert, or"'"†'*' command (eg *DRIVE 2):"' 690 *. 700 PRINT'"Filename :" 710 INPUT A$ 720 IF LEFT$(A$,1)="*" OSCLI+A$ 730 UNTILLEFT$(A$,1)<>"*" 740 ENDPROC 750 : 760 DEFPROCjumpback 770 PRINT'CHR$(157)CHR$(132)" Jump Back" 780 IFG%<=&3600 AND times%=1:G%=&3000:ENDPROC 790 IFG%>&3600:G%=G%-&600:REPEAT:G%=G%-1:UNTIL ?G%=13 OR G%=&3000:ENDPROC 800 back%=1 810 PROCld:G%=&6A00:REPEAT:G%=G%-1:UNTIL ?G%=13 820 ENDPROC 830 : 840 DEFPROCjumpforward 850 IFG%>(T%-&380) ENDPROC 860 G%=G%+&300 870 REPEAT:G%=G%+1:UNTIL?G%=13 880 PRINT'CHR$(157)CHR$(132)" Jump Forward" 890 ENDPROC 900 : 910 DEFPROCassemble 920 strpos=string 930 FOR I%=0 TO 2 STEP 2 940 P%=code 950 [OPTI% 960 JSR clear 970 .loop 980 JSR get 990 LDX &74:BEQ a1 1000 LDA &404:CMP #13:BNE a1 1010 LDX &75:BEQ a1 1020 JSR chcol:JMP a2 1030 .a1 1040 LDX #0:STX &75 1050 LDA &404:CMP #13:BNE a2 1060 LDX #1:STX &75 1070 .a2 1080 LDA &404:CMP #13:BEQ a3 1090 CMP #126:BCS a3 1100 CMP #32:BCC a3 1110 JSR atob 1120 .a3 1130 LDA &404:CMP #13:BEQ a5 1140 LDX &76:CPX #40:BEQ a5 1150 LDX &41D:CPX &451:BCC a4 1160 LDX &41C:CPX &450:BCS a5 1170 .a4 1180 JMP loop 1190 .a5 1200 LDX &76:CPX #40:BNE a6 1210 JSR back:JMP a7 1220 .a6 1230 LDA &404:CMP #13:BNE a8 1240 .a7 1250 LDX &74:STX &76:INC &73 1260 .a8 1270 RTS 1280 \ ******* subroutines ******** 1290 .clear 1300 LDX #0:STX &77 1310 LDA #13:STA string,X:RTS 1320 .get 1330 LDX &41C:STX &80 1340 LDX &41D:STX &81 1350 LDY #0:LDA (&80),Y:STA &404 1360 INC &41C:BNE g1:INC &41D 1370 .g1 1380 RTS 1390 .atob 1400 INC &76 1410 LDX &77:LDA &404:STA string,X 1420 INX:STX &77:LDA #13:STA string,X 1430 RTS 1440 .chcol 1450 INC &72:LDX &72 1460 CPX #132:BNE c1 1470 LDY #133:STY &72 1480 .c1 1490 CPX #135:BNE c2 1500 LDY #130:STY &72 1510 .c2 1520 RTS 1530 .back 1540 LDX &41C:STX &82:LDX &41D:STX &83 1550 LDX &77:STX &84 1560 .bloop 1570 LDY #2 1580 .b0 1590 LDX &41C:BNE b1:DEC &41D 1600 .b1 1610 DEC &41C:DEY:BNE b0 1620 JSR get 1630 DEC &77 1640 LDA &404:CMP #32:BEQ b2 1650 LDX &77:CPX#1:BNE bloop 1660 LDX &84:STX &77 1670 LDA #127:STA string,X 1680 INX:LDA #13:STA string,X 1690 LDX &82:STX &41C 1700 LDX &83:STX &41D 1710 RTS 1720 .b2 1730 LDX &77:LDA #13:STA string,X 1740 .b3 1750 RTS 1760 ]NEXT:ENDPROC