PDA

Просмотр полной версии : ЮТ-88 FAQ



KeKc
08.03.2014, 17:48
Подумал я тут немножко и решил открыть эту тему, дабы помочь всем желающим собрать эту машинку. Речь пойдет о сборке ЮТ-88 в минимальной конфигурации (в скором времени, надеюсь, будут сделаны и все остальные модули). Чтобы не было путаницы, сразу скажу, что речь пойдет об этом варианте ЮТ-88:
http://img-fotki.yandex.ru/get/9749/22857638.4/0_cd521_e4e8c706_L.jpg (http://img-fotki.yandex.ru/get/9749/22857638.4/0_cd521_e4e8c706_orig)

Предисловие:
ЮТ-88 – одна из многих машин, построенных на базе микропроцессора КР580ВМ80А (аналог i8080A). Свое название компьютер получил при публикации в приложении к журналу «Юный Техник». Особенностью этого компьютера было то, что его можно было собирать из «кирпичиков», каждый из которых расширял возможности компьютера. Вначале предлагалось собрать ЮТ-88 в минимальной конфигурации. В этом варианте компьютер очень похож на программируемый микрокалькулятор, хотя, «в лоб» считать на нем все равно было нельзя. Ввод информации осуществляется с клавиатуры из 18 кнопок: 16 кнопок – шестнадцатеричные цифры от «0» до «F», кнопка установки в начальное состояние (сброс) и кнопка «шаг назад», используемая при работе с памятью. Вывод информации осуществляется на 6 семисегментных индикаторов.

Основные характеристики следующие:
Процессор – КР580ВМ80А
Тактовая частота – 1,778 МГц
ОЗУ – 1 кб
ПЗУ – 4 кб
Внешняя память – кассетный магнитофон, скорость записи на ленту 1500 бит/с.

Карта памяти компьютера ЮТ-88 в минимальной конфигурации:
0000h-03FFh - ПЗУ МОНИТОР-0
0400h-07FFh - ПЗУ (резерв)
0800h-0FFFh - ПЗУ библиотечка программ

9000h, 9001h, 9002h - Семисегментные индикаторы. Индикаторы расположены в следующем порядке: 6р, 5р, 4р, 3р, 2р, 1р. На индикаторы 6р, 5р выводится информация из ячейки памяти с адресом 9002h, индикаторы 4р, 3р - 9001h, индикаторы 2р, 1р - 9000h

C000h-C3FFh - ОЗУ МОНИТОРа-0 1 кб
C400h-C7FFh - повторяется ОЗУ МОНИТОРа-0 (C000h-C3FF)
C800h-CBFFh - повторяется ОЗУ МОНИТОРа-0 (C000h-C3FF)
CC00h-CFFFh - повторяется ОЗУ МОНИТОРа-0 (C000h-C3FF)

Порты ввода/вывода компьютера ЮТ-88 в минимальной конфигурации:
A0h (ввод) – клавиатура
A1h (ввод) – чтение данных с ленты
A1h (вывод) – запись данных на ленту

Схема электрическая принципиальная компьютера ЮТ-88 в минимальной конфигурации:
http://img-fotki.yandex.ru/get/9819/22857638.5/0_db670_60d8d0bf_XL.gif (http://img-fotki.yandex.ru/get/9819/22857638.5/0_db670_60d8d0bf_orig)




Описание компьютера

Микросхема DD1 — микропроцессор КР580ВМ80А. Микросхема DD2
КР580ГФ24 предназначена для формирования двух последовательностей тактовых импульсов с заданной частотой и амплитудой. Она включает в себя задающий генератор, стабилизированный внешним кварцевым резонатором Z1 с частотой 16 МГц. Кроме формирователя синхроимпульсов C1 и C2, микросхема DD2 содержит триггеры синхронизации сигналов начальной установки и готовности, а также схему формирования строба состояния /STB, используемого для записи байта состояния при формировании сигналов шины управления.

Как видно, адресная шина (ША) подключается ко многим устройствам. Выходы же микропроцессора КР580ВМ80А выдерживают лишь нагрузку одного входа ТТЛ-микросхем. Поэтому для повышения нагрузочной способности к шине адреса подключены специальные буферные регистры DD5 и DD6 КР580ИР82.

Увеличение нагрузочной способности двунаправленной шины данных обеспечивается с помощью микросхемы системного контроллера DD8 КР580ВК38. Она осуществляет формирование выходных сигналов не только шины данных, но и шины управления. Эта микросхема содержит двунаправленный магистральный формирователь, регистр состояния и схему формирования управляющих сигналов.

Следующий блок микроЭВМ предназначен для кратковременного и долговременного хранения данных и программ. На схеме модуля «ЮТ-88» блок памяти представлен микросхемами ПЗУ КР573РФ6 (DD10) и ОЗУ КР537РУ10 (DD12). Микросхема ПЗУ DD10 предназначены для хранения управляющей программы МОНИТОР.

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

Директивы МОНИТОРа-0
http://img-fotki.yandex.ru/get/9812/22857638.5/0_dac0b_ce6f49e3_XL.bmp

Детально описывать что и как делает каждая директива я не буду, об этом довольно подробно расписано в журнале и в книге Бартенева "От самоделок на логических элементах до микро ЭВМ" (http://zxbyte.ru/doc/ut88/ut88book.zip)

Продолжение следует...

---------- Post added at 17:48 ---------- Previous post was at 16:47 ----------

Системный разъем:
D0 – D7 - Шина данных
А0 – А15 - Шина адреса
TAPE OUT - Вывод данных на магнитофон
TAPE IN - Чтение данных с магнитофона
WAIT - Сигнал «Ожидание»
RES – Сигнал установки в исходное состояние внешних устройств
RD - Сигнал «Готовность»
C2TTL - Тактовый сигнал, синхронный с фазой С2
16MHz - Тактовый сигнал с частотой кварца Z1
/INTA - Подтверждение запроса прерывания
/JR - Чтение порта ВВ
/MW - Запись в память
/JW - Запись в порт ВВ
/MR - Чтение памяти
/STB - Стробирующий сигнал состояния
/0000h - /F000h - Сигналы выборки адресного пространства

Сборка и налаживание
Итак, приступим к сборке (полагаю, что все необходимые детали, включая печатную плату у Вас уже есть). Вот полный перечень деталей, которые понадобятся для сборки ЮТ-88 в минимальной конфигурации:

DD1 КР580ВМ80А - 1шт
DD2 КР580ГФ24 - 1шт
DD3 К176ИЕ5 - 1шт
DD4 К155ТМ2 - 1шт
DD5,DD6 КР580ИР82 - 2шт
DD7 К155ИД3 - 1шт
DD8 КР580ВК38 - 1шт
DD9, DD21 К155ЛН1 - 2шт
DD10 КР573РФ6 - 1шт
DD11, DD15 К155ЛА8 - 2шт
DD12 КР537РУ10 - 1шт
DD13, DD14 КР556РТ4 - 2шт
DD16, DD17 К155РП1 - 2шт
DD18 К155ИД4 - 1шт
DD19 К155ЛЕ4 - 1шт
DD20 К155РЕ3 - 1шт
DD22 К155ИЕ5 - 1шт
DA1 КР140УД6 - 1шт
С1, C6 22нФ - 2шт
С2 1мкФ х 16В - 1шт
С3 25пФ - 1шт
С4 47пФ - 1шт
С5, С8 0,15мкФ - 2шт
С7 68нФ 1шт
HL1 – HL6 C-401G - 6шт
R1 100 Ом - 1шт
R2, R4, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R21, R22, R24, R26, R34, R35, R36 1 кОм - 28шт
R3 5,6 кОм - 1шт
R5 560 кОм - 1шт
R6 22 МОм - 1шт
R7, R20 10 кОм - 2шт
R23 390 Ом - 1шт
R25 220 кОм - 1шт
R27, R28, R29, R30, R31, R32, R33 330 Ом - 7шт
VD1, VD2 1N4148 - 2шт
VT1 КТ315А - 1шт
Z1 16 МГц - 1шт
Z2 32768 Гц - 1шт
EP1 KPR-1720 - 1шт
Кнопки для клавиатуры TS31043N или TS33073N(под колпачок) - 18шт
Блокировочные конденсаторы - по Вашему усмотрению :)
Печатная плата - 1шт
Штыри для системного разъема - PLS 40 (DS1021-1*40) - 2шт

KeKc
08.03.2014, 18:01
В процессорном блоке ЮТ-88 используются 4 микросхемы ПЗУ: К155РЕ3, которая осуществляет преобразование двоичного кода в код семисегментных индикаторов; две КР556РТ4, на которых собран шифратор клавиатуры; КР573РФ6 в которой хранится управляющая программа МОНИТОР-0 и библиотечка программ.

Содержимое ПЗУ DD20 (К155РЕ3)

.0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
0000: 3F 06 5B 4F 66 6D 7D 07 7F 6F 77 7C 39 5E 79 71
0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Контрольная сумма 05A8h

Содержимое ПЗУ DD13 (КР556РТ4)

.0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07
0080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06
00C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05
00E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04
00F0: 00 00 00 00 00 00 00 03 00 00 00 02 00 01 00 00

Контрольная сумма 001Ch

Содержимое ПЗУ DD14 (КР556РТ4)

.0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0F
0080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0E
00C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0D
00E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0C
00F0: 00 00 00 00 00 00 00 0B 00 00 00 0A 00 09 08 07

Контрольная сумма 0063h

Содержимое ПЗУ DD10 (КР573РФ6)

