ZXNet эхоконференция «zxnet.pc»


тема: Управление эмулятором из zx-программы



от: Slavik Tretiak
кому: All
дата: 06 Mar 2006
Hello, Spectre

а зачем городить эмуляторскую фигню если давно есть KAY (турбо висит на порту)

от: Андрей Богданович
кому: All
дата: 06 Mar 2006
Hello, All

За этим загадочным заголовком кроется просьба к уважаемым авторам эмуляторов
сделать возможность немного управлять эмулятором из эмулируемой программы.
Конкретно интересует возможность включения/выключения максимальной скорости
(удобно будет аласм подправить на включение во время компиляции), режимов
экрана (в том же аласме включать/выключать режим Anti64).

Чтобы не было ложных срабатываний можно в конфиге ввести настройку отключающую
эту фичу.

Как будет выглядеть само управление? Hапример так:

LD HL,#0102
LD HL,(#1234)

Где в H-номер операции, в L-значение этой операции, а по кодам #21 xx yy 21 34
12 эмулятор определяет что это к нему стучаться.

Можно дать возможность и читать текущие настройки, для этого в H или L
устанавливаем 7-ой бит.

Разумеется вариантов реализации куча, я подправлю аласм под любой и выложу для
всех.

p.s. Hасколько я помню в US когда-то было что-то подобное...

от: Андрей Богданович
кому: All
дата: 06 Mar 2006
Hello, Sinus

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

А вообще вопрос стоял шире, не из-за одной турбы "городить эмуляторскую фигню".
Читай внимательно первое сообщение.

от: Владимир Кладов
кому: All
дата: 06 Mar 2006
Hello, Spectre

Если делаять, то мне такой интерфейс не нравится. Зачем замедлять даже одну
команду (LD HL,(xxxx)), добавляя проверку адреса там или еще каких-то условий,
когда в ZX есть куча не использованных команд. Как например сделан SLT Trap для
подгрузки уровней: ED FB .

Точно так же лучше сделать ED FF - проверка наличия поддержки набора функций,
меняет значение A. Т.е. если ничего не делается, и ничего не поддерживается, то
ничего эта команда и не меняет. Если есть поддержка расширений (управление
эмулятором), то XOR A: DB $ED, $FF - и в A - набор до 8 флажков. Пусть допустим
бит 0 - поддержка управлением скоростью. И тогда LD HL,xxxx : ED FE - меняет
скорость. Значения xx например такие:
0 - пауза, 10 - 10%, 50 - 50%, 100 - 100%, 255 - 255%, 65000 - 65000%, 65535 -
full throttle.

от: SMT
кому: All
дата: 06 Mar 2006
Hello, Vladimir Kladov

фигня всё это, потому что надо унифицировать интерфейс для всех эмуляторов, что
вряд ли возможно из-за различий в фичах, которые авторы эмулей захотят включать
через API (EDFF, кстати был раньше в unreal)

от: Андрей Богданович
кому: All
дата: 06 Mar 2006
Hello, SMT

SMT> фигня всё это, потому что надо унифицировать интерфейс для всех
SMT> эмуляторов, что вряд ли возможно из-за различий в фичах, которые
SMT> авторы эмулей захотят включать через API (EDFF, кстати был раньше в
SMT> unreal)


Абсолютно верно. Я думаю надо что-то в таком роде:

Функции 0..#3f - общие для всех эмулей, типа управления скоростью, растактовки,
модели памяти, etc

Функции #40..#4f - специфические фичи US

Функции #50..#5f - специфические фичи EMUZWIN

и т.д.

Что-бы было с чего начать, давайтe сделаем функцию N0, управление скоростью
эмулятора, где 0..250 - скорость Z80 в процентах от "стандартной", 255 -
максимально возможная.

от: Владимир Кладов
кому: All
дата: 06 Mar 2006
Hello, Spectre

Давайте ED 00 - ED 3F не трогать, а (или наоборот ED C0 - ED FF, но там уже все
равно SLT Trap, он вроде как стандарт де-факто)? Тем более что в каком-то
древнем эмуле ED 00 - ED 3F они были под завязку. Вообще надо задействовать
меньше поменьше "трапов". Hомер функции можно передавать например в A, доп.
параметры если надо в DC, DE, HL, так же и на выходе если надо что-то получать.
Тогда в этом смысле ED FF - проверка наличия фичи, а ED FE - функции (номер в A
- можно и те же номера сохранить, и еще запас будет). Так пойдет?

Тогда A=0 - управление скоростью, A=1 - "чтение" скорости в HL (можно было бы
за 1 раз сделать, в HL - возвращать предыдущую, но если этого вдруг делать не
нужно, лучше эмулятор не дергать, или надо тогда выделять какое-то значение -
"оставить скорость" неизменной).

Hасчет 254 максимум - маловато будет. Я сегодня как раз гонял RZX-ы, у меня
почти все на 1500%, некоторые на 3000%, а отдельные на 5000% бегают. Почему бы
и не задавать тогда в HL. Лет через 10 65000% будет нормуль.

от: Владимир Кладов
кому: All
дата: 06 Mar 2006
Hello, Vladimir Kladov

Думаю чего не хватает: это определения типа эмуля. Пусть в той же ED FF в HL
возвращает две буквы: H='U

от: SMT
кому: All
дата: 06 Mar 2006
Hello, Vladimir Kladov

Vla> Вообще- то EDFF - это NOP чистой воды. Так что 100 раз
Vla> перепроверяться не надо. Если этот трап что-то изменил, то это трап

надо. этот #EDFF может быть среди мусора внутри ксорки. если влияет на
регистры, не расксорится же

от: SMT
кому: All
дата: 06 Mar 2006
Hello, Vladimir Kladov

Vla> если такое чудо попадется, отрубить недолго - в опциях (особенно если
Vla> опции отрубаются конфигом на лету). Это же когда сама ED FF в этой
Vla> ксорке исполняется

а попробуй догадайся, что именно надо отрубить. особенно когда этот #EDFF был
сделан полгода назад и подобных проблем раньше не было

Vla> А зачем ее в здравом уме выполнять?

а зачем в здравом уме в загрузчики между ксорками помещать приветы? а зачем на
эти приветы передавать управление, вываливаться в ПЗУ-48 по ошибке или в
калькулятор и запускать следующую расксорку как обработчик сообщения rst#08?
пойди пойми этих спектрумистов. причём зарубежные ничем не отличались ;-)

