8-Bit Software Online Conversion
                
             
        
        
    
:2.$.ViewDat - Listing
    
       10REM >ViewData                      
   20MODE7:WIDTH0:IFNOTFNarc A%=114:X%=0
:CALL&FFF4:MODE7:A%=132:HIMEM=((USR&FFF4
)AND&FFFF00)DIV256                      
   30pagemax%=(((HIMEM-TOP-600)/1024)):p
agemax%=(pagemax%AND(pagemax%<128))+(127
 AND(pagemax%>127))-2:ST=HIMEM-(pagemax%
+1)*1024:P=0:LINK=0:TP=0:LLP=0:IFpagemax
%<5 PRINT" Not enough memory":Z=GET:CHAI
N"Hello"                                
   40*KEY10O.|MRUN|M                    
   50Flg2%=0:VDAT=0:CLOCK=0:VER$="Viewda
ta Program Version 4.09 (C)1989":CHR=97:
P=0:P1=0:P2=0:lp%=0:Z$="":D%=0:DIM bu%(1
5),L%(pagemax%),L2%(pagemax%),buffer% 10
0:FOR LOOP=0 TO pagemax%:L%(LOOP)=-1:L2%
(LOOP)=-1:NEXT                          
   60IFNOTFNarc THEN HIMEM=ST           
   70time%=-1:fnd=1:oscflg=0:IFV%<>101AN
D V%<>103PRINTTAB(0,0);VER$;TAB(7,12);" 
Buffer size: ";pagemax%+1               
   80IFFNarc B%=&8610 ELSE IF PAGE>&3000
 B%=&3A10 ELSE B%=&410                  
   90KST=0:DIR$="":D%=&1200:ON ERROR IF 
flg GOTO120 ELSEGOTO140                 
  100flg=1:IFV%<>102AND V%<>103THENOSCLI
"*LOAD !ComDat "+STR$÷(B%):D%=!B%       
  110IF$(B%+4)<>""DIR$=$(B%+4)+"."      
  120flg=0:PROC`GETPAGE("KEYS"):KST=ST:S
T=ST+1024*LE:KLE=LE                     
  130pagemax%=pagemax%-LE               
  140ON ERROR RUN                       
  150PROCdate:ONERROR IFF$="0"THEN$ST=ST
RING$(230," "):$(ST+230)=STRING$(179," "
)+"  No start page.":$(ST+460)=STRING$(2
30," "):$(ST+690)=STRING$(232," "):GOTO1
80 ELSE F$="0":GOTO170                  
  160IF(V%>99AND V%<104)AND W%>-1 F$=STR
$W% ELSE F$="0"                         
  170PROC`GETPAGE(F$):IF(?(ST+1024*P+935
)AND 31)=0 PRINTTAB(0,24);SPC(38);:ERROR
                                        
  180IF(V%<100OR V%>103) V%=100         
  190ON ERROR GOTO1340                  
  200del%=3000:*FX4,1                   
  210*FX11                              
  220*FX225,128                         
  230*FX226,1                           
  240IF fnd PROC`MEMtoP ELSE fnd=1      
  250tim%=TIME+del%:IF(Flg2%AND32)=0 PRI
NTTAB(0,24);SPC(35);                    
  260Z$=INKEY$(20):IF CLOCK PROC`CLOCK  
  270IF TIME>tim% AND VDAT=0 GOTO510    
  280IFZ$=""GOTO260                     
  290IFZ$="?"PROC`OSC:GOTO240           
  300IFZ$=CHR$26 PROCstats:GOTO240      
  310IFZ$=" "OR Z$="#"OR Z$=CHR$13GOTO51
0                                       
  320IFZ$>"/"AND Z$<":"GOTO400          
  330IFZ$=" " OR Z$=CHR$135 PROC`REVEAL:
GOTO250                                 
  340IFZ$=" " LINK=0:GOTO440            
  350IFZ$=" "OR Z$="*"GOTO470           
  360IFZ$=" "OR Z$="^"OR Z$=CHR$139 L=10
