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