Начальная

Windows Commander

Far
WinNavigator
Frigate
Norton Commander
WinNC
Dos Navigator
Servant Salamander
Turbo Browser

Winamp, Skins, Plugins
Необходимые Утилиты
Текстовые редакторы
Юмор

File managers and best utilites

Электроника МК-161. Эмулятор мк 52


Микрокалькулятор "Электроника МК-52" [Архив] - Speccy

Просмотр полной версии : Микрокалькулятор "Электроника МК-52"

Orionsoft

04.06.2006, 00:51

прикупил намедни сабж !

как им рулить ? дайте мануалов !

и там вроде какой-то внешний модуль памяти должен быть ? что-то я его не нашел ..

В журналах "Техника - молодёжи" №№ 1 - 6 1985 был очень интересный цикл статей по программированию "Электроники Б3-34" (совместимой с "МК 52"). В электронном виде эти статьи есть на сайте "Эмулятор 3000" (http://www.emulator3000.org/rus-c3.htm), а также там есть и сам эмулятор этого микрокалькулятора (для iBM PC).

Surfin_Bird

04.06.2006, 02:18

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

Если очень надо - могу нарыть практически полную подшивку ...На http://www.emulator3000.org/rus-c3.htm статьи из "Науки и жизни" тоже есть. Но я рекомендавал "Технику - молодёжи" потому-что там изложение больше подходит для начинающих (как мне кажется).

Ура реальщикам МК52!!! :) :) :) :) :)

прикупил намедни сабж !

как им рулить ? дайте мануалов !

и там вроде какой-то внешний модуль памяти должен быть ? что-то я его не нашел ..

Был у меня такой зверь! Хорош тем что имеется встроенная память ППЗУ где можно постоянно хранить свои программы (несколько штук и не более 96 ячеек для каждой - хотя максимальная длина программы 104 ячейки может быть). Также отдельно покупались БРП (блоки расширения памяти) с игровыми и математическими программами...

... Но я рекомендавал "Технику - молодёжи" потому-что там изложение больше подходит для начинающих (как мне кажется).Если же интересует информация сразу об особенностях МК 52 (он будет посовременнее Б3-34), то советую статьи из "Науки и жизни": №№ 11 за 1988, 1 и 11 за 1989 годы.

Ура реальщикам МК52!!!Ну вообще-то я реальщик МК 61; он отличается от МК 52 отсутствием ППЗУ и возможности работы с блоками расширения памяти (БРП).

... хотя максимальная длина программы 104 ячейки может быть ...Точнее 105 ячеек (шагов, байтов): от 0 до 104.

Точнее 105 ячеек (шагов, байтов): от 0 до 104.

Погрешность моей аналоговой памяти - плюс/минус единица ;)

Вобщем неудобно когда игровую программу (убегаем от прыгающего чудовища в псевдослучайном лабиринте размером до 100x100 клеток, пытаясь попасть из левой нижней клетки в правую-верхнюю), которую еле утолкал в 105 ячеек, после загрузки из ППЗУ приходилось добивать вручную каждый раз, когда хотелось поиграть...

Orionsoft

04.06.2006, 23:55

http://img193.imageshack.us/img193/5121/mymk523dt.jpg Первые скриншоты !

Вы бы еще Электроника Д3-28 поискали. Вот это был аппарат. ))

Вы бы еще Электроника Д3-28 поискали. Вот это был аппарат. ))

Саммый ранний программируемый советский зверь вроде был Электроника Б3-21 (http://rk86.com/frolov/b3-21.htm) (выпускался с 1977 по 1981 годы) - был у меня и такой :)

http://rk86.com/frolov/b321_.jpg

Из того что в нём было хорошего - кольцо регистров (в будущих моделях от кольца осталось только X и Y).

Из того что в нём было плохого - адресная память с дырками по 6 (вроде) ячеек (в будущих моделях сделали сплошную адресацию от 0 до 95, позднее - до 104).

P.S. Я в 1990 году на свой Б3-21 наклеил гордую надпись "IBM PC XT", а также пытался управлять с помощью него внешними устройствами...

P.P.S. А вообще из программируемых электроник я работал на Б3-21, Б3-34, МК-61, МК-52, МК-85. Из них МК-52 был лучшим (если не считать МК-85, который с бейсиком).

Несколько фотоснимков от меня.

http://grands.land.ru/photos/mk61_0.jpg

Остальные качаем сами :) (от 90 до 160Кб):

[1 (http://grands.land.ru/photos/mk61_1.jpg)] [2 (http://grands.land.ru/photos/mk61_2.jpg)] [3 (http://grands.land.ru/photos/mk61_3.jpg)] [4 (http://grands.land.ru/photos/mk61_4.jpg)] [5 (http://grands.land.ru/photos/mk61_5.jpg)]

Всем почитателям советских ПМК советую почитать вот этот материал про ЕГГОГ-и: http://www.geocities.com/lautenaus/b334.htm

CityAceE

16.06.2006, 17:36

Пару моих слов в тему...

1. В своё время я пытался состряпать эмулятор MK61 для Спектрума (см. аттач). Похоже? ;)

2. Далеко не все знают, что в начале 90-х годов у нас в стране выходила самиздатовская газета "Экспресс", посвященная программируемым микрокалькуляторам. Газета представляла из себя лист A4 сложенный поплам. Графика была нарисована от руки, текст напечатан на пишущей машинке, а позже на каком-то принтере. Газета тиражировалась на копировальном аппарате. Распространялась любителям в письмах и география распространения охватывала почти всю страну. Несмотря на небольшой объём, газета содержала в себе достаточно много очень любопытного материала (статей и программ). По всему видно, что делалалсь она с огромной любовью, а из писем читателей абсолютно ясно, что выход очередного номер был небольшим прздником и ждался с нетерпением. "Экспресс" мне очень напомнил первые номера ZX-Ревю.

Одним из ведущих редакторов газеты был Владимир Трофимчук - один из авторов (код и музыка) игры Abe's Mission. Подборку всех номеров "Экспресса" мне давал почитать брат Владимира - Александр (Schafft). Думаю, что это подборка до сих пор жива.

CityAceE

16.06.2006, 17:52

Примерно так выглядела шапка газеты "Экспресс"

┌───────────────────────────────────────────────── ─────────────┐ │ ██████ ██ ██ ██████ ██▄▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄ │ │██ ██ ██ ██ ██ ██ ▀████▄▄ █ 02.91 █ │ │ ████ ████ ██ ▀▀█████████████▄▄ █████████████ │ │██ ██ ██ ██ ██ ██ ▀▀████▄ █ ■███████ ■█ │ │ ██████ ██ ██ ██████ ▀▀██ █▀▀█▀▀█▀▀█▀▀█ │ │ █▄▄█▄▄█▄▄█▄▄█ │ █████████████████████████████████████████████ ████ ██ ██ ██ ██ ██ █ █ ██ ██ ███ █████ ▄▄ ▄▄ ▄▄ ▄▄ ██ █ ████ █ ████ █ ███████ ████ █ ████ ████ ▀▀ ▀▀ ▀▀ ▀▀ ██ █ ████ █ ██ █ ███████ ██████████ ██ ██ ██ ██ ██ █ ████ █ ███████ ███████ ████ █ ████ ████ ▄▄ ▄▄ ▄▄ ▄▄ ██ █ ████ █ ███████ ██ ███ █████ ▀▀ ▀▀ ▀▀ ▀▀ ██ ██████████████████████████████████████████████████ ██████████████ │ àåàîàæƒùìÄà êçäÇìêà èïôüÇ ï₧üêÆàïàë êâÉÄé¢ò ÅÉÄâÉÇîî │ └───────────────────────────────────────────────── ─────────────┘

@CityAceE А реально отсканить весь express, или это напряжно слишком будет ? Интересно бы полистать :)

CityAceE

17.06.2006, 02:59

@CityAceE А реально отсканить весь express, или это напряжно слишком будет ? Интересно бы полистать :) Наверное реально. Но у меня нет этой подборки. Надо просить об этом Schafft'а, но он что-то давно на форум не заходит :(

