Ассемблер для Специалиста на Z80

Обсуждение советского компьютера Фахiвець / Специалист и его развитие

Moderator: Lavr

User avatar
fifan
Devil
Posts: 912
Joined: 06 Oct 2006 03:17
Location: г.Лянтор,Сургутского р-на,ХМАО

Ассемблер для Специалиста на Z80

Post by fifan »

Хотел спросить у знающих. Был ли когда-нибудь ассемблер для Специалиста в мнемонике Z80. Ведь был же Специалист на Z80, вернее МХ - схема юзанья процессора - http://www.spetsialist-mx.ru/index17.html.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Ассемблер для Специалиста на Z80

Post by Lavr »

Был такой ассемблер но не специально для "Специалиста". Использовал он стандартные вызовы,
у меня со времён "Микроши" имеется.
Только он по функционалу DEBUG oт М$ напоминал, а не полноценный ассемблер.

На мой взгляд, так ассемблер из пакета RAMFOS весьма удобный, но он не поддерживает мнемоники
z80, к сожалению.
iLavr
User avatar
fifan
Devil
Posts: 912
Joined: 06 Oct 2006 03:17
Location: г.Лянтор,Сургутского р-на,ХМАО

Re: Ассемблер для Специалиста на Z80

Post by fifan »

Интересует только для Z80. Для Ориона был такой ассемблер?
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Ассемблер для Специалиста на Z80

Post by Lavr »

Он подходит и для Ориона... Он вопще-то от CP-M.
iLavr
User avatar
barsik
Doomed
Posts: 585
Joined: 19 Feb 2017 03:46
Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь

Re: Ассемблер для Специалиста на Z80

Post by barsik »

fifan wrote:Для Ориона был такой ассемблер?
Для ОРИОНА было написано несколько любительских ассемблеров для Z80. Лучший из них, естественно, TASM$ от В.Пушкова.

А для Специалиста вряд-ли есть приличный отечественный ассемблер в мнемониках Z80. Даже для КР580 и для ОРИОНА было написано всего три ассемблера - А.Балдина, А.Вакуленко и В.Пушкова. Все они на порядок грамотнее, и полезнее чем ассемблер МИКРОН, т.к позволяют транслировать большие программы, для чего используют квазидиск. Во вложении ассемблеры для ОРИОНА А.Балдина (для КР580 и Z80), - их несложно адаптировать для Специалиста, если в него добавлено доп.ОЗУ пригодное для организации эл.диска.

А сейчас (после появления Интернета) пригодными для адаптации для Специалиста стало и более десятка иностранных (примитивных и не очень) любительских ассемблеров для Z80 из 70-тых и 80-тых. Самые простые характерны тем, что у них адрес JR-перехода задаётся в виде $-Label. Чтобы долго не искать и скачивать по одному вот подборка иностранных ассемблеров https://yadi.sk/d/W4HkacEdJcvWSg.
ASMS.rar
You do not have the required permissions to view the files attached to this post.
Last edited by barsik on 28 Jul 2019 16:52, edited 1 time in total.
VGrad
Maniac
Posts: 208
Joined: 18 Nov 2013 15:15
Location: все оттуда ;)

Re: Ассемблер для Специалиста на Z80

Post by VGrad »

User avatar
fifan
Devil
Posts: 912
Joined: 06 Oct 2006 03:17
Location: г.Лянтор,Сургутского р-на,ХМАО

Re: Ассемблер для Специалиста на Z80

Post by fifan »

А что мне с ссылкой из последнего топика делать? Я вроде не писал, что мне нужны утилиты для работы на ПС.

Я давно пользуюсь "Ассемблером 512 для Z80" от Вячеслава Медноногова. Но возникла ситуация, когда мне нужно отлаживать программы для SD контроллера от Vinxru непосредственно. Никакой эмулятор данный контроллер не поддерживает. И что каждый раз записывать пзушку и совать в Специалист (я использую Сябр)? Выход из положения железный эмулятор ПЗУ с загружаемым в него образом ПЗУ. Не знаю хватит ли мне сил его собрать (схема, плата есть, нет поддержки для пика - ещё не придумал :no: ).

