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