PDA

Просмотр полной версии : Вопрос: неполная адресация



Yprit
27.05.2020, 19:47
Изучая возможности ZX Evo, обнаружил порты, записанные как #xx77 (например). Попробовал поменять с их помощью через Бейсик частоту процессора и видеорежим - не вышло (при этом с "полными" портами все работает). Пробовал и в эмуляторе, и на реале. Что я делаю не так, и как тогда правильно? Возможно ли вообще это делать через Бейсик?

goodboy
27.05.2020, 19:56
Что я делаю не так, и как тогда правильно?
а в какой порт ты пишешь на бейсике ?

Yprit
27.05.2020, 22:04
а в какой порт ты пишешь на бейсике ?

119, если в десятичной.

goodboy
27.05.2020, 22:17
ну в принципе правильно, именно в бейсике число пишется в #0077,
но (если я правильно понял) скорость и экран задаются записью в два? порта,
причём есть и `теневые` порты (доступные при определённых? условиях)

Yprit
28.05.2020, 10:57
ну в принципе правильно, именно в бейсике число пишется в #0077,
но (если я правильно понял) скорость и экран задаются записью в два? порта,
причём есть и `теневые` порты (доступные при определённых? условиях)

Так в один из портов уже записано что-то. Например, для 14 МГц неважно, что записано в #EFF7, насколько я понял. И написано, что теневые порты доступны всегда.

NEO SPECTRUMAN
28.05.2020, 11:52
И написано, что теневые порты доступны всегда.
с какого они доступны?
их сначала нужно включить
для эво нужно заслать 1 в порт BF
написано как самый приоритетный способ включения теневых портов

BF всегда доступен


xx77 теневой порт

а xx тоже имеет значение
a9 = 0 - насильное включение трдос


если из бейсика будет вывод в $0077
то бейсик это певесит нахрен
тк вместо пзу бейсика подключитсо пзу трдоса
ну и там еще будет включение записи в палитру
отключения диспетчера памятии
да и как бы еще не включился атмовский 320х200 вдобавок


не знаю выводит ли бейсик в 16 битные порты

Yprit
28.05.2020, 12:28
с какого они доступны?
их сначала нужно включить
для эво нужно заслать 1 в порт BF
написано как самый приоритетный способ включения теневых портов

Упс, спасибо.



а xx тоже имеет значение
a9 = 0 - насильное включение трдос


если из бейсика будет вывод в $0077
то бейсик это певесит нахрен
тк вместо пзу бейсика подключитсо пзу трдоса

Тогда какие старшие байты можно безопасно подставлять?



да и как бы еще не включился атмовский 320х200 вдобавок

Ну, именно это я и пытался осуществить хоть как-то (по сути, чтоб убедиться, что делаю все правильно).



не знаю выводит ли бейсик в 16 битные порты

В плане? Почему он может не выводить?

NEO SPECTRUMAN
28.05.2020, 14:18
Тогда какие старшие байты можно безопасно подставлять?
бери мануал
и рисуй 16 бит адрес порта и 8 бит данных
и по мануалу ставь нулиединицы



ADDR_H ADDR_L DATA
FEDCBA98 76543210 76543210
$BF 00000001 ;включение теневых портов

.1....11 $77 ....1000 ;14MHz + 320x200

$EF $F7 ..00...0

разбавляем неиспользуемое

$BF 00000001 ;включение теневых портов

11111111 $77 00001000 ;14MHz + 320x200
;тут нам в мануале рекомендуют заполнять пустые A15...A8 1-ми
;(даны примеры валидных значений)
;чем заполнять не используемые D7..D0 яхз

$EF $F7 00000000

переводим

$BF 1
$FF77 8
$EFF7 0

переводим в бейсик

out 191,1
out 65399,8
out 61431,0


- - - Добавлено - - -


В плане? Почему он может не выводить?
пушо последний раз я кодил на этом бейсике году в 2004

- - - Добавлено - - -


Ну, именно это я и пытался осуществить хоть как-то
ну 320х200 асм с трудом тянет в турбе
кодить под оно на бейсике
это не лучшая идея

Barmaley_m
30.05.2020, 22:00
не знаю выводит ли бейсик в 16 битные порты
Выводит, однозначно. Бейсик-команда OUT реализована через OUT (C),A, при этом в регистре BC находится 16-битное число из первого аргумента.