10 REM >GetPages 1.21 20 REM About '86 V0.10 JGH: Initial version at Myers Grove 30 REM Early '88 V1.00 JGH: Tidied version for Micro User 40 REM 20-Apr-97 V1.10 JGH: Selects magazine, looks on every line for subpage 50 REM 21-Jun-98 V1.20 JGH: Can do range of pages 60 REM 30-Jul-98 V1.21 JGH: Better index match, doesn't miss last page 70 : 80 MODE7:DIMctrl%20,mcode%60,pf%(99):X%=ctrl%:Y%=X%DIV256:ver$="1.21":PROCtitle 90 A%=130:IF(USR&FFF4 AND&FFFF00)<>&FFFF00:PRINT"Program must run in the I/O processor.":END 100 IFHIMEM<>&7C00:OSCLI"SHADOW 1":MODE 7:IFHIMEM<>&7C00:PRINT"Please turn shadow screen off.":END 110 VDU23;2,53;0;0;0:PROCassem:ON ERROR PROCerr 120 *HON 130 INPUT"Channel: "C:OSCLI"CH"+STR$C:OSCLI"MAGAZINE "+STR$C 140 INPUT"Enter Start Page: "P0:OSCLI"PAGE "+STR$P0 150 OSCLI"MAGAZINE "+LEFT$(STR$P0,1) 160 PRINT"Enter End Page"'"(or RETURN for just P";P0;:INPUT"): "P1 170 PRINT"Save name";:IFP1<>0:PRINT" prefix"; 180 INPUT": "SP$ 190 : 200 P=P0:REPEAT:CLS:PRINT''"Searching for P";P;:OSCLI"PAGE "+STR$P 210 FORlp%=1 TO 99:pf%(lp%)=0:NEXT 220 REPEATpg%=FNpage:UNTIL(pg%AND&FF00):pages%=pg%DIV256 230 S$=SP$+LEFT$(STR$P,P1<>0) 240 OSCLI"SAVE "+S$+" 0+"+STR$~(pages%*1024)+" FFFF7C28 FFFF7C28" 250 pg%=pg%AND&FF:out%=OPENOUT(S$):PTR#out%=935:BPUT#out%,pages%:PROCsave(pg%) 260 REPEAT:CLS:VDU23;2,53;0;0;0 270 PRINT"P";P:PROCtitle:FORlp%=1 TO pages%:IFpf%(lp%):VDU146 ELSE VDU151 280 VDU47:IF(lp%MOD20)=0:PRINT' 290 NEXT:VDU31,(2*pg%-1)MOD40,7+2*(pg%-1)DIV20,94,8 300 IFpages%>1:REPEATpg%=FNpage AND&FF:UNTILpg%:IFpf%(pg%)=0:PROCsave(pg%) 310 f%=0:FORlp%=1 TO pages%:f%=f%+pf%(lp%):NEXT 320 UNTILf%>=pages%:PROCCloseOut:P=P+1:UNTILP>P1 330 CLS:PROCtitle:PRINT'"Finished" 340 *HOFF 350 END 360 : 370 DEFFNpage 380 *TRANSFER 7000 390 *DISPLAY 7000 400 REM VDU23;2,53;0;0;0 410 add%=&7C49:REPEAT:!ctrl%=!add%:ctrl%!4=add%!4 420 FORlp%=ctrl%TOctrl%+6:?lp%=?lp%AND127:IF((?lp%+1)AND127)<33:?lp%=32 430 NEXT:ctrl%?7=13:A$=$ctrl%:add%=add%+40 440 I%=INSTR(A$,"/"):UNTILadd%>&8000 OR (I% AND (VALMID$(A$,I%-2)+VALMID$(A$,I%+1)<>0)) 450 IFadd%>&8000:PRINTTAB(0,24);"Can't find page index.";:=&101:REM :=0 460 p%=VALMID$(A$,I%+1):IFp%=0 OR p%>99:PRINTTAB(0,24);"Invalid magazine size.";:=&101:REM :=0 470 =p%*256+VALMID$(A$,I%-2) 480 : 490 DEFPROCsave(p%) 500 PRINTTAB(0,0);P;"/";p%:CALL mcode% 510 ?X%=out%:X%!1=&FFFF7C28:X%!5=920:X%!9=1024*(p%-1):A%=1:CALL &FFD1 520 FORM%=&7000 TO &7067 STEP4:!M%=0:NEXT 530 ?X%=out%:X%!1=&FFFF7000:X%!5=104:X%!9=1024*(p%-1)+920 540 CALL &FFD1:pf%(p%)=1:ENDPROC 550 : 560 DEFPROCCloseOut:out%=out%:IFout%:A%=out%:out%=0:CLOSE#A% 570 ENDPROC 580 : 590 DEFPROCtitle 600 PRINTTAB(0,1);CHR$132;CHR$157;CHR$131;CHR$141;SPC(5)"Teletext Page Downloader"'CHR$132;CHR$157;CHR$131;CHR$141;SPC(5)"Teletext Page Downloader" 610 PRINT" "CHR$157;CHR$132;SPC3"(C)1988,98 J.G.Harston. V"ver$'' 620 ENDPROC 630 : 640 DEFPROCassem 650 FOR pass%=0 TO 1 660 P%=mcode% 670 [OPT pass%*2 680 LDA #0:STA &70:TAY 690 LDA #&7C:STA &71 700 .loop 710 LDA (&70),Y 720 CMP #163:BEQ stay 730 CMP #223:BEQ stay 740 CMP #224:BEQ stay 750 CMP #255:BEQ stay 760 AND #&7F:CMP #32:BCS stay 770 ORA #&80 780 .stay 790 STA (&70),Y:INY:BNE loop 800 INC &71:LDA &71:CMP #&80:BNE loop 810 RTS 820 ]NEXT:ENDPROC 830 : 840 DEFPROCerr:PRINTTAB(0,24)SPC(39); 850 PRINTTAB(0,23);:REPORT:ON ERROR REPORT:PRINT" at line ";ERL;:END 860 PROCCloseOut:*HOFF 870 END