Господа аппаратчики, а есть-ли какие физические предпосылки к тому что именно так распределены страницы и банки?
Почему именно 5-я банка падает на адреса #4000-#7FFF ?
Вид для печати
Господа аппаратчики, а есть-ли какие физические предпосылки к тому что именно так распределены страницы и банки?
Почему именно 5-я банка падает на адреса #4000-#7FFF ?
Как удобнее было развести старшие 2 разряда адреса, так и развели, как мне кажется
01... -> 101 (5)
10... -> 010 (2)
По поводу "медленной" памяти - так и нет ясности, какие Page быстрые, какие медленные?
Вроде INT надо держать от #8000 до #BFFF ? Ладно, это полбеды, но где-то я читал что вообще любое обращение к памяти вне этого диапазона = замедление. Это что получается, и стек и всё вообще надо крутить в этом окне? Но ведь экраны (что 5-й, что 7-й) - вне этого лежат... Получается что вообще невозможно обойтись без замедлений? Ну ладно, даже пусть так. Но всё-таки - где лучше стек держать? И как лучше выводить графику при двух экранах: В #4000 для 5-го, и #C000 для 7-го, или-же можно оба рисовать в #C000, щёлкая битом #7FFD ?
P.S Я понимаю что схемотехника на разных моделях по-разному, но хотя-бы подскажите кто знает ответы на эти вопросы для 3-х моделей (оригинальный спек, Скорпион, Пентагон) ?
На тостере и сером +2 медленные банки 1,3,5,7Цитата:
По поводу "медленной" памяти - так и нет ясности, какие Page быстрые, какие медленные?
На моделях +2A,+2B,+3 медленные банки 4,5,6,7
На пентагонушке всё быстрое
Регистр I должен указывать на быструю память, иначе будет снег на моделях до серого +2A. Если у тебя подключена быстрая банка то можно и не в этом диапазоне, но как только подключишь туда медленную сразу снег появится.Цитата:
Вроде INT надо держать от #8000 до #BFFF ?
Нет, в быструю память обращение всегда быстрое :) Более того, медленная память работает с задержками только когда луч на papere.Цитата:
Ладно, это полбеды, но где-то я читал что вообще любое обращение к памяти вне этого диапазона = замедление.
Со стеком не встречал проблем, а насчёт крутить в этом окне тут как удобнее, можно и в быстрых банках в верхней памяти, но только не забыть когда будешь их переключать свалить оттуда :)Цитата:
Это что получается, и стек и всё вообще надо крутить в этом окне?
Если будешь всё делать когда луч не на папере то можно обойтись без замедлений :)Цитата:
Но ведь экраны (что 5-й, что 7-й) - вне этого лежат... Получается что вообще невозможно обойтись без замедлений?
Где хочешь, я ни разу не напоролся на проблему когда стек был в медленной памяти. Но всегда можно перестраховаться и сделать его в быструю :)Цитата:
Ну ладно, даже пусть так. Но всё-таки - где лучше стек держать?
Как хочешь :) Как будет удобнее в кодеЦитата:
И как лучше выводить графику при двух экранах: В #4000 для 5-го, и #C000 для 7-го, или-же можно оба рисовать в #C000, щёлкая битом #7FFD ?
По оригинальным спектрумам есть нетленочка:Цитата:
P.S Я понимаю что схемотехника на разных моделях по-разному, но хотя-бы подскажите кто знает ответы на эти вопросы для 3-х моделей (оригинальный спек, Скорпион, Пентагон) ?
http://hype.retroscene.org/blog/dev/130.html
http://hype.retroscene.org/blog/dev/230.html
DenisGrachev, Классный мануал.
Спасибо всем ребята, картинку в первом посте поправил, док по мануалу сделал, буду дальше разбиратся.
И чтоб не плодить темы - подкинте кто в курсе плиз внятный, "для кофейников", мануал где про регистр R и вообще что за процесс такой: "регенерация памяти", где можно схемы, но не с разбором каждого p-n перехода, а попроще, ну на уровне FBD хотя-бы (ну т.е без точной схемотехники SR-триггера, например, достаточно квадратика со входами-выходами и буквами на нём SR). В общем непонятно этот момент процессор выставляет на шину адрес IR (с целью регенерации памяти)
Мде. Ну ладно, бери Радио 2'95, там есть статья про то, что ты хочешь.
Спасибо, бро!
Раз ты так шаришь - подскажи плиз попутно как реализовывается в дискретной аппаратной логике эта штука ?
(про обычный счётный триггер и регистр я вроде как немного разобрался)
(если осилишь - на пальцах, для деревенщины опиши, если некогда - тыкни в путнюю ссылку...
p.s. путней считается та ссылка где написано с полной ясностью, ну для тех кто знает что это не совсем так)
- - - Добавлено - - -
И насчёт Радио 2'95 - неужели до сих пор не распознали в нормальный формат?
Мало энтузиастов? Стоит-ли мне заморочится, или ты просто кинул тупо ссыль на отскан?
Есть распознаные и отрисованые эти вещи?
- - - Добавлено - - -
Или там блюдут "авторские" права?
более того вспоминается один тест когда химича со значением R можно реально испортить данные в памяти
и такое возможно только на реале.
Зачем тебе весь код Грея, если ты собрался делать энкодер? Энкодеры уже есть в МК с таймерами (энкодер является частью таймера).
- - - Добавлено - - -
Если рефреш DRAM завязан на Z80, то для порчи ОЗУ достаточно посадить его на WAIT дольше некоторого времени. Программные манипуляции с регистром R так же сработают.
Эмм... Не припомню чтоб говорил что собрался делать энкодер. И вообще к стыду своему признаюсь: даже не знаю что такое энкодер (очень смутно и ненаглядно представляю себе что это некоторое электромеханическое приспособление, позволяющее замерять и/или регулировать обороты. В общем у нас на производстве бывает электромеханик мучается с "энкондером", а я как программист чисто чекаю что там по показаниям и всё)
Код Грея мне приспичило понять чтоб разобратся наконец-то что за алгоритм я написал, который работает, но это чисто случайно, так сказать сам поражён.
А вообще понял простую вещь - чтоб программировать ПЛК надо-бы знать и аппаратную реализацию (конечно понимал это и ранее, но просто не было нужды программить всякую хрень, а теперь вот нужда заставила - попутно и разбираюсь что к чему и почему именно так реализовано. Спек для этого - хорошая поляна. Играя учимся. Как и положено. Жаль что так поздно, но чем чёрт не шутит - глядишь да разберусь, вроде пока получается)
- - - Добавлено - - -
P.S. Кстати да, чтоб не было недоразумений - реала у меня давным давно нету, и единственный опыт программно-железный был в далёком 1999 ("папа, гляди прикол, записываю в мониторе скорпа #FF, а он показывает что #FE !!!!!!)
(выбило микросхему памяти, я до этого думал что мемор по целняку строится - либо работает либо нет, а оказалось - адресно, разрядно... И покатился..)
но программно повесить проц на вайт...
может это гдето и можно
но явно не на спектруме...
- - - Добавлено - - -
но программно повесить проц на вайт...
может это гдето и можно
но явно не на спектруме...
- - - Добавлено - - -
Длинные префиксы вроде бы тожо инкрементят R
так что ими содержимое памяти не убьешь
ну это да
это как бы не единственный способ
а R инкрементится на 2+ только для (глазами) проца?
z80 выдает R для рефлеша каждый машинный цикл? (я уже не помню как там)
подчитал выдается каждый mreq
нельзя поймать "резонанс"
когда R будет все время пропускать определенные знанчения?
тем самым...
щас читаю доку
тоесть как бы можно?Цитата:
The R register is increased at every first machine cycle (M1)
а потом догадайся чего что то неработает :)
только таких команд нет
команды которые инкриментят на 2
имеют префикс который имеет свой м1
пошел дальше курить доку по z80
Прекращайте други нечитабельно постить, плз!
Без этого глаза сломаты, пожалуйста бразы...
И кто из эмулей по-настоящему умеет про R ?
Если делать DI:XOR A:LD R,A:JR $-3 - что будет?
г-н (господин, не подумайте плохого!) Родионов вроде писал что ничего особого, а т.Ларченко скромно промолчал...
Я бы тоже хотел знать. По идее, на фирменных 48к ОЗУ выше #8000 будет сыпаться частично, но вот каким образом - неизвестно. По идее, сыпанье памяти в данной ситуации эмулирует ZesarUX, но я тестил примерно таким способом, как описано выше, со включенной опцией рефреша, и нифига. Может, как-то по-другому тестить надо. А лучше на реале, конечно.
djnz нагибать ваш jp cc аж на целый такт!
нет я знаю что с jp cc можно сделать развернутый цикл на все 16кКод:ld b,0
xor a
l1
dup 62
ld r,a
edup
djnz l1
и тем самым свести общую задержку на каждый ld r.a к минимуму :)
13/62 = 0,20967t
14/8000 = 0,00175t
- - - Добавлено - - -
а мы можем предсказать как именно повредится память?
какие биты выпадут
какие останутсо
А чем катит? По времени столько же, плюс ещё возиться с заполнением ОЗУ и выставлением SP. То есть можно, но смысла в таком усложнении кода нет.
- - - Добавлено - - -
Вообще да, я тоже подумал, что желательно сделать код с минимальным количеством команд, но при этом максимально тормозной, так что djnz лучше jr, jr лучше jp. Я так примерно и делал, как ты написал, емнип.
- - - Добавлено - - -
Не можем, поэтому память под это дело нужно было бы выделять тормозную (если бы в этом был смысл), как и под тестирующий код.
:)
Именно в этом и вопрос.
Процессор делает RET. Стек (это ведь внутри проца, не внешне?) стабильно декрементится. RAM заполнена (вся) одним и тем-же. Что произойдёт? По идее - циклимся и всё. Но есть ещё и ПЗУ (ой, простите, ROM) - туда-бы не попасть... В общем интересная механика, какой оп-код будет выполнятся?
В абстракцию ударились, согласен, но интересно просто...
По идее ОЗУ будет утекать рандомно, так что эффекты при выставлении стека в быструю память могут быть разнообразные.
- - - Добавлено - - -
Я бы сказал в 512 байтах регенерируется, с одинаковыми младшими 7ю битами адреса у всех, если я правильно понимаю. Плюс за один RET читается два байта, итого 1024 байта за один RET подпитываются.
Upd. тупанул. За вычетом ПЗУ будет 384 байта на байт и 768 байт на RET.
Вот примерно так я и думал сделать тест в этот раз. В прошлый я просто память в эмуле просматривал, меняя время теста.
В наших клонах программно заставить память "забыть" данные невозможно - регенерацией занимается сканер экрана.
В "фирме" можно убить только "быструю" память.
Для теста не забыть, что каждое чтение будет регенерировать целую строку массива памяти, а их всего 128.
Из них несколько первых адресов успеют натикать до сброса R.
Зачем этот тест нужен не спрашиваю.
И так понятно, что ответ будет: "чтобы был")))
например регистром R можно пользоваться по своему усмотрению
им можно условно мерять интервалы времени
или же использовать для прибавления какого нибудь числа к А
в 7-м бите можно хранить какой нить "флаг"
но будет явно не хорошо
если поделие на фирменных спектрумах
будет зависать изза потери памяти...
- - - Добавлено - - -
а может можно этой очисткой вообще как то воспользоваться
хотя быстрой очистки буферов так не сделаешь
по моему память помнит достаточно долго...
а тк машинку совершенствовать нельзя
ибо низя низя
то нужно искать чем же малоизвестным можно воспользоваться еще для расширения возможностей
и излишнюю нелюбовь к порту FF я тоже не понимаю
он есть
ладно когда можно было обойтись без него
но им то тоже можно хитро пользоваться
- - - Добавлено - - -
скорей
чтобы симулировать
Если мне не изменяет мой склероз, то в бейсике R используется для генерации псевдослучайного числа (RND)
1. Да
2. Да
3. Да, на шине есть сигнал /BUSRQ
4. Да, на шине есть сигнал /RESET
Способов достаточно
но, только не для экранной памяти.