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


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



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

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

от: Андрей Богданович
кому: 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

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

от: Знахарь
кому: All
дата: 06 Mar 2006
Hello, Vladimir Kladov Hаконец-ТО!!! Давно пора!!!

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

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

от: 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, причём в регистрах указать адрес и другие параметры фонта. а потом эта функция появиться в другом эмуле, ес-но, с другим кодом включения. вот будет радости детектить тип эмуля и включать режим по-разному ;-)

от: 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 Vla> Вообще- то EDFF - это NOP чистой воды. Так что 100 раз Vla> перепроверяться не надо. Если этот трап что-то изменил, то это трап надо. этот #EDFF может быть среди мусора внутри ксорки. если влияет на регистры, не расксорится же

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

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

от: 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> (А зачем их вообще восстанавлиивать-то?) Культура. Поигрались с настройками, а при выходе из проги вернули те что юзер выставил.




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

Похожие статьи:
Железо - о констуркция различных клонов ZX Spectrum.
Обратная связь - контакты редакции.
Warыыыz - Переписка со Spectre.
Cкажи дядям "До свидания" - в связи с техническими вoпpoсaми, былo pешенo в 4й paз пеpеписaть oбoлoчку IMPULSЕ...
Знание-сила - доработка C-DOS модема.

В этот день...   8 мая