Всем почитателям советских ПМК советую почитать вот этот материал про ЕГГОГ-и: http://www.geocities.com/lautenaus/b334.htmЯ и сейчас удивляюсь, как много недокументированных особенностей у простенькой с виду вычислительной машинки!

...В своё время я пытался состряпать эмулятор MK61 для Спектрума (см. аттач). Похоже?Очень даже красиво! Интересно, что мысль написать на спектруме эмулятор ПМК приходила и мне. Но сэмулировать абсолютно все недокументированные особенности невозможно, а, между тем, в играх они широко используется. Потом я ещё напишу об этом.

Очень даже красиво! Интересно, что мысль написать на спектруме эмулятор ПМК приходила и мне. Но сэмулировать абсолютно все недокументированные особенности невозможно, а, между тем, в играх они широко используется. Потом я ещё напишу об этом.

Я лет эдак с десять назад натыкался на эмулятор Б3-34 (вроде) для ZX. Вроде даже оно как-то работало - но всё не проверял, просто запустил, потыкался в кнопки, и вышел.

20-06-2006

В журнале "Наука и жизнь" №2 за 1989 (http://www.emulator3000.org/Books/SAL/1989_02.djvu) была опубликована одна из интересных (на мой взгляд) игр для "Электроники МК 52/61". В процессе игры используется недокументированная особенность: вывод информации на индикатор в режиме выполнения программы ("режим мерцания"), из-за чего играть, видимо, можно только на настоящей машинке. Во всяком случае на эмуляторе "Калькуляторы 3000" Е.Троицкого (http://www.emulator3000.org/rus-c3.htm) у меня поиграть не получилось: там режим мерцания эмулируется не точно.

Я лет эдак с десять назад натыкался на эмулятор Б3-34 (вроде) для ZX. ...Можно ли его как-нибудь найти? Знает ли кто-нибудь про другие эмуляторы программируемых микрокалькуляторов (ПМК), - не только на Спектруме и IBM PC, но и, возможно, на других платформах?

23-06-2006

Можно ли его как-нибудь найти?Имелся ввиду видимо эмулятор MK-54. Есть еще эмулятор МК-61, но страшно неудобный в управлении. Если надо, могу тоже закинуть.

24-06-2006

прикупил намедни сабж !

как им рулить ? дайте мануалов !

и там вроде какой-то внешний модуль памяти должен быть ? что-то я его не нашел ..Вы все маньяки как и я ! :v2_devil:

Вот инструкция и все такое секое:

http://rk86.com/frolov/mk-52.htm

А это типа самый крутой калькуляторный сайт :v2_finge: : http://rk86.com/frolov/

25-06-2006

Имелся ввиду видимо эмулятор MK-54. Есть еще эмулятор МК-61, но страшно неудобный в управлении. Если надо, могу тоже закинуть.Конечно, интересно было бы всё увидеть! Не знал, что такие разработки существуют. Что же касается приложенного эмулятора MK-54, я его "очень строго" погонял :) и выяснил, что эмуляция там не точная: даже первый тест работоспособности из Руководства по эксплуатации МК 61 (http://grands.land.ru/) не проходит. Впрочем, как я уже писал, сделать 100%-ю совместимость чрезвычайно сложно, даже если остановиться только на вычислительных способностях (именно это и остановило меня 10 лет назад от попыток написать свой эмулятор). Сравните: Б3-34-совместимые калькуляторы работают с диапазоном чисел (по модулю) от 1*10^-99 до 9,9999999*10^99, а Spectrum BASIC - от 2,8*10^-39 до 1.7*10^38.

...Конечно, интересно было бы всё увидеть! Не знал, что такие разработки существуют.... Эмуляторы калькуляторов :)

Вот это реально чудо техники. До поломания форума я загадку загадывал, насчет этой платы. Почти ZX SPECTRUM -ноутбук.

http://rk86.com/frolov/mk-106_ru.htm

CityAceE

30.06.2006, 14:17

mk61.zip Что-то не получается запустить...

Что-то не получается запустить...Запускать надо файл MK. Управление QAOP<SP>. L - LOAD S - SAVE C - CLEAR Вроде работает. Запускал в UNREAL.

Управление QAOP<SP>. L - LOAD S - SAVE C - CLEAR А также клавиши: 1, 2, 3 - Р/ГРД/Г соответственно и BREAK - останов программы.

Какие микросхемы стоят в блоках расширения памяти для "МК-52"?

Orionsoft

23.08.2006, 14:40

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

Какие микросхемы стоят в блоках расширения памяти для "МК-52"?

В БРП-хах ПЗУ-хи на 4К вроде - прямо на плате лепёха - и дорожки к выводам. И вроде бы к каждому БРП прилагалась принципиальная схема :) Причём интересно, что не все подпрограммы из БРП были задокументированы ;) Были несколько скрытых, назначение которых мы так и не поняли - может быть просто отбраковка - типа программы с глюками замалчивались...

В БРП-хах ПЗУ-хи на 4К вроде - прямо на плате лепёха - и дорожки к выводам.Это так называемые бескорпусные варианты серийных микросхем. Название их мне тоже найти пока не удалось. Кстати, в самом микрокалькуляторе тоже установлены бескорпусники.

Названия микросхем внутри калькулятора МК-61 я под лупой вижу: К745ИК1302 К745ИК1303 К745ИР2 Эти микросхемы -- жёлтого цвета (золото?), залиты белой смолой.

