Отладочный модуль на К1801ВМ1

Digital Equipment Corporation PDP-8 & PDP-11 (а также совместимые с последним советские ЭВМ на 1801ВМ1/2/3)

Moderator: Shaos

Post Reply
User avatar
Lavr
Supreme God
Posts: 16622
Joined: 21 Oct 2009 15:08
Location: Россия

Re: Отладочный модуль на К1801ВМ1

Post by Lavr »

Lavr wrote:Ну и планирую я его ассемблерный текст привести к виду, который бы компилировался в побитную копию.
А это не так просто, Монитор перемещаемый - почти всё на относительных смещениях...
Получился первый удобоваримый ассемблерный вариант, который собирается в точную побитную
копию оригинала Монитора.

MON1986.ASM
(24.66 KiB) Downloaded 1059 times

При сборке со смещением о1000 все относительные смещения вычисляются правильно,
и далее полученный бинарный код перемещаем.
Собирал код вот этим КроссАссемблером, он добавляет в начале 4 байта для эмулятора БК-0010.
Сверял сборку побитно програмой fc (file compare) с опцией /b - бинарное сравнение.
Сравнивал с оригинальным кодом Монитора, который тоже на всякий случай прилагаю:

MONITOR_LH.zip
(1.64 KiB) Downloaded 634 times

На всякий случай - пометки в исходнике: '%%%' - посмотреть, что за число; '???' - это не совсем понятно.
Нашел все таблицы переходов (вычисляются сейчас при сборке правильно), нашел таблицы и значения
в тексте для 7-сегментных кодов.
Не нашел 7-сегментных кодов для комбинации 'HA':

dispHA.gif
dispHA.gif (8.05 KiB) Viewed 15243 times

Возможно, их делают не так прямолинейно, как остальные... :wink:

В общем с этой версией исходного кода Монитора уже удобно работать с компилятором Ассемблера,
хотя следует быть внимательным - кое где относительные смещения к таблицам вычисляются неявно,
без указания метки, поэтому вставлять что-то своё в код следует осторожно.
Везде, где я это нашел - прокомментировал, но доводить до вычислений Ассемблером - не стал.
iLavr
User avatar
Lavr
Supreme God
Posts: 16622
Joined: 21 Oct 2009 15:08
Location: Россия

Re: Отладочный модуль на К1801ВМ1

Post by Lavr »

Lavr wrote:А у нас на форуме или еще где-либо есть удобочитаемая схема БК-шки?
Хотел глянуть кое-что, но везде только скан из её мануала на двух листах.
Погуглил сам, коли у нас на форуме, похоже, что нет их...
Но, видимо, их в более хорошем качестве и в принципе нет.

Скачал вот здесь, но опять то же самое - "скан из мануала на двух листах":
http://r-games.net/31517-shemy-bk-0010-01.html
http://r-games.net/31518-shemy-bk-0011m.html

В данный момент меня, собственно, интересует, как в схемах на микропроцессорах 1801ВМ1,2
был организован арбитраж обращения к Видео-ОЗУ.
Как это делается в схемах на К580ВМ80А я знаю, а вот со схемами на 1801ВМ1,2 надо разобраться.

И очень приятным бонусом вдруг обнаружилась схема "Электроники МС 0511 УКНЦ" на 1801ВМ2 ! :kruto:
http://forum.tslabs.info/viewtopic.php?f=34&t=778
Схема и сопутствующая документация очень хорошего качества, жаль только в "шинном" варианте...

И если кому интересно - фотографии "МС 0511 УКНЦ" с её описанием:
https://is000.livejournal.com/25799.html
iLavr
User avatar
Shaos
Admin
Posts: 23653
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Отладочный модуль на К1801ВМ1

Post by Shaos »

А чо там 2 проца ВМ2 чтоли? :o
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16622
Joined: 21 Oct 2009 15:08
Location: Россия

Re: Отладочный модуль на К1801ВМ1

Post by Lavr »

Да, процев КМ1801ВМ2 - там два:
Центральный процессор выполняет задачи, определённые программами пользователя, а периферийный процессор выполняет логические функции контроллеров устройств ввода-вывода (клавиатуры, дисплея и др.), но его можно использовать и для запуска пользовательских задач.
Прямо как в твоей "Электронике-85"...
iLavr
User avatar
Shaos
Admin
Posts: 23653
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Отладочный модуль на К1801ВМ1

