MULTITECH MPF-1

Компьютеры прошлого, не попавшие в другие разделы

Moderator: Shaos

User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: MULTITECH MPF-1

Post by Lavr »

В Бейсике MULTITECH MPF-1 ничего не сделаешь без такой вот шпаргалки клавиатуры:
KBD-tinyBasic.png
И там вот слева в нижнем углу появилась кнопочка "Shift", она не входит в сканируемую
матрицу, и в мануале её называли "User Key", причем утверждали, что Монитор на неё не
реагирует никак. Ну я её и не поставил сразу...

А Basic она, очевидно, необходима! От разряда 6 порта А необходимо прицепить кнопку
на замыкание - на землю, это и будет "Shift". Причем кнопку flip-flop типа.

Забавно, что я проигнорировал везде в клавиатуре притягивающие резисторы к +5В - просто
места практически не было... но ничего - работает без них. 8)

На скриншоте показано, куда "Shift" прицепить:
MPF-1B-Pr4.PNG
А на дисплее: PRINT 5 * 8 - считает правильно! :wink:
Но без кнопочки "Shift" не нажать * (умножить). :-?
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: MULTITECH MPF-1

Post by Lavr »

Полез я в код Монитора MULTITECH MPF-1 - посмотреть, нельзя ли как-нибудь просто заменить процедуры чтения/записи на магнитофон подпрограммами работы с RS-232, тем более что код
софтверного RS-232 у меня уже был...

Но выяснилось тут, что авторы MULTITECH MPF-1 ещё и хитрозадумчиво перепутали выводы
порта на 7-сегментный индикатор... :-? (Может в разводке было удобнее... :roll: )
7SEGDIS.PNG
Несмотря на то, что и таблица в мануале есть, половину сразу прочесть невозможно, потому как
используются литеры с точкой, а это совсем другие коды, нежели в таблице... :-?

В общем недолго мучаясь, написал я по быстрому программку, расшифровывающую их 7-сегментные
коды:
7SEGDIG.PNG
Если кто хочет составить компанию по исследованию MULTITECH MPF-1, программу прилагаю:
KEY7SEG.zip
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: MULTITECH MPF-1

Post by Lavr »

Декомпилировал системную ПЗУ Монитора MULTITECH MPF-1 MPF-1B.HEX :
MPF-1B.zip
Все 7-сегментные сообщения разбирать не стал, но большую часть - разобрал.
Собирается идентично исходнику и без ошибок - этого должно быть достаточно, чтобы попробовать
корректно заменить программы магнитофона программами вывода на RS-232.

Исходник собирается компилятором ассемблера ZASM V1.1 1993 Z8, Z80, Z8000
Брал его отсюда: http://www.z80.info/z80sdt.htm
Файл: http://www.z80.info/zip/zasm11.zip

У него немного странноватые правила, поэтому MPF-1B.ASM следует переименовать в MPF-1B.S
и компилировать следующим BAT-файлом:

 MPF-1B.BAT

Code: Select all

rem assembles and generate listing file and
rem has assembler output with source comments
asm800 MPF-1B.s -s asm816 -l -o MPF-1B.o

rem generates link file
mlink MPF-1B.o -e 00000 -o MPF-1B.bin

rem generates intel hex file
mload MPF-1B.bin -i -o MPF-1B.hex

На побитную идентичность файлы проверял как обычно утилитой FC.EXE, которая чаще всего живёт тут:
C:\Windows\System32\fc.exe
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: MULTITECH MPF-1

Post by Lavr »

Lavr wrote:Собирается идентично исходнику и без ошибок - этого должно быть достаточно, чтобы попробовать
корректно заменить программы магнитофона программами вывода на RS-232.
Рабочий вариант программы Монитор MULTITECH MPF-1, где программы магнитофона заменены
программами вывода на RS-232.
Остальной контент вроде как не пострадал, несмотря на неполную декомпиляцию исходника,
потому как всё осталось на своих адресах.
MPF-4B.zip
Вообще подобные вещи удобно делать с помощью IDA, там и полная корректная декомпиляция
не нужна, но IDA у меня сейчас нет. :-?
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: MULTITECH MPF-1

Post by Lavr »