.0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
0000: 31 EE C3 3E 11 C3 3B 00 C3 00 01 F7 EB C3 7D 00
0010: D5 AF 57 E7 07 C3 47 00 E5 F5 21 50 66 C3 56 00
0020: DF C3 5F 00 00 C3 00 C0 32 00 90 22 01 90 C9 00
0030: F5 D7 57 D7 5F F1 C9 00 C3 C1 00 FB 32 00 90 E7
0040: C6 F3 26 00 6F 6E E9 07 07 07 B2 57 32 00 90 E7
0050: B2 32 00 90 D1 C9 2B 7D B4 C2 56 00 F1 E1 C9 DB
0060: A0 C6 00 CA 5F 00 FE 80 CA 6E 00 E6 0F C9 2B 3B
0070: 3B AF EF D7 77 DF 23 C3 71 00 21 00 C0 E7 7E EF
0080: 23 C3 7D 00 F7 EB AF EF DF E9 21 00 C0 C3 71 00
0090: F3 F7 EB C3 71 00 AF 67 6F EF DF C6 11 FE 10 C2
00A0: 97 00 C7 21 00 C0 AF 77 7E B7 C2 BB 00 3D 77 7E
00B0: 3C C2 BB 00 23 7C E6 04 CA A6 00 7E EF E7 C3 A6
00C0: 00 F3 F5 C5 D5 E5 21 E4 00 11 FD C3 06 03 1A 3C
00D0: 27 12 BE C2 DE 00 AF 12 23 13 05 C2 CE 00 E1 D1
00E0: C1 F1 FB C9 60 60 24 C3 9A 01 C3 C2 01 C3 75 01
00F0: C3 F5 01 91 8A 7A 96 A3 0B 25 84 ED E7 EA F0 90
0100: C5 D5 F5 57 0E 08 7A 07 57 3E 01 AA D3 A1 CD 21
0110: 01 3E 00 AA D3 A1 CD 21 01 0D C2 06 01 F1 D1 C1
0120: C9 06 1E 05 C2 23 01 C9 C5 D5 0E 00 57 DB A1 5F
0130: 79 E6 7F 07 4F DB A1 BB CA 35 01 E6 01 B1 4F CD
0140: 6E 01 DB A1 5F 7A B7 F2 63 01 79 FE E6 C2 57 01
0150: AF 32 FC C3 C3 61 01 FE 19 C2 30 01 3E FF 32 FC
0160: C3 16 09 15 C2 30 01 3A FC C3 A9 D1 C1 C9 06 2D
0170: 05 C2 70 01 C9 C5 D5 E5 F5 F7 42 4B F7 2E 00 65
0180: 0A D5 5F 16 00 19 D1 CD 94 01 03 C2 80 01 EF F1
0190: E1 D1 C1 C7 7A B8 C0 7B B9 C9 C5 D5 E5 F5 F7 42
01A0: 4B F7 C5 AF 6F CF 2C C2 A5 01 3E E6 CF 78 CF 79
01B0: CF 7A CF 7B CF 0A CF CD 94 01 03 C2 B5 01 C1 C3
01C0: 7D 01 C5 D5 E5 F5 F7 3E FF CD 28 01 67 CD EE 01
01D0: 6F 19 44 4D C5 CD EE 01 67 CD EE 01 6F 19 EB CD
01E0: EE 01 02 CD 94 01 03 C2 DF 01 C1 C3 7D 01 3E 08
01F0: CD 28 01 C9 00 2A FE C3 3A FD C3 EF DF C3 F5 01
0200: CD 24 02 DA 0A 02 CD 0E 02 C7 CD 19 02 C7 1A 77
0210: CD 94 01 1B 2B C2 0E 02 C9 0A 77 CD 94 01 03 23
0220: C2 19 02 C9 F7 D5 F7 EB 22 F2 C3 E1 22 F0 C3 F7
0230: EB 22 F4 C3 7D 93 6F 7C 9A 67 22 F8 C3 4D 44 2A
0240: F2 C3 E5 09 22 F6 C3 2A F0 C3 4D 44 D1 2A F4 C3
0250: 7D 91 7C 98 D8 2A F6 C3 C9 7C BA C0 7D BB C9 CD
0260: 24 02 CD 66 02 C7 2A F4 C3 56 E5 CD B9 02 60 E3
0270: 78 FE 03 C2 A5 02 23 4E 23 46 2B E5 2A F0 C3 79
0280: 95 78 9C DA A3 02 2A F2 C3 7D 91 7C 98 DA A3 02
0290: 2A F8 C3 7D 81 5F 7C 88 57 E1 73 23 72 23 33 33
02A0: C3 AB 02 E1 2B C1 23 05 C2 A6 02 5D 54 2A F6 C3
02B0: 23 CD 59 02 EB C2 69 02 C9 01 06 03 21 D3 02 7A
02C0: A6 23 BE C8 23 0D C2 BF 02 0E 03 05 78 FE 01 C2
02D0: BF 02 C9 FF CD C7 C4 FF C3 C7 C2 E7 22 CF 01 C7
02E0: 06 C7 C6 F7 D3 F7 EB 22 F0 C3 22 F4 C3 E5 F7 EB
02F0: 22 F2 C3 22 F6 C3 F7 EB 22 FA C3 D1 7D 93 6F 7C
0300: 9A 67 22 F8 C3 CD 66 02 C7 F7 D5 F7 EB 22 F2 C3
0310: F7 EB 22 FA C3 F7 EB 22 EE C3 E1 22 F0 C3 56 E5
0320: CD B9 02 60 E3 78 FE 03 C2 4A 03 23 5E 23 56 2B
0330: E5 2A FA C3 CD 59 02 C2 48 03 2A EE C3 EB E1 73
0340: 23 72 23 33 33 C3 50 03 E1 2B C1 23 05 C2 4B 03
0350: 5D 54 2A F2 C3 23 CD 59 02 EB C2 1E 03 C7 F7 EB
0360: 22 F0 C3 4D 44 F7 6B 62 22 F2 C3 23 22 F6 C3 CD
0370: 0E 02 AF 77 E5 23 22 F4 C3 21 01 00 22 F8 C3 CD
0380: 66 02 E1 7E EF D7 77 C7 F7 EB 22 F0 C3 22 F4 C3
0390: 4D 44 E5 F7 6B 62 22 F2 C3 E1 C5 03 CD 19 02 AF
03A0: 77 2B 22 F6 C3 21 FF FF 22 F8 C3 CD 66 02 E1 C3
03B0: 7D 00 F7 4B 42 F7 D5 F7 EB D1 0A BE C2 D4 03 79
03C0: BB C2 CF 03 78 BA C2 CF 03 3E 11 6F 67 EF C7 03
03D0: 23 C3 BA 03 F5 7E EF D7 77 F1 C3 BA 03 C5 D5 E5
03E0: F5 7E EF E7 E3 3E AF EF E7 E3 69 60 3E BC EF E7
03F0: EB 3E DE EF E7 F1 E1 D1 C1 C9 FF FF FF FF FF FF

Контрольная сумма 1A4Dh

KeKc
08.03.2014, 18:05
Для тех, кто будет пользоваться библиотечкой программ к выше идущему содержимому РФ6 нужно добавить вот это:

