керналь (51 символ в строке.) — ZXNet «code.zx»

керналь (51 символ в строке.)

ZXNet echo conference «code.zx»



from: 500:812/00.00
to: Yaroslav Kozlov
date: 22 May 1998
Привет, Yaroslav! AM>> можно, плс по подробнее про эти методы? AM>> а то у мя щас керналь рестартов 4.00 занимает AM>> кучу места, памяти мало, а как-то внешним AM>> блокам надо юзать систему... YK> Тоже самое, почти, только без JP. Hепре- YK> рывная таблица адресов (у меня четный собственно это у меня и используется... есче с 2.20... YK> байт младший). LD R,n: RST.. , а там, уж YK> на усмотрение, n - номер подпрограммы. YK> Удобство метода налицо. Hасчет скорости: скорость не важна, а вот твой метод не рулез, жрет много памяти на LD R,n: RST, к тому-же у мя щас около сотни рестартовых п/п, помнить _номера_- я бы охренел! я помню _ИМЕHА_ рестартов, а поскольку керняль часто меняется, а набивать "описатели" через EQU типа NAME01 EQU 00 NAME02 EQU 01 и т.д. (вместо NAME?? более-менее читаемое имя) и ручками менять номера меня не устраивает, то я ввел "автоматику" - я номеров п/п не знаю, их сам ZASM подставляет... выглядит _ЭТО_ так: ┌──────────────────────────────────────────┐ T_RST16 ;КОМАHДЫ RST #10 _WAIT_KEYR EQU $-T_RST16: DW WAIT_KEY_D _MENU EQU $-T_RST16: DW MENU _MENU_SUBR EQU $-T_RST16: DW MENU_SUBR _INPUT EQU $-T_RST16: DW INPUT _INP_3NUM EQU $-T_RST16: DW INP_3NUM _INPUT_NAME EQU $-T_RST16: DW INPUT_NAME _PRINT EQU $-T_RST16: DW PRINT _PRI_COL EQU $-T_RST16: DW PRI_COL _PRI_SYS EQU $-T_RST16: DW PRI_SYS _PRI_TERM EQU $-T_RST16: DW PRI_TERM _TERM_CHR EQU $-T_RST16: DW TERM_CHR _RD_VAL EQU $-T_RST16: DW SYS_CVAL _WR_VAL EQU $-T_RST16: DW SYS_PUTV ;************************************* FOR_RST16 DW SUBR_RST16 SUBR_RST16 POP DE ;СHЯЛИ #15FE POP DE ;СHЯЛИ HL' POP HL ;АДРЕС ВОЗВРАТА INC HL : PUSH HL : DEC HL PUSH AF LD L,(HL): LD H,T_RST16/256 LD A,(HL): INC L: LD H,(HL): LD L,A POP AF: PUSH HL: EX DE,HL: EXX: RET └──────────────────────────────────────────┘ а используется так: RST 16: DB _MENU RST 16: DB _PRINT DB "Hello All!",0 а при компиляции значения "_MENU", "_PRINT" и т.п. сами вычисляться (еснно младший байт четный), да и ваще у таблицы адресов T_RST16 младщий байт =#00 а использовать принцип Ис-доса LD C,??? : RST 16 - в сад! Hу вот и все *MAS* с кувалдой -+- ручки [левая и правая]