Чтение онлайн

ЖАНРЫ

Магнитные карты и ПК
Шрифт:

110 IF T(J+1)<>1 THEN 160

120 IF T(J+2)<>0 THEN 160

130 IF T(J+3)<>1 THEN 160

140 IF T{J+4)<>0 THEN 160

150 K=J: GOTO 200

160 J=J+1: GOTO 100

200 C$=""

210 FOR F=0 TO 4

220 IF T(K+F) =0 THEN C$=C$+"0"

230 IF T(K+F) =1 THEN C$=C$+"1"

240 NEXT F

250 GOSUB 2000

260 K=K+5: IF K>235 THEN END

270 GOTO 200

2000 IF C$="11010* THEN PRINT "{start}"

2010 IF C$="10110" THEN PRINT "{sep}"

2020 IF CS="11111" THEN PRINT "{end}"

2030 IP C$="01011" THEN PRINT "{10}";

2040 IF C$="00111" THEN PRINT "{12}";

2050 IF C$="01110" THEN PRINT "{14)";

2060 IF C$="00001" THEN PRINT "0";

2070 IF C$="10000" THEN PRINT "1";

2080 IF C$="01000" THEN PRINT "2";

2090 IF C$="11001" THEN PRINT "3";

2100 IF C$="00100“ THEN PRINT "4";

2110 IF C$="10101" THEN PRINT "5";

2120 IF C$="01101" THEN PRINT "6";

2130 IF C$="11100" THEN PRINT "7";

2140 IF C$="00010" THEN PRINT "8";

2150 IF C$="10011" THEN PRINT "9";

2170 RETURN

3000 REM (c) 1996 Patrick GUEULLE

Программа LECTISО2.BAS —

основная программа, которую вы будете использовать для считывания дорожки ISO 2 стандартных магнитных карт. Если LECT75.EXE присутствует в текущей директории (наряду с COMMAND.COM), то любое прохождение читаемой карты (в правильном направлении) должно привести к отображению 240 считанных бит и соответствующих цифровых данных.

Ниже показано, что это дает в конкретном случае с файлом TEST5.CAR, представленным на сайте www.dmk.ru. Так, файл TEST5.CAR, декодированный с помощью программы LECTISО2.BAS, будет иметь следующий вид:

Одновременно создается файл CARTE.CAR, который нетрудно переименовать в DOS (командой REN), если есть желание его сохранить. Ни один из тестов (на четность или LRC) не производится.

Такие проверки можно осуществить по запросу при необходимости (дальше будут представлены соответствующие программы). Однако при этом существует риск сбоя в считывании некоторых нестандартных карт.

При отображении данных, записанных на дорожке, используются не стандартные «кабалистические* знаки, представленные выше в виде пяти- и семибитного кода ANSI, а знаки в более наглядной форме:

• флажок начала: {start};

• разделитель полей: {sep};

• флажок конца: {end};

• специальные знаки: {10}, {12} и {14}.

Внимание: не путайте эти фигурные

скобки с простыми!

Считывание дорожки ISO 1

Работать с дорожкой ISO 1 несколько сложнее, поскольку обычно она записана с плотностью 210 bpi и содержит семиразрядные коды алфавитно-цифровых символов.

Осуществить считывание позволяет программа LECT210.PAS, которая работает аналогично LECT75.PAS. Ее исполняемая версия (LECT210.EXE) может использоваться либо самостоятельно для создания файла CARTE.CAR на 630 бит, либо вызываться из другой программы в оболочке Basic.

Отметим, что 630 бит — это 90 раз по 7 бит, то есть они соответствуют 79 знакам, которые максимально может содержать дорожка ISO 1, плюс 77 нулей заполнения.

10 REM — LECTISO1.BAS —

20 KEY OFF: CLS: PRINT: PRINT: PRINT: PRINT: PRINT: PRINT: PRINT: PRINT: PRINT

30 SHELL "LECT210.EXE"

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

50 DIM T(630)

60 FOR F=1 TO 630

70 INPUT#1,T(F)

80 NEXT F

90 J=1

100 IF T(J)<>1 THEN 160

110 IF T(J+1)<>0 THEN 160

120 IF T(J+2)<>1 THEN 160

130 IF T(J*3)<>0 THEN 160

140 IF T(J+4)<>0 THEN 160

141 IF T(J+5)<>0 THEN 160

142 IF T(J+6)<>1 THEN 160

150 K=J: GOTO 200

160 J=J+1:GOTO 100

200 C$=""

210 FOR F=0 TO 6

220 IF T(K+F) =0 THEN C$=C$+"0"

230 IF T(K+F)=1 THEN C$»C$+"1"

240 NEXT F

250 GOSUB 2000

260 K=K+7: IF K>623 THEN END

270 GOTO 200

2000 IF C$="1010001" THEN PRINT "{start}"

2010 IF C$="0111110" THEN PRINT "{sep}"

2020 IF C$="1111100" THEN PRINT "{end}"

2030 IF C$="0000001" THEN PRINT " ";

2031 IF C$="1000000" THEN PRINT "{1H}";

2032 IF C$="0100000" THEN PRINT "{2H}";

2033 IF C$="1100001" THEN PRINT "{3H}";

Поделиться с друзьями: