1 REM +++++++++++++++++++++++++++++++++ 2 REM ! Program .... DISKREG 3 REM ! Utg}va 2.0 83-01-03 4 REM ! av (c) Rolf Nordin 5 REM ! {ndrat av Mats Larsson 6 REM ! Minne 16 Kbytes f|r flexskiva 7 REM ! Ins{nt av Mats Larsson 8 REM +++++++++++++++++++++++++++++++++ 9 REM 10 REM Screened by C R LERIN. 11 REM 12 REM Detta {r en b{ttre version av 13 REM DISKREG som anv{nder sig av en 14 REM direktfil.Detta g|r att det g}r 15 REM mycket fortare att s|ka bland 16 REM skivorna. 17 REM Innan du b|rjar l{gga upp skivor 18 REM i registert ska du skapa en fil 19 REM med namnet SKIVOR.DAT som skall 20 REM vara 100 block + header.Hur du 21 REM g|r det se bruksanvisning ABC80. 22 REM ++++++++++++++++++++++++++++++++ 23 REM ** DIV INIT ** 24 ONERRORGOTO 25 : OPEN "SKIVOR.DAT" ASFILE 1 : GOTO 26 25 ; CHR$(12)"INGEN DATAFIL FINNS!!!" : END 26 K$='RVBIATS' : DIM F$(91%)=12%,A$=1012% 27 REM ** HUVUDPROGRAMM ** 28 GOSUB 100 29 GOSUB 126 : GOSUB 122 : GOSUB 116 : INPUT I$ : GOSUB 94 30 GOSUB 132 : I%=INSTR(1%,K$,I$) : IF I%=0% THEN 29 31 ON I% GOSUB 32,52,64,100,70,72,81 : GOTO 29 32 REM ******** REGA SKIVA ********* 33 GOSUB 97 34 IF INSTR(1%,I$,']') OR INSTR(1%,I$,'}') THEN RETURN 35 E%=4% : ONERRORGOTO 133 : D%=VAL(I$) : IF D%>25% OR D%<1% THEN 33 36 POKE 64769%,1% : Z%=CALL(24678%,192%) 37 IF PEEK(64789%) THEN E%=1% : GOTO 133 38 F%=0% : FOR I%=0% TO 7% : B%(I%)=PEEK(62959%+I%) : NEXT I% 39 FOR S%=0% TO 7% : IF B%(S%)<2% THEN 48 40 Z%=CALL(24678%,512%+S%*32%) 41 FOR A%=62736% TO 62960% STEP 16% 42 IF PEEK(A%)=255% THEN 47 43 F$(F%)='' : FOR I%=4% TO 11% : F$(F%)=F$(F%)+CHR$(PEEK(A%+I%)) : NEXT I% 44 F$(F%)=F$(F%)+'.' 45 FOR I%=12% TO 14% : F$(F%)=F$(F%)+CHR$(PEEK(A%+I%)) : NEXT I% 46 F%=F%+1% 47 NEXT A% 48 NEXT S% 49 E%=2% : ONERRORGOTO 133 50 GOSUB 146 51 GOTO 56 52 REM ******* L[S I REGISTER ****** 53 GOSUB 97 54 IF INSTR(1%,I$,']') OR INSTR(1%,I$,'}') THEN RETURN 55 E%=4% : ONERRORGOTO 133 : D%=VAL(I$) : IF D%>25% OR D%<1% THEN 53 56 E%=3% : ONERRORGOTO 133 : GOSUB 161 57 IF F%=0% THEN 133 58 ; CHR$(12%) : GOSUB 126 59 GOSUB 95 : ; CUR(2%,0%); : T%=0% : IF F%=0% THEN RETURN ELSE FOR I%=0% TO F%-1% 60 F$=F$(I%) 61 ; #L%,TAB(T%)F$; : T%=T%+14% : IF T%=42% T%=0% 62 NEXT I% 63 RETURN 64 REM ****** BL[DDRA REG ********** 65 M%=D% : IF M%=0% THEN M%=25% 66 D%=D%+1% : IF D%=26% D%=1% 67 IF D%=M% RETURN 68 ONERRORGOTO 133 : GOSUB 161 : IF F%=0% THEN 66 ELSE 58 69 RETURN 70 REM ****** AVSLUTA REG ********** 71 CLOSE 1 : END 72 REM *** TAG BORT REGISTRERING **** 73 GOSUB 97 74 IF INSTR(1%,I$,']') OR INSTR(1%,I$,'}') THEN RETURN 75 E%=4% : ONERRORGOTO 133 : D%=VAL(I$) : IF D%>25% OR D%<1% THEN 73 76 E%=1% : ONERRORGOTO 133 : Z%=CALL(28666%,1%)+CALL(28668%,(D%-1%)*4%) : IF ASC(Q0$)=64% THEN E%=3% : GOTO 133 77 FOR X%=(D%-1%)*4% TO ((D%-1%)*4%)+3% 78 Z%=CALL(28666%,1%) : Q0$=STRING$(253%,64%) : Z=CALL(28670%,X%) 79 NEXT X% 80 RETURN 81 REM ****** S\K FILNAMN *********** 82 GOSUB 124 : ; CUR(21%,0%)' Filnamn.xxx...............?'; : INPUTLINE I$ : I$=LEFT$(I$,LEN(I$)-2%) 83 IF I$='' THEN 82 84 IF INSTR(1%,I$,']') OR INSTR(1%,I$,'}') THEN RETURN 85 GOSUB 177 : REM FIXA I$ 86 X%=D%+1% : IF X%=26% THEN X%=1% 87 FOR Y%=X% TO X%+24% 88 D%=Y% : IF Y%>25% THEN D%=Y%-25% 89 GOSUB 95 90 GOSUB 161 : REM L[S SKIVA 91 FOR I%=0% TO F%-1% : F$=F$(I%) : IF F$=I$ THEN GOTO 56 ELSE NEXT I% 92 NEXT Y% 93 E%=5% : GOTO 133 94 I$=CHR$(ASC(RIGHT$(I$,1%)) AND 223%) : RETURN 95 REM ****** SKIVNUMMER *********** 96 ; CUR(0%,25%)'Skiva nr:'D%' '; : RETURN 97 REM ** TAG IN SKIVNUMMER ** 98 GOSUB 124 : GOSUB 119 : INPUT I$ 99 RETURN 100 REM **** INSTRUKTIONER **** 101 ; CHR$(12%)'DISKETTREGISTER' 102 ; '(c) Rolf Nordin' 103 ; : ; 'Registerskivan skall sitta i DR0:' 104 ; 'Skiva som skall registreras s{tts i DR1:' 105 ; 'Kommandon:' 106 ; 'Registrera skiva............R' 107 ; 'Visa en reg. skiva..........V' 108 ; 'Bl{ddra i registret.........B' 109 ; 'S|k efter filnamn...........S' 110 ; 'Instruktioner...............I' 111 ; ']ngra.......................]' 112 ; 'Tag bort registrering.......T' 113 ; 'Avsluta programmet..........A' 114 ; : ; 'Tryck >RETURN< n{r du har l{st klart' 115 GET I$ : IF ASC(I$)=13% THEN ; CHR$(12%); : RETURN ELSE 115 116 REM *** KOMMANDOTEXT *** 117 ; CUR(20%,0%)' Kommando (R/V/B/S/I/T/A/])'; 118 RETURN 119 REM *********************** 120 ; CUR(21%,0%)' Skivans nummer............'; 121 RETURN 122 REM ** RADERA RADER ** 123 ; CUR(20%,0%)SPACE$(40%); 124 ; CUR(21%,0%)SPACE$(40%); 125 RETURN 126 REM *** RUBRIK OCH GRAFIK *** 127 ; CUR(0%,0%)' * DISKETTREGISTER *' 128 ; CUR(1%,0%)CHR$(151%)STRING$(39%,44%); 129 ; CUR(19%,0%)CHR$(151%)STRING$(39%,44%); 130 ; CUR(22%,0%)CHR$(151%)STRING$(39%,44%); 131 RETURN 132 ; CUR(23%,0%)SPACE$(39%); : RETURN 133 REM *** FELMEDDELLANDEN *** 134 IF ERRCODE=37% THEN E%=6% : OPEN "SKIVOR.DAT" ASFILE 1% 135 IF ERRCODE=43% THEN E%=7% : OPEN "SKIVOR.DAT" ASFILE 1% 136 ON E% RESTORE 139,140,141,142,143,144,145 137 READ E$ : ; CUR(23%,1%)CHR$(7%)E$; 138 RETURN 139 DATA 'SKIVAN EJ KLAR!!!' 140 DATA 'REGISTERSKIVAN SAKNAS!!!' 141 DATA 'FINNS EJ I REGISTRET!!!' 142 DATA 'FELAKTIGT SKIVNUMMER!!!' 143 DATA 'FILNAMNET FINNS EJ!!!' 144 DATA 'L[SFEL P] SKIVAN!!!' 145 DATA 'SKIVAN [R SKRIVSKYDDAD!!!' 146 REM *** SKRIVA TITTLAR *** 147 REM D%=SKIVNUMMER 148 REM F$(F%)=TITTLAR 149 A$="" 150 IF F%=0 THEN RETURN 151 FOR X%=0% TO F%-1% 152 A$=A$+LEFT$(F$(X%),8%)+RIGHT$(F$(X%),10%) 153 NEXT X% 154 A$=A$+STRING$(1012%-LEN(A$),64%) 155 FOR X%=(D%-1%)*4% TO ((D%-1%)*4%)+3% 156 Z%=CALL(28666%,1%) 157 Q0$=LEFT$(A$,253%) : A$=RIGHT$(A$,254%) 158 Z%=CALL(28670%,X%) 159 NEXT X% 160 RETURN 161 REM *** L[S TITTLAR *** 162 REM IN D%=SKIVNUMMER 163 REM UT F$(F%)=TITTLAR 164 A$="" 165 FOR X%=(D%-1%)*4% TO ((D%-1%)*4%)+3% 166 Z%=CALL(28666%,1%)+CALL(28668,X%) 167 A$=A$+Q0$ 168 IF ASC(RIGHT$(A$,LEN(A$)-2%))=64% THEN 170 169 NEXT X% 170 FOR F%=0% TO 91% 171 IF ASC(A$)=64% THEN RETURN 172 F$(F%)=LEFT$(A$,8%)+"."+MID$(A$,9%,3%) 173 A$=RIGHT$(A$,12%) 174 NEXT F% 175 REM **** FIXA I$ **** 176 RETURN 177 FOR M%=1% TO LEN(I$) 178 IF MID$(I$,M%,1%)="." THEN 180 179 NEXT M% 180 I$=LEFT$(I$,M%-1%)+SPACE$(9%-M%)+RIGHT$(I$,M%) 181 IF NOT MID$(I$,LEN(I$)-3%,1%)="." THEN I$=I$+".BAC" 182 RETURN