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