u9_speccy.
А вообще тема зачётная, читаю с попкорном.
Вид для печати
Ewgeny7, +1
тема из серии чистого теоретизирования.... неужели все так сразу пересядут?... ;)
"но сам процесс"?.. ;)
Код процедуры переключения страницы, который я приводил здесь,
не мой, а, кажется, Кости Вербова (автора первой версии рам-диска).
Именно только процедуру переключения страниц я поместил на то же место в пзу в первозданном виде в своей версии прошивки (в таком виде в каком она была в первой версии кая-1024) ради обеспечения совместимости (например, драйвер верхней памяти в ALASM использует этот код в пзу для переключения страниц Кая).
Процедуру можно оптимизировать и сократить. Например так:
Итого сократил процедуру на 6 байт.Код:;на входе - Акк=номер страницы
AND #3F ;номер страницы будет 0...63
LD C,A
RLCA
RLCA
AND #C0
OR C ;+ (плюс 1 байт)
; LD B,A ;-
; LD A,C ;-
; OR B ;- (минус 3 байта)
LD B,A
EX AF,AF'
LD A,B
; EX AF,AF' ;- (минус 1 байт)
AND #87 ;10000111 d7,d0..d2
OR #10 ;00001000 ;rom1
LD BC,#7FFD
OUT (C),A
EX AF,AF'
; LD B,A ;-
; EX AF,AF' ;-
; LD A,B ;- (минус 3 байта)
RLCA
AND #90 ;10010000 d7,d4
LD B,#1F
OUT (C),A
RET
---------- Post added at 00:41 ---------- Previous post was at 00:28 ----------
А, и в прошивках там не RET в конце, а JP (HL), но это мелочи.
1. Ну драйвер в ALASM её юзает. Может еще какой специфичный софт для Кая эту процедуру юзает. Соображения, по которым я процедуру не менял, изложены выше.
2. Предсказывать неприятности не умею
3. Будет "железо" - будут выложены исходники.
ReVerSe u9 SKAY Memory mapping в аттаче.
Дешифрация портов для CPU3:Для #DEFD:Код:#1FFD/8189 0001111111111101 00xxxxxxxxxxxx01 - CPU3 Pag SysLo
#7FFD/32765 0111111111111101 01xxxxxxxxxxxx01 - CPU3 Pag
#DEFD/57085 1101111011111101 1101x1x0xxxx1101 #DEFD CPU3 Pag TSH
1101x11xxxxx1101 #DEFD CPU3 Pag TSL
TSH - разряды D3-D7
TSL - разряды D0-D2
Подскажите, автор здесь указал #10, а это вроде бы D4 бит. OCT (октет) 10 - это D3 бит. Эмулятор вроде бы выводит число 16. Это ошибка или что-то ещё?Код:OR #10 ;00001000 ;rom1
------------------------------
В общем, разобрался. Неправильно указано бинарное число в комментарии, %00010000 так правильно и OR #10 - правильно. И, вообще, на zxpress очень много опечаток, просто жуть, у них на KAY1024, D3 - текущее ПЗУ, D4 - активный экран. А на деле, наоборот. Да и разъём 96pin, а не 60, 62.