Вход

Просмотр полной версии : Доработанная версия ZX Gens v1.01



Dwa83
22.08.2019, 21:43
Текущая версия
69870

v1.01
Доработки:

Поправлен подсчёт результата выражения
Добавлена возможность сохранять данные спрайтов не только построчно но и по знакоместам
Добавлено сообщение о количестве байт после компиляции
Заменено расширение сохраняемого файла кода на bin
Добавлено сохранение в TAP
Добавлена возможность изменения размера шрифра, цвета шрифта, цвета фона в редакторе
Некоторые мелочи, исправление багов



v1.02
Доработки:
ВАЖНО: Команды и регистры увы пишутся только заглавными буквами
Metka LD (HL),A - верно
Metka Ld (hl),a - приведёт к ошибке

Недочёт убран, теперь регистр не важен
Убран недочёт с мерцанием редактора при редактировании
Теперь можно открывать на редактирование не только TXT


v1.03

Будет ли поддержка снапшотов?

Сделал


v1.04
Ещё исправления.

Найдены были ошибки типа if ((a < -128) && (a > 127))
Ещё немного поправил расчёт выражений
Добавлено использование символа $
Добавлено использование расширенного варианта DEFS a,b

jerri
22.08.2019, 21:51
Не разрешает открывать в качестве исходника файлы с произвольным расширением.

Будет ли поддержка снапшотов?



Старт компиляции
Построение таблицы меток
Мнемоника не найдена
Строка 10: Ошибка. Не удалось создать таблицу

EQU не знает

каждая ошибка прерывает компиляцию.

ждём обновления ;)

Dwa83
22.08.2019, 22:01
Мнемоника не найдена
Строка 10: Ошибка. Не удалось создать таблицу
Увы всё нужно писать только большим шрифтом(за исключением меток и текстовых строк разумеется), не понимает по другому(

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


Не разрешает открывать в качестве исходника файлы с произвольным расширением.
Увы так, но можно в txt переименовать и редактировать себе))

EQU не знает Знает)

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


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

jerri
22.08.2019, 22:34
Увы всё нужно писать только большим шрифтом(за исключением меток и текстовых строк разумеется), не понимает по другому(


это надо править



Увы так, но можно в txt переименовать и редактировать себе))

у меня рабочая папка с различными исходниками весит 1Gb
даже если 99% это различные бинарники я не буду это править ;)



Знает)

equ не знает ;)

METKA[tab]ОПЕРАНД[tab]ДАННЫЕ
то что метка - трогать нельзя
то что операнд - надо приводить куда то там
то что данные - надо как то распознавать

LaBeL LD hl,LaBeL
LaBeL ld HL,LaBeL
LaBeL LD HL,LaBeL
LaBeL ld hl,LaBeL

это должно распознаваться всегда.



А иначе кода и не сгенерировать, пока не исправлена ошибка, так как не сможет посчитать длину команды в байтах и просчитать адрес следующей)
нууу и строку нужно дублировать тоже

Dwa83
22.08.2019, 23:15
equ не знает

METKA[tab]ОПЕРАНД[tab]ДАННЫЕ
то что метка - трогать нельзя

equ не знал, знал EQU, но теперь знает и маленькими)
Насчёт меток.
LaBeL == LABEL == label
так как произведён обычный UpperCase всего, что не в кавычках
Если не трогать метку, то в операндах она может быть UpperCase, и при дальнейшей проверке имя не совпадёт, посчитает разными именами.
Да и не вижу смысла делать метки с одинаковым текстом, но с разными регистрами букв..

jerri
24.08.2019, 21:35
Dwa83,


defs #ff00-$,#ff
почему не понимает?

Dwa83
24.08.2019, 23:19
defs #ff00-$,#ff
почему не понимает?
Он $ не понимает, и так же я забыл добавить рассчёт выражений в операндах DEFS(
Кстати, в выражениях там намудрил, потому могут выпадать ошибки, что некоторые выражения типа 123+#fb-"t"+%10001011 может и не смочь посчитать.
Обновил шапку. Версия 1.03 - добавлено сохранение снапшотов. Нужно тестить всё ли в порядке.

Похоже жёсткий косяк. Он не считает defs #ff00,#ff00. Надо исправлять

Dwa83
25.08.2019, 11:46
jerri, Вопрос.
Вот в книжке написано

DEFS - резервируется (и заполняется нулями) область памяти длиной в указанное число байт.
Что означает выражение defs #ff00-$,#ff ?
Расширенный вариант DEFS, где память заполняется значением #ff?

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

Обновил шапку, залил новую версию

jerri
25.08.2019, 22:20
Dwa83, defs количество,[заполнитель]
если не указано, заполняем 0

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

Dwa83, как и в каком случае у тебя создается снапшот?

Dwa83
26.08.2019, 03:21
Dwa83, как и в каком случае у тебя создается снапшот?
В любом случае при нажатии на кнопку или пункт создания SNA, даже если проги как таковой нет(0 байт), или даже с ORG 0, но тогда снапшот будет ущербный.
а как? вот тут в теме консультировался по данному поводу, и готовый результат оставил на всякий случай(48k или 128k выбирается в настройках, но при 128k все остальные банки пустым заполняются).
https://zx-pk.ru/threads/30833-programmnoe-sozdanie-sna.html

goodboy
26.08.2019, 09:38
но при 128k все остальные банки пустым заполняются
а в тексте программы можно указывать в какую банку компилировать код ?

Dwa83
26.08.2019, 10:29
а в тексте программы можно указывать в какую банку компилировать код ?

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

jerri
26.08.2019, 12:56
В данной версии такого нет, но могу попробовать сделать, если это необходимо. Только я не знаю как это в редакторе обозначается.Тебе стоит почитать инструкцию к sjasm

jerri
26.08.2019, 22:11
Dwa83, не понимает подгрузку данных


map incbin "batiscaf.map"

Dwa83
27.08.2019, 16:58
Вроде понял как сделать банки памяти, но как тогда организовать сохранение бинарника? Несколькими файлами? Файл для основного кода Code.bin, а затем для используемых банков Code[1].bin, Code[3].bin, Code[4].bin?

jerri
27.08.2019, 17:28
Вроде понял как сделать банки памяти, но как тогда организовать сохранение бинарника? Несколькими файлами? Файл для основного кода Code.bin, а затем для используемых банков Code[1].bin, Code[3].bin, Code[4].bin?Если компилишь в 48 к
То отгружаешь блоки или блок как есть
Если в 128 то пишешь те блоки где что то есть
Возможно с указанием адреса и страницы
Например pg1c000

Dwa83
27.08.2019, 23:09
Просьба потестить пробный вариант
Чтоб указать страницу, нужно писать PAGE n.
Далее компилятор будет иметь ввиду, что код идёт с адреса #C000

Возможен вариант
Page 1
code
code
Page 4; кусок кода 4ой страницы прям посреди кода другой страницы
code
code
Page 1
more_code

Page 2 - отменяет выбор какой-либо страницы

69889