Просмотр полной версии : Как отключать турбо режимы на разных спеках?
Evgeny Muchkin
25.04.2007, 09:50
Возникла необходимость в программном выключении турбо режима. Но я знаю как это делается только на Скорпионах:
ld bc,#1ffd
in a,(c)
А как это делать на других клонах, обладающих режимом турбо?
Интересуют в первую очередь Pentagon 1024 SL, просто пентагон с какими-то более-менее стандартными турбированиями, ATM и другие.
Заранее огромное спасибо!
пент1024:
ld a,%00010000 ;bit 4 - отключение режима TURBO. При bit 4 = 0 TURBO включено, при bit 4 = 1 TURBO отключено.
ld bc,#eff7
out (c),a
на кае ещё можно програмно включить/выключить трубу, но я счаз далеко от дома, и посмотреть в мануале не могу. как приеду (на след. неделе) отпишу.
пентагон с какими-то более-менее стандартными турбированиями
вообще на всех турбированных пентагонах которые мне довелось видеть в гродно и минске турба включалась только тумблером :)
так что код для программного выключения мог бы выглядеть так:
loop call CheckTurbo
and a
jz ZisIzKewl
ld hl,Text
call PrintBuf
dup 8
halt
edup
jz loop
ZisIzKewl ....
Text db "Please turn off turbo",0
Дока по программированию Атм Турбо:
http://atmturbo.nedopc.com/inf/books/nedopc/atm_hard.zip
Максагор
25.04.2007, 15:24
В АТМ-2+ за турбу отвечает бит D3(1=включение турбы) порта #xx77. Порт может быть в двух состояниях - открытом и теневом.
В открытом состоянии:
LD BC,#4177 ;или #FF77, если надо сразу и порт спрятать
LD A,%10101xxx ;три младших бита определяют номер экрана
OUT (C),A
В теневом состоянии:
LD BC,metka
PUSH BC
LD BC,#2A53
PUSH BC
LD BC,#FF77 ;или #4177, если надо открыть порт
LD A,%10101xxx
JP #3D2F
metka .....
Evgeny Muchkin
25.04.2007, 15:36
Всем большое спасибо! Но все же очень надеюсь и на дополнения про других клонов ;)
Теперь "почти универсальная" отключалка турбы у нас такая:
TUROFF DI
LD BC,#1FFD; Scorpion
IN A,(C)
LD A,%00010000; Pentagon 1024 SL
LD BC,#EFF7
OUT (C),A
LD BC,#2A53; ATM Turbo
PUSH BC
LD BC,#FF77
LD A,%10101011
JP #3D2F
falanger
30.04.2007, 23:47
А зачем Турбу отключатьтам где она есть и реализованна "корректно"?
Возникла необходимость в программном выключении турбо режима. Но я знаю как это делается только на Скорпионах:
ld bc,#1ffd
in a,(c)
Ни в коем случае! :)
Надо так:
RST 8
DEFB #88
Это работает с версии теневого монитора 2.4d.
Evgeny Muchkin
02.05.2007, 16:31
Ни в коем случае!
Объясни почему?
Способ RST 8 \ DB #88 даёт сразу несколько плюсов.
Если подключить вместо бейсиковского обработчика ошибок свой, то "автоматически" определим, что компьютер, например, не Scorpion.
Если же Scorpion, то флаг CY укажет есть ли у него турборежим в принципе.
Ну и, наконец, так "по науке": ни в одном руководстве, написанном разработчиками Scorpion'а, не сказано, что можно переключать турборежим чтением из портов. ;)
Способ RST 8 \ DB #88 даёт сразу несколько плюсов.
Они же минусы.
Если подключить вместо бейсиковского обработчика ошибок свой, то "автоматически" определим, что компьютер, например, не Scorpion.
1. Городить целый обработчик ошибок ради одной-единственной операции.
2. Если твою программу однажды скачает счастливый импортный владелец Интерфейса-1, PlusD, DivIDE, или еще чего-нибудь в этом духе, то он очень обидится.
Если же Scorpion, то флаг CY укажет есть ли у него турборежим в принципе.
А нам оно в данном случае надо?
Ну и, наконец, так "по науке": ни в одном руководстве, написанном разработчиками Scorpion'а, не сказано, что можно переключать турборежим чтением из портов. ;)
Возможно разработчики скорпиона думали, что смогут это изменить. Они это так и не изменили. Теперь разработчиков скорпиона нет, и можно считать это устоявшимся стандартом для Скорпов.
А RST #08 по-хорошему стоит использовать только тогда, когда абсолютно точно знаешь, с чем имеешь дело (с какой системой в смысле), ибо их тонны.
Evgeny Muchkin
09.05.2007, 00:26
Sonic, РЕСПЕКТ! :)
2. Если твою программу однажды скачает счастливый импортный владелец Интерфейса-1, PlusD, DivIDE, или еще чего-нибудь в этом духе, то он очень обидится.Не очень: коды системных функций Скорпиона отличаются от кодов ошибок ZX Interface One. Разработчики Скорпиона этот вопрос продумали.
Теперь разработчиков скорпиона нет, и можно считать это устоявшимся стандартом для Скорпов.Только другой инструкции они нам напоследок не написали. Значит действует существующая. Если это призыв игнорировать официальное руководство по эксплуатации, - то НЕреспект, Sonic!
коды системных функций Скорпиона отличаются от кодов ошибок ZX Interface One. Разработчики Скорпиона этот вопрос продумали.
А что насчет Opus Discovery, Plus D, DivIDE, ZX +3?
AlexCrush
14.05.2007, 11:31
[
Только другой инструкции они нам напоследок не написали. Значит действует существующая. Если это призыв игнорировать официальное руководство по эксплуатации, - то НЕреспект, Sonic!
У меня в инструкции к Magic5 написано, "для загрузки программы набрать LOAD "" <ENTER>". Тоже следовать? А ведь дисковод приделан...
Или в руководстве по TR-DOS - "для уплотнения диска после удаления файлов - MOVE". А мне может коммандеры всякие больше нравятся, да и работают они шустрей...
Если 100% известно, что RST 8 для выключения турбы ничего более умного чем чтение из #1FFD не делает, но при этом пакостит в системные переменные, стек, а на других компах (не скорпион) - ваще не известно как себя ведет - зачем усложнять?
Кстати интересно, по поводу RST #08 на Скорпионе, а как оно работает? Там пропатченный бейсик-48 или аппаратная ловушка подменяет ПЗУ при переходе на #0008 ?
А что насчет Opus Discovery, Plus D, DivIDE, ZX +3?К сожалению, по остальным интерфейсам информации у меня нет, но думаю, что она была у главного разработчика теневого монитора Скорпиона - MOA.
По DivIDE у него информации точно не было ибо не было самого девайса.
По остальным - можно сравнить если есть желание, вся документация на WOS в открытом виде лежит. Хотя у меня нет желания ибо времени нет все это штудировать.
Кстати интересно, по поводу RST #08 на Скорпионе, а как оно работает?
Если 100% известно, что RST 8 для выключения турбы ничего более умного чем чтение из #1FFD не делает, но при этом пакостит в системные переменные, стек, а на других компах (не скорпион) - ваще не известно как себя ведет - зачем усложнять?Конечно, было бы наверное лучше, если, при передачи управления на адрес 8 в области ПЗУ, подключалась бы страница монитора, а код в остальных страницах ПЗУ был бы стандартным. Тогда можно было бы одним переключателем превращать Скорпион в обычный Spectrum-совместимый компьютер и проверять работу программ ещё и в этом режиме. Но на деле обработка RST 8 начинается с того ПЗУ, которое подключено в данный момент, и лишь потом подключается страница теневого монитора.
Команда RST 8 \ DB #88, помимо тех особенностей, которые я описал выше, имеет ещё одну: она правильно выставляет специальный флаг внутри теневого монитора, при входе в который, мы и увидим, например, правильное отображение опции V. Computer speed Normal.
На обычном Spectrum-совместимом компьютере произойдет вызов системного обработчика ошибок, который легко перехватить парой команд, - любой настоящий системный кодер в состоянии это сделать. В своих дисковых адаптациях некоторых игр, ныне распространяемых в internet'е, я не раз пользовался этим приёмом.
У меня в инструкции к Magic5 написано, "для загрузки программы набрать LOAD "" <ENTER>". Тоже следовать? А ведь дисковод приделан...
Или в руководстве по TR-DOS - "для уплотнения диска после удаления файлов - MOVE". А мне может коммандеры всякие больше нравятся, да и работают они шустрей...Взрослый человек должен уметь читать и понимать инструкцию.
"LOAD "" <ENTER>" - это для работы с магнитофоном в системе ZX Spectrum.
"для уплотнения диска после удаления файлов - MOVE" - это работа с дисководом командами в системе TR-DOS.
Если хочется работать с командером - читай инструкцию на него (если, конечно, ее потрудился написать автор этого самого командера).
:->
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot