Вход

Просмотр полной версии : ArtStudio - исследование



Rubts0FF
01.07.2021, 12:20
Не нашел в куда обратиться с этим вопросом и решил создать отдельную тему.

Сейчас "развлекаюсь" тем, что исследую графический редактор ArtStudio, ни какой конкретной цели, заинтересовала система меню, ну и остальное.

Структурно ArtStudio разбита на подпрограммы согласно меню и вот некоторые из них, после опроса нажатых клавиш управления, вызывают следующую подпрограмму. Я что то такого нигде раньше не встречал. Эта подпрограмма благополучно выкидывается из общей структуры, но интересно же.



laa79 ld a,(l87ff):cp 4:ret nz
di:ld hl,l86fa
ld a,h:ld i,a:im 2
ld hl,laac8:ld (l86fa),hl
ld hl,laad1:ld (l86fc),hl
ld hl,laaf0:ld (l86ff),hl
ld a,#4f:out (#5f),a
ld hl,l86fa
ld a,l:out (#5f),a
ld a,#87:out (#5f),a
ld a,#4f:out (#7f),a
ld hl,l86fc
ld a,l:out (#7f),a
ld a,#87:out (#7f),a
call laaf2
ld l,a:ld h,0:ld (lacd9),hl
call laaf6:ld l,a
ld (lacdb),hl:ei:ret

laac8 push af:in a,(#1f)
push hl:ld hl,lacdd:jr laad8

laad1 push af:in a,(#3f)
push hl:ld hl,lacde

laad8 and 1:jr nz,laadf
inc (hl):jr laae0

laadf dec (hl)

laae0 pop hl:pop af:ex (sp),hl
push af:dec hl
ld a,(hl):cp #76:jr z,laaeb
inc hl
laaeb pop af:ex (sp),hl:ei:reti

laaf0 ei:ret

laaf2 ld a,(lacdd):ret

laaf6 ld a,(lacde):ret

laafa ld b,#0a

laafc in a,(#df):or #1f:inc a:ret z
djnz laafc:ret


Все эти действия, порты, мне лично ни о чем не говорят, но .., уже говорил, интересно к какому "железу" это относится.

p.s. Тему завел, надо будет делиться и результатами .. исследований.

jerri
01.07.2021, 12:27
Микродрайв. не?

Rubts0FF
01.07.2021, 12:30
Я то же так думаю, но точно не знаю. :-)

Rubts0FF
01.07.2021, 14:23
Здесь проще перечислить откуда не вызывается, вызывается из FILL, TEXT, SHAPES, MAGNIFY, WINDOWS, я бегло глянул, может где то еще.

Rubts0FF
01.07.2021, 20:39
Вызовы выглядят где то так:


lbeab ld a,#05:call SetCursAddr
call P_Curs1
lbeb3 call PassFire
; call laa79
lbeb9 call ScanKey
ld a,(ScanCode):and #10
jr nz,lbf06
;=============================
lbf49 call lc3ed:xor a
call SetCursAddr
lbf50 call PutCursor
lbf53 call PassFire
; call laa79
lbf59 call ScanKey
ld a,(ScanCode):and #10
jr nz,lbf94:call ldae0
;===============================
xor a:call SetCursAddr
ld hl,#6080:ld (Arr_Xc),hl:halt
ld7da call PutCursor:call PassFire
; call laa79
ld7e3 call CheckK3:ld a,(ScanCode)
and #10:jr nz,ld7ff
call ldae0:halt:call ld8fa
call JCursHide:call PutCursor
call MenuCheck:jr ld7e3

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

Ладно, тут кое чего .. выковырял для дальнейшего использования, отдельно от ArtStudio. Библиотека мелких подпрограмм, использовать можно разве что для создания интерфейса. Туда входят следующие подпрограммы.
Очистка участка экрана, инверсия, вывод рамки, вывод линий - горизонтальных, вертикальных и любых, вот все что в Shapes использует это.
Печать и вывод графики, спрайтов, в ArtStudio это Pen, Brash и что там еще. Кое какие комментарии я добавил, не много.
Все координаты и размеры в пикселах. Для чего то, а-ля 3-Д это вряд-ли, а для чего попроще - вполне.

Пока это все, но разбираться пока не надоело.

О! Завел котика, ZAsm`е - знакомьтесь
https://b.radikal.ru/b36/2107/a8/94876123b2c1.jpg (https://radikal.ru)
Имени правда нет, но в архиве есть.

jerri
01.07.2021, 21:06
блин, учите историю. это похоже AMX mouse !!!

да порты все одни и теже 1F 3F 5F 7F
что как куда без контекста непонятно

jerri
01.07.2021, 21:47
goodboy, Вон рубтсофф ковыряет ему и виднее

goodboy
01.07.2021, 22:11
стёр подсказки, пускай сам ковыряется (изобретая велосипед)

Rubts0FF
04.07.2021, 11:51
Хм, я как то забыл о самом главном помощнике .., гугль конечно, он правда отослал на вики (http://speccy.info/%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%BF%D0%BE%D1%80% D1%82%D0%BE%D0%B2_ZX_Spectrum)и вот что там говорится.

Зарубежная периферия

#07 - порт синтезатора речи Cheetah Sweet Talker
#1F - порт Kempston-джойстика
#3F - Fuller Box, регистр AY-3-8912
#5F - Fuller Box, данные AY-3-8912
#7F - Fuller Box, порт джойстика
Занятный кстати девайс

Fuller Box (Fuller Box Games Unit) — устройство расширения для ZX Spectrum 48K, выпущенное компанией Fuller Micro Systems в 1983 году. Стоимость устройства составляла £29.95.

Устройство подключалось к системному разъёму компьютера и содержало в себе звуковой синтезатор AY-3-8912 (одно из первых устройств подобного типа для ZX Spectrum), усилитель звука бипера с регулятором громкости, собственный динамик, один разъём для подключения джойстика стандарта Atari, интерфейс для подключения магнитофона и опциональный синтезатор голоса на основе микросхемы SP0256 (Fuller Orator). Устройство также имело сквозной системный разъём, позволявший подключать другие устройства расширения.
Так что вопрос чего там опрашивала ArtStudo закрыт.

Но исследование продолжается, ох и придумал же автор, где хранить строки экрана, которые не помещаются в .. экран (#4000) из за постоянно торчащего там меню.

PATHNK
04.07.2021, 12:17
Здесь демонстрируется это устройство.


https://www.youtube.com/watch?v=SsXK6eYBecI

Rubts0FF
04.07.2021, 12:30
Интересно, почему у нас его не клонировали.

Black Cat / Era CG
04.07.2021, 17:09
Потому что он быстро умер.

cherkasy
04.07.2021, 17:52
я брал интервью у автора редактора - смотрите в прошлогоднем номере legends of bytes. на форуме в разделе пресса.

Rubts0FF
04.07.2021, 19:27
я брал интервью у автора
Все что я от автора хотел, получил благодаря ZX Turbo Disassembler v2.06, кстати, просмотр исходных текстов, структуры программы, приводит к некоторым выводам - человек хорошо знал что делал.

Потому что он быстро умер.
Не думаю, TR-DOS выжил в основном только у нас, думаю какому-нибудь умельцу просто в руки не попал ... вовремя. Уже и не важно.

null_device
04.07.2021, 20:28
TR-DOS выжил в основном только у нас

В данном случае, все упиралось в относительную доступность и копируемость. "Сердце" BDI, имело отечественную кальку, как и сами совместимые накопители с носителями (дисководы и дискеты).
В остальном же мире, и сам спектрум и альтернативные накопители (вместе с подддерживающими их железом) - скорее, музейная редкость. Вспомнить, тот же микродрайв или дисковод в амстардовских версиях.

reddie
16.07.2021, 12:13
Вспомнить, тот же микродрайв или дисковод в амстардовских версиях.

Это да. Мало кто из "наших" видел живьем микродрайв или тот же zx-принтер.
Насчет TR-DOS еще как сказать, хорошо ли, что он у нас прижился. Основной плюс - простота - убивается недостатками: последовательная запись файлов, необходимость команды MOVE, а самый жирный минус - знаменитое Ignore. Ни одна уважающая себя система не позволит копировать/записывать сбойные сектора.

По теме АртСтудио: на то время (до эпохи отечественного софта), пожалуй, был самый распространенный редактор. О сопоставимом по возможностям Artist 2 лично я вообще узнал из сборника описаний системных программ. Но для меня задание окна до пикселя (и опций перемещения) было важнее некоторых дополнительных плюшек Артиста.
Кстати, в свое время писали про глючную заливку сложных областей, по-моему, именно в АртСтудио.

Rubts0FF
16.07.2021, 20:40
Кстати, в свое время писали про глючную заливку сложных областей, по-моему, именно в АртСтудио
Мне кажется наоборот, Артист. Пытался я и его дизассемблировать и ни один раз, когда то давно, и вот совсем не давно. С одной стороны он проще, с адреса #C000 - экран, далее с #DB00 - подпрограммы и в конце шрифты, а вот снизу данные их много и формат я пока не понял и в очередной раз отступил. Надо бы в дизассемблер еще и трассировщик приделать, но мечтать как говориться не вредно.

Мне тоже ближе была, да и сейчас, ArtStudio, но некоторые вещи, сейчас уже и не скажу, нравились в ARTIST`е, очень не нравился интерфейс.

reddie
16.07.2021, 21:17
Надо бы в дизассемблер еще и трассировщик приделать, но мечтать как говориться не вредно.
Речь про реал, как понимаю? В эмуляторе-то можно что угодно с прогой сделать.


некоторые вещи, сейчас уже и не скажу, нравились в ARTIST`е, очень не нравился интерфейс.

В обоих интерфейсах убивает постоянно торчащее на экране меню, сжирающее часть картинки.
Мне и то в далеких 90-х сразу пришла мысль: а почему нельзя было сделать меню вызываемым/убираемым какой-нибудь кнопкой?
Ведь основное время занимает именно редактирование, а переключение режимов - секунды.

Rubts0FF
19.07.2021, 10:33
Речь про реал, как понимаю? В эмуляторе-то можно что угодно с прогой сделать.
Не совсем реал, мой пентагон сгнил много лет назад, брать современные "железные" эмуляторы, если бы сначала попользоваться, а пока разницы не вижу. Но даже под эмулятором, монитор-отладчик STS 6.2, и дизассемблер ZX Turbo Dissasembler. Плюшками эмуляторов никогда не пользовался, впрочем вру, UKV пользовался, в прошлом веке, собственно он для этого и запускался, если надо найти конкретную ошибку.

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

Bedazzle
19.07.2021, 13:07
Впрочем, если кому интересно, могу поделиться тем что у меня уже есть, нужно только немного причесать.

Весьма интересно!

reddie
19.07.2021, 13:20
Основное меню ArtStudio действительно раздражает, даже задумывался это исправить
Да само-то меню ладно. Сделать бы его убираемым по какой-нибудь клавише или комбинации клавиш, уже будет неплохо.
Только для этого, боюсь, придется перепахивать все процедуры, там же все завязано на урезанный экран.

Rubts0FF
19.07.2021, 20:19
Весьма интересно!
Нарушая традиции, обещанного как известно три года .., но и тексты только просмотрел и добавил небольшой AboutMe, собственно вот он.




The ArtStudio v1.5TR

Я бездельничал и не знал чем себя
занять, и вот попалась мне эта ArtStudio.

Кстати сказать, уже по мере разбора
находил совершенно непонятные участки
данных и/или подпрограмм, в итоге пришлось
искать различные версии/редакции и оттуда
брать, дизассемблируя нужные участки, все
необходимое. Из шести или семи вариантов
ArtStudio только один не содержал ошибок,
найденных мной, все не проверял.

По структуре, насколько разобрался.

#5F00 - копия экрана
#7A00 - шрифты, интерфейсный и тот что
виден в редакторе шрифтов, далее перья,
курсоры, кисти и т.д. файл - "data".
Все эти данные идут вперемежку с ds 96,
пытался это убрать и ничего хорошего, там
хранятся строки экрана закрытые основным
меню.

#8800 - адрес запуска, для себя я сделал
сохранение буфера принтера с пп. возврата
в ZAsm что позволяет вернуться, Return to
ZAsm в подменю File.

Далее подпрограммы, выполняющие те или
иные операции, согласно пунктам основного
меню ArtStudio.

Да, я как то потерял подменю Print и
поэтому его нет, как нет и подпрограмм для
печати экрана.

Последним идет редактор шрифтов и он
похоже ассемблировался отдельно, раньше,
сейчас все нормально.

#E700 - атрибуты строк закрытые основным
меню и это важно!

#E860 - Buffer - используется для
сохранения экрана под окнами меню и для
операций Windows

Имена меток могут не соответствовать
выполняемым задачам, как сразу казалось,
так и переименовывал.

Для этих целей, переименование меток,
лучше всего подходит "replace.ovl".

Из внесенных мною изменений - драйвер
Kempston Mouse.

19.07.2021 19:10 V.Rubts0FF

'Новую' ArtStudio - не планирую, но
а там .., скучно станет - может быть.

Будут вопросы - пишите на zx.pk.ru

p.s. Странно, не все экраны загружает ..,
main, file - мусор какой то, остальные -
нормально.


В архиве исходные, ну как исходные - дизассемблированные тексты ArtStudio в формате ассемблера ZAsm v3.3X.
Еще несколько картинок - примеров использования интрефейса, структуры меню ArtStudio.

Bedazzle
20.07.2021, 19:02
В архиве исходные, ну как исходные - дизассемблированные тексты ArtStudio в формате ассемблера ZAsm v3.3X.

Смотрю тексты тотал командеровским плагином.
Вот эти циферки в первой строке что значат?

https://i.imgur.com/AnaWZ16.png

Rubts0FF
20.07.2021, 21:27
Смотрю тексты тотал командеровским плагином.
Вот эти циферки в первой строке что значат?
В первой строке сохраняется положение редактора в тексте, после загрузки оттуда берутся данные о текущей строке, позиции, наличии отмеченного блока, в последней версии и информация о включенном - активном драйвере/шрифте. После этого строка удаляется. Так что если файл просто загрузить, этого не увидеть.

Bedazzle
20.07.2021, 22:57
В первой строке сохраняется положение редактора в тексте

Понятно, спасибо!

Rubts0FF
24.07.2021, 10:02
Продолжаю исследовать ArtStudio, скорее использовать подпрограммы для использования по другому назначению, один из экспериментов - да вот собственно.

https://b.radikal.ru/b00/2107/65/65396b265324.jpg (https://radikal.ru)
(захват с Lister`а Total Commander`а)

Не смотря на то, что мне нравиться как это выглядит, не уверен что буду продолжать в этом направлении, в первую очередь потому что не думаю что это надо, в конечном счете, ассемблер-компилятору.

В архиве пару картинок, с разным цветом. Исходные тексты не прилагаю, так как это еще не то как должно, а только как можно, впрочем, если кому интересно - выложу как есть.

Dexus
24.07.2021, 14:48
Часто в детстве рисовал шрифты, и грузить целую артстудию очень утомляло. Пытался както выдрать из нее только ту часть что со шрифтами - само собой ничего не вышло, пришлось свой делать. Но редактор шрифтов в артстудии очень нравился.

Rubts0FF
24.07.2021, 15:04
Этот редактор то же разбирал, он кстати совсем простой (если использовать систему меню от ArtStudio), только нужен был редактор для полного шрифта, 256 символом, но вот куда их вывести так и не нашел. В ZAsm`е уже три редактора шрифтов, не уверен что на этом успокоюсь.

Barmaley_m
08.08.2021, 16:47
Art Studio основан на знаменитом оконно-менюшно-стрелочном интерфейсе от Пита Кука (Pete Cooke). Такой же интерфейс использовался в некоторых играх (Earthlight, Academy). Надо думать, оконный интерфейс существовал в виде библиотеки, которую было легко использовать и интегрировать в различные программы.

Впоследствии этот интерфейс был продизассемблирован такими людьми, как Николай Родионов, и использован в его программах DCU, системе защите дисков и, наверно, где-то ещё. В ZX-Ревю, кажется, была статья с подробным разбором этого интерфейса.

Ко мне в руки тоже это попало (версия, подобная той, что была в DCU), и я на его основе сделал две программы: RRestore (дисковая утилита, специализирующаяся на восстановлении дисков) и RProtect (малоизвестная и не до конца доделанная защита игровых дисков от копирования).

Я разрабатывал эти программы под CP/M, исходники рассчитаны на ассемблер M80. В теме "Культурное наследие спектрума (https://zx-pk.ru/threads/6107-kulturnoe-nasledie-spektruma)" выкладывались мои архивы, среди них на CP/M дисках можно найти файл "WIND.MAC" - это и есть оконный интерфейс. Я его довольно сильно перелопатил, но что-то от оригинала должно было оставаться. Также в исходниках RAREST.MAC располагается текст главной части RRESTORE, где можно видеть примеры использования этого интерфейса.

Возможно, это поможет при анализе Art Studio.

Rubts0FF
08.08.2021, 20:43
Art Studio основан на знаменитом оконно-менюшно-стрелочном интерфейсе от Пита Кука (Pete Cooke).
Это не так, хотя - да у Пита Кука есть "оконно-менюшно-стрелочном интерфейсе" и он много где использует в своих программах-играх, так и разные умельцы приспособили под собственные нужды.
ArtStudio сложнее. Если у Пита Кука структура меню имеет в общем три пункта - координаты и ширина курсора, в ArtStudio элемент меню имеет - координаты, ширина и высота элемента меню, адрес подпрограммы или другой структуры меню, два регистра управляющие - выравниванием текстового сообщения (left or center), вывод прямоугольника, двух вертикальных линий, инвертирование сообщения после вывода, а так же доступность элемента меню, вывод курсора если стрелка в границах элемента меню и собственно текстовое сообщение, я разобрался только с тем, что мне было интересно и к самой Artstudio пока не возвращался. Какое то время мне казалось что конструкция слишком громоздкая, но переделав одно из меню ZAsm`а в формат Artstudio .., в общем это не так, получилось компактней.

Rubts0FF
01.09.2021, 02:13
С целью использования в личный целях вытащил из Artsudio некоторые подпрограммы.

Это система меню и стрелочного интерфейса. На диске есть два файла, test1 и test2. В одном случае используется меню Attrs. из Artstudio, в другом .. а-ля, каким бы был
вид ZAsm'а при использовании стрелочного интерфейса.

Прежде чем использовать стрелочный интерфейс, меню нужно открыть, вывести окно, напечатать сообщения.

Если это главное/основное меню нужно вызвать MenuPrint, ix-должен указывать на адрес структуры, если же это подменю и в дальнейшем нужно будет вернуться в основное, лучше вызывать MenuCall, там
сохраняется адрес текущей структуры меню.

После этого управление передается на MAIN. Надо понимать, это кусок Artstudio и там выход отсюда не предусмотрен, поэтому хорошо бы одним из пунктов меню сделать выход, с восстановление sp из (STK_Q).

Есть еще цикл EDIT, это управление рисование кистью и другими предметами, я не выбросил, может еще пригодится.

Поэтому и весь набор курсоров не убран. Для печати так же используется шрифт из комплекта Artsdudio. Меня это не очень устраивает, но пока, для демонстрации можно пользоваться.

Еще пару LOGO для ZAsm.
https://d.radikal.ru/d20/2108/50/33fb30390af8.jpg (https://radikal.ru)

https://c.radikal.ru/c07/2108/73/3915f6a8a82f.jpg (https://radikal.ru)

Да, в архиве несколько файлов, test1, test2 - демонстрация как это работает, artdata - шрифт и курсоры, artlib - некоторые подпрограммы, artmain - вывод и обработка системы меню.

Rubts0FF
28.06.2022, 06:46
Дело было вечером, делать было нечего и, на самом деле дело было рано утром. У нас сейчас есть замечательное развлечение, встать по раньше 04:00 - 04:30 и выйти к .. общественному крану с водой на предмет, а вдруг сегодня дадут. Поэтому вставать с восходом солнца уже привык, а вода раз в три-четыре дня и поэтому чем то занять себя с утра надо. Вот это оказалось интересным, наконец разобраться с регистрами (IX+6), (IX+7) в системе меню Artstudio.

(ix+6)

бит 0,(ix+6) - состояние курсора меню
;0- выключен
;1- включен - выведен

бит 1,(ix+6) - доступность пункта меню
;0- пункт доступен
;1- пункт недоступен
Например в подменю WINDOW, если окно не определено - часть пунктов недоступны, этот бит сбрасывается при определении окна и устанавливается, когда окно не определено.

бит 2,(ix+6) - не используется

бит 3,(ix+6) - /-/-/-/-/-/-/-/

бит 4,(ix+6) - /-/-/-/-/-/-/-/

бит 5,(ix+6) - /-/-/-/-/-/-/-/

бит 6,(ix+6) - управление курсором при выборе пункта меню;
;0- курсор выключать
;1- включать или оставлять включенным;

бит 7,(ix+6) - вывод двух вертикальных линий по краям элемента меню, обычно окна.
;0- не выводить
;1- выводить

ix+7

бит 0,(ix+7) - управление выводом курсора
;0- курсор не выводится, например на пунктах основного меню
;1- выводится

бит 1,(ix+7) - мигание курсором при выборе пункта меню
;0- не мигать
;1- мигать

бит 2,(ix+7) - управление закрытием этого меню/окна меню, при выборе этого пункта и перед передачей управление подпрограмме этого же
элемента меню (IX+4), (IX+5)
;0- не закрывать
;1- закрывать

бит 3,(ix+7) - адрес (ix+4), (ix+5) это
;0- адрес структуры меню
;1- адрес подпрограммы

бит 4,(ix+7) - выравнивание текста, при печати текста
;0- влево +4 пиксела
;1- по центру

бит 5,(ix+7) - инверсия после печати текста
;0- не инвертировать
;1- инвертировать, используется для заголовка меню

бит 6,(ix+7) - вывод рамки, например обводятся кисти и цвета
;0- без рамки
;1- с рамкой

бит 7,(ix+7) - очистка
;0- без очистки
;1- с очисткой

Как то так, может это будет интересно куму то еще.