Магнитные карты и ПК
Шрифт:
Познакомиться с работой DECS.BAS можно, предложив ей декодировать файл TEST5 .CAR, который есть на сайте www.dmk.ru.
10 REM — DEC5.BAS —
20 KEY OFF: CLS
30 PRINT "Имя декодируемого файла?";
40 INPUT N$: IF N$="" THEN END
50 FOR F=1 TO LEN(N$)
60 IF MID$(N$,F,1)="." THEN 90
70 NEXT F
80 N$=N$ +".CAR"
90 OPEN N$ FOR INPUT AS #1
100 L=INT(LOF(1)/2)-1
110 DIM T(LOF (1))
120 F=1:WHILE NOT EOF(1)
130 INPUT#1,T(F): F=F+1
140 WEND
150 J=1
160 IF T(J)<>1 THEN 220
170 IF T(J+1)<>1 THEN 220
180 IF T(J+2)<>0 THEN 220
190 IF T(J+3)<>1 THEN 220
200 IF T(J+4)<>0 THEN 220
210 K=J: GOTO 230
220 J=J+1: GOTO 160
230 C$=""
240 FOR F=0 TO 4
2S0 IF T(K+F) =0 THEN C$=C$+"0"
260 IF T(K+F) =1 THEN C$=C$+"1"
270 NEXT F
280 GOSUB 310
290 K=K+5: IF K>L-1 THEN END
300 GOTO 230
310 IF C$ = "11010" THEN PRINT "{Start}"
320 IF C$ = "10110" THEN PRINT " {sep}"
330 IF C$ = "11111" THEN PRINT "{end}"
340 IF C$ = "01011" THEN PRINT "{10}";
350 IF C$ = "00111" THEN PRINT "{12}";
360 IF C$ = "01110" THEN PRINT "{14}";
370 IF C$ = "00001" THEN PRINT "0";
380 IF C$ = "10000" THEN PRINT "1";
390 IF
400 IF C$ = "11001" THEN PRINT "3";
410 IF C$ = "00100" THEN PRINT "4";
420 IF C$ = "10101" THEN PRINT "5";
430 IF C$ = "01101" THEN PRINT "6";
440 IF C$ = "11100" THEN PRINT -7";
450 IF C$ = "00010" THEN PRINT "8";
460 IF C$ = "10011" THEN PRINT "9";
470 RETURN
480 REM (с) 1996 Patrick GUEULLE
Программа DEC7.BAS выполняет функцию, аналогичную выполняемой программой DEC5, но с алфавитно-цифровыми файлами, символы которых закодированы семью битами.
10 REM — DEC7.BAS —
20 KEY OFF: CLS
30 PRINT "Имя декодируемого файла?";
40 INPUT N$: IF N$="" THEN END
50 FOR F=1 TO LEN(N$)
60 IF MID$ (N$,F,1) = "." THEN 90
70 NEXT F
80 N$=N$+".CAR"
90 OPEN N$ FOR INPUT AS #1
100 L=INT(LOF(1)/2)-1
110 DIM T (LOF (1))
120 F=1: WHILE NOT EOF(1)
130 INPUT#1,T(F): F=F+1
140 WEND
150 J=1
160 IF T(J)<>1 THEN 240
170 IF T(J+1)<>0 THEN 240
180 IF T(J+2)<>1 THEN 240
190 IF T(J+3)<>0 THEN 240
200 IF T(J+4)<>0 THEN 240
210 IF T(J+5)<>0 THEN 240
220 IF T(J+6)<>1 THEN 240
230 K=J: GOTO 250
240 J=J+1: GOTO 160
250 C$=""
260 FOR F=0 TO 6
270 IF T(K+F)=0 THEN C$=C$+"0"
280 IF T(K+F)=1 THEN C$=C$+"1"
290 NEXT F
300 GOSUB 330
310 K=K+7: IF K>L-1 THEN END
320 GOTO 250
330 IF C$="1010001" THEN PRINT "{start}"
340 IF C$="0111110" THEN PRINT "{sep}"
350 IF C$="1111100" THEN PRINT "{end}"
360 IF C$="0000001" THEN PRINT " ";
370 IF C$="1000000" THEN PRINT "{1H}";
380 IF C$="0100000" THEN PRINT "{2H}";
390 IF C$="1100001" THEN PRINT "{3H}";
400 IF C$="0010000" THEN PRINT "{4H}";