Вышла в свет электронная djvu-книга «Микрокалькулятор „Электроника МК 61“. Руководство по эксплуатации» (http://www.zx.pk.ru/showthread.php?p=643673#post643673). Несмотря на то, что это краткая версия (отсутствуют приложения), работа над ней длилась более 2-х месяцев. Есть планы на отдаленное будущее выпустить и полную версию «Руководства».

artem_zp

29.10.2010, 13:22

в моей мк52 первые 2 разряда и знак минус светятся очень тускло, остальные хорошо, причем если просто набрать одну цифру, первый разряд светится ярко, при наборе второй тускнеет. кто знает чем лечится?

Stepanych

29.10.2010, 22:48

... кто знает чем лечится? Возможно сдохли конденсаторы в обвязке индикатора. Или сам индикатор (с ВЛИ такое бывает).

artem_zp

29.10.2010, 23:08

кондеры поменял уже, буду искать индикатор

В прошлом году у моего микрокалькулятора тоже случилась неисправность: на экране то появлялись, то исчезали цифры, и никакой реакции на кнопки. Эта неисправность была описана в журнале "Наука и жизнь" №12 за 1989 на с.76, а также в Википедии (http://ru.wikipedia.org/wiki/Электроника_МК-61), поэтому я сразу заменил оксидный конденсатор, как там рекомендавалось, и микрокалькулятор снова заработал.

perestoronin, на сайте автора линк рабочий - можно поймать в разделе "Другие электронные устройства" (сама ссылка (http://file.qip.ru/file/R4E8HDLv/mk61manu.html))

Astrolux

19.10.2012, 00:30

Если нравится программировать на ПМК, то уже несколько лет выпускается "новодел", полностью совместимый с программируемыми микрокалькуляторами. Это МК-161 и МК-152. http://mk.semico.ru/index.htm

http://mk.semico.ru/pict/mk161/i8826.jpg

http://mk.semico.ru/pict/mk161/i2559b.jpg

Если нравится программировать на ПМК, то уже несколько лет выпускается "новодел", полностью совместимый с программируемыми микрокалькуляторами. Это МК-161 и МК-152.

...цена повергает в шок

Есть у кого-то опыт использования новодела, не в стиле "купил - поиграл - на полку", а в реальной задаче?

...цена повергает в шок

Будем радоваться тому, что на исходный МК-52 теперь, логично, тоже цена будет достойная (это не значит, что я его буду продавать!).

perestoronin

19.11.2012, 13:55

Будем радоваться тому, что на исходный МК-52 теперь, логично, тоже цена будет достойная (это не значит, что я его буду продавать!).

МК: Б3-34, МК-54, МК-56, МК-61, МК-52 есть в личной коллекции. Все рабочие не смотря на их возраст в более чем 20 лет. Но это уже история, слабенькие они и мало шагов у них, лишь только в МК-52 есть энергонезависимая память.

МК-161 и МК-152М это качественно обновленный МК-52, шагов одних только 10тыс, скорость в тысячи раз быстрее чем у МК-52. Есть простенький вывод графики, встроенные часы, порты COM, SPI (и у МК-152М есть LPT). У мобильного варианта МК-161 есть литиевый аккумулятор, а настольный МК-152 питается от сети 220в.

Если бы МК-161 и МК-152М штамповались миллионными тиражами как смартфоны то цена могла бы быть крайне низкой. А так даже один корпус хорошо вытягивает. Знаю это на личном опыте, попройте заказать изготовление корпуса попроще - к примеру от БК-0011М. Думаю будете приятно удивлены. Конечно можно выпускать МК без корпуса, но кому он будет нужен. Также попробуйте заказать малым тиражом печатные платы. А прошивку девайса сами будете поддерживать и развивать? Безплатно ? А координировать продажи, относить посылки на почту? Вести переписку? Накладных расходов будет будь здоров. Я рад что хотя бы вообще можно купить МК-ки, и не за 30тр как миллионные смартфоны, а дешевле, и не как наши супер ITX платы "Монокубы", которые вообще ни за какие деньги не хотят продавать в МЦСТ физическим лицам.

---------- Post added at 13:55 ---------- Previous post was at 13:44 ----------

Есть у кого-то опыт использования новодела, не в стиле "купил - поиграл - на полку", а в реальной задаче?

на сайте производителя есть примеры

чтобы инструмент применить, его еще надо изучить, даже курсы есть специальные http://vk.com/hscool и ведет их http://vk.com/the.hacker

также можно почитать как их использовать можно здесь http://vk.com/olddron (http://vk.com/olddron)

Есть у кого-то опыт использования новодела, не в стиле "купил - поиграл - на полку", а в реальной задаче?Я иногда произвожу какие-нибудь хозяйственные вычисления, особенно если удобно использовать стек и бесскобочную логику микрокалькулятора. Бывает надо произвести монотонные вычисления - на "обычном" калькуляторе пришлось бы много раз тыкать в одни и те же клавиши, а тут - набрал программу и считай. :) Еще мне часто оказываются полезны функции преобразования часов-минут-секунд. Кроме того, умение программировать на МК 61 когда-то помогло мне быстрее освоить калькуляторные процедуры в системе ZX Spectrum.

perestoronin

02.12.2012, 19:48

Кто-нибудь пробывал для МК-52 делать съемные модули программ как БРП, но на современных комплектующих?

У кого-нибудь есть модули или копии содержимого микросхем из модулей БРП Астро, БРП Гео ?

Говорят и пишут что в микросхемах модуля БРП-3 хранятся одновременно и программы для БРП-2. Если это так, то как их извлечь (или на время переключить БРП-3 в режим БРП-2)? Кто нибудь пробывал это делать или это злая шутка и попытка ввести в заблуждение ?

Кто нибудь пробывал это делать или это злая шутка и попытка ввести в заблуждение ? Читал я на форуме или ещё где, как будто любой БРП содержал всё. Перемычками выставлялась модель. БРП-3 у меня есть, но не включал его давно. Как дамп содержимого снять вообще не знаю, кроме как по инструкции грузить программы в память и переписывать на листочек)))

perestoronin

11.01.2013, 10:53

И описание БРП-2. Может тоже кто-то захочет почитать.

Сам БРП-2 в наличии есть? Или дамп его ПЗУ.

Выложу схему МК-52, может кому нибудь пригодится. А схема БРП есть?

perestoronin

12.01.2013, 12:15

Есть, точнее был, но сейчас всё облазил и не смог найти.

Нет. Схемы нет. Если найду свой БРП-2, попробую перерисовать. Хотел просто поэкспериментировать со своим МК-52. Вот и занялся поиском инфы на него, заодно и тут выложил, что нарыл.

Схемы у всех БРП идентичные. Кроме БРП с цифрами были и другие БРП-Гео, БРП-Астро, и еще для военных свои БРП предлагались.Мне на данный момент удалось приобрести БРП-3 и БРП-4.В планах выпустить реплику на меге и SD-карте, на карте можно будет выбирать набор программ и МК-52 далее будет видеть его как родной блок БРП. Наборы программ при желании можно и свои подготовить. Вот только не знаю удастся ли из ПЗУ МК-52 сохранять на SD-карту реплики набранные программы. Но даже если и не удастся, то выпускаются МК-152 и МК-161. Но жаль что они не умеют работать с картами SD. Вполне реально и для них вместо их штатного элетронного диска замутить подобное, а впоследствии портировать проект МК-161/152 с 51го контроллера на сверхэкономичную модель контроллера ARMv7.

В БРП естественно стоит 1601РР1 и его несложно было бы повторить даже на макетке, но наугад чего-то паять ... Саму МК-52 иногда можно увидеть на аукционах-барахолках, а вот БРП как-то не доживали до этих времён.

Sergei Frolov

12.01.2013, 12:34

В БРП естественно стоит 1601РР1

Это с чего это?

Это с чего это? А что в то время было такое изобилие типов РР? В схеме МК-52 стоит КР1601РР1, что другое может быть в БРП ...

Sergei Frolov

12.01.2013, 12:55

А что в то время было такое изобилие типов РР? В схеме МК-52 стоит КР1601РР1, что другое может быть в БРП ...

Забавно.

perestoronin

12.01.2013, 12:56

А что в то время было такое изобилие типов РР? В схеме МК-52 стоит КР1601РР1, что другое может быть в БРП ...

РР1 электрически перепрограммируемое ПЗУ.

В БРП должны были ставить более надежные неперепрограммируемые масочные ПЗУ.

Sergei Frolov

12.01.2013, 13:02

Его называли технологическим. По слухам туда хотели подключить какую-то периферию, но не сложилось.

Забавно. А кроме слова "Забавно" что мешало знатоку написать что там реально стоит? - Вот Виктор сделал хорошие фотки - можно даже схему прикинуть исходя из разъёма на схеме МК-52. Назначение переключателей известно?

Sergei Frolov

12.01.2013, 13:30

А кроме слова "Забавно" что мешает знатоку написать что там реально стоит?

Э.... А кто-то спрашивал, что стоит внутри БРП? Вопрос был только про какое-то изобилие. :)

А что в то время было такое изобилие типов РР? В схеме МК-52 стоит КР1601РР1, что другое может быть в БРП ...

Информация по МК-52: http://arbinada.com/pmk/node/319 На схеме которая здесь (и по ссылке) не должно быть соединения двух правых контактов на XS3 (один из них это данные, второй - выбор ПЗУ внутр/внешн). - Действительно, там стоит масочное ПЗУ - а программируемого БРП не было? На РР1 вполне можно было сделать.

Sergei Frolov

12.01.2013, 15:41

На РР1 вполне можно было сделать.

...поставив восемь штук вместо одной ПЗУ

...поставив восемь штук вместо одной ПЗУ Посмотрите ещё раз список (количество) программ которые в каждом блоке. Программы вовсе не должны быть максимальной длины 90-100шагов каждая и даже в парочку РР1 в таком блоке можно было бы записывать много чего полезного (своего и "не своего"). На разъёме всего-лишь нужны были все выводы от внутренней РР1.

Написано на подложке только 64К-2.

745ПЗУ64К-2