Lavr wrote:Исходник собирается компилятором ассемблера ZASM V1.1 1993 Z8, Z80, Z8000
Файл: http://www.z80.info/zip/zasm11.zip
У него немного странноватые правила, ...
Честно говоря, показался мне этот ZASM V1.1 1993 Z8, Z80, Z8000 чьей-то гнусной самоделкой,
поскольку на запрос ASM800.EXE -? или ASM800.EXE -h он ничего о себе не говорит пусть
даже что-то вкратце...

К тому же выпал он у меня два раза с сообщением "Stack overflow", чем вынудил меня испортить комментарии
в моём исходнике постом выше: я подумал, может, поделка 1993 года вешается, не понимая кодировки
Windows-1251, а оказалось, что так он реагирует на неверную метку... :-?

Но верхом моего удивления было, когда я узнал, что это самый, что ни на есть фирменный ассемблер
от самой Zilog - ASM800 Z800™ Cross-Assembler, а хелпы и описание к нему следует читать в специальном
файле: Asm800 Z800 Cross Assembler User's Guide, который за давностью времени фиг где найдёшь! :roll:
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: MULTITECH MPF-1

Post by Lavr »

Итак, в качестве последнего штриха к проекту MPF-I с интерфейсом RS-232 я приделал ещё и "блэкджек со шлюпками"! :D

Image

В качестве "блэкджека" выступила их фирменная схема формирования сигнала NMI. На неё завязаны некоторые
программные фичи Монитора, в частности пошаговое прохождение и точки останова.
Чтобы разобраться, как у них это устроено, пришлось перерисовать первую часть схемы MPF-I.
schema_11.png
"Блэкджек" в левом нижнем углу. Если объяснить просто, то это асинхронный счетчик, который управляется битом от
порта вывода. Бит сбрасывается в "0" программно, после чего счетчик отсчитывает 5 стробов М1 и подаёт сигнал NMI,
который в z80 вызывает переход по адресу 0066H.
Более подробно механизм описан в документе, который я ниже прилагаю.
Step_Break.zip
А вот "шлюпки" - это была моя собственная отсебятинка: дело в том что весь вывод в оригинальной схеме идёт
через один бит - это и звук, и последовательный интерфейс, и даже ввод у них дублируется на вывод!
Ну для кассетного магнитофона - это понятно, хотя и там "музыка" та ещё - уши повянут... :-?

Но дублировать RS-232 в эмуляторе на динамик - слишком шумно! И я вспомнил, что у меня нет на схеме i8255, вместо
которого 3 регистра, потому как настраивают i8255 в программе всего 2 раза: по включению питания или RESET и
в процедуре NMI. Оба раза записывают управляющее слово 90Н (10010000b): А - ввод, В - вывод, С - вывод.

А у меня по схеме как раз 4-й вывод дешифратора свободен под адрес 03Н - ну я и прицепил на него D-триггер,
фиксирующий бит D7, что очень удобно - фирменная настройка словом 90Н обрела смысл! :kruto:
Но ввод-вывод по RS-232 происходят в тишине, достаточно, что нажатия кнопок "плямкают"... :wink:

В общем - игрушка рабочая, и поиграться можно. В архиве ниже - итоговый проект Proteus и исходник.
MPF-I_B.zip
А я что-то от этого MPF-I подустал, наигрался видимо - ажиотаж и энтуазизм подиссякли...
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: MULTITECH MPF-1

Post by Lavr »

Lavr wrote:В общем - игрушка рабочая, и поиграться можно.
Вот только удручало меня, что некоторые функции работают не совсем так, как написано в Мануале пользователя MPF-I.
MPF-1_Users_Manual весьма приличного качества, кстати, можно скачать по адресу:
https://electrickery.hosting.philpem.me ... Manual.pdf

Причем отличия в результате работы были у функций, завязанных на немаскируемое прерывание NMI.
И, несмотря на то, что постом выше я подробно аппаратный механизм формирования NMI рассмотрел, и признал, что
нет в нём каких-либо изъянов, тем не менее, вот такую надпись - SYS-SP - как это написано в Мануале пользователя,
я так ни разу и не увидел... :-?
SYS_SP.PNG
Но зато неоднократно увидел, что после вызова NMI ОЗУ этой игрушки заполняется кодом 00 66, а это - адрес обслуживания
NMI и адрес возврата, если NMI многократно вызывается на адресе 0066H.
Получалось так, что модель Z80 в Proteus реагирует не на срез сигнала на входе NMI, а на его низкий уровень,
вследствие этого, попав в результате NMI на подпрограмму обслуживания NMI по адресу 0066H, модель продолжает
снова и снова отрабатывать прерывание NMI, заполняя стек адресом 0066H.

