10 ! LIST LIBFIL.BAS
20 ! **********************************************************************
30 ! Program LIBRUTIN.BAS Utg}va 1.01 1986-05-04
40 ! av Bo Kullmar
50 ! Ins{nd av Bo Kullmar SYSOP <1789> 1986-05-04 23.34.15
60 ! F|r ABC800M ABC800C ABC802 ABC806
70 ! F|r disk med UFD-DOS
80 ! Testad p} ABC806/802
90 ! LIB-rutin f|r UFD-DOS. Klarar olika MFD s}v{l som UFD. Ej avsett f|r
100 ! LUX-NET DOS. Enbart testad p} MF-drive.
109 ! --------------------------------------------------------------------
111 ! Det var just det jag ville ha. Ett LIB-program som kunde skicka ut
112 ! inneh}llet p} fil, med filnamn och storlek i en kolumn.
113 ! Rutinen LIBRUTIN.BAS inneh|ll en bra stomme som jag {ndrade litet i
114 ! 1988-11-05.0957 <2776> Bengt Sandgren.
120 ! --------------------------------------------------------------------
1000 ! Initiering -----------------------------------
1010 INTEGER : EXTEND
1020 !
1030 ! Huvudrutin -----------------------------------
1040 Dummy=FNIngress
1050 Dummy=FNInit
1060 END
1070 !
2000 DEF FNInit
2010 DIM Dosbuff$=0 : POKE VAROOT(Dosbuff$),0,1,0,245,0,1
2020 IF PEEK(24688)<>0 ; 'Programmet {r ENBART avsett f|r UFD-DOS!' : STOP
2030 INPUT 'Ange inputenhet: 'Enhet$
2040 Drive=FNEnhcs(FNVersal$(Enhet$))
2050 IF Drive=-1 ; 'Disken ' Enhet$ ' finns ej!' CHR$(7) : GOTO 2030
2060 INPUT 'Ange utenhet: 1 f|r CON: - 2 f|r fil 'Utenh$
2070 IF VAL(Utenh$)=2 Utf=99 ELSE Utf=0
2080 IF Utf=0 OPEN "CON:" AS FILE Utf ELSE PREPARE "libfil.txt" AS FILE Utf
2090 IF FNReadlib(Drive) ; 'Avbrytes p} grund av fel!'
2100 RETURN 0
2110 FNEND
2120 !
3000 DEF FNReadsec(Disk,Sec)
3010 ! L{s en sektor till Dosbuff 0 vilken man sedan kan kolla }t i Dosbuff$
3020 POKE SYS(10)-511,Disk
3030 Dummy=CALL(24678,Sec)
3040 IF FNDiscerror RETURN -1
3050 RETURN 0
3060 FNEND
3070 !
4000 DEF FNDiscerror LOCAL I
4010 RESTORE 4080
4020 WHILE I<4
4030 READ Kod,Text$
4040 IF (PEEK(SYS(10)-491) AND Kod) ; CHR$(7) Text$ : RETURN -1
4050 I=I+1
4060 WEND
4070 RETURN 0
4080 DATA 8, 'Checksummafel'
4090 DATA 16, 'D}lig disk'
4100 DATA 64, 'Skivan skrivskyddad'
4110 DATA 128,'Luckan |ppen'
4120 FNEND
4130 !
5000 DEF FNReadlib(Drive) LOCAL Rec,Fil,Libsec,Bitmap0$=16,Bitmap1$=16,Ufd
5010 IF Drive>=0 AND Drive<=3 Drive=PEEK(PEEK2(24683))+Drive ! Ta reda p} enhet om DRX anges
5020 IF Drive>=12 AND Drive<=15 Sec=6 ELSE Sec=14 ! Bitkartan f|r MO = 6 f|r |vriga 14
5030 IF Drive=30 Drive=PEEK(65529) : Ufd=-1 : Sec=PEEK2(65527)-1 : IF Sec=-1 ; 'UFD-bibliotek {r ej aktivt!' CHR$(7) : RETURN -1
5040 ! Om drive=30 {r det ett UFD: kolla adressen till det och om det {r aktivt
5050 Rec=Sec : Libsec=1
5060 Ec=FNReadsec(Drive,Rec) : Bitmap0$=MID$(Dosbuff$,240,16) : Rec=Rec+1 : IF Ec RETURN Ec
5070 IF Ufd Bitmap1$=STRING$(16,0) ELSE Ec=FNReadsec(Drive,Rec) : Bitmap1$=MID$(Dosbuff$,240,16) : Rec=Rec+1 : IF Ec RETURN Ec
5080 IF Drive>=12 AND Drive<=15 AND NOT Ufd Rec=Rec+8
5090 ! L{s bitkartorna och kolla i vilka sektor som det finns filer
5100 WHILE Rec