10 REM +++++++++++++++++++++++++++++++++ 20 REM ! Program .... DISKREG 30 REM ! Utg}va 2.0 83-01-03 40 REM ! av (c) Rolf Nordin 50 REM ! {ndrat av Mats Larsson 60 REM ! Minne 16 Kbytes f|r flexskiva 70 REM ! Ins{nt av Mats Larsson 80 REM +++++++++++++++++++++++++++++++++ 90 REM [ndrat till UFD-dos Bert Holgersson 860805 100 REM Screened by C R LERIN. 110 REM 120 REM Detta {r en b{ttre version av 130 REM DISKREG som anv{nder sig av en 140 REM direktfil.Detta g|r att det g}r 150 REM mycket fortare att s|ka bland 160 REM skivorna. 170 REM Innan du b|rjar l{gga upp skivor 180 REM i registert ska du skapa en fil 190 REM med namnet SKIVOR.DAT som skall 200 REM vara 650 block + header.Hur du 210 REM g|r det se bruksanvisning ABC80. 220 REM ++++++++++++++++++++++++++++++++ 230 REM ** DIV INIT ** 240 ONERRORGOTO 250 : OPEN "SKIVOR.TST" ASFILE 1 : GOTO 280 250 ; CHR$(12)"INGEN DATAFIL FINNS!!!" : END 260 REM 261 REM T%=Tabuleringsr{knare 262 REM F%=Filr{knare 265 REM V$=Volume name 270 REM R%=Radr{knare f|r fil-listning 280 DIM F$(255%)=12% : REM Antal filer p} en floppy 290 DIM A$=3289% : REM Lagring f|r samtliga poster p} en skiva 300 DIM B%(15%) : REM Lagring f|r antal anv{nda Directory entries 310 K$='RVBIATS' : REM Kommandostr{ng 320 REM 330 REM ** HUVUDPROGRAMM ** 340 GOSUB 1310 350 GOSUB 1570 : GOSUB 1530 : GOSUB 1470 : INPUT I$ : GOSUB 1250 360 GOSUB 1630 : I%=INSTR(1%,K$,I$) : IF I%=0% THEN 350 370 ON I% GOSUB 380,760,950,1310,1010,1030,1120 : GOTO 350 380 REM ******** REGA SKIVA ********* 390 GOSUB 1280 400 IF INSTR(1%,I$,']') OR INSTR(1%,I$,'}') THEN RETURN 410 E%=4% : ONERRORGOTO 1640 : D%=VAL(I$) : IF D%>50% OR D%<1% THEN 390 420 POKE 64769%,1% : Z%=CALL(24678%,14%) : REM L{s bitkarta med DIR-entr. 430 IF PEEK(64789%) THEN E%=1% : GOTO 1640 440 REM l{s antal filer i varje Lib-sector 450 F%=0% : FOR I%=0% TO 15% : B%(I%)=PEEK(62959%+I%) : NEXT I% 460 REM 470 REM ** L{s vilka filer som finns 480 REM F|rsta platsen i de 16 f|rsta LIB-sectorerna {r upptagen 490 REM 500 FOR S%=16% TO 31% 510 IF S%<16% AND B%(S%-16%)<2% THEN 610 520 IF S%>23% AND B%(S%-16%)<1% THEN 610 530 Z%=CALL(24678%,S%) 540 FOR A%=62736% TO 62960% STEP 16% 550 IF PEEK(A%)=255% THEN 600 560 F$(F%)='' : FOR I%=4% TO 11% : F$(F%)=F$(F%)+CHR$(PEEK(A%+I%)) : NEXT I% 570 F$(F%)=F$(F%)+'.' 580 FOR I%=12% TO 14% : F$(F%)=F$(F%)+CHR$(PEEK(A%+I%)) : NEXT I% 590 F%=F%+1% 600 NEXT A% 610 NEXT S% 620 REM 630 REM Om det fanns filer,s} ta reda p} Volume name 640 REM 650 IF F%=0% THEN 730 655 V$="" 660 POKE 64769%,1% 670 Z%=CALL(24678%,0%) 680 I%=62855% 690 IF PEEK(I%)>31% AND PEEK(I%)<128% AND I%<-2561% THEN V$=V$+CHR$(PEEK(I%)) : I%=I%+1% : GOTO 690 695 IF LEN(V$)>32% THEN V$=LEFT$(V$,32%) 700 V$=V$+SPACE$(33%-LEN(V$)) 720 REM 730 E%=2% : ONERRORGOTO 1640 740 GOSUB 1770 750 GOTO 800 760 REM ******* L[S I REGISTER ****** 770 GOSUB 1280 780 IF INSTR(1%,I$,']') OR INSTR(1%,I$,'}') THEN RETURN 790 E%=4% : ONERRORGOTO 1640 : D%=VAL(I$) : IF D%>50% OR D%<1% THEN 770 800 E%=3% : ONERRORGOTO 1640 : GOSUB 1920 810 IF F%=0% THEN 1640 820 ; CHR$(12%) : GOSUB 1570 830 GOSUB 1260 : ; CUR(2%,0%); : T%=1% : R%=0% : IF F%=0% THEN RETURN ELSE FOR I%=0% TO F%-1% 840 F$=F$(I%) 850 ; #L%,TAB(T%)F$; : T%=T%+13% : IF T%>76% THEN ; #L% : T%=1% 860 R%=R%+1% : IF R%<102 GOTO 930 870 ; CUR(20%,0%)"**MORE**"; : GET G$ 880 FOR J%=0% TO 17% 890 ; CUR(2%+J%,0%)STRING$(80%,32%); 900 NEXT J% 910 ; CUR(2%,0%); 920 R%=0% : T%=1% 930 NEXT I% 940 RETURN 950 REM ****** BL[DDRA REG ********** 960 M%=D% : IF M%=0% THEN M%=50% 970 D%=D%+1% : IF D%=51% D%=1% 980 IF D%=M% RETURN 990 ONERRORGOTO 1640 : GOSUB 1920 : IF F%=0% THEN 970 ELSE 820 1000 RETURN 1010 REM ****** AVSLUTA REG ********** 1020 CLOSE 1 : END 1030 REM *** TAG BORT REGISTRERING **** 1040 GOSUB 1280 1050 IF INSTR(1%,I$,']') OR INSTR(1%,I$,'}') THEN RETURN 1060 E%=4% : ONERRORGOTO 1640 : D%=VAL(I$) : IF D%>50% OR D%<1% THEN 1040 1070 E%=1% : ONERRORGOTO 1640 : Z%=CALL(28666%,1%)+CALL(28668%,(D%-1%)*13%) : IF ASC(Q0$)=64% THEN E%=3% : GOTO 1640 1080 FOR X%=(D%-1%)*13% TO ((D%-1%)*13%)+12% 1090 Z%=CALL(28666%,1%) : Q0$=STRING$(253%,64%) : Z=CALL(28670%,X%) 1100 NEXT X% 1110 RETURN 1120 REM ****** S\K FILNAMN *********** 1130 GOSUB 1550 : ; CUR(21%,0%)' Filnamn.xxx...............?'; : INPUTLINE I$ : I$=LEFT$(I$,LEN(I$)-2%) 1140 IF I$='' THEN 1130 1150 IF INSTR(1%,I$,']') OR INSTR(1%,I$,'}') THEN RETURN 1160 GOSUB 2110 : REM FIXA I$ 1170 X%=D%+1% : IF X%=51% THEN X%=1% 1180 FOR Y%=X% TO X%+49% 1190 D%=Y% : IF Y%>50% THEN D%=Y%-50% 1200 GOSUB 1260 1210 GOSUB 1920 : REM L[S SKIVA 1220 FOR I%=0% TO F%-1% : F$=F$(I%) : IF F$=I$ THEN GOTO 800 ELSE NEXT I% 1230 NEXT Y% 1240 E%=5% : GOTO 1640 1250 I$=CHR$(ASC(RIGHT$(I$,1%)) AND 223%) : RETURN 1260 REM ****** SKIVNUMMER *********** 1270 ; CUR(0%,0%)'Skiva nr:'D%' Volym:';V$ : RETURN 1280 REM ** TAG IN SKIVNUMMER ** 1290 GOSUB 1550 : GOSUB 1500 : INPUT I$ 1300 RETURN 1310 REM **** INSTRUKTIONER **** 1320 ; CHR$(12%)'DISKETTREGISTER' 1330 ; '(c) Rolf Nordin' 1340 ; : ; 'Registerskivan skall sitta i DR0:' 1350 ; 'Skiva som skall registreras s{tts i DR1:' 1360 ; 'Kommandon:' 1370 ; 'Registrera skiva............R' 1380 ; 'Visa en reg. skiva..........V' 1390 ; 'Bl{ddra i registret.........B' 1400 ; 'S|k efter filnamn...........S' 1410 ; 'Instruktioner...............I' 1420 ; ']ngra.......................]' 1430 ; 'Tag bort registrering.......T' 1440 ; 'Avsluta programmet..........A' 1450 ; : ; 'Tryck >RETURN< n{r du har l{st klart' 1460 GET I$ : IF ASC(I$)=13% THEN ; CHR$(12%); : RETURN ELSE 1460 1470 REM *** KOMMANDOTEXT *** 1480 ; CUR(20%,0%)' Kommando (R/V/B/S/I/T/A/])'; 1490 RETURN 1500 REM *********************** 1510 ; CUR(21%,0%)' Skivans nummer............'; 1520 RETURN 1530 REM ** RADERA RADER ** 1540 ; CUR(20%,0%)SPACE$(80%); 1550 ; CUR(21%,0%)SPACE$(80%); 1560 RETURN 1570 REM *** RUBRIK OCH GRAFIK *** 1580 REM ; CUR(0%,0%)' * DISKETTREGISTER *' 1590 ; CUR(1%,0%)STRING$(80%,95%); 1600 ; CUR(19%,0%)STRING$(80%,95%); 1610 ; CUR(22%,0%)STRING$(80%,95%); 1620 RETURN 1630 ; CUR(23%,0%)SPACE$(79%); : RETURN 1640 REM *** FELMEDDELLANDEN *** 1650 IF ERRCODE=37% THEN E%=6% : OPEN "SKIVOR.TST" ASFILE 1% 1660 IF ERRCODE=43% THEN E%=7% : OPEN "SKIVOR.TST" ASFILE 1% 1670 ON E% RESTORE 1700,1710,1720,1730,1740,1750,1760 1680 READ E$ : ; CUR(23%,1%)CHR$(7%)E$; 1690 RETURN 1700 DATA 'SKIVAN EJ KLAR!!!' 1710 DATA 'REGISTERSKIVAN SAKNAS!!!' 1720 DATA 'FINNS EJ I REGISTRET!!!' 1730 DATA 'FELAKTIGT SKIVNUMMER!!!' 1740 DATA 'FILNAMNET FINNS EJ!!!' 1750 DATA 'L[SFEL P] SKIVAN!!!' 1760 DATA 'SKIVAN [R SKRIVSKYDDAD!!!' 1761 REM 1770 REM *** Skriva Titlar *** 1771 REM 1780 REM D%=Skivnummer 1790 REM F$(F%)=Titlar 1791 REM V$=Volum-Name 1792 REM 1800 A$="" 1805 A$=V$ : REM Volume name till posten 1810 IF F%=0% THEN RETURN 1820 FOR X%=0% TO F%-1% 1830 A$=A$+LEFT$(F$(X%),8%)+RIGHT$(F$(X%),10%) 1840 NEXT X% 1850 A$=A$+STRING$(3289%-LEN(A$),64%) 1860 FOR X%=(D%-1%)*13% TO ((D%-1%)*13%)+12% 1870 Z%=CALL(28666%,1%) 1880 Q0$=LEFT$(A$,253%) : A$=RIGHT$(A$,254%) 1890 Z%=CALL(28670%,X%) 1900 NEXT X% 1910 RETURN 1915 REM 1920 REM *** L{s Titlar *** 1925 REM 1930 REM IN D%=Skivnummer 1940 REM UT F$(F%)=Titlar 1945 REM V$=Volume Name 1946 REM 1950 A$="" : V$="" 1960 FOR X%=(D%-1%)*13% TO ((D%-1%)*13%)+12% 1970 Z%=CALL(28666%,1%)+CALL(28668,X%) 1980 A$=A$+Q0$ 1990 IF ASC(RIGHT$(A$,LEN(A$)-2%))=64% THEN 2010 2000 NEXT X% 2010 REM Plocka ut Volume name 2020 V$=LEFT$(A$,33%) : A$=RIGHT$(A$,34%) 2030 REM Plocka ut Filnamnen 2040 FOR F%=0% TO 255% 2050 IF ASC(A$)=64% THEN RETURN : REM Testa om slut p} datat 2060 F$(F%)=LEFT$(A$,8%)+"."+MID$(A$,9%,3%) 2070 A$=RIGHT$(A$,12%) 2080 NEXT F% 2090 REM **** FIXA I$ **** 2100 RETURN 2110 FOR M%=1% TO LEN(I$) 2120 IF MID$(I$,M%,1%)="." THEN 2140 2130 NEXT M% 2140 I$=LEFT$(I$,M%-1%)+SPACE$(9%-M%)+RIGHT$(I$,M%) 2150 IF NOT MID$(I$,LEN(I$)-3%,1%)="." THEN I$=I$+".BAC" 2160 RETURN