Выбрать главу

Для запуска считывающей программы и декодирования требуется основная программа, которая по аналогии с LECTISO1 и LECTISO2 получила название LECTISO3.BAS.

10 REM — LECTIS03. 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 #I

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)<>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>623 THEN END

270 GOTO 200

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

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

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

2030 IF 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";

2999 RETURN

3000 REM (c)1996 Patrick GUEULLE

Эта программа абсолютно идентична LECTISO2, но она дает несколько более громоздкие результаты.

ПРОГРАММЫ ПРЕОБРАЗОВАНИЯ

Файлы с расширением .CAR, полученные с помощью LECT75 и LECT210, естественно, не вызывают никаких проблем совместимости с программами данной книги. Однако это не всегда получается при их использовании в другом контексте, что, конечно, вправе сделать любой из наших читателей.

Ниже приводятся несколько весьма полезных служебных программ для решения небольших проблем, которые рано или поздно могут появиться.

Программа выравнивания

Как уже показывалось, наши программы считывания магнитных дорожек создают линейные — однострочные, то есть без специальных символов перехода на новую строку, — файлы с расширением .CAR. Это нисколько не мешает их отображению, например с помощью команды ТУРЕ операционной системы DOS, но может возникнуть желание их распечатать или сохранить в более удобном формате.

Для этого вместо программы текстового редактора более практично, по нашему мнению, использовать небольшую программу JUSTCAR.ВAS, трансформирующую любой файл .CAR в строго упорядоченный блок из 32 колонок.

10 REM — JUSTCAR. 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 NS: FOR INPUT AS #1

100 OPEN "carte.bak" FOR OUTPUT AS #2

110 DIM M(LOF(1)): CLS

120 L=0: WHILE NOT EOF(1)

130 INPUT#1,M(L)

140 PRINT#2,M(L);: L=L+1

150 WEND

160 CLOSE #1

170 OPEN NS FOR OUTPUT AS #1

180 G=0: FOR F=0 TO L-1

190 PRINT M(F);

200 IF M(F)=1 THEN PRINT#1,"1";

210 IF M(F)=0 THEN PRINT#1,"0";

220 G=G+1: IF G=32 THEN PRINT#1, G=0

230 NEXT F: PRINT

240 END

250 REM COPYRIGHT (c) 1996 Patrick GUEULLE

Отметим, что аварийный файл CARTE.ВАК был создан прежде всего для сохранения данных в случае сбоя, происшедшего во время обработки (разрыв сети и т. д.).

Кроме того, если имя исходного файла содержит расширение .CAR, у нас не будет необходимости его набирать, поскольку оно добавится автоматически.

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

Ниже показано, что получается при обработке файла TEST5.CAR с помощью программы JUSTCAR.

Программа инвертирования

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

Программа INVERT.BAS способна «перевернуть» любой файл .CAR вне зависимости от его длины.

10 REM — INVERT.BAS —

20 KEY OFF: CLS

30 PRINT "имя файла, который следует перевернуть?"

40 INPUT N$: IF N$="" THEN END

50 FOR F=1 TO LEN(NS)

60 IF MID$ (N$,F,1)="." THEN 90

70 NEXT F

80 N$=N$+".CAR"

90 OPEN N$ FOR INPUT AS #1

100 OPEN "carte.bak" FOR OUTPUT AS #2

110 DIM M(LOF(1)): CLS