nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 15:47



Reply to topic  [ 44 posts ]  Go to page Previous  1, 2, 3
MULTITECH MPF-1 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
В Бейсике MULTITECH MPF-1 ничего не сделаешь без такой вот шпаргалки клавиатуры:
Attachment:
KBD-tinyBasic.png
KBD-tinyBasic.png [ 593.68 KiB | Viewed 11235 times ]

И там вот слева в нижнем углу появилась кнопочка "Shift", она не входит в сканируемую
матрицу, и в мануале её называли "User Key", причем утверждали, что Монитор на неё не
реагирует никак. Ну я её и не поставил сразу...

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

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

На скриншоте показано, куда "Shift" прицепить:
Attachment:
MPF-1B-Pr4.PNG
MPF-1B-Pr4.PNG [ 45.19 KiB | Viewed 11292 times ]

А на дисплее: PRINT 5 * 8 - считает правильно! :wink:
Но без кнопочки "Shift" не нажать * (умножить). :-?

_________________
iLavr


07 Jul 2021 18:39
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Полез я в код Монитора MULTITECH MPF-1 - посмотреть, нельзя ли как-нибудь просто заменить
процедуры чтения/записи на магнитофон подпрограммами работы с RS-232
, тем более что код
софтверного RS-232 у меня уже был...

Но выяснилось тут, что авторы MULTITECH MPF-1 ещё и хитрозадумчиво перепутали выводы
порта на 7-сегментный индикатор... :-? (Может в разводке было удобнее... :roll: )
Attachment:
7SEGDIS.PNG
7SEGDIS.PNG [ 60.04 KiB | Viewed 11240 times ]

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

В общем недолго мучаясь, написал я по быстрому программку, расшифровывающую их 7-сегментные
коды:
Attachment:
7SEGDIG.PNG
7SEGDIG.PNG [ 34 KiB | Viewed 11240 times ]

Если кто хочет составить компанию по исследованию MULTITECH MPF-1, программу прилагаю:
Attachment:
KEY7SEG.zip [504.67 KiB]
Downloaded 290 times

_________________
iLavr


09 Jul 2021 09:13
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Декомпилировал системную ПЗУ Монитора MULTITECH MPF-1 MPF-1B.HEX :
Attachment:
MPF-1B.zip [9.48 KiB]
Downloaded 276 times

Все 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:
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

_________________
iLavr


09 Jul 2021 15:11
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Собирается идентично исходнику и без ошибок - этого должно быть достаточно, чтобы попробовать
корректно заменить программы магнитофона программами вывода на RS-232.

Рабочий вариант программы Монитор MULTITECH MPF-1, где программы магнитофона заменены
программами вывода на RS-232.
Остальной контент вроде как не пострадал, несмотря на неполную декомпиляцию исходника,
потому как всё осталось на своих адресах.
Attachment:
MPF-4B.zip [14.31 KiB]
Downloaded 284 times

Вообще подобные вещи удобно делать с помощью IDA, там и полная корректная декомпиляция
не нужна, но IDA у меня сейчас нет. :-?

_________________
iLavr


13 Jul 2021 20:44
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
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


14 Jul 2021 04:14
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Итак, в качестве последнего штриха к проекту MPF-I с интерфейсом RS-232 я приделал ещё и "блэкджек со шлюпками"! :D

Image

В качестве "блэкджека" выступила их фирменная схема формирования сигнала NMI. На неё завязаны некоторые
программные фичи Монитора, в частности пошаговое прохождение и точки останова.
Чтобы разобраться, как у них это устроено, пришлось перерисовать первую часть схемы MPF-I.
Attachment:
schema_11.png
schema_11.png [ 321.83 KiB | Viewed 11179 times ]

"Блэкджек" в левом нижнем углу. Если объяснить просто, то это асинхронный счетчик, который управляется битом от
порта вывода. Бит сбрасывается в "0" программно, после чего счетчик отсчитывает 5 стробов М1 и подаёт сигнал NMI,
который в z80 вызывает переход по адресу 0066H.
Более подробно механизм описан в документе, который я ниже прилагаю.
Attachment:
Step_Break.zip [74.36 KiB]
Downloaded 281 times

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

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

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

