
Сообщение от
БК-0010
код получается длиннее твоего, если чо, там в Крамисе ещё свободное место есть?
Код процедуры переключения страницы, который я приводил здесь,
не мой, а, кажется, Кости Вербова (автора первой версии рам-диска).
Именно только процедуру переключения страниц я поместил на то же место в пзу в первозданном виде в своей версии прошивки (в таком виде в каком она была в первой версии кая-1024) ради обеспечения совместимости (например, драйвер верхней памяти в ALASM использует этот код в пзу для переключения страниц Кая).
Процедуру можно оптимизировать и сократить. Например так:
Код:
;на входе - Акк=номер страницы
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
Итого сократил процедуру на 6 байт.
---------- Post added at 00:41 ---------- Previous post was at 00:28 ----------
А, и в прошивках там не RET в конце, а JP (HL), но это мелочи.