.0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
0800: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0810: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0820: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0830: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0840: 00 00 00 00 00 00 00 00 00 21 71 C3 0E 02 7E A7
0850: FA 63 08 0D 47 21 74 C3 7E A7 FA 63 08 80 FA 6F
0860: 08 77 C9 E6 7F 2F C6 01 0D CA 5D 08 C3 54 08 2F
0870: C6 01 F6 80 C3 61 08 21 74 C3 7E A7 FA 83 08 47
0880: C3 8B 08 E6 7F 2F C6 01 C3 7F 08 21 71 C3 7E A7
0890: FA 9D 08 90 CA CC 08 FA CD 08 C3 A5 08 E6 7F 2F
08A0: C6 01 C3 93 08 4F 21 71 C3 7E 21 74 C3 77 23 7E
08B0: E6 7F 57 23 5E 97 7A 1F 57 7B 1F 37 3F 5F 0D CA
08C0: C5 08 C3 B6 08 73 2B 7E E6 80 B2 77 C9 2F C6 01
08D0: 4F 21 74 C3 7E 21 71 C3 77 23 C3 AF 08 21 73 C3
08E0: 4E 2B 7E A7 FA FF 08 47 21 76 C3 5E 2B 7E A7 FA
08F0: 0E 09 57 EB 09 EB 7A A7 FA 1D 09 72 23 73 C9 E6
0900: 7F 2F 47 79 2F C6 01 4F 3E 00 88 C3 E7 08 E6 7F
0910: 2F 57 7B 2F C6 01 5F 3E 00 8A C3 F2 08 2F 57 7B
0920: 2F C6 01 5F 3E 00 8A F6 80 57 C3 FB 08 7E A7 FA
0930: 36 09 4F C3 3E 09 E6 7F 2F C6 01 C3 32 09 23 7E
0940: E6 80 47 7E E6 7F 57 23 7E A7 CA 7E 09 5F 0D 7B
0950: 17 5F 7A 17 A7 FA 5C 09 57 C3 4E 09 1F 57 73 1F
0960: 5F 0C 7A 1F 57 7B 1F 5F 0C 73 2B 7A B0 77 2B 79
0970: A7 FA 76 09 77 C9 2F C6 01 F6 80 C3 74 09 7A A7
0980: CA 75 09 97 C3 4D 09 CD 77 08 CD DD 08 21 74 C3
0990: CD 2D 09 C9 21 72 C3 7E 21 75 C3 AE E6 80 F5 7E
09A0: E6 7F 57 23 5E 97 67 6F 06 08 3A 73 C3 1F 4F DA
09B0: C1 09 7C 1F 67 7D 1F 6F AF 05 CA C5 09 79 C3 AD
09C0: 09 19 C3 B2 09 06 06 3A 72 C3 1F 4F DA DE 09 7C
09D0: 1F 67 7D 1F 6F AF 05 CA E2 09 79 C3 CA 09 19 C3
09E0: CF 09 11 76 C3 7D 12 1B F1 B4 12 C9 CD 49 08 CD
09F0: 94 09 21 74 C3 CD 2D 09 C9 21 72 C3 7E 21 75 C3
0A00: AE E6 80 F5 7E E6 7F 57 23 5E 21 72 C3 7E E6 7F
0A10: 47 23 4E EB 16 02 1E 01 7D 91 6F 7C 98 67 FA 2D
0A20: 0A 17 3F 7A 17 57 DA 50 0A 29 C3 18 0A 17 3F 7A
0A30: 17 57 DA 5C 0A 09 29 7C B7 FA 2D 0A C3 18 0A 7D
0A40: 91 6F 7C 98 67 FA 54 0A 17 3F 7B 17 5F DA 66 0A
0A50: 29 C3 3F 0A 17 3F 7B 17 5F DA 66 0A 09 29 7C B7
0A60: FA 54 0A C3 3F 0A 21 75 C3 F1 B2 77 23 73 C9 21
0A70: 71 C3 7E 17 3F 1F 77 CD 49 08 CD F9 09 21 74 C3
0A80: CD 2D 09 21 71 C3 7E 17 3F 1F 77 C9 7E 23 46 23
0A90: 4E C9 77 23 70 23 71 C9 0E 01 16 20 1E 00 62 6B
0AA0: FE 02 D2 A8 0A C3 E6 0A 06 08 07 DA B2 0A 05 C3
0AB0: AA 0A 05 CA DB 0A F5 AF 7A 1F 57 7B 1F 5F 0C F1
0AC0: 07 D2 B2 0A 19 D2 B2 0A F5 7C 1F 67 7D 1F 6F AF
0AD0: 7A 1F 57 7B 1F 5F 0C F1 C3 B2 0A 3D FE 01 CA E6
0AE0: 0A 54 5D C3 A8 0A AF 84 FA F0 0A 29 0D C3 E6 0A
0AF0: 7C 1F 67 7D 1F 6F 0C AF 7C 1F 32 78 C3 7D 1F 32
0B00: 79 C3 0C 79 32 77 C3 C9 3A 64 C3 E6 7F CA 5E 0B
0B10: F5 21 71 C3 CD 8C 0A 21 74 C3 CD 92 0A F1 3D CA
0B20: 29 0B F5 CD EC 09 C3 1D 0B 3A 64 C3 A7 F2 6A 0B
0B30: 21 71 C3 CD 8C 0A F5 C5 21 74 C3 CD 8C 0A 21 71
0B40: C3 CD 92 0A 21 74 C3 3E 01 06 20 0E 00 CD 92 0A
0B50: CD 6F 0A C1 F1 21 71 C3 CD 92 0A C3 6A 0B 21 74
0B60: C3 3E 01 06 20 0E 00 CD 92 0A C9 3E 02 06 20 0E
0B70: 00 21 7A C3 CD 92 0A 3E 01 21 77 C3 CD 92 0A 21
0B80: 6B C3 CD 92 0A 21 64 C3 77 06 A0 21 7D C3 CD 92
0B90: 0A 21 61 C3 CD 8C 0A 21 71 C3 CD 92 0A 21 77 C3
0BA0: CD 8C 0A 21 74 C3 CD 92 0A CD 87 09 21 74 C3 CD
0BB0: 8C 0A 21 65 C3 CD 92 BA 21 7D C3 CD 8C 0A 21 74
0BC0: C3 CD 92 0A CD 87 09 21 65 C3 CD 8C 0A 21 71 C3
0BD0: CD 92 0A CD 6F 0A 21 74 C3 CD 8C BA 21 65 C3 CD
0BE0: 92 0A 21 68 C3 CD 92 0A 21 6B C3 CD 8C BA 21 71
0BF0: C3 CD 92 0A 21 7A C3 CD 8C 0A 21 74 C3 CD 92 0A
0C00: CD 87 09 21 74 C3 CD 8C 0A 21 6B C3 CD 92 0A 21
0C10: 64 C3 34 34 21 65 C3 CD 8C 0A 21 71 C3 CD 92 0A
0C20: CD 08 0B 21 6B C3 CD 8C 0A 21 71 C3 CD 92 0A CD
0C30: 6F 0A 21 68 C3 CD 8C 0A 21 71 C3 CD 92 0A CD 87
0C40: 09 21 74 C3 CD 8C 0A 21 68 C3 CD 92 0A 21 72 C3
0C50: 7E 17 3F 1F 77 CD 77 08 CD DD 08 21 75 C3 7E E6
0C60: 7F CA 67 0C C3 E8 0B 23 7E FE 02 DA 71 0C C3 E8
0C70: 0B 21 68 C3 7E A7 FA 7D 0C 3C C3 85 0C 3D E6 7F
0C80: CA 85 0C F6 80 77 C9 21 62 C3 21 64 C3 36 01 21
0C90: 61 C3 CD 8C BA 21 65 C3 CD 92 0A 21 6B C3 36 02
0CA0: 21 64 C3 34 34 7E CD 98 0A 21 61 C3 CD 8C 0A 21
0CB0: 71 C3 CD 92 0A CD 08 0B 21 77 C3 CD 8C 0A 21 71
0CC0: C3 CD 92 0A CD 6F 0A 21 6B C3 35 CA E3 0C 21 75
0CD0: C3 7E 17 3F 1F 77 2B CD 8C 0A 21 68 C3 CD 92 BA
0CE0: C3 A0 0C 21 68 C3 CD 8C 0A 21 71 C3 CD 92 0A CD
0CF0: 87 09 21 65 C3 CD 8C 0A 21 71 C3 CD 92 0A CD 87
0D00: 09 21 74 C3 CD 8C 0A 21 65 C3 CD 92 0A 21 72 C3
0D10: 7E 17 3F 1F 77 CD 77 08 CD DD 08 21 75 C3 7E E6
0D20: 7F CA 27 0D C3 9B 0C 23 7E FE 02 DA 31 0D C3 9B
0D30: 0C C9 21 62 C3 21 64 C3 36 00 23 36 01 23 36 20
0D40: 23 36 00 CD 9B 0C C9 21 62 C3 7E E6 80 F5 7E E6
0D50: 7F 77 21 64 C3 36 01 21 61 C3 CD 8C 0A 21 65 C3
0D60: CD 92 0A 23 AF 36 01 23 36 20 23 77 23 36 02 23
0D70: 36 20 23 77 23 36 02 23 36 20 23 77 21 77 C3 36
0D80: 01 23 36 20 23 77 CD EE 0D CD 34 0F CD 15 0F 21
0D90: 77 C3 CD 8C 0A 21 71 C3 CD 92 0A CD EC 09 21 65
0DA0: C3 CD 8C BA 21 71 C3 CD 92 0A CD 87 09 21 74 C3
0DB0: CD 8C 0A 21 7A C3 CD 92 0A 21 72 C3 7E 17 3F 1F
0DC0: 77 CD 77 08 CD DD 08 21 75 C3 7E E6 7F CA DF 0D
0DD0: 21 7A C3 CD 8C 0A 21 65 C3 CD 92 0A C3 86 0D 23
0DE0: 7E FE 02 D2 D0 0D 21 66 C3 46 F1 B0 77 C9 21 6E
0DF0: C3 CD 8C 0A 21 71 C3 CD 92 0A 21 6B C3 CD 8C 0A
0E00: 21 74 C3 CD 92 0A CD 87 09 21 74 C3 CD 8C 0A 21
0E10: 6E C3 CD 92 0A 21 68 C3 CD 8C 0A 21 74 C3 CD 92
0E20: 0A CD 6F 0A 21 77 C3 CD 8C 0A 21 71 C3 CD 92 0A
0E30: CD EC 09 21 74 C3 CD 8C 0A 21 77 C3 CD 92 0A C9
0E40: CD 47 0D CD 92 0F C9 CD 32 0D 21 65 C3 CD 8C 0A
0E50: 21 7B C3 CD 92 0A CD 87 0C 21 65 C3 CD 8C 0A 21
0E60: 74 C3 CD 92 0A 21 7B C3 CD 8C 0A 21 71 C3 CD 92
0E70: 0A CD 6F 0A C9 21 62 C3 7E E6 80 F5 7E E6 7F 77
0E80: 21 64 C3 36 01 23 AF 77 23 77 23 77 23 36 01 23
0E90: 36 20 23 77 23 36 02 23 36 20 23 77 CD 15 0F 21
0EA0: 74 C3 CD 8C 0A 21 6E C3 CD 92 0A CD 34 0F CD 15
0EB0: 0F 21 75 C3 7E 17 3F 1F 77 21 6E C3 CD 8C 0A 21
0EC0: 71 C3 CD 92 0A CD 87 09 21 65 C3 CD 8C 0A 21 71
0ED0: C3 CD 92 0A CD 87 09 21 74 C3 CD 8C 0A 21 65 C3
0EE0: CD 92 0A 21 72 C3 7E 17 3F 1F 77 CD 77 08 CD DD
0EF0: 08 21 75 C3 7E E6 7F CA 00 0F CD 34 0F C3 9C 0A
0F00: 23 7E FE 02 DA 0D 0F CD 34 0F C3 9C 0E 21 66 C3
0F10: 46 F1 B0 77 C9 21 61 C3 CD 8C 0A 21 71 C3 CD 92
0F20: 0A CD 08 0B 21 68 C3 CD 8C 0A 21 71 C3 CD 92 0A
0F30: CD 6F 0A C9 21 64 C3 34 34 21 68 C3 CD 8C 0A 21
0F40: 71 C3 CD 92 0A 21 6B C3 CD 8C 0A 21 74 C3 CD 92
0F50: 0A CD 87 09 21 74 C3 CD 8C 0A 21 68 C3 CD 92 0A
0F60: C9 CD 87 0C 21 65 C3 CD 8C 0A 21 7B C3 CD 92 0A
0F70: CD 32 0D 21 65 C3 CD 8C 0A 21 74 C3 CD 92 0A 21
0F80: 7B C3 CD 8C 0A 21 71 C3 CD 92 0A CD 6F 0A C9 CD
0F90: 75 0E 21 65 C3 CD 8C 0A 21 71 C3 CD 92 0A 2B 7E
0FA0: 17 3F 1F 77 23 23 36 01 23 36 32 23 36 42 CD 87
0FB0: 09 21 74 C3 CD 8C 0A 21 65 C3 CD 92 0A C9 C3 87
0FC0: 09 C3 EC 09 C3 6F 0A C3 C7 0F C3 98 0A C3 08 0B
0FD0: C3 D0 0F C3 6B 0B C3 87 0C C3 32 0D C3 47 0D C3
0FE0: 40 0E C3 75 0E C3 61 0F C3 47 0E C3 8F 0F C3 49
0FF0: 08 C3 DD 08 C3 94 09 C3 F9 09 C3 8C 0A C3 92 0A
Контрольная сумма 5007h

Скачать все прошивки можно здесь (http://v-50m.narod.ru/UT88_rom.zip)

crazy_bender/ex-PLACEBO
09.03.2014, 20:00
блин опять творите "вещь в себе"!!!! кто может его спаять тот и так все это знает или знает у кого спросить, благо что вы все здесь )))) ФАК лучше сделать для пользователей и програмистов. иначе реально спаяете и на полку поставите. У этого компа и так софта на 2х пятидюймовых дискетах уместится. а без нормального описания и не прибавится. мне вот интересно например запустить эмулятор и что то там сделать. или написать что то под него. а где мне взять информацию про порты и экран например? или как там что то вызывать и куда загружать?
Давайте делать полноценный мануал чтоли ))) ведь уже какую то музыку прикрутили к нему

KeKc
09.03.2014, 21:04
Погодите, все будет, написать полный ФАК за день-два я не могу))

KeKc
12.03.2014, 18:49
Вот, наконец, мы и подошли к ответственному - к сборке

Сборку компьютера начинают с установки всех конденсаторов и резисторов, затем устанавливают транзистор VT1, диоды, кварцевые резонаторы и светодиодные индикаторы. Устанавливаем микросхемы DD18, DD21, DD22. Подаем питание на схему. На этом этапе проверки достаточно подключить только источник питания с напряжением +5В. На всех индикаторах должны высветиться восьмерки. Если наблюдается свечение только одного индикатора – проверяют исправность элементов C7, R23, DD21.3, DD21.4, DD22. Если индикаторы не светятся вообще, в первую очередь проверяют микросхему DD18. Если какой-либо сегмент не светится – проверяют исправность резисторов R27 – R33.

Устанавливаем ПЗУ DD20. После подачи питания на всех индикаторах должно высветиться «F». Высвечивание других символов говорит о неисправности ПЗУ, неверно запрограммированных кодах или замыкании на адресных линиях этой микросхемы.
Устанавливаем микросхемы DD9, DD16 и DD17. Выводы 12 микросхем DD16 и DD17 соединяют с общим проводом, выводы А0 и А1 на системном разъеме также соединяют с общим проводом. На индикаторах должен появиться код «FFFF FF». Поочередно соединяя выводы D0…D7 на системном разъеме, убеждаются в отображении соответствующих кодов на двух правых индикаторах. При соединении вывода D0 с общим проводом на индикаторах должен появиться код «FE», при соединении вывода D1 - «FD», при соединении вывода D2 - «FB» и т.д.