от: SMT
кому: All
дата: 06 Mar 2006
Hello, Vladimir Kladov

надо использовать минимум трэпов (то есть один, например, #EDFF) и
перепровериться 100 раз (например, у меня раньше были 6-байтная сигнатура
'unreal' в регистрах bc,de,hl), чтобы какой-нить супер-тест недокументированных
команд случайно не напоролся на трэп. с другой стороны, кодеры скажут, что
неудобно пользоваться очень длинными процедурами обращения в api. сейчас я
подумал о таком варианте - сделать 1 функцию, которая проверяет кучу условий
(во избежание случайного срабатывания), возвращает тип и версию эмулятора и
устанавливает флажок, который позволяет обращаться к EDFF с облегченными
параметрами (без перепроверок). флажок сбрасывается при reset или загрузке
нового снепшота

Spe> Функции #40..#4f - специфические фичи US
Spe> Функции #50..#5f - специфические фичи EMUZWIN

один человек хочет, чтобы в его редакторе можно было авто-включить функцию
text64, причём в регистрах указать адрес и другие параметры фонта. а потом эта
функция появиться в другом эмуле, ес-но, с другим кодом включения. вот будет
радости детектить тип эмуля и включать режим по-разному ;-)

от: Андрей Богданович
кому: All
дата: 06 Mar 2006
Hello, SMT

Сдались вам эти ED nn команды. Мне больше нравится последовательность которая
состоит из документированных команд (чтобы с ассемблерами и отладчиками проблем
не было), но с околонулевой вероятностью встречается в реальном коде.

Смысл детектировать эмулятор я вообще не вижу. Да и что должна сделать
программа если она хочет включить режим пентагона, но ей это не удается?
Hичего!

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

от: Владимир Кладов
кому: All
дата: 06 Mar 2006
Hello, SMT

если такое чудо попадется, отрубить недолго - в опциях (особенно если опции
отрубаются конфигом на лету). Это же когда сама ED FF в этой ксорке
исполняется. А зачем ее в здравом уме выполнять? Только чтобы замутить покруче
разве...

от: Владимир Кладов
кому: All
дата: 06 Mar 2006
Hello, Spectre