Post by Shaos »

Lavr wrote:Да, процев КМ1801ВМ2 - там два:
Центральный процессор выполняет задачи, определённые программами пользователя, а периферийный процессор выполняет логические функции контроллеров устройств ввода-вывода (клавиатуры, дисплея и др.), но его можно использовать и для запуска пользовательских задач.
Прямо как в твоей "Электронике-85"...
Круто :mrgreen:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16622
Joined: 21 Oct 2009 15:08
Location: Россия

Re: Отладочный модуль на К1801ВМ1

Post by Lavr »

Lavr wrote:
Lavr wrote:А у нас на форуме или еще где-либо есть удобочитаемая схема БК-шки?
Но, видимо, их в более хорошем качестве и в принципе нет.
Нашел-таки хорошо отрисованную с оригинала схему БК-шки здесь:
Ремонт БК-0010 БК 0011 БК 0011М. [перерисовка СD-INC] :kruto:

Или прямая ссылка: Схема принципиальная "Электроника БК 0010 - 01"
iLavr
User avatar
Lavr
Supreme God
Posts: 16622
Joined: 21 Oct 2009 15:08
Location: Россия

Re: Отладочный модуль на К1801ВМ1

Post by Lavr »

Возможно, более крупные картинки, а так - те же самые:
Lavr wrote:везде только скан из её мануала на двух листах.
А по этой ссылке: "Схема принципиальная "Электроника БК 0010 - 01"
схема отрисована заново, что я, собственно, и искал...
iLavr
User avatar
Случайность
Doomed
Posts: 491
Joined: 05 Apr 2011 19:45
Location: Великий Новгород
Contact:

Re: Отладочный модуль на К1801ВМ1

Post by Случайность »

Насчет устройства клавишного,

Кнопка П, не замыкает линию К4 на землю, Это отдельная кнопка в этом устройстве, у нее свой контакт и эту отдельную линию она замыкает на землю, Собственно это и есть сброс.
Вот в плохом качестве оригинал. Эти файлы у меня были с самого начала, просто никто не спрашивал, И не думал что кому то надо.
Image

Image

Все же надо добить эту схему в железе,
я так понял что монитор полностью рабочим оказался? и его можно заливать в РФ-ки?
танцуй пока живешь под каплями огненного дождя...
User avatar
Lavr
Supreme God
Posts: 16622
Joined: 21 Oct 2009 15:08
Location: Россия

Re: Отладочный модуль на К1801ВМ1

Post by Lavr »

Случайность wrote:я так понял что монитор полностью рабочим оказался? и его можно заливать в РФ-ки?
Я думаю, что Монитор полностью соответствует своей прошивке и он - рабочий.
Хотя нюансы неожиданные всегда могут быть, всё ж артефакт из 1986 года! :wink:

Я давно уже собирался выложить здесь этот пропатченный вариант эмулятора БК-0010
с .dll-эмуляцией индикатора с клавиатурой, которые обслуживают этот самый Монитор.

MonitorBK.gif
MonitorBK.gif (15.56 KiB) Viewed 12554 times

Но вся загвоздка была в том, что писал и тестировал я всё это под Windows 98
через функции Win-API, а это не всегда работает в Windows старших версий...

Сегодня решил проверить работу этой связки под Windows 7 и был просто очень озадачен! :roll:
Дело в том, что для отрисовки 7-сегментного индикатора я использовал специальный шрифт
LED.TTF, и попытка установить его в Windows 7 вызвала сообщение:
что этот файл «Не является правильным шрифтом Windows 7» :o
(возможно, не дословно, но как-то так...)

LED.zip
(13.48 KiB) Downloaded 501 times

Я погуглил и наткнулся в разных местах на странный совет:
...у вас отключён брандмауэр Windows или служба безопасности системы. До сих пор неизвестно, каким образом две этих службы связаны с установкой шрифтов, но факт остаётся фактом: если они отключены, установка шрифтов может перестать работать.
Ну я попробовал, включил их (хотя, может, они и были включены), но положительного
результата это не принесло... :osad:
В общем, в полном недоумении я по поводу случившегося. :-?
iLavr
User avatar
Lavr
Supreme God
Posts: 16622
Joined: 21 Oct 2009 15:08
Location: Россия