:GOTO410                                
  370IFZ$=CHR$127OR Z$=CHR$136THENlp%=(l
p%-2)AND 15:LINK=bu%(lp%):GOTO440       
  380IF Z$<"A" GOTO260                  
  390IFZ$>"@"AND Z$<"÷"PROC`KEYWORD:GOTO
240 ELSE GOTO260                        
  400L=ASC Z$-48                        
  410LINK=!(ST+1024*P2+936+L*4)         
  420IF LINK=0 PRINTTAB(0,24);" No link"
;:Z$=INKEY$(200):GOTO250                
  430IFLINK=-1THENLINK=0                
  440F$=STR$ LINK:IF LINK<0 GOTO250     
  450IFF$="" GOTO260                    
  460PROC`GETPAGE(F$):GOTO240           
  470F$=FN`EDIT:IFF$=""Z$=CHR$127:GOTO37
0                                       
  480LINK=VAL F$                        
  490IF LINK<0OR LINK>999999999 PRINTTAB
(0,24);" Out of range!!!";:Z$=INKEY$(200
):GOTO250                               
  500GOTO450                            
  510REM IF P1=pagemax% GOTO240         
  520IF L%(P1+1)<>TP AND !(ST+1024*P2+98
0)=0 P1=P2:CHR=97:GOTO240               
  530IF L%(P1+1)<>TP L=11:GOTO410       
  540P1=P1+1:CHR=CHR+1:GOTO240          
  550DEFFN`EDIT:VDU 28,0,24,39,24:INPUT 
'" What page number? "P3$               
  560PRINTTAB(0,24);SPC(39);:VDU 28,0,24
,39,0:=P3$                              
  570DEFPROC`GETPAGE(P$)                
  580LOCAL LINK,LOOP                    
  590LINK=VAL P$:IF LINK=0 AND P$<>"0" G
OTO630                                  
  600FOR LOOP=0 TO pagemax%             
  610IF L2%(LOOP)=LINK P1=LOOP:P2=P1:LOO
P=999:NEXTLOOP:GOTO700                  
  620NEXT                               
  630F$=P$:?(ST+1024*P+935)=1           
  640PROC`LOAD(F$):LE=?(ST+1024*P+935)AN
D 31:IF LE=0 fnd=0:PRINTTAB(0,24);" Page
 ";F$;" does not exist.";:Z=INKEY(200):E
NDPROC                                  
  650IF LE>pagemax% fnd=0:PRINTTAB(0,24)
;" Buffer full";SPC(20);:Z$=INKEY$(200):
ENDPROC                                 
  660IF P+LE>pagemax%+1 FOR LOOP=P TO pa
gemax%:L2%(LOOP)=-1:NEXTLOOP:P=0:GOTO640
                                        
  670fnd=1:IF LINK=0 AND P$<>"0" LINK=-2
                                        
  680P1=P:P2=P:FOR LOOP=0 TO LE-1       
  690L%(LOOP+P)=LINK:L2%(LOOP+P)=-1:NEXT
 LOOP:L2%(P)=LINK:P=P+LE:IFP>pagemax% P=
0                                       
  700CHR=97:IF LINK>-1 LLP=LINK         
  710TP=LINK:bu%(lp%)=TP:lp%=(lp%+1)AND 
15:ENDPROC                              
  720ENDPROC                            
  730DEFPROC`LOAD(F$):LOCAL X%,Y%       
  740PRINTTAB(0,24);" Loading page ";F$;
"   ";STRING$(3,CHR$8);                 
  750PAG=ST+1024*P:B$=STR$÷PAG          
  760IF (D% AND 3072)<>0 F$=FN`Q(F$)    
  770!buffer%=buffer%+&20:$(buffer%+&20)
=DIR$+F$:A%=5:X%=buffer%:Y%=X%DIV256:IF(
(USR&FFDD)AND255)=0 ?(ST+1024*P+935)=0:L
2%(P)=-1:ENDPROC ELSE LE=(buffer%!&A)DIV
1024                                    
  780IF P+LE>pagemax%+1 THEN ?(ST+1024*P
+935)=LE:ENDPROC                        
  790OSCLI"*LOAD "+DIR$+F$+" "+B$       
  800ENDPROC                            
  810DEFFN`Q(F$)                        
  820IF STR$(VAL F$)<>F$ THEN =F$       
  830LOCAL A,Q$                         
  840Z%=(D%AND&C00)/1024:FOR A=1 TO LEN 
F$ STEP Z%                              
  850Q$=Q$+MID$(F$,A,Z%)+"D.":NEXT:=LEFT
$(Q$,LEN Q$-2)                          
  860DEFPROC`MEMtoP:time%=-1            
  870VDU26,15:IF (?(ST+P2*1024+935)AND32
)=0 CLS                                 
  880VDU 23;8202;0;0;0;:IF ?(ST+P1*1024)