Вышла в свет электронная djvu-книга «Микрокалькулятор „Электроника МК 61“. Руководство по эксплуатации». ...краткая версия (отсутствуют приложения)... Есть планы на отдаленное будущее выпустить и полную версию «Руководства».Сделана новая полная электронная версия книги «Микрокалькулятор „Электроника МК 61“. Руководство по эксплуатации» (http://www.fayloobmennik.net/3324351) - включены все приложения и схема.

Powered by vBulletin® Version 4.2.3 Copyright © 2018 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot

zx-pk.ru

Электроника МК-161

Программируемый калькулятор с обратной польской нотацией (RPN Logic), Сделан в России! Эволюционное развитие советских калькуляторов MK-61/52 :
  • 10 000 шагов программы
  • 1000 регистров
  • область двоичных данных 4096 байт
  • область текстов 3072 байт
  • "диск" 512 kB для хранения файлов
  • графический дисплей с подсветкой, 128×64
  • порт I/O для хранения информации, последовательный и паралельный порт
  • прошивка с графическим интерфейсом, поддержка меню и диалогов

МК-компилятор

Я разработал MK-компилятор, позволяющий писать программы на ПК используя язык программирования высокого уровня и используя интерфейс RS-232 отсылать их непосрественно в микрокалькулятор или в эмулятор калькулятора. Программа включает в себя:
  • названия регистров вместо номеров
  • автоматические метки вместо адресов
  • структуры, такие как FOR/NEXT, IF.THEN.ELSE, DO/WHILE, REPEAT/UNTIL
  • международную нотацию для обозначения кнопок в листингах программ
  • область программ, область двоичных данных и область регистров в одном исходном файле
  • эти три области передаются непосредственно в калькулятор
  • захват экрана основного экрана и графического экрана в изображение *.PNG
Основной экран МК-компилятора
Скачать MK-COMPILER 161. Содержимое:
  • Компилятор для Windows V1.08 (август 2015).
  • исходный файл компилятора для PureBasic.
  • Файл Помощи.
Основная задача этого компилятора - взять ваш Исходный код...

..., превратить в машинные коды MK-161

И отправить программу в калькулятор...

Пример программы с бинарными данными

Захват основного или графического экрана МК.

Захват основного экрана.

Пример: вычисление числа Пи

; требуется только один регистр #REG 0 N DO ; Отображение подсказки в строке комментариев #NUM ask EXEC \CPrintStringB ; ожидание значения INPUT ; сохранено в N STO N ; приготовить строку комментариев для ответа #NUM result EXEC \CPrintStringB ; на старте сумма = 0 CX ; вычисляет сумму 1/n=Пи/6 FOR N @N X^2 1/X + NEXT ; исправления чтобы найти Пи 6 * SQR ; останов дисплея STOP LOOP ; область бинарных данных для текстовых данных #BINARY ; TEXTN добавляет открывающий символ 0A (новая строка) и ; конечный символ nul . ; newline требуется чтобы очистить строку комментариев ask: #TEXTN "сколько циклов?" result: #TEXTN "Усреднение Пи"

Compiled listing PROGAM ZONE Step | Code | Keys ------------------------- 0000 | 01 | 1 0001 | 00 | 0 0002 | 00 | 0 0003 | 00 | 0 0004 | F4 | PP M 0005 | 90 | 9 0 0006 | 27 | 2 7 0007 | 50 | R/S 0008 | 40 | M 0 0009 | 01 | 1 0010 | 00 | 0 0011 | 01 | 1 0012 | 07 | 7 0013 | F4 | PP M 0014 | 90 | 9 0 0015 | 27 | 2 7 0016 | 0D | CX 0017 | 60 | RM 0 0018 | 22 | F X^2 0019 | 23 | F 1/X 0020 | 10 | + 0021 | 5D | F L0 0022 | 17 | 1 7 0023 | 06 | 6 0024 | 12 | * 0025 | 21 | F SQRT 0026 | 50 | R/S 0027 | 51 | GOTO 0028 | 00 | 0 0 BINARY ZONE Step | Code | Comment ------------------------- 1000 | 0A | newline 1001 | 48 | "H" 1002 | 6F | "o" 1003 | 77 | "w" 1004 | 20 | " " 1005 | 6D | "m" 1006 | 61 | "a" 1007 | 6E | "n" 1008 | 79 | "y" 1009 | 20 | " " 1010 | 6C | "l" 1011 | 6F | "o" 1012 | 6F | "o" 1013 | 70 | "p" 1014 | 73 | "s" 1015 | 3F | "?" 1016 | 00 | nul 1017 | 0A | newline 1018 | 50 | "P" 1019 | 69 | "i" 1020 | 20 | " " 1021 | 61 | "a" 1022 | 70 | "p" 1023 | 70 | "p" 1024 | 72 | "r" 1025 | 6F | "o" 1026 | 78 | "x" 1027 | 69 | "i" 1028 | 6D | "m" 1029 | 61 | "a" 1030 | 74 | "t" 1031 | 69 | "i" 1032 | 6F | "o" 1033 | 6E | "n" 1034 | 00 | nul ------------------------- Addr | Name ------------------------- B 1000 | ASK B 1017 | RESULT ------------------------- Reg | Name ------------------------- 0 | N 9027 | \CPRINTSTRINGB ------------------------- -- END OF FILE -- Запуск:

Возврат на адрес 0000 нажатием B/O, затем запуск нажатием С/П. Первый экран:

Попробовал 500 циклов (набрать 500, нажать С/П), соответствующее значение Пи:

Можно снова ввести новое значение и нажать С/П. Например 10000:

Эмулятор eMKatic MK-161

MK-компилятор может быть использован совместно с эмулятором eMKatic MK-161 так как генерирует файлы, используемые эмулятором.

Эмулятор запустил программу PI Monte Carlo

Достаточно добавить строку: #MKFiles 2 в исходном коде, и компилятор создаст три файла, которые использует программа:
  • *.MKP: программа
  • *.MKB: бинарные данные
  • *.MKD: цифровые данные

Запустить эмулятор, нажать правую кнопку мыши. Появится следующее меню:

Выбрать файл для загрузки файла.

eMKatic поддерживает локализацию. Можно скачать языковой файл. Например, английский:

С версии 1.04, MK-Compiler может вызвать эмулятор, посылая в него все создаваемые файлы.
  • Option 5: выбрать путь к эмулятору.
  • Option 8: после компиляции, протестируйте вашу программу

Меню

Кнопки навигации по меню.

Кнопки меняют функции в зависимости от контекста.

Выход в основное меню по нажатию кнопки ВЫХОД
Под катом русские обозначения и английские эквиваленты
Tout ouvrir | Tout fermer

Расширенное программирование

Некоторые функции доступны через чтение/запись в псевдо-регистры 9000-9999.

Доступ к псевдо-регистрам с клавиатуры:
  • для чтения: Р Р ИП nnnn
  • для записи: Р Р П nnnn
доступно множество функций, таких как:
  • Графика
  • клавиатура
  • прерывания, таймеры, часы
  • файлы
  • графический интерфейс
коды кнопок :
--ВКЛ 35← 36↑ 34→ --☼
22P 31Р-ГРД-Г 37↓ 32ВЫХОД 33ВВОД
20F 23шг→ 24шг← 25В/О 26 (*)С/П
21K 27ИП 28П 29БП 30ПП
077 088 099 16- 18÷
044 055 066 15+ 17×
011 022 033 19↔ 14B↑
000 10, 11/-/ 12ВП 13Cx
Примечание : код 26 не возвращается, так как он останавливает программу. Кнопки ВКЛ и Подсветка не возвращают коды.
Примеры, скачать
Font File Demo Inter Music Sprite
Использует #FONT/#DEFCHAR чтобы указать набор символов. Использует #FINDFILE/#CREATEFILE/#LOADFILE для управления файлами и директориями. Использует прерывания для воспроизведения звуков во время рисования линий. Использует #DEFGRAPH для назначения спрайтов a и их отображения (на скрине - пример)
Пример

Программа берёт значения 0, 1 или 2 на входе и затем 20 раз рисует соответствующие образцы на случайных позициях на экране. 0=звезда, 1=квадрат, 2=круг. В конце программа ожидает нажатия кнопки. Можно ввести новое значение и нажать С/П. ; использующиеся регистры #reg 0 Index #reg e ObjectAddress DO ; вычисляет адрес образца ; в БИНАРНОЙ памяти используя таблицу ENTER #NUM Table + PRGM $1000 + STO ObjectAddress ; Очистка экрана 0 EXEC \CLS ; 20 циклов $20 STO Index FOR Index ; Случайные координаты $56 RND * $120 RND * SET \x0y0 ; отрисовка образца @ObjectAddress EXEC \PUTGB NEXT ; Отрисовка графического экрана GRPH ; Ожидание кнопки REPEAT GET \NEXTKEY NOT UNTIL(x0) ; Ожидание нового значения INPUT LOOP ; таблица с 3 адресами Table: #DAL star square circle #END

; смена в БИНАРНОЙ памяти #BINARY star: #DEFGRAPH *..*..* .*.*.*. ..***.. ******* ..***.. .*.*.*. *..*..* #END square: #DEFGRAPH ******* *.....* *.....* *.....* *.....* *.....* *.....* ******* #END circle: #DEFGRAPH ..***.. .*...*. *.....* *.....* *.....* *.....* .*...*. ..***.. #END Скриншоты трёх опций:

20 звёзд, значение 0.

20 квадратов, значение 1.

20 кружков, значение 2.

Скомпилированная программа: ОБЛАСТЬ ПРОГРАММ Step | Code | Keys ------------------------- 0000 | 0E | ENT 0001 | 00 | 0 0002 | 00 | 0 0003 | 04 | 4 0004 | 08 | 8 0005 | 10 | + 0006 | 28 | K PRGM 0007 | 01 | 1 0008 | 00 | 0 0009 | 00 | 0 0010 | 00 | 0 0011 | 10 | + 0012 | 4E | M e 0013 | 00 | 0 0014 | F4 | PP M 0015 | 90 | 9 0 0016 | 10 | 1 0 0017 | 02 | 2 0018 | 00 | 0 0019 | 40 | M 0 0020 | 05 | 5 0021 | 06 | 6 0022 | 3B | K RAN 0023 | 12 | * 0024 | 01 | 1 0025 | 02 | 2 0026 | 00 | 0 0027 | 3B | K RAN 0028 | 12 | * 0029 | F4 | PP M 0030 | 90 | 9 0 0031 | 00 | 0 0 0032 | 6E | RM e 0033 | F4 | PP M 0034 | 90 | 9 0 0035 | 16 | 1 6 0036 | 5D | F L0 0037 | 20 | 2 0 0038 | 56 | K GRPH 0039 | F6 | PP RM 0040 | 90 | 9 0 0041 | 29 | 2 9 0042 | 3A | K NOT 0043 | 57 | F X!=0 0044 | 39 | 3 9 0045 | 50 | R/S 0046 | 51 | GOTO 0047 | 00 | 0 0 0048 | 00 | AL(0) 0049 | 09 | AL(9) 0050 | 12 | AL(18) ОБЛАСТЬ ДВОИЧНЫХ ДАННЫХ Step | Code | Comment ------------------------- 1000 | 07 | Width 1001 | 07 | Height 1002 | 49 | byte 1003 | 2A | byte 1004 | 1C | byte 1005 | 7F | byte 1006 | 1C | byte 1007 | 2A | byte 1008 | 49 | byte 1009 | 07 | Width 1010 | 08 | Height 1011 | FF | byte 1012 | 81 | byte 1013 | 81 | byte 1014 | 81 | byte 1015 | 81 | byte 1016 | 81 | byte 1017 | FF | byte 1018 | 07 | Width 1019 | 08 | Height 1020 | 3C | byte 1021 | 42 | byte 1022 | 81 | byte 1023 | 81 | byte 1024 | 81 | byte 1025 | 42 | byte 1026 | 3C | byte ------------------------- Addr | Name ------------------------- 0048 | TABLE B 1000 | STAR B 1009 | SQUARE B 1018 | CIRCLE ------------------------- Reg | Name ------------------------- 0 | INDEX e | OBJECTADDRESS 9000 | \X0Y0 9010 | \CLS 9016 | \PUTGB 9029 | \NEXTKEY ------------------------- -- END OF FILE --

Модуль УСОМК-4

У модуля есть два выхода на 2 реле, и один вход.
  • Канал А: выход - реле
  • Канал В: выход - реле
  • Канал С: тест - вход
Программирование интерфейса
Пример

Представим, что на двери установлен датчик открытия двери, подключённый к каналу С. Нам необходимо включать сигнализацию при открытии двкри и отключать сигнализацию когда дверь закрыта. ; Параллельный порт 1 SET \IOmode DO ; ожидать открытия в канале C REPEAT GET \IOModule 8 AND UNTIL(x0) ; Если Открыто - включить сигнализацию ; на канале A 5 SET \IOModule ; Ожидать закрытия в канале C REPEAT GET \IOModule 8 AND UNTIL(x=0) ; при закрытии Выключить сигнализацию ; в канале A 7 SET \IOModule LOOP

Скомпилированная программа: Область программы Step | Code | Keys ------------------------- 0000 | 01 | 1 0001 | F4 | PP M 0002 | 90 | 9 0 0003 | 90 | 9 0 0004 | F6 | PP RM 0005 | 90 | 9 0 0006 | 92 | 9 2 0007 | 08 | 8 0008 | 37 | K AND 0009 | 57 | F X!=0 0010 | 04 | 0 4 0011 | 05 | 5 0012 | F4 | PP M 0013 | 90 | 9 0 0014 | 92 | 9 2 0015 | F6 | PP RM 0016 | 90 | 9 0 0017 | 92 | 9 2 0018 | 08 | 8 0019 | 37 | K AND 0020 | 5E | F X=0 0021 | 15 | 1 5 0022 | 07 | 7 0023 | F4 | PP M 0024 | 90 | 9 0 0025 | 92 | 9 2 0026 | 51 | GOTO 0027 | 04 | 0 4 ------------------------- Reg | Name ------------------------- 9090 | \IOMODE 9092 | \IOMODULE ------------------------- -- END OF FILE --

Диск УЗВМК-1

Модуль представлен в системе как "Диск B" (внутренняя память устройства - "Диск A") и его ёмкость в точности соответствует ёмкости на "Диске А" : 512 kB. Это позволяет, например, делать резервные копии внутренней памяти.

Организация диска - 2048 блоков по 264 байт. Я предполагаю, что 8 байт в каждом блоке зарезервировано для целей управления, и всего 256 байт используются для данных. Таким образом 256×2048=512×1024=512 kB.

Скорость и точность

По сравнению с МК-61/52, на МК-161 программирование очень усовершенствовано. Гораздо большее число шагов программы, намного больше регистров и графический экран обеспечивают комфортную работу и дружелюбный интерфейс.

(прим. переводчика - в эмуляторе = 8,9999986; в калькуляторе = 9
Тесты точности Тесты скорости
Forensic

Тест научных функций, индикация в градусах. Набрать:

arcsin(arccos(arctan(tan(cos(sin(9))))))

Результат: 8,9999999772404.

Теоретическое значение 9 !

Hebdogiciel20 =0 =1 2 FOR 0 SQR NEXT FOR 1 X^2 NEXT STOP Результат: 1,9999999837026

Tеоретическое значение = 2 !

Простое суммирование: 0000 + 0001 GOTO 00 Начинается 1 1 1 0 в стеке, и суммируется 60 секунд, сумма = 95756.Это примерно в 800 раз быстрее MK-61... Вычисление числа PI

Результаты использования программы выше на странице:

  • 10.000 итераций : 1 мин 09 сек.
  • 100.000 итераций : 11 мин 29 сек
  • (результат = 3.1415831)

Графический Интерфейс

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

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

Скачать несколько демо-программ

Каждый архив содержит исходный код, скомпилированную программу, файл для эмулятора и короткие пояснения.

Secret Number Check PI Monte Carlo Atari
Use "RadioButtons", multiple menus, SELECT/ENDSELECT Use checked lines. Use the progress bar, multiple menus, FOR/NEXT, time calculation, sound. Use a graphical menu with blocks inside an icon.
Пример программы с комментариями
#MKFiles 2 ;-------------------- ; Register definitons ;-------------------- #reg a GrainNum ; количество песчинок за цикл #reg b PiValue ; результирующее приближение Пи (на экран) #reg c Total ; подсчёт песчинок во всех циклах #reg d InsideCircle ; подсчёт песчинок в четверти круга #reg e Duration ; продолжительность цикла в ЧЧ.ММСС (на экран) #reg 7 Address ; адрес подпрограммы отвечеющей за активный элемент #reg 0 Hundred ; для повтора циклов #reg 1 Iter ; idem #reg 6 progress ; значение от 9 до 116 для отрисовки строки прогрессии #reg 5 done ; флаг второго меню #reg 4 limit ; количество итераций Программа вычисляет апроксимацию числа Пи используя метод МонтеКарло:

Если вы бросаете песчинки на некий квадрат,,

вероятность того, что он упадёт на четверть круга, вписанную в квадрат составляет:

Таким образом, возможно симулировать этот процесс и получить аппроксимацию числа Пи!

;-------------------- ; Main Menu description ;-------------------- #MENU ; меню 0 #STRING 1 "PI MonteCarlo" ; Титул большим шрифтом #HLINE ; разделитель #VINPUTD "Hundreds grains :" 92 GrainNum verif ; строка "input" устанавливает переменную GrainNum #ACTION "Run !" Calculation ; строка "действия" (переходит к вычислению) #OUTPUTD 0 "PI =" 32 PiValue ; строка "вывода" показывает регистр PiValue #OUTPUTF 0 "Time :" 50 Duration 2 4 ; строка "вывода" показывает время #HLINE ; разделитель #ACTION "Exit !" ProgramEnd ; строка "действия" (переходит к ProgramEnd) #ENDMENU Описание Главного меню.

Выглядит примерно так:

Click on

  • Hundreds grains изменить количество песчинок
  • Run ! начать вычисление
  • Exit ! выйти из программы
;-------------------- ; Sub Menu description ;-------------------- #MENU ; меню 1 #STRING 1 "Calculating..." ; титул большими символами #BLANK 10 ; пропуск #STARTRECT ; начало отрисовки прямоугольника... #PROGRESSBAR progress ; ... прогресс основан на регистре "progress" #ENDRECT ; закончить прямоугольник #BLANK 10 ; пропуск #?LINK "Progress..." 0 Done "Done !" ; conditional link, отображает надпись "Progress" во время вычисления ; отображает надпись "Done !" в конце (при значении регистра done=1) ; ссылка на меню 0. #ENDMENU Подменю во время расчёта

отисовывается прогресс расчёта:

по окончании расчёта... ...можно увидеть результат !
выбрать и нажать "Done !" для возврата в главное меню. Увидите значение числа Пи и время вычисления.
Это всё, что нужно для обеспечения графического интерфейса!

Собственно программа расчёта. Она начинается сразу за определением переменных.

Ядро системы целиком включено в "#MENUMAINLOOP", где содержится всё что требуется программе для управления меню. Всё что вам надо - подготовить различные подпрограммы для взаимодействия с экраном.

;-------------------- ; My initializations ;-------------------- CX =PiValue =Total =InsideCircle =Duration =done 1 SET GrainNum ; по умолчанию = 1 hundred (сотня) = 100 песчинок за цикл 9 SET progress ; 9 = 0% в линейке прогресса $1000 SET limit ; не более 1000 сотен ;-------------------- ; The main loop here ;-------------------- #MENUMAINLOOP Address
Подпрограмма исполняемая по "Exit !" очень простая! ProgramEnd: ; если нажат Exit!- просто останов. STOP
Подпрограмма выполняемая после ввода

также простая: она проверяет что не превышен лимит и что значение больше нуля.

verif: @GrainNum ; введённое значение /-/ IF(X>=0)THEN 1 =GrainNum ; если отрицптельное или нуль, возврат к 1 ELSE @limit + IF(x<0)THEN ; если лимит<значение @limit =GrainNum ; тогда возврат к лимиту ENDIF ENDIF RTN
;-------------------- ; My subprograms ;-------------------- Note: ; подпрограмма звука ENT $20 EXEC \Sound ; ВВОД частоты, продолжительность 20/100 sec REPEAT GET \SOUND ; звук прерван? UNTIL(x=0) ; if не равно нулю, включить RTN Calculation: 0 =done ; для условной ссылки #GOTOMENU 1 0 ; переключится на меню 1, активный элемент 0 GET \TIME HMS> =Duration ; сохранение времени старта @GrainNum =Hundred ; для цикла SUM Total ; обновить накопитель новыми песчинками FOR Hundred ; для каждой сотни песчинок 1 ENTER @Hundred @GrainNum / - ; вычислить положение индикатора (9-116) $107 * 9 + =progress ; согласно значению цикла #REDRAW ; показать новый индикатор $100 =Iter ; запустить на одну сотню песчинок FOR Iter RAN X^2 RAN X^2 + 1 - ; сравнить 1 со случайным x^2+y^2 IF(x<0)THEN ; если <1 тогда 1 SUM InsideCircle ; 1 в накопитель ENDIF NEXT NEXT $116 =progress ; индикатор на 100% 1 =done ; сменить условную ссылку #REDRAW ; показать интерфейс @InsideCircle @Total / $25 / =PiValue ; (inside/total) / 100 * 4 = PI GET \TIME HMS> @Duration - >HMS =Duration ; новое_время-время_старта = продолжительность $523 Gosub Note ; прелестная музыка сообщает об окончании $880 Gosub Note $699 Gosub Note RTN Подпрограмма выполняется по пункту меню "Run !"

она начинается заданием в меню "Calculation" стартовых условий, (флагов, времени старта, отображения второго меню с индикатором).

Затем основное меню обновляет позицию индикатора и сбрасывает песчинки кучками по 100.

Когда вычисление окончено, Пи вычислено, подсчитано общее время, флаги изменяются и программа воспроизвдит 3 ноты, сигнализируя об окончании задачи.

Также цикл программы в конце вычислений нарисует кнопку "Done !". По её нажатии произойдёт переход в меню 0.

Since December, 15th, 2007

gtello.pagesperso-orange.fr

Моя первая оверлейная программа / Хабр

Во времена повсеместного господства планшетов и смартфонов, сложно поверить, что совсем недавно, можно было получить немалое удовольствие, играя с калькулятором. Разумеется, я имею в виду не обычный (или даже инженерный) калькулятор, а программируемый. Я хочу рассказать об устройстве, которое буквально перевернуло мою жизнь и фактически подтолкнуло меня к тому, чтобы стать программистом. В конце 70-ых годов прошлого века, с вычислительной техникой в СССР было туго. Мой отец работал программистом. В моей памяти навсегда останутся и походы на его работу в ЦУМ, где я играл в Ним с вычислительной машиной Минск и продолжительные набивания программ латунными кольцами на планшетах для Искр, использовавшихся в то время Сбербанком. Иметь, в своем личном распоряжении, что-то, способное выполнять программы, я, конечно, не мог даже мечтать.

Все изменилось с появлением программируемых микрокалькуляторов (ПМК). Теперь мечтать я мог. Именно этим я и занимался, зачитываясь статьями в Технике молодежи, поскольку приобрести это программируемое чудо в Казани, не представлялось возможным. Но, в один прекрасный день, мы с родителями выбрались в Москву.

Приложив немалые усилия, я убедил родителей приобрести совсем не дешевый по тем временам МК-61 и, на сдачу, подшивку старых журналов Квант, после чего, забаррикадировавшись на квартире у наших родственников, перестал реагировать на внешние раздражители, вплоть до самого отъезда.

Я перечитал все, что печаталось в то время по программируемым калькуляторам, завел общую тетрадь и прилежно переписывал в нее особенно понравившиеся программы. Постепенно я подошел к тому, что смог вносить в них свои исправления и доработки (опыт полученный в бдениях по программированию Искр не пропал даром). Через некоторое время, я смог писать программы самостоятельно.

Когда я уже довольно хорошо освоился с МК-61, одному моему другу приобрели улучшенную версию — МК-52. По системе команд она практически не отличалась от МК-61, но имела возможность сохранять программы в ППЗУ и поставлялась с несколькими картриджами с уже готовыми программами. Разумеется, я сразу захотел написать что-то специально для нее.

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

Энтузиастами было предложено множество схемотехнических решений этой проблемы. Как-то раз я даже видел статью, описывающую устройство для хранения программ калькуляторов на магнитных лентах. Выпуск МК-52 поставил окончательную точку в этом не простом вопросе.

Выбор пал на «Морской бой». Я уже давно хотел его сделать, но никак не мог втиснуть весь требуемый функционал в куцее адресное пространство калькулятора. Возможность подгружать программы из ППЗУ позволила разбить программу на две части. Первый блок — расставлял корабли, второй (собственно игровой) обеспечивал диалог с пользователем. Часть подпрограмм использовалась обоими блоками.Вот как выглядело это чудо (картинка не для слабонервных) Поскольку в таком виде эта наскальная живопись расшифровке практически не поддается, приведу этот код в более читаемом виде:Блок расстановки кораблей00|46 01.07 02.12 03.08 04.11 05.34 06.15 07.45 08|53 09:75 10.06 11.53 12:67 13.5E 14:08 15.62 16.53 17:37 18.6E 19.01 20.11 21.4E 22|53 23:34 24.6E 25.02 26.10 27.4E 28.53 29:34 30.5D 31:08 32.63 33.50 34|62 35.02 36.10 37|65 38.12 39.01 40.10 41.DE 42.38 43.BE 44.52 45.11 46.4E 47.53 48:58 49.6E 50.02 51.10 52.4E 53.53 54:58 55.5D 56:22 57.27 58|61 59|65 60.12 61.01 62.10 63.DE 64.38 65.BE 66.52 67|65 68.12 69.01 70.10 71.DE 72.37 73.35 74.52 75|66 76.01 77.01 78.12 79.20 80.10 81.35 82.46 83.07 84.12 85.07 86.10 87.4E 88.65 89.04 90.15 91.12 92.45 93.01 94.11 95.59 96:A2 97.65 98.07 99.15 A0.13 A1.45 A2|52 Подгружаемый игровой блок00.40 01.50 02.57 03:41 04.0B 05.15 06.45 07.14 08.06 09.10 10.4E 11.02 12.53 13:67 14.57 15:22 16.0F 17.DE 18.39 19.BE 20.64 21.52 22|53 23:75 24.01 25.53 26:67 27.5E 28.22 29.15 30.53 31:59 32.6E 33.06 34.11 35.62 36.12 37.65 38.17 39.11 40.52 41|53 42:58 43.6E 44.01 45.11 46.4E 47.53 48:58 Здесь я использую коды команд, поскольку их обозначения, предложенные производителем ПМК, не очень удобны для распечатки «листингов». Соответствие кодов командам можно посмотреть по табличке (любезно нарисованной мной в те же годы):Коды команд МК-52Краткий экскурс в систему командПри некоторой практике, коды команд легко запоминались (что было необходимо, так как введенные программы требовалось проверять). Наиболее часто употребляемыми были:
  1. Арифметические команды (10-13), выполняющие соответствующее действие с двумя нижними регистрами оперативного стека (X, Y) и помещавшими результат в X
  2. Команды записи и чтения из регистров памяти (40-4E и 60-6E соответственно)
  3. Команды, управляющие выполнением программы (50-5E), из числа которых следует отметить команду останова (50), а также команды вызова подпрограммы (53) и возврата из нее (52)
  4. Весьма полезными были команды косвенной адресации (B0-BE, D0-DE), позволявшие обращаться к регистру памяти, номер которого был записан в другой регистр
Хотя в кодах команд и использовались шестнадцатеричные цифры, их отображение на экране вызывало в памяти кадры из кинофильма «Хищник»:

Для удобства, я выделил в коде адреса команд переходов (двоеточием после адреса команды), а также точки входа (вертикальной чертой). Это позволяет более наглядно увидеть взаимосвязь подпрограмм (особенно интересна команда вызова подпрограммы, расположенная по адресу 22 и обеспечивавшая своего рода «полиморфизм». При обращении к этой подпрограмме, управление передавалось в различные места, в зависимости от того, какой именно блок был загружен).

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

Поскольку работающего калькулятора под рукой уже нет, я использовал эмулятор:

Все подготовленные образы были загружены на GitHub.

Первый образ можно использовать для расстановки «кораблей»:

Начальное значение для генератора псевдослучайных чисел (0.1234567) может быть изменено. После запуска на выполнение (в/о с/п), программа работает довольно долго, выводя, в конечном итоге, адрес для загрузки игрового модуля из ППЗУ (возможность автоматического обращения к ППЗУ из программы отсутствовала):

Так как эмулятор (по крайней мере та версия которую я использовал) полностью проигнорировала мои попытки обращения к ППЗУ, я подготовил образ с вбитым руками игровым модулем и уже выполненной расстановкой кораблей.

Сама расстановка хранится в регистрах памяти с 7-го по D. Вот пример второй строки (8-ой регистр):

Двойки кодируют положение «кораблей». На основе приведенного выше начального значения, была сгенерирована следующая расстановка:

0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 Можно заметить, что программа разместила девять не соприкасающихся «однопалубных кораблей» на поле размером 7x7 клеток.

Чтобы начать игру, необходимо ввести количество кораблей (9 в/о с/п) после чего, вводить координаты «выстрелов» (например 2 В^ 2 с/п). Так как мы подсмотрели расположение «кораблей», нам не составило никакого труда потопить «однопалубник»:

Впрочем, второй раз попасть по нему уже не удастся:

Попробуем (2 В^ 2 с/п). Как и ожидалось, калькулятор наносит ответный удар:

Первая цифра здесь — координата по вертикали (начиная снизу-вверх), вторая — по горизонтали (слева-направо).

Чуть позже я заметил, что изменив всего пару команд (в самом первом фото с текстом программы, они отмечены красным), можно добиться того, чтобы размещаемые корабли могли соприкасаться, но не углами, а сторонами (образы 0003 и 0004). В результате получалась следующая расстановка «многопалубников»:

0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 Не бог весть что, но неплохо, с учетом того, что изменить пришлось всего две команды.

Отдельно следует сказать о багах (даже скорее о Багах), хотя это тема для отдельной статьи, если не их цикла. Дело в том, что калькуляторы описываемой серии были буквально напичканы различными примерами ошибок и недокументированного поведения. В среде любителей, это привело к развитию культуры изучения этих недокументированных возможностей, известной под обобщенным названием ЕГГОГ-ология.

Некоторые образчики таких багов забавны, иные — опасны, а отдельные из них удивительно полезны. Хорошим примером такого потенциально полезного поведения является выполнение команды «ввод порядка» (ВП) после записи в регистр памяти. В режиме выполнения программы, она приводила к «отрезанию» первой цифры числа в регистре X (отображаемом на индикаторе), причем при пошаговом выполнении (да да, было и такое), команда отрабатывала вполне штатно. Добиться каким-либо другим вменяемым способом такого результата, было невозможно.

Напуганный столь нестандартным поведением команды ВП я внес исправление в программу, изменив последовательность команд 35.ВП 36.1, на 35.ИП2 36.x (во 2-ом регистре пришлось хранить константу 10). Поскольку живого калькулятора нет, я уже не могу проверить, приводила ли команда ВП, в этом контексте к ошибке. Под эмулятором оба варианта работают вполне штатно.

К сожалению, мне не известна реализация эмулятора воспроизводящая все примеры недокументированного поведения.

Уже после всего этого, были Микроши, БК-шки и Спектрумы. Была ЕС-1046, с которой я столкнулся в институте. Были PDP-шки и VAX-ы. До появления IBM PC, ждать оставалось недолго.

habr.com

DCA Laboratory projects

проект Single-chip Machine 2 (SCM2-Client) с 2003 года является freeware продуктом и держится лишь только на инициативе авторов. Проект направлен на ликвидацию образовавшегося пробела в нише простого в использовании ПО, наглядно эмулирующего внутреннюю работу embedded устройств под Windows. В настоящее время SCM2 находится в стадии тестирования, его можно скачать по представленным ниже ссылкам:

(версия файла 2.02.19.2, от 27.07.2006)

Single-Chip Machine 2 (1.17Mb для WinME/2k/XP)

Ваши отзывы, пожелания и предложения относительно проекта SCM2 оставляйте здесь или отправляйте сюда. Убедительная просьба сообщать о всех неточностях и ошибках, выявленных в процессе использования программы.

Огромную благодарность за поданные идеи по улучшению проекта, за предоставленные материалы и программы-аналоги, за  участие в тестировании программы и за выявление серьезных ошибок в модели CPU 8051 авторы выражают следующим лицам:

Валентине Васильевне

Валерию Ивановичу

Алексею Дробязко

Сергею Владимировичу

Soft

Lim

Bodya

Владимиру Суржину

Андрею Мнацаканову

Aybike

AleksASSA

Олегу Николаевичу

Dark Star

Алексею Богданову

Alexus

GuAV

Матвееву Илье

Арсению

kaffiz

Гнитиёву Валерию

 

SCM Support team

 

Демонстрационная версия эмулятора микроконтроллеров серии МК51 (Intel MCS51/52) представляет собой интегрированную среду отладки, которая включает следующие компоненты:

- модель микроконтроллера семейства MK51 настроена на имитацию классического чипа  intel 80C51.  Детализация модели составляет  ½ такта, моделируются оба фронта тактового генератора BQ, что позволяет не только с очень высокой точностью имитировать обслуживание внешних сигналов (выводы чипа), но и, в отличие от подобных эмуляторов, дает возможность адекватно отрабатывать все внутренние сигналы управления. Таким образом, представленный здесь эмулятор Single-chip Machine 2 можно использовать, как минимум, для двух целей: для создания, отладки и контроля программ устройств в состав которых входит чип семейства МК51, а также для изучения основ функционирования микропроцессорной техники на примере ОМЭВМ МК51.

- Компактный интерактивный отладчик в котором размещаются все жизненно важные узлы и компоненты чипа МК51. В отладчик встроен дизассемблер МК51, что позволяет загружать непосредственно HEX/MPM файлы созданные любым стандартным компилятором C51/A51 с языка C/Asm51, либо hex файлы, прочитанные программатором непосредственно из памяти программ устройства с микроконтроллером серии MK51. Отладчик предоставляет широкий спектр управления процессом выполнения загруженной программы с помощью механизма точек останова и инструмента редактирования значений SFR. Помимо привычных точек останова по достижении отмеченного адреса, SCM2 предоставляет возможность останова выполнения программы при выполнении заданных условий для любой ячейки памяти, битового поля или SFR регистра. В процессе выполнения отлаживаемой программы, изменяемые ячейки памяти, битовые поля, SFR выделяются цветом, что значительно ускоряет процесс отладки. Специальные области памяти, такие как:  регистровые банки и стек,  вынесены в отдельные блоки для повышения наглядности при отладке программ. Выбранный регистровый банк а также область прямо адресуемых бит подкрашены соответственно светло зеленым и светло розовым цветами, что повышает наглядность модели и значительно ускоряет процесс отладки программ. Окно отладчика оформлено в виде структурной схемы вычислительной машины: функциональными блоками и связями между ними, что позволяет быстро понять внутреннее устройство ядра C51/C52 и ускоряет процесс обучения пользователя.

- Средства обработки статистики.  В процессе моделирования состояния особо важных внутренних узлов (локальных шин, защелок портов, аккумулятора) и внешних сигналов сохраняются в циклических буферах, Последние, можно исследовать с помощью механизма диаграмм внутренних и внешних сигналов, как непосредственно при работе модели (скорость работы диаграмм практически не влияет на скорость работы модели за счет использования независимых интервалов времени перерисовки для каждого масштаба) так и после останова. Значительно упрощается контроль правильности программ, поскольку можно отслеживать время формирования и длительность сигналов.

- Многостраничный редактор-компилятор с интерпретатором. Поддерживает режим компоновки исходных текстов программ (директива компилятора Include <filename>). Включает блок расчета констант, который в отличие от подобных трансляторов, работает не только при компиляции, но и при вводе очередной строки, например, при вводе выражения с арифметическими действиями значение выражения сразу отображается в строке состояния, что значительно ускоряет процесс написания программ и избавляет от механических ошибок при вводе текста программы. Компилятор включает расширенную панель отладки, где отображаются: конструкция создаваемой программы, значения и типы констант, используемых и доступных в программе. Компилятор интегрирован с файлом справки, что позволяет одним нажатием клавиши F1 найти синтаксис вводимой команды и просмотреть детальные примеры применения этой команды. Режим интерпретации (включен постоянно), позволяет на этапе ввода очередной строки проверить ее правильность (интерпретация осуществляется на упрощенной и ускоренной в 24 раза модели C51, по сравнению с моделью используемой в отладчике). При обработке файлов с исходным текстом пользовательских программ, компилятор не создает ничего лишнего ни объектных файлов, ни map файлов, ни прочего, что обычно не нужно рядовому пользователю. Компилятор поддерживает 2 формата памяти программ (MPM и HEX), по умолчанию создает mpm файл, который в отличие от hex включает отладочную информацию, но при включении соответствующей опции в настройках SCM2, компилятор будет создавать одновременно mpm и hex файлы. В полной версии SCM2 компилятор может непосредственно прошивать создаваемый код в чипы, которые поддерживают In-System Programming (ISP) через SPI или UART, в демо версии же этот блок отключен.

- Библиотека команд в формате fis, редактор библиотеки команд можно скачать по этой ссылке: FIS. Однако, строго не рекомендуется самостоятельно править файл системы команд C51. При обнаружении ошибки исполнения моделью какой-либо команды рекомендуем вначале обратиться к справке, посмотреть в примерах как должна выполняться эта команда, если же результатом выполнения этой команды расходится с информацией из файла справки тогда  просим обращаться сюда.

- модуль сопряжения Simulation Sync Link (входит в инсталляционный пакет slink.dll), позволяет транслировать отображение и значение внешних сигналов моделируемых микросхем между различными программами как на одном компьютере так и по сети. Например, CPU MK51 можно транслировать в библиотеку AFDK и на двух компьютерах выполнять моделирование сложного комплексного устройства.

Примечания (относительно ограничений выложенной версии программы):

Отключен plug-in Sync Link.

Отключены функции редактирования AFDK plug-in. (включена только функция отображения вида корпуса CPU со значениями внешних выводов)

Отключены функции программирования чипов с поддержкой ISP из компилятора.

Отключена директива include. Длина метки ограничена 256 байт. Длина блока директив DB/DW ограничена 256 байт.

Ограничено действие отката до 10 тыс. тактов.

Отключена возможность печати исходных текстов.

Откомпилированная программа помещается сразу во внешнее и во внутреннее ПЗУ. Переключение осуществляется кнопкой (Switch) на панели ПЗУ. Объем внутреннего и внешнего ПЗУ 64kb, модель SCM2 не ведет контроль за выходом за границы адреса памяти программ.

 

dca.narod.ru


 

..:::Новинки:::..

Windows Commander 5.11 Свежая версия.

Новая версия
IrfanView 3.75 (рус)

Обновление текстового редактора TextEd, уже 1.75a

System mechanic 3.7f
Новая версия

Обновление плагинов для WC, смотрим :-)

Весь Winamp
Посетите новый сайт.

WinRaR 3.00
Релиз уже здесь

PowerDesk 4.0 free
Просто - напросто сильный upgrade проводника.

..:::Счетчики:::..