Re: Отладочный модуль на К1801ВМ1

Post by Lavr »

Lavr wrote:для отрисовки 7-сегментного индикатора я использовал специальный шрифт
LED.TTF, и попытка установить его в Windows 7 вызвала сообщение:
что этот файл «Не является правильным шрифтом Windows 7» :o
Обидно, что именно этот самый LED.TTF, как у меня, раздают в Интернете просто-таки
на всех углах... к примеру, вот:
https://www.fontup.ru/fonts/9125/led.html
и никто не жалуется... :-?

Я его и сразу-то выбрал за бесплатность и широкую распространенность - есть откуда
скачать в случае чего.
iLavr
User avatar
Lavr
Supreme God
Posts: 16622
Joined: 21 Oct 2009 15:08
Location: Россия

Re: Отладочный модуль на К1801ВМ1

Post by Lavr »

Lavr wrote:для отрисовки 7-сегментного индикатора я использовал специальный шрифт
LED.TTF, и попытка установить его в Windows 7 вызвала сообщение:
что этот файл «Не является правильным шрифтом Windows 7» :o
Прочитал я килотонны "этих наших Интернетов", как пишут люди - "коллективного разума" и ничего полезного не нашел...
Особенно задолбал на всех углах совет "включить брендмауэр Windows", который относят аж к самой M$ ! :o
Забавно, что и вправду непонятно в Windows 7 когда включен брендмауэр Windows, а когда выключен. :-?
Когда его начинаешь "включать/выключать" (а у меня это одна опция), он пишет про какие-то настройки
и сети... :osad: Ну какие нафиг сети, когда ноутбук с Windows 7 у меня ни в какие сети не включен! :evil:

Решение оказалось простым, хоть я пол-дня и угробил... :-?
Если Windows 98 шрифт этот понимает и на него не жалуется:

LED98.gif
LED98.gif (13.3 KiB) Viewed 12533 times

Значит Windows 7 просто не нравится что-то в его оформлении, поэтому я решил прогнать
его через какой-либо конвертор. Их полно в онлайн варианте сейчас, но у меня успешно сработал
вот этот: https://www.font-converter.net/en

Честно говоря, первоначально я хотел конвертнуть .ttf в .otf, поскольку обратил внимание, что в Windows 7
большинство шрифтов именно такие. Но потом по предложению конвертора решил конвертнуть в несколько форматов,
в том числе и в сам .ttf. :wink:

Результат превзошел все ожидания! :kruto:

Led_7.gif
Led_7.gif (42.65 KiB) Viewed 12533 times

Кстати, Windows 7 безобразно тупа... :osad: Ну какие нафиг "французские булки", если в шрифте
нет кириллицы! :-?

Шрифт во всех современных форматах выкладываю:

LEDc.zip
(40.74 KiB) Downloaded 504 times

Он хороший, и он - БЕСПЛАТНЫЙ! А сейчас, как я начитался, и с авторскими правами на шрифты бывают проблемы! :mrgreen:
iLavr
User avatar
Lavr
Supreme God
Posts: 16622
Joined: 21 Oct 2009 15:08
Location: Россия

Re: Отладочный модуль на К1801ВМ1

Post by Lavr »

Ну а дальше, собственно, случилось то, чего я и боялся, почему и не выкладывал код сразу,
как закончил этот проект... :osad:

error0xc0000005.gif
error0xc0000005.gif (13.8 KiB) Viewed 12508 times

Очень мне не хотелось, чтобы кто-то нарвался на это раньше меня... :-?

Ошибка 0xc0000005 - это "код выполняется в области данных", что, честно говоря, так и есть.
ЕХЕ-файл эмулятора был пропатчен кодом для взаимодействия с DLL.
И хотя я знал про это и старался не влезть в область данных, где-то всё же влез.

Windows 98 ещё прощает такие трюки, но старшие Винды к этому относятся строго.
Там этот механизм задействован на уровне ядра системы и самого процессора.