=128 OR ?(ST+P1*1024)=13 GOTO980        
  890IF ?(ST+P1*1024)=0 CLS:PROC`TITLE:E
NDPROC                                  
  900del%=!(ST+P2*1024+1000)AND&FFFF:IF 
del%=0 del%=3000                        
  910VDAT=SGN(?(ST+P2*1024+935)AND128):C
LOCK=SGN((?(ST+P2*1024+935)AND64)OR(VDAT
=0))                                    
  920PROC`TITLE:IF(Flg2%AND&C0)=&40 M=?(
ST+P1*1024+40):?(ST+P1*1024+40)=13:PRINT
$(ST+P1*1024);:?(ST+P1*1024+40)=M       
  930FORL=0TO3:M=?(ST+P1*1024+230*(L+1))
:?(ST+P1*1024+230*(L+1))=13             
  940PRINT$(ST+P1*1024+230*L);:?(ST+P1*1
024+230*(L+1))=M                        
  950NEXTL:IF(Flg2%AND128) M=?(ST+P1*102
4+40+13.75*(Flg2%AND64)):?(ST+P1*1024+40
+13.75*(Flg2%AND64))=13:PRINT$(ST+P1*102
4+13.75*(Flg2%AND64));:?(ST+P1*1024+40+1
3.75*(Flg2%AND64))=M                    
  960IF(Flg2%AND32) PRINTTIT$;SPC(38-POS
);                                      
  970ENDPROC                            
  980L=ST+P1*1024+1:?(L-1)=0:REPEAT:Z$="
":REPEAT:Z$=Z$+CHR$(?L):L=L+1:UNTIL ?L=1
28 OR LEN Z$>37 OR ?L=13:IFLEFT$(Z$,1)="
 " REPEATZ$=MID$(Z$,2):UNTILLEFT$(Z$,1)<
>" "                                    
  990IFLENZ$>37 L=ST+P1*1024+((L-40-(ST+
P1*1024))MOD40)+40                      
 1000IFRIGHT$(Z$,1)=" " REPEATZ$=LEFT$(Z
$,LENZ$-1):UNTILRIGHT$(Z$,1)<>" "       
 1010PROC`OSCLI(Z$):L=L+1:UNTIL?L=128 OR
 ?L=13 OR L>ST+1024*P1+910 OR Z$="":ENDP
ROC                                     
 1020DEFPROC`TITLE:VDU30:Flg2%=?(ST+1024
*P2+934):?(ST+1024*P2+934)=13:TIT$=$(ST+
1024*P2+921):?(ST+1024*P2+934)=Flg2%:IFL
ENTIT$=13THENIFRIGHT$(TIT$,1)=CHR$141THE
N TIT$=LEFT$(TIT$,12)                   
 1030IF(Flg2%AND&C0)ENDPROC             
 1040W%=TP:PRINTTIT$;SPC(13-LENTIT$);" "
;TP;CHR$(CHR);SPC((21-POS)AND POS<21);SP
C(3 AND(TP>99999));:IF CLOCK=0 PRINTTAB(
25,0)"  Set - ";P1;" " ELSE PROC`CLOCK:P
RINTTAB(25,0);d;" "mn$;SPC((d<10)AND1);:
IFTP<100000 PRINTTAB(21,0);Day$;" ";    
 1050PRINTTAB(0,1);:ENDPROC             
 1060DEFPROC`CLOCK:IF time%=TIME DIV100 
ENDPROC                                 
 1070IF(Flg2%AND 128)ENDPROC            
 1080time%=TIME DIV100:h=TIME DIV360000:
m=TIME DIV6000 MOD60:s=TIME DIV100 MOD60
:IF h<10h$="  "ELSEh$=" "               
 1090IFm<10m$=":0"ELSEm$=":"            
 1100IFs<10s$="/0"ELSEs$="/"            
 1110PRINTTAB(31,0)h$;h;m$;m;s$;s;:IF TI
ME DIV256=&8400 IFFNdate ENDPROC        
 1120ENDPROC                            
 1130DEFFN`DATE1:IF(D%AND&1000) THEN =0 
 1140LOCAL X%,Y%:!buffer%=&10000900:A%=&
14:X%=buffer%:Y%=X%DIV256:CALL&FFF1:IFbu
ffer%?3<>0 :=0                          
 1150s=buffer%?8:m=buffer%?7:h=buffer%?6
:yr=81+buffer%?5 DIV16:mn=buffer%?5 AND&
F:d=buffer%?4 AND31:mn$=MID$("JanFebMarA
prMayJunJulAugSepOctNovDec",mn*3-2,3):Da
y$=FN`DAY(d,mn,yr)                      
 1160TIME=h*360000+m*6000+s*100:=TRUE   
 1170DEFFN`DAY(D,MN,Y):LOCAL F,Q,D$:D=D+
1:IF(Y/4)-INT(Y/4)=0 F=1                
 1180FORQ=80TOY-1:IF(Q/4)-INT(Q/4)=0 D=D
+1                                      
 1190NEXT:D=D+(Y-80)*365:IFF=1ANDMN>2 D=
D+1                                     
 1200FORQ=1TOMN:D=D+VALMID$("00312831303
130313130313031",2*Q-1,2):NEXT          
 1210D=D MOD7:D$=MID$("SunMonTueWedThuFr
iSat",D*3+1,3):=D$                      
 1220DEFFN`DATE2:A%=14:X%=buffer%:Y%=X%D
