1 REM +++++++++++++++++++++++++++++++++
2 REM ! Program MJ.. CASLIB
3 REM ! Utg}va 2.01 1981-10-03
4 REM ! av (c) Magnus Jacobsson
7 REM ! Minne 16 Kbytes
9 REM +++++++++++++++++++++++++++++++++
10 REM L{ser kassettband och letar
11 REM headerblock. Utskrift sker p}
12 REM bildsk{rmen och liknar diskettLIB
19 REM SAVE CASLIB,2.1,811003,MJ
20 DIM A$=0%,E3$=7%,F$=5%
30 P%=PEEK(65065%)+SWAP%(PEEK(65066%))
40 POKE P%+4%,253%,0%,3%,0%,253%,0%
50 P%=P%+7%
60 E3$=STRING$(6%,0%)+CHR$(3%)
70 A%=PEEK(948%)+SWAP%(PEEK(949%))+1%
80 A%=PEEK(A%)
120 POKE 65408%,205%,A%,5%,208%,111%
130 POKE 65413%,201%
140 POKE 65017%,0%,0% : R%=1% : K%=20%
160 ; CHR$(12%)TAB(6%);
170 ; '< ABC80-CASSETTE LIBRARY >'
180 ; CUR(2%,0%)'Push ';
190 GET F$ : ; F$TAB(39%);
200 V%=65535%
210 ; CUR(1%,0%)'========Looking for ';
220 IF V%<0% ; 'head'; ELSE ; 'data';
240 ; '-record ========';
250 IF (INP(56%) AND 95%)=67% GOTO 650
260 Z%=CALL(65408%) : E%=Z% AND 255%
270 Z%=Z% AND 65280%
280 POKE P%,SWAP%(Z%) : H%=PEEK(Z%)
300 B%=PEEK(Z%+1%)+SWAP%(PEEK(Z%+2%))
310 IF V%<>65535% GOTO 380
320 IF E% OR H%<>255% OR B%<>65535% 210
330 K%=K%+20% : R%=R%+K%/40%
340 K%=K%-K%/40%*40%
350 ; CUR(R%,K%)LEFT$(A$,8%)+'.';
360 ; MID$(A$,9%,3%)' '; : GOSUB 670
370 V%=V%+1% : GOTO 210
380 IF (E% OR H% OR B%<>V%)=0% GOTO 430
390 IF B%<>0% AND T%=4% GOTO 420
400 ; CUR(R%,K%+16%)'#';
410 ; RIGHT$(NUM$(E% AND 127%),2%);
420 V%=65535% : GOTO 320
430 GOSUB 670 : V%=V%+1%
440 IF B%=0% Q%=PEEK(Z%+3%) ELSE 480
450 IF (Q% OR 1%)=131% T%=1% : GOTO 480
460 IF Q%=0% T%=3% : GOTO 480
470 IF Q%<128% T%=2% ELSE T%=4%
480 ON T% GOSUB 510,550,570,630
490 IF L%=1% 200
500 GOTO 210
510 IF B%=0% I%=2% ELSE I%=1%
520 L%=ASC(MID$(A$,I%,1%))
530 IF L%<2% RETURN
540 I%=I%+L% : GOTO 520
550 IF LEFT$(A$,7%)=E3$ L%=1% : RETURN
560 L%=0% : RETURN
570 I%=1%
580 L%=ASC(MID$(A$,I%,1%))
590 IF L%=255% L%=0% : RETURN
600 N%=ASC(MID$(A$,I%+1%,1%))
610 IF N%=0% L%=1% : RETURN
620 I%=I%+N%+8% : GOTO 580
630 IF B%=0% ; CUR(R%,K%+17%)'!';
640 L%=0% : RETURN
650 OUT 58,0% : ; CUR(R%,0%);
660 POKE 65013%,0% : END
670 F$=' '+NUM$(B%+2%)
680 F$=RIGHT$(F$,LEN(F$)-2%)
690 ; CUR(R%,K%+13%)F$ : RETURN