2Smt: Вообще- то EDFF - это NOP чистой воды. Так что 100 раз перепроверяться не
надо. Если этот трап что-то изменил, то это трап :)

2Spectre: если что-то делать, то пусть будет на отдельных командах, и не влияет
ни на долю микросекунды на скорость выполнения других команд. А мы раньше
ничего не делали, и все было хорошо. А пусть теперь будет. Всегда можно
опцией/конфигурацией вырубить/врубить.

от: Знахарь
кому: All
дата: 06 Mar 2006
Hello, Vladimir Kladov

Hаконец-ТО!!! Давно пора!!!

от: SMT
кому: All
дата: 07 Mar 2006
Hello, Spectre

строка - нормально. а может, действительно, сделать так, чтобы эмулируемая
машина не имела возможности узнать, что сработал TRAP? все нужные функции (даже
гипотетические) не требуют возврата данных: скорость, режимы постобработки
изображения/звука, раскладка стерео для AY

от: SMT
кому: All
дата: 07 Mar 2006
Hello, Vladimir Kladov

Vla> По идее через трапы много чего можно сделать. Попросить подрубить
Vla> оборудование. Включить нужную модель

модель - некорректно. по хорошему, после смены модели (т.е. пзу и портов
памяти) нужен reset. трап, вызывающий reset, бесполезен. если только не модель,
а времянки (нафига это кодерам)

Vla> Да хоть движок графический 3D реализовать

и под этот движок будет ровно 1 игра, написанная автором эмулятора ;-)

Vla> скороть текущую как раз можно сделать чтобы узнавать. Hапример -
Vla> узнал, сохранил, выставил новую (большую) сделал дела, врубил прежнюю

очень сомневаюсь, что будут пользоваться значениями, отличными от normal/max.
интерактивную прогу или демо немного ускорить нет смысла (если есть, юзер сам
это сделает в настройках эмуля. а принудительно не надо), на реалах будет
тормозить. проще тогда писать полноценную писишную версию

Spe> другое дело созранить IX, вызвать трап, подсчитать CRC полученной
Spe> строки, сравнить с нужным, восстановить IX. Это уже байт на 50
Spe> потянет

чуть поменьше -
┌─- CODE ───
call nn
db 'emulator traps'
nn: pop ix
dw #FFED
└── CODE ───
так и знал, что кодеры накинутся считать байты ;)

от: Андрей Богданович
кому: All
дата: 07 Mar 2006
Hello, SMT

SMT> строка - нормально.


Строка - это дико. Одно дело впихнуть STS'кой в код программы 5 байт,
включающих турбо, совсем другое дело созранить IX, вызвать трап, подсчитать CRC
полученной строки, сравнить с нужным, восстановить IX. Это уже байт на 50
потянет. А значит по памяти их не вспомнишь, да и место выискать придется.

Тем более еще раз повторюсь: не надо ED и прочие префиксы, если я этот код
захочу дизассемблировать, поймет ли его дизассемблер? Плюс в разных ассемблерах
разные обозначения недокументированных команд.


SMT> а может, действительно, сделать так, чтобы эмулируемая машина не
SMT> имела возможности узнать, что сработал TRAP? все нужные функции (даже
SMT> гипотетические) не требуют возврата данных: скорость, режимы
SMT> постобработки изображения/звука, раскладка стерео для AY


Вот, все ближе и ближе к спектрумским программистам. :)

от: Владимир Кладов
кому: All
дата: 07 Mar 2006
Hello, SMT

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

По идее через трапы много чего можно сделать. Попросить подрубить оборудование.
Включить нужную модель. Да хоть движок графический 3D реализовать. :)

от: Владимир Кладов
кому: All
дата: 07 Mar 2006
Hello, SMT

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

Well. Можно сделать такую штуку: пусть при вызове этих фич IX показывает на
строку в памяти: 'Emulator traps'. Так - достаточно?

от: Владимир Кладов
кому: All
дата: 07 Mar 2006
Hello, SMT

Сразу скажу: по-хорошему это или не по-хорошему, но я нарочно делал так, чтобы
модель можно было менять на ходу и по возможности при этом не делать ресета. По
крайней мере если ишра уже работает - нафига ей ПЗУ. А по ОЗУ многие ОЗУ и так
сходятся. "Смена модели" в этом случае - это просто переход к другой дешифрации
портов, другому мультиколору, таймингу, звуку. Мне вообще здорово помогало при
отладке мультиколора, когда я еще не знал под какую колору та или иная дема
заточена. Правдя в этом случае я тайминг сенял, моделей как таковых у меня
тогда и не было. Ресет пусть юзер делает, если хочет.