IV256:!buffer%=&D00:CALL&FFF1:IF ?buffer
%=0 :=0                                 
 1230buffer%?24=13:D$=$buffer%:d=VALMID$
(D$,5,2):h=VALMID$(D$,17,2):m=VALMID$(D$
,20,2):s=VALRIGHT$(D$,2):mn$=MID$(D$,8,3
):Day$=LEFT$(D$,3):GOTO1160             
 1240DEFFN`DATE3:IFFNfs=5AND FN`DATE1:=T
RUE                                     
 1250IF(D%AND 512)=512 Day$="***":mn$="*
**":d=0:TIME=0:=TRUE                    
 1260VDU31,0,2:INPUT"Day: "Day$         
 1270REPEAT:INPUT"Date: "d:UNTILd>0ANDd<
32                                      
 1280s=0:INPUT"Month: "mn$:mn$=LEFT$(mn$
,3):INPUT"Hours: "h:INPUT"Minutes: "m:GO
TO1160                                  
 1290DEFFNdate:IF(D%AND 256)=256 AND FN`
DATE2 :=TRUE                            
 1300IF FN`DATE1 :=TRUE                 
 1310=FN`DATE2                          
 1320DEFPROCdate:IF FNdate ENDPROC      
 1330IFFN`DATE3 OR1 ENDPROC             
 1340fnd=0:VDU26:PRINTTAB(0,23);:OSCLI"F
X12":OSCLI"FX4":IF ERR<>214 OR oscflg<>0
 REPORT:IF ERR=17 GOTO1380              
 1350IF ERR<100 GOTO1390                
 1360IFERR=214 AND oscflg=0 PRINTTAB(0,2
4);" ::Page ";P$;" does not exist::";   
 1370PRINTSPC(38-POS);:Z$=INKEY$(200):GO
TO200                                   
 1380IFNOTINKEY(-1)GOTO1440             
 1390PRINT" at line ";ERL:VDU7:IFINKEY(-
1)OSCLI"FX225,1":OSCLI"FX226,128":END EL
SEGOTO1370                              
 1400DEFPROC`REVEAL                     
 1410LOCAL A:PRINTTAB(0,24);"Revealing..
.";                                     
 1420FOR A=0 TO 919:IF ?(ST+1024*P1+A)=1
52 VDU31,A MOD 40,1+(A DIV 40),32       
 1430NEXT A:PRINTTAB(0,24);SPC(20);:ENDP
ROC                                     
 1440PRINTTAB(0,24);" Do you want to fin
ish? (Y/N)";:Z$=GET$                    
 1450IFZ$="Y"ORZ$="y"VDU8,8,8,8,8:PRINT"
Yes  ";:OSCLILEFT$("DIR",-3*(FNfs=5)):os
cflg=1:CHAIN"Hello"ELSEGOTO200          
 1460DEFPROC`OSC                        
 1470CLS:*FX4                           
 1480INPUTLINE"*"AA$                    
 1490PROC`OSCLI(AA$):CLOSE#0            
 1500PRINT"****** Press space to continu
e ******";:AA$=GET$                     
 1510VDU13:PRINTSPC(39);:VDU13:IF AA$<>"
*" OSCLI"FX4,1":ENDPROC                 
 1520GOTO1480                           
 1530DEFPROC`KEYWORD                    
 1540IF KST=0 PRINTTAB(0,24);" No keywor
ds present.";INKEY$(200);:ENDPROC       
 1550VDU28,0,24,39,24:OSCLI"FX138,0,"+ST
R$ASCZ$                                 
 1560LOCAL Q$,A,B,C,D                   
 1570INPUT'" Keyword: "Z$:IF LENZ$<2 END
PROC                                    
 1580PRINT" Looking for ";Z$;:Z$=FNU(Z$)
