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