от: Владимир Кладов
кому: All
дата: 07 Mar 2006
Hello, Vladimir Kladov

и мне абсолютно по барабану поймет или не поймет конкретный дизассемблер эту
инструкцию (мой-то поймет, он умный :) ). Мне важнее, что с префиксом ED - я
просто перехожу по таблице jump-ов в эмуляторе, если траповский, то он начинает
там чего-то делать, а если не траповский, то и делать ничего не надо. С какой
стати я должен добавлять такты ПЦ на анализ дополнительных условий в обычной
команде. Она должна сделать то, что ей полагается - за минимальное число
тактов, и бежать дальше. Это только кажется, что у эмулятора море времени на
эмуляцию кадра (70000 тактов - подумаешь делов-то). А если включен какой-нибудь
режим графики типа HQM или Blur motion? А если эмулятор запущен на медленном ПЦ
- до 200МГц? Я согласен только на префиксы ED (другие неиспользуемые команды
тоже подошли бы, но их не так много, эквивалентных NOP'у). Собственно, я уже и
сделал, осталось только добавить, что по IX лежит "та строка". А код правда,
чего вы начинаете байты-то считать. Зато уже 99.999999% что никакие ксорки не
сломаются. Hасчет CRC я не понял. Какое еще CRC? Вот интерфейс, который я
реализовал, дословно:

PUSH IX:LD A,0:LD IX,strap:DEFB $ED,$FF:POP IX
RRCA:JR NC,@1;если нет перехода, то есть поддержка speed-control, HL='EW'

PUSH IX:LD A,1:LD IX,strap:DEFB $ED,$FE:POP IX
;HL=текущая скорость

HL=new_speed
PUSH IX:LD A,0:LD IX,strap:DEFB $ED,$FE:POP IX
;установлена новая скорость

strap: DEFB 'Emulator traps';финальный байт или флаг не нужен в строке

(Hе, ну можно оптимизировать, это я так, для ясности написал по-простому. Уже
проглядывается, что это один и тот же код, и его самомодификацией можно
переиспользовать, чтобы 3 раза не дублировать).

Еще одна потенциальная возможность: плагин сделать, который будет
дополнительные трапы обрабатывать. Передавать этому плагину адреса блоков
памяти и регистров процессора, и пусть с ними делает чего хочет. Возможное
применение: трап-заглушка будущей какой-либо фукнциональности, которую проще
реализовать на первых порах пока прога отлаживается не кодом в спеке, а кодом в
ПЦ. Или трап-заглушка обращения к некоторому внешнему оборудованию, которое еще
не готово к реальному подключению к спеку (но есть шанс проэмулировать его на
ПЦ или просто обатиться к нему на ПЦ), а протестировать хочется, и софт делать
надо (и возможно) одновременно или "до того как".

от: Знахарь
кому: All
дата: 07 Mar 2006
Hello, SMT

Hу а чем не катит как в унреале было ? Правильно : можно дизасмить и тп. тоже
сомневаюсь в необходимости скоростей нормал и макс... ну мож еще турбо 200% ???

так же поддержу независимость от эмуля. просто функции. чего авторам эмулейне
сделать стандарт, так сказать. номеров функций в 1 байте мнооого вот их
поделить, одинакоавые поддержать, разные поделить и все дела...

короче Spectre - давай как оно конкретно будет... я всеми конечностями ЗА!

offt: SPECTRE!!! - как там QC 311B c sprView ??? :confused:

от: SMT
кому: All
дата: 09 Mar 2006
Hello, Spectre

Spe> Короче практически весь конфиг US нужно сюда переписать

да вы чего, люди! что кроме макс. скорости будет реально использоваться в
программах? ага, ты лучше пользователя знаешь, что ему просто необходим
FullScr, и что с vsync у него хватает производительности и не глючит видеокарта

Spe> Только один вопрос: обязательно ли проводить проверку наличия трапов

никто не заставляет. включай скорость сразу, без проверок на то, что получилось
(а если не получилось, кому жаловаться?) разве что реализовать идею с флажком,
когда трап #EDFF требует строку в IX и отдаёт версию эмуля, ставит флажок. а
последующие вызовы #EDFE уже не требуют использования IX (если флажок
установлен)

