Так ведь можно весь код, который не относится к работе с экранами, раскидать по нужным банкам и вызывать. К примеру вот так
Скрытый текст
Код:;--------этот кусок всегда в основной банке FUNCTION LD B,1 ;это номер банки с функцией LD HL,FUNCTION_PG1 ;адрес тела функции CALL PAGE_PROC ;вызов функции RET ;........... PAGE 1 ;--------этот кусок будет уже банке 1 FUNCTION_PG1 ;тут основной код функции ret ;--------------------------- PAGE 2 ;эта функция в основной памяти ;временно подключает нужную банку и запускает в ней функцию PAGE_PROC LD (PROC_ADDR+1),HL ;запишем адрес в CALL LD A,(PORT_COPY) ;текущая конфигурация порта PUSH AF ;сохраним её LD A,B CALL BIND_BUF_A ;подключим банку с функцией PROC_ADDR CALL 0 ;вызовем её POP AF ;восстановим состояние порта CALL BIND_BUF_A RET ;--------------------------- PAGE 2 ;эта функция в основной памяти ;Бинд буффера A BIND_BUF_A DI LD B,A LD A,(PORT_COPY) AND 248 OR B LD (PORT_COPY),A LD BC,#7FFD OUT (C),A EI RET[свернуть]
или я чего-то не понял насчёт откусывания памяти?
пс: я вчера бухой писал, так что если чего не обращайте внимания
чуть чуть по тактам побыстрее(можно придумать что-то ещё быстрее) можно так, вместо call использовать jp
Скрытый текст
Код:;--------в основной банке FUNCTION LD B,1 ;это номер банки с функцией LD HL,FUNCTION_INPG;указатель на адрес тела функции CALL PAGE_PROC ;вызов функции RET FUNCTION_INPG DEFW FUNCTION_PG1 ;........... PAGE 1 FUNCTION_PG1 ;тут основной код функции JP RET_ADDR ;--------------------------- PAGE 2 PAGE_PROC LD A,(PORT_COPY) ;текущая конфигурация порта PUSH AF ;сохраним её LD A,B CALL BIND_BUF_A ;подключим банку с функцией JP (HL) ;вызовем её RET_ADDR POP AF ;восстановим состояние порта CALL BIND_BUF_A RET[свернуть]



Ответить с цитированием