В общем - игрушка рабочая, и поиграться можно. В архиве ниже - итоговый проект Proteus и исходник.
Attachment:
MPF-I_B.zip [101.92 KiB]
Downloaded 291 times


А я что-то от этого MPF-I подустал, наигрался видимо - ажиотаж и энтуазизм подиссякли...

_________________
iLavr


14 Jul 2021 19:07
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
В общем - игрушка рабочая, и поиграться можно.
Вот только удручало меня, что некоторые функции работают не совсем так, как написано в Мануале пользователя MPF-I.
MPF-1_Users_Manual весьма приличного качества, кстати, можно скачать по адресу:
https://electrickery.hosting.philpem.me.uk/comp/mpf1/doc/MPF-1_usersManual.pdf

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

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

И с этим костыликом я долгожданную надпись - SYS-SP наконец-то увидел! :lol:
Attachment:
BestMPF-I.PNG
BestMPF-I.PNG [ 49.84 KiB | Viewed 11150 times ]

Также совершенно правильно, как в Мануале, заработали и остальные функции, завязанные на немаскируемое прерывание NMI!

Пропатченную версию модели MPF-I выкладываю. Вот теперь она действительно полностью работоспособна! :kruto:
Attachment:
MPF-I_D.zip [339.03 KiB]
Downloaded 301 times

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

Пропатченная игрушка MPF-I стала более интересной, а то порой непонятно было, что она делает-то... :roll:

_________________
iLavr


16 Jul 2021 18:43
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
...нельзя ли как-нибудь просто заменить процедуры чтения/записи на магнитофон
подпрограммами работы с RS-232
, тем более что код софтверного RS-232 у меня уже был...

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

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

Ниже приводятся две схемы, позволяющие преобразовывать сигналы формата RS-232 в формат FSK
и осуществлять обратное преобразование:
Attachment:
Cassette_interface_.PNG
Cassette_interface_.PNG [ 10.18 KiB | Viewed 11073 times ]

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

Я проверил в Proteus обе этих схемы работой с выхода на вход и результатом оказался очень доволен! :kruto:
Attachment:
RS-232-Tape.PNG
RS-232-Tape.PNG [ 41.75 KiB | Viewed 11073 times ]

Архив с проектом прилагаю:
Attachment:
Cassette interface.zip [19.83 KiB]
Downloaded 280 times

Единственная неприятная на сегодняшний день черта этих схем, что они работают на скорости СОМ-порта -
300 бод - это очень мало, 8-КБ Басика грузится примерно 5 минут... :-?
Но еще в те времена скорость удалось поднять до 1200 бод при тех же самых схемах, причем ограничением
стала уже полоса частот распространенных магнитофонов: 100-10.000 Гц, а то и хуже...

_________________
iLavr


20 Jul 2021 20:01
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
300 бод - это очень мало, 8-КБ Басика грузится примерно 5 минут... :-?
Но еще в те времена скорость удалось поднять до 1200 бод при тех же самых схемах, причем
ограничением стала уже полоса частот распространенных магнитофонов: 100-10.000 Гц...
Я проверил, как работает та же самая схемотехника на скорости передачи COM-порта 1200 бод - ВЕЛИКОЛЕПНО! :kruto:
Attachment:
Cassette_interface_5.PNG
Cassette_interface_5.PNG [ 43.71 KiB | Viewed 11027 times ]
Модификация формата записи следующая: логическая "1" записывается как 4 периода частоты 4800 Гц,
логический "0" записывается как 2 периода частоты 2400 Гц.
Та же самая схема эффективно работает с этим форматом при минимальной подстройке: одновибратор
перестраивается на длительность импульса
Т ~ 1/3600 Гц.
Attachment:
Cassette interface5.zip [19.87 KiB]
Downloaded 289 times

Почему нельзя по аналогии увеличить скорость передачи еще выше?
Прямоугольный сигнал (А) на бытовой кассетный магнитофон не запишется в силу слишком узкой
полосы пропускания для этой цели.
Attachment:
cass_vic_sch.PNG
cass_vic_sch.PNG [ 11.9 KiB | Viewed 11027 times ]