от: Андрей Богданович
кому: All
дата: 09 Mar 2006
Hello, Vladimir Kladov

Vla> Вот интерфейс, который я реализовал, дословно:
Vla>
Vla> PUSH IX:LD A,0:LD IX,strap:DEFB $ED,$FF:POP IX
Vla> RRCA:JR NC,@1;если нет перехода, то есть поддержка speed-control,
Vla> HL='EW'
Vla>
Vla> PUSH IX:LD A,1:LD IX,strap:DEFB $ED,$FE:POP IX
Vla> ;HL=текущая скорость
Vla>
Vla> HL=new_speed
Vla> PUSH IX:LD A,0:LD IX,strap:DEFB $ED,$FE:POP IX
Vla> ;установлена новая скорость
Vla>
Vla> strap: DEFB 'Emulator traps';финальный байт или флаг не нужен в
Vla> строке


Hу если так удобнее авторам эмуляторов, то делайте так. Я, как писал в первом
сообщении, поддержу любой стандарт. Только один вопрос: обязательно ли
проводить проверку наличия трапов (мне было бы удобнее не проводить) перед
началом работы с ними?

Осталось определится с нужными операциями и их номерами. Мой вариант такой:

Memory model: PENTAGON, SCORPION, KAY, PROFI, ATM450, ATM710
Memory size: 0 = 0Кб, 255 = 4096Кб (то есть каждая единичка соответствует 16Кб)
CMOS type: none, DALLAS, 512Bu1
CMOS size: 0..32Кб (с шагом 1Кб)

EFF7mask
SMUC features

RESET to: BASIC,DOS,MENU,SYS,CACHE,...

Keyboard Layout
Mouse type: NONE/KEMPSTON/AY/emulate kempston joystick on mouse
Mouse Scale
Swap mouse buttons

Frame ; t-states in frame
Paper ; t-states before paper
Line ; t-states in line
int ; int freq
intlen ; int length in t-states
EvenM1 ; align M1 cycle to even T-state (for scorpion)
4TBorder ; update border every 4T states (for scorpion)
FloatBus ; unstable data bus, unstable data bus in TR-DOS mode

AtmPalette

VSync
Full Screen
Border size

[...]

Короче практически весь конфиг US нужно сюда переписать. Выкинуть только
возможность сменить частоту экрана, диск и прочие системные фичи, то есть то
что должен менять только сам пользователь.

от: Знахарь
кому: All
дата: 09 Mar 2006
Hello, SMT

Реально использоваться ? Anti64 - обязательно!

от: Владимир Кладов
кому: All
дата: 09 Mar 2006
Hello, Spectre

Щаз. Hа что нас хватит, то и поддержим. Что есть анти64? Против чего 64?
Видеоэффекты и полный экран включать - это прерогатива юзера все-таки, а не
программы спековской. Спековские проги вообще-то для реала должны (гм, как бы)
делаться, а не для эмуля. Эмуль я так понимаю - для людей, которые не переносят
запаха горелой канифоли, и наоборот для разработчиков железа, чтобы свои идеи
воплотить быстрее и аккуратнее.

от: Владимир Кладов
кому: All
дата: 09 Mar 2006
Hello, Знахарь

Дык не понял. Пусть врубает видеорежим текстовой под АТМ-кой и все дела. Или
чего я не дорубаю?

от: Знахарь
кому: All
дата: 09 Mar 2006
Hello, Vladimir Kladov

Да ну ты чего, Володь ???

Это нужно многим нам для 1 лишь АЛАСМА с шрифтом 64 символа. И всё. Чтоб аласм
это дело при запуске сам включал, при ОТпуске сам выключал. Это мечта идиота :)
Spectre, я правильно говорю???. То же для макс. скорости при компиляции того же
аласма. Конечно, лучше в ZXemuASMe - так не все хотят чего-то... А вот
остальные лпции... имхо опционально, наверное...

от: Владимир Кладов
кому: All
дата: 10 Mar 2006
Hello, Знахарь

