Вход

Просмотр полной версии : Ассемблер для Специалист и Радио-86РК



Zidane
28.08.2022, 10:04
Здравствуйте друзья... Провел тут небольшой стрим по "Специалисту"... И народу похоже зашло. Но тут вот проблема стала. В машинных кодах много не напишешь. Как в эмуляторе ром подключить - ну, тут я просто валенка включил, понять не в состоянии. Поэтому чтобы продолжать развивать тему хотелось бы иметь редактор ассемблера в формате *.RKS, Вот.

С "Радио-86РК" ситуация еще печальнее. Несмотря на наличие огромного количества материалов, большинство из них - в текстовом виде. В частности дампы редактора и ассемблера (для специалиста, впрочем, тоже) набирать их такое себе удовольствие, но дело потихоньку движется. И вот стало интересно, а может у кого есть уже?. Как то видел сайт по софту для РК, а теперь вот найти не могу....

Ну и в принципе буду признателен за любую информацию по теме Специалиста и РК.

Заранее спасибо.

Sandro
28.08.2022, 11:14
Файлы .rom никак нельзя подключить, поскольку это не образы ПЗУ, а файлы для загрузки с ленты. Почему было решено их так назвать -- ну я даже толком и не знаю.

Zidane
28.08.2022, 21:04
Спасибо за ответы. Сегодня во время стрима подсказали решение. В файл rom, оказывается, в начало надо добавить всего 4 байта - адрес начала загрузки и адрес конца загрузки. Младший байт указываем первым, сохраняем как *.rks. Все заработало. )

fifan
30.08.2022, 16:52
оказывается, в начало надо добавить всего 4 байта - адрес начала загрузки и адрес конца загрузки. Младший байт указываем первым, сохраняем как *.rks. Все заработало. )

Необязательно. Если это образ ПЗУ, то достаточно было его переименовать в название файла для текущей конфигурации, применительно для упомянутого мною эмулятора, например как BIOS.ROM.

Zidane
30.08.2022, 20:00
Необязательно. Если это образ ПЗУ, то достаточно было его переименовать в название файла для текущей конфигурации, применительно для упомянутого мною эмулятора, например как BIOS.ROM.

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

fifan
01.09.2022, 17:23
в свете планирующихся новых стримов по "Специалист"?
В каком смысле стримов? Писать можно есть. Я не на все вопросы могу ответить, а посетители раздела подскажут.

Zidane
02.09.2022, 19:54
И снова здравствуйте друзья. Решил тут изучить ассемблер КР580ВМ80А малость. Ну и возник вопрос - как организовать задержку в выполнении программы? Есть такая мысль что через прерывания. То есть сначала их разрешить, а потом послать процессор в HLT нужное число раз в цикле. И затем прерывания запретить. Ну вот как-то такая мысль. Собственно, будет ли это работать и есть ли другие способы?

HardWareMan
02.09.2022, 20:24
У РКшки и Спеца нет прерываний. Делай вызов П/П задержки в мониторе и не парь мозги.

M80
03.09.2022, 08:05
Считай такты, дядя.)

HardWareMan
03.09.2022, 08:38
Считай такты, дядя.)
Технически, у Специалист_МХ(^2) есть таймер ВИ53. Как и у SP580. У Микроши есть ещё таймер ВИ53, но он вроде как не подключен выходом к порту, чтобы контроллировать. Так что да, есть штатная подпрограмма задержки (используется звуком и магнитофоном), юзай её, Люк. Ну или сделай свою и считай такты.

PS У РКшки ПДП будет мешать, именно поэтому при работе магнитофона ПДП (а значит и экран) отключаются.

Zidane
03.09.2022, 08:47
А адресок можно? А то прочитав кучу описаний нашел таковую только в Монитор-1. В эмуляторе, как я понял, используется Монитор SP-580 или Монитор-2. От первого толкового описания найти вообще не удалось, в описании Монитор-2 подпрограмма задержки отсутствует....

Zidane
03.09.2022, 11:56
В итоге решил так:
LXI B,0FFFFH
PAUSE: DCX B
NOP
NOP
MOV A,B
ORA C
JNZ PAUSE

Такты я не считал, но мне точность в настоящий момент я и не требуется. Главное само наличие задержки. Я ж только учусь, мне такие тонкости ни к чему )

Serg6845
03.09.2022, 11:59
А адресок можно? А то прочитав кучу описаний нашел таковую только в Монитор-1. В эмуляторе, как я понял, используется Монитор SP-580 или Монитор-2. От первого толкового описания найти вообще не удалось, в описании Монитор-2 подпрограмма задержки отсутствует....

а она не в мониторе. в загрузчике.
0xC3CC - задержка в А
0xC190 - задержка в В
по крайней мере в стандартном загрузчике так.

Zidane
03.09.2022, 12:44
а она не в мониторе. в загрузчике.
0xC3CC - задержка в А
0xC190 - задержка в В
по крайней мере в стандартном загрузчике так.

Я уже пытался использовать такое. Эта подпрограмма включена в описание Монитор-1. Воспользоваться ею не удалось с самого начала, я просто думал может чего не нашел.
Спасибо, но все равно не сработало...https://ibb.co/wBzqHqD

