nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 02:37



Reply to topic  [ 16 posts ]  Go to page 1, 2  Next
Ассемблер для Специалиста на Z80 
Author Message
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Хотел спросить у знающих. Был ли когда-нибудь ассемблер для Специалиста в мнемонике Z80. Ведь был же Специалист на Z80, вернее МХ - схема юзанья процессора - http://www.spetsialist-mx.ru/index17.html.


26 Jul 2019 06:22
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Был такой ассемблер но не специально для "Специалиста". Использовал он стандартные вызовы,
у меня со времён "Микроши" имеется.
Только он по функционалу DEBUG oт М$ напоминал, а не полноценный ассемблер.

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

_________________
iLavr


26 Jul 2019 07:08
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Интересует только для Z80. Для Ориона был такой ассемблер?


26 Jul 2019 22:06
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Он подходит и для Ориона... Он вопще-то от CP-M.

_________________
iLavr


27 Jul 2019 14:36
Profile
Doomed
User avatar

Joined: 19 Feb 2017 03:46
Posts: 584
Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь
Reply with quote
fifan wrote:
Для Ориона был такой ассемблер?
Для ОРИОНА было написано несколько любительских ассемблеров для Z80. Лучший из них, естественно, TASM$ от В.Пушкова.

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

А сейчас (после появления Интернета) пригодными для адаптации для Специалиста стало и более десятка иностранных (примитивных и не очень) любительских ассемблеров для Z80 из 70-тых и 80-тых. Самые простые характерны тем, что у них адрес JR-перехода задаётся в виде $-Label. Чтобы долго не искать и скачивать по одному вот подборка иностранных ассемблеров https://yadi.sk/d/W4HkacEdJcvWSg.
Attachment:
ASMS.rar [9.99 KiB]
Downloaded 402 times


Last edited by barsik on 28 Jul 2019 16:52, edited 1 time in total.



28 Jul 2019 14:06
Profile
Maniac

Joined: 18 Nov 2013 15:15
Posts: 209
Location: все оттуда ;)
Reply with quote
http://www.z80.info/z80sdt.htm


28 Jul 2019 14:26
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
А что мне с ссылкой из последнего топика делать? Я вроде не писал, что мне нужны утилиты для работы на ПС.

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

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

В атаче схема железного эмулятора.


29 Jul 2019 11:10
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Сам решил сделать ассемблер для 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а таблица по другому шифруется (по крайней мере я не нашёл текстовых вкладок). Подскажите как там всё сделано.


05 Aug 2019 10:38
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
fifan wrote:
Наверное в самом ассемлере Assm_MX V3.3 из RAMFOSа таблица по другому шифруется (по крайней мере я не нашёл текстовых вкладок). Подскажите как там всё сделано.

Может тебе исходник дать ассемБлера из RAMFOS? Я только не уверен, что это Assm_MX V3.3 у меня...
Но алгоритм там, я бы не сказал, что зело простой...

_________________
iLavr


05 Aug 2019 13:25
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Если не жалко, то дай. Посмотрю как там все устроено.


05 Aug 2019 19:40
Profile
Doomed
User avatar

Joined: 19 Feb 2017 03:46
Posts: 584
Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь
Reply with quote
Post .
В выложенной ранее коллекции ассемблеров 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-ми разрядки ассемблер всегда делают по умному, почти без таблиц. .


06 Aug 2019 01:35
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
fifan wrote:
Если не жалко, то дай.
Жалко - оно, знаешь ли, у пчёлки... :lol:

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

Вот эти исходники:
Attachment:
ASSM4K.zip [7.38 KiB]
Downloaded 358 times

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

А болтунов не слушай... Как говорил председатель Мао:"Всё - в наших руках!" :ewink:

_________________
iLavr


06 Aug 2019 07:10
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Спасибо, посмотрю.
Lavr wrote:
А болтунов не слушай...

Я и не слушаю. Он мне и на соседнем форуме надоел.


06 Aug 2019 07:19
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Вспомнил, что вобще-то я его уже один раз выкладывал здесь: Компиляторы ассемблера
И что-то там писал по этому поводу...

_________________
iLavr


06 Aug 2019 07:46
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Для сокращения таблицы мнемоник здесь, как я предполагал, одной из групп, например MOV присваивается одно число. Буду дальше разбираться.


06 Aug 2019 07:48
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 16 posts ]  Go to page 1, 2  Next

Who is online

Users browsing this forum: No registered users and 11 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.