Эти сложности можно обойти сразу отлаживать программу в самом Специалисте. Ну вот такой я не стандартный - люблю мнемонику Z80, а не ВМ80.

В атаче схема железного эмулятора.
User avatar
fifan
Devil
Posts: 912
Joined: 06 Oct 2006 03:17
Location: г.Лянтор,Сургутского р-на,ХМАО

Re: Ассемблер для Специалиста на Z80

Post by fifan »

Сам решил сделать ассемблер для Z80 под Специалист МХ. Принцип запуска понимаю. Исходный текст находится с адреса #1100. Кодовая таблица мнемоник у меня получилась большая - 1981 байт, а ещё сам ассемблер что-то будет занимать. В 2048 байт (столько занимает в ПЗУ RAMFOS) я не влезу. Кодовая таблица мнемоник у меня имеет такой формат:

NOP 00 00
LD BC, 02 01
LD (BC),A 00 02
INC BC 00 03

Собственно сама мнемоника, байт типа мнемоники (0,1,2,3 или 4) и 16-й код команды.

Наверное в самом ассемлере Assm_MX V3.3 из RAMFOSа таблица по другому шифруется (по крайней мере я не нашёл текстовых вкладок). Подскажите как там всё сделано.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Ассемблер для Специалиста на Z80

Post by Lavr »

fifan wrote:Наверное в самом ассемлере Assm_MX V3.3 из RAMFOSа таблица по другому шифруется (по крайней мере я не нашёл текстовых вкладок). Подскажите как там всё сделано.
Может тебе исходник дать ассемБлера из RAMFOS? Я только не уверен, что это Assm_MX V3.3 у меня...
Но алгоритм там, я бы не сказал, что зело простой...
iLavr
User avatar
fifan
Devil
Posts: 912
Joined: 06 Oct 2006 03:17
Location: г.Лянтор,Сургутского р-на,ХМАО

Re: Ассемблер для Специалиста на Z80

Post by fifan »

Если не жалко, то дай. Посмотрю как там все устроено.
User avatar
barsik
Doomed
Posts: 585
Joined: 19 Feb 2017 03:46
Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь

.

Post by barsik »

В выложенной ранее коллекции ассемблеров 8080/Z80 было 5 CP/M ассемблеров с исходниками, вот они отдельно.
fifan wrote:Сам решил сделать ассемблер для Z80 под Специалист MX.
Это очень самоотверженное решение. Для этого надо много энтузиазма.

По моему опыту, работая фанатично, ассемблер КР580 с возможностями ассемблера МИКРОН (с объёмом кода ~3 кб) довольно легко пишется за 4-5 дней (не напрягаясь за неделю). С добавкой условной компиляции и вычислений сложных выражений (со скобками) уходит ещё около недели (объём кода достигнет ~5 кб).

А чтобы обслужить хотя бы большинство макрокоманд, т.е получить полноценный макроассемблер уйдёт, как минимум ещё 2 месяца (объём кода возрастёт до 10 кб или более, исходник более 80 кб). И это тяжёлая работа. Для Z80 трудоёмкость надо увеличить на 20%. Я это знаю, т.к сам писал ассемблер КР580 для Специалиста в начале 90-тых (дописал уже для ОРИОНА, причём за несколько лет).

Для сравнения, исходник ассемблера М80 (обычный для 8080/Z80 с объёмом 16 кб) имеет дизассемблированный исходник в 190 кб (см.по ссылке выше) и доводили его профессионалы много лет.

Я хочу сказать, что даже для фанатика это довольно трудоёмко. Потому даже, если на изучение и приспособление чужого исходника уйдёт неделя или даже две-три, это будут трудозатраты на порядок меньшие. А для изучения грамотных ассемблеров лучше самому дизассемблировать Z80ASM24.

Будучи на вашем месте, я бы попробовал использовать ассемблер TASM$ В.Пушкова для ORDOS. Посмотрите его в эмуляторе ОРИОНА. Вряд-ли даже иностранные Z80-ассемблеры лучше, В.Пушков доводил его много лет. Чтобы его использовать возможно будет достаточно смоделировать в ОЗУ среду ORDOS, т.е входы в ПЗУ ОРИОНА и коды ORDOS загрузить в ОЗУ B800...BFFF.

