Просмотр полной версии : Страницы памяти
Подскажите как правильно пользоваться страницами памяти, прочитал про RAM’ы CPU ничего не понял.
Если сделать
ld a,7+16
ld bc,#7ffd
out (c),a
то включится страница RAM 7, и будет она располагаться с 49152-65535 ?
Если сделать
ld a,5+16
ld bc,#7ffd
out (c),a
то включится страница RAM 5, и в каких адресах она будет располагаться ?
Если сделать
ld a,5+16
ld bc,#7ffd
out (c),a
ld hl,0
ld de,#db00
ld bc,10
ldir
то эти 10 байт появляются в #db00 и #5b00
SAM style
15.12.2009, 16:27
Если сделать
...
то эти 10 байт появляются в #db00 и #5b00
Всё правильно. По адресу #4000 у тебя всегда 5я страница. По адресу #8000 - всегда 2я (исключения бывают, но в основном так). Включаешь 5ю страницу - в видимой памяти у тебя оказываются её 2 копии - одна на #c000, другая на #4000. То же будет и со 2й страницей.
Если сделать
ld a,5+16
ld bc,#7ffd
out (c),a
ld hl,0
ld de,#db00
ld bc,10
ldir
то эти 10 байт появляются в #db00 и #5b00
да, но только до того момента пока не сменишь страницу в порту #7ffd, после этого эти данные будут присутствовать только в 5 банке памяти который жестко находится в диапазоне #4000-#7fff. По адресам #8000-#bfff жестко закреплена 2 банк памяти. Что находится в дипазонах #c000-#ffff и #0000-#3fff зависит от управляющих бит в порту #7ffd, а для Spectrum+2/+3 и отечественных клонов старше 128k от состояния портов #1ffd, #dffd, #eff7 и т.п.
В Spectrum+2/+3, ScorpionGMX, не уверен кажется еще в Turbo и Sprinter, возможно так-же менять банки памяти и в диапазонах #4000-#7fff, #8000-#bfff.
Спасибо за ответы, все что хотел узнал, тема закрыта.
necroTrue
09.04.2010, 17:27
такой вопрос: кол-во тактов на переключение страницы это только наши фактические "out (c),a" или потом идёт некий эфирный сигнал синхронизации, и я получу свою желаемую страничку далеко не за "out (c),a"-количество-тактов (сори, влом смотреть сколько именно эта команда занимет)
такой вопрос:
Сразу после out
Для тех кто знаком со встроенным ассемблером EmuZWin.
Приведите пример как пользоваться ORG (по прилагаемой доке ничего не понял)
Нужно ассемблировать допустим в первую банку по адресу #c000
Andrew771
20.08.2013, 11:57
Для тех кто знаком со встроенным ассемблером EmuZWin.
Приведите пример как пользоваться ORG (по прилагаемой доке ничего не понял)
Нужно ассемблировать допустим в первую банку по адресу #c000
Меня тоже интересует теперь этот вопрос.
Как вообще скомпилировать код в выбранный банк?
Hacker VBI
20.08.2013, 12:07
sjasm:
page 7
org #c000
Andrew771
20.08.2013, 12:28
а в EmuZWin ?
---------- Post added at 12:28 ---------- Previous post was at 12:21 ----------
кажись нашел:
org ram 7,#c000
кажись нашел:
org ram 7,#c000
Позже поймешь, что это не всегда работает. Я так и не разобрался с этим вопросом. Вот Sjasm все делает правильно
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot