%option "-LOW"
{Utility procedures}
%system%routine%spec READ LINE(%string(*)%name s)
%system%routine%spec PRINT LINE(%string(255) s)
@16_3F00-24 %integer%fn MULDIV(%integer a,b,c)
%system%string(255)%fn%spec ITOS(%integer v,p)
%system%string(255)%fn%spec RTOS(%real R, %integer bp, ap)
%systeminteger%fnspec STOI(%string(255) s)
%external%routine%spec TO LOWER(%string(*)%name s)
%external%routine%spec TO UPPER(%string(*)%name s)

{Environment enquiry}
%system%integer%fn%spec FREESTORE
%system%string(8)%fn%spec DATE
%system%string(5)%fn%spec TIME
%system%string(15)%fn%spec DATETIME

{@16_118C}%externalroutinespec PHEX1(%integer x)
{@16_1190}%externalroutinespec PHEX2(%integer x)
{@16_1194}%externalroutinespec PHEX4(%integer x)
{@16_1198}%externalroutinespec PHEX(%integer x)
{@16_119C}%externalinteger%fnspec RHEX; !as %routine
{Heap}
%external%integer%fn%spec HEAPGET(%integer x)
%external%routine%spec HEAPPUT(%integer x)
%external%routine%spec MARK
%external%routine%spec RELEASE

{PAM}
%record%format PAMINFO(%byte groupsep,keyflag, %short allflags,
 %record(*)%name params)
%external%record(paminfo)%map%spec PAM
%constinteger PAM NEWGROUP=1, PAM NODEFAULT=2, PAM MAJOR=4,
 PAM KEEPCASE=8, PAM INFILE=16, PAM OUTFILE=32
%external%routine%spec DEFINE PARAM %alias "PAM_DEFSTRING" %c
 (%string(255) text, %string(*)%name variable, %integer flags)
%external%routine%spec DEFINE INT PARAM %alias "PAM_DEFINT" %c
 (%string(255) text, %integername variable, %integer flags)
%external%routine%spec DEFINE ENUM PARAM %alias "PAM_DEFENUM" %c
 (%string(255) text, %bytename variable, %integer flags)
%external%routine%spec DEFINE BOOLEAN PARAMS %alias "PAM_DEFBOOL" %c
 (%string(255) text, %integername variable, %integer flags)
%external%routine%spec PROCESS PARAMETERS %alias "PAM_PROCESS" %c
 (%string(255) parm)

{Terminal}
%constinteger NO ECHO=1, NO TERMECHO=2, SINGLE=4, NO PAGE=8
@16_1140%routine SET TERMINAL MODE(%integer mode)
!%external%integer%spec TERMINALMODE
!%external%integer%spec TERMINALMASK
@16_10D4%integerfn TESTSYMBOL
!%external%integer%fn%spec TESTSYMBOL

{Files}
%external%string(255)%fn%spec INFILENAME
%external%string(255)%fn%spec OUTFILENAME
%external%routine%spec OPENAPPEND(%integer stream,%string(255)file)
%external%routine%spec CLOSEAPPEND
%external%predicate%spec EXISTS(%string(255)file)
%external%integer%fn%spec FILESIZE(%string(255)file)
%external%string(255)%fn%spec NINFO(%string(255)file)
%external%routine%spec CONNECT FILE %c
 (%string(255) fname, %integer mode, %integer%name start,limit)
%external%routine%spec DELETE(%string(255)file)
%external%routine%spec RENAME(%string(255)old,new)
%external%routine%spec COPY(%string(255)from,to)
%external%routine%spec PERMIT(%string(255)file,perms)
%external%routine%spec QUOTE(%string(255)pass)
%record%format FINFOF(%string(23)name,%string(5)perms,%string(9)date,time,
 %integer blocks,extents)
%external%routine%spec UNPACK FINFO(%string(255)s,%record(finfof)%name r)