HardWareMan
03.09.2022, 16:35
Я уже пытался использовать такое. Эта подпрограмма включена в описание Монитор-1. Воспользоваться ею не удалось с самого начала, я просто думал может чего не нашел.
Спасибо, но все равно не сработало...https://ibb.co/wBzqHqD
Что значит - не сработало? Она для маленьких задержек, т.к. использует только 8 бит (1 регистр).

Zidane
03.09.2022, 17:35
Оу... А я то думал просто не работает. Мне то задержка около секунды нужна была. Ну в любом случае спасибо за информацию.

HardWareMan
03.09.2022, 18:31
Ну для больших да, надо своё писать. Одна регистровая пара - вполне подходит. Посчитать циклы, откалибровать, и юзать.

Zidane
03.09.2022, 20:07
Ну для больших да, надо своё писать. Одна регистровая пара - вполне подходит. Посчитать циклы, откалибровать, и юзать.

Есть еще мысль использовать подпрограмму вывода звука. Просто частоту в ноль или 1 поставить. В любом случае чтобы было за границей слышимого диапазона. А вот задержка там по моему как раз в секундах. просто поздно вспомнил. Дописываю уже, все работает и менять особо ничего не хочется )

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

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

5VHappi
14.09.2022, 22:13
А я пишу мнемоники в Visual Studio Code, а компилирую в коды макроассемблером aswcurr, взятым тут https://github.com/elenderg/Material-Assembly

Zidane
21.09.2022, 04:08
Ну, каждому свое. Мне пока Микрон-а хватает. Еще вот вопрос - как опросить клавиатуру "Специалист"? Ну то есть в ПЗУ компьютера, конечно, есть запрос с ожиданием, но это не то. Нужно просто проверить, нажата какая-либо клавиша, или нет.

Zidane
21.09.2022, 14:34
В общем разобрался. C81Bh - опрос клавиатуры. В аккумуляторе код нажатой клавиши или FF если не нажата ни одна. При этом компьютер не ждет нажатия клавиши. Проверил порт и пошел дальше. Нужно было для генерации случайного числа - пока ждем ответа пользователя (в цикле) то накручиваем счетчик в регистре B. И получаем число от 0 до 255 вполне себе рандомно - зависит от реакции человека ) И реализацию никаких алгоритмов придумывать не пришлось... В общем все получилось здорово.

Zidane
30.03.2023, 11:17
Возвращаясь к теме. На межвахте собрал в небольшой справочник по управляющим программам "Монитор-1" и "Монитор-2" для специалиста. Распределение памяти, директивы и подпрограммы. Может кому понадобится. А то выискивать все это в журналах да и в интернете не так чтобы просто.

Ссыль на документ: https://disk.yandex.ru/d/LYnqt6yXv69SqA

HardWareMan
30.03.2023, 12:02
Замечания к доке:

8A00h-8FFFh - Используется подпрограммами ПЗУ. Для версии с усеченной памятью диапазон, вероятно, составляет 3A00h-3FFFh. Но это не точно
Миф, пришедший из 86РК? Это там RAMTOP в 16К версии понижается. А вместе с ним и экран и стек и переменные. В Специалисте с разными полями (который первоначальный, на РУ3/РУ6) каждое поле занимает полные 16КБ, т.е. 0000-3FFF, 4000-7FFF и 8000-BFFF. Это означает, что даже если установлен всего 1 банк (минимальная но бессмысленная конфигурация) с экраном то 4КБ пользовательского ОЗУ по адресам 8000-8FFF всё равно доступны.

C190 - Пауза. Весьма короткая — время задержки помещается в регистр В. Практическое значение может иметь например при посимвольном выводе текста.
Не для символьного вывода а для вывода звука и выгрузки на магнитофон (суть - звук на ленту).

C82Dh - Ничего не делает, но зачем-то есть.
Это осталось как рудимент от адаптации к 86РК. У РКшки здесь получение символа под курсором, что невозможно для Специалиста, поэтому по умолчанию тут стоит RET (C9 00 00). Но, ЕМНИП, был цикл статей "Монитор открывает окна" в МК от В. Доможирова, который хранил "символьную" копию экрана и эта процедура работала. А осталась она тут потому что после неё есть ещё две: C830 и C833, которые работают с RAMTOP.

Пока только это после беглого просмотра. Если что вспомню и/или найду на своих кассетах из кружка - добавлю.

Zidane
17.08.2025, 15:41
По ассемблеру - пример кода для вывода данных в формате ZX Spectrum. Правда на флаг наложения я забил, а регулировки уровня яркости нет априори... Но конечный результат позволяет выводить рисунки из книг про написание игр для ZX Spectrum с достаточно высокой точностью и совместимостью. Ассемблер VASM, редактор Notepad++ с поддержкой синтаксиса I8080/КР580ВМ80А. Все нужные файлы, в том числе листинг с конечным файлом прилагаемом архиве
Сам ролик https://youtu.be/RONhq1CM79Y
Все файлы, которые упоминаются в ролике: https://disk.yandex.ru/d/adC2XDVTJNDAmA

Это же не реклама? )

P.S. Кстати ролик - подпробный разбор практически каждой строки кода. Если хотите посмотреть на конечный результат - проматывайте почти к концу.