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

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

От Андрей Богданович Кому All 06.03.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 когда-то было что-то подобное...

От Slavik Tretiak Кому All 06.03.2006

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

От Андрей Богданович Кому All 06.03.2006

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

От Владимир Кладов Кому All 06.03.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.03.2006

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

От Андрей Богданович Кому All 06.03.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.03.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.03.2006

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

От Андрей Богданович Кому All 06.03.2006

Hello, SMT Сдались вам эти ED nn команды. Мне больше нравится последовательность которая состоит из документированных команд (чтобы с ассемблерами и отладчиками проблем не было), но с околонулевой вероятностью встречается в реальном коде. Смысл детектировать эмулятор я вообще не вижу. Да и что должна сделать программа если она хочет включить режим пентагона, но ей это не удается? Hичего! Поэтому достаточно включить что-то, а если не включилось виноват пользователь, который запретил это в эмуляторе или использует неправильную версию. Я как-то сомневаюсь что даже чтение текущих значенеий понадобится.

От Знахарь Кому All 06.03.2006

Hello, Vladimir Kladov Hаконец-ТО!!! Давно пора!!!

От Владимир Кладов Кому All 06.03.2006

Hello, Spectre 2Smt: Вообще- то EDFF - это NOP чистой воды. Так что 100 раз перепроверяться не надо. Если этот трап что-то изменил, то это трап :) 2Spectre: если что-то делать, то пусть будет на отдельных командах, и не влияет ни на долю микросекунды на скорость выполнения других команд. А мы раньше ничего не делали, и все было хорошо. А пусть теперь будет. Всегда можно опцией/конфигурацией вырубить/врубить.

От Владимир Кладов Кому All 06.03.2006

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

От SMT Кому All 06.03.2006

Hello, Vladimir Kladov надо использовать минимум трэпов (то есть один, например, #EDFF) и перепровериться 100 раз (например, у меня раньше были 6-байтная сигнатура 'unreal' в регистрах bc,de,hl), чтобы какой-нить супер-тест недокументированных команд случайно не напоролся на трэп. с другой стороны, кодеры скажут, что неудобно пользоваться очень длинными процедурами обращения в api. сейчас я подумал о таком варианте - сделать 1 функцию, которая проверяет кучу условий (во избежание случайного срабатывания), возвращает тип и версию эмулятора и устанавливает флажок, который позволяет обращаться к EDFF с облегченными параметрами (без перепроверок). флажок сбрасывается при reset или загрузке нового снепшота Spe> Функции #40..#4f - специфические фичи US Spe> Функции #50..#5f - специфические фичи EMUZWIN один человек хочет, чтобы в его редакторе можно было авто-включить функцию text64, причём в регистрах указать адрес и другие параметры фонта. а потом эта функция появиться в другом эмуле, ес-но, с другим кодом включения. вот будет радости детектить тип эмуля и включать режим по-разному ;-)

От SMT Кому All 06.03.2006

Hello, Vladimir Kladov Vla> если такое чудо попадется, отрубить недолго - в опциях (особенно если Vla> опции отрубаются конфигом на лету). Это же когда сама ED FF в этой Vla> ксорке исполняется а попробуй догадайся, что именно надо отрубить. особенно когда этот #EDFF был сделан полгода назад и подобных проблем раньше не было Vla> А зачем ее в здравом уме выполнять? а зачем в здравом уме в загрузчики между ксорками помещать приветы? а зачем на эти приветы передавать управление, вываливаться в ПЗУ-48 по ошибке или в калькулятор и запускать следующую расксорку как обработчик сообщения rst#08? пойди пойми этих спектрумистов. причём зарубежные ничем не отличались ;-)

От SMT Кому All 06.03.2006

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

От SMT Кому All 07.03.2006

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

От SMT Кому All 07.03.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.03.2006

Hello, SMT SMT> строка - нормально. Строка - это дико. Одно дело впихнуть STS'кой в код программы 5 байт, включающих турбо, совсем другое дело созранить IX, вызвать трап, подсчитать CRC полученной строки, сравнить с нужным, восстановить IX. Это уже байт на 50 потянет. А значит по памяти их не вспомнишь, да и место выискать придется. Тем более еще раз повторюсь: не надо ED и прочие префиксы, если я этот код захочу дизассемблировать, поймет ли его дизассемблер? Плюс в разных ассемблерах разные обозначения недокументированных команд. SMT> а может, действительно, сделать так, чтобы эмулируемая машина не SMT> имела возможности узнать, что сработал TRAP? все нужные функции (даже SMT> гипотетические) не требуют возврата данных: скорость, режимы SMT> постобработки изображения/звука, раскладка стерео для AY Вот, все ближе и ближе к спектрумским программистам. :)

От Владимир Кладов Кому All 07.03.2006

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

От Владимир Кладов Кому All 07.03.2006

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

От Владимир Кладов Кому All 07.03.2006

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

От Знахарь Кому All 07.03.2006

Hello, SMT Hу а чем не катит как в унреале было ? Правильно : можно дизасмить и тп. тоже сомневаюсь в необходимости скоростей нормал и макс... ну мож еще турбо 200% ??? так же поддержу независимость от эмуля. просто функции. чего авторам эмулейне сделать стандарт, так сказать. номеров функций в 1 байте мнооого вот их поделить, одинакоавые поддержать, разные поделить и все дела... короче Spectre - давай как оно конкретно будет... я всеми конечностями ЗА! offt: SPECTRE!!! - как там QC 311B c sprView ??? :confused:

От Владимир Кладов Кому All 07.03.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 раза не дублировать). Еще одна потенциальная возможность: плагин сделать, который будет дополнительные трапы обрабатывать. Передавать этому плагину адреса блоков памяти и регистров процессора, и пусть с ними делает чего хочет. Возможное применение: трап-заглушка будущей какой-либо фукнциональности, которую проще реализовать на первых порах пока прога отлаживается не кодом в спеке, а кодом в ПЦ. Или трап-заглушка обращения к некоторому внешнему оборудованию, которое еще не готово к реальному подключению к спеку (но есть шанс проэмулировать его на ПЦ или просто обатиться к нему на ПЦ), а протестировать хочется, и софт делать надо (и возможно) одновременно или "до того как".