Если блок индикации работает исправно, переходим к проверке клавиатуры. Для этого устанавливают микросхемы DD13, DD14 и DD15. Вывод 11 микросхемы DD21.5 соединяют с шиной +5В (при применении в качестве DD21 К155ЛН1 или К555ЛН1, вывод 11 можно не соединять с шиной +5В). Нажимая на различные клавиши, убедитесь в индикации на двух правых индикаторах кодов нажатых клавиш. Когда не нажата ни одна клавиша, должен высвечиваться код «00».

Если клавиатура работает исправно – устанавливают на плату все остальные микросхемы, кроме DD3, DD4, DA1. Вывод 11 микросхемы DD21 отключают от шины +5В. Выводы 12 микросхем DD16 и DD17 отключают от общего провода, снимают перемычку с системного разъема. После подачи питания (начиная с этого момента, нужно подавать все три питающих напряжения: +5В, +12В, -5В), нажмите кнопку «Уст». На крайних справа индикаторах должны высветиться две единички. Нажимают клавишу «3», при этом на индикаторах дисплея выводятся последовательно все шестнадцатеричные цифры от 0 до F. Если компьютер не реагирует на нажатие клавиш - соберите на отдельной плате отладочный узел и проверьте с его помощью поцикловое исполнение программы МОНИТОР микропроцессором.

http://img-fotki.yandex.ru/get/9801/22857638.5/0_db507_d238c006_L.bmp

При однократном нажатии на клавишу «Шаг» микропроцессор переходит в состояние ожидания, что позволяет на индикаторах дисплея контролировать считываемые из ПЗУ коды и их исполнение. Выводы 12 микросхем DD16 и DD17 при этом соединяют с общим проводом. Поскольку микросхема DD11 имеет выход с открытым коллектором, ее можно не отключать от микросхем DD16 и DD17.
После нажатия кнопки «Уст» на правом индикаторе должен появиться код «31». Последовательно нажимая кнопку «Шаг» на отладочном модуле, проконтролируйте выполнение первых команд МОНИТОРа. В частности, после двенадцати нажатий на правом индикаторе должны появиться две единички при этом на адресной шине должен быть код адреса /9000Н, а на шине управления — активный сигнал /MW (в журнале, по ошибке, написано про 9 нажатий; после 9 нажатий на индикаторе должен быть код «32»).

http://img-fotki.yandex.ru/get/9751/22857638.5/0_db509_b6be3c03_L.bmp

После устранения обнаруженных неисправностей, добившись исполнения первых команд МОНИТОРа в шаговом режиме, отключите дополнительный узел.
Если по-прежнему компьютер не реагирует на нажатие клавиш – проверяют осциллографом сигнал выборки клавиатуры на выводе 10 микросхемы DD21.5. В случае наличия на выводе 10 DD21.5 постоянного логического уровня проверяют исправность микросхем DD9, DD11, DD19, DD21. Если указанные микросхемы исправны, но на выводе 10 DD21.5 по-прежнему нет импульсов, проверяют осциллографом наличие импульсов на выводе 18 DD12. Импульсы есть – заменяют ОЗУ DD12, если импульсов нет – проверяют исправность микросхемы DD7.
Установите микросхемы DD3, DD4 и пьезодинамик EP1, и, нажав клавишу «В», проверьте индикацию времени, смену показаний на правом индикаторе каждую секунду. Опробуйте директиву установки времени «С». Затем переходят к проверке директив работы с кассетным магнитофоном. Для проверки директивы «9» соедините выход 9 микросхемы DD4.2 со входом осциллографа, нажмите на клавишу «9» и наберите адреса D000H — FFFFH. На экране должна появиться непрерывная последовательность импульсов, а в динамике ЕР1 должен появится характерный звук.
Записанную на магнитофон информацию используют для проверки работы формирователя импульсов на микросхеме DA1.
Устанавливают микросхему DA1 и включают магнитофон на воспроизведение. С помощью осциллографа проверяют наличие на выводе 6 микросхемы DA1 последовательности прямоугольных импульсов.

Хочу добавить, что этот вариант ЮТ-88 уже многие из здесь присутствующих собрали. В случае, если все детали исправны, никаких танцев с бубном и шаманских обрядов проводить не придется, компьютер начинает работать сразу же после включения.

KeKc
12.03.2014, 21:03
Мы потихоньку подошли к довольно важному моменту – как же все-таки работать на этом компьютере, ибо нафига мы тогда его собирали?

В минимальной конфигурации у ЮТ-88 нет графического дисплея и полноценной клавиатуры, возможности его не столь велики, как у «РК-86» или «Специалиста», хотя кое-что на нем все же можно «замутить». Калькулятор, например или будильник….

Прежде чем идти тыкать на кнопочки, нужно познакомиться с системой команд микропроцессора КР580ВМ80А, потому, что без этих знания Вы практически ничего не сможете сделать, разве что запустить уже существующие программы, которые можно пересчитать по пальцам… на одной руке…

Микропроцессор (МП) КР580ВМ80А с точки зрения программиста может быть представлен в виде модели, включающей в себя следующее:
- шесть 8-битных регистров общего назначения B, C, D, E, H и L, которые при выполнении некоторых команд объединяются в 16-битные регистровые пары, обозначаемые по имени старшего регистра B, D и H;
- основной рабочий регистр микропроцессора - 8-битный аккумулятор A, используемый по умолчанию во многих командах микропроцессора;
- регистр признаков F, в котором при выполнении команд обработки данных в зависимости от полученного результата формируется 5 признаков:
* S (Sign) - признак знака, устанавливаемый в 1 в случае отрицательного результата и сбрасываемый в 0 при положительном результате;
* Z (Zero) - признак нуля, устанавливаемый в 1 в случае нулевого результата и сбрасываемый в 0 при ненулевом результате;
* CY (Carry) - признак переноса (CY=1, если был перенос из старшего разряда результата при сложении или заем в старший разряд при вычитании, иначе CY=0);
* P (Parity) - признак четности, устанавливаемый в 1 в случае четного числа единиц в результате и сбрасываемый в 0 при нечетном числе единиц;
* AC (Auxiliary carry) - признак полупереноса, т.е. переноса из младшей тетрады результата в старшую, используемый при обработке чисел в двоично-десятичном коде (тетрада - четыре двоичных разряда).
Аккумулятор с регистром признаков при выполнении операций со стеком объединяются в 16-битное слово состояния программы PSW (Program state word);
- 16-битный счетчик команд PC (Program counter), в котором формируется адрес подлежащей выполнению команды. После выборки из памяти очередного командного слова содержимое PC автоматически увеличивается на единицу, образуя таким образом адрес следующего по порядку командного слова;
- 16-битный указатель стека SP (Stack pointer), используемый для обращения к стековой памяти, в качестве которой используется произвольная область оперативной памяти. В указателе стека хранится адрес вершины стека, уменьшаемый на 1 перед записью очередного информационного слова в стек и увеличиваемый на 1 после чтения очередного слова из стека.

Таблица команд микропроцессора КР580ВМ80А (i8080А)
http://img-fotki.yandex.ru/get/9816/22857638.5/0_db53b_f2b148f0_XL.bmp (http://img-fotki.yandex.ru/get/9816/22857638.5/0_db53b_f2b148f0_XXXL.bmp)

Форматы команд и способы адресации

Формат команды показывает, из каких составных частей она состоит, а также определяет функциональное назначение этих частей. Говоря о формате команд, прежде всего, обращают внимание на длину команды. Длина команды может быть в один, два или три байта.
Формат команд во многом зависит от способа адресации, используемого в команде. Под адресацией понимают способ указания нахождения операндов, над которыми данная команда совершает те или иные действия.
Микропроцессор КР580ВМ80А имеет четыре различных способа адресации данных, хранимых в памяти или в регистрах.

Прямая адресация. Второй и третий байты команды содержат адрес данных в памяти.

Регистровая адресация. В коде команды адресуется регистр или пара регистров, в которых хранятся данные.

Косвенно-регистровая адресация. Команда выбирает регистровую пару, в которой содержится адрес ячейки памяти.

Непосредственная адресация. Данные, которые могут быть 8- или 16-битными, представлены в теле команды - во втором и третьем байтах.

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

Прямой адресацией. Команда передачи управления содержит адрес команды, которая должна выполняться следующей.

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

Адресацией по номеру подпрограммы. Команда RST является специальной однобайтной командой перехода к фиксированной подпрограмме, используемой обычно для реализации прерываний. Команда RST имеет 3-битное поле, в котором содержится код, соответствующий одному из восьми возможных начальных адресов подпрограммы.

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

Во втором байте двухбайтных команд содержатся 8-битные данные или номер порта ввода-вывода. Во втором и третьем байтах трехбайтных команд содержится адрес ячейки памяти или данные двойной длины (16-битные данные), причем во втором байте указывается младшая часть адреса или данных, а в третьем - старшая часть адреса или данных.

С функциональной точки зрения команды микропроцессора КР580ВМ80А можно разбить на три основных типа - команды передачи данных, команды обработки данных и команды управления, причем каждую из указанных групп команд для удобства их рассмотрения можно дополнительно подразделить на несколько подгрупп.

Ниже приводятся символы и аббревиатуры, которые используются при описании команд микропроцессора КР580ВМ80А.

< > - Содержимое ячейки памяти или регистров, символическое имя которых заключено в скобки
M( ) - Ячейка памяти, адрес которой указывается в скобках
R, R1- Регистры A, B, C, D, E, H, L или ячейка памяти M(<HL>)
RP - Регистровые пары B, D, H или регистр SP
RP' - Регистровые пары B или D
RP'' - Регистровые пары B, D, H или PSW
ADR - 16-битный адрес
D8 - 8-битные данные
D16 - 16-битные данные
N8 - битный номер порта ввода-вывода
→ Оператор пересылки
 Оператор обмена
X - Номер фиксированной подпрограммы от 0 до 7
CON - Часть мнемонического обозначения команд условной передачи управления, отражающая проверяемое в команде условие

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

KeKc
12.03.2014, 21:14
Команды передачи данных
Группа команд передачи реализует операции обмена данными между регистрами, памятью и портами ввода-вывода. Ни одна из команд данной группы не изменяет содержимое регистра признаков.

MOV R1, R (Move)
<R> → R1
Содержимое регистра R передать в регистр R1. Число машинных циклов и
тактов зависит от того, выполняется ли обращение к ячейке памяти M(<HL>).
Циклов: 1 / 2
Тактов: 5 / 7
Признаки: отсутствуют

