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-го поколения⇒