Чтобы проверить это пришлось в схему формирования NMI добавить схемный костылик, суть работы которого заключалась
в том, что в текущем цикле прерывание NMI будет точно обнаружено, и произойдёт его обслуживание, а в следующем цикле
в начале процедуры обслуживания NMI по адресу 0066H - сигнал /М1 точно сбросит запрос NMI аппаратно.

И с этим костыликом я долгожданную надпись - SYS-SP наконец-то увидел! :lol:
BestMPF-I.PNG
Также совершенно правильно, как в Мануале, заработали и остальные функции, завязанные на немаскируемое прерывание NMI!

Пропатченную версию модели MPF-I выкладываю. Вот теперь она действительно полностью работоспособна! :kruto:
MPF-I_D.zip
В архиве также разбор принципа работы NMI z80, и как работает придуманный мной аппаратный "патч".
Также я оцифровал из Мануала пользователя MPF-I несколько программ, чтобы быть уверенным в работоспособности игрушки.
Эти программы как раз можно загрузить по RS-232, а можно и набрать с клавиатуры по оцифрованному описанию.

Пропатченная игрушка MPF-I стала более интересной, а то порой непонятно было, что она делает-то... :roll:
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: MULTITECH MPF-1

Post by Lavr »

Lavr wrote:...нельзя ли как-нибудь просто заменить процедуры чтения/записи на магнитофон подпрограммами работы с RS-232, тем более что код софтверного RS-232 у меня уже был...
Наличие даже совсем простого софтверного интерфейса RS-232 даёт любому, даже самому элементарному
микропроцессорному изделию неоспоримое преимущество в том плане, что появляется возможность связи
с терминалом, но и возможность сохранения программ на магнитной ленте - никуда не исчезает! :roll:

Формат FSK - Frequency-shift keying, известный в компьютерной технике своей разновидностью:
стандартом Kansas City, придуманным в 1975 году (мы его обсуждали здесь),
позволяет устройству с СОМ-портом посредством небольшой схемы записывать
данные на магнитную ленту и считывать их с неё, причем формат довольно-таки помехоустойчив!

Ниже приводятся две схемы, позволяющие преобразовывать сигналы формата RS-232 в формат FSK
и осуществлять обратное преобразование:
Cassette_interface_.PNG
Первую из этих схем я опробовал весьма давно и был очень доволен тем, что схема очень четко работает без настройки и частотно-зависимых элементов! Схема обратного преобразования для процедуры чтения с магнитной ленты у меня также была, но казалась она мне избыточно сложноватой. И действительно один наш бывший коллега по форуму нашел более простое схемотехническое решение - оно и приведено в нижней части картинки.

Я проверил в Proteus обе этих схемы работой с выхода на вход и результатом оказался очень доволен! :kruto:
RS-232-Tape.PNG
Архив с проектом прилагаю:
Cassette interface.zip
Единственная неприятная на сегодняшний день черта этих схем, что они работают на скорости СОМ-порта -
300 бод - это очень мало, 8-КБ Басика грузится примерно 5 минут... :-?
Но еще в те времена скорость удалось поднять до 1200 бод при тех же самых схемах, причем ограничением
стала уже полоса частот распространенных магнитофонов: 100-10.000 Гц, а то и хуже...
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: MULTITECH MPF-1

Post by Lavr »