LDAX RP' (Load accumulator indirect)
<M(<RP'>)> → A
Содержимое ячейки памяти, адресуемой регистровой парой RP', передать в
аккумулятор. Могут использоваться только регистровые пары В и D.
Циклов: 2
Тактов: 7
Признаки: отсутствуют

STAX RP' (Store accumulator indirect)
<A> → M(<RP'>)
Содержимое аккумулятора передать в ячейку памяти, адресуемую регистро-
вой парой RP'. Могут использоваться только регистровые пары В или D.
Циклов: 2
Тактов: 7
Признаки: отсутствуют

XCHG (Exchange H and L with D and E)
<H> → <D>; <L> → <E>
Содержимое регистров Н и L взаимно обменять с содержимым регистров D и
Е.
Циклов: 1
Тактов: 4
Признаки: отсутствуют

SPHL (Move HL to SP)
<HL> → SP
Содержимое регистров Н и L занести в регистр SP.
Циклов: 1
Тактов:5
Признаки: отсутствуют

Команды загрузки непосредственных данных

MVI R, D8 (Move Immediate)
D8 → R
Содержимое второго байта команды передать в регистр R.
Циклов: 2 / 3
Тактов: 7 / 10
Признаки: отсутствуют

LXI RP, D16 (Load register pair immediate)
D16 → RP
Байт 2 команды передать в младший регистр регистровой пары RP. Байт 3 команды передать в старший регистр регистровой пары RP.
Циклов: 3
Тактов: 10
Признаки: отсутствуют

Команды обращения к памяти с прямой адресацией

LDA ADR (Load Accumulator direct)
<M(ADR)> → A
Содержимое ячейки памяти, адресуемой во втором и третьем байтах команды, передать в аккумулятор.
Циклов: 4
Тактов: 13
Признаки: отсутствуют

STA ADR (Store Accumulator direct)
<A> → M(ADR)
Содержимое аккумулятора передать в ячейку памяти, адресованную во втором и третьем байтах команды.
Циклов: 4
Тактов: 13
Признаки: отсутствуют

LHLD ADR (Load H and L direct)
<M(ADR)> → L; <M(ADR+1)> → H
Содержимое ячейки памяти, адресуемой во втором и третьем байтах команды, передать в регистр L. Содержимое ячейки памяти по следующему адресу
передать в регистр H.
Циклов: 5
Тактов: 16
Признаки: отсутствуют

SHLD ADR (Store H and L direct)
<L> →M(ADR); <H> → M(ADR+1)
Содержимое регистра L передать в ячейку памяти, адресуемую во втором и третьем байтах. Содержимое регистра Н передать в ячейку памяти с последующим адресом.
Циклов: 5
Тактов: 16
Признаки: отсутствуют

Команды обращения к стеку

PUSH RP'' (Push)
<RP''> → M(<SP>-1)M(<SP>-2); <SP>-2 → SP
Запись в стек. Содержимое старшего регистра регистровой пары RP'' перемещается в ячейку памяти, адрес которой на единицу меньше исходного содержимого регистра SP. Содержимое младшего регистра регистровой пары RP'' помещается в ячейку памяти, адрес которой меньше исходного содержимого регистра SP на 2. Содержимое самого регистра SP уменьшается на 2.
Циклов: 3
Тактов: 11
Признаки: отсутствуют

POP RP'' (Pop)
< M(<SP>)M(<SP>+1)> → RP''; <SP>+2 → SP
Чтение из стека. Содержимое ячейки памяти, адрес которой определяется содержимым регистра SP, засылается в младший регистр регистровой пары RP''. Содержимое ячейки памяти, адрес которой на единицу больше исходного содержимого регистра SP, засылается в старший регистр регистровой пары RP''. Содержимое самого регистра SP увеличивается на 2.
Циклов: 3
Тактов: 10
Признаки: устанавливаются только при выполнении команды POP PSW

XTHL (Exchange stack top with H and L)
<H>  <M(<SP>+1)>; <L>  <M(<SP>)>
Обмен содержимым регистровой пары H с вершиной стека. Регистр L обменивается содержимым с ячейкой памяти, адрес которой определяется содержимым регистра SP. Регистр Н обменивается содержимым с ячейкой памяти, адрес которой на единицу больше содержимого регистра SP.
Циклов: 5
Тактов: 18
Признаки: отсутствуют

Команды ввода-вывода

IN N (Input)
<N> → A
Данные, выданные адресуемым портом, передаются в аккумулятор.
Циклов: 3
Тактов: 10
Признаки: отсутствуют

OUT N (Output)
<A> → N
Содержимое аккумулятора выдается в адресуемый порт.
Циклов: 3
Тактов: 10
Признаки: отсутствуют

Команды обработки данных

Данная группа команд выполняет арифметические, логические и сдвиговые операции с данными, находящимися в регистрах и памяти. Все команды этой группы (за некоторым исключением) изменяют признаки состояния Z, S, P, CY, AC. Операции вычитания выполняются путем сложения с дополнением к вычитаемому, при этом признак ПЕРЕНОС выполняет функции признака ЗАЕМ.

Арифметические команды

ADD R (Add)
<A> + <R> → A
Содержимое регистра R сложить с содержимым аккумулятора, результат операции разместить в аккумуляторе.
Циклов: 1 / 2
Тактов: 4 / 7
Признаки: Z, S, P, CY, АС

ADC R (Add with carry)
<A> + <R> + <CY> → A
Содержимое регистра и признака переноса сложить с содержимым аккумулятора, результат операции разместить в аккумуляторе.
Циклов: 1 / 2
Тактов: 4 / 7
Признаки: Z, S, P, CY, AC

SUB R (Subtract)
<A> - <R> → A
Содержимое регистра R вычесть из содержимого аккумулятора, результат операции разместить в аккумуляторе.
Циклов: 1 / 2
Тактов: 4 / 7
Признаки: Z, S, Р, CY, АС

SBB R (Subtract with borrow)
<A> - <R> - <CY> → A
Содержимое регистра R и значение займа из разряда CY регистра признаков вычесть из содержимого аккумулятора, результат поместить в аккумулятор.
Циклов: 1 / 2
Тактов: 4 / 7
Признаки: Z, S, Р, CY, АС

INR R (Increment)
<R> + 1 → R
Инкремент - содержимое регистра R увеличивается на 1. Устанавливаются все признаки, кроме признака переноса CY.
Циклов: 1 / 3
Тактов: 5 / 10
Признаки: Z, S, Р, АС

DCR R (Decrement)
<R> - 1 → R
Декремент - содержимое регистра R уменьшается на 1. Устанавливаются все признаки, кроме признака переноса CY.
Циклов: 1 / 3
Тактов: 5 / 10
Признаки: Z, S, Р, АС

Арифметические команды с данными двойной длины

DAD RP (Add register pair to H and L)
<HL> + <RP> → HL
Содержимое регистровой пары RP сложить с содержимым регистровой пары Н, результат поместить в регистровую пару H. Действует только признак переноса CY.
Циклов: 3
Тактов: 10
Признаки: CY

INX RP (Increment register pair)
<RP> + 1 → RP
Содержимое регистровой пары RP увеличить на 1. Все признаки не действуют.
Циклов: 1
Тактов: 5
Признаки: отсутствуют

DCX RP (Decrement register pair)
<RP> - 1 → RP
Содержимое регистровой пары RP уменьшить на 1. Все признаки не действуют.
Циклов: 1
Тактов: 5
Признаки: отсутствуют

Арифметические команды с непосредственными данными

ADI D8 (Add immediate)
<A> + D8 → A
Содержимое второго байта команды прибавить к содержимому аккумулятора, результат операции разместить в аккумуляторе.
Циклов: 2
Тактов: 7
Признаки: Z, S, P, CY, AС

ACI D8 (Add immediate with carry)
<A> + D8 + <CY> → A
Содержимое второго байта команды сложить с содержимым аккумулятора и признака переноса CY, результат операции разместить в аккумуляторе.
Циклов: 2
Тактов: 7
Признаки: Z, S, Р, CY, АС

SUI D8 (Subtract immediate)
<A> - D8 → A
Содержимое второго байта команды вычесть из содержимого аккумулятора, результат поместить в аккумулятор.
Циклов: 2
Тактов: 7
Признаки: Z, S, Р, CY, АС

SBI D8 (Subtract immediate with borrow)
<A> - D8 - <CY> → A
Содержимое второго байта команды и значение займа из разряда CY регистра признаков вычесть из содержимого аккумулятора, результат поместить в аккумулятор.
Циклов: 2
Тактов: 7
Признаки: Z, S, Р, CY, АС

Логические команды

ANA R (AND)
<A> and <R> → A
Выполнить операцию логического И над содержимым регистра R и аккумулятора, результат поместить в аккумулятор. Признаки переноса CY и полупереноса AC устанавливаются в 0.
Циклов: 1 / 2
Тактов: 4 / 7
Признаки: Z, S, Р, CY, АС

ORA R (OR)
<A> or <R> → A
Произвести операцию ИЛИ над содержимым регистра R и содержимым аккумулятора, результат поместить в аккумулятор. Признаки CY и АС устанавливаются в 0.
Циклов: 1 / 2
Тактов: 4 / 7
Признаки: Z, S, Р, CY, АС

XRA R (Exclusive OR)
<A> xor <R> → A
Произвести операцию ИСКЛЮЧАЮЩЕЕ ИЛИ над содержимым регистра R и содержимым аккумулятора, результат поместить в аккумулятор. Признаки CY и АС устанавливаются в 0.
Циклов: 1 / 2
Тактов: 4 / 7
Признаки: Z, S, Р, CY, АС

СМА (Complement accumulator)
<Ā> → A
Инвертировать содержимое аккумулятора (нули становятся единицами, единицы - нулями). Признаки не действуют.
Циклов: 1
Тактов: 4
Признаки: отсутствуют

Логические команды с непосредственными данными

ANI D8 (AND immediate)
<A> and D8 → A
Произвести операцию логического И над содержимым второго байта команды и содержимым аккумулятора, результат поместить в аккумулятор. Признаки CY и АС устанавливаются в 0.
Циклов: 2
Тактов: 7
Признаки: Z, S, Р, CY, АС

ORI D8 (OR Immediate)
<A> or D8 → A
Произвести операцию ИЛИ над содержимым второго байта команды и содержимым аккумулятора, результат поместить в аккумулятор. Признаки CY и АС устанавливаются в 0.
Циклов: 2
Тактов: 7
Признаки: Z, S, Р, CY, АС

XRI D8 (Exclusive OR immediate)
<A> xor D8 → A
Произвести операцию ИСКЛЮЧАЮЩЕЕ ИЛИ над содержимым второго байта команды и содержимым аккумулятора, результат поместить в аккумулятор. Признаки CY и АС устанавливаются в 0.
Циклов: 2
Тактов: 7
Признаки: Z, S, Р, CY, АС

KeKc
12.03.2014, 21:22
Команды сдвига

RLC (Rotate left)
Содержимое аккумулятора сдвигается циклически на один разряд влево. Нулевой разряд содержимого аккумулятора и разряд CY регистра признаков приобретают значение старшего (седьмого) разряда аккумулятора, которое он имел до сдвига. Действует только признак CY.
Циклов: 1
Тактов: 4
Признаки: CY

RRC (Rotate right)
Содержимое аккумулятора циклически сдвинуть на один разряд вправо. Старший разряд аккумулятора и разряд CY регистра признаков приобретают значение младшего (нулевого) разряда аккумулятора, которое он имел до сдвига. Действует только признак CY.
Циклов: 1
Тактов: 4
Признаки: CY

RAL (Rotate left through carry)
Сдвиг влево через перенос - содержимое аккумулятора циклически сдвигается влево на один разряд, включая разряд CY регистра признаков. Младший разряд аккумулятора становится равным значению признака CY, а разряд CY регистра признаков приобретает значение старшего разряда аккумулятора. Действует только признак CY.
Циклов: 1
Тактов: 4
Признаки: CY

RAR (Rotate right through carry)
Сдвиг вправо через перенос - содержимое аккумулятора циклически сдвигается вправо на один разряд, включая разряд CY регистра признаков. Старший разряд аккумулятора становится равным значению признака CY, а разряд CY регистра признаков приобретает значение младшего разряда аккумулятора.
Действует только признак CY.
Циклов: 1
Тактов: 4

Вспомогательные команды

DAA (Decimal Adjust Accumulator)
Десятичная коррекция. 8-битное число в аккумуляторе рассматривается как две 4-битные десятичные двоично-кодированные цифры. При этом выполняется коррекция результата операции сложения по следующим правилам:
1. Если значение младших 4 бит аккумулятора больше девяти или если при знак вспомогательного переноса АС равен 1, то к содержимому аккумулятора добавляется число 6.
2. Если значение старших 4 бит аккумулятора больше десяти или если признак переноса CY равен 1, то к содержимому старших 4 бит аккумулятора добавляется число 6.
Циклов: 1
Тактов: 4
Признаки: Z, S, Р, CY, АС

СМР R (Compare)
<A> - <R>
Сравнение - содержимое регистра R вычитается из содержимого аккумулятора, причем содержимое аккумулятора остается без изменений. Регистр признаков устанавливается в зависимости от результата вычитания.
Циклов: 1
Тактов: 4
Признаки: Z, S, Р, CY, АС

CPI D8 (Compare immediate)
<A> - D8
Сравнение с константой - содержимое второго байта команды вычитается из содержимого аккумулятора причем содержимое аккумулятора остается без изменений. Регистр признаков устанавливается в зависимости от результата вычитания.
Циклов: 2
Тактов: 7
Признаки: Z, S, Р, CY, АС

STC (Set carry)
1 → CY
Значение признака переноса CY установить в 1. Остальные признаки не действуют.
Циклов:1
Тактов: 4
Признаки: CY

CMC (Complement carry)
__
<CY> → CY
Инвертировать значение разряда CY регистра признаков. Остальные признаки не действуют.
Циклов: 1
Тактов: 4
Признаки: CY

Команды управления

Назначение команд этой группы — изменение обычного последовательного хода программы, а также выполнение управляющих операций над самим микропроцессором. Команды этой группы не изменяют состояния разрядов регистра признаков.

Команды безусловной передачи управления

JMP ADR (Jump)
ADR → PC
Безусловный переход. Передать управление команде, адрес которой определяется третьим и вторым байтами текущей команды.
Циклов: 3
Тактов: 10
Признаки: отсутствуют

PCHL (Jump H and L indirect - move H and L to PC)
<HL> → PC
Безусловный переход с косвенной адресацией через регистровую пару H. Содержимое регистра H занести в восемь старших разрядов счетчика команд PC, содержимое регистра L занести в восемь младших разрядов команд PC.
Циклов: 1
Тактов: 5
Признаки: отсутствуют

CALL ADR (Call)
<PC> → M(<SP>-1)M(<SP>-2); <SP>-2 → SP; ADR → PC
Переход к подпрограмме. Старшие восемь разрядов адреса очередной команды загружаются в ячейку памяти, адрес которой на единицу меньше исходного содержимого регистра SP. Младшие восемь разрядов адреса очередной команды засылаются в ячейку памяти, адрес которой на две единицы меньше исходного содержимого регистра SP. Содержимое регистра SP уменьшается на 2. Управление передается команде, адрес которой определяется вторым и третьим байтами текущей команды.
Циклов: 5
Тактов: 17
Признаки: отсутствуют

RET (Return)
<M(<SP>)M(<SP>+1)> → PC; <SP>+2 → SP
Возврат из подпрограммы. Содержимое ячейки памяти, адрес которой определяется содержимым регистра SP, заносится на место младших восьми разрядов в счетчик команд PC. Содержимое ячейки памяти, адрес которой на единицу больше исходного содержимого регистра SP, заносится на место старших восьми разрядов в счетчик команд PC. Содержимое регистра SP увеличивается на 2.
Циклов: 3
Тактов: 10
Признаки: отсутствуют

RST X (Restart)
<PC> → M(<SP>-1)M(<SP>-2); <SP>-2 → SP; 8*X → PC
Переход к фиксированной подпрограмме. Восемь старших разрядов адреса очередной команды заносятся в ячейку памяти, адрес которой на единицу меньше исходного содержимого регистра SP. Восемь младших разрядов адреса очередной команды заносятся в ячейку памяти, адрес которой меньше исходного одержимого регистра SP на 2. Содержимое регистра SP уменьшается на 2. правление передается команде, адрес которой определяется как номер фикси ованной подпрограммы X, умноженный на 8 (для X=0 адрес – 0000H, для X=1 дрес – 0008H, для X=2 адрес – 0010H, для X=3 адрес – 0018H, …, для X=7 адрес – 0038H).
Циклов: 3
Тактов: 11
Признаки: отсутствуют

Команды условной передачи управления

Мнемонические обозначения команд условной передачи управления включают символы –CON, обозначающие проверяемое в команде условие – нулевое или ненулевое значение признаков нуля Z, переноса CY, четности P или знака S (см. табл. 4). Таким образом, для каждой из команд возможно 8 вариантов. Например, варианты команд условного перехода: JZ, JNZ, JNC, JC, JPO, JPE, JP, JM.

J-CON ADR (Conditional jump)
Если CON=1, то ADR → PC
Условный переход. Если условие истинно, то адрес перехода по программе определяется содержимым второго и третьего байтов команды, в противном случае продолжается выполнение программы
Циклов: 3
Тактов: 10
Признаки: отсутствуют

С-CON ADR (Condition call)
Если CON=1, то <PC> → M(<SP>-1)M(<SP>-2); <SP>-2 → SP; ADR → PC
Условный переход к подпрограмме. Если условие истинно, то действия определяются выполнением команды CALL (см. выше), в противном случае продолжается выполнение программы.
Циклов: 3 / 5
Тактов: 11 / 17
Признаки: отсутствуют

R-CON (Condition return)
Если CON=1, то <M(<SP>)M(<SP>+1)> → PC; <SP>+2 → SP
Условный возврат из подпрограммы. Если условие истинно, то действия определяются выполнением команды RET (см. выше), в противном случае продолжается выполнение программы.
Циклов: 1 / З
Тактов: 5 / 11
Признаки: отсутствуют

Специальные команды управления

HLT (Halt)
Приостановка микропроцессора. Содержимое регистров и признаков не изменяется.
Циклов: 1
Тактов: 7
Признаки: отсутствуют

El (Enable interrupts)
Разрешена работа системы прерываний после выполнения следующей команды.
Циклов: 1
Тактов: 4
Признаки: отсутствуют

DI (Disable interrupts)
Запрещена работа системы прерываний непосредственно после данной команды.
Циклов: 1
Тактов: 4
Признаки: отсутствуют

NOP (No operations)
Пустая операция. Содержимое регистров и признаков не изменяется,
Циклов: 1
Тактов: 4
Признаки: отсутствуют

HardWareMan
13.03.2014, 08:36
TAPEIN и TAPEOUT на схеме перепутаны.

KeKc
13.03.2014, 22:43
Это было небольшое отступление, вернемся к ЮТ-88. После подачи питания на крайних справа индикаторах появляются две единички (если высвечивается что-то другое, нажимаем кнопку «Уст»). Появление единичек говорит о том, что ЭВМ ждет от нас ввода команды с клавиатуры. Давайте познакомимся с директивами МОНИТОРа-0. Для тех, кто забыл, напомню, что МОНИТОР – это вовсе не экран, как многие могут подумать. В данном случае МОНИТОР – это управляющая программа, осуществляющая взаимодействие микропроцессора с клавиатурой, дисплеем, ОЗУ и пр. Управляет вводом и исполнением других программ.

Все директивы МОНИТОРа задаются шестнадцатеричными цифрами и могут содержать дополнительно до трех параметров. Параметры также вводятся в виде шестнадцатеричных чисел. Их набирают после ввода директивы и контролируют по индикации на дисплее. Поскольку в МОНИТОРе на крайний справа индикатор выводится информация аккумулятора (адрес индикатора 9000H), а на два других индикатора — информация из регистровой пары HL (адреса 9002Н, 9001Н), то в дальнейшем мы эти индикаторы так и будем называть: индикатор А, индикаторы HL.

Если теперь нажать кнопку «3», запустится подпрограмма тестирования дисплея (напомню, что дисплей – это шесть семисегментных индикаторов). На все индикаторы последовательно выводятся шестнадцатеричные цифры от «0» до «F» с интервалом около 0.5с. Работа подпрограммы завершается появлением двух единичек на правом индикаторе. После этого можно вводить новую директиву.

Директива «4» позволяет тестировать ОЗУ микроЭВМ. После нажатия клавиши «4» на индикаторах появляется код «С400 FF», что означает, что вся область ОЗУ от C000H до C3FFH исправна. Тестирование ОЗУ производится последовательной записью в каждую ячейку сначала нулей и их чтением с проверкой на ноль, а затем записью единиц с последующей проверкой качества записи. Если какая-то ячейка памяти неисправна, то ее адрес выводится на индикатор HL. Для завершения работы подпрограммы, нужно нажать кнопку «Уст». Пользоваться этой директивой нужно осторожно, так как после прохождения теста ОЗУ все его ячейки заполнятся единичками.

В МОНИТОРе также есть директива индикации времени, для чего достаточно нажать кнопку «В». При этом на индикатор HL выводятся часы и минуты, а на индикатор А — секунды. Точность хода часов определяется стабильностью генератора на К176ИЕ5.

Чтобы установить время нужно воспользоваться директивой «С». После нажатия кнопки «С» прерывания запрещаются. Затем следует набрать «C3FD» и последовательно ввести значение секунд, минут и часов. После этого по сигналам точного времени надо нажать кнопку «Уст», пустив тем самым часы и разрешив прерывания. Предположим, нам нужно выставить время 12ч 35мин 47сек. В этом случае должна соблюдаться следующая последовательность нажатия на клавиши: С С 3 F D 4 7 3 5 1 2. Для запуска часов нажимаем клавишу «Уст». Отмечу, что опрос клавиатуры происходит с периодичностью около 0.5с, поэтому, если мы будем быстро нажимать на кнопки, не все нажатия будут обработаны!

Рассмотрим теперь директивы работы с памятью. Их здесь четыре.

Директива «2» позволяет просматривать содержимое ячеек ОЗУ, начиная с адреса С000Н. Для этого, после сброса ЭВМ в начальное состояние (кнопкой «Уст»), нажимают клавишу «2», затем любую клавишу (кроме «Шаг назад» и «Уст»). На индикаторах HL появится код «С000», а на индикаторе А содержимое этой ячейки. Нажатия на любую клавишу (кроме «Шаг назад» и «Уст»), приводят к отображению содержимого следующей ячейки.

Директива «5» позволяет просматривать ячейки памяти ОЗУ, начиная с любого адреса. После нажатия кнопки «5» вводится адрес интересующей ячейки, который сначала индицируется побайтно на индикаторе А, а затем выводится на индикаторы HL. На индикаторе А будет написано содержимое ячейки памяти. Следующие ячейки просматриваются нажатием на любую кнопку. Предположим, что нам нужно узнать содержимое ячейки с адресом C0A3H. В этом случае должна соблюдаться следующая последовательность нажатия на клавиши: 5 С 0 А 3. После этого нажимают на любую клавишу (кроме «Шаг назад» и «Уст») и содержимое ячейки появляется на индикаторе А. Последующие нажатия на клавиши, как и в предыдущем случае, приводят к отображению содержимого следующих ячеек.

Директива «1» позволяет осуществлять запись данных в ОЗУ с адреса C000H. После нажатия на кнопку «1» на индикаторах HL появляется код «С000», а на индикаторе А — «00». Последующее нажатие на кнопки приводит к занесению данных в ячейки ОЗУ. Вводимые данные отображаются на индикаторе А, а на индикаторах HL выводятся адреса загружаемых ячеек памяти. Переход от ячейки к ячейке происходит автоматически, с задержкой около 0.5с. Так, если после ввода директивы «1» оставить нажатой эту кнопку, то, начиная с ячейки памяти с адресом C000H, во все последующие ячейки будут записываться единицы.

Директива «0» аналогична директиве «1», однако отличается от нее тем, что после нажатия кнопки «0» необходимо ввести параметр — адрес, начиная с которого будет осуществляться запись данных в ОЗУ. Адрес ячейки памяти при этом индицируется на индикаторе А, а затем, после ввода адреса, появляется уже на индикаторе HL. На индикаторе А высвечивается «00». После этого вводится новая информация в эти и последующие ячейки памяти. Предположим, что начиная с ячейки C0В8H нам нужно записать следующие данные: FA 63 0B 47, т.е в ячейку «C0В8» нужно записать «FA», в ячейку «C0В9» нужно записать «63», в ячейку «C0ВА» - «0В», в ячейку «C0ВВ» - «47». Последовательность нажатия на клавиши должна быть такой: 0 С 0 В 8 F A 6 3 0 B 4 7. После того как все данные будут записаны в ОЗУ, нажимают клавишу «Уст».

А что делать, если, скажем, при вводе данных мы ошиблись, и в ячейку «C0В9» вместо «63» записали, например, «68»? Вот тут нас выручит клавиша «Шаг назад». После нажатия на эту клавишу, адрес текущей ячейки уменьшается на 1, а на индикаторе А появляется код «00». Теперь можно вводить новые данные в эту ячейку, после чего адрес текущей ячейки вновь увеличивается на 1. Если исправлять содержимое последующих ячеек не нужно, просто жмем клавишу «Уст».

При работе с памятью полезной может оказаться директива вычисления контрольной суммы. Чтобы получить ее, необходимо нажать на кнопку «8», а затем ввести два параметра — начальный и конечный адрес области памяти, в которой находится контрольная сумма. Контрольная сумма выводится на индикаторы HL.

Для работы с магнитофоном есть две директивы: одна для записи, вторая для чтения.

Идентифицировать запись можно по выводимой при записи и чтении на индикатор HL контрольной суммы информации. Это своего рода паспорт записи.

Для записи данных на ленту нажимают кнопку «9», а затем вводят два параметра — начальный и конечный адрес данных. После набора директивы перед вводом младшего байта конечного адреса включают на запись магнитофон и лишь затем вводят последний байт адреса. Пусть нам нужно записать на ленту данные с адреса «011А» по «04DE». В этом случае поступают следующим образом. Ко входу магнитофона подключают выводы «TAPEOUT» и «GND». Последовательность нажатия на клавиши такая: 9 0 1 1 А 0 4 D. После этого включают магнитофон на запись и вводят последнюю цифру конечного адреса, т.е. в нашем случае – E. После этого начинается запись информации на ленту. Скорость записи фиксированная — 1500 бит/с. При выполнении этой директивы на ленту последовательно записываются 256 байт 00, Е6 (байт синхронизации), младший байт начального адреса, старший байт начального адреса, младший байт конечного адреса и старший байт конечного адреса. Завершение выполнения директивы индицируется появлением на индикаторе HL контрольной суммы.

Чтение данных с магнитной ленты в ОЗУ производится по директиве «А». Линейный выход магнитофона подключается к выводам «TAPEIN» и «GND» на системном разъеме. Директива имеет один параметр — смещение. Если смещение равно 0000, то программа считывается в адреса, из которых она была записана. Если запись считана верно, то на индикаторах HL выводится контрольная сумма, которая индицировалась при записи. Итак, чтение записи с магнитофона начинают нажатием кнопки «А» и вводом смещения. Перед вводом последнего полубайта смещения, магнитофон включается на воспроизведение, и с началом записи (однотонное звучание) вводится последний полубайт смещения. Считывание записи завершается индикацией контрольной суммы данных, введенных в ОЗУ.

В заключении рассмотрим последние две директивы. Это директивы запуска программ.

С помощью директивы «6» осуществляется запуск программы с адреса C000H, а с помощью директивы «7» программа может быть запущена с адреса, который вводится как параметр директивы. Нажав кнопку «7», набирают адрес пуска программы, контролируя ввод побайтно на индикаторе А. Например, нужно запустить программу с адреса C019H. В этом случае должна соблюдаться следующая последовательность нажатия на клавиши: 7 С 0 1 9. Сразу же после ввода адреса, он появляется на индикаторах HL. Через 0.5с происходит запуск программы.

Продолжение следует…

crazy_bender/ex-PLACEBO
14.03.2014, 22:54
здорово!!!!! увидел жызнь )))))) теперь неплохо бы конфигурацию в максималке, ту что вы будете ваять. и не плохо бы разбор какой нить программы - интересно где располагать, как запускать и тд