Пробовал под Windows 7 отключить предотвращение выполнение данных (DEP) для
этой программы - не спасло. :osad:
Это не единственный механизм в Windows 7, который отслеживает такую ситуацию.

Что ж... осталось попробовать под Windows ХР и Windows 10 - помотрю, как они
среагируют на некорректный хак. :-?
iLavr
User avatar
Lavr
Supreme God
Posts: 16622
Joined: 21 Oct 2009 15:08
Location: Россия

Re: Отладочный модуль на К1801ВМ1

Post by Lavr »

В общем, я подумал и решил поступить следующим образом: выложить всё "как есть",
потому как удивить всех панелью Монитора не было моей самоцелью, а хотел я
пригласить всех заинтересованных лиц на форуме попрактиковаться в программировании
на ассемблере микропроцессоров семейства 1801.

BK Emulator.rar
(1.81 MiB) Downloaded 523 times

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

Ну и мне хотелось, чтобы процесс был привычен и удобен всем, кто начинал с
этих наших "Специалистов" и "Микрош", с их директивми D, L, T и т.п.
К сожалению, встроенный монитор БК - упрощенный и не так удобен.
А вот Монитор с панелью управления по идеологии к этому очень близок.

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

Ситуация усложняется тем, что на компьютерах с Windows XP, 7, 10 у меня нет
никаких средств разработки и отладки, и я не уверен, что изменю что-то в
ближайшее время, так что:
BK_M.EXE - эмулятор с панелью под Монитор, а если не заработает, то
BK.EXE - эмулятор оригинальный, он точно под Windows 7 работает! :kruto:

Также в архиве:
Injected.dll - эмулятор панели Монитора;
InjDLL.cpp - его исходный код;
InjHOW.cpp - как делается инжекция в чужой файл .ЕХЕ;
LED.ttf - 7-сегментный шрифт;

MON1986.ASM - исходный код Монитора с панелью управления;
MON1986.BIN - оригинал Монитора, который мы тут набирали;
MPSS_86_2.doc - статья из "МПСС", с которой всё и началось.

ASM.COM - простой ассемблер для микропроцессоров 1801;
ASM... - всё что нужно для него.

Писать программы лучше в привычной среде под Windows, компилировать этим ассемблером,
переносить в папку Bin и запускать в среде эмулятора БК.
Как это сделать по-быстрому: "Руководство по запуску.txt"
Отладчик в эмуляторе БК - свой собственный, хороший, "с блэкджэком и прочими ништяками". :lol:
Эмулятор БК 0010 new.rtf - справочный материал, по эмулятору БК.

В папке Bin - Mirage66000.bin - один из лучших отладчиков для БК, для тех,
кто любит эти наши директивы D, L, T... и хелп к нему - там же. :ewink:

В папке Docs - полезные материалы по БК, процессору 1801ВМ1 и программированию на его
ассемблере и Васике (иногда из-под него удобно что-либо проверить).

Отдельное спасибо автору этого замечательного эмулятора, за то, что он корректно работает
в Windows 98 (и не только), четко слушается моей виртуальной клавиатуры, и оказался весьма
удобным для сторонней инжекции в собственный код! :kruto:

DispBK.gif
DispBK.gif (24.3 KiB) Viewed 12500 times

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

Re: Отладочный модуль на К1801ВМ1

Post by Lavr »

Lavr wrote:.. а хотел я пригласить всех заинтересованных лиц на форуме попрактиковаться в программировании на ассемблере микропроцессоров семейства 1801.
В общем, есть некоторая прелесть в ассемблере этих процессоров! :kruto:

Вот, к примеру, заполнение области экрана словом:

Code: Select all

    .=1000
;----------------------
    MOV #177777,R0       ;слово заполнения 0FFFFH
    MOV #40000,R1        ;начало экрана
    MOV #20000,R2        ;длина блока 37777 байт или 17777 слов
CYC:
    MOV R0,(R1)+       ; по адресу экрана сохраняем слово заполнения
                       ; сдвигаем указатель в экране на 2:  (R1)+
    SOB R2,CYC         ; уменьшаем счетчик слов, цикл пока не = 0
;----------------------
Я еще и задуматься толком не успел... а оно уже в две строчки получилось! :kruto:
iLavr
Post Reply