KnigaRead.com/

Патрик Гёлль - Магнитные карты и ПК

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Патрик Гёлль, "Магнитные карты и ПК" бесплатно, без регистрации.
Перейти на страницу:

60 IF EOF(1) THEN 110

70 INPUT #1,A

80 IF A=1 THEN PRINT#2,"1";

90 IF A=0 THEN PRINT#2,"0";

100 GOTO 60

110 PRINT "Выполнено": BEEP

120 END

130 REM (c) 1996 Patrick GUEULLE


Ниже показано, во что превращается файл TEST5.CAR, обработанный программой CARTOCRD.BAS (сначала его надо скопировать под именем CARTE .CAR).



Программа импорта файлов

Служебная программа CRDTOCAR.BAS осуществляет обратную операцию по отношению к предыдущей. Иначе говоря, выполняет преобразование файла CARTE.CRD в CARTE.CAR, совместимый со всеми нашими остальными программами.

10 REM — CRDTOCAR.BAS —

20 CLS: KEY OFF

30 PRINT "Преобразование файла CARTE.CRD в CARTE.CAR"

40 OPEN "carte.crd" FOR INPUT AS #1

50 OPEN "carte.car" FOR OUTPUT AS #2

60 IF EOF (1) THEN 110

70 A$=INPUT$ (1,#1)

80 IF A$="1" THEN PRINT#2,"1";: GOT0 60

90 IF A$="0" THEN PRINT#2,"0";: GOTO 60

10 °CLS: BEEP: PRINT "CARTE.CRD не соответствует формату CRD": END

110 PRINT "Выполнено": BEEP

120 END

130 REM (c) 1997 Patrick GUEULLE


Этим можно воспользоваться, чтобы извлечь пользу из файлов. CRD, полученных от пользователей, работающих, например, с программой CARDOMAT, очень высоко ценимой в США, которая, надо признаться, несколько подстегнула воображение автора…

Рекомендуется сначала скопировать исходный файл под именем CARTE.CRD, в то время как результат преобразования будет носить имя CARTE.CAR.


ДЕКОДИРОВАНИЕ ПЯТИБИТНЫХ СИМВОЛОВ

Иногда необходимо декодировать содержимое файла .CAR, когда нет карты, с которой он был считан. Это может быть файл, уже прочитанный при помощи LECT75 или LECT210, или файл, переписанный на дискету либо полученный по электронной почте другим любителем считывания с магнитных карт. Это может быть даже файл, предварительно «перевернутый» программой INVERT, если есть подозрение, что он был считан в обратном направлении.

Наши программы LECTISO не подходят для решения такой задачи по двум основным причинам. Во-первых, они созданы специально для управления операцией считывания в оболочке, а не для работы в автономном режиме. Во-вторых, каждая из них разработана для строго определенной дорожки ISO, а значит, рассчитана на определенное число битов.

Программа DEC5.BAS, со своей стороны, может взаимодействовать с любым файлом .CAR с пятиразрядным кодированием (а значит, цифровым) вне зависимости от его длины и дорожки, с которой он взят.

Познакомиться с работой 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 С$ = "01000" THEN PRINT "2";

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}";

410 IF C$="0110001" THEN PRINT "{6H}";

420 IF C$="1110000" THEN PRINT "{7H}";

430 IF C$="0001000" THEN PRINT "{8H}";

440 IF C$="1001001" THEN PRINT "{9H}";

450 IF C$="0101001" THEN PRINT "{AH}";

460 IF C$="1101000" THEN PRINT "{BH}";

470 IF C$="0011001" THEN PRINT "{CH}";

480 IF C$="1011000" THEN PRINT "{DH}";

490 IF C$="0111000" THEN PRINT "{EH}";

500 IF C$="1111001" THEN PRINT "{FH}";

510 IF C$="0000100" THEN PRINT "0";

520 IF C$="1000101" THEN PRINT "1";

530 IF C$="0100101" THEN PRINT "2";

540 IF C$="1100100" THEN PRINT "3";

550 IF C$="0010101" THEN PRINT "4";

560 IF C$="1010100" THEN PRINT "5";

570 IF C$="0110100" THEN PRINT "6";

580 IF C$="1110101" THEN PRINT "7";

590 IF C$="0001101" THEN PRINT "8";

600 IF C$="1001100" THEN PRINT "9";

610 IF C$="0101100“ THEN PRINT "{1AH}";

620 IF C$="1101101" THEN PRINT "{1BH}";

630 IF C$="0011100" THEN PRINT "{1CH}";

640 IF C$="1011101" THEN PRINT "{1DH}";

650 IF C$="0111101" THEN PRINT "{1EH}";

660 IF С$="1000011" THEN PRINT "A";

670 IF C$="0100011" THEN PRINT "В";

680 IF C$="1100010" THEN PRINT "C";

690 IF C$="0010011" THEN PRINT "D";

700 IF С$="1010010" THEN PRINT "E";

710 IF C$="0110010" THEN PRINT "F";

720 IF C$="1110011" THEN PRINT "G";

730 IF C$="0001011" THEN PRINT "H";

740 IF C$="1001010" THEN PRINT "I";

750 IF C$="0101010" THEN PRINT "J";

760 IF C$="1101011" THEN PRINT "K";

770 IF C$="0011010" THEN PRINT "L";

780 IF C$="1011011" THEN PRINT "M";

790 IF C$="0111011" THEN PRINT "N";

800 IF C$="1111010" THEN PRINT "O";

810 IF C$="0000111" THEN PRINT "P";

820 IF C$="1000110" THEN PRINT "Q";

830 IF C$="0100110" THEN PRINT "R";

840 IF C$="1100111" THEN PRINT "S";

850 IF C$="0010110" THEN PRINT "T";

860 IF C$="1010111" THEN PRINT "U";

870 IF C$="0110111" THEN PRINT "V";

880 IF C$="1110110" THEN PRINT "W";

890 IF C$="0001110' THEN PRINT "X";

900 IF C$="1001111" THEN PRINT "Y";

910 IF C$="0101111" THEN PRINT "Z";

920 IF C$="1101110'' THEN PRINT "{3BH}";

930 IF C$="0011111" THEN PRINT "{3DH}";

940 IF C$="1011110" THEN PRINT "{3EH}"

950 IF C$="1111111" THEN PRINT "{40H}";

960 RETURN

970 REM (c) 1996 Patrick GUEULLE


КОНТРОЛЬ ЧЕТНОСТИ

Время от времени приходится сталкиваться с файлом .CAR, который после считывания карты не мог быть декодирован надлежащим образом с помощью программ LECTISO.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*