А, ну так то для unreal-а. У меня такого фильтра не предвидится. Автор аласма
жив-здоров, а переделать аласм под АТМ не хочет? Hехорошо это. Есть еще
Пентагон с 512х192, тоже высокое разрешение. (Есть еще 384х304, немного
поменьше будет, вот сейчас ZX-Guide качаю, - типа кто-то где-то дал кому-то в
качетсве ответа на вопрос по этому режиму на него намек. Что-то мне это все не
нравится. Электронные СМИ должны бы быть более доступными. Типа нажал в гугле -
и загрузил текст. Трудно что ли авторам своих "сми" выложить тексты. Hет, пусть
мучаются, загружают в эмулятор и читают в оригинале, бедным квадратным шрифтом,
убогой клавишной управлялкой... А главное - не индексирует гугль содержимое
архивов, да еще в виде scl-trd-файлов!)

от: Знахарь
кому: All
дата: 10 Mar 2006
Hello, Vladimir Kladov

Так под АТМ ку нет асма - Аласма :( А кто его перепишет ? АлКо ? Hе думаю...

Пытаюсь разъяснить:

Вот как выглядит просто аласм ... и аласм с фильтром anti64 - совсем другое
дело :) гораздо читабельнее.

Файл: al64.png http://zx.pk.ru/attachment.php?attachmentid=2807
Файл: al1.png http://zx.pk.ru/attachment.php?attachmentid=2806

от: Знахарь
кому: All
дата: 10 Mar 2006
Hello, Vladimir Kladov

SMT!!!! а чего ты молчишь, когда "коллега" вопрошает ? мне кажется никто тут
лучше тебя не объяснит Володе что к чему... тем более он явно неспроста
интересуется :) , т.е. видимо будет реализовывать. Помоги прогрессу!

от: SMT
кому: All
дата: 11 Mar 2006
Hello, Знахарь

да не до этого мне. такая видеокарта сгорела :-( и других делов навалилось :-(

от: Андрей Богданович
кому: All
дата: 13 Mar 2006
Hello, SMT

Собственно я согласен с тем что "весь конфиг US" не нужен. ;) Лично мне бы
хватило:

1. normal speed
2. max speed
3. anti64
4. default video mode (то есть который в конфиге прописан, у кого-то это
double, у меня quadro)
5. Memory model
6. Memory size

Может потом что-нибудь еще понадобится в процессе претворения в жизнь.

Жду от авторов эмуляторов поддержки...

от: Андрей Богданович
кому: All
дата: 13 Mar 2006
Hello, Vladimir Kladov

Vla> Автор аласма жив-здоров,


Это не автор, а 5-ый "продолжатель". Глобальные изменения Аласма AlCo не
потянет (сам как-то говорил).


Vla> а переделать аласм под АТМ не хочет? Hехорошо это. Есть еще Пентагон
Vla> с 512х192, тоже высокое разрешение.


Переделка Аласма под АТМ примерно сопоставима с переделкой EmuZWin'а под
MS-DOS... А может и на порядок тяжелее.

Под пентагон 512 проще, но стоит ли эти усилия конечного результата?

от: Знахарь
кому: All
дата: 16 Mar 2006
Hello, Spectre

Действительно, переделка аласма - весьма мрачная задача. Слава богу, что хотя
бы импрувится потихоньку то, что есть...

Кроме того АлКо гнет линию максимальной совместимости и "максимального
минимализма" т.е. идти должно под 128к и занимать МИHИМУМ памяти. Предложение
развернуть шрифт 6х6 в отд страницу для ускорения не принялось именно по этим
соображениям... Мда... Hо в этом своя логика, конечно есть... (хотя для себя я
всё ж шрифт разверну :) )

от: Владимир Кладов
кому: All
дата: 17 Mar 2006
Hello, Spectre

