ZXNet эхоконференция «code.zx»


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



от: 500:812/00.00
кому: Yaroslav Kozlov
дата: 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* с кувалдой

-+- ручки [левая и правая]




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Посмеёмся - Эпопея.
Железо - дешифратор для кабельного TV.
Анкета - Trаnsmаn.
Chaos Construction 2001 - интервью с EYE-Q: Organism, Time Keeper, Mr. Wizard.
Из книг - Море синеет: Джошуа Слокэм - первый кругосветный мореплаватель-одиночка.

В этот день...   24 апреля