Elvys
15.05.2014, 11:31
TAPEIN и TAPEOUT перепутаны.
Да какая разница, если эти TAPE уже лет пятнадцать как не производит никто :)
З.Ы. Из описания, понял что все порты ввода и вывода - суть ячейки памяти. И чего ради авторы туда ВК28 вставили? :o

VovanRK86
15.05.2014, 11:42
если эти TAPE уже лет пятнадцать как не производит никто
У меня есть и пока пользуюсь, а МРЗ разве не TAPE?




Из описания, понял что все порты ввода и вывода - суть ячейки памяти
Это в минималке так, в максимуме порты уже есть ВИ53, ВВ55, AY, порт конфигурации, да и дисплей семисегментник на порт переведён.

KeKc
15.05.2014, 11:58
У нас 15 лет как 15 дней, так что достать магнитофон - не проблема. Сам юзаю магнитофон 1985 г.в. Куда большей проблемой является отсутствие (почти) софта для ЮТ-88. Для программ ЮТа, я выделил целую кассету, а в итоге она так и лежит практически пустой. На нее записано всего-то 4 программы. Ну и как верно заметил Vovan - MP3 рулит:v2_smile:


З.Ы. Из описания, понял что все порты ввода и вывода - суть ячейки памяти. И чего ради авторы туда ВК28 вставили?