:IF INSTR(Z$," ") Z$=LEFT$(Z$,INSTR(Z$,"
 ")-2)                                  
 1590FOR A=0 TO KLE-1                   
 1600Q$="":C=1:FOR B=0 TO 919           
 1610D=?(KST+A*1024+B) AND 127:D$=MID$(Z
$,C,1)                                  
 1620IF D=33 A=99:B=999:Q$="":GOTO1700  
 1630IF D=32 GOTO1700                   
 1640IF D$="*" GOTO1680                 
 1650IF D<>ASCD$ GOTO1690               
 1660C=C+1:IF C<=LEN Z$ GOTO1700        
 1670IF?(KST+A*1024+B+1)<>44 GOTO1690   
 1680PROC`FDNUM:A=99:B=999:GOTO1700     
 1690C=1:PROC`FDNUM:Q$=""               
 1700NEXTB,A                            
 1710IFQ$="" PRINT'" Keyword not found";
:VDU26:fnd=0:Z$=INKEY$(200):ENDPROC     
 1720VDU12,26:PROC`GETPAGE(Q$):fnd=1:END
PROC                                    
 1730DEFPROC`FDNUM                      
 1740REPEAT:B=B+1:UNTIL?(KST+A*1024+B)=A
SC","                                   
 1750B=B+1:Q$="":D$=CHR$(?(KST+A*1024+B)
)                                       
 1760REPEAT:Q$=Q$+D$:B=B+1:D$=CHR$(?(KST
+A*1024+B))                             
 1770UNTIL D$<"0" OR D$>"9":ENDPROC     
 1780DEFFNU(Q$)                         
 1790LOCAL W$,R$,A                      
 1800FOR A=1 TO LEN Q$:W$=MID$(Q$,A,1):I
F W$>"£" W$=CHR$(ASC W$-32)             
 1810R$=R$+W$:NEXT:=R$                  
 1820DEFPROC`OSCLI(A$)                  
 1830IF LEFT$(A$,1)="*" OR LEFT$(A$,1)="
 " A$=MID$(A$,2):GOTO1830               
 1840IF LEFT$(A$,4)="PAGE" PROC`GETPAGE(
MID$(A$,6)):OSCLI"FX138,0,32":ENDPROC   
 1850IF LEFT$(A$,4)="SHUT" CLOSE#0:ENDPR
OC                                      
 1860IF LEFT$(A$,8)="NEWSREEL" PRINT" Ne
wsreel index page.":L=L+1000:ENDPROC    
 1870IF LEFT$(A$,5)="CHAIN" P$=MID$(A$,7
):PRINT" Loading "P$:OSCLI"FX4":OSCLI"FX
225,1":OSCLI"FX226,128":OSCLI"FX11,32":C
HAINP$                                  
 1880IF LEFT$(A$,2)="IP" DIR$=MID$(A$,4)
+".":$(B%+4)=LEFT$(DIR$,LENDIR$-1):ENDPR
OC                                      
 1890IF LEFT$(A$,5)="FLAG=" V%=VALMID$(A
$,6):ENDPROC                            
 1900IF LEFT$(A$,5)="CLEAR" FOR LP=0 TO 
pagemax%:L%(LP)=-1:L2%(LP)=-1:NEXT:ENDPR
OC                                      
 1910oscflg=1:OSCLI A$:oscflg=0:ENDPROC 
 1920DEFFNfs:LOCAL A%,Y%,E%:A%=0:Y%=0:E%
=0:=(USR&FFDA)AND255                    
 1930DEFPROCstats:FOR LP=0 TO pagemax% S
TEP18:CLS:PRINT" "CHR$157" Program Statu
s":PROC`CLOCK:PRINT"Maximum page: ";page
max%'"Current stored pages: "'"Loc.    P
age"SPC(5)"Title"                       
 1940FOR LOOP=LP TO (pagemax%AND(LP+19>p
agemax%))+((LP+17)AND(LP+19<=pagemax%)):
PRINTSPC(2-LENSTR$LOOP);LOOP;" ";:IF L%(
LOOP)=-1 PRINT"Empty";                  
 1950IF L%(LOOP)>-1 PRINTL%(LOOP);" ";LE
FT$($(ST+LOOP*1024+921),13);TAB(27);:IF 
L%(LOOP)=L2%(LOOP) PRINT" start frame"; 
 1960PRINT:NEXT:PRINTTAB(0,23);VER$;:REP
EAT:PROC`CLOCK:UNTILINKEY(50)>0:NEXT:CLS
:ENDPROC                                
 1970DEFFNarc:=(INKEY-256<190 AND INKEY-
256>150)