Поэтому прямоугольный сигнал перед записью сглаживают RC-фильтром (В) - убираются из спектра высшие гармоники.
Но и такой сглаженный сигнал при записи на бытовой кассетный магнитофон искажается (С).
Чтобы искажения были минимальны, необходимо удерживать в записи на ленту хотя бы первую
гармонику записываемого сигнала (теорема Котельникова, Шеннон, Найквист иже с ним).
То есть, если у нас идёт в запись меандр с частотой 4800 Гц, полоса частот кассетного
магнитофона должна быть по меньшей мере выше 9600 Гц (4800 Гц х 2).
Диапазон частот кассетных магнитофонов 3 класса 100 - 10.000 Гц ещё удовлетворяет этому
требованию.

Из-за этого ограничения частоту передачи изменением формата смогли поднять лишь до 2400 бод.
При этом логическая "1" записывается как 2 периода частоты 4800 Гц, и т.п.
То есть, максимальную частоту при записи на ленту не увеличили из-за полосы частот большинства
распространенных кассетных магнитофонов того времени.

_________________
iLavr


22 Jul 2021 13:21
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Lavr wrote:
ВЕЛИКОЛЕПНО! :kruto:

Я думаю в симуляторе и сто мильнов бод будет выглядеть великолепно :)
Ты спаяй реальную железяку, подцепи её к реальному мафону - там уже будет видно насколько оно велико или не очень лепно :roll:

_________________
:dj: https://mastodon.social/@Shaos


22 Jul 2021 15:43
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
Ты спаяй реальную железяку, подцепи её к реальному мафону - там уже будет видно насколько оно велико или не очень лепно :roll:

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

Это с учетом того, что то, что действительно ВЕЛИКОЛЕПНО, до моих оценок выпускалось промышленно и было очень даже лепно! :wink:

Shaos wrote:
Я думаю в симуляторе и сто мильнов бод будет выглядеть великолепно :)
В этом ты как раз конкретно и ошибаешься... :D

_________________
iLavr


22 Jul 2021 17:12
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Ну тогда можешь даже не заморачиваться с картинкой симулятора - просто пиши "всё должно работать ВЕЛИКОЛЕПНО" и мы все тебе поверим, а кто не поверит, того можно просто послать :lol:

_________________
:dj: https://mastodon.social/@Shaos


22 Jul 2021 17:28
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
Ну тогда можешь даже на заморачиваться в картинкой симулятора - просто пиши "всё должно работать ВЕЛИКОЛЕПНО" и мы все тебе поверим :lol:

Понимаешь, так - не интересно... почему и как оно работает именно ВЕЛИКОЛЕПНО
я лично для себя написал очень подробно:
Attachment:
рс-лпт.PNG
рс-лпт.PNG [ 44.47 KiB | Viewed 11018 times ]

И когда мне реально приспичит это сделать, я никаких затруднений испытывать не буду.

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

P.S. Формула пересчёта скорости в бодах в биты в секунду - более крупно:
Attachment:
BIT_S.GIF
BIT_S.GIF [ 9.78 KiB | Viewed 10836 times ]

_________________
iLavr


22 Jul 2021 18:24
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
... неоднократно увидел, что после вызова NMI ОЗУ этой игрушки заполняется кодом 00 66, а это - адрес обслуживания
NMI и адрес возврата, если NMI многократно вызывается на адресе 0066H.
Получалось так, что модель Z80 в Proteus реагирует не на срез сигнала на входе NMI, а на его низкий уровень,
вследствие этого, попав в результате NMI на подпрограмму обслуживания NMI по адресу 0066H, модель продолжает
снова и снова отрабатывать прерывание NMI, заполняя стек адресом 0066H.

Это ошибка модели исправлена в обновленной текущей версии: x80_13b5.zip [45.88 Кб]

_________________
iLavr


29 Dec 2021 18:58
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 44 posts ]  Go to page Previous  1, 2, 3

Who is online

Users browsing this forum: No registered users and 7 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.