Да, так и есть, по большому счету, порты ВВ и ОЗУ - это одно и то же. Только они лежат как бы в параллельных плоскостях, в каждый момент времени, процессор может обратиться либо к ОЗУ, либо к портам.

На счет ВК38. Думаю, здесь ответ прост - чтобы не городить огород на АП6 и мелкой логике. Помимо двунаправленной шины данных, у ВКшки есть еще и дешифратор управляющих сигналов микропроцессора, которые затем используются для работы с памятью и устройствами ВВ.

Elvys
15.05.2014, 12:04
а МРЗ разве не TAPE?
Извините, я не понял, советский мафун в формате mp3 кассеты записывал? Я еще могу предположить, что wav со звуковой карты PC в ЮТ-88 можно загонять. Этот формат файла практически идентичный аналоговой записи на кассету. Правда не знаю как его приготовить пригодным для восприятия ЮТ-88 :) Это задача для программистов.

в максимуме порты уже есть ВИ53, ВВ55, AY, порт конфигурации, да и дисплей семисегментник на порт переведён.
Я что-то, определенно, проспал. Не подскажете, где эту схемку посмотреть можно? Особенно интересно прикручивание ВИ53 и перевешивание индикаторов на порты.

Ewgeny7
15.05.2014, 15:13
Извините, я не понял, советский мафун в формате mp3 кассеты записывал?
Что ты так суетишься...
Сейчас все проги на ЮТ грузятся с магнитофона/плеера/звуковухи_компа.
Или кто-то уже дисковод привинтил? :)
Есть ридер SD-карт, но он будет работать только при наличии дисплейного модуля, которого еще нет пока, он в производстве.

---------- Post added at 15:13 ---------- Previous post was at 15:11 ----------


Особенно интересно прикручивание ВИ53 и перевешивание индикаторов на порты.
А там ничего сложного. Берешь ВИ53, смотришь распиновку и... прикручиваешь. Зачем схема? Все без схемы ее подключали :)
Вот моя "схема"-
http://zx-pk.ru/attachment.php?attachmentid=46919&d=1395566652

Elvys
15.05.2014, 15:26
Что ты так суетишься...

Мафуна нету :)
Про подключение периферийных микросхем КР580, я представляю, знать бы только по каким адресам их инициализировать. Так, что бы некоторая стандартность адресации, что ли, соблюдалась.

Ewgeny7
15.05.2014, 15:42
ВИ53 сидит на 50-53. Выборка - штырьки /5000 (CS), /JW (WR) и /JR (RD). Тактируется процессорной, штырек F2TTL, все три канала. Гейты подтянуты к плюсу. Остальное там понятно.

---------- Post added at 15:42 ---------- Previous post was at 15:41 ----------


Мафуна нету
Дык тоже нету :)
Я с колонок компа гружу, громкость на 75% примерно, и на вход ЮТа.

Elvys
15.05.2014, 16:20
Подумал я тут немножко и решил открыть эту тему, дабы помочь всем желающим собрать эту машинку.
Схемы с яндекс фоток так ужаты в размерах, что ничего не видно, к сожалению.

