Цитата Сообщение от БК-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), но это мелочи.