10 REM > F7_fax 20 : 30 REM Teletext core program 40 : 50 REM By Andrew J Nibbs 60 REM (c) Swig soft 1990 70 : 80 ON ERROR OSCLI("DRIVE 0"):CHAIN"!Menu" 90 MODE7 100 VDU23;8202;0;0;0; 110 HIMEM=&7000-1000 120 FORx=HIMEM TO &7000 STEP 4:!x=0:NEXT 130 DIM e(2) 140 frame=97 150 mf=123 160 page$="010" 170 PROCass 180 : 190 PROCloadpage 200 silly$=page$ 210 PROCtopline 220 TIME=0 230 new_page=FALSE 240 REPEAT 250 *FX15 260 x=GET 270 IF x=32:TIME=1000 280 PROCnext_frame 290 IFnotload:GOTO220 300 GOTO190 310 : 320 DEFPROCass:FORB%=0TO2STEP2:P%=&A00:[OPTB%:.rep LDA#&7C:STA&81:LDA#0:STA&80:LDX#4 330 .loop1 LDY#0:.loop2 LDA s:CMP(&80),Y:BEQ fs:.cafs INY:BNE loop2:INC&81:DEX:CPX#0:BNE loop1:RTS:.fs LDA r:STA(&80),Y:JMPcafs:.r NOP:.s NOP 340 .load80 LDA#0:STA&82:LDA#&7C:STA&83 350 .outer2 LDY#0:.inner2 LDA(&80),Y:STA(&82),Y:INY 360 BNE inner2:INC&83:INC&81:LDA &83:CMP#&80:BNE outer2:RTS 370 .dtop LDX#0:LDA#32:.dtl STA &7000,X:INX:CPX#40:BNE dtl:RTS 380 ]:NEXT:ENDPROC 390 : 400 DEFPROCreveal 410 ?s=152:?r=142:CALLrep 420 REPEATUNTILNOT(INKEY(-52)) 430 ?s=142:?r=152:CALLrep 440 ENDPROC 450 : 460 DEFPROCnext_frame 470 frame=frame+1 480 IFframe=mf frame=97 490 answer=FNnoex(page$+CHR$frame) 500 IF answer AND frame=98:notload=TRUE:ELSE:notload=FALSE 510 IF answer frame=97 520 ENDPROC 530 : 540 DEFPROCxtopage 550 notload=FALSE 560 frame=97 570 op$=page$ 580 page$=CHR$e(0) 590 page$=page$+CHR$e(1) 600 page$=page$+CHR$e(2) 610 IF FNnoex(page$+CHR$frame):page$=op$:notload=TRUE 620 ENDPROC 630 : 640 DEFPROCloadpage 650 OSCLI"LOAD "+page$+CHR$frame+" 7000" 660 CALLdtop 670 FORattledog=&7000-1000 TO &7000 STEP 40:?&80=attledog MOD 256:?&81=attledog DIV 256:*FX19 680 CALLload80:NEXT 690 ENDPROC 700 : 710 DEFPROCtopline 720 VDU30 730 PRINTTAB(30)"…";page$ CHR$frame 740 ENDPROC 750 : 760 DEF FNinput 770 ent=FALSE 780 PRINTTAB(0,0)"ƒ..." 790 digit=0 800 IF INKEY(-85):=20000 810 IF INKEY(-86):=30000 820 IF INKEY(-52):=10000 830 x=INKEY(0) 840 IFx<47 OR x>58:=99999 850 ent=TRUE 860 GOTO890 870 x=GET 880 IFx<47 OR x>58:=99999 890 digit?&7C01=x 900 e(digit)=x 910 digit=digit+1 920 IFdigit=3 GOTO940 930 GOTO870 940 =0 950 : 960 DEF FNnoex(x$) 970 y=OPENUP x$:CLOSE#y 980 IFy=0:=TRUE 990 =FALSE