ВИ53 сидит на 50-53.....
Спасибо за информацию. Сейчас по всем темам "ЮТ-88" собираю, кто чего уже подключил и как оно там адресуется.

To ALL
Просто мысли, чего хотелось бы: :) Можно воспринимать, как шутку :)
1. Избежать сложностей из-за несовместимости программ в рамках одной платформы.
2. Не изобретать один велосипед во второй, третий и т.д. раз.
3. В FAQ не помешало бы соединить всю инфу об уже оттестированной периферии, что бы не копать крохи, раскиданные на 100500 страниц.

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

Alex_LG
02.03.2015, 19:27
Вставлю "свои 5 копеек" :)
Список основных подпрограмм Монитора-0 и математических функций:

-------------ОСНОВНЫЕ ПОДПРОГРАММЫ МОНИТОРА-0--------------
--используются ячейки памяти с адресами 0xC3F0-0xC3FF---
------------------вершина стека 0xC3EE---------------------

0x0000 Обработчик прерываний RST0, холодный старт
0x0008 Обработчик прерываний RST1, запись байта А на магнитофон
0x000B Директива "5"
0x0010 Обработчик прерываний RST2, ввод байта с клавиатуры в регистр А
0x0018 Обработчик прерываний RST3, пауза 1сек.
0x0020 Обработчик прерываний RST4, проверка активности клавиатуры
0x0025 Директива "6"
0x0028 Обработчик прерываний RST5, вывод содержимого регистров HL и A на индикатор
0x0030 Обработчик прерываний RST6, ввод двух байт с клавиатуры в регистр DE
0x0038 Обработчик прерываний RST7, счетчик времени, вызывается аппаратно каждую секунду
0x003B Ожидание ввода директивы
0x0047 Вывести на индикатор содержимое А
0x0056 Пауза заданная HL (для 1сек HL=0x6650)
0x005F Ожидание нажатия клавиши (A - код нажатой клавиши)
0x0071 Ввод байтовой последовательности с клавиатуры и запись её в память начиная с адреса заданного HL
0x007A Директива "2"
0x007D Вывод на индикатор содержимого ОЗУ начиная с адреса заданного HL
0x0084 Директива "7"
0x008A Директива "1"
0x0090 Директива "C"
0x0091 Директива "0"
0x0096 Директива "3"
0x00A3 Директива "4"
0x00C1 Установка времени (0xC3FD - секунды, 0xC3FE - минуты, 0xC3FF - часы)
0x00E7 Директива "9"
0x00EA Директива "A"
0x00ED Директива "8"
0x00F0 Директива "B"
0x0100 Запись байта А на магнитофон
0x0128 Чтение битовой последовательности в А с магнитофона (вх. А=0xFF - поиск байта синхронизации и чтение старшего байта адреса загрузки, А=0x08 - чтение байта)
0x0175 Вычисление контрольной суммы с ADDR1 по ADDR2 с выводом на индикатор
0x017D Вычисление контрольной суммы диапазона заданного BC и DE с выводом на индикатор
0x0194 Сравнение BC и DE (С=1 если DE>BC, Z=0 если DE=BC)
0x019A Запись на магнитофон диапазона с ADDR1 по ADDR2
0x01C2 Чтение с магнитофона в ОЗУ с ADDR1
0x01EE Чтение байта в А с магнитофона
0x01F5 Режим индикации текущего времени
0x0200 Копирование блока с ADDR1 по ADDR2 в ADDR3
0x0259 Сравнение HL и DE (С=1 если DE>HL, Z=0 если DE=HL)
0x025F Корректировка программы с ADDR1 по ADDR2 под новый адрес запуска ADDR3
0x02E5 Суперкорректор программы с ADDR1 по ADDR2 под новый адрес запуска ADDR3 для другого компьютера :confused:
0x0309 Замена в диапазоне с ADDR1 по ADDR2 адреса ADDR3 на ADDR4
0x035E Перемещение блока с ADDR1 по ADDR2 на ADDR1+1 (вставка байта)
0x0388 Перемещение блока с ADDR1 по ADDR2 на ADDR1-1 (удаление байта)
0x03B2 Сравнение блока c ADDR1 по ADDR2 c блоком по ADDR3
0x03DD Вывод содержимого регистров на индикатор

-----------БИБЛИОТЕЧКА ПРОГРАММ ВЫЧИСЛЕНИЯ ФУНКЦИЙ------
--используются ячейки памяти с адресами C361h-C37Fh---

0x0849 Сложение однобайтных чисел со знаком
0x0877 Относительное нормирование двух чисел
0x08DD Сложение двухбайтных чисел со знаком
0x092D Нормализация мантиссы
0x0994 Умножение двухбайтных чисел со знаком
0x09ЕС Умножение трехбайтных чисел с плавающей запятой
0x09F9 Деление двухбайтных чисел с фиксированной запятой
0x0A6F Деление чисел с плавающей запятой
0x0А8С передача трехбайтного числа из памяти в регистры А—В—С
0x0А92 пересылка из регистров А—В—С три байта в ОЗУ по начальному адресу в HL
0x0В08 Показательная функция
0x0В6В Натуральный логарифм
0x0С87 Sin х (0<x<PI/4)
0x0D32 Cos х (0<х<PI/4)
0x0D47 Arcsin х (–1<х<1)
0x0Е40 Arccos х (–1<х<1)
0x0Е47 Tg х (0<х<PI/4)
0x0Е75 Arctg х (0<х<1)
0x0F61 Ctg х (0<х<PI/4)
0x0F8F Arcctg х (0<х<1)

HardWareMan
03.03.2015, 06:59
0x0090 Директива "C"
0x0091 Директива "0"
Разница адресов в 1. Ошибки нет?

Alex_LG
03.03.2015, 09:54
Разница адресов в 1. Ошибки нет?

Нет. Директива "0" отличается от "С" только тем, что "С" отключает прерывания - как раз 1 байт:



COMMAND_C:
di
COMMAND_0:
rst 6
xchg
jmp WRITE_IN_RAM

HardWareMan
03.03.2015, 10:02
Ок.

Alex_LG
12.02.2016, 17:05
Формат записи данных на ленту:

0х00 - 256 байт (пилот-тон),
0хЕ6 - 1 байт (байт синхронизации),
Hi(ADDR_START) - 1 байт (старший байт начального адреса),
Lo(ADDR_START) - 1 байт (младший байт начального адреса),
Hi(ADDR_END) - 1 байт (старший байт конечного адреса),
Lo(ADDR_END) - 1 байт (младший байт конечного адреса),
далее идут данные объёмом (ADDR_END - ADDR_START) байт.
Ни пилот-тона, ни синхронизации, ни контрольной суммы в конце нет.

Метод кодирования - двухфазный, период следования бита равен 0,666мс, скорость считывания порядка 1500 бит/сек.

san010101
12.02.2016, 17:46
Это для какой прошивки? Монитор 0 или монитор F? Форматы должны быть разные?

Отправлено с моего A0001 через Tapatalk

Alex_LG
12.02.2016, 22:31
Это Монитор -0

ivagor
04.06.2019, 15:33
В прошивке (https://zx-pk.ru/threads/22922-yut-88-faq.html?p=685754&viewfull=1#post685754) математической библиотеки 6 ошибок:
1. Нужно заменить 8C BA на 8C 0A (4 раза)
2. Нужно заменить 92 BA на 92 0A (2 раза)

OrionExt
04.06.2019, 15:47
Х3 это ЮТ, хотел собрать, для утилизации (леголизации) стыриных деталей с завода. Не до тырил в 80-х.

- - - Добавлено - - -

Тут что не за пост – находка да прокурора, со сроком давности:v2_dizzy_roll::v2_dizzy_roll:

ivagor
04.06.2019, 19:00
Еще ошибка в той же пзушке - по адресу 95E нужно сменить 73 на 7B. Это была ошибка в одной из главнейших процедур - в процедуре нормализации. Можно с уверенностью сказать, что никто не пробовал считать с использованием выложенной прошивки (в журнале правильно, ошибки были в прошивке на форуме). Попробовал синус после исправления - теперь считает правильно. Может еще есть ошибки в других функциях, но я вряд ли буду копать дальше.

derfliegenddehollander
16.06.2020, 17:22
Вот, наконец! Не прошло четырех лет - попробую собрать!

http://letuchiy.net/images/0_ut1.jpg

- - - Добавлено - - -

derfliegenddehollander
22.06.2020, 16:36
Вот в целом и получилось - включил и заработало сразу!

http://letuchiy.net/images/utknopka.jpg

Shumadan
22.06.2020, 17:25
Вот в целом и получилось - включил и заработало сразу!

так, не интересно)

derfliegenddehollander
23.06.2020, 06:12
так, не интересно)

Эхх . . видно я уже достаточно опытен и все получается сразу! Хаха! Но, было очень и очень интересно потыкать кнопочки!

max232cpe
05.03.2024, 20:12
Вариант где в место КР556РТ4, К155РП1, К155РЕ3 что то адекватное стоит существует?

HardWareMan
05.03.2024, 20:28
Вариант где в место КР556РТ4, К155РП1, К155РЕ3 что то адекватное стоит существует?
Этот набор используется для динамического отображения. Для статичного люди ставили 6 регистров (по 1 на разряд) и правили код для правильного отображения символов.

max232cpe
05.03.2024, 20:36
Печально

HardWareMan
05.03.2024, 21:52
Печально
Ну в РЕ3 зашиты как раз преобразования 4 бита в символ от 0 до F. Можно поставить простую CPLD, например, EPM7032 вполне хватит в том же динамическом режиме. А может и в статике хватит даже.

max232cpe
06.03.2024, 21:58
Ну в РЕ3 зашиты как раз преобразования 4 бита в символ от 0 до F. Можно поставить простую CPLD, например, EPM7032 вполне хватит в том же динамическом режиме. А может и в статике хватит даже.

ЦПЛД поставить можно но её нужно опять же прошить и написать прошивку под неё... И тут проще с родной схемой.
Тогда встаёт вопрос чем прошивать КР556РТ4, К155РЕ3 ?

- - - Добавлено - - -

Из тех прогеров что есть ни 1 даже аналогов не прошивает импортных не говоря о наших мс.

HardWareMan
06.03.2024, 22:26
ЦПЛД поставить можно но её нужно опять же прошить и написать прошивку под неё... И тут проще с родной схемой.
Гораздо легче, чем РЕ3. Прошивку написать тоже можно, при этом CPLD будет обрабатывать весь узел динамического отображения информации.

Тогда встаёт вопрос чем прошивать КР556РТ4, К155РЕ3 ?
Проверенный рабочий погромматор РЕ3, РТ4 есть на этом форуме.

max232cpe
11.03.2024, 14:25
я правильно понимаю что К155РП1 были заменены на 1533ир32 без изменения конструкции и разводки?