Обычный Специалист легко совместить по входным точкам F800 с РК86 (это делалось простой схемой обеспечивающей, чтобы участок ПЗУ C800...C8FF читался и в области F800...F8FF). А в MX такую среду получить возможно ещё проще.

А если с TASM$ возникли бы сложности, то я бы адаптировал ассемблер CP/M (вероятно Z80ASM24, я с ним уже когда-то разбирался). Аналогично, как с ORDOS, чтобы работало без дисковода можно с'имитировать среду CP/M для ассемблеров сделанных под CP/M.
fifan wrote:Подскажите как там всё сделано.
О... это вам здесь вряд-ли кто скажет (а вот на zx-pk.ru есть асмо-писатели). В фирменных ассемблерах всё очень сложно. Придётся долго разбираться даже имея исходник. Часть кодов 580 (например MOV/LD 40...7F и др.) вычисляются без таблиц. Фирменные грамотные ассемблеры имеют таблиц очень мало. А любительские ассемблеры имеют много таблиц, это тупо, но проще.

Я делал таблицу не одну общую, а несколько, для каждой группы команд своя структура. Общая таблица расточительна и невыгодна для 8-ми разрядки. Например, для однобайтовых команд это просто текст самой мнемоники и один байт кода. Первым байтом в таблице идёт байт задающий длину мнемоники (например, 3), далее с шагом 3+1 перечислены все однобайтовые мнемоники длиной в 3 буквы, затем число 4 (задающее следующую длину мнемоники) и далее с шагом 4+1 перечислены все однобайтовые мнемоники длиной в 4 буквы и т.д. Это можно посмотреть в файле TABLE.INC вот здесь. Видел, что в M80, по крайней мере в одном месте, команды сгрупированы в таблицы по первой букве мнемоники.

А вот когда экономить ОЗУ не требуется, то проще не думать, а применить огромную таблицу. Когда я писал кросс Z80 мини-ассемблер и кросс Z80 мини-дизассемблер на ассемблере 8086 для отладчика в эмуляторах РК86 и ОРИОНА, то я так и сделал. Конечно мини-ассемблер без меток и выражений намного проще, чем полноценный ассемблер, потому на написание мини-ассемблера у меня ушёл всего один день (см. здесь), потому, что я не заморачивался, чтобы сделать по-умному, не экономил ОЗУ. Но для 8-ми разрядки ассемблер всегда делают по умному, почти без таблиц. .
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Ассемблер для Специалиста на Z80

Post by Lavr »

fifan wrote:Если не жалко, то дай.
Жалко - оно, знаешь ли, у пчёлки... :lol:

Я переспросил лишь с одной целью: ты хочешь посмотреть, как устроен и работает Ассемблер
под RAMFOS "Специалиста" в мнемониках К580ВМ80.
А то скажешь потом, что тебе не то, что надо дали. :wink:

Вот эти исходники:
ASSM4K.zip
Собираются безошибочно самим этим Ассемблером из RAMFOS "Специалиста".
Исходники достаточно прокомментированы, Ассемблер может работать и с другого
адреса, если нужно посмотреть принцип его работы под отладчиком.

А болтунов не слушай... Как говорил председатель Мао:"Всё - в наших руках!" :ewink:
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
fifan
Devil
Posts: 912
Joined: 06 Oct 2006 03:17
Location: г.Лянтор,Сургутского р-на,ХМАО

Re: Ассемблер для Специалиста на Z80

Post by fifan »

Спасибо, посмотрю.
Lavr wrote:А болтунов не слушай...
Я и не слушаю. Он мне и на соседнем форуме надоел.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Ассемблер для Специалиста на Z80

Post by Lavr »

Вспомнил, что вобще-то я его уже один раз выкладывал здесь: Компиляторы ассемблера
И что-то там писал по этому поводу...
iLavr
User avatar
fifan
Devil
Posts: 912
Joined: 06 Oct 2006 03:17
Location: г.Лянтор,Сургутского р-на,ХМАО

Re: Ассемблер для Специалиста на Z80

Post by fifan »

Для сокращения таблицы мнемоник здесь, как я предполагал, одной из групп, например MOV присваивается одно число. Буду дальше разбираться.