10 REM "3to7" 80 column to 40 20 REM V1.30 30 REM Modified JGH 20-Jun-1996 40 REM Improved RPS 29-Mar-1997 50 REM Modified JGH 18-Jun-1998 60 IFINKEY(0)=0:INPUT""A$:$&A00=A$ 70 A$=$&600:I%=INSTR(A$," "):IFI%:A$=MID$(A$,I%+1):$&A00=A$ 80 *FX229 90 *FX4,2 100 *KEY15 B 110 *KEY14 F 120 MODE7:VDU23;8202;0;0;0; 130 HIMEM=&2FFF 140 DIMscr%(20),code 350,string 80 150 PROCassemble:F%=0 160 ONERROROSCLI"FX4,0":CLOSE#0:IFERR=17 THENOSCLI"Exec $.!BOOT":END ELSEMODE7:REPORT:PRINT:END 170 A$=$&A00:IFA$="" ORLENA$>80 ORASCA$<32 ORASCA$>126:PROCfile ELSE $&A00="" 180 PROCheader("Add colour to text ? (Y/N)") 190 ?&74=(INSTR("Yy",GET$)>0)AND1 200 ?&72=130 AND(?&74>0) 210 F%=OPENIN A$:IFF%=0:PROCheader(A$+" not found"):key%=INKEY(150):PROCfile:GOTO180 220 B%=&900:times%=0:back%=0:new%=0 230 ?&76=?&74:?&71=0 240 : 250 REPEAT 260 IF NOTEOF#F%:new%=1:PROCld 270 G%=&3000 280 REPEAT:CLS:?&73=0 290 REPEAT:CALLcode 300 PRINT'CHR$(?&72)$string; 310 UNTIL?&73>22 OR G%>=T% 320 depth%=(&4000*(times%-1)+G%-&3000)/(EXT#F%/100) 330 PROCheader(RIGHT$(" "+STR$depth%,2)+"%"+"Arrow keys :„up & downEsc„: end") 340 *FX21 350 REPEATG$=GET$:UNTILINSTR("BbFb:*/?",G$) 360 IFINSTR("Bb*:",G$) ANDG%>&3000:PROCjumpback 370 IFINSTR("Ff?/",G$):PROCjumpforward 380 UNTILG%>=T%: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 H%=EXT#F%-PTR#F%:IFH%>&3FFF:H%=&4000 450 PROCheader("Loading file...") 460 A%=4:X%=B% MOD256:Y%=B% DIV256 470 ?B%=F%:B%!1=&3000:B%!5=H% 480 CALL&FFD1 490 D%=0:back%=0:new%=0:T%=&3000+H%+D% 500 IFPTR#F%=EXT#F% THENENDPROC 510 S%=&6FFF 520 REPEAT:D%=D%+1:S%=S%+1:R%=BGET#F%:?S%=R%:UNTILR%=13 ORR%=10 OREOF#F% 530 S%?1=&FF:T%=&3000+H%+D% 540 ENDPROC 550 : 560 DEFPROCfile:REPEAT:CLS 570 PRINTTAB(0,2);"†8-Bit Software 80 to 40 Column"'"†Text Conversion. By C.J.Richardson."'"†Please enter filename to convert, or"'"†'*' to goto the command line."' 580 *. 590 A$="":*FX138,0,13 600 REPEAT 610 key%=GET:IF(key%<8 ORkey%>127)ANDkey%<>13 THENGOTO610 620 IFkey%=ASC"*" THENkey%=0:VDU&16,7:REPEAT:PRINT"*";:INPUT""A$:OSCLIA$:UNTILLEN(A$)=0 630 IF(key%=127 ORkey%=8)ANDLEN(A$)=0 THENVDU7 640 IF(key%=127 ORkey%=8)ANDLEN(A$)>=1 THENA$=LEFT$(A$,LEN(A$)-1) 650 IFLEN(A$)=21 THENVDU7:GOTO680 660 IFkey%>32 ANDkey%<127 THENA$=A$+CHR$(key%) 670 PROCheader("Enter filename: "+A$) 680 UNTILkey%=13 ANDLEN(A$)>0 690 ENDPROC 700 : 710 DEFPROCjumpback 720 IFG%<=&3600 AND times%=1:G%=&3000:ENDPROC 730 IFG%>&3600:G%=G%-&500:REPEAT:G%=G%-1:UNTIL ?G%=13 OR G%=&3000:ENDPROC 740 back%=1 750 PROCld:G%=&6A00:REPEAT:G%=G%-1:UNTIL ?G%=13 760 ENDPROC 770 : 780 DEFPROCjumpforward 790 IFG%>(T%-&380):ENDPROC 800 REPEAT:G%=G%-1:UNTIL?G%=13 810 G%=G%+1:ENDPROC 820 : 830 DEFPROCheader(line$) 840 PRINTTAB(0,0);CHR$157;CHR$132;LEFT$(line$,37);STRING$(37-LEN(line$)," ") 850 ENDPROC 860 : 870 DEFPROCassemble 880 strpos=string 890 FOR I%=0TO2STEP2 900 P%=code 910 [OPTI% 920 JSR clear 930 .loop 940 JSR get 950 LDX &74:BEQ a1 960 LDA &404:CMP #13:BNE a1 970 LDX &75:BEQ a1 980 JSR chcol:JMP a2 990 .a1 1000 LDX #0:STX &75 1010 LDA &404:CMP #13:BNE a2 1020 LDX #1:STX &75 1030 .a2 1040 LDA &404:CMP #13:BEQ a3 1050 CMP #126:BCS a3 1060 CMP #29:BEQ high 1070 CMP #32:BCC a3 1080 JSR atob:JMP a3 1090 .high 1100 LDA &71:BMI a3:\ View type 1110 ASL A:BMI skip:\ Extended 1120 \ Not yet set: 1130 LDY #1:LDA (&80),Y:PHA:INY 1140 .highLP 1150 LDA (&80),Y:CMP #29:BEQ high2 1160 INY:BPL highLP:STY &71:BMI a3 1170 .high2 1180 INY:LDA (&80),Y:AND #&DF:STA &70 1190 LDA #&80:STA &71 1200 PLA:AND #&DF:CMP &70:BNE a3 1210 LSR &71 1220 .skip 1230 JSR g0:\ Skip 1240 .a3 1250 LDA &404:CMP #13:BEQ a5 1260 LDX &76:CPX #40:BEQ a5 1270 LDX &41D:CPX &451:BCC a4 1280 LDX &41C:CPX &450:BCS a5 1290 .a4 1300 JMP loop 1310 .a5 1320 LDX &76:CPX #40:BNE a6 1330 JSR back:JMP a7 1340 .a6 1350 LDA &404:CMP #13:BNE a8 1360 .a7 1370 LDX &74:STX &76:INC &73 1380 .a8 1390 RTS 1400 \ ******* subroutines ******** 1410 .clear 1420 LDX #0:STX &77 1430 LDA #13:STA string,X:RTS 1440 .get 1450 LDX &41C:STX &80 1460 LDX &41D:STX &81 1470 LDY #0:LDA (&80),Y:STA &404 1480 .g0 1490 INC &41C:BNE g1:INC &41D 1500 .g1 1510 RTS 1520 .atob 1530 INC &76 1540 LDX &77:LDA &404:STA string,X 1550 INX:STX &77:LDA #13:STA string,X 1560 RTS 1570 .chcol 1580 INC &72:LDX &72 1590 CPX #132:BNE c1 1600 LDY #133:STY &72 1610 .c1 1620 CPX #135:BNE c2 1630 LDY #130:STY &72 1640 .c2 1650 RTS 1660 .back 1670 LDX &41C:STX &82:LDX &41D:STX &83 1680 LDX &77:STX &84 1690 .bloop 1700 LDY #2 1710 .b0 1720 LDX &41C:BNE b1:DEC &41D 1730 .b1 1740 DEC &41C:DEY:BNE b0 1750 JSR get 1760 DEC &77 1770 LDA &404:CMP #32:BEQ b2 1780 LDX &77:CPX#1:BNE bloop 1790 LDX &84:STX &77 1800 LDA #127:STA string,X 1810 INX:LDA #13:STA string,X 1820 LDX &82:STX &41C 1830 LDX &83:STX &41D 1840 RTS 1850 .b2 1860 LDX &77:LDA #13:STA string,X 1870 .b3 1880 RTS 1890 ] 1900 NEXT:ENDPROC