Lavr wrote:300 бод - это очень мало, 8-КБ Басика грузится примерно 5 минут... :-?
Но еще в те времена скорость удалось поднять до 1200 бод при тех же самых схемах, причем
ограничением стала уже полоса частот распространенных магнитофонов: 100-10.000 Гц...
Я проверил, как работает та же самая схемотехника на скорости передачи COM-порта 1200 бод - ВЕЛИКОЛЕПНО! :kruto:
Cassette_interface_5.PNG
Модификация формата записи следующая: логическая "1" записывается как 4 периода частоты 4800 Гц,
логический "0" записывается как 2 периода частоты 2400 Гц.
Та же самая схема эффективно работает с этим форматом при минимальной подстройке: одновибратор
перестраивается на длительность импульса
Т ~ 1/3600 Гц.
Cassette interface5.zip
Почему нельзя по аналогии увеличить скорость передачи еще выше?
Прямоугольный сигнал (А) на бытовой кассетный магнитофон не запишется в силу слишком узкой
полосы пропускания для этой цели.
cass_vic_sch.PNG
Поэтому прямоугольный сигнал перед записью сглаживают RC-фильтром (В) - убираются из спектра высшие гармоники.
Но и такой сглаженный сигнал при записи на бытовой кассетный магнитофон искажается (С).
Чтобы искажения были минимальны, необходимо удерживать в записи на ленту хотя бы первую
гармонику записываемого сигнала (теорема Котельникова, Шеннон, Найквист иже с ним).
То есть, если у нас идёт в запись меандр с частотой 4800 Гц, полоса частот кассетного
магнитофона должна быть по меньшей мере выше 9600 Гц (4800 Гц х 2).
Диапазон частот кассетных магнитофонов 3 класса 100 - 10.000 Гц ещё удовлетворяет этому
требованию.

Из-за этого ограничения частоту передачи изменением формата смогли поднять лишь до 2400 бод.
При этом логическая "1" записывается как 2 периода частоты 4800 Гц, и т.п.
То есть, максимальную частоту при записи на ленту не увеличили из-за полосы частот большинства
распространенных кассетных магнитофонов того времени.
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: MULTITECH MPF-1

Post by Shaos »

Lavr wrote:ВЕЛИКОЛЕПНО! :kruto:
Я думаю в симуляторе и сто мильнов бод будет выглядеть великолепно :)
Ты спаяй реальную железяку, подцепи её к реальному мафону - там уже будет видно насколько оно велико или не очень лепно :roll:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: MULTITECH MPF-1

Post by Lavr »

Shaos wrote:Ты спаяй реальную железяку, подцепи её к реальному мафону - там уже будет видно насколько оно велико или не очень лепно :roll:
Давай, в рамках этого форума ты не будешь указывать, что мне в рамках моего хобби делать, а я, соответственно, не буду указывать, куда тебе пойти? :roll:

Это с учетом того, что то, что действительно ВЕЛИКОЛЕПНО, до моих оценок выпускалось промышленно и было очень даже лепно! :wink:
Shaos wrote:Я думаю в симуляторе и сто мильнов бод будет выглядеть великолепно :)
В этом ты как раз конкретно и ошибаешься... :D
iLavr
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: MULTITECH MPF-1

Post by Shaos »

Ну тогда можешь даже не заморачиваться с картинкой симулятора - просто пиши "всё должно работать ВЕЛИКОЛЕПНО" и мы все тебе поверим, а кто не поверит, того можно просто послать :lol:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: MULTITECH MPF-1

Post by Lavr »

Shaos wrote:Ну тогда можешь даже на заморачиваться в картинкой симулятора - просто пиши "всё должно работать ВЕЛИКОЛЕПНО" и мы все тебе поверим :lol:
Понимаешь, так - не интересно... почему и как оно работает именно ВЕЛИКОЛЕПНО
я лично для себя написал очень подробно:
рс-лпт.PNG
И когда мне реально приспичит это сделать, я никаких затруднений испытывать не буду.

Что касается моих картинок здесь на форуме - я просто смотрю, что здесь 100500 посетителей,
и все - паяют, паяют, паяют!... :roll:
И я думаю, дай-ка я для разнообразия выложу немного теории... :wink:
Но если ты считаешь, что это - излишне, я могу этого и не делать, ибо это, как ни крути, отнимает
время моего отпуска. :-?

P.S. Формула пересчёта скорости в бодах в биты в секунду - более крупно:
BIT_S.GIF
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: MULTITECH MPF-1

Post by Lavr »

Lavr wrote:... неоднократно увидел, что после вызова NMI ОЗУ этой игрушки заполняется кодом 00 66, а это - адрес обслуживания
NMI и адрес возврата, если NMI многократно вызывается на адресе 0066H.
Получалось так, что модель Z80 в Proteus реагирует не на срез сигнала на входе NMI, а на его низкий уровень,
вследствие этого, попав в результате NMI на подпрограмму обслуживания NMI по адресу 0066H, модель продолжает
снова и снова отрабатывать прерывание NMI, заполняя стек адресом 0066H.
Это ошибка модели исправлена в обновленной текущей версии: x80_13b5.zip [45.88 Кб]
iLavr