-- AlpineInline.mesa
-- Simple procedures used by several Alpine components.
-- Last edited by
-- MBrown on January 30, 1984 11:31:04 am PST
DIRECTORY
AlpineEnvironment,
Basics,
PrincOpsUtils;
AlpineInline: DEFINITIONS
IMPORTS
Basics,
PrincOpsUtils
= BEGIN
PageNumber: TYPE = AlpineEnvironment.PageNumber;
WordNumber: TYPE = INT;
wordsPerPage: CARDINAL = AlpineEnvironment.wordsPerPage;
logWordsPerPage: CARDINAL = AlpineEnvironment.logWordsPerPage;
LongZero: PROC [where: LONG POINTER, nWords: CARDINAL] = INLINE {
PrincOpsUtils.LongZero[where, nWords] };
ShortWordsFromPages: PROC [pages: CARDINAL] RETURNS [words: CARDINAL] = INLINE {
RETURN [Basics.BITSHIFT[value: pages, count: logWordsPerPage]] };
WordsFromPages: PROC [pages: PageNumber] RETURNS [words: WordNumber] = INLINE {
RETURN [pages * wordsPerPage] };
PagesFromWords: PROC [words: WordNumber] RETURNS [pages: PageNumber] = INLINE {
RETURN [words / wordsPerPage] };
DecomposeWords: PROC [words: WordNumber]
RETURNS [page: PageNumber, wordInPage: CARDINAL] = INLINE {
RETURN [page: words/wordsPerPage, wordInPage: words MOD wordsPerPage] };
END.