Реклама:

10 REM - GPM256.6AS -

20 KEY OFF :C1S :0EF SEG=0

30 S1=PEEK(JH408)+256.PEEK(8H409) для LPT1:

40 S2=PEEK("H40A)t256.PEEK(SH408) для LPT1:

50 OUT S2,0 :E2=S2+1

60 IF (INP(E2) AND 64) о 0 THEN S=S1 :GCT0 100 70 OUT S2.12B

BO IF (INP(E2) AND 6") о 64 THEN S=S1 :G0T0 1D0 90 S=S2 100 E=S+1

110 DIM N(256):DIM ".(256)

120 РШГКартв с ЭППЗУ на 256 бит"

130 №ИГ========":РИ1П"

140 РИШТ -.GOTO 360 150 OUT S,0:CLS

160 PRINT"BcTaanTb карту, затем нажать <ENTER>"

170 INPUT Z$ :CLS

1B0 PRINT"- Идет чтение карты -"

190 OUT S.250-.0UT S.248

200 FOR F=1 TO 256

210 OUT S.249

220 D=INP(E) :D= (D AND 12B)

230 N(F)=1:IF D= 12B TNEN N(F)=0

240 OUT S.251

250 NEXT F

26C CIS :I=0

270 FOR F=1 TO В

280 FOR G=1 TO 8

290 FOR N=1 TO 4

300 1=1+1

31D N$="1":IF N(I)=0 THEN N$="0" 320 PRINT NS. 330 NEXT

340 PRINT" :NEXT G 350 PRINT

360 IF F=3 THEN PRINT

370 NEXT F :PRINT

ЗВО PRINT'Выбрать пункт и нажать <ENTER> :PRINT

390 PRINT'О -> Возврат в DOS (выход)'

400 PRINT'1 -> Чтение"

410 PRINT'2 -> Обработка"

420 PRINT'S -> Сохранить"

430 PRINT"4 -> Загрузить"

440 PRINT'S -> Программирование"

450 PRINT'E -> Проверка"

460 PRINT'7 -> Вывод на экран"

470 PRINT9 -> Временный выход в 00S (shell)"

4В0 INPUT ZJ

490 IF ZJ="0" THEN SYSTEM

500 IF ZJ=' 1' THEN 150

510 IF ZJ='2" THEN B20

520 IF ZJ="3" THEN 590

530 IF ZJ='4" THEN 740

540 IF ZJ="S" THEN 1090

550 IF ZJ='6" THEN 1260

560 IF ZJ="7" THEN 260

570 IF ZJ='9" THEN SHELL XLS :C0T0 3B0

5B0 GOTO 480

590 CLS :PRINT"Ввести иня .CAR-файла" 600 INPUT SJ :SJ=SJ+".CAR" 610 OPEN SJ FOR OUTPUT AS "1 620 1=0

630 CLS :PRINT"- Сохранение файла -640 FOR F=1 TO 8 650 FOR 6=1 TO В 660 FOR H=1 TO 4 670 Ы+1

6B0 IF N(I)=1 THEN PRINT"1,"1 690 IF N(I)=0 THEN PRINTM.'0 700 NEXT H

710 PRINTB1," :NEXT С 720 PRINTm, :NEXT F 730 CLDSEB1 GOTO 260

740 CLS :PRINT"BBecTn имя загружаемого CAR-фейла"

750 INPUT SJ :SJ=SJ-"" CAR"

760 OPEN SJ FOR INPUT AS "1

770 CLS : PRINT - Загрузка фейла -

7B0 FOR F=1 TO 256

790 INPUTH1.0 : N(F)=0

800 NEXT F

810 CL0SEB1 :G0TO 260

B20 CLS :PRINT" Код семейства: ";

ВЗО FJ=' ":А=9

840 GOSUB 1490:F$=F$+Kj

860 A=13:G0SUB 1490:FJ=F$+KJ

В60 IF LEFTJ(F$,1)<>'0' THEN PRINT :PRINT :G0TO 3B0

870 PRINT" (ТЕЛЕКАРТА)"

ВВО РИ^ГСерийньй номер:

890 FDR A=17 TO 29 STEP 4

900 GOSUB 1490:NEXT A

910 FOR A=41 TO 53 STEP 4

920 GOSUB 1490:NEXT A

930 PRINT :PRINT'Рассчитана на:

940 PJ=""

950 A=B9:G0SUB 1490:P$=PJ+KJ 960 A=93:G0SUB 1490:PJ=PI*KJ 970 P=VAL(PJ) :P=(10.P)-10 9B0 PRINT" (";P ;' единиц) 990 PRINT"McrKwib3OBaH0. 1000 c=o

1010 FOR F=97 TO 24B 1020 IF N(F)=1 THEN C=C+1 1030 NEXT F :C=C-10 104D PRINT C;" UTC"

1060 IF C<P THEN PRINT"Остаток: ";P-C;" UTC":BEEP 1060 IF OP THEN PRINT"KapTa дефектная" :BEEP 1070 IF C=P THEN PRINT Кредит исчерпан' 1080 PRINT :РРШТ :GOTO 380

1090 CLS :PPINT"'BcTaBHTb карту для программирования, затем нажать <ENTER>" 1100 DUT S.O:INPUT ZJ

1110 CLS : РРШ"Подать напряжение Vpp. затем нажать <ENTER>" 1120 INPUT Z$

1130 CLS : PRINT"- Идет программирование -'

1140 FDR F=1 TO 256

1150 OUT S.249

1160 D=INP(E)

1170 B=N(F)

1180 IF B=0 THEN 1230

1190 OUT S.253

1200 FDR T=1 TO 150 :NEXT T

1210 OUT S.2E5

1220 FOR T=1 TO 150 :NEXT T

1230 OUT S, 251: NEXT F

1240 CLS :РШТ"Отключить Vpp и нажать <ENTER> 1250 INPUT ZJ :CUT S.O;GCTC 260

1260 CLS :PRINT'Вставить карту для сравнения, затем нажать <ENTER>"

1270 INPUT Z$ :CLS

1280 PRINT"- Идет чтение карты -'

1290 OUT S.250:OUT S.248 1300 FOR F=1 TO 256 1310 OUT S.249

1320 D=INP(E) :D= (D AND 128)

1330 H.(F)=V.IF 0= 128 THEN N(F)=0

1340 OUT S.251

1350 NEXT F

1360 CIS :I=0

1370 FOR F=1 TO В

1ЭВ0 FOR G=1 TD В

1390 FDR N=1 TO 4

1400 W+1

1410 IF N(I)=M(I) THEN PRINT'-"; ELSE PRINT"*";

1420 NEXT H

1430 PRINT' "; :NEXT G

1440 PRINT

1450 IF F=3 THEN PRINT 1460 NEXT F :PRINT PRINT 1470 GOTO 3B0 14B0 END 1490 K=0

1500 FOR J=0 TO 3 1510 B=N(A+J)

1520 IF B=1 THEN K=K*2"(3-J) 1530 NEXT J

1540 IF K<10 THEN K$=CHR$ (4B+K) 1550 IF K>=10 TNEN K$-CHR$(55tK) 1680 PRINT K$; 1570 RETURN 1580 END

1590 REM (c)1993.97 Patrick GUEULLE

Теперь рассмотрим гораздо более мощную программу (GPM256. BAS). Она снабжена меню, позволяющим выбрать следующие пункты:

• возврат в DOS (в конце работы);

• чтение карты (с индикацией на экране ее 256 бит) и запись результата в память компьютера;

" обработка считанной в память информации. Для телекарты T1G определяются, помимо всего прочего, оставшийся кредит и серийный номер;

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

• загрузка файла с расширением .CAR в память компьютера в таком виде, в каком информация считывается из карты:

" программирование карты данными, обработанными компьютером, - например, "читанными из другой карты либо из файла с расширением .CAR;

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

• многократный вывод содержимого памяти на экран без повторного считывания карты;

■ вызов DOS - функция SHELL. Весьма полезна, если, например, надо вызвать редактор текста, позволяющий редактировать файл с расширением .CAR перед внесением изменений в обрабатываемую карту (можно менять только 0 в 1; если разрушена плавкая перемычка, то в зоне после первых 96 бит). Возвращение из DOS в программу происходит по команде EXIT.

Предлагаемая программа является мощнейшим средством, позволяющим производить практически все доступные операции с телекартами и другими картами типа GPM 256.

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

Программное обеспечение для карт типов T1G и GPM 256 || Оглавление || Блок чтения-записи 2-го поколения