summaryrefslogtreecommitdiff
path: root/tex/context/base/syst-mtx.tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/syst-mtx.tex')
-rw-r--r--tex/context/base/syst-mtx.tex66
1 files changed, 66 insertions, 0 deletions
diff --git a/tex/context/base/syst-mtx.tex b/tex/context/base/syst-mtx.tex
new file mode 100644
index 000000000..c865560b8
--- /dev/null
+++ b/tex/context/base/syst-mtx.tex
@@ -0,0 +1,66 @@
+%D \module
+%D [ file=syst-mtx,
+%D version=2006.08.11,
+%D title=\CONTEXT\ System Macros,
+%D subtitle=\METATEX\ specifics,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\ifx\directlua\undefined \endinput \fi
+
+\unprotect
+
+%D Since the number of chars exceed 256 now, we can use \type
+%D {\chardef} instead of the more limited \type {\mathchardef}.
+
+\def\newcount {\myalloc@0\count \countdef \@@maxallocation}
+\def\newdimen {\myalloc@1\dimen \dimendef \@@maxallocation}
+\def\newskip {\myalloc@2\skip \skipdef \@@maxallocation}
+\def\newmuskip {\myalloc@3\muskip \muskipdef \@@maxallocation}
+\def\newbox {\myalloc@4\box \chardef \@@maxallocation}
+\def\newtoks {\myalloc@5\toks \toksdef \@@maxallocation}
+\def\newread {\myalloc@6\read \chardef \@@minallocation}
+\def\newwrite {\myalloc@7\write \chardef \@@minallocation}
+\def\newmarks {\myalloc@8\marks \chardef \@@maxallocation}
+\def\newlanguage{\myalloc@9\language\chardef \@@minallocation}
+
+\def\newfam#1{\chardef#1=15 }
+
+\count18=1
+
+\mathchardef\@@minallocation = 16
+\mathchardef\@@medallocation = 256
+\mathchardef\@@maxallocation = 32767
+\chardef \@@insallocation = 32
+
+\def\myalloc@#1#2#3#4#5%
+ {\global\advance\count1#1by\@ne
+ \ifnum\count1#1>\@@medallocation \else
+ \ifnum\count1#1<\numexpr\@@medallocation-\@@insallocation\relax\else
+ \global\count1#1=\numexpr\@@medallocation+\@ne\relax % \wait
+ \fi
+ \fi
+ \ifnum\count1#1>#4%
+ \global\count1#1=#4%
+ \errmessage{No room for (\string#2) \string#5}%
+ \fi
+ \allocationnumber=\count1#1%
+ \global#3#5=\allocationnumber
+ \wlog{\string#5=\string#2\the\allocationnumber}}
+
+\def\newinsert#1%
+ {\ifnum\insc@unt>\numexpr\@@medallocation-\@@insallocation\relax
+ \global\advance\insc@unt by\m@ne
+ \allocationnumber=\insc@unt
+ \global\chardef#1=\allocationnumber
+ \wlog{\string#1=\string\insert\the\allocationnumber}%
+ \else
+ \errmessage{No room for a new insert \string#1 (\number\insc@unt)}%
+ \fi}
+
+\protect \endinput