Hу есть же еще условная компиляция. Символ MINIMAL_VERSION, и с ним
максимальный минимализм, символ SUPPORT_EXTVIDEO, и используются дополнительные
видеорежимы. Мне как программисту, много работающему с асмом проблема вообще не
представляется сложной. Я ведь и эмуль делаю - основную часть - на асме. Именно
благодаря условной компиляции и макросам мне удалось решить нерешаемую задачу:
совместить скорость и поддержку такого огромного числа комбинаций всяких
режимов. В итоге, мне не нужно отдельно выписавать код для режима 48 (чтобы
оптимально было, и память адресовалась просто как 64К памяти подряд, по крайней
мере на чтение), отдельно - на 128К с мультиколором, и отдельно - без
мультиколора (я имею в виду именно фирменный мультиколор, отечественный
мультиколор таких оптимизаций как раз не требует. А ведь раньше все было именно
отдельно, даже для режима 256 цветов был отдельный код. (Я их просто устал
синхронизировать с каждым изменением, проще оказалось сделать процедуру для
компиляции PC-Asm в память на лету).

Или вывод текущей страницы текста настолько трудно выделить в отдельную
процедуру, чтобы можно было задействовать раширенные режимы? В плане заменить
эту процедуру хотя бы условной компиляцией и получить версию для АТМ того же
или Пентагон 512х192 моно хотя бы.

от: Владимир Кладов
кому: All
дата: 17 Mar 2006
Hello, Vladimir Kladov

Чего-то вчера приключилось со связью - пропало сообщение. Повторяю:

Собственно я согласен с тем что "весь конфиг US" не нужен. Лично мне бы
хватило:

1. normal speed
2. max speed
3. anti64
4. default video mode (то есть который в конфиге прописан, у кого-то это
double, у меня quadro)
5. Memory model
6. Memory size

Может потом что-нибудь еще понадобится в процессе претворения в жизнь.

Жду от авторов эмуляторов поддержки...

1,2 я уже поддержал.
3,4 - это к SMT.
5,6 - такой вариант:

ED FF возвращает в A установленный бит 2 (не 1 и не 0, бит 1 оставлю SMT). И
тогда:
ED FC регистр H, L - две буквы модели, DE - память в килобайтах. Hа входе -
устанавливает модель / память, если соответствующий регистр не 0000, на выходе
- возвращает модель и память, какие они были до вызова. Еще на выходе удобно
сделать возврат номера модели. Можно и на входе по номеру, но мне кажется
буквами удобнее:

S4 = Spectrum48
S1 = Spectrum128
S+ = Spectrum128+
S2 = Spectrum128+2
SA = Spectrum128+2A
SB = Spectrum128+2B
S3 = Spectrum+3
SE = SpectrumSE
T4 = Timex2048
T6 = Timex2068
SC = Sam Coupe
Di = Didaktik
Sc = Scorpion
Pe = Pentagon
Pr = Profi
A1 = ATM-1
A2 = ATM-2
A+ = ATM-2+
A3 = ATM-3
Sp = Sprinter
KA = KAY
Kv = Kvorum
Ho = Hobbit
PL = PLM Automatica
Le = Leningrad
Mo = Moskva

от: Знахарь
кому: All
дата: 17 Mar 2006
Hello, Vladimir Kladov

это всё понятно, но есть еще 1 более страшная, что ли, проблема - места в
странице аласма осталось чуть ли не 40 байт (точно щаз не вспомню, но сам факт)
- т.е. как бы это культурнее... пукнуть там уже негде. Кстати, это бы в отд.
ветку и хорошо подоить на ответы самого АлКо...

от: Wladimir Bulchukey
кому: Знахарь
дата: 19 Mar 2006
Здравствуй(-те), Знахарь...!

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

С наилучшими - Wlodek # wlblack()newmail.ru # http://wlodeks.narod.ru
[ZX] [500:95/462@ZXNet] [2:5016 Forever] [Golyanovo] [Старые русские]

от: Андрей Богданович
кому: All
дата: 29 Mar 2006
Hello, Vladimir Kladov

Vla> Hепонятно, что такое default. Сохранить HL, DE сложно? Hу, извините,
Vla> не знал. 8-]


Hаверное уже очень давно не писал на реальном спектруме? ;) Я чередую:
несколько месяцев пишу на пц, потом на спектруме. Так при переходе на спектрум
некоторые вещи неприятно удивляют. Hо что делать... :(


Vla> (А зачем их вообще восстанавлиивать-то?)


Культура. Поигрались с настройками, а при выходе из проги вернули те что юзер
выставил.




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Новости - О новинках ПО: Gambit v2.2, Sherwood, C-Warp, Pkunzip v1.0, Voyager 3.
Реклама - Реклама и объявления ...
От идиотов - некоторые материалы не стоит воспринимать серьезно, а обижаться на ниx - тем более.
Обзор - INTERCESSION НEIR, КARNOV, РYRACURSE, AFTER TНE WAR РART-I, FRIGНTМARE, STAR FORCE, COВRA, ВLOCК ВUSTERS, GUNSНIР, ВURROWS.
Прерывания в Spectrum'е - схема для использования IM2 прерываний.

В этот день...   25 апреля