-- JaMVM.mesa -- Last edit by Bill Paxton, 30-Jan-82 8:43:16 DIRECTORY JaMBasic USING [DictBody, Object, Root, StringLength, Tuple, TuplePtr]; JaMVM: DEFINITIONS = { OPEN JaMBasic; -- Virtual memory access AllocString: PROC[length: StringLength] RETURNS[string Object]; AllocArray: PROC[length: CARDINAL] RETURNS[array Object]; AllocDict: PROC[size: CARDINAL] RETURNS[dict Object]; GetRoot: PROC[root: LONG POINTER TO Root]; PutRoot: PROC[root: LONG POINTER TO Root]; GetDict: PROC[dict: dict Object] RETURNS[DictBody] = INLINE { RETURN[dict.dict↑] }; PutDict: PROC[dict: dict Object, dd: DictBody] = INLINE { dict.dict↑ ← dd }; GetTuple: PROC[slot: TuplePtr] RETURNS[Tuple] = INLINE { RETURN[slot↑] }; PutTuple: PROC[slot: TuplePtr, tuple: Tuple] = INLINE { slot↑ ← tuple }; GetElem: PROC[array: array Object, i: CARDINAL] RETURNS[Object] = INLINE { RETURN[array.base[i]] }; PutElem: PROC[array: array Object, i: CARDINAL, object: Object] = INLINE { array.base[i] ← object }; GetChar: PROC[string: string Object, i: CARDINAL] RETURNS[CHARACTER] = INLINE { RETURN[string.text[i+string.offset]] }; PutChar: PROC[string: string Object, i: CARDINAL, char: CHARACTER] = INLINE { string.text[i+string.offset] ← char }; CopyArray: PROC[src,dst: array Object]; -- copies MIN[src.length,dst.length] objects CopyString: PROC[src,dst: string Object]; -- copies MIN[src.length,dst.length] characters GetText: PROC[string: string Object, text: LONG STRING]; PutText: PROC[string: string Object, text: LONG STRING]; -- these transfer MIN[string.length,text.maxlength] characters Start: PROC; }.