Ассемблер для Специалиста на Z80
Moderator: Lavr
-
- Devil
- Posts: 912
- Joined: 06 Oct 2006 03:17
- Location: г.Лянтор,Сургутского р-на,ХМАО
Ассемблер для Специалиста на Z80
Хотел спросить у знающих. Был ли когда-нибудь ассемблер для Специалиста в мнемонике Z80. Ведь был же Специалист на Z80, вернее МХ - схема юзанья процессора - http://www.spetsialist-mx.ru/index17.html.
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Ассемблер для Специалиста на Z80
Был такой ассемблер но не специально для "Специалиста". Использовал он стандартные вызовы,
у меня со времён "Микроши" имеется.
Только он по функционалу DEBUG oт М$ напоминал, а не полноценный ассемблер.
На мой взгляд, так ассемблер из пакета RAMFOS весьма удобный, но он не поддерживает мнемоники
z80, к сожалению.
у меня со времён "Микроши" имеется.
Только он по функционалу DEBUG oт М$ напоминал, а не полноценный ассемблер.
На мой взгляд, так ассемблер из пакета RAMFOS весьма удобный, но он не поддерживает мнемоники
z80, к сожалению.
iLavr
-
- Devil
- Posts: 912
- Joined: 06 Oct 2006 03:17
- Location: г.Лянтор,Сургутского р-на,ХМАО
Re: Ассемблер для Специалиста на Z80
Интересует только для Z80. Для Ориона был такой ассемблер?
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
-
- Doomed
- Posts: 585
- Joined: 19 Feb 2017 03:46
- Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь
Re: Ассемблер для Специалиста на Z80
Для ОРИОНА было написано несколько любительских ассемблеров для Z80. Лучший из них, естественно, TASM$ от В.Пушкова.fifan wrote:Для Ориона был такой ассемблер?
А для Специалиста вряд-ли есть приличный отечественный ассемблер в мнемониках Z80. Даже для КР580 и для ОРИОНА было написано всего три ассемблера - А.Балдина, А.Вакуленко и В.Пушкова. Все они на порядок грамотнее, и полезнее чем ассемблер МИКРОН, т.к позволяют транслировать большие программы, для чего используют квазидиск. Во вложении ассемблеры для ОРИОНА А.Балдина (для КР580 и Z80), - их несложно адаптировать для Специалиста, если в него добавлено доп.ОЗУ пригодное для организации эл.диска.
А сейчас (после появления Интернета) пригодными для адаптации для Специалиста стало и более десятка иностранных (примитивных и не очень) любительских ассемблеров для Z80 из 70-тых и 80-тых. Самые простые характерны тем, что у них адрес JR-перехода задаётся в виде $-Label. Чтобы долго не искать и скачивать по одному вот подборка иностранных ассемблеров https://yadi.sk/d/W4HkacEdJcvWSg.
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.
-
- Maniac
- Posts: 208
- Joined: 18 Nov 2013 15:15
- Location: все оттуда ;)
-
- Devil
- Posts: 912
- Joined: 06 Oct 2006 03:17
- Location: г.Лянтор,Сургутского р-на,ХМАО
Re: Ассемблер для Специалиста на Z80
А что мне с ссылкой из последнего топика делать? Я вроде не писал, что мне нужны утилиты для работы на ПС.
Я давно пользуюсь "Ассемблером 512 для Z80" от Вячеслава Медноногова. Но возникла ситуация, когда мне нужно отлаживать программы для SD контроллера от Vinxru непосредственно. Никакой эмулятор данный контроллер не поддерживает. И что каждый раз записывать пзушку и совать в Специалист (я использую Сябр)? Выход из положения железный эмулятор ПЗУ с загружаемым в него образом ПЗУ. Не знаю хватит ли мне сил его собрать (схема, плата есть, нет поддержки для пика - ещё не придумал
).
Эти сложности можно обойти сразу отлаживать программу в самом Специалисте. Ну вот такой я не стандартный - люблю мнемонику Z80, а не ВМ80.
В атаче схема железного эмулятора.
Я давно пользуюсь "Ассемблером 512 для Z80" от Вячеслава Медноногова. Но возникла ситуация, когда мне нужно отлаживать программы для SD контроллера от Vinxru непосредственно. Никакой эмулятор данный контроллер не поддерживает. И что каждый раз записывать пзушку и совать в Специалист (я использую Сябр)? Выход из положения железный эмулятор ПЗУ с загружаемым в него образом ПЗУ. Не знаю хватит ли мне сил его собрать (схема, плата есть, нет поддержки для пика - ещё не придумал

Эти сложности можно обойти сразу отлаживать программу в самом Специалисте. Ну вот такой я не стандартный - люблю мнемонику Z80, а не ВМ80.
В атаче схема железного эмулятора.
-
- Devil
- Posts: 912
- Joined: 06 Oct 2006 03:17
- Location: г.Лянтор,Сургутского р-на,ХМАО
Re: Ассемблер для Специалиста на Z80
Сам решил сделать ассемблер для 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а таблица по другому шифруется (по крайней мере я не нашёл текстовых вкладок). Подскажите как там всё сделано.
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а таблица по другому шифруется (по крайней мере я не нашёл текстовых вкладок). Подскажите как там всё сделано.
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Ассемблер для Специалиста на Z80
Может тебе исходник дать ассемБлера из RAMFOS? Я только не уверен, что это Assm_MX V3.3 у меня...fifan wrote:Наверное в самом ассемлере Assm_MX V3.3 из RAMFOSа таблица по другому шифруется (по крайней мере я не нашёл текстовых вкладок). Подскажите как там всё сделано.
Но алгоритм там, я бы не сказал, что зело простой...
iLavr
-
- Devil
- Posts: 912
- Joined: 06 Oct 2006 03:17
- Location: г.Лянтор,Сургутского р-на,ХМАО
Re: Ассемблер для Специалиста на Z80
Если не жалко, то дай. Посмотрю как там все устроено.
-
- Doomed
- Posts: 585
- Joined: 19 Feb 2017 03:46
- Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь
.
В выложенной ранее коллекции ассемблеров 8080/Z80 было 5 CP/M ассемблеров с исходниками, вот они отдельно.
По моему опыту, работая фанатично, ассемблер КР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.
Я делал таблицу не одну общую, а несколько, для каждой группы команд своя структура. Общая таблица расточительна и невыгодна для 8-ми разрядки. Например, для однобайтовых команд это просто текст самой мнемоники и один байт кода. Первым байтом в таблице идёт байт задающий длину мнемоники (например, 3), далее с шагом 3+1 перечислены все однобайтовые мнемоники длиной в 3 буквы, затем число 4 (задающее следующую длину мнемоники) и далее с шагом 4+1 перечислены все однобайтовые мнемоники длиной в 4 буквы и т.д. Это можно посмотреть в файле TABLE.INC вот здесь. Видел, что в M80, по крайней мере в одном месте, команды сгрупированы в таблицы по первой букве мнемоники.
А вот когда экономить ОЗУ не требуется, то проще не думать, а применить огромную таблицу. Когда я писал кросс Z80 мини-ассемблер и кросс Z80 мини-дизассемблер на ассемблере 8086 для отладчика в эмуляторах РК86 и ОРИОНА, то я так и сделал. Конечно мини-ассемблер без меток и выражений намного проще, чем полноценный ассемблер, потому на написание мини-ассемблера у меня ушёл всего один день (см. здесь), потому, что я не заморачивался, чтобы сделать по-умному, не экономил ОЗУ. Но для 8-ми разрядки ассемблер всегда делают по умному, почти без таблиц. .
Это очень самоотверженное решение. Для этого надо много энтузиазма.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.
О... это вам здесь вряд-ли кто скажет (а вот на zx-pk.ru есть асмо-писатели). В фирменных ассемблерах всё очень сложно. Придётся долго разбираться даже имея исходник. Часть кодов 580 (например MOV/LD 40...7F и др.) вычисляются без таблиц. Фирменные грамотные ассемблеры имеют таблиц очень мало. А любительские ассемблеры имеют много таблиц, это тупо, но проще.fifan wrote:Подскажите как там всё сделано.
Я делал таблицу не одну общую, а несколько, для каждой группы команд своя структура. Общая таблица расточительна и невыгодна для 8-ми разрядки. Например, для однобайтовых команд это просто текст самой мнемоники и один байт кода. Первым байтом в таблице идёт байт задающий длину мнемоники (например, 3), далее с шагом 3+1 перечислены все однобайтовые мнемоники длиной в 3 буквы, затем число 4 (задающее следующую длину мнемоники) и далее с шагом 4+1 перечислены все однобайтовые мнемоники длиной в 4 буквы и т.д. Это можно посмотреть в файле TABLE.INC вот здесь. Видел, что в M80, по крайней мере в одном месте, команды сгрупированы в таблицы по первой букве мнемоники.
А вот когда экономить ОЗУ не требуется, то проще не думать, а применить огромную таблицу. Когда я писал кросс Z80 мини-ассемблер и кросс Z80 мини-дизассемблер на ассемблере 8086 для отладчика в эмуляторах РК86 и ОРИОНА, то я так и сделал. Конечно мини-ассемблер без меток и выражений намного проще, чем полноценный ассемблер, потому на написание мини-ассемблера у меня ушёл всего один день (см. здесь), потому, что я не заморачивался, чтобы сделать по-умному, не экономил ОЗУ. Но для 8-ми разрядки ассемблер всегда делают по умному, почти без таблиц. .
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Ассемблер для Специалиста на Z80
Жалко - оно, знаешь ли, у пчёлки...fifan wrote:Если не жалко, то дай.

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

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

You do not have the required permissions to view the files attached to this post.
iLavr
-
- Devil
- Posts: 912
- Joined: 06 Oct 2006 03:17
- Location: г.Лянтор,Сургутского р-на,ХМАО
Re: Ассемблер для Специалиста на Z80
Спасибо, посмотрю.
Я и не слушаю. Он мне и на соседнем форуме надоел.Lavr wrote:А болтунов не слушай...
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Ассемблер для Специалиста на Z80
Вспомнил, что вобще-то я его уже один раз выкладывал здесь: Компиляторы ассемблера
И что-то там писал по этому поводу...
И что-то там писал по этому поводу...
iLavr
-
- Devil
- Posts: 912
- Joined: 06 Oct 2006 03:17
- Location: г.Лянтор,Сургутского р-на,ХМАО
Re: Ассемблер для Специалиста на Z80
Для сокращения таблицы мнемоник здесь, как я предполагал, одной из групп, например MOV присваивается одно число. Буду дальше разбираться.