Девушки редко получаются .. удачно, а тут по другому и не скажешь.
Вид для печати
Наконец-то я вижу на Спеке широкое применение Floyd-Steinberg Dithering!
А с нейросетями никто не пробовал делать пиксельную графику? Я видел в интернете хорошие примеры - например, тут. https://inikolaeva.medium.com/make-p...g-e1b1974ba572
Когда арт-студия была мною дизассемблирована, я не собирался делать что то с ней, просто посмотреть систему меню и возможно где то использовать для своих целей. Но, однажды не найдя чем бы себя занять, решил глянуть на предмет что то сделать, хотя бы с этим вечно торчащим в экране меню, не только меня это ... достает.
Но с наскока номер не прошел, в основном из за того что данные закрываемые этим самым основным меню, хранятся в разброс по всей памяти, ну в двух местах в общем, но это не удобно. А так как к этим подпрограммам, расчет адрес в экране / атрибутах по координатам в пикселях, обращаются в общем все подменю, это 10 элементов и в общем .. суета еще так. Отказался от такого варианта.
Проще было бы переделать все с начала, используя в общем то же подпрограммы, просто построить программу .. без основного меню в экране. Это оказался долгий путь, так как результата долго не видно. Решил попробовать как оверлей к ZAsm, я не думаю что вся арт-студия поместиться в оверлей, но решил попробовать.
Так как ZAsm v4.0x и так содержит часть пп. арт-студии, мелкие подпрограммы давно и не давно добавил возможность подгрузить систему меню арт-студии в виде ADD_LIB. Которое подгружается в страницу, которую в основном использует компилятор для INCLUDE/INSERT. Загрузка по требованию из оверлея.
Сначала сделал только основное меню, сразу занесло на иконки, но они жрут прорву памяти и оставил текст. Драйвер печати настраивается под печать любым из шрифтов ZAsm (32, 42, 51 и 64 символа в строке), от пропорционального шрифта отказался по причине .., ну сколько там тех символов больше/меньше 3-4. Сейчас использую в основном 6-ти битный шрифт, но как уже сказал, заменить на любой другой - две секунды, в регистре окна два младших бита задают шрифт который будет использоваться, и настраивается драйвер печати.
Потом добавил что по-проще, colors, miscell, для загрузки экрана здесь используется - вызов файловой панели ZAsm.
Поэтому отдельно решил сделать файлер, со стрелочным интерфейсом. Ставилась задача - файл нужно предварительно посмотреть, загрузить, в том числе упакованные экраны, удалить - переименовать, отрывать .trd как каталоги.
В общем многое из задуманного получилось, правда удалять и переименовывать физически я пока не делаю, как и сохранение картинки, но это пока.
Следующий шаг - слияние этих двух оверлеев, так же требуется кое-что добавить/переделать в ADD_LIB, а потом .. или попробовать все это в оверлейном варианте,
начиная с ZAsm v4.00 буфер под оверлей может не иметь границ, он упирается в буфер текста, и может это пространство использовать как хочет.
Но скорее всего, все это будет выделено в отдельную арт-студию, файловые операции уже есть, можно пробовать. Но это думы, а сейчас это выглядит как то так.
Картинка из xpeccy в полный экран. Если кто то не может смотреть на mail.ru, перенесите куда угодно, я просто не хочу нигде регистрироваться из за в общем то пару минутного ролика.
https://cloud.mail.ru/public/YERS/HpxuoEwuj
Где то здесь, вся история - https://zx-pk.ru/threads/33476-artst...ledovanie.html
Исходные тексты - где то здесь - https://zx-pk.ru/threads/33476-artst...nie/page3.html
Специально я этим не занимаюсь, но когда попадается интересная картинка, пробую как это будет выглядеть на спектруме, хорошо - далеко не всегда.
https://i.postimg.cc/GhkWcmd5/LOGO06.png
На диске картинки не сжатые, что бы можно было посмотреть в тотале.
Снова собралось немного картинок-конвертов.
https://i.postimg.cc/xT6tb576/LOGO-7.png
p.s. в остальном процесс идет, хотя и очень медленно.
Подцепил какую-то заразу .., считай два месяца жизнь мимо. Сейчас всё нормально и уже дня три смотрю диски и пытаюсь вспомнить, что делал, что хотел, планировал и в общем пытаюсь вернуться, пока правда без особого успеха, нашел UFO2 со старыми отгрузками, развлекаюсь. Еще нашел вот этот диск.
https://i.postimg.cc/nhJjDKfn/LOGO-08.png
ZAsm Sprite Justify
https://i.postimg.cc/MK3YvpyS/SPRTJF.png
Мне надоело выравнивать спрайты по центру вручную, прокручивая и подсчитывая
число пикселей слева-справа, оно хоть и не часто, но бывает нужно.
Вот таки сделал. Вряд-ли это нужно кому то еще, но уже есть, так почему и нет.
В архиве - готовый .ovl для ZAsm v4.0E, исходный текст, файл спрайтов .G, и ReadMe, немного больше чем выше.
з.ы. по хорошему это надо бы строить в редактор спрайтов, но там не густо со свободным местом, надо смотреть.
Может они уже надоели, но они есть.
https://i.postimg.cc/d3mmrPsb/LOGO09.png
з.ы. Интересна история вот того кита (первый во втором ряду), это самый одинокий кит. У него там глюк и он вещает не на той частоте, его никто не слышит, ну и он похоже то же никого не слышит. Печально как то.
мне как-то попалась интересная история с поиском автора и места с фотографии
(дефолтная картинка для рабочего стола в winXP - осенняя аллея)
https://i.postimg.cc/JzrJrZHH/CMOS1.png
Часы, я уже как то встраивал их в ZAsm, но в каких то эмуляторах были конфликты из за используемых портов, не помню я, просто исключил.
Сейчас нашел пп. и реанимировал пока в качестве оверлея, что бы посмотреть. В общем нравиться, но здесь вопросы.
У Шалаева все отлично, xpeccy как и Spectaculator такой "железки" как CMOS не имеют, Unreal ... он во всех разрядах показывает секунды, впрочем хрен его знает секунды ли это, но каждый раз все разряды увеличиваются на единицу, когда то, вот тогда, часы под анрилом работали.
Теперь вопрос, себе могу оставить как есть, но что не так?
Для обращения с самой "железкой" использую следующие пп. Это не мои, и не помню где я их взял.
Код:Cmos_OFF push bc:ld bc,#EFF7
in a,(bc):and 7fh:out (bc),a
pop bc:ret
Cmos_ON push bc:ld bc,#EFF7:in a,(bc)
or #80:out (bc),a:pop bc:ret
CmosCheck
push bc:ld bc,#EFF7:in a,(bc)
and #80:pop bc:ret
CmosAddr
push bc:ld bc,#DFF7:and #3F
out (bc),a:pop bc:ret
CmosRead
push bc:ld bc,#BFF7:in a,(bc)
pop bc:ret
CmosWrite
push bc:ld bc,#BFF7:out (bc),a
pop bc:ret
и собственно вывод
CmosTime
call CmosCheck:call z,Cmos_ON
ld a,#F0:ld (Mask4),a
ld hl,#50FC:ld (PrtAddr),hl
ld hl,#5B00-4:ld bc,#0447
ld (hl),c:inc hl:djnz $-2
ld b,3
CmosTm1 ld a,b:dec a:add a,a:call CmosAddr
call CmosRead:call PrtTime
djnz CmosTm2:ret
CmosTm2 ld a,#A:call Print4:jr CmosTm1
PrtTime daa:push af:rrca:rrca:rrca:rrca
Там свалка, есть интересные.
https://i.postimg.cc/wBmFN4VQ/LOGO10.png
https://i.postimg.cc/4N7VH2Hw/LOGO-11.png
С Новым годом!
Собралось немного. Кстати, первая в четвертом ряду - смотреть всем, тем кому не интересно, в первую очередь. В кинотеатрах вроде с 6 февраля, на различных тв-платформах, на рутрекере в отличном качестве.
https://i.postimg.cc/T2mFjstV/LOGO12.png
Заходил товарищ, где то посеял 6-ти битную версию ZAsm v4.xx, что прорастет и прорастет ли вообще, на месте посева, не известно.
Предложение поискать эту версию где то на моих дисках или на zx.pk.ru - отказ, давай с нуля, свежее будет.
Вот, свежий вариант ZAsm v4.x6, с одним 6-ти битным шрифтом.
p.s. на простой вопрос - зачем тебе это или чем не устраивает полная версия, му-му-му - пусть будет.
Еще один результат .. визита одного гостя.
Это без оверлейная версия ZAsm v4.X6. Кроме того, отсутствует просмотр файлов,
но с настройками, соответствует setup.ovl, почти полностью.
В остальном, редактор и компилятор не отличаются от основной версии ZAsm v4.0E.
з.ы. всем версиям 4.0х, как впрочем и v3.3x, v3.2x, требуется память больше 128 кб. Хорошо если 512-1024к.
Как там, когда собаке делать нечего .., вот и я тут задумал на одну из стен вывесить картинки-заставки самых различных игр, которые в своё время отобрали массу времени, впрочем, прекрасно проведенное время.
Хочу предварительно увеличить, так сказать без потери качества, все эти ... Resize - только для уменьшить или обрезать. PhotoFiltre, которым пользуюсь регулярно для каких то мелких задач, сильно мылит картинку. В моём фотошопе от монкруса не доступна функция "нейронные фильтры", говорят хорошо работает, что еще, гигатамчегото - совсем не впечатлило, только жрет ресурсы.
Да, я искал где бы этот вопрос задать, но подходящей темы не нашел, как бы тема вообще не .. ZX. Решил спросить здесь, может кто то уже это делал.
InPixio Photo Maximizer Pro - справилась вроде бы не плохо.
https://i.postimg.cc/05LdT3Sg/NODESOFY-In-Pixio.png
Снова собралось.
https://i.postimg.cc/yY4RWsx5/LOGO14.png
https://i.postimg.cc/ZqChgD03/LOGO16.png
Первые две в четвертом ряду - Бетельгейзе, ну за что купил как говориться.
у CMOS два варианта обращения к портам:
1) Когда активно ПЗУ TRDOS или SYS или сигнал SHADOW:
#DEF7 - регистр адреса RTC
#BEF7 - регистр записи/чтения данных RTC
2) Когда активен CMOSEN и НЕ активен SHADOW
#DFF7 - регистр адреса RTC
#BFF7 - регистр записи/чтения данных RTC
CMOSEN - это старший бит D7 порта #EFF7
SHADOW - это младший бит D0 порта #xxBF - включает shadow порты
Секунды хранятся в RTC по 0 адресу, т.е. судя по всему у вас не устанавливается адрес для RTC при чтении. Что как-бы намекает на то, что порты заблокированы.
Некоторые эмуляторы и упрощенные схемы могут читать/писать RTC по упрощенной схеме выборки портов, т.е. даже если доступ к порту заблокирован. На таком железе/эмуляторах часы могут затираться разными программами которые используют нестандартное обращение к портам.
Проверьте, что записываете правильный адрес в правильный и активный порт.
Т.к. вы используете адреса портов от второго варианта доступа, нужно убедиться, что SHADOW не активен и CMOSEN включен.
Как вариант, можно попробовать писать адрес сразу в два варианта порта, тогда на одном из вариантов сработает. Но для чтения из корректного порта нужно знать состояние SHADOW или как-то детектить, какой из вариантов портов активен. Можно писать адрес в два порта, а читать из BFF7, расчитывая что он всегда доступен для чтения, но не везде это будет работать.
Наиболее оптимальный вариант, как мне кажется для вашего кода - просто сбросить бит SHADOW.
ZX Turbo Assembler version 4.0F
В редакторе обнаружилась ошибка, она скорее неприятная, чем фатальная,
при вставка числа из калькулятора в строку, строка ломалась, часть строки могла
пропасть и .. чаша терпения переполнилась.
Немного изменил set_art, setup со стрелочным интерфейсом от арт-студии, так, как пример.
В архиве сам ZAsm v4.0F и исходные тексты оверлеев.
https://a.imgfoto.host/2025/07/11/LOGO17.jpeg
Что то все хостеры картинок .. в ауте, вот, что нашел.
ZX Turbo Assembler v4.x64 RUS Предысторию этой версии я уже где то писал, а сейчас не так и важно. Это ZAsm с одним 4-х пиксельным шрифтом (64 символа в строке) и на русском языке. Версией пользуюсь уже недели .. три и в общем самому нравиться, хотя 4-х битный шрифт ... не любил я его ... Все оверлеи адаптировать не удалось, как оказалось это занимает много времени и гасит любой энтузиазм и пока я не потерял к этому интерес совсем, вот то что есть.
https://a.imgfoto.host/2025/07/19/ZAsm4x64RU.png
Ладно, на сегодняшний день адаптированы следующие оверлеи:
compile ovl - компилятор
diskmov ovl - уплотнение диска
setup ovl - настройка среды
screen ovl - операции с экраном
spack ovl - упаковка группы экранов
sunp ovl - распаковка группы экранов
service ovl - копирование/удаление файлов, рам-диск ...
replace ovl - мультизамена по нескольким файлам
edit ovl - операции с текстом
Все вроде бы работает, в полной мере протестировать это -
нет, этого не делал, чаше всего использовал diskmov что и
понятно. В остальном разовые запуски для проверки ... к чему это
все, возможны ошибки.
Рабочий диск "D", что бы это изменить нужно любым диск-доктором открыть файл "Z4_x64", найти последовательность DD и заменить на AA. Ooops!
Это скорее мысли в слух, чем крик о помощи. Где то месяц просидел в ZAsm v4.x64 RU, потом вернулся в так сказать основную, сейчас это v4.0F, кстати пришлось привыкать, после русской версии, одна из причин, захотел кое что из русской версии перенести в основную, и это часы, закладки, подменю "Сегодня" в смысле "Today", хотел что то еще сделать, но кончилось место в максимальном размере файла для ZAsm и это #A000. Более того, уже сейчас перебор в 41 байт, это приводит к
порче 8-ми битного шрифта, несколько символов. По быстрому размер уменьшить не получилось. Сжатие - компрессия самого ZAsm-а - не вариант, так как распаковываться он будет в 48-ю память, да и загружаться, для сжатия туда же. Самый простой вариант - выкинуть подменю Today, перенести в Setup, но при старте хорошо когда сразу можно настроить дату и время, а не лазать по настройкам.
Еще вариант, он не новый, у меня уже были переборы, сейчас не помню что и как тогда боролся, как вариант был сжатия блока шрифтов, их 4-ре штуки, вариант сделать шрифты подгружаемыми как это было в более ранних версиях, мне не показался удачным, не то что бы я все время переключаю эти шрифты/драйвера, но когда вдруг это надо - все происходит быстро.
В испытании принимали участия LZASC точно не помню, что то там KSA, еще MS-PACK и File Compressor by Александр Труш. Кстати, не смотря на размер распаковщика, он больше чем у других (около 300 байт), сжатый файл у него оказался меньшего размера.
А в общем шрифты сжались где то на треть. Здесь другой вопрос - распаковщики, у меня нет места, откуда они привыкли работать, для этих операций. В идеале, нужно что бы он не сходя с места, в смысле с какого бы адреса его не запустили, он взял и распаковал .. в то место в которое мне надо и я как то должен ему это указать. Потому что даже упакованные шрифты, это не отдельно взятый файл, это кусок в памяти, из одного цельного файла - ZAsm. Мысль вообще шрифты выкинуть из тела ZAsm и потом их просто загружать отдельно, хоть по одному, хоть блоком .., мне удачной не показалась.
Сам процессом сжатия/компрессии я интересовался очень давно, книжку умную почитать давали, только до дела не дошло, потом книжку забрали и больше к этому не возвращался. А в моем случае поможет только вариант, взять один из упаковщиков дизассемблировать и пробовать использовать для своих целей. Не знаю только сколько это может занять времени.
Есть идеи или решения - давайте, сюда или в телегу.
А если попробовать жать ZX0? Распаковщик 68 байт, если его таскать по памяти, то внутри есть четыре call, которые придётся поправить.
Или ZX2 - жмёт хуже, но распаковщик 56 байт.
Попробовал пожать 150 стандартных 768 шрифтов из коллекции Damien - 112 килобайт превратилось в 67 (паковал каждый файл отдельно).
Цитата:
; -----------------------------------------------------------------------------
; ZX0 decoder by Einar Saukas & Urusergi
; "Standard" version (68 bytes only)
; -----------------------------------------------------------------------------
; Parameters:
; HL: source address (compressed data)
; DE: destination address (decompressing)
; -----------------------------------------------------------------------------
dzx0_standard:
ld bc, $ffff ; preserve default offset 1
push bc
inc bc
ld a, $80
dzx0s_literals:
call dzx0s_elias ; obtain length
ldir ; copy literals
add a, a ; copy from last offset or new offset?
jr c, dzx0s_new_offset
call dzx0s_elias ; obtain length
dzx0s_copy:
ex (sp), hl ; preserve source, restore offset
push hl ; preserve offset
add hl, de ; calculate destination - offset
ldir ; copy from offset
pop hl ; restore offset
ex (sp), hl ; preserve offset, restore source
add a, a ; copy from literals or new offset?
jr nc, dzx0s_literals
dzx0s_new_offset:
pop bc ; discard last offset
ld c, $fe ; prepare negative offset
call dzx0s_elias_loop ; obtain offset MSB
inc c
ret z ; check end marker
ld b, c
ld c, (hl) ; obtain offset LSB
inc hl
rr b ; last offset bit becomes first length bit
rr c
push bc ; preserve new offset
ld bc, 1 ; obtain length
call nc, dzx0s_elias_backtrack
inc bc
jr dzx0s_copy
dzx0s_elias:
inc c ; interlaced Elias gamma coding
dzx0s_elias_loop:
add a, a
jr nz, dzx0s_elias_skip
ld a, (hl) ; load another group of 8 bits
inc hl
rla
dzx0s_elias_skip:
ret c
dzx0s_elias_backtrack:
add a, a
rl c
rl b
jr dzx0s_elias_loop
; -----------------------------------------------------------------------------
На сегодняшний день при компиляции самого ZAsm`а генерируется один файл, правда с ограничением размера в #A000, и долгое время меня это более чем устраивало. Ни каких лишних действий перед загрузкой и запуском с диска. И уже после загрузки он раскидывает части программы на в обще три страницы, и это хорошо .. было.
На сегодняшний день я проблему уже решил, как оказалось в теле программы хранилась копия драйвера переключения страниц, ...
Ой, это оказалась не резервная копия. Версия с ошибкой, так все работает, а вот при попытке выйти и снова войти, тут бывает по разному. Тут я подчистил, а как удалить архив не знаю, может это и не обязательно. А у меня .. все та же головная боль, хотя бы знаю откуда ошибка.
Sorry в общем.
ZX Turbo Assembler v4.11 - исправление ошибки версии 4.10. В остальном на диске AboutMe.
ZX Turbo Assembler v4.12 - в общем с датой-временем я наигрался, и ..
Это продолжение версии 4.0F.
ZAsm с часами, пока пользуешься одним
редактором - всё хорошо, при первом
запуске настроил дату/время и всё.
А вот когда скомпилированная
программа раз за разом вылетает, ну кто
знает куда она, а ZAsm нужно перезапускать
и соответственно дату/время .. всякий раз
снова и снова, и после третьего раза
.. просто пропускаешь.
Уже какое то время пользуюсь этой версией - полет нормальный.
з.ы. почему при редактировании не переводится строка
LOGO18.
https://a.imgfoto.host/2025/09/11/LOGO18.png
з.ы. в редакторе не работает перевод строки, точнее фактически он работает, при пред-просмотре, а вот в самом, строка не переводится, при нажатии ENTER или при попытки мышью перевести курсор ниже.
А телеграмм канал с обновлениями еще жив? Если да, то можно ссылку на него
Жив, и временами что то новое появляется сначала там, затем здесь, иногда наоборот. https://t.me/zxtasm/
Было бы интересно увидеть ZASM c поддержкой ESXDOS, чтобы ассемблировать прямо на SDCARD.
"Железного" Спектрума у меня нет, да и на моём Пентагоне такой железки не было. "Виртулаьный" у меня в эмуляторе Шалаева, еще иногда использую xpeccy, и для запуска всего и вся spectaculator, но .. пишу в Шалаеве, просто потому что это удобно. Но такого плагина к нему нет, да и нужна какая то информация по железке. Вообще давно имею глубокое заблуждение, на Спектруме жесткого диска нет, почему - да потому что нельзя набрать RANDOMIZE USR 15616 и набрав команду CAT или LIST увидеть этот самый каталог. Так что вопрос - как?!
https://pic.maxiol.com/thumbs2/17600...48128.test.png
современные железки перехватывают вызов некоторых адресов в ПЗУ. (например сообщения об ошибке) и подключив своё ПЗУ выполняют код из него.
выше пример команды CAT из бейсика.