1 REM Ins{nd av Lennart Einarsson <6554> 1986-08-26 19.32.35 (SEND)
10 REM ======== TELEFON.BAS ===========
20 REM > Telefonregister f|r floppy & <
30 REM > cassettminne. Datafilen kryp-<
40 REM > teras mot ofrivillig l{sning.<
50 REM > Login = MARIA <
60 REM > (C) <6554> L.Einarsson <
70 REM > Krypto L.Lundstr|m <2694> <
80 REM > ABC80 + 32k + 40Tkn <
90 REM ======== TELEFON.BAS ===========
100 X%=100% : DIM F$(X%)=18%,E$(X%)=23%,A$(X%)=23%,P$(X%)=6%,O$(X%)=15%,T$(X%)=17%,R$=25%,B$=25%
110 IF PEEK(590%)<>40 ; INP(3%)
120 ; CHR$(12%,7%)CUR(10%,8%)'Din accsess cod tack ';
130 FOR Y%=1% TO 5% : GET Q$(Y%) : ; '*';
140 READ A%(Y%)
150 IF ASC(Q$(Y%))<>A%(Y%) 170 ELSE NEXT Y% : GOTO 180
160 DATA 77,65,82,73,65
170 ; CHR$(12%,7%)CUR(10%,8%)'FELAKTIG BEH\RIGHET !!' : CHAIN ''
180 ; CHR$(12%)CUR(10%,5%)'Korrekt inloggning. V[NTA !' : Y%=1% : GOSUB 2300 : GOSUB 1320
190 ; CHR$(12%,7%)TAB(12%)'Adressregister' : ; : ;
200 ; TAB(13%)'1 = INMATA' : ;
210 ; TAB(13%)'2 = L[SA' : ;
220 ; TAB(13%)'3 = SPARA' : ;
230 ; TAB(13%)'4 = H[MTA' : ;
240 ; TAB(13%)'5 = SKRIVA' : ;
250 ; TAB(13%)'6 = [NDRA' : ;
260 ; TAB(13%)'7 = RADERA' : ;
270 ; TAB(13%)'8 = SLUTA';
280 GET C$ : IF C$='' 280
290 Z%=ASC(C$) : Z%=Z%-48%
300 IF Z%<1% OR Z%>8% GOTO 280
310 ON Z% GOSUB 330,490,1540,1270,740,1760,910,2160
320 GOTO 190
330 IF N%>=X% THEN RETURN
340 N%=N%+1% : ; CHR$(12%)
350 ; TAB(5%)' Inmata namn och adresser '
360 ; : ; TAB(8%)' Inmata #'N%' av'X%' '
370 ; CUR(6%,0%)'F|rnamn ' : R%=6% : K1%=8% : L%=18% : GOSUB 2210 : F$(N%)=S$
380 IF LEN(F$(N%))<=0% THEN N%=N%-1% : GOTO 450
390 ; CUR(8%,0%)'Efternamn ' : R%=8% : K1%=10% : L%=23% : GOSUB 2210 : E$(N%)=S$
400 ; CUR(10%,0%)'Adress ' : R%=10% : K1%=7% : L%=23% : GOSUB 2210 : A$(N%)=S$
410 ; CUR(12%,0%)'Postnr ' : R%=12% : K1%=7% : L%=6% : GOSUB 2210 : P$(N%)=S$
420 ; CUR(14%,0%)'Ort ' : R%=14% : K1%=4% : L%=15% : GOSUB 2210 : O$(N%)=S$
430 ; CUR(16%,0%)'Tfnnr ' : R%=16% : K1%=6% : L%=17% : GOSUB 2210 : T$(N%)=S$
440 IF N%>=X% RETURN
450 ; CUR(20%,8%)'Fler inmatningar (N)';
460 GET C$
470 IF C$='J' OR C$='j' GOTO 340
480 RETURN
490 IF N%=0% RETURN
500 ; CHR$(12%)TAB(7%)' L{sa namn och adresser ' : ;
510 ; CUR(8%,2%)'Om return nedtrycks skrollas listan'
520 ; CUR(10%,8%)'Vilket namn skall s|kas'
530 ; CUR(12%,8%); : INPUTLINE D$ : GOSUB 2120
540 FOR I%=1% TO N%
550 IF INSTR(1%,F$(I%),D$) OR INSTR(1%,E$(I%),D$) B%=1% : GOSUB 640
560 NEXT I%
570 IF B%=1% GOTO 2170
580 ; CHR$(7%)CUR(8%,0%)SPACE$(39%)
590 ; CUR(8%,7%)'Namnet 'D$
600 ; CUR(10%,0%)SPACE$(39%)CUR(10%,7%)'finns ej i registret.'
610 ; CUR(12%,4%)'Tryck en tangent f|r huvudmenyn';
620 GET C$ : IF C$='' THEN 620
630 RETURN
640 ; CHR$(12%)'Post nr'I%' av'N%' m|jliga' : ; : ;
650 ; 'F|rnamn :';F$(I%) : ;
660 ; 'Efternamn :';E$(I%) : ;
670 ; 'Adress :';A$(I%) : ;
680 ; 'Postnr :';P$(I%) : ;
690 ; 'Ort :';O$(I%) : ;
700 ; 'Tfnnr :';T$(I%) : ;
710 ; ;'Tryck en tangent f|r att forts{tta';
720 GET C$
730 RETURN
740 IF N%=0% RETURN
750 ; CHR$(12%,7%)CUR(10%,7%)' [r skrivaren klar ? ';
760 GET C$ : IF C$='J' OR C$='j' 770 ELSE 190
770 ; CHR$(12%)CUR(10%,3%)' Listan kommer nu p} skrivaren '
780 OPEN 'PR:' ASFILE 1%
790 FOR I%=1% TO N%
800 ; #1,TAB(8%)'F|rnamn :'F$(I%)TAB(45%)'F|rnamn :'F$(I%+1%)
810 ; #1,TAB(8%)'Efternamn :'E$(I%)TAB(45%)'Efternamn :'E$(I%+1%)
820 ; #1,TAB(8%)'Adress :'A$(I%)TAB(45%)'Adress :'A$(I%+1%)
830 ; #1,TAB(8%)'Postnr :'P$(I%)TAB(45%)'Postnr :'P$(I%+1%)
840 ; #1,TAB(8%)'Ort :'O$(I%)TAB(45%)'Ort :'O$(I%+1%)
850 ; #1,TAB(8%)'Tfnnr :'T$(I%)TAB(45%)'Tfnnr :'T$(I%+1%)
860 IF I%=17% OR I%=35% OR I%=53% OR I%=71% OR I%=89% ; #1CHR$(11%)
870 FOR T=0 TO 3500 : NEXT T : REM Tas bort om skrivaren klarar X-ON
880 I%=I%+1% : ; #1 : NEXT I% : ; #1%CHR$(12%)
890 CLOSE 1%
900 RETURN
910 IF N%=0% RETURN
920 ; CHR$(12%)TAB(10%)' Radera hel post ' : ; : ;
930 ; CUR(8%,2%)'Om return nedtrycks skrollas listan'
940 ; CUR(10%,8%)'Vilket namn skall s|kas'
950 ; CUR(12%,8%); : INPUTLINE D$ : GOSUB 2120
960 FOR I%=1 TO N%
970 IF INSTR(1%,F$(I%),D$) OR INSTR(1%,E$(I%),D$) B%=1% : GOSUB 1050
980 NEXT I%
990 IF B%=1% GOTO 2170
1000 ; CHR$(7)CUR(14,5)'Post med namnet 'D$
1010 ; CUR(16,5)'finns ej i registret.'
1020 ; CUR(18,3)'Tryck en tangent f|r huvudmenyn';
1030 GET C$
1040 RETURN
1050 ; CHR$(12)
1060 ; 'Post nr #'I%' av'N% : ; : ;
1070 ; 'F|rnamn :';F$(I%) : ;
1080 ; 'Efternamn :';E$(I%) : ;
1090 ; 'Adress :';A$(I%) : ;
1100 ; 'Postnr :';P$(I%) : ;
1110 ; 'Ort :';O$(I%) : ;
1120 ; 'Tfnnr :';T$(I%) : ;
1130 ; : ; TAB(14)'Radera (N)';
1140 GET C$
1150 IF C$='J' OR C$='j' GOSUB 1180 : N%=N%-1 : I%=I%-1
1160 IF I%>=N% GOTO 190
1170 RETURN
1180 ; CHR$(7%) : FOR K%=I% TO N%
1190 F$(K%)=F$(K%+1%)
1200 E$(K%)=E$(K%+1%)
1210 A$(K%)=A$(K%+1%)
1220 P$(K%)=P$(K%+1%)
1230 O$(K%)=O$(K%+1%)
1240 T$(K%)=T$(K%+1%)
1250 NEXT K%
1260 RETURN
1270 ; CHR$(12)TAB(10)' LADDA IN FILER ' : ;
1280 ; : ; : ; TAB(11)'H{mta filer (N) ?';
1290 GET C$ : Y%=1% : GOSUB 2300
1300 IF C$='J' OR C$='j' THEN 1320
1310 RETURN
1320 ONERRORGOTO 1510
1330 OPEN 'DR1:ADRESSER.SEQ' ASFILE 1%
1340 INPUT #1,N%
1350 FOR I%=1 TO N%
1360 INPUTLINE #1,D$
1370 GOSUB 2120 : B$=D$ : GOSUB 2310 : F$(I%)=R$
1380 INPUTLINE #1,D$
1390 GOSUB 2120 : B$=D$ : GOSUB 2310 : E$(I%)=R$
1400 INPUTLINE #1,D$
1410 GOSUB 2120 : B$=D$ : GOSUB 2310 : A$(I%)=R$
1420 INPUTLINE #1,D$
1430 GOSUB 2120 : B$=D$ : GOSUB 2310 : P$(I%)=R$
1440 INPUTLINE #1,D$
1450 GOSUB 2120 : B$=D$ : GOSUB 2310 : O$(I%)=R$
1460 INPUTLINE #1,D$
1470 GOSUB 2120 : B$=D$ : GOSUB 2310 : T$(I%)=R$
1480 NEXT I%
1490 CLOSE 1%
1500 RETURN
1510 ONERRORGOTO 2100
1520 OPEN 'CAS:ADRESSER.SEQ' ASFILE 1
1530 GOTO 1340
1540 IF N%=0 RETURN
1550 ; CHR$(12)TAB(11)' SPARA FILER ' : ;
1560 ; : ; : ; TAB(10)'Spara filer (N) ?';
1570 GET C$ : Y%=-1% : GOSUB 2300
1580 IF C$='J' OR C$='j' 1600
1590 RETURN
1600 ONERRORGOTO 1730
1610 PREPARE 'DR1:ADRESSER.SEQ' ASFILE 1
1620 ; #1,N%
1630 FOR I%=1 TO N%
1640 B$=F$(I%) : GOSUB 2310 : ; #1,R$
1650 B$=E$(I%) : GOSUB 2310 : ; #1,R$
1660 B$=A$(I%) : GOSUB 2310 : ; #1,R$
1670 B$=P$(I%) : GOSUB 2310 : ; #1,R$
1680 B$=O$(I%) : GOSUB 2310 : ; #1,R$
1690 B$=T$(I%) : GOSUB 2310 : ; #1,R$
1700 NEXT I%
1710 CLOSE 1%
1720 RETURN
1730 ONERRORGOTO 2100
1740 PREPARE 'CAS:ADRESSER.SEQ' ASFILE 1%
1750 GOTO 1620
1760 IF N%=0% RETURN
1770 ; CHR$(12%)TAB(11%)' [ndra i post ' : ; : ;
1780 ; CUR(8%,2%)'Om return nedtrycks skrollas listan'
1790 ; CUR(10%,8%)'Vilket namn skall s|kas'
1800 ; CUR(12%,8%); : INPUTLINE D$ : GOSUB 2120
1810 FOR I%=1% TO N%
1820 IF INSTR(1%,F$(I%),D$) OR INSTR(1%,E$(I%),D$) B%=1% : GOSUB 1910
1830 NEXT I%
1840 IF B%=1% GOTO 2170
1850 ; CHR$(12%,7%)
1860 ; CUR(8%,4%)'Namnet 'D$
1870 ; CUR(10%,4%)'finns ej i registret.'
1880 ; CUR(12%,4%)'Tryck en tangent f|r huvudmenyn';
1890 GET C$ : IF C$='' 1890
1900 RETURN
1910 ; CHR$(12%) : ; : ;
1920 ; 'Pos 1.F|rnamn :'F$(I%) : ;
1930 ; 'Pos 2.Eft.namn:'E$(I%) : ;
1940 ; 'Pos 3.Adress :'A$(I%) : ;
1950 ; 'Pos 4.Postnr :'P$(I%) : ;
1960 ; 'Pos 5.Ort :'O$(I%) : ;
1970 ; 'Pos 6.Tfnnr :'T$(I%)
1980 ; CUR(20%,9%)'Vad skall {ndras'; : GET Z$
1990 C%=ASC(Z$) : C%=C%-48%
2000 IF C%<1% OR C%>6% RETURN
2010 ; CUR(20%,9%)SPACE$(25)
2020 ON C% GOSUB 2040,2050,2060,2070,2080,2090
2030 IF B%=1% GOTO 1830 ELSE RETURN
2040 R%=3% : K1%=15% : L%=18% : GOSUB 2210 : F$(I%)=S$ : I%=I%-1% : RETURN
2050 R%=5% : K1%=15% : L%=23% : GOSUB 2210 : E$(I%)=S$ : I%=I%-1% : RETURN
2060 R%=7% : K1%=15% : L%=23% : GOSUB 2210 : A$(I%)=S$ : I%=I%-1% : RETURN
2070 R%=9% : K1%=15% : L%=6% : GOSUB 2210 : P$(I%)=S$ : I%=I%-1% : RETURN
2080 R%=11% : K1%=15% : L%=15% : GOSUB 2210 : O$(I%)=S$ : I%=I%-1% : RETURN
2090 R%=13% : K1%=15% : L%=17% : GOSUB 2210 : T$(I%)=S$ : I%=I%-1% : RETURN
2100 L%=ERRCODE : ; CHR$(12%,7%)CUR(10%,12%)'E R R O R->'L% : CLOSE 1%
2110 FOR T=0 TO 4000 : NEXT T : GOTO 190
2120 D$=LEFT$(D$,LEN(D$)-2%) : RETURN
2130 DEFFNB%(J%,Y%)=J%-(Y%*Z0%)
2140 DEFFNC%=ASC(MID$(B$,J%,1%))
2150 DEFFNA%(Z%)=Z%+((Z%>126)-(Z%<32))*X1%
2160 ; CHR$(12%,7%)CUR(10%,9%)'PROGRAMMET AVSLUTAS' : CHAIN ''
2170 ; CHR$(12%,7%)CUR(8%,0%)'Det finns inga fler registrerade med'
2180 ; : ; 'namnet 'D$
2190 ; : ; 'Tryck en tangent f|r huvudmenyn';
2200 GET C$ : B%=0% : GOTO 190
2210 ; CUR(R%,K1%); : S$=''
2220 GET G$ : IF G$=CHR$(13%) GOTO 2280
2230 IF LEN(S$)