kernal (51 characters per line.)
ZXNet echo conference «code.zx»
From 500:812/00.00 → To Yaroslav Kozlov 22 May 1998
Hello Yaroslav!
AM>> can you please tell me more about these methods?
AM>> and right now my kernel restart takes 4.00
AM>> a lot of space, little memory, but somehow external
AM>> blocks need to use the system...
YK> The same thing, almost, only without JP. Never-
YK> broken address table (I have an even
This is actually what I use...
from 2.20...
YK> low byte). LD R,n: RST.. , and there it is
YK> at your discretion, n is the subroutine number.
YK> The convenience of the method is obvious. About speed:
speed is not important, but your method didn’t work,
eats up a lot of memory on LD R,n: RST,
besides, I have about a hundred restart p/p right now,
remember _numbers_ - I would go nuts!
I remember the _NAMES_ of restarts, and since
the kernel changes frequently, and fill in “descriptors”
via EQU type
NAME01 EQU 00
NAME02 EQU 01
etc. (instead of NAME?? a more or less readable name)
and changing numbers manually doesn’t suit me,
then I entered “automation” - I numbered
I don’t know, ZASM itself sets them up...
_IT_ looks like this:
┌───────────────────── ─────────────────────┐
T_RST16 ;TEAM 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* с кувалдой
-+- ручки [левая и правая]