10REM"ƒSATload 20: 30REM"(C) Jeremy Brayshaw 40REM"†September 1988 50REM"‚V.3.40 Feb 89 60REM"…For use with ATS & ATS+ 70: 80DIM space 20,name 12,line 15 90ON ERROR PROCend(ERR) 100backcol$=CHR$135 110namecol1$=CHR$132 120namecol2$=CHR$134 130commcol1$=CHR$129 140commcol2$=CHR$135 150MODE7:H%=HIMEM:HIMEM=&5000 160A%=&EA:X%=0:Y%=-1:IF(USR(&FFF4)AND&FFFF)DIV&100:PROCtubeon:END 170VDU23,1,0;0;0;0; 180*TTXON 190*BBC2 200*HON 210PROCmove_oshwm 220DIMpage%(40),fname$(40),comment$(40),mag%(40),D(5),flag%(40),available%(40) 230useable%=0 240unit$=FNwhich_unit 250PROCheading(2,"File:†Satellite Image Catalogue"+CHR$10+CHR$13+" †(ƒL†for Latest file )") 260PRINTTAB(2,0);"TSDP" 270m%=FNgetlink 280PROCfindcat(m%,p%,4) 290REM"Trap incorrect Main Page link: 300IFM%>7 ORN%>&FE PROCheading(1,"Error†- No Catalogue defined"):PROCend(-1) 310PROCfindcat(M%,N%,4) 320REM"Trap incorrect Cat Page link: 330IFM%>7 ORN%>&FE PROCheading(1,"Error†- No Catalogue"):PROCend(-1) 340PRINTTAB(2,0);"P";STR$(M%);RIGHT$("00"+STR$~(N%),2) 350IF(INKEY(0)AND&DF)=ASC"L" PROClatest:ELSEPRINTTAB(1,18)SPC(30) 360*FX21 370PROCdownload(M%,N%,"",0,0,FALSE,TRUE) 380PROCinterpret 390IFZ%=0 MODE7:PROCheading(1,"ƒNo satellite images available") 400MODE7:VDU23,1,0;0;0;0;:W%=FNselect 410MODE7:VDU23,1,0;0;0;0; 420IFNOTavailable%(W%):PROCheading(1,CHR$127+CHR$151+STRING$(39,",")+CHR$129+CHR$157+CHR$135+"Selected file is unavailable"+CHR$10+CHR$13+CHR$129+CHR$157+CHR$135+"Press SPACE for another selection"+CHR$10+CHR$13+CHR$151+STRING$(39,",")) 430IFNOTavailable%(W%):REPEAT:UNTILGET=32:GOTO400 440PROCheading(2,"File:†"+fname$(W%)+CHR$10+CHR$13+" "+comment$(W%)) 450PRINTTAB(2,0);"P";mag%(W%);RIGHT$("00"+STR$~(page%(W%)),2) 460PROCdownload(mag%(W%),page%(W%),fname$(W%),0,0,TRUE,TRUE) 470REM PROCdownload(mag%,page%,fname$,load%,exec%,file%,reset%) 480MODE7 490RUN 500: 510DEFPROCmove_oshwm 520S%=&5000 530A%=&B4:X%=S%DIV256:Y%=0:CALL&FFF4 540ENDPROC 550: 560DEFPROCdownload(magazine%,page%,filename$,load%,exec%,save%,reset%) 570PROCoscli("MAGAZINE "+STR$(magazine%)) 580space?0=24 590space?1=name MOD256:space?2=name DIV256 600$name=filename$ 610FORf%=name TO name+LEN(filename$) 620IF?f%>96 AND?f%<123 ?f%=(?f%)AND&DF 630NEXT 640space!3=load% 650space!7=exec% 660space?11=magazine% 670space?12=page% 680IFsave%=TRUE space?13=1 ELSE space?13=0 690IFreset%=TRUE space?14=0 ELSE space?14=1 700A%=&7A:X%=space MOD256:Y%=space DIV256 710CALL&FFF1 720ENDPROC 730: 740DEFPROCoscli(text$) 750$line=text$:X%=line MOD256:Y%=line DIV256 760CALL&FFF7 770ENDPROC 780: 790DEFPROCheading(mark%,fname$) 800CLS:IFmark%=1 GOTO820 810IFunit$="GIS" PRINT'CHR$151+STRING$(39,",")+CHR$132+CHR$157+CHR$131+"Met. Office Satellite Image Data"'CHR$151+STRING$(39,","):GOTO870 820PRINT'"š‘  üüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüü" 830PRINT"𓍝ī˙¯¯Ą‘˙˙ž‡ Met Office and ‘Ŗœ˙˙˙" 840PRINT"š“  ū§‘øü˙˙˙ž‡BBC Telesoftware ‘œ˙˙˙" 850PRINT"š“ úˇ‘č˙˙˙˙˙ž‚Satellite Images ‘œ˙˙˙" 860PRINT"š‘  üü˙˙˙˙˙˙˙˙˙üüüüüüüü||üüüüüüüüüü˙˙˙" 870PRINTTAB(1,17)fname$ 880ENDPROC 890: 900DEFPROCreturn_oshwm 910A%=&B4:X%=PAGE DIV256:Y%=0:CALL&FFF4 920ENDPROC 930: 940DEFPROCinterpret 950st%=S% 960Z%=0:REPEAT 970REM"filename: 980len%=?st% 990IFlen%=&FF GOTO1200 1000T%=?(st%+len%+1):?(st%+len%+1)=13:fnam$=$(st%+1):?(st%+len%+1)=T% 1010st%=st%+len%+1 1020IFLEFT$(fnam$,1)="*" use%=FALSE:report%=FALSE:ELSE use%=TRUE:report%=TRUE 1030REM"comment: 1040len%=?st% 1050IFlen%=0 com$="":GOTO1090 1060FORf%=st%TOst%+len%:?f%=(?f%)OR&80 1070NEXT 1080T%=?(st%+len%+1):?(st%+len%+1)=13:com$=$(st%+1):?(st%+len%+1)=T% 1090st%=st%+len%+1 1100REM"Mag: 1110mag%=?st% 1120IFmag%<0 ORmag%>7 use%=FALSE 1130st%=st%+1 1140REM"page: 1150pag%=?st% 1160st%=st%+1 1170REM"†TEST FOR DOWNLOADING: 1180IFreport%:Z%=Z%+1:fname$(Z%)=fnam$:comment$(Z%)=com$:mag%(Z%)=mag%:page%(Z%)=pag%:flag%(Z%)=TRUE:available%(Z%)=use% 1190IF use%:useable%=useable%+1 1200UNTILlen%=&FF 1210ENDPROC 1220: 1230DEFFNgetlink 1240REPEAT 1250A%=TIME:REPEAT:UNTILTIME>A%+200 1260space?0=15:A%=&7A:X%=space MOD256:Y%=space DIV256:CALL&FFF1 1270UNTIL ((space?1)*100)+space?2<999 1280p%=space?2 1290=space?1 1300: 1310DEFPROCfindcat(mag%,pag%,link%) 1320look$=STR$~(mag%)+RIGHT$("00"+STR$~(pag%),2) 1330PRINTTAB(2,0)"P";look$ 1340PROCoscli("PAGE "+look$) 1350LOCALa%,pn$,row% 1360*DATA 5000 1370REM"Trap no link due to 1380REM"bad reception: 1390IFFNcheckcrc(&5000)=FALSE PRINTTAB(1,19)"Bad receptionƒ- re-trying ...":GOTO1330:ELSE PRINTTAB(1,19)SPC(32) 1400a%=&5000-42 1410REPEAT 1420a%=a%+42 1430UNTIL(a%?1=27 AND FNdeham(a%?2)=0) ORa%>&5800 1440REM"Trap no Pkt 27 on p200: 1450IFa%>&5800 M%=0:PROCheading(1,"Error†-no catalogue"):PROCend(-1) 1460FORV%=0TO5 1470D(V%)=3+(6*link%)+V% 1480D(V%)=FNdeham(a%?D(V%)) 1490NEXT 1500M%=(((D(5) AND12)DIV2)OR(D(3) DIV8))EORmag% 1510N%=(D(1)*16)+(D(0)) 1520ENDPROC 1530: 1540DEFFNdeham(byte%) 1550space?0=25:space?1=byte%:A%=&7A:X%=space MOD256:Y%=space DIV256:CALL&FFF1 1560=(space?2)AND&F 1570: 1580DEFFNselect 1590CLS:PRINT'CHR$151+STRING$(39,",")+CHR$132+CHR$157+CHR$131+"Met. Office Satellite Image Data"'CHR$151+STRING$(39,",") 1600PRINTTAB(0,16)CHR$151+STRING$(39,",")+CHR$132+CHR$157+CHR$131+FNdate'CHR$151+STRING$(39,",") 1610PRINTTAB(0,20)"ƒSelect file with†upƒor†downƒarrow,"'"ƒthen press†RETURNƒto download.":IFZ%>10 PRINT'"ƒTotal of†";useable%;"ƒfiles available."; 1620VDU28,0,14,39,5,15 1630FORf%=1TOZ% 1640PRINTTAB(0,f%-1)backcol$;" ";namecol2$;LEFT$(fname$(f%)+STRING$(7," "),7);commcol2$;LEFT$(comment$(f%)+STRING$(28," "),28); 1650IFf%=10 f%=Z% 1660NEXT 1670PRINTTAB(0,0);backcol$;CHR$157;namecol1$;TAB(10,0);commcol1$;TAB(0,0); 1680*FX4,1 1690fn%=1 1700REPEAT:Q=GET 1710IFQ=138 ANDfn%1:PROCup:fn%=fn%-1 1730IFVPOS=0 ORVPOS=9 PRINTTAB(0,VPOS)backcol$+CHR$157+namecol1$+LEFT$(fname$(fn%)+STRING$(7," "),7);commcol1$;LEFT$(comment$(fn%)+STRING$(28," "),28);TAB(0,VPOS); 1740UNTILQ=13 1750*FX4 1760=fn% 1770: 1780DEFFNdate 1790LOCALZ%,M%,D% 1800A%=&7A:X%=line MOD256:Y%=line DIV256:?line=15:CALL&FFF1 1810BB1$=RIGHT$(STR$~(line?8),1) 1820BB2$=STR$~(line?9):IF LEN(BB2$)=1 BB2$="0"+BB2$ 1830BB3$=STR$~(line?10):IF LEN(BB3$)=1 BB3$="0"+BB3$ 1840JD=VAL(BB1$+BB2$+BB3$) 1850IFJD<46796 ="Date not available" 1860Y1=(100*(JD-15078.2))DIV36525 1870M1=INT((JD-14956.1-INT(365.25*Y1))/30.6001) 1880D%=JD-14956-INT(365.25*Y1)-INT(30.6*M1):K=INT(0.7+(1/(17-M1))) 1890M%=M1-1-12*K 1900Z%=Y1+K 1910W%=(JD+3)MOD7:RESTORE1920:FORday=0TOW%:READD$:NEXT:D$=D$+"day" 1920DATA Sun,Mon,Tues,Wednes,Thurs,Fri,Satur 1930RESTORE1940:FORday=1TOM%:READmonth$:NEXT 1940DATA January,February,March,April,May,June,July,August,September,October,November,December 1950IFD%=1ORD%=21ORD%=31 th$="st" ELSEIFD%=2ORD%=22 th$="nd" ELSEIFD%=3ORD%=23 th$="rd" ELSEth$="th" 1960line?0=21:A%=&7A:X%=line MOD256:Y%=line DIV256:CALL&FFF1:line?6=&D 1970dt$=D$+" "+STR$(D%)+th$+" "+month$+" 19"+STR$(Z%)+"†" 1980=dt$+STRING$(31-LEN(dt$)," ")+$(line+1) 1990: 2000DEFFNwhich_unit 2010A%=&7A:X%=line MOD256:Y%=line DIV256 2020line?0=17:line?3=&FF:CALL&FFF1 2030IFline?3=&FF ="ATS" ELSE="GIS" 2040: 2050DEFPROCdown 2060PRINTbackcol$;" ";namecol2$;TAB(10,VPOS);commcol2$;TAB(0,VPOS); 2070VDU10:PRINTbackcol$;CHR$(157);namecol1$;TAB(10,VPOS);commcol1$;TAB(0,VPOS); 2080ENDPROC 2090: 2100DEFPROCup 2110PRINTbackcol$;" ";namecol2$;TAB(10,VPOS);commcol2$;TAB(0,VPOS); 2120VDU11:PRINTbackcol$;CHR$(157);namecol1$;TAB(10,VPOS);commcol1$;TAB(0,VPOS); 2130ENDPROC 2140: 2150DEFPROCtubeon 2160PROCheading(1,CHR$127+CHR$151+STRING$(39,",")+CHR$129+CHR$157+CHR$135+"The 'Tube' is active. Please disable"+CHR$10+CHR$13+CHR$129+CHR$157+CHR$135+"then CHAIN SatLoad again."+CHR$10+CHR$13+CHR$151+STRING$(39,",")) 2170VDU23,1,0;0;0;0;:PRINT 2180ENDPROC 2190: 2200DEFFNcheckcrc(mem%) 2210A%=&7A:X%=line MOD256:Y%=line DIV256:line?0=23:line?1=mem%MOD256:line?2=mem%DIV256:CALL&FFF1 2220IFline?3=1 =TRUE ELSE =FALSE 2230: 2240REM"Error trap 2250DEFPROCend(err%) 2260ONERRORGOTO2320 2270*FX229,1 2280IFerr%=254:PROCheading(1,"ƒUnrecognised command found"+CHR$10+CHR$13+" ƒIs the adaptor turned on?"):GOTO2320 2290*TTXOFF 2300VDU26 2310IFerr%=-1 GOTO2430 2320PRINTTAB(0,19)SPC(40);CHR$151;STRING$(39,",");SPC(40) 2330PRINTTAB(0,21)"ƒError:";CHR$129;CHR$157;CHR$135; 2340st%=((?&FE)*256)+(?&FD) 2350errep%=st%:REPEAT:errep%=errep%+1:VDU?(errep%):UNTIL ?errep%=0 OR errep%=st%+30 2360PRINT" ";CHR$156'CHR$151;STRING$(39,",");SPC(40); 2370PRINT"ƒPress‡ESCAPEƒto quit or‡SPACEƒto rerun"; 2380REPEAT:key%=GET:UNTILkey%=32 OR key%=27 2390PROCreturn_oshwm 2400HIMEM=H% 2410IFkey%=32:PROCoscli("FX229,0"):RUN 2420PROCheading(1,"") 2430VDU23,1,1;0;0;0;:PRINTTAB(0,7); 2440*FX229,0 2450*FX4 2460END 2470: 2480DEFPROClatest 2490PRINTTAB(1,17)SPC(75)TAB(1,17)"File:†Latest Image" 2500LOCALM1%,N1% 2510M1%=M%:N1%=N% 2520PROCfindcat(M%,N%,1) 2530IF((M%*100)+N%)>&800 GOTO2560 2540PRINTTAB(2,0)"P";STR$(M%);RIGHT$("00"+STR$~(N%),2) 2550PROCdownload(M%,N%,"",0,0,TRUE,TRUE) 2560M%=M1%:N%=N1%:VDU26 2570PROCheading(2,"File:†Satellite Image Catalogue") 2580PRINTTAB(2,0)"P";STR$(M%);RIGHT$("00"+STR$~(N%),2) 2590ENDPROC