96 DATA 8)0,"'#%",ws$,'-,!',6#$,'),!',7#4,'-,!',ws!,'-,$' 100 REM ******************************* 101 REM * DIDINFO .BAC * 102 REM * VER 1.1 / 1983-01-01 * 103 REM * Gjort av Nils H{ggblom * 104 REM * Mod. av Nils H{ggblom * 105 REM * Ins{nt av Nils H{ggblom * 106 REM ******************************* 107 REM 108 DIM A%(0%),X$(23%)=0%,F$(29%)=12% 109 N1%=25% 110 DIM B$=120%,N%(29%),S$(4%)=N1%,S0%(4%),S1%(4%),F0%(4%) 111 DEFFNM0%(X%,Y%)=X%-X%/Y%*Y% 112 DEFFNP2%(X%)=PEEK(X%)+SWAP%(PEEK(X%+1%)) 113 A%=FNP2%(65065%)+2% 114 POKE A%+2%,116%,3%,23%,0% 115 A%=FNP2%(FNP2%(A%)+4%) 116 FOR X%=0% TO 23% 117 POKE A%+X%*6%,40%,0%,A%(X%),SWAP%(A%(X%)),40%,0% 118 NEXT X% 119 POKE 65507%,70%,175%,176%,200%,26%,254%,127%,48%,7%,254%,96%,56%,3%,230%,95%,18%,19%,16%,241%,201% 120 H$=CHR$(12%)+CUR(0%,12%)+'Bearbeta filer'+CUR(1%,11%)+CHR$(151%)+'##############'+CHR$(13%,10%) 121 GOTO 133 122 REM Instruktioner 123 ; H$'Med det h{r programmet kan du sortera best{mda DID-filer till en stor ut-' 124 ; 'fil eller flera sm} utfiler. Filerna sorteras i bokstavs- eller felfrekvens- ordning.' 125 ; : ; 'Du f}r best{mma det h|gsta antal poster utfilerna f}r ha. Om en fil inneh}ller' 126 ; 'mera {n 100 poster f}r den extensionen DIM ist{llet f|r DID. DIM-filer kan inte'; 127 ; 'editeras, sorteras eller f|rh|ras. Av-' 128 ; 'sluta filnamnet med (.) ist{llet f|r (RETURN) f|r DIM-extension.' 129 ; : ; 'Du kan ocks} best{lla en diagnos |ver valbara filer f|r att kolla hur bra du' 130 ; 'l{rt dig och f|r att se vad som beh|ver repeteras.' 131 ; : ; 'Infilerna skall var p} en skiva s} som ocks} utfilerna.' 132 GOSUB 226 133 REM Menu 134 FOR X%=0% TO 29% : F$(X%)='' 135 IF X%>4% 137 136 S1%(X%)=0% : S0%(X%)=0% : F0%(X%)=0% 137 NEXT X% 138 N%=0% 139 ; H$ : ; 140 ; ' 1 Sortera i bokstavordning' 141 ; ' 2 Sortera i felfrekvensordning' 142 ; ' 3 Foga samman filer' 143 ; ' 4 Lista flera filer' 144 ; ' 5 S|k ord i filer' 145 ; ' 6 Plocka ut sv}ra ord ur filer' 146 ; ' 7 G|r upp diagnos' 147 ; ' 8 Lista rubrikinstruktioner' 148 ; ' 9 Instruktioner' 149 ; ' $ Slut' 150 ; : ; : ; ' V{lj (?)'CHR$(8%,8%); 151 GET A$ 152 IF A$<' ' A$=' ' 153 ; A$CHR$(8%); : POKE 65420%,ASC(A$)-48% 154 IF A$>'0' AND A$<'9' GOSUB 194 : IF N%=0% 133 155 ON INSTR(1%,'$123456789',A$)+1% GOTO 151,156,164,164,165,252,272,165,165,240,122 156 GOSUB 158 157 ; CUR(0%,0%) : CHAIN A$+'Didactos' 158 ONERRORGOTO 162 159 OPEN 'Didactos.bac' ASFILE 1% 160 CLOSE 1% 161 A$='Dr'+NUM$(PEEK(64769%))+':' : RETURN 162 ; CUR(23%,0%)TAB(38%)CHR$(13%)'S{tt Didactos i floppyn :'; : GET A$ 163 ; ''; : GOTO 158 164 GOSUB 263 : GOSUB 158 : CHAIN A$+'Did Merge' 165 GOSUB 263 : GOSUB 158 166 CHAIN A$+'Did Slice' 167 REM Fel p} skivan 168 IF ERRCODE<>41% 271 169 GOSUB 181 170 ; CUR(23%,0%)TAB(38%)CUR(23%,0%)'Skivan full.'; 171 GOTO 156 172 REM Bearbeta X$ i avseende p} ?? 173 S0%(Z%)=0% : S1%(Z%)=0% 174 IF ASC(X$)=63% S0%(Z%)=S0%(Z%)+1% : X$=RIGHT$(X$,2%) : GOTO 174 175 IF X$='' 178 176 Y%=LEN(X$) 177 IF ASC(RIGHT$(X$,Y%))=63% S1%(Z%)=S1%(Z%)+1% : Y%=Y%-1% : X$=LEFT$(X$,Y%) : GOTO 177 178 POKE 65488%,88% 179 Y%=CALL(65470%) 180 RETURN 181 REM St{ng filer 182 FOR X%=1% TO 5% 183 CLOSE X% 184 NEXT X% 185 RETURN 186 REM Begr{nsad inmatning 187 X$='' 188 X%=LEN(X$) : GET Y$ : Y%=ASC(Y$) : IF Y%=13% IF X%<>0% OR L%=N1% RETURN ELSE 188 189 IF X%=L% AND Y%<>8% 188 190 IF Y%=8% IF X% X$=LEFT$(X$,X%-1%) : ; CHR$(8%,32%,8%); 191 IF Y%<32% OR Y%>127% 188 192 ; Y$; : X$=X$+Y$ 193 GOTO 188 194 ; CUR(22%,0%)'S{tt infilerna i DR0: '; 195 IF A$='8' GOSUB 226 : GOTO 200 196 ; : IF A$='5' ; 'och utfilskivan i DR1:. '; ELSE ; 'och Didactos i DR1:. '; 197 IF A$='5' X%=19% ELSE X%=3% 198 GOSUB 226 : ; CUR(22%,0%)SPACE$(40%); : IF CALL(65424%,1%)>X% 200 199 ; CUR(23%,0%)'Det finns inte rum i DR1:. '; : GOSUB 226 : GOTO 133 200 ; CHR$(12%); : POKE 65011%,255% : OPEN 'C:0' ASFILE 1% 201 CLOSE 1% 202 ; CUR(22%,0%)'Kommandon: (->),(RETURN),($)'; 203 N%=0% 204 REM Filen med? 205 R%=0% : X%=0% : Z%=0% 206 K%=X% 207 X%=INSTR(K%+1%,X$(R%),'.DID') 208 \%=INSTR(K%+1%,X$(R%),'.DIM') 209 IF \% AND (\%127%)+2% GOTO 217,218 217 GOSUB 231 : GOSUB 235 : F$(W%)='' : N%=N%-1% : GOTO 206 218 Z$='' : GOSUB 236 219 IF W%=65535% ; CUR(23%,0%)CHR$(7%)'Jag kan behandla h|gst 30 filer.'; : GOSUB 226 : GOTO 206 220 GOSUB 239 : F$(W%)=Z$ : GOSUB 231 : N%=N%+1% : GOTO 206 221 REM Ja/Nej 222 GET Y$ 223 Y%=INSTR(1%,' JjNn',Y$)/2% 224 IF Y% IF Y%=1% ; 'Ja'; ELSE ; 'Nej'; ELSE 222 225 RETURN 226 ; ':'; : GET Y$ 227 ; CUR(23%,0%)SPACE$(39%); : RETURN 228 GOSUB 227 229 ; CUR(22%,0%)'Det finns inga .DID- eller DIM-filer.' 230 GOSUB 226 : RETURN 231 FOR Y%=A%(R%)+X%-9% TO A%(R%)+X%-2% 232 POKE Y%,PEEK(Y%) XOR 128% 233 NEXT Y% 234 RETURN 235 GOSUB 239 236 FOR W%=0% TO 29% 237 IF F$(W%)=Z$ RETURN ELSE NEXT W% 238 W%=65535% : RETURN 239 Z$=MID$(X$(R%),X%-8%,12%) : RETURN 240 REM Lista rubrikinstruktioner 241 ; CHR$(12%)TAB(8%)'Lista rubrikinstruktioner' : ; TAB(7%)CHR$(151%)'#########################' 242 ; CUR(5%,0%)'Rubrikinstruktion f|r :' 243 FOR W%=0% TO 29% 244 IF F$(W%)='' 250 245 OPEN F$(W%) ASFILE 1% 246 INPUTLINE #1%,B$ : CLOSE 1% 247 IF W% GOSUB 226 248 ; CUR(5%,22%)SPACE$(8%)CUR(5%,22%)F$(W%) 249 ; SPACE$(400%)CUR(8%,0%)B$ 250 NEXT W% : GOSUB 226 251 GOTO 133 252 REM Hur m}nga kopior? 253 ; CHR$(12%),'Lista filer' : ; ,CHR$(8%,151%)'###########' 254 FOR W%=0% TO 29% 255 IF F$(W%)='' 259 256 ; CUR(5%,0%)SPACE$(40%)CUR(5%,0%)'Antal kopior av 'F$(W%)TAB(24%)': '; 257 L%=2% : GOSUB 186 : ONERRORGOTO 256 258 N%(W%)=VAL(X$) 259 NEXT W% 260 GOSUB 263 261 POKE 65423%,18% 262 GOSUB 158 : CHAIN A$+'Did Print' 263 ONERRORGOTO 271 264 PREPARE 'Dr 1: Dumpfil' ASFILE 1% 265 FOR W%=0% TO 29% 266 IF F$(W%)='' 268 267 ; #1%F$(W%)CHR$(13%)N%(W%) 268 NEXT W% 269 CLOSE 1% 270 RETURN 271 ; CHR$(12%)'Felet'ERRCODE' uppstod.' : ; : END 272 REM S|k ordfraktioner 273 RESTORE 274 ; CHR$(12%),'S|k ord' : ; ,CHR$(8%,151%)'#######' 275 FOR X%=3% TO 7% 276 ; CUR(X%,0%)'S|k 'CHR$(62%+X%)' :'SPACE$(N1%)'$ ( )' 277 NEXT X% 278 FOR X%=9% TO 18% 279 READ Y$ 280 ; CUR(X%,0%)'F{lt'(1% XOR X% AND 1%)+1%':'SPACE$(N1%)'$ 'CHR$(23%)Y$ 281 NEXT X% 282 ; CUR(20%,0%)'Kommandon : (RETURN),($)' : ; 'Ok{nd bokstav: (?)' 283 L%=N1% : FOR Z%=0% TO 4% 284 ; CUR(Z%+3%,7%)SPACE$(N1%)CUR(Z%+3%,7%); : GOSUB 186 285 IF X$='' IF Z% 291 ELSE 284 286 IF X$='$' 133 287 GOSUB 172 288 IF X$='' 284 289 S$(Z%)=X$ 290 NEXT Z% 291 ; CUR(20%,0%)SPACE$(80%) 292 ; 'S|k i f{lt 1 och 2? '; : GOSUB 221 293 IF Y%=1% K%=0% : K1%=1% : GOTO 296 294 ; CUR(23%,0%)SPACE$(30%)CUR(23%,0%)'S|k i f{lt 1? '; : GOSUB 221 295 K%=Y%-1% : K1%=K% 296 FOR F%=0% TO 29% 297 IF F$(F%)='' 350 298 OPEN 'Dr 0:'+F$(F%) ASFILE 9% 299 ; CUR(21%,0%)'Nuvarande infil : 'F$(F%)' ' 300 INPUT #9%,B$ 301 ONERRORGOTO 350 302 INPUTLINE #9%,X$ 303 INPUT #9%,\1%,\2% 304 X$=LEFT$(X$,LEN(X$)-2%) 305 POKE 65488%,66% 306 X1%=Z%-1% : FOR Z%=0% TO X1% 307 FOR J%=K% TO K1% 308 B$=MID$(X$,J%*N1%+1%,N1%) 309 X%=CALL(65470%) 310 A1%=S0%(Z%) 311 A%=A1% : W%=0% : V%=0% 312 A0%=A% 313 Y0%=INSTR(1%,S$(Z%),'?') 314 IF Y0%=0% W%=1% : Y0%=LEN(S$(Z%))+1% 315 A0%=INSTR(A0%+1%,B$,LEFT$(S$(Z%),Y0%-1%)) 316 IF A0%=0% IF V% 311 ELSE 325 317 IF V%=0% A1%=A0% 318 IF W% 328 319 A0%=A0%+Y0%-1% : V%=1% : X%=LEN(S$(Z%)) 320 IF X%24% 325 322 E%=ASC(RIGHT$(S$(Z%),Y0%)) : Y0%=Y0%+1% : A0%=A0%+1% : IF E%=63% 320 323 IF E%<>ASC(RIGHT$(B$,A0%-1%)) 311 324 GOTO 320 325 REM Matchar inte ! 326 NEXT J% 327 GOTO 348 328 IF S1%(Z%)+A1%+LEN(S$(Z%))>N1%+1% 325 329 REM Matchar ! 330 Y%=Z%*2%+J%+9% 331 FOR X%=0% TO 1% 332 ; CUR(X%+9%+Z%*2%,7%)MID$(X$,X%*N1%+1%,N1%)TAB(7%+N1%) 333 NEXT X% 334 FOR X%=A1% TO A1%+LEN(S$(Z%))-1% 335 IF ASC(RIGHT$(S$(Z%),X%-A1%+1%))=63% 337 336 POKE A%(Y%)+6%+X%,PEEK(A%(Y%)+6%+X%) OR 128% 337 NEXT X% 338 REM Skriv p} filen 339 ONERRORGOTO 167 340 IF FNM0%(F0%(Z%),100%) 345 341 CLOSE Z%+1% 342 PREPARE 'Dr 1: S|k'+NUM$(F0%(Z%)/100%+1%)+CHR$(Z%+65%)+'.did' ASFILE Z%+1% 343 ; #Z%+1%'Detta {r en av DIDACTOS skapad utfil. Filens alla f{lt har s|kts med nyckeln '; 344 ; #Z%+1%STRING$(S0%(Z%),63%)S$(Z%)STRING$(S1%(Z%),63%) 345 ; #Z%+1%X$CHR$(13%)\1%CHR$(13%)\2% 346 F0%(Z%)=F0%(Z%)+1% 347 ; CUR(Z%+3%,35%)TAB(39%-LEN(NUM$(F0%(Z%))))F0%(Z%) 348 NEXT Z% 349 GOTO 301 350 NEXT F% 351 GOSUB 181 352 GOTO 133