this modset adds special facilities to the pascal compiler for compiling the a68s compiler and run-time system. the facilities added are sufficient for their purpose, but no checks for mis-use are made, and anyone using them for other purposes does so at his own risk. ******************************************* ******************************************** these mods introduce the following built-in procedures and functions: procedure setstktop(size, a, v: integer); sets the word in (b5-1-a) (?) to the value v. size must be >0. procedure enew(p: nilptr; size: integer); as new, but exactly size words are obtained. procedure edispose(p: nilptr; size: integer); as dispose, but exactly size words are returned. procedure moveleft(from, to: nilptr; size: integer); moves a block of 'size' words starting at 'from' to 'to'. copying starts at the leftmost word. size must be a multiple of word size. function getstktop(size, a: integer): integer; returns the value held in (b5-1-a)(?). size must be >0. function asptr(v: integer): nilptr; returns the value of v as if it were a pointer. the function asptr may be used in any context in a pascal program where nil would be acceptable (in algol 68 terminology - in any strong context). note that the language already provides the function 'ord' to perform the converse operation of 'asptr'. function incptr(p: nilptr; v: integer): nilptr; increments the pointer p by v, and returns the result. ********************************************* The following additional compiler options are provided e: all procedure names external (even inner ones) (-) g: global declarations compiled (+) when compiling segments of procedures: g- implies that global declarations are merely repetitions (which had better be correct!) of declarations in some master segment. when compiling main program: g- implies that such a master segment is being compiled. w: generate warnings as well as error messages (+) all the above options are translated to lower case, thus are case independent. This applies to options in the source file and to those passed via C_EM_PC. ********************************************* ---------------------------- revision 2.10 date: 86/08/19 15:22:09; author: dw; state: Exp; lines added/del: 2/1 This lets 'getstktop' know about reals so it does not try to convert what is already a real to a real and get it wrong. ---------------------------- revision 2.9 date: 86/08/13 12:03:49; author: dw; state: Exp; lines added/del: 3/2 more of 2.8, label now after goto descriptor ---------------------------- revision 2.8 date: 86/08/11 19:57:32; author: dw; state: Exp; lines added/del: 49/0 This makes labels that are jumped to non-locally have a global label associated with them. The labels are of the form _xxxnnn where xxx is the number of the label & nnn is the name of the routine. ---------------------------- revision 2.7 date: 86/07/17 19:42:29; author: dw; state: Exp; lines added/del: 2/1 This fixes getstktop. It now uses 'ads' rather than 'adu'. The changes have been made in 'call'. ---------------------------- revision 2.6 date: 86/07/17 19:30:30; author: dw; state: Exp; lines added/del: 15/0 This causes all USER procedural identifiers ( ) to be in upper case Modifacation to 'argident'. (m_a_i_n) is left in lower case for 'ld'. ---------------------------- revision 2.5 date: 86/07/17 19:25:10; author: dw; state: Exp; lines added/del: 7/1 This forces the compiler to take note of where an EXTERN procedure is declared and make it STATICALLY be there. ---------------------------- revision 2.4 date: 86/07/17 19:22:39; author: dw; state: Exp; lines added/del: 13/1 'r' option sets the effective upperbound as high as is possible ---------------------------- revision 2.3 date: 86/07/17 19:20:20; author: dw; state: Exp; lines added/del: 19/1 This implements incptr. ---------------------------- revision 2.2 date: 86/03/14 20:35:27; author: dw; state: Exp; lines added/del: 39/3 This should cure the problem of the compiler not allowing output to the file OUTPUT from a seperatly compiled segment. It does this by always setting up INPUT and OUTPUT. ---------------------------- revision 2.1 date: 86/03/03 21:53:06; author: dw; state: Exp; lines added/del: 278/26 This is the alternate form of the compiler as modified by CHL It offers several extentions to the existing compiler needed to compile the ALGOL68S compiler. =============================================================================