1 REM Ins{nd av Bo Kullmar SYSOP <1789> 1986-05-04 23.34.15
2 ! **********************************************************************
3 ! Program LIBRUTIN.BAS Utg}va 1.01 1986-05-04
4 ! av Bo Kullmar
5 ! Ins{nd av Bo Kullmar
6 ! F|r ABC800M ABC800C ABC802 ABC806
7 ! F|r disk med UFD-DOS
8 ! Testad p} ABC806
9 ! LIB-rutin f|r UFD-DOS. Klarar olika MFD s}v{l som UFD. Ej avsett f|r
10 ! LUX-NET DOS. Enbart testad p} MF-drive.
11 ! **********************************************************************
60 INTEGER : EXTEND
1000 Dummy=FNInit
1010 INPUT 'Ange enhet: 'Enhet$
1020 Drive=FNEnhcs(FNVersal$(Enhet$))
1030 IF Drive=-1 ; 'Disken ' Enhet$ ' finns ej!' CHR$(7) : GOTO 1010
1040 IF FNReadlib(Drive) ; 'Avbrytes p} grund av fel!'
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 RETURN 0
2040 FNEND
2050 DEF FNReadsec(Disk,Sec)
2060 ! L{s en sektor till Dosbuff 0 vilken man sedan kan kolla }t i Dosbuff$
2070 POKE SYS(10)-511,Disk
2080 Dummy=CALL(24678,Sec)
2090 IF FNDiscerror RETURN -1
2100 RETURN 0
2110 FNEND
2120 DEF FNDiscerror LOCAL I
2130 RESTORE 2200
2140 WHILE I<4
2150 READ Kod,Text$
2160 IF (PEEK(SYS(10)-491) AND Kod) ; CHR$(7) Text$ : RETURN -1
2170 I=I+1
2180 WEND
2190 RETURN 0
2200 DATA 8, 'Checksummafel'
2210 DATA 16, 'D}lig disk'
2220 DATA 64, 'Skivan skrivskyddad'
2230 DATA 128,'Luckan |ppen'
2240 FNEND
2250 DEF FNReadlib(Drive) LOCAL Rec,Fil,Libsec,Bitmap0$=16,Bitmap1$=16,Ufd
2260 IF Drive>=0 AND Drive<=3 Drive=PEEK(PEEK2(24683))+Drive ! Ta reda p} enhet om DRX anges
2270 IF Drive>=12 AND Drive<=15 Sec=6 ELSE Sec=14 ! Bitkartan f|r MO = 6 f|r |vriga 14
2280 IF Drive=30 Drive=PEEK(65529) : Ufd=-1 : Sec=PEEK2(65527)-1 : IF Sec=-1 ; 'UFD-bibliotek {r ej aktivt!' CHR$(7) : RETURN -1
2290 ! Om drive=30 {r det ett UFD: kolla adressen till det och om det {r aktivt
2300 Rec=Sec : Libsec=1
2310 Ec=FNReadsec(Drive,Rec) : Bitmap0$=MID$(Dosbuff$,240,16) : Rec=Rec+1 : IF Ec RETURN Ec
2320 IF Ufd Bitmap1$=STRING$(16,0) ELSE Ec=FNReadsec(Drive,Rec) : Bitmap1$=MID$(Dosbuff$,240,16) : Rec=Rec+1 : IF Ec RETURN Ec
2330 IF Drive>=12 AND Drive<=15 AND NOT Ufd Rec=Rec+8
2340 ! L{s bitkartorna och kolla i vilka sektor som det finns filer
2350 WHILE Rec