-- Copyright (C) 1985, 1986 by Xerox Corporation. All rights reserved.
-- CString.mesa
-- NFS 18-Dec-85 10:34:20
-- MEW 18-Jan-86 13:17:29
-- Routines for coversions between Mesa strings and C strings.
DIRECTORY
Environment USING [Byte],
ESCAlpha,
Mopcodes,
MopcodesExtraST USING [zMBP, zRBP, zWBP],
PrincOpsExtrasBP USING [BytePointer];
CString: DEFINITIONS = {
CString: TYPE = PrincOpsExtrasBP.BytePointer;
ToBytePointer: PROCEDURE [LONG POINTER] RETURNS [CString] = MACHINE CODE
BEGIN MopcodesExtraST.zMBP END;
ToWordPointer: PROCEDURE [CString] RETURNS [LONG POINTER] = MACHINE CODE
BEGIN
Mopcodes.zLIN1;
Mopcodes.zLIW, 177B, 377B;
Mopcodes.zESC, ESCAlpha.aDAND;
Mopcodes.zLIN1;
Mopcodes.zESC, ESCAlpha.aDSHIFT
END;
ReadChar: PROCEDURE [CString] RETURNS [CHARACTER] = MACHINE CODE
BEGIN MopcodesExtraST.zRBP, 0 END;
ReadByte: PROCEDURE [CString] RETURNS [Environment.Byte] = MACHINE CODE
BEGIN MopcodesExtraST.zRBP, 0 END;
WriteChar: PROCEDURE [CHARACTER, CString] = MACHINE CODE
BEGIN MopcodesExtraST.zWBP, 0 END;
WriteByte: PROCEDURE [Environment.Byte, CString] = MACHINE CODE
BEGIN MopcodesExtraST.zWBP, 0 END;
IncrBPointer: PROCEDURE [p: CString] RETURNS [CString] = INLINE
BEGIN RETURN[LOOPHOLE[p.pointer + 1, CString]] END;
DecrBPointer: PROCEDURE [p: CString] RETURNS [CString] = INLINE
BEGIN RETURN[LOOPHOLE[p.pointer - 1, CString]] END;
AddToBPointer: PROCEDURE [p: CString, i: INTEGER] RETURNS [CString] = INLINE
BEGIN RETURN[LOOPHOLE[p.pointer + i, CString]] END;
CStringToString: PROCEDURE [cs: CString, z: MDSZone] RETURNS [STRING];
CStringToLongString: PROCEDURE [cs: CString, z: UNCOUNTED ZONE]
RETURNS [LONG STRING];
StringToCString: PROCEDURE [s: STRING, z: UNCOUNTED ZONE] RETURNS [CString];
LongStringToCString: PROCEDURE [s: LONG STRING, z: UNCOUNTED ZONE]
RETURNS [CString];
}.