10REM"ƒSatSeq 20: 30REM"(C) Jeremy Brayshaw 40REM"†February 1989 50REM"‚V.2.13 Feb 89 60REM"…For use with DFS & ADFS 70REM"…(and, hopefully, Econet) 80: 90REM"ƒSatellite image sequences 100: 110ON ERROR GOTO 370 120MODE7 130: 140REM"set appropriate keys: 150moveleft%=137 160moveright%=136 170moveup%=139 180movedown%=138 190exit%=13 200: 210REM"specify dir for images: 220directory$="$" 230: 240REM"Set delay betwn auto screens 250autodelay%=0 260: 270PROCsetvars 280dfs%=FNwhichdfs 290total%=FNreadtitles(dfs%) 300IFtotal%=0 PROCheading(0,"ƒNo images found"+CHR$10+CHR$13):END 310PROCfinddates(total%-1) 320PROCsort(total%-1) 330MODE2 340VDU23,1,0;0;0;0; 350IFtotal%-1-offset%<1 MODE7:PROCheading(0,"ƒNo images present"+CHR$10+CHR$13):END 360PROCshow(total%-1-offset%) 370*FX4 380*FX225,1 390MODE7 400PROCheading(0,"") 410END 420: 430DEFPROCheading(info%,fname$) 440CLS 450PRINT'"š‘  üüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüü" 460PRINT"š“¨¯ī˙¯¯Ą‘˙˙ž‡ Met Office and ‘Ŗœ˙˙˙" 470PRINT"š“  ū§‘øü˙˙˙ž‡BBC Telesoftware ‘œ˙˙˙" 480PRINT"š“ úˇ‘č˙˙˙˙˙ž‚Satellite Images ‘œ˙˙˙" 490PRINT"š‘  üü˙˙˙˙˙˙˙˙˙üüüüüüüü||üüüüüüüüüü˙˙˙" 500IFinfo% PROCdetails 510PRINTTAB(2,17)fname$; 520ENDPROC 530: 540DEFFNreadtitles(dfs%) 550IFdfs%=4 =FNgetDFScat 560IFdfs%=8 =FNgetADFScat 570IFdfs%=5 =FNgetADFScat 580=0 590: 600DEFFNwhichdfs 610LOCALF% 620A%=0:Y%=0:F%=USR(&FFDA)AND&FF:=F% 630: 640DEFFNgetDFScat 650PROCheading(-1,"ƒWhich drives? (0,1,2,3):†") 660drives$="":REPEAT:Q=GET:IFQ=13 GOTO700 670IFQ=127 AND drives$<>"" drives$=LEFT$(drives$,LEN(drives$)-1):VDUQ:GOTO700 680IFQ<48 OR Q>51 VDU7:GOTO700 690drives$=drives$+CHR$Q:VDUQ 700UNTILQ=13 710IFdrives$="" drive$="0" 720PROCheading(0,"ƒReading drive(s) ...") 730LOCALdr%,numfile%,qty% 740FORDR%=0TO3 750IFINSTR(drives$,STR$(DR%))=0 GOTO860 760PROCoscli("DRIVE "+STR$(DR%)) 770qty%=qty%+numfile% 780A%=6:X%=p%MOD256:Y%=p%DIV256:p%!1=data%:CALL&FFD1:dr%=(data%?1)-48 790?p%=dr%:p%!1=data%:p%?5=3:p%?6=&53:p%?7=0:p%?8=0:p%?9=34 800X%=p%MOD256:Y%=p%DIV256:A%=&7F:CALL&FFF1 810numfile%=(data%?&105)/8:M%=data%+8 820FORA%=1TOnumfile% 830name$(qty%+A%-1)="":FORB%=0TO6:name$(qty%+A%-1)=name$(qty%+A%-1)+CHR$((M%?B%)AND127):NEXT 840name$(qty%+A%-1)=":"+STR$(DR%)+"."+directory$+"."+name$(qty%+A%-1):M%=M%+8 850NEXT 860NEXT 870=qty%+numfile% 880: 890DEFFNgetADFScat 900IFdfs%=5 GOTO1030 910PROCheading(-1,"ƒWhich drives? (0,1,4,5):†") 920drives$="":REPEAT:Q=GET:IFQ=13 GOTO970 930IFQ=50ORQ=51 VDU7:GOTO970 940IFQ=127 AND drives$<>"" drives$=LEFT$(drives$,LEN(drives$)-1):VDUQ:GOTO970 950IFQ<48 OR Q>53 VDU7:GOTO970 960drives$=drives$+CHR$Q:VDUQ 970UNTILQ=13 980PROCheading(0,"ƒReading drive(s) ...") 990LOCALDR%,numfile% 1000FORDR%=0TO5 1010IFINSTR(drives$,STR$(DR%))=0 GOTO1130 1020PROCoscli("DIR :"+STR$(DR%)+"."+directory$) 1030FORA%=p%TOp%+12:?A%=0:NEXT 1040FORA%=data%TOdata%+516:?A%=32:NEXT 1050p%!1=data%:p%?5=47:X%=p%MOD256:Y%=p%DIV256:A%=8:CALL&FFD1 1060FORz%=data%+1TOdata%+515STEP11:z%?10=13:p%?0=z%MOD256:p%?1=z%DIV256:X%=p%MOD256:Y%=p%DIV256:A%=5 1070IF$z%=STRING$(10," ") GOTO1110 1080IF(USR(&FFDD)AND&FF)<>1 GOTO1110 1090IFdfs%=5 name$(numfile%)=$z%:numfile%=numfile%+1:GOTO1110 1100name$(numfile%)=":"+STR$(DR%)+"."+directory$+"."+$z%:numfile%=numfile%+1 1110NEXT 1120IFdfs%=5 GOTO1150 1130NEXT 1140*DIR :0 1150=numfile% 1160: 1170DEFPROCsetvars 1180offset%=0 1190*FX225,128 1200DIM p 100:FORnul%=0TO99:p?nul%=0:NEXT 1210DIMp% 18,data% 517,w% 15,name$(124) 1220ENDPROC 1230: 1240DEFPROCshow(last%) 1250*FX4,1 1260show%=0:PROCoscli("LOAD "+name$(0)+" FFFF3000") 1270REPEAT 1280*FX21,0 1290Q=GET 1300IFQ=exit% GOTO1400 1310IFQ=moveleft% show%=show%+1:GOTO1370 1320IFQ=moveright% show%=show%-1:GOTO1370 1330IFQ=moveup% show%=0:GOTO1370 1340IFQ=movedown% show%=last%:GOTO1370 1350IFQ=128 VDU7:PROCcontinuous(last%,show%):GOTO1400 1360GOTO1400 1370IFshow%>last% show%=last%:VDU7:GOTO1400 1380IFshow%<0 show%=0:VDU7:GOTO1400 1390PROCoscli("LOAD "+name$(show%)+" FFFF3000") 1400UNTILQ=exit% 1410ENDPROC 1420: 1430DEFPROCsort(max%) 1440IFdfs%=5 dirlen%=1 ELSE dirlen%=4 1450dirlen%=dirlen%=LEN(directory$) 1460FORm%=0TOmax% 1470FORn%=1TOmax% 1480IFRIGHT$(name$(n%-1),LEN(name$(n%-1))-dirlen%)>RIGHT$(name$(n%),LEN(name$(n%))-dirlen%):t$=name$(n%-1):name$(n%-1)=name$(n%):name$(n%)=t$ 1490NEXT 1500NEXT 1510ENDPROC 1520: 1530DEFPROCfinddates(max%) 1540LOCALnm$ 1550FORm%=0TOmax% 1560nm$=RIGHT$(name$(m%),LEN(name$(m%))-5-LEN(directory$)) 1570IFdfs%=4 AND((LEN(nm$)<>6)OR(VAL(nm$)<750000)) name$(m%)="˙˙˙˙˙˙˙":offset%=offset%+1:GOTO1590 1580IFdfs%=8 AND((LEN(nm$)<>9)OR(VAL(nm$)<244000000)) name$(m%)="˙˙˙˙˙˙˙":offset%=offset%+1:GOTO1590 1590NEXT 1600ENDPROC 1610: 1620DEFPROCcontinuous(max%,now%) 1630LOCALno% 1640no%=now% 1650REPEAT 1660Q=INKEY(autodelay%) 1670IFQ=128 GOTO1710 1680*FX21,0 1690no%=(no%+1)MOD(max%+1) 1700PROCoscli("LOAD "+name$(no%)+" FFFF3000") 1710UNTILQ=128 1720VDU7 1730show%=no% 1740ENDPROC 1750: 1760DEFPROCdetails 1770PRINTTAB(2,7)"ƒTo see satellite images in date"'" ƒorder, enter the drive(s) holding"'" ƒthe screen images." 1780PRINT'" ƒSelect drives, then use arrow keys:"'TAB(5)"†]ƒnext";TAB(20)"†[ƒprevious"'TAB(5)"†^ƒfirst";TAB(20)"†vƒlatest" 1790PRINTTAB(4)"f0ƒrapid sequence display (on/off)" 1800ENDPROC 1810: 1820DEFPROCoscli(text$) 1830$p%=text$:X%=p%MOD256:Y%=p%DIV256:CALL&FFF7 1840ENDPROC