1 REM ******************************* 2 REM * DIDACTOS.BAC * 3 REM * VER 3.2 / 1983-02-13 * 4 REM * Gjort av Nils H{ggblom * 5 REM * Mod. av Nils H{ggblom * 6 REM * Ins{nt av Nils H{ggblom * 7 REM ******************************* 8 REM 9 DIM A%(0%),X$(23%)=0% 10 DEFFNP2%(X%)=PEEK(X%)+SWAP%(PEEK(X%+1%)) 11 A%=FNP2%(65065%)+2% 12 POKE A%+2%,116%,3%,23%,0% 13 A%=FNP2%(FNP2%(A%)+4%) 14 FOR X%=0% TO 23% 15 POKE A%+X%*6%,40%,0%,A%(X%),SWAP%(A%(X%)),40%,0% 16 NEXT X% 17 POKE 65424%,123%,50%,1%,253%,17%,192%,0%,205%,102%,96%,58%,21%,253%,167%,33%,0%,0% 18 POKE 65441%,192%,17%,0%,245%,6%,0%,26%,238%,255%,79%,175%,203%,57%,40%,3%,136%,24%,249%,136% 19 POKE 65460%,79%,9%,123%,254%,160%,200%,28%,24%,234% 20 POKE 65470%,33%,41%,254%,94%,35%,86%,122%,179%,200%,235%,229%,62%,242%,190%,32%,4%,35%,62%,90%,190%,225%,40% 21 POKE 65492%,6%,1%,2%,0%,9%,24%,230%,1%,6%,0%,9%,94%,35%,86%,35%,229%,110%,38%,0%,25%,62%,32%,6%,255%,4%,43% 22 POKE 65518%,190%,40%,251%,225%,126%,144%,48%,1%,175%,119%,201% 23 N0%=100% : N1%=25% : REM Max. poster,f{ltl{ngd 24 DIM A$=1%,Y$=1%,C$=8%,X$=14%,B$=253%,Q0$=253%,E0$=4% 25 POKE 65423%,0% : ONERRORGOTO 28 26 OPEN 'C:X' ASFILE 1% : CLOSE 1% 27 GOTO 42 28 ONERRORGOTO 29 : GOTO 35 29 ; CHR$(12%)STRING$(40%,127%) : ; 'Du m}ste ha k|rt program CKOLON f|r att kunna anv{nda DIDACTOS.' 30 ; : ; STRING$(40%,127%) 31 ; : ; 'Tryck ned (RETURN) n{r skivan med programmet {r i floppyn !' 32 ; : ; : ; ':'; : GET X$ 33 IF X$='$' ; 'Slut' : GOTO 186 34 ONERRORGOTO 39 35 OPEN 'C Kolon.bac' ASFILE 1% 36 X$='' : GOSUB 127 37 POKE 65408%,68%,73%,68%,65%,67%,84%,79%,83%,46%,66%,65%,67% 38 CHAIN 'Dr'+NUM$(PEEK(64769%))+': C Kolon' 39 ; CHR$(7%)'Skivan {r inte i floppyn !' 40 ; : ; ':'; : GET X$ 41 GOTO 29 42 REM Menu 43 N%=0% : M%=0% 44 ; CHR$(12%); 45 ; TAB(8%)'DIDACTOS'TAB(33%)'Ver 3.2'; 46 ; TAB(7%)CHR$(151%)'########' 47 ; ' 1 Skapa ny fil' 48 ; ' 2 Editera fil' 49 ; ' 3 F|rh|r fil' 50 ; ' 4 Lista filnamn' 51 ; ' 5 Radera fil' 52 ; ' 6 D|p om fil' 53 ; ' 7 Sortera fil' 54 ; ' 8 Slumpsortera fil' 55 ; ' 9 Felfrekvenssortera fil' 56 ; ' 0 Nollst{ll felfrekvens' 57 ; ' ! Utskrift av fil' 58 ; ' " Bearbeta filer' 59 ; ' / Flytta fil' 60 ; ' & Kopiera fil' 61 ; ' = S{kerhetskopiera filer' 62 ; '  Formatera skiva' 63 ; ' $ Slut' 64 ; : ; TAB(8%)'V{lj (?)'CHR$(8%,8%); 65 GET A$ : POKE 65420%,ASC(A$)-48% 66 IF A$<' ' A$=' ' 67 ; A$CHR$(8%); 68 ON INSTR(1%,'$1234567890!"&/=',A$)+1% GOTO 65,186,155,155,72,128,77,85,73,73,73,71,74,75,161,161,76,69 69 POKE 65052%,0%,197% 70 CHAIN 'Di Dosgen' 71 CHAIN 'Did Edit' 72 CHAIN 'Did Quiz' 73 CHAIN 'Did Sort' 74 CHAIN 'Did Print' 75 CHAIN 'Did Info' 76 CHAIN 'Did Copy' 77 REM Radera fil 78 ; CHR$(12%),'Radera fil' : ; ,CHR$(8%,151%)'##########' 79 ; CUR(20%,0%)'Slut: ($)' 80 Z%=0% 81 GOTO 93 82 KILL D0$+X$+E0$ 83 POKE 65408%,255% 84 GOTO 42 85 REM D|p om fil 86 ; CHR$(12%),'D|p om fil' : ; ,CHR$(8%,151%)'##########' 87 ; CUR(20%,0%)'Slut: ($)' 88 FOR Z%=0% TO 1% : GOTO 93 89 IF Z%=0% ; CUR(11%,0%)'d|ps till' : C$=X$ 90 NEXT Z% 91 NAME D0$+C$+E0$ AS D0$+X$+E0$ 92 GOTO 42 93 REM Input filnamn 94 ; CUR(9%+4%*Z%,0%)SPACE$(40%)CUR(9%+4%*Z%,0%)'Filnamn : $'STRING$(9%,8%); : L%=8% : GOSUB 98 95 IF X$='$' 42 96 GOSUB 118 97 IF Z%<>X% ON INSTR(1%,'56&/',A$) GOTO 82,89,167,167 ELSE 94 98 REM Begr{nsad inmatning 99 X$='' : IF Z%=0% E0$='.DID' 100 X%=LEN(X$) : GET Y$ : Y%=ASC(Y$) : IF Y$='$' ; '$' : X$='$' : RETURN 101 IF Y%=46% AND (Z%=0% OR E0$='.DIM') E0$='.DIM' : Y%=13% 102 IF Y%=13% IF X%<>0% 114 ELSE 108 103 IF X%=L% AND Y%<>8% 100 104 IF Y%=8% IF X% X$=LEFT$(X$,X%-1%) : ; CHR$(8%,32%,8%); 105 IF (Y%<65% OR Y%>93%) AND (Y%<97% OR Y%>125%) AND (Y%<48% OR Y%>57% OR X%=0%) 100 106 ; Y$; : X$=X$+Y$ 107 GOTO 100 108 FOR X%=65408% TO 65415% 109 Y%=PEEK(X%) : IF Y%=13% 113 110 IF Y%>47% AND Y%<58% 112 ELSE Y%=Y% AND 95% 111 IF Y%<65% OR Y%>93% 100 112 X$=X$+CHR$(Y%) : NEXT X% 113 ; X$SPACE$(8%-LEN(X$))E0$ : RETURN 114 FOR X%=1% TO LEN(X$) 115 POKE X%+65407%,ASC(RIGHT$(X$,X%)) 116 NEXT X% : POKE X%+65407%,13% 117 ; SPACE$(8%-LEN(X$))E0$; : RETURN 118 REM Existerar fil x$? 119 X%=0% 120 ONERRORGOTO 124 121 OPEN X$+E0$ ASFILE 1% : CLOSE 1% 122 X%=1% 123 D0$='Dr'+NUM$(PEEK(64769%))+':' 124 IF Z%=X% IF X% ; CUR(22%,0%)'Filen 'X$' finns.' ELSE ; CUR(22%,0%)'Filen 'X$' finns inte.' ELSE 126 125 ; ':'; : GET Y$ 126 ; CUR(21%,0%)SPACE$(119%); : RETURN 127 ; CHR$(12%)'Lista |ver program och filer'X$ : ; STRING$(38%,127%)CUR(0%,0%); : RETURN 128 REM Lista filer 129 F7%=0% : FOR X%=0% TO 1% : X$=' i drive'+NUM$(X%) 130 GOSUB 127 : ; CUR(23%,0%)'# => Skriv sk{rmen p} papper.'CUR(0%,0%) 131 OPEN 'C:'+NUM$(X%) ASFILE 1% : CLOSE 1% 132 ; : ; 'Extension = .DID => Didactos-fil' : ; STRING$(38%,127%) 133 ; : ; ':'; : GET Y$ 134 IF Y$<>'#' 153 ELSE ; 'Printerkopia'; 135 ONERRORGOTO 152 136 OPEN 'Pr:' ASFILE 6% : IF NOT F7% ; #6%CHR$(12%); : F7%=65535% 137 Q0$='' : I%=CALL(24678%,0%) 138 FOR I%=62855% TO 62975% 139 IF PEEK(I%)=13% AND PEEK(I%+1%)=10% 144 140 IF PEEK(I%)<32% OR PEEK(I%)>127% Q0$='' : GOTO 144 141 Q0$=Q0$+CHR$(PEEK(I%)) 142 NEXT I% 143 Q0$='' 144 ; #6% 145 IF LEN(Q0$)<2% 150 146 ; #6%' Volym:'; : Q0$=Q0$+SPACE$(120%-LEN(Q0$)) 147 FOR I%=0% TO 2% 148 ; #6%TAB(20%)MID$(Q0$,I%*40%+1%,40%) 149 NEXT I% 150 ; #6% : ; #6% : FOR Y%=0% TO 23% : ; #6%SPACE$(20%)X$(Y%) : NEXT Y% 151 GOTO 153 152 ; CUR(23%,0%)'Listfilen Pr: finns inte.'; : GET Y$ : F7%=0% 153 ONERRORGOTO 0 : NEXT X% : CLOSE 6% 154 GOTO 42 155 REM Finns det rum p} skivorna? 156 Y%=1% : FOR X%=0% TO 1% 157 IF CALL(65424%,X%)>19% Y%=0% ELSE NEXT X% 158 IF Y% 159 ELSE 71 159 ; CUR(22%,0%)'Det finns inte rum p} skivorna.' 160 GOSUB 125 : GOTO 42 161 REM Kopiera / Flytta fil 162 ; CHR$(12%), 163 IF A$='&' ; 'Kopiera fil' ELSE ; 'Flytta fil' 164 ; ,CHR$(8%,151%); 165 IF A$='&' ; '###########' ELSE ; '##########' 166 Z%=0% : GOTO 93 167 OPEN D0$+X$+E0$ ASFILE 1% 168 D0%=PEEK(64769%) 169 D0$='Dr'+NUM$(D0% XOR 1%)+':' 170 IF CALL(65424%,D0% XOR 1%)<20% 159 171 PREPARE D0$+X$+E0$ ASFILE 2% 172 ONERRORGOTO 180 : X%=0% 173 Z%=CALL(28666%,1%)+CALL(28668%,X%) 174 B$=Q0$ 175 Z%=CALL(28666%,2%) 176 Q0$=B$ 177 Z%=CALL(28670%,X%) 178 X%=X%+1% 179 GOTO 173 180 IF ERRCODE=41% GOSUB 185 : KILL D0$+X$+E0$ : GOTO 159 181 IF ERRCODE<>38% ; 'Fel'ERRCODE : STOP 182 GOSUB 185 183 IF A$='/' KILL 'Dr'+NUM$(D0%)+':'+X$+E0$ 184 GOTO 42 185 CLOSE 1% : CLOSE 2% : RETURN 186 ; INP(4%)CHR$(12%); 187 END