10 *TV255 20 *FX21 30 *FX4,1 40 *KEY10"OLD|M" 50 MODE7 60 VDU23,1,0;0;0;0; 70 BKST$=CHR$(133)+CHR$(157)+CHR$(134) 80 BKND$=CHR$(131)+CHR$(157) 100 ch%=0 110 REPEAT 120 ch%=ch%+1:IFch%>5:ch%=1 130 VDU30 150 PRINTBKND$ 180 RESTORE 190 FORI=1TO23:READdo$ 200 A$=MID$(do$,1,1):IFch%=1 AND A$<>" ":A$=CHR$(ASC(A$)EOR&20) 210 B$=MID$(do$,2,1):IFch%=2 AND B$<>" ":B$=CHR$(ASC(B$)EOR&20) 220 C$=MID$(do$,3,1):IFch%=3 AND C$<>" ":C$=CHR$(ASC(C$)EOR&20) 230 D$=MID$(do$,4,1):IFch%=4 AND D$<>" ":D$=CHR$(ASC(D$)EOR&20) 240 E$=MID$(do$,5,1):IFch%=5 AND E$<>" ":E$=CHR$(ASC(E$)EOR&20) 250 PRINTBKND$" "BKST$A$" "BKND$BKST$B$" "BKND$BKST$C$" "BKND$BKST$D$" "BKND$BKST$E$" "BKND$ 260 NEXT 270 PRINTBKND$; 272 PRINTTAB(ch%*7,4)CHR$(8)CHR$(255) 280 PRINTTAB(ch%*7,20)CHR$(8)CHR$(255) 290 Q%=GET 292 PRINTTAB(ch%*7,4)CHR$(8)" " 300 PRINTTAB(ch%*7,20)CHR$(8)" " 310 UNTILQ%=13 320 : 330 DATA" " 332 DATA" " 334 DATA" " 336 DATA" " 338 DATA" " 340 DATA" m " 350 DATA"cow " 360 DATA"oned " 370 DATA"mtean" 380 DATA"phkio" 390 DATA"elllt" 400 DATA"nyyye" 410 DATA"d p" 420 DATA"iddda" 430 DATA"uiiid" 440 DATA"maaa " 450 DATA" rrr " 460 DATA" yyy " 470 DATA" " 472 DATA" " 474 DATA" " 476 DATA" " 478 DATA" " 480 : 490 IFch%=1:F$="compend" 500 IFch%=2:CHAIN"Mdiary" 510 IFch%=3:CHAIN"Wdiary" 520 IFch%=4:CHAIN"Ddiary" 530 IFch%=5:CHAIN"NotePad" 540 : 550 buffer=&4000 560 bufsize=&3000 570 HIMEM=buffer 580 DIMcode 400,scr%(20) 590 ONERROR RUN 600 *FX4,1 610 PROCassemble 620 REMPROCfile 630 F%=OPENIN F$ 640 REM"Colour toggles on c 650 ?&74=1:?&72=130 660 B%=&900:times%=0:back%=0:new%=0 670 div=EXT#F%/100 680 : 690 REPEAT 700 new%=1:PROCld 710 REPEAT 720 start%=G%:?&73=0:scol%=?&72 730 REPEAT 740 CALL gline 750 UNTIL ?&73=24 OR G%>=T% 760 IF ?&73<>24:REPEAT:PRINTSTRING$(40," ");:?&73=?&73+1:UNTIL ?&73=24 770 depth=(bufsize*(times%-1)+G%-buffer)/div 780 REPEAT 790 PRINTTAB(0,24)CHR$(157)CHR$(132); 800 IF depth<10 PRINT" "; 810 IF depth<100 PRINT" "; 820 PRINTSTR$(INT(depth))"%"; 830 IF EOF#F% AND G%>=T% PRINTCHR$(136)" Any Key Finishes or B,[ "; ELSE PRINT" Any Key [,],B,F or P "; 840 IFstart%=buffer:VDU7:E%=1:PRINT"(TOB) "; 850 IFE%=0:IFG%>=T%:VDU7:E%=1:PRINT"(BOB) "; 860 IFE%:E%=0 ELSE PRINT" "; 870 PRINTTAB(0,24); 880 *FX21 890 K%=GET:G$=CHR$(K%) 900 IF K%=136 OR K%=139 PROCback1 910 IF K%=137 OR K%=138 PROCforward1 920 IFINSTR("Bb",G$) PROCjumpback 930 IFINSTR("Ff",G$) PROCjumpforward 940 IFINSTR("Cc",G$) PROCcolour 950 IFINSTR("Pp",G$) PROCprtScreen 960 UNTIL K% 970 UNTILG%>=T% 980 UNTILEOF#F% 990 : 1000 CLOSE#F% 1010 *FX4,0 1020 RUN 1030 END 1040 : 1050 DEFPROCcolour 1060 ?&74=?&74 EOR 1 1070 IF ?&74 ?&72=130 ELSE ?&72=0 1080 G%=start% 1090 ENDPROC 1100 : 1110 DEFPROCcolminus 1120 ?&72=?&72-1 1130 IF?&72=132:?&72=131 1140 IF?&72=129:?&72=134 1150 ENDPROC 1160 : 1170 DEFPROCcolplus 1180 ?&72=?&72+1 1190 IF?&72=132:?&72=133 1200 IF?&72=135:?&72=130 1210 ENDPROC 1220 : 1230 DEFPROCld 1240 IFback% times%=times%-1:PTR#F%=scr%(times%) 1250 IFnew%:times%=times%+1:scr%(times%)=PTR#F% 1260 IF EXT#F%-PTR#F%>(bufsize-1) H%=bufsize ELSE H%=EXT#F%-PTR#F% 1270 PRINTTAB(0,24)CHR$(157)CHR$(132)" Loading Please Wait ";TAB(0,24); 1280 A%=4 1290 X%=B% MOD 256 1300 Y%=B% DIV 256 1310 B%?0=F% 1320 B%!1=buffer 1330 B%!5=H% 1340 CALL&FFD1 1350 D%=0:back%=0:new%=0:G%=buffer:T%=G%+H%+D% 1360 IF PTR#F%=EXT#F% ENDPROC 1370 S%=&6FFF 1380 REPEAT 1390 D%=D%+1 1400 S%=S%+1 1410 R%=BGET#F% 1420 ?S%=R% 1430 UNTIL?S%=13 AND ?(S%-1)=13 1440 S%?1=&FF 1450 T%=G%+H%+D% 1460 ENDPROC 1470 : 1480 DEFPROCfile 1490 REPEAT 1500 *. 1510 PRINT'"Filename :"; 1520 INPUT F$ 1530 IF LEFT$(F$,1)="*" OSCLI+F$ 1540 UNTILLEFT$(F$,1)<>"*" 1550 ENDPROC 1560 : 1570 DEFPROCback1 1580 IFstart%=buffer:IFtimes%>1:G$="B":ENDPROC 1590 IFstart%=buffer:K%=0:ENDPROC 1600 ?&72=scol% 1610 IF?&74:IF?start%=13:PROCcolminus 1620 VDU30:G%=start%-1 1630 REPEAT:G%=G%-1:UNTIL ?G%=13 OR G%=&3000 1640 IF G%<>buffer:G%=G%+1 1650 ENDPROC 1660 : 1670 DEFPROCforward1 1680 IFG%>=T%:G$="F":ENDPROC 1690 ?&72=scol% 1700 VDU30:G%=start%-1 1710 REPEAT:G%=G%+1:UNTIL ?G%=13 1720 G%=G%+1 1730 IF?&74:IF ?G%=13 PROCcolplus 1740 ENDPROC 1750 : 1760 DEFPROCjumpback 1770 IFG%<=(buffer+&600) AND times%=1:G%=buffer:ENDPROC 1780 IFG%>(buffer+&600):G%=G%-&600:REPEAT:G%=G%-1:UNTIL ?G%=13 OR G%=buffer:ENDPROC 1790 back%=1 1800 PROCld:G%=&6A00:REPEAT:G%=G%-1:UNTIL ?G%=13 1810 ENDPROC 1820 : 1830 DEFPROCjumpforward 1840 IFG%>(T%-&380):ENDPROC 1850 G%=G%+&300 1860 REPEAT:G%=G%+1:UNTIL?G%=13 1870 ENDPROC 1880 : 1890 DEFPROCprtScreen 1900 U%=start%:E%=0:cnt%=0:VDU2 1910 REPEAT 1920 REPEAT 1930 A%=?U% 1940 IFA%=141:E%=1 1950 IFA%>126:A%=32 1960 IFA%>31:VDU1,A% 1970 U%=U%+1 1980 UNTIL?U%=13 OR U%>T% 1990 IFE%:REPEAT:U%=U%+1:UNTIL?U%=13:cnt%=cnt%+1:VDU1,13:E%=0 2000 cnt%=cnt%+1:VDU1,13 2010 UNTILcnt%=24 OR U%>T% 2020 VDU1,13,3:K%=0 2030 ENDPROC 2040 : 2050 DEFPROCerror 2060 CLOSE#F% 2070 *FX4,0 2080 PRINT 2090 ENDPROC 2100 : 2110 DEFPROCassemble 2120 FOR I%=0 TO 2 STEP 2 2130 P%=code 2140 [OPTI% 2150 .gline 2160 LDX &74:STX &76 2170 LDA &72:JSR &FFEE 2180 .loopa 2190 JSR get 2200 CMP #13:BEQ a2 2210 CMP #126:BCS a1 2220 CMP #32:BCC a1 2230 JSR &FFEE:INC &76 2240 .a1 2250 LDX &76:CPX #40:BNE loopa 2260 INC &7F 2270 .a2 2280 LDX &74:BEQ a3 2290 JSR seeatg:CMP #13:BNE a3 2300 LDX &7F:BEQ d2 2310 LDA &404:PHA 2320 JSR get:JSR seeatg 2330 LDX &41C:BNE d1:DEC &41D 2340 .d1 2350 DEC &41C 2360 TAX:PLA:STA &404 2370 CPX #13:BNE a3 2380 .d2 2390 JSR chcol 2400 .a3 2410 LDX #0:STX &7F 2420 LDA &404:CMP #13:BNE a4 2430 LDA #32 2440 .cloop 2450 LDX &76:CPX #40:BEQ a4 2460 JSR &FFEE:INC &76:BNE cloop 2470 .a4 2480 LDA &404:CMP #13:BEQ a5 2490 CMP #32:BEQ a5:JSR back 2500 .a5 2510 INC &73 2520 RTS 2530 \ ******* subroutines ******** 2540 .get 2550 LDX &41C:STX &80 2560 LDX &41D:STX &81 2570 LDY #0:LDA (&80),Y:STA &404 2580 INC &41C:BNE g1:INC &41D 2590 .g1 2600 RTS 2610 .seeatg 2620 LDX &41C:STX &80 2630 LDX &41D:STX &81 2640 LDY #0:LDA (&80),Y 2650 RTS 2660 .chcol 2670 INC &72:LDX &72 2680 CPX #132:BNE c1 2690 LDY #133:STY &72 2700 .c1 2710 CPX #135:BNE c2 2720 LDY #130:STY &72 2730 .c2 2740 RTS 2750 .back 2760 JSR seeatg 2770 CMP #32:BEQ b0 2780 CMP #13:BNE b2 2790 .b0 2800 INC &41C:BNE b1:INC &41D 2810 .b1 2820 RTS 2830 .b2 2840 LDX &41C:STX &82:LDX &41D:STX &83 2850 LDX #0:STX &75 2860 .loopb1 2870 LDY #2 2880 .b3 2890 LDX &41C:BNE b4:DEC &41D 2900 .b4 2910 DEC &41C:DEY:BNE b3 2920 JSR get:INC &75:DEC &76 2930 CMP #32:BEQ b6 2940 LDX &76:CPX &74:BNE loopb1 2950 .b5 2960 LDX #0:STX &75 2970 LDX &82:STX &41C 2980 LDX &83:STX &41D 2990 JSR seeatg:CMP #13:BNE b6 3000 INC &41C:BNE b6:INC &41D 3010 .b6 3020 LDX &75:BEQ b7:LDA #127 3030 .loopb2 3040 JSR &FFEE:DEC &75:BNE loopb2 3050 JSR &FFE7 3060 .b7 3070 RTS 3080 ]NEXT:ENDPROC