PDA

Просмотр полной версии : Как отключать турбо режимы на разных спеках?



Evgeny Muchkin
25.04.2007, 08:50
Возникла необходимость в программном выключении турбо режима. Но я знаю как это делается только на Скорпионах:

ld bc,#1ffd
in a,(c)

А как это делать на других клонах, обладающих режимом турбо?
Интересуют в первую очередь Pentagon 1024 SL, просто пентагон с какими-то более-менее стандартными турбированиями, ATM и другие.

Заранее огромное спасибо!

skyther
25.04.2007, 09:50
пент1024:
ld a,%00010000 ;bit 4 - отключение режима TURBO. При bit 4 = 0 TURBO включено, при bit 4 = 1 TURBO отключено.
ld bc,#eff7
out (c),a

Sinus
25.04.2007, 10:16
на кае ещё можно програмно включить/выключить трубу, но я счаз далеко от дома, и посмотреть в мануале не могу. как приеду (на след. неделе) отпишу.


пентагон с какими-то более-менее стандартными турбированиями
вообще на всех турбированных пентагонах которые мне довелось видеть в гродно и минске турба включалась только тумблером :)
так что код для программного выключения мог бы выглядеть так:




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

CHRV
25.04.2007, 13:27
Дока по программированию Атм Турбо:
http://atmturbo.nedopc.com/inf/books/nedopc/atm_hard.zip

Максагор
25.04.2007, 14: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, 14: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, 22:47
А зачем Турбу отключатьтам где она есть и реализованна "корректно"?

Grand
01.05.2007, 03:44
Возникла необходимость в программном выключении турбо режима. Но я знаю как это делается только на Скорпионах:

ld bc,#1ffd
in a,(c)

Ни в коем случае! :)
Надо так:

RST 8
DEFB #88
Это работает с версии теневого монитора 2.4d.

Evgeny Muchkin
02.05.2007, 15:31
Ни в коем случае!
Объясни почему?

Grand
04.05.2007, 02:22
Способ RST 8 \ DB #88 даёт сразу несколько плюсов.
Если подключить вместо бейсиковского обработчика ошибок свой, то "автоматически" определим, что компьютер, например, не Scorpion.
Если же Scorpion, то флаг CY укажет есть ли у него турборежим в принципе.
Ну и, наконец, так "по науке": ни в одном руководстве, написанном разработчиками Scorpion'а, не сказано, что можно переключать турборежим чтением из портов. ;)

Sonic
08.05.2007, 10:29
Способ RST 8 \ DB #88 даёт сразу несколько плюсов.

Они же минусы.


Если подключить вместо бейсиковского обработчика ошибок свой, то "автоматически" определим, что компьютер, например, не Scorpion.

1. Городить целый обработчик ошибок ради одной-единственной операции.
2. Если твою программу однажды скачает счастливый импортный владелец Интерфейса-1, PlusD, DivIDE, или еще чего-нибудь в этом духе, то он очень обидится.


Если же Scorpion, то флаг CY укажет есть ли у него турборежим в принципе.

А нам оно в данном случае надо?


Ну и, наконец, так "по науке": ни в одном руководстве, написанном разработчиками Scorpion'а, не сказано, что можно переключать турборежим чтением из портов. ;)
Возможно разработчики скорпиона думали, что смогут это изменить. Они это так и не изменили. Теперь разработчиков скорпиона нет, и можно считать это устоявшимся стандартом для Скорпов.
А RST #08 по-хорошему стоит использовать только тогда, когда абсолютно точно знаешь, с чем имеешь дело (с какой системой в смысле), ибо их тонны.

Evgeny Muchkin
08.05.2007, 23:26
Sonic, РЕСПЕКТ! :)

Grand
11.05.2007, 02:37
2. Если твою программу однажды скачает счастливый импортный владелец Интерфейса-1, PlusD, DivIDE, или еще чего-нибудь в этом духе, то он очень обидится.Не очень: коды системных функций Скорпиона отличаются от кодов ошибок ZX Interface One. Разработчики Скорпиона этот вопрос продумали.


Теперь разработчиков скорпиона нет, и можно считать это устоявшимся стандартом для Скорпов.Только другой инструкции они нам напоследок не написали. Значит действует существующая. Если это призыв игнорировать официальное руководство по эксплуатации, - то НЕреспект, Sonic!

Sonic
11.05.2007, 11:51
коды системных функций Скорпиона отличаются от кодов ошибок ZX Interface One. Разработчики Скорпиона этот вопрос продумали.

А что насчет Opus Discovery, Plus D, DivIDE, ZX +3?

AlexCrush
14.05.2007, 10:31
[
Только другой инструкции они нам напоследок не написали. Значит действует существующая. Если это призыв игнорировать официальное руководство по эксплуатации, - то НЕреспект, Sonic!

У меня в инструкции к Magic5 написано, "для загрузки программы набрать LOAD "" <ENTER>". Тоже следовать? А ведь дисковод приделан...
Или в руководстве по TR-DOS - "для уплотнения диска после удаления файлов - MOVE". А мне может коммандеры всякие больше нравятся, да и работают они шустрей...

Если 100% известно, что RST 8 для выключения турбы ничего более умного чем чтение из #1FFD не делает, но при этом пакостит в системные переменные, стек, а на других компах (не скорпион) - ваще не известно как себя ведет - зачем усложнять?

Sonic
14.05.2007, 15:05
Кстати интересно, по поводу RST #08 на Скорпионе, а как оно работает? Там пропатченный бейсик-48 или аппаратная ловушка подменяет ПЗУ при переходе на #0008 ?

Sinus
14.05.2007, 16:42
изменённое пзу.

Grand
18.05.2007, 02:36
А что насчет Opus Discovery, Plus D, DivIDE, ZX +3?К сожалению, по остальным интерфейсам информации у меня нет, но думаю, что она была у главного разработчика теневого монитора Скорпиона - MOA.

Sonic
18.05.2007, 09:04
По DivIDE у него информации точно не было ибо не было самого девайса.
По остальным - можно сравнить если есть желание, вся документация на WOS в открытом виде лежит. Хотя у меня нет желания ибо времени нет все это штудировать.

Grand
20.05.2007, 02:28
Кстати интересно, по поводу 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.
Если хочется работать с командером - читай инструкцию на него (если, конечно, ее потрудился написать автор этого самого командера).
:->