10. ПРОГРАММАТОР.
Постоянные запоминающие устройства (ПЗУ) широко приме-
няются во всех областях электронной техники для хранения
программ, дешифрации м кодирования мнформацмм и т.п. Большой
интерес вызывает мспользованме перепрограмммруемых ПЗУ -
РПЗУ с УФ-стиранием, так как Вы можете многократно перезапи-
сывать содержащуюся в нмх информацию даже в домашних услови-
ях. Для стмранмя мнформацим в такмх РПЗУ вам понадобится ис-
точник ультрафиолетового мэлученмя. Хорошие результаты можно
получмть, мспольэуя, например, бытовой косметический прмбор
"ФОТОН" млм кварцевую лампу для загара. "ФОТОН" стирает ин-
формацию в ПЗУ за 15 - 20 ммнут прм расстоянмм до микросхемы
1 - 2 см.
Для программирования РПЗУ необходим программатор - спе-
циальное устройство, которое может быть выполнено в вмде са-
мостоятельного прибора млм в вмде приставки к компьютеру.
Предлагаемая Вашему вмиманмю схема программатора - это при-
ставка к компьютеру СПЕКТРУМ, которая предназначена для
программирования наиболее широко прмиемяемых РПЗУ емкостью
от 2-х до 32-х килобайт, как отечественного, так и зарубеж-
ного производства. Это нмкросхемы - К573РФ2, К573РФ5,
К573РФ4, К573РФ6, К573РФ8, 2716, 2764, 27128, 27256.
Цоколевка микросхем РПЗУ приведена на рис. 44, а в
таблице 4 указаны сигмалы на выводах иикросхеи в различных
режииах работы.
Схема программатора (рмс. 45) выполнена на програмни-
руемом интерфейсном адаптере (ПИА) КР580ВВ55А. Три 8-мм раз-
рядных порта ПИА с адресами IF, 3F, 5F (HEX) используются
для ввода/вь(вода данных и фориирования адреса ПЗУ. Сигналы
управления ПЗУ - CS, ОЕ, PGM - формируются с помощью допол-
нительного регистра К155ИР1 с адресон EF (HEX). Адрес ре-
гистра управления ПИА - 7Т(НЕХ). Разряды шмн адреса, данных
м сигналы управления ПЗУ подключены к 28-мм полюсному разъе-
му (панелм, сокету), обеспечивающему надежный контакт с вы-
водами вставляемой в него микросхемы, коммутация адресов и
сигналов управления для различных типов ПЗУ осуществляется с
помощью переключателя П2. Микросхемы К573РФ2,РФ5 и 2716 име-
ют 24 вывода и вставляются в разъем со смещением (смотри
таблицу 4). Эту же задачу можно решить другим образом - ус-
тановить на плате программатора три типа разъемов под микро-
схемы и соответственно скоммутировать их. В этом случае пе-
реключатель П2 не нужен. В качестве разъемов под ПЗУ можно
использовать самодельные, изготовленные из разъемов типа СНП.
Микросхему ПЗУ можно вставлять в разъем и вынимать из него
Vpp - мапряжение программирования. Определяется фирмой-
нэготовителеи микросхены. Имогда Vpp указывается на корпусе
микросхены, наприиер, PGM 12,5V.
только при средней положении переключателя П1. В этом поло-
жении на разъем ме подаются питающие напряжения. Два других
положения переключателя.П1 служат для выбора режина - ЧТЕНИЕ
или ЗАПИСЬ (ПРОГРАММИРОВАНИЕ).
Програииа обслуживания програииатора состоит из частм,
напмсаимой на языке Бейсик и иэ 463 байтов машинных кодов.
Программа ма Бейсике поддерживает интерактивный режим обмема
с помощью мескольких иеню. В блоке иашииных кодов содержатся
подпрограмиы: чтение, запись м тестирование. Эти програииы
необходимо замести в память компьютера м сохранить на маг-
нитной лемте. После загрузки программы на экране появляется
надпмсь - "Load MONITOR (Y/N)?". Нужно ответить Y, если Вы
используете программу МОНИТОР (приведена в Приложении 1,
стр. 164). После ввода Y и Enter компьютер будет готов к за-
грузке МОНИТОРа. Если Вы введете N м Enter, то сразу перей-
дете к началу работы программы. На экране появится - "Pro-
gramming 2716, 2764, 27128, 27256" и меню - "Read or Write
or Test or Verify" - включите режим CAPS LOCK и введите сим-
вол выбранного Ваии режима:
- R - режим чтения из ПЗУ в память компьютера;
- W - режим программирования ПЗУ данными из паняти кон-
пьютера;
- Т - режим проверки "чмстоты" ПЗУ. "Чмстое" ПЗУ содер-
жит по всем адресам байт FF (HEX);
- V - режим сравнения содержииого ПЗУ с содержимым па-
мяти компьютера.
Область паияти компьютера, отведенная для всех режимов
работы программатора, занииает 32К, с адреса 8000 (HEX) по
FFFF (HEX). Если Вы используете при работе с программатором
МОНИТОР, то рабочая область памяти сокращается на "верхних"
4,5 Кб, то есть 8000 - ЕЕ6А.
После выбора режина, например, W и Enter Ваи необходимо
выбрать тмп микросхемы. Вводите:
- 1 - для работы с микросхемами 2716 и К573РФ2, РФ5;
- 2 - для работы с микросхемами 2764 и К573РФ4;
- 3 - для работы с микросхемами 27128 и К573РФ6;
- 4 - для работы с микросхемани 27256 и К573РФ8.
Положение переключателя П2 должно соответствовать выб-
ранному типу микросхены.. Затеи Ваи необходимо выбрать на-
чальный и конечный адреса програииируеиой иикросхеиы. Адрес
вводится в шестнадцатиричном (HEX)'вмде 4-ия символами, то
есть два байта,например, 01FF. Аналогично вводится начальный
адрес рабочей области компьютера (RAM address ....), в кото-
рой расположена информация для программирования. На вопрос
"Correct (Y/N)?" Вы отвечаете Y, Enter, если набранная Вами
информация не требует корректировки, в противном случае - N.
Затем на экране появляется надпись "Insert chip - Ready? -
Press any key". Теперь Вам необходимо вставить в разъем мик-
росхему ПЗУ, переключатель П1 установить в позицию ЗАПИСЬ н
нажать любую клавишу для начала процесса программирования.
Ход процесса графически отображается на экране. В слу-
чае ошибки при программировании на экране появляются ошибоч-
ные дамные и адрес. Другие режимы выполняются аналогично.
Если Вы используете программатор для записи в ПЗУ са-
мостоятельно составленных программ в машинных кодах, то
большую помощь в этом Вам окажет МОНИТОР - прикладная про-
грамма, позволяющая заниматься программированием, отладкой и
дисассемблированием программ в машинных кодах. Эта программа
приведена в Приложении 1.
10.1. Программная поддержка.
Р R 0 G +
5 GO ТО 30
10 CLEAR 31999: LOAD ""CODE : INPUT " Load MONITOR (Y/N) ? ";
M$: IF M$="N" THEN GO TO 30
20 IF M$="Y" THEN LOAD ""CODE
30 CLS : PRINT AT 0,10 ; "PROGRAMMING"
50 PRINT AT 2,5;"2716,2764,27128,27356"
60 INPUT " Read or write or Test or Verify";Q$
70 IF Q$ = "R" THEN PRINT AT 5,8;" READ": GO TO 120
80 IF Q$="W" THEN PRINT AT 5,8;" WRITE": GO TO 120
90 IF Q$="T" THEN PRINT AT 5,8;" TEST": GO TO 120
100 IF Q$ = "V" THEN PRINT AT 5,8; "VERIFY" : GO TO 120
110 GO TO 60
120 INPUT " INPUT 1-2716, 2-2764, 3-27128,
4-27256";Q
130 IF Q=1 THEN PRINT AT 5,17;"2716": GO SUB 3500: GO TO 180
140 IF Q=2 THEN PRINT AT 5,17;"2764": GO SUB 3600: GO TO 180
150 IF Q=3 THEN PRINT AT 5,17;"27128": GO SUB 3600: GO TO 180
160 IF Q-4 THEN PRINT AT 5,17; "27256" : GO SUB 3700: GO TO 180
170 GO TO 120
180 PRINT AT 8,1;"ROM adress from ";: DIM W$(4): INPUT W$: GO
SUB 5000: GO SUB 6000
190 POKE 32117,R: POKE 32190,R: POKE 32314,R
200 POKE 32118,E: POKE 32191,E: POKE 32315,E
250 GO SUB 7000: PRINT 1$
260 PRINT AT 8,22:"to ";: DIM W$(4): INPUT W$: GO SUB 5000: GO
SUB 6000
270 POKE 32120,R: POKE 32193,R: POKE 32317,R
280 POKE 32121,E: POKE 32194,E: POKE 32318,E
330 GO SUB 7000: PRINT 1$
335 IF Q$="T" THEN GO TO 420
340 PRINT AT 10,1;"RAM adress from ";: DIM W$(4): INPUT W$: GO
SUB 5000: GO SUB 6000
350 POKE 32123,R: POKE 32196,R: POKE 32334,R
360 POKE 32124,E: POKE 32197,E: POKE 32335,E
410 GO SUB 7000: PRINT 1$
420 INPUT " CORRECT (Y/N) ? ";P$
430 IF P$="N" THEN GO TO 30
440 IF p$="Y" THEN PRINT AT 14,10;"Insert chip
READY ? Press any key": PAUSE 0: GO TO 460
450 GO TO 420
460 IF Q$="R" THEN GO TO 1000
470 IF Q$="W" THEN GO TO 1500
480 IF Q$="T" THEN GO TO 2000
490 IF Q$—"V" THEN GO TO 2500
1000 POKE 32009,119: RANDOMIZE USR 32112
1020 PRINT FLASH 1;AT 21,15;"END": PRINT " For continue press
any key": PAUSE 0: GO TO 30
1500 RANDOMIZE USR 32304
1510 IF PEEK 32463-255 THEN PRINT FLASH 1;AT 21,15;"END":
PRINT "For continue press any key": PAUSE 0: GO TO 30
1520 PRINT AT 18,1,-"ROM adress " ": LET U-PEEK 32394 + 256»PEEK
32395: GO SUB 7010: PRINT AT 18,13;IS
1530 PRINT AT 18,20;"ROM data ": LET D=PEEK 32095: GO SUB
7500: PRINT AT 18,30;S$
1540 PRINT AT 19,1;"RAM adrees ": LET U=PEEK 32400+256*PEEK
32401: GO SUB 7010: PRINT AT 19,13;I$
1550 PRINT AT 19,20;"RAM data ": LET D=PEEK (PEEK 32400+256*
PEEK 32401): GO SUB 7500: PRINT AT 19,30:S$
1560 INPUT " Continue.(Y/N) ? ":G$
1570 IF G$-"N" THEN GO TO 30
1580 IF G$="Y" THEN RANDOMIZE USR 32384: GO TO 1510
2000 POKE 32009,0: POKE 32210,254: POKE 32211,255
2030 RANDOMIZE USR 32176
2040 IF PEEK 32303=255 THEN PRINT FLASH 1;AT 21,15;"END":
PRINT " For continue press any key": PAUSE 0: GO TO 30
2050 PRINT AT 18,1;"ROM adress ": LET U=PEEK 32249=256*
PEEK 32250: GO SUB 7010: PRINT AT 18,13;IS
2060 PRINT AT 18,20;"ROM data ": LET D-PEEK 32015: GO SUB
7500: PRINT AT 18,30;S$
2070 INPUT " Continue (Y/N) ? ";H$
2080 IF H$ = "Y" THEN RANDOMIZE USR 32240: GO TO 2040
2090 IF H$="N" THEN GO TO 30
2100 GO TO 2070
2500 POKE 32009,0: POKE 32210,0: POKE 32211,190
2530 RANDOMIZE USR 32176
2540 IF PEEK 32303-255 THEN PRINT FLASH 1;AT. 21,15: "END":
PRINT " For continue press any key": PAUSE 0: GO TO 30
2550 PRINT AT 18,1;"ROM adress ": LET U=PEEK 32249+256*
PEEK 32250: GO SUB 7010: PRINT AT 18,13;IS
2560 PRINT AT 18,20;"ROM data ": LET D=PEEK 32015: GO SUB
7500: PRINT AT 18,30;S$
2570 PRINT AT 19,1;"RAM adress ": LET U-PEEK 32255+256*
PEEK 32256: GO SUB 7010: PRINT AT 19,13;I$
2580 PRINT AT 19,20;"RAM data ": LET D=PEEK (PEEK 32255+
256*PEEK 32256): GO SUB 7500: PRINT AT 19,30;S$
2590 INPUT " Continue (Y/N) ? ";J$
2600 IF 3$="N" THEN GO TO 30
2610 IF J$="Y" THEN RANDOMIZE USR 32240: GO TO 2540
2620 GO TO 2590
3500 POKE 32001,8: POKE 32011,10: POKE 32046,2: POKE 32050,3
3510 POKE 32068,10: POKE 32082,8: POKE 32091,10: RETURN
3600 POKE 32001,12: POKE 32011,15: POKE 32046,6: POKE 32050,2
3610 POKE 32068,15: POKE 32082,12: POKE 32091,15: RETURN
3700 POKE 32001,8: POKE 32011,9: POKE 32046,0: POKE 32050,2
3710 POKE 32068,9: POKE 32082,8: POKE 32091,9: RETURN
5010 LET T=0
5020 FOR Y = 1 TO 4
5030 LET T-T+16T(4-Y)*CODE W$ (Y)-48-7*(CODE W$(Y)>57))
5040 NEXT Y
5050 POKE 32030,INT (T-(INT (T/256))*256)
5060 POKE 32031,INT (T/256)
5070 RETURN
6000 LET W-PEEK 32030+256*PEEK 32031
6010 LET E=INT (W/256)
6020 LET R=INT (W-(E*256))
6030 RETURN
7000 LET U—PEEK 32030+256*PEEK 32031
7010 DIM 1(4): DIM I$(4)
7020 LET 1(1)=INT (U/4096)
7030 LET U=U-I(1)*4096
7040 LET I(2)=INT (U/256)
7050 LET U=U-I(2)*256
7060 LET I(3)-INT (U/16)
7070 LET I(4)=U-I(3)*16
7080 FOR 0-1 TO 4
7090 LET 1$(0)—CHR$ (I(0)+48+7*(I(0)>9))
7100 NEXT 0
7110 RETURN
7500 DIM s(2): DIM S$(2)
7510 LET S(1)-INT (D/16)
7520 LET S(2)=INT (D-S(l)*16)
7530 FOR F=1 TO 2
7540 LET S$(F)=CHR$ (S(F)+48+7*(S(F)>9))
7550 NEXT F
7560 RETURN
9999 SAVE "PROG+" LINE 10: SAVE "PROG+"CODE 32000,500: SAVE
"MONITOR "CODE 61000,4535: STOP
7d00 |
зе |
00 |
d3 |
ef |
db |
1f |
32 |
of |
7d08 |
7d |
00 |
зе |
00 |
d3 |
ef |
с9 |
00 |
7d10 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
7d18 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
7d20 |
зе |
80 |
d3 |
7f |
7е |
d3 |
1f |
78 |
7d28 |
d3 |
3f |
79 |
d3 |
5f |
зе |
00 |
d3 |
7d30 |
ef |
зе |
00 |
d3 |
ef |
зе |
55 |
32 |
7d38 |
18 |
7d |
32 |
18 |
7d |
32 |
18 |
7d |
7d40 |
3d |
20 |
f4 |
зе |
00 |
d3 |
ef |
зе |
7d48 |
90 |
d3 |
7f |
78 |
d3 |
3f |
79 |
d3 |
7d50 |
5f |
зе |
00 |
d3 |
ef |
db |
1f |
32 |
7d58 |
5f |
7d |
зе |
00 |
d3 |
ef |
зе |
00 |
7d60 |
be |
с9 |
00 |
00 |
00 |
00 |
00 |
00 |
7d68 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
7d70 |
с5 |
d5 |
е5 |
f5 |
01 |
00 |
00 |
и |
7d78 |
00 |
00 |
21 |
00 |
00 |
зе |
90 |
d3 |
7d80 |
7f |
78 |
d3 |
3f |
79 |
d3 |
5f |
cd |
7d88 |
00 |
7d |
78 |
аа |
20 |
09 |
79 |
ав |
7d90 |
20 |
05 |
f1 |
е1 |
d1 |
с1 |
с9 |
03 |
7d98 |
23 |
18 |
еб |
00 |
00 |
00 |
00 |
00 |
7da0 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
7da8 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
7db0 |
с5 |
d5 |
е5 |
f5 |
зе |
90 |
d3 |
7f |
7db8 |
зе |
00 |
32 |
2f |
7е |
01 |
00 |
00 |
7dc0 |
11 |
00 |
00 |
21 |
00 |
00 |
78 |
d3 |
7dc8 |
3f |
79 |
d3 |
5f |
cd |
00 |
7d |
за |
7dd0 |
of |
7d |
00 |
00 |
28 |
2в |
22 |
ff |
7dd8 |
7d |
ed |
53 |
fc |
7d |
ed |
43 |
f9 |
7de0 |
7d |
f1 |
е1 |
d1 |
с1 |
с9 |
00 |
00 |
7de8 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
7df0 |
с5 |
d5 |
е5 |
f5 |
зе |
90 |
d3 |
7f |
7df8 |
01 |
00 |
00 |
11 |
00 |
00 |
21 |
00 |
7е00 |
00 |
78 |
аа |
20 |
1в |
79 |
ав |
20 |
7е08 |
17 |
зе |
ff |
32 |
2f |
7е |
f1 |
е1 |
7е10 |
d1 |
с1 |
с9 |
00 |
00 |
00 |
00 |
00 |
7е18 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
7е20 |
03 |
23 |
18 |
а2 |
00 |
00 |
00 |
00 |
7е28 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
7е30 |
с5 |
d5 |
е5 |
f5 |
зе |
00 |
32 |
cf |
7е38 |
7е |
01 |
00 |
00 |
и |
00 |
00 |
7а |
7е40 |
32 |
f1 |
40 |
32 |
f1 |
41 |
7в |
32 |
7е48 |
f2 |
40 |
32 |
f2 |
41 |
21 |
00 |
00 |
7е50 |
78 |
32 |
f1 |
43 |
32 |
f1 |
44 |
79 |
7е58 |
32 |
f2 |
43 |
32 |
f2 |
44 |
зе |
33 |
7е60 |
3d |
32 |
5f |
7е |
32 |
ес |
43 |
32 |
7е68 |
ес |
44 |
20 |
2с |
22 |
90 |
7е |
ed |
7е70 |
53 |
8d |
7е |
ed |
43 |
8а |
7е |
f1 |
7е78 |
е1 |
d1 |
с1 |
с9 |
00 |
00 |
00 |
00 |
7е80 |
с5 |
d5 |
е5 |
f5 |
зе |
33 |
32 |
5f |
7е88 |
7е |
01 |
00 |
00 |
11 |
00 |
00 |
21 |
7е90 |
00 |
00 |
18 |
16 |
00 |
00 |
00 |
00 |
7е98 |
cd |
20 |
7d |
20 |
с1 |
зе |
ff |
32 |
7еа0 |
36 |
7d |
cd |
20 |
7d |
зе |
55 |
32 |
7еа8 |
36 |
7d |
78 |
аа |
20 |
12 |
79 |
ав |
7ев0 |
20 |
ое |
зе |
ff |
32 |
cf |
7е |
f1 |
7ев8 |
el |
d1 |
с1 |
с9 |
00 |
00 |
00 |
00 |
7ес0 |
03 |
23 |
зе |
33 |
32 |
5f |
7е |
сз |
7ес8 |
50 |
7е |
00 |
00 |
00 |
00 |
00 |
00 |