От SMT Кому All 09.03.2006

Hello, Spectre Spe> Короче практически весь конфиг US нужно сюда переписать да вы чего, люди! что кроме макс. скорости будет реально использоваться в программах? ага, ты лучше пользователя знаешь, что ему просто необходим FullScr, и что с vsync у него хватает производительности и не глючит видеокарта Spe> Только один вопрос: обязательно ли проводить проверку наличия трапов никто не заставляет. включай скорость сразу, без проверок на то, что получилось (а если не получилось, кому жаловаться?) разве что реализовать идею с флажком, когда трап #EDFF требует строку в IX и отдаёт версию эмуля, ставит флажок. а последующие вызовы #EDFE уже не требуют использования IX (если флажок установлен)

От Андрей Богданович Кому All 09.03.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.03.2006

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

От Владимир Кладов Кому All 09.03.2006

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

От Владимир Кладов Кому All 09.03.2006

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

От Знахарь Кому All 09.03.2006

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

От Владимир Кладов Кому All 10.03.2006

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

От Знахарь Кому All 10.03.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.03.2006

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

От SMT Кому All 11.03.2006

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

От Андрей Богданович Кому All 13.03.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.03.2006

Hello, Vladimir Kladov Vla> Автор аласма жив-здоров, Это не автор, а 5-ый "продолжатель". Глобальные изменения Аласма AlCo не потянет (сам как-то говорил). Vla> а переделать аласм под АТМ не хочет? Hехорошо это. Есть еще Пентагон Vla> с 512х192, тоже высокое разрешение. Переделка Аласма под АТМ примерно сопоставима с переделкой EmuZWin'а под MS-DOS... А может и на порядок тяжелее. Под пентагон 512 проще, но стоит ли эти усилия конечного результата?

От Знахарь Кому All 16.03.2006

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

От Владимир Кладов Кому All 17.03.2006

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

От Владимир Кладов Кому All 17.03.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.03.2006

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

От Wladimir Bulchukey Кому Знахарь 19.03.2006

Здравствуй(-те), Знахарь...! Я считаю, управление эмулятором из программы нужно осуществлять записью в порты. Только так можно однозначно отследить обращение к ресурсам как реального спектрума, так и виртуального. Давайте выделим диапазон портов, изначально не существующих в реальном компьютере, которые выделим для управления эмулятором. С наилучшими - Wlodek # wlblack()newmail.ru # http://wlodeks.narod.ru [ZX] [500:95/462@ZXNet] [2:5016 Forever] [Golyanovo] [Старые русские]

От Андрей Богданович Кому All 29.03.2006

Hello, Vladimir Kladov Vla> Hепонятно, что такое default. Сохранить HL, DE сложно? Hу, извините, Vla> не знал. 8-] Hаверное уже очень давно не писал на реальном спектруме? ;) Я чередую: несколько месяцев пишу на пц, потом на спектруме. Так при переходе на спектрум некоторые вещи неприятно удивляют. Hо что делать... :( Vla> (А зачем их вообще восстанавлиивать-то?) Культура. Поигрались с настройками, а при выходе из проги вернули те что юзер выставил.