1 REM Ins{nd av Johan Olofsson <5809> 1987-04-26 15.24.03 (DUMP)
10 ! - M S G 3 . B A C
15 !
20 ! programmet {r en kompott med f|ljande ingredienser
25 !
30 ! sk{rm-rutiner i programmet VisaUtil.bac
35 ! F|r ABC80 av David Andersson <5201> 1986-08-08
40 ! till ABC800 av Kristoffer Eriksson <5357> 1986-11-10
45 !
50 ! modem-rutiner i kommunikationsprogram f|r s{tterier
55 ! F|r ABC802 av Johan Olofsson <5809> 1986 10 10
60 !
65 ! MSG-rutiner fr}n programmet MSG.bac
70 ! F|r ABC802 av Johan Olofsson <5809> december 1986
75 !
80 ! Last revision: 1987 04 20
90 !
99 ! ----------------------------------------------------------------------
100 ! Medlemsnummer och Password s{ttes in p} rad 170
101 ! Hj{lp med funktionstangenters betydelse f}s med
102 ! [ndring av dessas betydelse g|rs i FNConin rad 3000--
103 ! -
105 ! Programmet {r INTE v{ldokumenterat
106 ! Programmet {r ENDAST testat p} ABC802 med stort tangentbord
107 ! Huvudslingan b|r ge associationer till timeshared realtime
108 ! -
109 !
110 INTEGER : EXTEND : ! NO RESUME
120 ; : ; 'M S G - programmet' : ; 'utan mottagning och s{ndning av filer'
123 Z=FNInit
125 Par$=RIGHT$('VSA60A99.',2)
135 Z=FNInitvisa
140 ; Buflen ' raders buffert.'
145 Z=FNFilinit
150 !
170 X11$='Tryck RETURN' : X12$=Cr$+'5809'+Cr$+'PASW'+Cr$+'msg'+Cr$+'a'+Cr$
180 X21$='(Se) tiden. -' : X22$='log'+Cr$
190 !
220 Autoscroll=-1
250 Z=FNResetvisa(Ffil,F|ljefil$) : R$=' '
255 !
256 ! - H u v u d s l i n g a
257 !
260 WHILE -1
265 WHILE SYS(5)
270 Z=FNConin
280 WHILE S1<24
282 IF Readpos.>POSIT(Ffil)-2 IF Buf(In) THEN Z=FNMsg
284 IF Readpos.23 THEN Z=FNFwscroll
370 IF S1<24 IF Readpos.34 THEN Z=FNMsg
390 IF 0 WEND
400 Z=FNSysrad+FN\vervaka
410 !
422 IF NOT Testrec THEN Flg$=Fr$ ELSE IF Flagrec THEN Flg$=Ft$ ELSE Flg$=Fb$
440 MID$(Sysrad$,80,1)=Flg$ ! Recive-status
460 WEND
470 ! ------------------------------------------------------------------------
480 ! E N D via FNConin
490 ! ------------------------------------------------------------------------
500 DEF FNN|dlandning
510 WHILE -1
520 Z=FNMsg
530 WEND
540 FNEND
545 !
550 DEF FNExit
560 IF NOT Flagend THEN PUT #Vmod,CHR$(4)+X22$ : Flagend=-1
570 MID$(Sysrad$,76,4)='EXIT'
580 RETURN T
590 FNEND
600 !
700 !
710 ! F|ljande variabler anv{nds som flaggor:
720 ! Autoscroll, Testrec, Flagrec, Flagend, Linstat, Skivsn}lt, Filsn}lt
730 !
740 ! F|ljande variabler anv{nds f|r Systemrads-rutinerna:
750 ! Sysrad$, Oldutbuf, Oldutr, Oldinbuf, Utrymme, Flg$
760 !
770 ! F|ljande variabler anv{nds f|r Sk{rm-rutinerna:
780 ! S1, V1, V2, W1, W2, F1, Readpos., Writepos., Wid, L$, V$(), L2
790 !
800 ! F|ljande variabler anv{nds f|r MSG-rutinerna:
810 ! Writepos, X11$, X12$, X21$, X22$, R$, Buf%(In), Buf%(Ut), Timeout
820 ! Limitu, Limit|, Maxlen, Limitr, Zrec
890 !
900 ! -
1000 DEF FNInit
1020 ! -------------------------- Konstanter
1030 !
1040 DIM Par$=8,X11$=30,X12$=30,X21$=21,X22$=4
1050 ! -----------------------------------------------------------------------
1060 !
1070 ! Filnummer f|r f|ljefil, mottags-, visnings- & s{ndfil
1080 !
1090 Ffil=2 : Mfil=3 : Sfil=4 : Visafil=5 : Vfil=14
1100 Tmod=6 : Vmod=7 ! filnummer f|r T, respektive V-modem
1110 !
1120 T=-1 : F=0 ! True och False
1130 !
1140 Ut=0 : In=1 ! V24-buffertar Buf(Ut), Buf(In)
1150 Limitu=2700 : Limit|=Limitu+900
1160 Maxlen.=40000.
1170 Linstat=T ! visar om XON eller XOFF s{nts senast XOFF == False
1172 Flagend=T ! Visar om modemet {r |ppet eller st{ngt
1180 Timeout=60
1190 Limitr=165 ! Maxlen f|r rader
1195 Oldutbuf=80 ! Buf(Ut) {r 80 n{r bufferten {r tom. Subtraheras i sysrad$
1200 !
1210 !
1220 ! -------------------------- dim
1230 !
1240 DIM Z$=1 ! Dummy
1250 DIM Rad$=Limitr,R$=Limitr ! Inrader
1260 DIM B$=1 ! tecken fr}n #Vmod
1270 DIM Cr$=1 : Cr$=CHR$(13) ! Return-tangent
1280 DIM Lf$=1 : Lf$=CHR$(10) ! LineFeed
1290 DIM Bs$=1 : Bs$=CHR$(8) ! Back-step
1300 DIM Xon$=1 : Xon$=CHR$(17) ! Transmision ON
1310 DIM Xoff$=1 : Xoff$=CHR$(19) ! Transmision OFF
1311 DIM Fr$=1,Ft$=1,Fb$=1,Flg$=1 : Fr$=CHR$(210) : Ft$=CHR$(212) : Fb$=CHR$(160)
1320 !
1330 DIM Buf(-2:In) : POKE 2+VAROOT(Buf(0)),PEEK(65500),PEEK(65501)
1340 DIM Buffer$=Limit|+900 : Buf(-1)=VAROOT(Buffer$)
1350 DIM Sysrad$=0 : POKE VAROOT(Sysrad$),80,0,128,127 : Sysrad$=SPACE$(80)
1360 ! DIM Mpos$=0 : POKE VAROOT(Mpos$),5,0,128+40,127,5,0
1370 Clusi=4 : IF Clusi=1 THEN Sec=7 ELSE Sec=15 ! clusterstorlek och bitmap
1380 DIM Bitmap$=33
1390 Bitmap$=CHR$(17,0,245,33,0,0,26,254,255,40,15,6,8,203,39,56,6,197,1)
1400 Bitmap$=Bitmap$+CHR$(1,0,9,193,5,32,243,19,62,161,187,32,230,201)
1410 !
1420 !
1430 OUT 56,6,57,25 ! 25 rader p} sk{rmen
1440 !
1450 RETURN 0
1460 FNEND
1470 !
1500 DEF FNFilinit LOCAL Inq$=20,F|rs|k
1510 ! ------------------------- \ppna f|ljefil
1520 !
1530 Inq$='F\LJEFIL.MOD'
1535 Flagend=-1
1540 ON ERROR GOTO 1560
1545 GOTO 1580
1550 OPEN Inq$ AS FILE Ffil : GOTO 1580
1560 PREPARE Inq$ AS FILE Ffil : GOTO 1630
1570 !
1580 WHILE FNFilfixa(Inq$,Ffil)=0
1590 INPUT 'F|ljefil: 'Inq$
1600 IF Inq$='' THEN RETURN F
1610 WEND
1620 !
1630 F|ljefil$=Inq$
1640 ;
1650 !
1660 ! -------------------------- |ppna modem
1670 !
1680 ON ERROR GOTO 1680
1690 INPUT 'Hastighetskod: (22 f|r 300, f|r split speed) 'Inq$
1700 IF Inq$='' THEN Inq$='40'
1710 !
1711 IF INSTR(1,'.22.40.44.55.','.'+Inq$+'.')=0 THEN OUT 34,7 : GOTO 1680
1720 F|rs|k=1
1730 IF Inq$='22' ; 'Trying opening 300-bauds duplexmodem',F|rs|k;
1735 IF Inq$='44' ; 'Trying opening 1200-bauds duplexmodem',F|rs|k;
1740 IF Inq$='40' ; 'Trying opening split-speed duplexmodem',F|rs|k;
1750 IF Inq$='55' ; 'Trying opening 2400-bauds duplexmodem',F|rs|k;
1760 IF F|rs|k>1 THEN ; ,'Error ' ERRCODE;
1770 ON ERROR GOTO 1830
1790 OPEN 'V24:V'+Par$+Inq$+'B' AS FILE Vmod
1800 ; : ; 'O K !'
1805 Flagend=0 : Linstat=-1
1810 RETURN T ! Initieringen lyckligt genomf|rd!
1820 !
1830 !
1840 IF SYS(5) ; : GOTO 1920
1850 IF F|rs|k>20 GOTO 1910
1860 F|rs|k=F|rs|k+1
1870 ; CHR$(13);
1880 OUT 34,9
1890 GOTO 1730
1900 !
1910 ; : ; 'F}r ingen kontakt med modemet !!!'
1920 OPEN 'V24:.00A' AS FILE Vmod : CLOSE Vmod
1930 GOTO 1690
1940 FNEND
1950 !
2000 DEF FNInitvisa LOCAL A
2010 Wid=PEEK(65364) ! Radl{ngd
2060 ! ----Maskinkod bak}tscroll----
2070 Bkscroll$=STRING$(138,0)
2080 ! BKSCROLL.ASM. 1986-11-09
2090 A=VARPTR(Bkscroll$)
2100 REM BKSCROLL.ASM. 1986-11-10
2110 POKE 0+A,58,39,0,254,2,40,41,254,10,32,7,58,84,255,254,41,56,30,219
2120 POKE 19+A,53,8,33,47,127,17,127,127,1,48,7,237,184,17,0,120,1,79,0,175
2130 POKE 39+A,211,53,205,A+82,SWAP%(A+82),8,211,53,201,221,33,A+138,SWAP%(A+138)
2140 POKE 52+A,62,24,1,40,0,221,94,254,221,86,255,61,202,A+81,SWAP%(A+81)
2150 POKE 67+A,221,110,252,221,102,253,237,176,221,43,221,43,24,229,11,98
2160 POKE 83+A,107,54,32,19,237,176,201,0,124,128,124,0,125,128,125,0,126
2170 POKE 100+A,128,126,0,127,128,127,40,124,168,124,40,125,168,125,40,126
2180 POKE 116+A,168,126,40,127,168,127,80,124,208,124,80,125,208,125,80,126
2190 POKE 132+A,208,126,80,127,208,127
2200 !
2210 ! Textrad fr}n fil
2220 DIM L$=162
2230 ! Filnamn
2240 DIM F1$=20
2290 ! Dimensionera buffert
2300 Buflen=(SYS(4)-700)/(Wid+6)
2310 IF Buflen<48 ; 'F|r lite minne f|r textbufferten' : STOP
2320 DIM V$(Buflen-1)=Wid
2330 RETURN 0
2340 FNEND
2350 !
2360 DEF FNV(V)=V+Buflen*((V>=Buflen)-(V<0))
2370 !
2380 DEF FNFilfixa(Namn$,Nummer)
2390 ON ERROR GOTO 2630 ! Hittar ingen fil
2400 OPEN Namn$ AS FILE Nummer
2410 ; 'Filen ' Namn$ ' finns!'
2420 ; 'Vill du se den?';
2430 Z$=FNGet$ : IF Z$='n' OR Z$='N' THEN ; ' Nej tack' : GOTO 2510
2440 IF INSTR(1,Cr$+'JjYy',Z$)=0 ; ' ' Z$ CHR$(7) ' ???' : GOTO 2420
2450 ; ' Ja!'
2460 ON ERROR GOTO 2480
2470 WHILE -1
2471 INPUT LINE #Nummer,Rad$ : ; LEFT$(Rad$,LEN(Rad$)-2)
2472 IF Buf(in)>Limitu then Z=FNSysrad+FN\vervaka
2473 MID$(Sysrad$,50,10)=NUM$(POSIT(Ffil))+' '
2474 WEND
2480 IF ERRCODE<>34 THEN ; : ; 'ERROR: ' ERRCODE;CHR$(7)
2490 ; '- DET VAR ALLT!'
2500 ;
2510 ; 'Append / Rewrite / Other file ??? / / ';
2520 Z$=FNGet$ : IF Z$=Cr$ Z$='A'
2530 ; Z$ : IF INSTR(1,'ARO',Z$)=0 OUT 34,10 : GOTO 2510
2540 ; 'Uppfattat!' : ;
2550 IF Z$='O' CLOSE Nummer : RETURN F ! Ingen fil |ppnad!
2560 IF Z$='R' THEN POSIT #Nummer,0 : RETURN T ! Allt OK, filen nollst{lld
2570 ! A p p e n d
2580 ON ERROR GOTO 2600
2590 WHILE -1
2591 INPUT LINE #Nummer,Rad$
2592 IF Buf(In)>Limitu then Z=FNSysrad+FN\vervaka
2593 MID$(Sysrad$,50,10)=NUM$(POSIT(Ffil))+' '
2595 WEND
2600 IF ERRCODE<>34 THEN GOTO 2480
2610 ; : RETURN T ! Filen |ppnad f|r till{gg av ytterliggare rader
2620 !
2630 ; 'Filen ' Namn$ ' {r ny!','Prepare?'; : Z$=FNGet$
2640 IF Z$<>'J' AND Z$<>'N' ; ' / '; : Z$=FNGet$ : GOTO 2640
2650 ; Z$
2660 ON ERROR GOTO 2680
2670 IF Z$='J' PREPARE Namn$ AS FILE Nummer : RETURN T ! Filen |ppnad
2680 RETURN F ! Ingen fil |ppnad
2690 FNEND
2700 !
3000 DEF FNConin LOCAL Var
3010 IF SYS(5)=0 THEN RETURN F
3020 GET Z$
3030 WHILE Z$<=''
3031 IF NOT Flagend THEN PUT #Vmod Z$
3032 RETURN T
3033 IF 0 WEND
3040 IF Z$=CHR$(196) THEN Z=FNBkscroll : Autoscroll=F
3050 IF Z$=CHR$(198) THEN Z=FNFwscroll : Autoscroll=F
3060 IF Z$=CHR$(193) THEN Z=FNResetvisa(Ffil,F|ljefil$) : Autoscroll=F
3065 IF Z$=CHR$(193) THEN Z=FNFwscroll
3070 IF Z$=CHR$(215) THEN Z=FNExit
3080 WHILE Z$=CHR$(192)
3090 Z=PEEK2(65362)
3100 ; CUR(0,0),,''
3102 ; '','den h{r texten',''
3103 ; 'sh-','info-rad',''
3110 ; '','reset',''
3120 ; '','autoscroll',''
3121 ; '','upp',''
3123 ; '','ned',''
3125 ; 'sh-','n{sta Text',''
3140 ; 'sh-','E x i t',''
3150 ; 'sh-ctrl-','E N D',''
3159 ; ,,''
3160 POKE 65362,Z,SWAP%(Z)
3170 IF 0 WEND
3180 IF Z$=CHR$(194) THEN Autoscroll=T
3190 WHILE Z$=CHR$(208)
3200 Z=PEEK2(65362)
3202 ; CUR(0,0) SPACE$(2*Wid)
3204 ; CUR(1,0) FNFlag$(Autoscroll,'Auto ')
3206 ; CUR(1,5) FNHjust$(NUM$(Writepos.)+' wr',10)
3208 ; CUR(1,15) FNHjust$(NUM$(Readpos.)+' rd',10)
3210 ; CUR(1,25) FNHjust$('V1='+NUM$(V1),10)
3212 ; CUR(1,35) FNHjust$('V2='+NUM$(V2),10)
3214 ; CUR(1,45) FNHjust$('W1='+NUM$(W1),10)
3216 ; CUR(1,55) FNHjust$('W2='+NUM$(W2),10)
3218 ; CUR(1,65) FNHjust$('FnV = S1 = '+NUM$(S1),14)
3220 POKE 65362,Z,SWAP%(Z)
3280 IF 0 WEND
3290 WHILE Z$=CHR$(214)
3295 Var=V1+2
3300 Var=FNS|k('( ',FNV(Var+1))
3310 WHILE Var>-1 ! THEN Z=FNNewscreen(Var,2)
3320 IF LEN(V$(Var))<25 THEN GOTO 3300
3330 WHILE LEFT$(V$(Var),6)='( Text' OR LEFT$(V$(Var),6)='( Brev'
3335 Z=FNNewscreen(Var,2)
3336 IF 0 WEND : GOTO 3300
3340 IF 0 WEND : Z=FNNewscreen(W2,12)
3350 IF 0 WEND
3360 IF Z$<>CHR$(247) RETURN T
3370 OUT 56,6,57,24
3380 ; CUR(23,0)
3390 ; : ; FNUtrymme ' sektorer kvar.'
3400 ; : ; 'E N D' : ;
3410 !
3420 END
3430 FNEND
3440 !
4000 DEF FNMsg
4010 IF Buf(In)=0 THEN RETURN 0
4020 IF LEN(R$) THEN GOTO 4100
4030 IF Buf(In)=' ')
4130 R$=R$+B$
4150 IF Buf(In)<10 IF LEN(R$)<=40 THEN MID$(Sysrad$,1,40)=R$ ELSE MID$(Sysrad$,1,40)=RIGHT$(R$,LEN(R$)-39)
4160 IF R$<>X11$ THEN RETURN 0
4170 RETURN FN]tg{rda
4180 IF 0 WEND
4190 WHILE B$<>Cr$
4200 IF B$=Bs$ IF LEN(R$) R$=LEFT$(R$,LEN(R$)-1) : RETURN 0
4210 IF B$=Lf$ RETURN 0
4215 IF B$=CHR$(2) THEN Flagend=T
4220 IF B$<' ' R$=R$+'~'+CHR$(64 OR ASCII(B$))
4230 IF B$>'' R$=R$+'`'+CHR$(64 OR (ASCII(B$)-128))
4235 IF B$<>CHR$(7) THEN RETURN 0
4236 R$=R$+B$
4240 IF 0 WEND : MID$(Sysrad$,1,40)=SPACE$(40)
4250 !
4260 ; #Ffil R$
4280 R$=''
4310 MID$(Sysrad$,50,10)=NUM$(POSIT(Ffil))+' '
4320 WHILE Oldutr<>PEEK(64782)
4330 Oldutr=PEEK(64782)
4340 Utrymme=FNUtrymme
4350 MID$(Sysrad$,41,9)='('+NUM$(Utrymme)+') '
4360 WEND
4370 IF Utrymme<=Buf(In)/253 THEN Skivsn}lt=-1
4380 IF POSIT(Ffil)+Buf(In)+2000>Maxlen. THEN Filsn}lt=-1
4390 RETURN 0
4400 !
4410 ! GLOBAL R$ f|r den l{sta raden
4420 ! GLOBAL B$ f|r det l{sta tecknet
4440 ! GLOBAL X11$ f|r str{ng fr}n modemet som skall markera ny }tg. fr. pgm
4450 ! GLOBAL Vmod%, Buf%(In%)
4460 ! CONSTANT Limitr%, Cr$,Bs$,Lf$
4470 FNEND
4480 !
4490 DEF FN]tg{rda
4500 PUT #Vmod X12$
4510 X11$=X21$ : X12$=X22$
4520 RETURN 0
4530 FNEND
4540 !
4550 ! *
5000 DEF FNSysrad LOCAL Z$=1
5010 IF Oldutbuf<>Buf(Ut) THEN Oldutbuf=Buf(Ut) : MID$(Sysrad$,70,6)=NUM$(80-Buf(Ut))+' sb '
5020 IF Oldinbuf<>Buf(In) THEN Oldinbuf=Buf(In) : MID$(Sysrad$,60,10)=NUM$(Buf(In))+' rb '
5030 RETURN 0
5120 FNEND
5130 DEF FN\vervaka
5140 WHILE Buf(In)=Zrec
5150 IF NOT Testrec THEN POKE -11,0 : Testrec=-1
5160 IF Flagrec IF PEEK(-11)>Timeout THEN Flagrec=0
5170 IF 0 WEND : Zrec=Buf(In) : IF Testrec THEN Testrec=0 : Flagrec=-1
5180 IF Linstat=T IF Buf(In)>Limit| THEN PUT #Vmod,Xoff$ : Linstat=F : MID$(Sysrad$,76,4)='XOFF'
5190 IF Linstat=F IF Buf(In)Maxlen. THEN Z=FNExit
5220 RETURN T
5230 FNEND
6000 DEF FNResetvisa(Filnr,Filnamn$)
6010 F1=Filnr : F1$=Filnamn$
6020 ; CHR$(12);
6030 L$=''
6040 ! Initiera buffert
6050 W1=0 : W2=0 : V1=0
6060 Readpos.=0.
6070 V$(0)='****** H[R B\RJAR FILEN '+F1$ : ; CUR(0,0) V$(0);
6080 FOR V9=1 TO 23
6090 V$(V9)=':' : ; CUR(V9,0) V$(V9);
6100 NEXT V9
6110 RETURN T
6120 FNEND
6130 ! ----Scrolla bak}t----
6140 DEF FNBkscroll
6150 IF V1=W1 RETURN F
6160 V1=FNV(V1-1)
6170 V2=FNV(V1+23)
6180 Z=CALL(VARPTR(Bkscroll$))
6181 S1=FNV(W2-V1)
6190 ; CUR(0,0) V$(V1);
6200 RETURN T
6210 FNEND
6220 !
6230 ! ----Scrolla fram}t----
6240 DEF FNFwscroll
6250 S1=FNV(W2-V1)
6260 IF S1<12 RETURN FNFileread
6270 V1=FNV(V1+1) : ; CUR(23,0)
6280 V2=FNV(V1+23)
6290 IF V2=W1 W1=FNV(W1+1)
6300 IF S1<24 V$(V2)=':'
6310 ; CUR(23,0) V$(V2);
6311 S1=FNV(W2-V1)
6320 RETURN T
6330 FNEND
6340 !
6350 ! ----L{s fr}n filen----
6360 DEF FNFileread LOCAL L2
6370 IF F1=0 RETURN F
6380 WHILE POSIT(F1)-1>Readpos.
6390 W2=FNV(W2+1)
6400 IF W2=W1 W1=FNV(W1+1)
6410 ! Kolla om rest fr}n f|rra raden
6420 L2=LEN(L$)-2 : IF L2<=0 THEN Z=FNLineread : L2=LEN(L$)-2
6430 IF L2>Wid L2=Wid
6440 V$(W2)=LEFT$(L$,L2)
6450 L$=RIGHT$(L$,L2+1)
6460 ! Visa raden p} sk{rmen om det g}r
6470 S1=FNV(W2-V1)
6480 IF S1<24 ; CUR(S1,0) CHR$(32,8) V$(W2);
6490 IF 0 WEND
6500 RETURN T
6510 FNEND
6520 !
6530 ! ----L{s en rad----
6540 DEF FNLineread
6550 ON ERROR GOTO
6560 Writepos.=POSIT(F1)
6570 POSIT #F1,Readpos.
6580 INPUT LINE #F1,L$
6590 Readpos.=POSIT(F1)
6600 POSIT #F1,Writepos.
6610 RETURN T
6820 ! Error
6830 L$='****** L[SFEL ERROR'+NUM$(ERRCODE)+'**'
6840 IF ERRCODE=34 L$='****** SLUT P] FILEN '+F1$+'**' ELSE RETURN F
6850 CLOSE F1 : F1=0
6860 RETURN F
6870 FNEND
6880 !
7000 DEF FNFlag$(Boolean,Char$)
7010 IF Boolean RETURN Char$
7020 RETURN SPACE$(LEN(Char$))
7030 FNEND
7035 !
7040 DEF FNGet$ LOCAL Inq$=1
7050 WHILE SYS(5)=0
7060 IF NOT Flagend Z=FNSysrad+FN\vervaka
7070 WEND
7080 GET Inq$
7090 RETURN Inq$
7100 FNEND
7105 !
7110 DEF FNHjust$(Rad$,L{ngd)
7120 IF LEN(Rad$)>L{ngd THEN RETURN STRING$(L{ngd,ASCII('*'))
7130 RETURN SPACE$(L{ngd-LEN(Rad$))+Rad$
7140 FNEND
7150 !
7160 DEF FNInsysrad(Intext1$,Start,L{ngd) LOCAL A,B !
7170 A=PEEK(65362) : B=PEEK(65363)
7180 POKE 65362,Start-1,24
7190 IF LEN(Intext1$)>=L{ngd THEN ; LEFT$(Intext1$,L{ngd);
7200 IF LEN(Intext1$)Readpos.
7430 W2=FNV(W2+1)
7435 IF W2=W1 THEN W1=FNV(W1+1)
7440 L2=LEN(L$)-2
7445 IF L2<=0 THEN Z=FNLineread : L2=LEN(L$)-2
7450 IF L2>Wid THEN L2=Wid
7455 V$(W2)=LEFT$(L$,L2)
7460 L$=RIGHT$(L$,L2+1)
7465 IF 0 WEND
7470 IF 0 WEND
7475 IF X<>W2 THEN WEND
7480 RETURN -1
7485 FNEND
7490 !
7600 DEF FNNewscreen(Rad,Niv}) LOCAL P1,P2
7620 P1=FNV(Rad-Niv}) : P2=FNV(P1+1)
7630 V1=P2 : V2=FNV(P1+23)
7635 ; CHR$(12);
7640 FOR V9=0 TO 23
7650 IF P1=W2 THEN Z=FNFileread ELSE ; CUR(V9,0) V$(P2);
7670 IF P1=W2 THEN ; CUR(V9,0) ':'; ELSE P1=P2 : P2=FNV(P2+1)
7680 NEXT V9
7685 S1=FNV(W2-V1)
7690 RETURN 0
7700 FNEND