1 REM Ins{nd av Lennart Einarsson <6554> 1987-01-09 17.27.52 (DUMP)
10 REM ################################
20 REM # Videoregister f|r alla ABC80.#
30 REM # F|r cas & floppy. Datafilen #
40 REM # krypteras. #
50 REM # LOGIN = MARIA, {ndras p} rad #
60 REM # 240. Titta i ASCII-lista. #
70 REM # (C) <6554> L.Einarsson #
80 REM # <2694> L.Lundstr|m #
90 REM ################################
100 X%=100% : DIM L$(X%,3%)=25%,K$(X%,3%)=4%
110 DIM R$=25%,D$=27%,C$=1%,N$=12%,A$=30% : X1%=95%
120 POKE 20750,70 : A$='Det finns inga uppgifter att '
130 DEFFNA%(Z%)=Z%+((Z%>126)-(Z%<32))*X1%
140 DEFFNB%(J%,Y%)=J%-(Y%*Z0%)
150 DEFFNC%=ASC(MID$(D$,J%,1%))
160 DEFFND%=SWAP%(PEEK(885%+2%*PEEK(65011%)))+PEEK(884%+2%*PEEK(65011%))+PEEK(65012%)
170 DEFFNE%(X%)=PEEK(65012%)+X%
180 DEFFNF%(X%)=INSTR(1%,L$(X%,0%),'Oinspelad')
190 N$='VIDEOREG.DAT' : IF PEEK(590%)<>40 ; INP(3%)
200 ; CHR$(12%,7%)CUR(10%,8%)'Din accsess cod tack ';
210 FOR Y%=1% TO 5% : GET C$ : ; '*';
220 READ A%
230 IF ASC(C$)<>A% 250 ELSE NEXT Y% : GOTO 260
240 DATA 77,65,82,73,65
250 ; CHR$(12%,7%)CUR(10%,8%)'FELAKTIG BEH\RIGHET !!' : CHAIN ''
260 ; CHR$(12%)CUR(10%,5%)'Korrekt inloggning. V[NTA !' : Y%=1% : GOSUB 1290 : GOSUB 970
270 ; CHR$(12%,7%)TAB(12%)'Videoregister' : ; : ;
280 ; TAB(13%)'1 = INMATA' : ;
290 ; TAB(13%)'2 = S\KA/[NDRA' : ;
300 ; TAB(13%)'3 = SPARA' : ;
310 ; TAB(13%)'4 = H[MTA' : ;
320 ; TAB(13%)'5 = SKRIVA' : ;
330 ; TAB(13%)'6 = SLUTA' : ; : ; TAB(13%);
340 GET C$ : C%=ASC(C$) : C%=C%-48% : IF C%<1% OR C%>6% GOTO 340
350 ON C% GOSUB 360,540,830,940,1070,1260 : GOTO 270
360 IF N%>=X% THEN GOTO 510 ELSE F%=0%
370 ONERRORGOTO 410 : ; CUR(4%,13%)SPACE$(295%);CUR(13%,8%)'F|rsta lediga '
380 ; TAB(2%)'eller speciellt nummer (1...'RIGHT$(NUM$(N%+1%),2%)')';
390 INPUT D$ : I%=VAL(D$) : IF I%>X% OR I%<1% I%=X%
400 F%=-1% : IF FNF%(I%) THEN L$(I%,0%)='' : GOTO 440 ELSE 440
410 FOR I%=1% TO N%
420 IF FNF%(I%) THEN L$(I%,0%)='' : F%=-1% : GOSUB 1300 : GOTO 460
430 NEXT I%
440 IF I%<=N% GOSUB 1300 : GOTO 460
450 N%=N%+1% : I%=N% : L$(N%,0%)='' : GOSUB 1300
460 ; CUR(0%,3%)' Inmata Artister & Filmtitlar '
470 ; TAB(8%)' Band #'I%' av'X%' '
480 FOR C%=1% TO 8% : GOSUB 1640 : IF F% THEN I%=I%+1% ELSE I%=N%
490 IF ASC(L$(I%,0%))=32% AND ASC(L$(I%,2%))=32% THEN IF I%=N% N%=N%-1% : RETURN ELSE L$(I%,0%)='Oinspelad' : RETURN
500 NEXT C%
510 IF N%=X% ; CUR(22%,0%)SPACE$(13%)'Registret fullt'SPACE$(12%); : GOTO 1060
520 ; CUR(22%,0%)SPACE$(8%)'Fler inmatningar (N)'SPACE$(11%);CUR(22%,26%); : GET C$
530 IF C$='J' OR C$='j' IF F% THEN ; CHR$(12) : GOTO 370 ELSE 410 ELSE RETURN
540 IF N%=0% ; CUR(22%,3%)A$'s|ka!' : GOTO 1060
550 ; CHR$(12%)TAB(8%)' S|ka/[ndra i post ' : ; : ;
560 ; CUR(8%,1%)'Om return nedtrycks skrollas listan'
570 ; CUR(10%,1%)'Vilket Namn eller Titel skall s|kas'
580 ; CUR(12%,5%); : D$=''
590 GET C$ : IF ASC(C$)<32% AND INSTR(1%,CHR$(8%,13%),C$)=0% THEN 590
600 ; C$; : IF C$<>CHR$(8%) 630
610 IF LEN(D$)>0% THEN D$=LEFT$(D$,LEN(D$)-1%) : POKE FND%,32 : ; CUR(12%,5%+LEN(D$)); : GOTO 590
620 ; CUR(12%,5%); : GOTO 590
630 IF C$<>CHR$(13%) THEN D$=D$+C$ : IF LEN(D$)<25% THEN 590
640 IF D$=CHR$(13%) THEN D$=''
650 FOR I%=1% TO N% : FOR J1%=0% TO 3%
660 IF FNF%(I%)=0% THEN 690
670 IF C%=-40% I%=I%-1% ELSE I%=I%+1%
680 IF I%=0% OR I%>N% GOTO 720 ELSE 660
690 IF INSTR(1%,L$(I%,J1%),D$) THEN B%=1% : GOSUB 1590 : GOTO 790
700 NEXT J1%
710 NEXT I%
720 ; CHR$(12%,7%)
730 IF LEN(D$)=0% THEN ; CUR(10%,12%)'INGA FLER BAND' : FOR T=1 TO 2000 : NEXT T : RETURN
740 IF B%=0% GOTO 760
750 ; CUR(6%,0%)'Det finns inga fler registrerade med'
760 ; CUR(8%,4%)'Begreppet 'D$ : IF B%=1% B%=0% : GOTO 780
770 ; CUR(10%,4%)'finns ej i registret.'
780 ; CUR(22%,4%)'Tryck tangent f|r huvudmenyn'; : GET C$ : RETURN
790 IF C%=0 THEN RETURN
800 IF C%=-40 THEN I%=I%-1% : D$='' : GOTO 680
810 IF C%=18% OR C%=50% GOSUB 1420
820 GOTO 710
830 IF N%=0% ; CUR(22%,2%)A$'spara!' : GOTO 1060 ELSE ; CHR$(12)TAB(11)' SPARA FILER ' : ;
840 ; : ; : ; TAB(10)'Spara filen (J) ?';
850 GET C$ : Y%=-1% : GOSUB 1290 : IF C$='N' OR C$='n' RETURN
860 ONERRORGOTO 930 : PREPARE 'DR1:'+N$ ASFILE 1
870 ; CUR(12%,14%);'KRYPTERAR';
880 ; #1,N%
890 FOR I%=1 TO N% : FOR J1%=0% TO 3%
900 D$=L$(I%,J1%) : GOSUB 1830 : ; #1,R$
910 D$=K$(I%,J1%) : GOSUB 1830 : ; #1,R$
920 NEXT J1% : NEXT I% : CLOSE 1% : RETURN
930 ONERRORGOTO 1040 : PREPARE 'CAS:'+N$ ASFILE 1% : GOTO 870
940 ; CHR$(12)TAB(10)' LADDA IN FILER ' : ;
950 ; : ; : ; TAB(11)'H{mta filen (J) ?';
960 GET C$ : Y%=1% : GOSUB 1290 : IF C$='N' OR C$='n' THEN RETURN
970 ONERRORGOTO 1020 : OPEN 'DR1:'+N$ ASFILE 1%
980 ; CUR(12%,13%);'DEKRYPTERAR';
990 INPUT #1,N% : FOR I%=1 TO N% : FOR J1%=0% TO 3% : INPUTLINE #1,D$
1000 GOSUB 1030 : GOSUB 1840 : L$(I%,J1%)=R$ : INPUTLINE #1,D$
1010 GOSUB 1030 : GOSUB 1840 : K$(I%,J1%)=R$ : NEXT J1% : NEXT I% : CLOSE 1% : RETURN
1020 ONERRORGOTO 1040 : OPEN 'CAS:'+N$ ASFILE 1 : GOTO 980
1030 D$=LEFT$(D$,LEN(D$)-2%) : RETURN
1040 L%=ERRCODE : ; CHR$(12%,7%)CUR(10%,0%);
1050 IF L%=21% ; TAB(5)'Hittar ej filen 'N$ : GOTO 1060 ELSE ; TAB(12)'E R R O R->'L% : CLOSE 1%
1060 FOR T=0 TO 4000 : NEXT T : IF L%<>21% 270 ELSE RETURN
1070 IF N%=0% ; CUR(22%,0%)A$'skriva ut!' : GOTO 1060 ELSE ; CHR$(12%,7%)CUR(10%,7%)' [r skrivaren klar ? ';
1080 GET C$ : IF C$='J' OR C$='j' 1090 ELSE RETURN
1090 ; CUR(12%,9%)' 1 = A4 Papper 'CUR(14%,9%)' 2 = A5 Papper ';
1100 ONERRORGOTO 1090 : GET C$ : Y%=VAL(C$) : IF Y%<1% OR Y%>2% GOTO 1090
1110 ; CHR$(12%)CUR(10%,3%)' Listan kommer nu p} skrivaren '
1120 OPEN 'PR:' ASFILE 1% : FOR I%=1% TO N% STEP 2%
1130 ; #1,TAB(2%)I%TAB(6%)'Artist : 'L$(I%,0%)TAB(41%)I%+1%TAB(45%)'Artist : 'L$(I%+1%,0%)
1140 ; #1,TAB(6%)'Titel : 'L$(I%,1%)TAB(45%)'Titel : 'L$(I%+1%,1%)
1150 ; #1,TAB(6%)'Speltid: 'K$(I%,0%)' min.'TAB(24%)'R{kneverk: 'K$(I%,1%);
1160 ; #1,TAB(45%)'Speltid: 'K$(I%+1%,0%)' min.'TAB(63%)'R{kneverk: 'K$(I%+1%,1%)
1170 ; #1,TAB(6%)'Artist : 'L$(I%,2%)TAB(45%)'Artist : 'L$(I%+1%,2%)
1180 ; #1,TAB(6%)'Titel : 'L$(I%,3%)TAB(45%)'Titel : 'L$(I%+1%,3%)
1190 ; #1,TAB(6%)'Speltid: 'K$(I%,2%)' min.'TAB(24%)'R{kneverk: 'K$(I%,3%);
1200 ; #1,TAB(45%)'Speltid: 'K$(I%+1%,2%)' min.'TAB(63%)'R{kneverk: 'K$(I%+1%,3%)
1210 IF Y%=1% AND I%=17% OR I%=35% OR I%=53% OR I%=71% OR I%=89% ; #1CHR$(11%)
1220 IF Y%=2% AND I%=7% OR I%=15% OR I%=23% OR I%=31% OR I%=39% OR I%=47% ; #1CHR$(11%)
1230 IF Y%=2% AND I%=55% OR I%=63% OR I%=71% OR I%=79% OR I%=87% OR I%=95% ; #1CHR$(11%)
1240 FOR T=0 TO 3800 : NEXT T : REM Tas bort om skrivaren klarar X-ON
1250 ; #1 : NEXT I% : ; #1CHR$(12) : CLOSE 1% : RETURN
1260 ; CHR$(12%,7%)CUR(10%,9%)'[r listan sparad (J/N) '; : INPUT D$
1270 C%=ASC(D$) AND 95% : IF C%=78% RETURN ELSE IF C%<>74% GOTO 1260
1280 ; CUR(10%,9%)'PROGRAMMET AVSLUTAT'SPACE$(10%) : POKE 20750,120 : CHAIN ''
1290 POKE -455%,0%,0%,0%,151%,31% : RETURN
1300 RESTORE 2070 : ; CHR$(12%);
1310 ; CUR(0%,13%)' Band #'I%' ';
1320 GOSUB 2060 : ; CUR(R%,0%)'1 Artist 'CUR(R%,K1%)L$(I%,0%) : ;
1330 GOSUB 2060 : ; CUR(R%,0%)'2 Titel ' : ; CUR(R%,K1%)L$(I%,1%);
1340 GOSUB 2060 : ; CUR(R%,0%)'3 Speltid ';CUR(R%,K1%)K$(I%,0%)TAB(19)' min';
1350 GOSUB 2060 : ; CUR(R%,26%)'4 R{kn ';CUR(R%,K1%)K$(I%,1%)
1360 ; STRING$(39%,61%) : ;
1370 GOSUB 2060 : ; CUR(R%,0%)'5 Artist 'CUR(R%,K1%)L$(I%,2%) : ;
1380 GOSUB 2060 : ; CUR(R%,0%)'6 Titel ' : ; CUR(R%,K1%)L$(I%,3%);
1390 GOSUB 2060 : ; CUR(R%,0%)'7 Speltid ';CUR(R%,K1%)K$(I%,2%)TAB(19)' min';
1400 GOSUB 2060 : ; CUR(R%,26%)'8 R{kn ';CUR(R%,K1%)K$(I%,3%)
1410 RETURN
1420 ; CUR(20%,0%)'Ta bort post (]ngra=])'SPACE$(19%);
1430 ; CUR(22%,0%)'Hela posten , del 1 (1), del 2 (2)'; : GET C$
1440 C%=ASC(C$) : IF (C% AND 95%)=93% THEN I%=I%-1% : RETURN
1450 IF C%<>13% AND C%<>49% AND C%<>50% THEN RETURN
1460 IF C%=13% THEN 1550
1470 IF C%=49% THEN C%=0% ELSE C%=2%
1480 FOR I1%=C% TO C%+1%
1490 L$(I%,I1%)=SPACE$(25%)
1500 K$(I%,I1%)=SPACE$(4%)
1510 NEXT I1%
1520 GOSUB 1300
1530 IF ASC(L$(I%,0%))=32% AND ASC(L$(I%,2%))=32% THEN 1550
1540 I%=I%-1% : RETURN
1550 FOR J1%=0% TO 3% : L$(I%,J1%)=' ' : K$(I%,J1%)=' ' : NEXT J1%
1560 IF I%, <--, meny(0), bort(B)'
1610 ; CUR(20%,27%); : GET C$
1620 IF INSTR(1%,'123456780Bb'+CHR$(8,9),C$)=0% THEN 1610
1630 C%=ASC(C$) : C%=C%-48% : IF C%<1% OR C%>8% RETURN
1640 ON C% RESTORE 2070,2080,2090,2100,2110,2120,2130,2140
1650 GOSUB 1580
1660 ON C% GOSUB 1680,1680,1690,1690,1680,1680,1690,1690
1670 RETURN
1680 L$(I%,J1%)=R$ : GOTO 1700
1690 K$(I%,J1%)=R$
1700 I%=I%-1% : RETURN
1710 M%=PEEK(65012%)
1720 FOR J%=FND% TO L9%+L%
1730 POKE J%,PEEK(J%+1%)
1740 POKE L9%+L%,32%
1750 NEXT J%
1760 ; CUR(R%,M%); : RETURN
1770 M%=PEEK(65012%)
1780 FOR J%=FND%+K1%+L%-M%-1% TO FND%+1% STEP -1%
1790 POKE J%,PEEK(J%-1%)
1800 NEXT J%
1810 POKE J%,32%
1820 RETURN
1830 IF (ASC(RIGHT$(D$,LEN(D$)))=32%) AND (LEN(D$)>1%) THEN D$=LEFT$(D$,LEN(D$)-1%) : GOTO 1830
1840 R$='' : FOR J%=1 TO LEN(D$)
1850 Z0%=X1%*RND
1860 ; CUR(14%,16%)Z0%;
1870 R$=R$+CHR$(FNA%(FNB%(FNC%,Y%)))
1880 NEXT J% : RETURN
1890 R$='' : M%=K1% : L9%=FND%
1900 ; CUR(22%,2%)'CTRL-P = Insert CTRL-D = Delete'CUR(R%,M%);
1910 GET C$ : M%=PEEK(65012%) : ; CUR(R%,M%);
1920 IF C$=CHR$(13%) THEN 2010
1930 IF C$=CHR$(4%) IF FNE%(0%)-K1%L9% THEN V%=-1% : GOTO 1990 ELSE 2000
1960 IF C$=CHR$(9%) IF FND%FND% IF (FND%=L9%) THEN POKE FND%,ASC(C$) : V%=1% ELSE GOTO 2000
1990 M%=FNE%(V%) : GOTO 1900
2000 M%=PEEK(65012%) : ; CUR(22%,0%)SPACE$(11%)'UTANF\R GR[NSERNA'SPACE$(11%);CHR$(7%);CUR(R%,M%); : GOTO 1910
2010 ; CUR(R%,K1%);
2020 FOR J%=R% TO R%+L%-1%
2030 R$=R$+CHR$(PEEK(FND%)) : POKE 65012%,PEEK(65012%)+1%
2040 NEXT J%
2050 RETURN
2060 READ R%,K1%,L%,J1% : RETURN
2070 DATA 3 ,14,25,0
2080 DATA 5,14,23,1
2090 DATA 7,15,3,0
2100 DATA 7,35,4,1
2110 DATA 11,14,25,2
2120 DATA 13,14,23,3
2130 DATA 15,15,3,2
2140 DATA 15,35,4,3