#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 ! Copyright (C) 3L Ltd. 1987-1991
// 2
// 3 !
// 4 ! FLATTEN.IMP
// 5 !
// 6 ! Driver for Imp-to-Imp flattener using Imp77 pass1
// 7 !
// 8 ! Rev 005 15-Feb-26 FC Forked from transputer Imp compiler driver
// 9 !
// 10
// 11 %externalstring(255)%fnspec Upper Case(%string (255) M)
extern _imp_string255 UPPERCASE(_imp_string255 M);
// 12 %externalstring(255)%fnspec Translate(%string (255) M)
extern _imp_string255 TRANSLATE(_imp_string255 M);
// 13 %routine Pstr(%string(255) s) ; print string(s) ; %end
static void PSTR(_imp_string255 S) {
_imp_PRINTSTRING(
*({
__typeof__(_imp_string255) tmp = S /*q*/;
(_imp_string255 *)&tmp;
})
);
return;
} /* end of PSTR */
// 14 %routine Psym(%integer i) ; print symbol(i) ; %end
static void PSYM(int I) {
_imp_PRINTSYMBOL(I);
return;
} /* end of PSYM */
// 15
// 16 %externalstring(7) %spec P1 Version
extern _imp_string7 P1VERSION;
// 17
// 18 %own %string(31) Compiler Id = "IMP_transputer V1.4"
static _imp_string31 COMPILERID = _imp_str_init("IMP_transputer V1.4");
// 19 !%const %string (255) Home Dir = "\ti1v4\"
// 20 %const %string(255) Home Dir = "\ti1v4\"
const _imp_string255 HOMEDIR = _imp_str_init("\\ti1v4\\");
// 21 !%const %string (255) Include Env = "3LI_INC"
// 22 %const %string(255) Include Env = "3LI_INC"
const _imp_string255 INCLUDEENV = _imp_str_init("3LI_INC");
// 23
extern void FATALERROR(_imp_string255 S);
// 24 !%from LL %include Common
extern void WARNINGMESSAGE(_imp_string255 S);
// 25 %include "Common.inc"
extern void PRINTIDENTIFICATION(void);
// &1 ! Copyright (C) 3L Ltd. 1987-1992
// &2
// &3 !
// &4 ! COMMON.INC
// &5 !
// &6 %end %of %list
// &15
// &16 %external %routine %spec Fatal Error ( %string(255) S )
// &17 %external %routine %spec Warning Message ( %string(255) S )
// &18 %external %routine %spec Print Identification
// &19 %external %routine %spec Print Version Number
// &20 %external %routine %spec CSR %alias "GATT_CSR"( %string(255) S )
// &21
// &22 %external %predicate %spec Diagnosing GATT %alias "GATT_DIAGNOSING"
// &23
// &24 %external %routine %spec Open LL Input %alias "GATT_OPEN_INPUT" %c
// &25 + ( %integer Stream No, File Type, Flags,
// &26 + %string(255) Filename, Relname )
// &27
// &28 %external %routine %spec Open LL Output %alias "GATT_OPEN_OUTPUT" %c
// &29 + ( %integer Stream No, File Type, Flags,
// &30 + %string(255) Filename, Relname )
// &31
// &32 %external %routine %spec Connect LL File %alias "LL_CONNECT_FILE" %c
// &33 + ( %integer Filetype,
// &34 + Flags,
// &35 + %string(255) Filename,
// &36 + Relname,
// &37 + %integer Writeable,
// &38 + %integer %name Start Addr,
// &39 + Bytes Mapped )
// &40
// &41 %external %routine %spec Disconnect LL file %alias "LL_DISCONNECT_FILE" %c
// &42 + ( %integer Address )
// &43
// &44 !'Writeable' states for Connect LL File
// &45 %const %integer LL Read Only = 0
// &46 %const %integer LL Read Write = 1
// &47
// &48 !Flags
// &49 %const %integer LL Nonfatal Flag = 2
// &50 %const %integer LL Trace Flag = 4
// &51 %const %integer LL Open Fail Msg Flag = 8
// &52
// &53 !Filetypes
// &54 %const %integer LL Binary File = 1
// &55 %const %integer LL IMP Include File = 2
// &56 %const %integer LL IMP Source File = 3
// &57 %const %integer LL Listing File = 4
// &58 %const %integer LL Pascal Source File = 5
// &59 %const %integer LL Text File = 6
// &60 %const %integer LL Null File = 7
// &61 %const %integer LL C Source File = 8
// &62 %const %integer LL Temporary File = 9
// &63 %const %integer LL BASIC Source File = 10
// &64 %const %integer LL Decoded Output File = 11
// &65 %const %integer LL Data File = 12
// &66 %const %integer LL Icode Asm File = 13
// &67 %const %integer LL I CODE Source File = 14
// &68 %const %integer LL F77 Source File = 15
// &69 %const %integer LL T4 Binary Object File = 16
// &70 %const %integer LL T4 Hex Object File = 17
// &71
// &72 %endoffile
// 26 !%from CG %include Option3L {option bits}
extern void PRINTVERSIONNUMBER(void);
// 27 %include "Option3L.inc"
extern void CSR(_imp_string255 S) __asm__("GATT_CSR");
// &1 ! Copyright (C) 3L Ltd. 1987-1992
// &2
// &3 {Option flags for Lattice Logic compilers}
// &4
// &5 {Pass1}
// &6
// &7 %constinteger LL Mon = 1<<0, {enable monitoring atoms etc}
// &8 + LL Extend = 1<<1, {permit language extensions}
// &9 + LL Warn = 1<<2, {produce warning messages}
// &10 + LL List = 1<<3, {produce a listing}
// &11 + LL Pause = 1<<4, {pause after errors}
// &12 + LL Reference = 1<<5, {give standard reference in errors}
// &13 + LL Notify = 1<<6, {give notification of extensions used}
// &14 + LL Report = 1<<7, {send messages to the terminal}
// &15 + LL Log = 1<<8, {logging enabled}
// &16 + LL Brief = 1<<9,
// &17 + LL Anon = 1<<10, {add anonymous tags = LL PRIM}
// &18 + LL Level0 = 1<<29 {ANSII mode - no conformant arrays}
// &19
// &20 {Passes 2 & 3}
// &21
// &22 %constinteger LL Prim = 1<<10, {compiling PRIM file}
// &23 + LL Over = 1<<11, {check for overflow}
// &24 + LL Range = 1<<12, {check ranges}
// &25 + LL Stack = 1<<13, {check for stack overflow}
// &26 + LL Trusted = 1<<14,
// &27 + LL Lines = 1<<15, {dump line tables}
// &28 + LL Vars = 1<<16, {dump variable tables}
// &29 + LL Trace = 1<<17, {dump block diagnostics}
// &30 + LL Records = 1<<18, {dump record tables}
// &31 + LL Assigned = 1<<19, {check for unassigned variables}
// &32 + LL Decode = 1<<20, {generate decoding info}
// &33 + LL Array = 1<<21, {check array bounds}
// &34 + LL TraceP = 1<<22, {trace procedure in/out}
// &35 + LL TraceL = 1<<23, {trace lines}
// &36 + LL Case = 1<<24 {case is significant in externals}
// &37
// &38 %constinteger LL Predef = 1<<25,
// &39 + LL Disposed = 1<<26, {check for use of disposed objects}
// &40 + LL Variants = 1<<27 {check use of variant records}
// &41 %constinteger LL Command = 1<<28 {generate a link command}
// &42 { 1<<29 used by PASS1}
// &43 %constinteger LL Knuth = 1<<30 {allow funny strings}
// &44 %constinteger LL Module = 1<<31
// &45
// &46 %endoffile
// 28 !%from CG %include P2P3 {pass 2/3 interface, for stream identifiers}
extern int DIAGNOSINGGATT(void) __asm__("GATT_DIAGNOSING");
// 29 %include "P2P3.inc"
extern void OPENLLINPUT(int STREAMNO, int FILETYPE, int FLAGS, _imp_string255 FILENAME,
_imp_string255 RELNAME) __asm__("GATT_OPEN_INPUT");
// &1 ! Copyright (C) 3L Ltd. 1987-1992
// &2
// &3 !
// &4 ! P2P3.INC
// &5 !
// &6 ! This file contains declarations of objects shared by Pass 2
// &7 ! and Pass 3
// &8 !
// &9
// &10 !
// &11 ! Target transputer type codes. NOTE ALL NON-ZERO.
// &12 !
// &13 %const %integer Target T4 = 1,
// &14 + Target T8 = 2,
// &15 + Target T2 = 3
// &16
// &17 !
// &18 ! IMP I/O Stream numbers
// &19 !
// &20 %const %integer Report Stream = 0,
// &21 + Object Stream = 1,
// &22 + Code Stream = 2,
// &23 + Blocks Stream = 3
// &24
// &25 !
// &26 ! Environmental constants and common limits
// &27 !
// &28 %const %integer Max Level = 31, {max static block nesting}
// &29 + Max External Id = 255 {longest external %alias}
// &30
// &31 %external %string(7) %spec Language Name {Defined by the driver}
// &32
// &33 %external %integer %spec Language {Defined by the driver}
// &34
// &35 !
// &36 ! Global information shared by the driver, pass 2, and pass 3.
// &37 !
// &38 %record %format Global Fm ( %c
// &39 + %string(255) %name Source File,
// &40 + Module,
// &41 + %string(31) %name Compiler Id,
// &42 + %integer Blocks, {number of blocks in program} %c
// &43 + Items, {total no of labels/jumps} %c
// &44 + Labels, {no of labels} %c
// &45 + Flags, {global attributes of the program} %c
// &46 + Externals, {last External No used by pass 2} %c
// &47 + Local Xs, {number of 'C' static functions} %c
// &48 + Static Size, {bytes in static (own) area} %c
// &49 + Code Size, {bytes in code (program) area} %c
// &50 + Const Size, {bytes in constant area} %c
// &51 + Diag Area Size, {bytes in diag area} %c
// &52 + General Areas, {number of FORTRAN general areas} %c
// &53 + Target, {target transputer type; e.g. T4, T8} %c
// &54 + Code Patch Sz, {bytes left for linker to patch} %c
// &55 + Data Patch Sz, {bytes left for linker to patch} %c
// &56 + Frag Array Size, {size of dynamic Pass2 Frag array} %c
// &57 + Module Patch Sz, {bytes for module number patch} %c
// &58 + Dspecs, {number of external data specs} %c
// &59 + Calls, {total no. of local procedure calls} %c
// &60 + BSS Size {uninitialised OWNs, excl. gen. areas} %c
// &61 + %or {overlay to allow record to grow} %c
// &62 + %integer %array Pad(1:20) {without recompiling the driver} %c
// &63 + )
// &64
// &65 !
// &66 ! Global_Flags mask values
// &67 !
// &68 %constinteger Global Flag Binary = 1<<0, {generate binary output file}
// &69 + Global Flag No Peep = 1<<1, {control of p2 optimiser}
// &70 + Global Flag No Reorder = 1<<2, {control of p2 optimiser}
// &71 + Global Flag Bug 1 = 1<<3, {INT->FLOAT conversion on T8}
// &72 + Global Flag No Jump Opt= 1<<4, {control of p3 optimiser}
// &73 + Global Flag Line Stats = 1<<5, {line-by-line space monitoring}
// &74 + Global Flag Total Stats= 1<<6, {summary at end of pass 2}
// &75 + Global Flag Plumbing = 1<<7, {print leak warning messages}
// &76 + Global Flag Debug Proc = 1<<8, {call debugger entry/exit proc}
// &77 + Global Flag Debug Line = 1<<9, {call debugger for each line}
// &78 + Global Flag Profile = 1<<10,{call profiler}
// &79 + Global Flag SH = 1<<11,{set: 16-bit shorts, else 32-bit}
// &80 + Global Flag BS = 1<<12,{set: bytes signed, else unsigned}
// &81 + Global Flag SU = 1<<13,{set: shorts unsigned, else signed}
// &82 + Global Flag Debug = 1<<14,{generate tables for TBUG}
// &83 + Global Flag No Real Folding = 1<<15, {suppress float const folds}
// &84 + Global Flag Check Istack = 1<<16, {chk I-code stk empty @'O'}
// &85 + Global Flag No ICB = 1<<17 {suppress ICB, diags & events}
// &86
// &87 {Add new ones like this to minimise hassle with VDIFF}
// &88 %const %integer Global Flag No Diags = 1<<18 {suppress diagnostic area}
// &89 %const %integer Global Flag No Trace = 1<<19 {suppress traceback area}
// &90 %const %integer Global Flag No Event = 1<<20 {suppress event area}
// &91 %const %integer Global Flag Lines = 1<<21 {put src line info in obj file}
// &92
// &93 !
// &94 ! Directive codes
// &95 !
// &96 %const %integer Dir Load = 1,
// &97 + Dir Store = 2,
// &98 + Dir j = 3,
// &99 + Dir cj = 4,
// &100 + Dir Label = 5,
// &101 + Dir User Label = 6,
// &102 + Dir Start Block = 7,
// &103 + Dir End Block = 8,
// &104 + Dir Call = 9,
// &105 + Dir Code = 10,
// &106 + Dir Line = 11,
// &107 + Dir X Ref = 12,
// &108 + Dir X Call = 13,
// &109 + Dir Return = 14,
// &110 + Dir Select Area = 15,
// &111 + Dir Const = 16,
// &112 + Dir LoadA = 17,
// &113 + Dir X Ddef = 18,
// &114 + Dir X Dspec = 19,
// &115 + Dir Sw Def = 20,
// &116 + Dir Sw Label = 21,
// &117 + Dir Sw Vec = 22,
// &118 + Dir X Dref = 23,
// &119 + Dir Perm Call = 24,
// &120 + Dir Include = 25,
// &121 + Dir End Include = 26,
// &122 + Dir Diagnose = 27,
// &123 + Dir FunP = 28,
// &124 + Dir X Proc Ptr = 29,
// &125 + Dir X Area Def = 30,
// &126 + Dir Common = 31,
// &127 + Dir Position = 32,
// &128 + Dir Area Fixup = 33,
// &129 + Dir S Call = 34,
// &130 + Dir Entry = 35,
// &131 + Dir cj not = 36,
// &132 + Dir Sw Jump = 37,
// &133 + Dir Proc Link = 38
// &134
// &135 %constinteger Dir Debug Type = 39,
// &136 + Dir Debug Start = 40,
// &137 + Dir Debug Finish = 41,
// &138 + Dir Debug Var = 42,
// &139 + Dir Debug Atype = 43,
// &140 + Dir Debug Fspec = 44,
// &141 + Dir Debug Ntype = 45,
// &142 + Dir Debug Add = 46,
// &143 + Dir Debug Etype = 47,
// &144 + Dir L Proc Ptr = 48
// &145
// &146 %const %integer Dir BSS Disp = 49
// &147
// &148 %const %integer Last Dir = 49
// &149
// &150 !
// &151 ! Codes used in Blocks Stream
// &152 !
// &153 %const %integer Blk End = 0, {end of nested block}
// &154 + Blk Start = 1, {start of nested block}
// &155 + Blk Local X = 2, {current block is a 'C' static fn, give id}
// &156 + Blk AreaSize= 3, {pass size of general area to pass 3}
// &157 + Blk Cache = 4, {cache heavily-used static data in frame}
// &158 + Blk Attr = 5, {set block attributes}
// &159 + Blk X Ref = 6, {define ident for Xno}
// &160 + Blk X Pointed To=7,{mark extern fn <xno> as operand of C '&' op}
// &161 + Blk Call = 8, {call to local procedure block <label>}
// &162 + Blk X Call = 9 {call to external procedure <xno>}
// &163
// &164 !
// &165 ! Block Attribute bits
// &166 !
// &167 %const %integer %c
// &168 + Attr Inner Uses = 1<<0, {nested blocks use this ones local vars}
// &169 + Attr Uses Outer = 1<<1, {uses non-local variables: needs display}
// &170 + Attr Simple Display = 1<<2, {Display is only 1 word: pass by value}
// &171 + Attr Calls = 1<<3, {block contains calls to other blocks}
// &172 + Attr Xdef = 1<<4, {block is an external procedure}
// &173 + Attr Needs Gp = 1<<5, {needs GLA base set up in display}
// &174 + Attr Internal Calls = 1<<6, {block contains a non-external call}
// &175 + Attr Occam Ep = 1<<7, {block is main entry pt called from occam}
// &176 + Attr Dynamic Arrays = 1<<8, {block contains dynamic array declarations}
// &177 + Attr Pointed To Fn = 1<<9, {017} {C fn used as operand of '&' op}
// &178 + Attr Zap Temp = 1<<10 {018} {clear halfword temporary}
// &179
// &180 {PSR} %constinteger %c
// &181 + {PSR} Attr Raw SL = 1<<11, {Static link not processed}
// &182 + {PSR} Attr Old SL = 1<<12 {Static link stored in old (param) location}
// &183
// &184 %const %integer %c
// &185 + Attr Invalid Link = 1<<13, {024} {gash link word in}
// &186 + Attr No Link Slot = 1<<14, {024} {address params without link offset}
// &187 + Attr Set Gp = 1<<15 {026} {this block, OR ONE IT CALLS, needs GP}
// &188
// &189
// &190 !
// &191 ! Frame area codes
// &192 !
// &193 %const %integer Code Area = 0,
// &194 + Own Area = 1,
// &195 + Constant Area = 2,
// &196 + Array Area = 3, {directly addressible arrays}
// &197 + Diag Area = 4,
// &198 + Reloc Area = 5,
// &199 + Display Area = 6,
// &200 + Literal Area = 7,
// &201 + Param Area = 8, {arguments to current procedure}
// &202 + Local Area = 9, {local scalar variables of current proc}
// &203 + Argument Area = 10, {displacement from Areg as base}
// &204 + Dummy Area = 11, {used when selecting general areas}
// &205 + Cache Area = 12, {copies of heavily-used static data words}
// &206 + BSS Area = 13 {uninitialised part of OWN area}
// &207
// &208 %const %integer Max Area = 13
// &209
// &210 %const %string(7) %array Area Id ( 0: Max Area ) =
// &211 + "Code", "Own", "Const", "Array", "Diag", "Reloc", "Display",
// &212 + "Literal", "Param", "Local", "Arg", "Dummy", "Cache", "BSS"
// &213
// &214 !
// &215 ! Bits in Diag Area header word
// &216 !
// &217 %const %integer Diag Proc = 1<<0
// &218
// &219 !
// &220 ! Bits in Pass2 return status word
// &221 !
// &222 %const %integer Pass2 Error = 1<<0 {errors detected by Pass2}
// &223
// &224 %endoffile
// 30 !%from CG %include Stream3L
extern void OPENLLOUTPUT(int STREAMNO, int FILETYPE, int FLAGS, _imp_string255 FILENAME,
_imp_string255 RELNAME) __asm__("GATT_OPEN_OUTPUT");
// 31 %include "Stream3L.inc"
// &1 ! Copyright (C) 3L Ltd. 1987-1992
// &2
// &3 {stream definitions for passes 2 & 3}
// &4
// &5 %constinteger Source = 1, Predef In = 2
// &6
// &7 %constinteger Icode In = 1, Icode Out = 1,
// &8 + Icode In2 = 2,
// &9 + Report = 0,
// &10 + Objectives Out = 1, Objectives In = 1, PrimObj In = 3,
// &11 + Directives Out = 2, Directives In = 2, PrimDir In = 4,
// &12 + Object Out = 1, Decode Out = 3,
// &13 + Listing = 7
// &14
// &15 %endoffile
// 32 !%from IMP %include Lognames
extern void CONNECTLLFILE(int FILETYPE, int FLAGS, _imp_string255 FILENAME, _imp_string255 RELNAME, int WRITEABLE,
int *STARTADDR, int *BYTESMAPPED) __asm__("LL_CONNECT_FILE");
// 33 !%from IMP %include Diag IO
// 34
// 35 %external %routine %spec Delete %alias "IMP_DELETE" ( %string(255) Filename )
// 36 %external %string(255) %fn %spec Get Env %alias "IMP___GET_ENV"(%string(255) s)
// 37
// 38 {
// 39 { Misc
// 40 {
// 41 %const %integer Predef Stream = 2
extern void DISCONNECTLLFILE(int ADDRESS) __asm__("LL_DISCONNECT_FILE");
// 42 %const %integer Listing Stream = 7
extern _imp_string7 LANGUAGENAME;
// 43 %const %integer Yes = 1, No = 0
extern int LANGUAGE;
// 44 %const %integer Debugs Enabled = Yes {Set to 'No' to inhibit the /? switch}
struct GLOBALFM {
union {
struct {
_imp_string255 *SOURCEFILE;
_imp_string255 *MODULE;
_imp_string31 *COMPILERID;
int BLOCKS;
int ITEMS;
int LABELS;
int FLAGS;
int EXTERNALS;
int LOCALXS;
int STATICSIZE;
int CODESIZE;
int CONSTSIZE;
int DIAGAREASIZE;
int GENERALAREAS;
int TARGET;
int CODEPATCHSZ;
int DATAPATCHSZ;
int FRAGARRAYSIZE;
int MODULEPATCHSZ;
int DSPECS;
int CALLS;
int BSSSIZE;
};
struct {
int PAD[20];
};
};
};
// 45 %const %integer IO Error = {IMP event number} 9,
// 46+ Special P2 Diag Bit = 1 << 31
// 47
// 48 { Default settings for various function flags
// 49 %const %integer Default Options = LL Warn ! LL Report ! LL Over ! LL Predef,
// 50+ Default Keep = No,
// 51+ Default Dump Dir = No,
// 52+ Default Want Log = No,
// 53+ Default Want Listing= No,
// 54+ Default Want Obj = Yes,
// 55+ Default Want Bin = Yes,
// 56+ Default Want Hex = No
// 57
// 58 %const %integer NTemps = 3 { Number of temp files needed }
// 59
// 60 %external %routine %spec PASS1 ( %integer %name Stats, Faults,
// 61+ %integer Flags )
// 62 %external %integer %fn %spec PASS2 ( %integer Options, LL Options,
// 63+ %record(Global Fm) %name Global )
// 64 %own %integer Pass 2 Result
// 65
// 66 %external %string(255) %function Actual Include %alias "ACTINC" ( %string(255) M, F )
// 67 !
// 68 ! Handle "current place" form, ie null M
// 69 !
// 70 %result = F . ".INC" %if M = ""
// 71 M = Upper Case(M) . "_INC"
// 72 M = Get Env(M)
// 73 M = M . "\" %if M # ""
// 74 %result = M . F . ".INC"
// 75 %end
// 76
// 77 {###############################################}
// 78 {###############################################}
// 79 {### ###}
// 80 {### P R E D E F I N I T I O N F I L E ###}
// 81 {### ###}
// 82 {###############################################}
// 83 {###############################################}
// 84
// 85 %external %routine %spec Open Store Input %alias "IMP_OPEN_STORE_INPUT" %c
// 86+ (%integer Stream, Loc, Len)
// 87
// 88 %include "IT4predef.inc"
// &1 %const %integer Predef Size = 4853
// &2 %const %byte %array Predef Data ( 1: 4853 ) =
// &3 + '%', 'p', 'r', 'i', 'm', '(', '1', ')', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r',
// &4 + 'f', 'n', 's', 'p', 'e', 'c', ' ', 'A', 'd', 'd', 'r', '(', '%', 'n', 'a', 'm',
// &5 + 'e', ' ', 'X', ')', NL, '%', 'p', 'r', 'i', 'm', '(', '3', ')', '%', 's', 't',
// &6 + 'r', 'i', 'n', 'g', '(', '*', ')', '%', 'm', 'a', 'p', 's', 'p', 'e', 'c', ' ',
// &7 + 'S', 't', 'r', 'i', 'n', 'g', '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ',
// &8 + 'A', ')', NL, '%', 'p', 'r', 'i', 'm', '(', '4', ')', '%', 'i', 'n', 't', 'e',
// &9 + 'g', 'e', 'r', 'm', 'a', 'p', 's', 'p', 'e', 'c', ' ', 'I', 'n', 't', 'e', 'g',
// &10 + 'e', 'r', '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'A', ')', NL, '%',
// &11 + 'p', 'r', 'i', 'm', '(', '5', ')', '%', 's', 'h', 'o', 'r', 't', 'm', 'a', 'p',
// &12 + 's', 'p', 'e', 'c', ' ', 'S', 'h', 'o', 'r', 't', 'I', 'n', 't', 'e', 'g', 'e',
// &13 + 'r', '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'A', ')', NL, '%', 'p',
// &14 + 'r', 'i', 'm', '(', '5', ')', '%', 's', 'h', 'o', 'r', 't', 'm', 'a', 'p', 's',
// &15 + 'p', 'e', 'c', ' ', 'S', 'h', 'o', 'r', 't', '(', '%', 'i', 'n', 't', 'e', 'g',
// &16 + 'e', 'r', ' ', 'A', ')', NL, '%', 'p', 'r', 'i', 'm', '(', '6', ')', '%', 'b',
// &17 + 'y', 't', 'e', 'm', 'a', 'p', 's', 'p', 'e', 'c', ' ', 'B', 'y', 't', 'e', 'I',
// &18 + 'n', 't', 'e', 'g', 'e', 'r', '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ',
// &19 + 'A', ')', NL, '%', 'p', 'r', 'i', 'm', '(', '6', ')', '%', 'b', 'y', 't', 'e',
// &20 + 'm', 'a', 'p', 's', 'p', 'e', 'c', ' ', 'B', 'y', 't', 'e', '(', '%', 'i', 'n',
// &21 + 't', 'e', 'g', 'e', 'r', ' ', 'A', ')', NL, '%', 'p', 'r', 'i', 'm', '(', '7',
// &22 + ')', '%', 'r', 'e', 'a', 'l', 'm', 'a', 'p', 's', 'p', 'e', 'c', ' ', 'R', 'e',
// &23 + 'a', 'l', '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'A', ')', NL, '%',
// &24 + 'p', 'r', 'i', 'm', '(', '8', ')', '%', 'l', 'o', 'n', 'g', 'r', 'e', 'a', 'l',
// &25 + 'm', 'a', 'p', 's', 'p', 'e', 'c', ' ', 'L', 'o', 'n', 'g', 'R', 'e', 'a', 'l',
// &26 + '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'A', ')', NL, '%', 'p', 'r',
// &27 + 'i', 'm', '(', '9', ')', '%', 'r', 'e', 'c', 'o', 'r', 'd', '(', '*', ')', '%',
// &28 + 'm', 'a', 'p', 's', 'p', 'e', 'c', ' ', 'R', 'e', 'c', 'o', 'r', 'd', '(', '%',
// &29 + 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'A', ')', NL, '%', 'p', 'r', 'i', 'm',
// &30 + '(', '1', '1', ')', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', 'f', 'n', 's', 'p',
// &31 + 'e', 'c', ' ', 'R', 'e', 'm', '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ',
// &32 + 'A', ',', 'B', ')', NL, '%', 'p', 'r', 'i', 'm', '(', '1', '2', ')', '%', 'b',
// &33 + 'y', 't', 'e', 'm', 'a', 'p', 's', 'p', 'e', 'c', ' ', 'L', 'e', 'n', 'g', 't',
// &34 + 'h', '(', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', 'S', ')',
// &35 + NL, '%', 'p', 'r', 'i', 'm', '(', '1', '3', ')', '%', 'b', 'y', 't', 'e', 'm',
// &36 + 'a', 'p', 's', 'p', 'e', 'c', ' ', 'C', 'h', 'a', 'r', 'n', 'o', '(', '%', 's',
// &37 + 't', 'r', 'i', 'n', 'g', '(', '*', ')', '%', 'n', 'a', 'm', 'e', ' ', 'S', ',',
// &38 + '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'N', ')', NL, '%', 'p', 'r', 'i',
// &39 + 'm', '(', '1', '4', ')', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '1', ')', '%',
// &40 + 'f', 'n', 's', 'p', 'e', 'c', ' ', 'S', 'N', 'L', NL, '%', 'p', 'r', 'i', 'm',
// &41 + '(', '1', '5', ')', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '1', ')', '%', 'f',
// &42 + 'n', 's', 'p', 'e', 'c', ' ', 'T', 'o', 'S', 't', 'r', 'i', 'n', 'g', '(', '%',
// &43 + 'b', 'y', 't', 'e', ' ', 'N', ')', NL, '%', 'p', 'r', 'i', 'm', '(', '1', '6',
// &44 + ')', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', 'f', 'n', 's', 'p', 'e', 'c', ' ',
// &45 + 'S', 'i', 'z', 'e', 'O', 'f', '(', '%', 'n', 'a', 'm', 'e', ' ', 'N', ')', NL,
// &46 + '%', 'p', 'r', 'i', 'm', '(', '1', '7', ')', '%', 'i', 'n', 't', 'e', 'g', 'e',
// &47 + 'r', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'T', 'y', 'p', 'e', 'O', 'f', '(', '%',
// &48 + 'n', 'a', 'm', 'e', ' ', 'N', ')', NL, '%', 'p', 'r', 'i', 'm', '(', '2', '0',
// &49 + ')', '%', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'R', 'e',
// &50 + 'a', 'd', 'S', 'y', 'm', 'b', 'o', 'l', '(', '%', 'n', 'a', 'm', 'e', ' ', 'N',
// &51 + ')', NL, '%', 'p', 'r', 'i', 'm', '(', '2', '1', ')', '%', 'r', 'o', 'u', 't',
// &52 + 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'S', 'k', 'i', 'p', 'S', 'y', 'm', 'b',
// &53 + 'o', 'l', NL, '%', 'c', 'o', 'n', 's', 't', 'r', 'e', 'c', 'o', 'r', 'd', '(',
// &54 + '*', ')', '%', 'n', 'a', 'm', 'e', ' ', 'N', 'I', 'L', '=', '=', '0', NL, '%',
// &55 + 'c', 'o', 'n', 's', 't', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'N', 'L', '=',
// &56 + '1', '0', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't',
// &57 + 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'S', 'p', 'a', 'c', 'e', '%', 'a', 'l',
// &58 + 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'S', 'P', 'A', 'C', 'E', '"', NL, '%',
// &59 + 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's',
// &60 + 'p', 'e', 'c', ' ', 'N', 'e', 'w', 'L', 'i', 'n', 'e', '%', 'a', 'l', 'i', 'a',
// &61 + 's', '"', 'I', 'M', 'P', '_', 'N', 'E', 'W', '_', 'L', 'I', 'N', 'E', '"', NL,
// &62 + '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e',
// &63 + 's', 'p', 'e', 'c', ' ', 'N', 'e', 'w', 'L', 'i', 'n', 'e', 's', '%', 'a', 'l',
// &64 + 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'N', 'E', 'W', '_', 'L', 'I', 'N', 'E',
// &65 + 'S', '"', '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'N', ')', NL, '%',
// &66 + 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's',
// &67 + 'p', 'e', 'c', ' ', 'N', 'e', 'w', 'P', 'a', 'g', 'e', '%', 'a', 'l', 'i', 'a',
// &68 + 's', '"', 'I', 'M', 'P', '_', 'N', 'E', 'W', '_', 'P', 'A', 'G', 'E', '"', NL,
// &69 + '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e',
// &70 + 's', 'p', 'e', 'c', ' ', 'S', 'p', 'a', 'c', 'e', 's', '%', 'a', 'l', 'i', 'a',
// &71 + 's', '"', 'I', 'M', 'P', '_', 'S', 'P', 'A', 'C', 'E', 'S', '"', '(', '%', 'i',
// &72 + 'n', 't', 'e', 'g', 'e', 'r', ' ', 'N', ')', NL, '%', 'e', 'x', 't', 'e', 'r',
// &73 + 'n', 'a', 'l', 'b', 'y', 't', 'e', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'N', 'e',
// &74 + 'x', 't', 'S', 'y', 'm', 'b', 'o', 'l', '%', 'a', 'l', 'i', 'a', 's', '"', 'I',
// &75 + 'M', 'P', '_', 'N', 'E', 'X', 'T', '_', 'S', 'Y', 'M', 'B', 'O', 'L', '"', NL,
// &76 + '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e',
// &77 + 's', 'p', 'e', 'c', ' ', 'P', 'r', 'i', 'n', 't', 'S', 'y', 'm', 'b', 'o', 'l',
// &78 + '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'P', 'R', 'I', 'N', 'T',
// &79 + '_', 'S', 'Y', 'M', 'B', 'O', 'L', '"', '(', '%', 'b', 'y', 't', 'e', ' ', 'S',
// &80 + 'y', 'm', ')', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u',
// &81 + 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'P', 'r', 'i', 'n', 't', 'S', 't',
// &82 + 'r', 'i', 'n', 'g', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'P',
// &83 + 'R', 'I', 'N', 'T', '_', 'S', 'T', 'R', 'I', 'N', 'G', '"', '(', '%', 's', 't',
// &84 + 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', 'S', ')', NL, '%', 'e', 'x', 't',
// &85 + 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c',
// &86 + ' ', 'W', 'r', 'i', 't', 'e', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P',
// &87 + '_', 'W', 'R', 'I', 'T', 'E', '"', '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r',
// &88 + ' ', 'N', ',', 'P', 'l', 'a', 'c', 'e', 's', ')', NL, '%', 'e', 'x', 't', 'e',
// &89 + 'r', 'n', 'a', 'l', 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', '%',
// &90 + 'f', 'n', 's', 'p', 'e', 'c', ' ', 'S', 'u', 'b', 'S', 't', 'r', 'i', 'n', 'g',
// &91 + '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'S', 'U', 'B', '_', 'S',
// &92 + 'T', 'R', 'I', 'N', 'G', '"', '(', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '2',
// &93 + '5', '5', ')', 'S', ',', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'F', 'r',
// &94 + 'o', 'm', ',', 'T', 'o', ')', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l',
// &95 + 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', '%', 'f', 'n', 's', 'p',
// &96 + 'e', 'c', ' ', 'I', 'T', 'o', 'S', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M',
// &97 + 'P', '_', 'I', '_', 'T', 'O', '_', 'S', '"', '(', '%', 'i', 'n', 't', 'e', 'g',
// &98 + 'e', 'r', ' ', 'N', ',', 'P', ')', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a',
// &99 + 'l', 'i', 'n', 't', 'e', 'g', 'e', 'r', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'S',
// &100 + 'T', 'o', 'I', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'S', '_',
// &101 + 'T', 'O', '_', 'I', '"', '(', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5',
// &102 + '5', ')', 'S', ')', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'p', 'r',
// &103 + 'e', 'd', 'i', 'c', 'a', 't', 'e', 's', 'p', 'e', 'c', ' ', 'E', 'n', 'd', 'O',
// &104 + 'f', 'I', 'n', 'p', 'u', 't', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P',
// &105 + '_', 'E', 'N', 'D', '_', 'O', 'F', '_', 'I', 'N', 'P', 'U', 'T', '"', NL, '%',
// &106 + 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'i', 'n', 't', 'e', 'g', 'e', 'r', 'f',
// &107 + 'n', 's', 'p', 'e', 'c', ' ', 'I', 'n', 'p', 'u', 't', 'S', 't', 'r', 'e', 'a',
// &108 + 'm', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'I', 'N', 'P', 'U',
// &109 + 'T', '_', 'S', 'T', 'R', 'E', 'A', 'M', '"', NL, '%', 'e', 'x', 't', 'e', 'r',
// &110 + 'n', 'a', 'l', 'i', 'n', 't', 'e', 'g', 'e', 'r', 'f', 'n', 's', 'p', 'e', 'c',
// &111 + ' ', 'O', 'u', 't', 'p', 'u', 't', 'S', 't', 'r', 'e', 'a', 'm', '%', 'a', 'l',
// &112 + 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'O', 'U', 'T', 'P', 'U', 'T', '_', 'S',
// &113 + 'T', 'R', 'E', 'A', 'M', '"', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l',
// &114 + 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'S', 'e', 'l', 'e',
// &115 + 'c', 't', 'I', 'n', 'p', 'u', 't', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M',
// &116 + 'P', '_', 'S', 'E', 'L', 'E', 'C', 'T', '_', 'I', 'N', 'P', 'U', 'T', '"', '(',
// &117 + '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'N', ')', NL, '%', 'e', 'x', 't',
// &118 + 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c',
// &119 + ' ', 'S', 'e', 'l', 'e', 'c', 't', 'O', 'u', 't', 'p', 'u', 't', '%', 'a', 'l',
// &120 + 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'S', 'E', 'L', 'E', 'C', 'T', '_', 'O',
// &121 + 'U', 'T', 'P', 'U', 'T', '"', '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ',
// &122 + 'N', ')', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't',
// &123 + 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'C', 'l', 'o', 's', 'e', 'I', 'n', 'p',
// &124 + 'u', 't', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'C', 'L', 'O',
// &125 + 'S', 'E', '_', 'I', 'N', 'P', 'U', 'T', '"', NL, '%', 'e', 'x', 't', 'e', 'r',
// &126 + 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'C',
// &127 + 'l', 'o', 's', 'e', 'O', 'u', 't', 'p', 'u', 't', '%', 'a', 'l', 'i', 'a', 's',
// &128 + '"', 'I', 'M', 'P', '_', 'C', 'L', 'O', 'S', 'E', '_', 'O', 'U', 'T', 'P', 'U',
// &129 + 'T', '"', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't',
// &130 + 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'P', 'r', 'o', 'm', 'p', 't', '%', 'a',
// &131 + 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'P', 'R', 'O', 'M', 'P', 'T', '"',
// &132 + '(', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', 'S', ')', NL,
// &133 + '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'e', 'c', 'o', 'r', 'd', '(',
// &134 + '*', ')', '%', 'm', 'a', 'p', 's', 'p', 'e', 'c', ' ', 'N', 'e', 'w', '%', 'a',
// &135 + 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'N', 'E', 'W', '"', '(', '%', 'n',
// &136 + 'a', 'm', 'e', ' ', 'T', ')', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l',
// &137 + 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'D', 'i', 's', 'p',
// &138 + 'o', 's', 'e', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'D', 'I',
// &139 + 'S', 'P', 'O', 'S', 'E', '"', '(', '%', 'n', 'a', 'm', 'e', ' ', 'X', ')', NL,
// &140 + '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e',
// &141 + 's', 'p', 'e', 'c', ' ', 'R', 'e', 'a', 'd', '%', 'a', 'l', 'i', 'a', 's', '"',
// &142 + 'I', 'M', 'P', '_', 'R', 'E', 'A', 'D', '"', '(', '%', 'n', 'a', 'm', 'e', ' ',
// &143 + 'N', ')', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't',
// &144 + 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'R', 'e', 's', 'e', 't', 'I', 'n', 'p',
// &145 + 'u', 't', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'R', 'E', 'S',
// &146 + 'E', 'T', '_', 'I', 'N', 'P', 'U', 'T', '"', NL, '%', 'e', 'x', 't', 'e', 'r',
// &147 + 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'R',
// &148 + 'e', 's', 'e', 't', 'O', 'u', 't', 'p', 'u', 't', '%', 'a', 'l', 'i', 'a', 's',
// &149 + '"', 'I', 'M', 'P', '_', 'R', 'E', 'S', 'E', 'T', '_', 'O', 'U', 'T', 'P', 'U',
// &150 + 'T', '"', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'i', 'n', 't', 'e',
// &151 + 'g', 'e', 'r', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'I', 'n', 't', '%', 'a', 'l',
// &152 + 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'I', 'N', 'T', '"', '(', '%', 'l', 'o',
// &153 + 'n', 'g', 'r', 'e', 'a', 'l', ' ', 'X', ')', NL, '%', 'e', 'x', 't', 'e', 'r',
// &154 + 'n', 'a', 'l', 'i', 'n', 't', 'e', 'g', 'e', 'r', 'f', 'n', 's', 'p', 'e', 'c',
// &155 + ' ', 'I', 'n', 't', 'P', 't', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P',
// &156 + '_', 'I', 'N', 'T', '_', 'P', 'T', '"', '(', '%', 'l', 'o', 'n', 'g', 'r', 'e',
// &157 + 'a', 'l', ' ', 'X', ')', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'i',
// &158 + 'n', 't', 'e', 'g', 'e', 'r', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'T', 'r', 'u',
// &159 + 'n', 'c', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'T', 'R', 'U',
// &160 + 'N', 'C', '"', '(', '%', 'l', 'o', 'n', 'g', 'r', 'e', 'a', 'l', ' ', 'X', ')',
// &161 + NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n',
// &162 + 'e', 's', 'p', 'e', 'c', ' ', 'P', 'r', 'i', 'n', 't', '%', 'a', 'l', 'i', 'a',
// &163 + 's', '"', 'I', 'M', 'P', '_', 'P', 'R', 'I', 'N', 'T', '"', '(', '%', 'l', 'o',
// &164 + 'n', 'g', 'r', 'e', 'a', 'l', ' ', 'X', ',', '%', 'i', 'n', 't', 'e', 'g', 'e',
// &165 + 'r', ' ', 'A', ',', 'B', ')', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l',
// &166 + 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'P', 'r', 'i', 'n',
// &167 + 't', 'F', 'l', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'P', 'R',
// &168 + 'I', 'N', 'T', '_', 'F', 'L', '"', '(', '%', 'l', 'o', 'n', 'g', 'r', 'e', 'a',
// &169 + 'l', ' ', 'X', ',', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'P', 'l', 'a',
// &170 + 'c', 'e', 's', ')', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o',
// &171 + 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'O', 'p', 'e', 'n', 'I', 'n',
// &172 + 'p', 'u', 't', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'O', 'P',
// &173 + 'E', 'N', '_', 'I', 'N', 'P', 'U', 'T', '"', '(', '%', 'i', 'n', 't', 'e', 'g',
// &174 + 'e', 'r', ' ', 'S', 't', 'r', 'e', 'a', 'm', ',', '%', 's', 't', 'r', 'i', 'n',
// &175 + 'g', '(', '2', '5', '5', ')', 'F', 'i', 'l', 'e', ')', NL, '%', 'e', 'x', 't',
// &176 + 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c',
// &177 + ' ', 'O', 'p', 'e', 'n', 'O', 'u', 't', 'p', 'u', 't', '%', 'a', 'l', 'i', 'a',
// &178 + 's', '"', 'I', 'M', 'P', '_', 'O', 'P', 'E', 'N', '_', 'O', 'U', 'T', 'P', 'U',
// &179 + 'T', '"', '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'S', 't', 'r', 'e',
// &180 + 'a', 'm', ',', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', 'F',
// &181 + 'i', 'l', 'e', ')', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o',
// &182 + 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'O', 'p', 'e', 'n', 'B', 'i',
// &183 + 'n', 'a', 'r', 'y', 'I', 'n', 'p', 'u', 't', '%', 'a', 'l', 'i', 'a', 's', '-',
// &184 + NL, '"', 'I', 'M', 'P', '_', 'O', 'P', 'E', 'N', '_', 'B', 'I', 'N', 'A', 'R',
// &185 + 'Y', '_', 'I', 'N', 'P', 'U', 'T', '"', '(', '%', 'i', 'n', 't', 'e', 'g', 'e',
// &186 + 'r', ' ', 'S', 't', 'r', 'e', 'a', 'm', ',', '%', 's', 't', 'r', 'i', 'n', 'g',
// &187 + '(', '2', '5', '5', ')', 'F', 'i', 'l', 'e', ')', NL, '%', 'e', 'x', 't', 'e',
// &188 + 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ',
// &189 + 'O', 'p', 'e', 'n', 'B', 'i', 'n', 'a', 'r', 'y', 'O', 'u', 't', 'p', 'u', 't',
// &190 + '%', 'a', 'l', 'i', 'a', 's', '-', NL, '"', 'I', 'M', 'P', '_', 'O', 'P', 'E',
// &191 + 'N', '_', 'B', 'I', 'N', 'A', 'R', 'Y', '_', 'O', 'U', 'T', 'P', 'U', 'T', '"',
// &192 + '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'S', 't', 'r', 'e', 'a', 'm',
// &193 + ',', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', 'F', 'i', 'l',
// &194 + 'e', ')', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't',
// &195 + 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'R', 'e', 'a', 'd', 'L', 'i', 'n', 'e',
// &196 + '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'R', 'E', 'A', 'D', '_',
// &197 + 'L', 'I', 'N', 'E', '"', '(', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '*', ')',
// &198 + '%', 'n', 'a', 'm', 'e', ' ', 'S', ')', NL, '%', 'e', 'x', 't', 'e', 'r', 'n',
// &199 + 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'T', 'o',
// &200 + 'U', 'p', 'p', 'e', 'r', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_',
// &201 + 'T', 'O', '_', 'U', 'P', 'P', 'E', 'R', '"', '(', '%', 's', 't', 'r', 'i', 'n',
// &202 + 'g', '(', '*', ')', '%', 'n', 'a', 'm', 'e', ' ', 'S', ')', NL, '%', 'e', 'x',
// &203 + 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e',
// &204 + 'c', ' ', 'T', 'o', 'L', 'o', 'w', 'e', 'r', '%', 'a', 'l', 'i', 'a', 's', '"',
// &205 + 'I', 'M', 'P', '_', 'T', 'O', '_', 'L', 'O', 'W', 'E', 'R', '"', '(', '%', 's',
// &206 + 't', 'r', 'i', 'n', 'g', '(', '*', ')', '%', 'n', 'a', 'm', 'e', ' ', 'S', ')',
// &207 + NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 's', 't', 'r', 'i', 'n', 'g',
// &208 + '(', '2', '5', '5', ')', '%', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', 's', 'p',
// &209 + 'e', 'c', ' ', 'L', 'O', 'W', 'E', 'R', 'C', 'A', 'S', 'E', '%', 'a', 'l', 'i',
// &210 + 'a', 's', '"', 'I', 'M', 'P', '_', 'L', 'O', 'W', 'E', 'R', '_', 'C', 'A', 'S',
// &211 + 'E', '"', '(', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', 'S',
// &212 + ')', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 's', 't', 'r', 'i', 'n',
// &213 + 'g', '(', '2', '5', '5', ')', '%', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', 's',
// &214 + 'p', 'e', 'c', ' ', 'U', 'P', 'P', 'E', 'R', 'C', 'A', 'S', 'E', '%', 'a', 'l',
// &215 + 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'U', 'P', 'P', 'E', 'R', '_', 'C', 'A',
// &216 + 'S', 'E', '"', '(', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')',
// &217 + 'S', ')', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 's', 't', 'r', 'i',
// &218 + 'n', 'g', '(', '2', '5', '5', ')', '%', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'I',
// &219 + 'n', 'p', 'u', 't', 'N', 'a', 'm', 'e', '%', 'a', 'l', 'i', 'a', 's', '"', 'I',
// &220 + 'M', 'P', '_', 'I', 'N', 'P', 'U', 'T', '_', 'N', 'A', 'M', 'E', '"', NL, '%',
// &221 + 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 's', 't', 'r', 'i', 'n', 'g', '(', '2',
// &222 + '5', '5', ')', '%', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'O', 'u', 't', 'p', 'u',
// &223 + 't', 'N', 'a', 'm', 'e', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_',
// &224 + 'O', 'U', 'T', 'P', 'U', 'T', '_', 'N', 'A', 'M', 'E', '"', NL, '%', 'e', 'x',
// &225 + 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e',
// &226 + 'c', ' ', 'A', 'b', 'a', 'n', 'd', 'o', 'n', 'I', 'n', 'p', 'u', 't', '%', 'a',
// &227 + 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'A', 'B', 'A', 'N', 'D', 'O', 'N',
// &228 + '_', 'I', 'N', 'P', 'U', 'T', '"', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a',
// &229 + 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'C', 'o', 'm',
// &230 + 'p', 'l', 'e', 't', 'e', 'I', 'n', 'p', 'u', 't', '%', 'a', 'l', 'i', 'a', 's',
// &231 + '"', 'I', 'M', 'P', '_', 'C', 'O', 'M', 'P', 'L', 'E', 'T', 'E', '_', 'I', 'N',
// &232 + 'P', 'U', 'T', '"', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o',
// &233 + 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'A', 'b', 'a', 'n', 'd', 'o',
// &234 + 'n', 'O', 'u', 't', 'p', 'u', 't', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M',
// &235 + 'P', '_', 'A', 'B', 'A', 'N', 'D', 'O', 'N', '_', 'O', 'U', 'T', 'P', 'U', 'T',
// &236 + '"', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i',
// &237 + 'n', 'e', 's', 'p', 'e', 'c', ' ', 'C', 'o', 'm', 'p', 'l', 'e', 't', 'e', 'O',
// &238 + 'u', 't', 'p', 'u', 't', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_',
// &239 + 'C', 'O', 'M', 'P', 'L', 'E', 'T', 'E', '_', 'O', 'U', 'T', 'P', 'U', 'T', '"',
// &240 + NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 's', 't', 'r', 'i', 'n', 'g',
// &241 + '(', '2', '5', '5', ')', '%', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', 's', 'p',
// &242 + 'e', 'c', ' ', 'D', 'A', 'T', 'E', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M',
// &243 + 'P', '_', 'D', 'A', 'T', 'E', '"', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a',
// &244 + 'l', 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', '%', 'f', 'u', 'n',
// &245 + 'c', 't', 'i', 'o', 'n', 's', 'p', 'e', 'c', ' ', 'T', 'I', 'M', 'E', '%', 'a',
// &246 + 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'T', 'I', 'M', 'E', '"', NL, '%',
// &247 + 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'l', 'o', 'n', 'g', 'r', 'e', 'a', 'l',
// &248 + 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', 's', 'p', 'e', 'c', ' ', 'C', 'P', 'U',
// &249 + 'T', 'i', 'm', 'e', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'C',
// &250 + 'P', 'U', '_', 'T', 'I', 'M', 'E', '"', NL, '%', 'e', 'x', 't', 'e', 'r', 'n',
// &251 + 'a', 'l', 'l', 'o', 'n', 'g', 'r', 'e', 'a', 'l', 'f', 'n', 's', 'p', 'e', 'c',
// &252 + ' ', 'S', 'T', 'o', 'R', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_',
// &253 + 'S', '_', 'T', 'O', '_', 'R', '"', '(', '%', 's', 't', 'r', 'i', 'n', 'g', '(',
// &254 + '2', '5', '5', ')', 'S', ')', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l',
// &255 + 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', '%', 'f', 'n', 's', 'p',
// &256 + 'e', 'c', ' ', 'R', 'T', 'o', 'S', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M',
// &257 + 'P', '_', 'R', '_', 'T', 'O', '_', 'S', '"', '(', '%', 'l', 'o', 'n', 'g', 'r',
// &258 + 'e', 'a', 'l', ' ', 'X', ',', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'N',
// &259 + ',', 'O', ')', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 's', 't', 'r',
// &260 + 'i', 'n', 'g', '(', '2', '5', '5', ')', '%', 'f', 'n', 's', 'p', 'e', 'c', ' ',
// &261 + 'F', 'T', 'o', 'S', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'F',
// &262 + '_', 'T', 'O', '_', 'S', '"', '(', '%', 'l', 'o', 'n', 'g', 'r', 'e', 'a', 'l',
// &263 + ' ', 'X', ',', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'N', ',', 'O', ')',
// &264 + NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'p', 'r', 'e', 'd', 'i', 'c',
// &265 + 'a', 't', 'e', 's', 'p', 'e', 'c', ' ', 'I', 'n', 't', 'e', 'r', 'r', 'u', 'p',
// &266 + 't', 'e', 'd', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'I', 'N',
// &267 + 'T', 'E', 'R', 'R', 'U', 'P', 'T', 'E', 'D', '"', NL, '%', 'e', 'x', 't', 'e',
// &268 + 'r', 'n', 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ',
// &269 + 'D', 'o', 'i', 'n', 'g', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_',
// &270 + 'D', 'O', 'I', 'N', 'G', '"', '(', '%', 's', 't', 'r', 'i', 'n', 'g', '(', '2',
// &271 + '5', '5', ')', 'S', ')', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'i',
// &272 + 'n', 't', 'e', 'g', 'e', 'r', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'R', 'o', 'u',
// &273 + 'n', 'd', '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'R', 'O', 'U',
// &274 + 'N', 'D', '"', '(', '%', 'l', 'o', 'n', 'g', 'r', 'e', 'a', 'l', ' ', 'R', ')',
// &275 + NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'l', 'o', 'n', 'g', 'r', 'e',
// &276 + 'a', 'l', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'F', 'r', 'a', 'c', 'P', 't', '%',
// &277 + 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'F', 'R', 'A', 'C', '_', 'P',
// &278 + 'T', '"', '(', '%', 'l', 'o', 'n', 'g', 'r', 'e', 'a', 'l', ' ', 'R', ')', NL,
// &279 + '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'l', 'o', 'n', 'g', 'r', 'e', 'a',
// &280 + 'l', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n',
// &281 + '%', 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'F', 'R', 'A', 'C', 'T',
// &282 + 'I', 'O', 'N', '"', '(', '%', 'l', 'o', 'n', 'g', 'r', 'e', 'a', 'l', ' ', 'R',
// &283 + ')', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'l', 'o', 'n', 'g', 'r',
// &284 + 'e', 'a', 'l', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'F', 'l', 'o', 'a', 't', '%',
// &285 + 'a', 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'F', 'L', 'O', 'A', 'T', '"',
// &286 + '(', '%', 'l', 'o', 'n', 'g', 'r', 'e', 'a', 'l', ' ', 'R', ')', NL, '%', 'e',
// &287 + 'x', 't', 'e', 'r', 'n', 'a', 'l', 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5',
// &288 + '5', ')', '%', 'f', 'n', 's', 'p', 'e', 'c', ' ', 'T', 'r', 'i', 'm', '%', 'a',
// &289 + 'l', 'i', 'a', 's', '"', 'I', 'M', 'P', '_', 'T', 'R', 'I', 'M', '"', '(', '%',
// &290 + 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', 'S', ',', '%', 'i', 'n',
// &291 + 't', 'e', 'g', 'e', 'r', ' ', 'M', ')', NL, '%', 'e', 'x', 't', 'e', 'r', 'n',
// &292 + 'a', 'l', 'r', 'o', 'u', 't', 'i', 'n', 'e', 's', 'p', 'e', 'c', ' ', 'P', 'r',
// &293 + 'i', 'n', 't', 'F', 'l', 'o', 'a', 't', 'i', 'n', 'g', '%', 'a', 'l', 'i', 'a',
// &294 + 's', '"', 'I', 'M', 'P', '_', 'P', 'R', 'I', 'N', 'T', '_', 'F', 'L', 'O', 'A',
// &295 + 'T', 'I', 'N', 'G', '"', '(', '%', 'l', 'o', 'n', 'g', 'r', 'e', 'a', 'l', ' ',
// &296 + 'R', ',', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'P', ',', 'Q', ')', NL,
// &297 + '%', 'r', 'e', 'c', 'o', 'r', 'd', 'f', 'o', 'r', 'm', 'a', 't', ' ', 'E', 'v',
// &298 + 'e', 'n', 't', 'F', 'm', '(', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'E',
// &299 + 'v', 'e', 'n', 't', ',', 'S', 'u', 'b', ',', 'E', 'x', 't', 'r', 'a', ',', '%',
// &300 + 's', 't', 'r', 'i', 'n', 'g', '(', '2', '5', '5', ')', 'M', 'e', 's', 's', 'a',
// &301 + 'g', 'e', ',', '%', 'i', 'n', 't', 'e', 'g', 'e', 'r', ' ', 'P', 'C', ',', 'W',
// &302 + 'r', 'e', 'g', ')', NL, '%', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'r', 'e',
// &303 + 'c', 'o', 'r', 'd', '(', 'E', 'v', 'e', 'n', 't', 'F', 'm', ')', '%', 's', 'p',
// &304 + 'e', 'c', ' ', 'E', 'v', 'e', 'n', 't', '%', 'a', 'l', 'i', 'a', 's', '"', 'I',
// &305 + 'M', 'P', '_', 'E', 'V', 'E', 'N', 'T', '"', NL, '%', 'e', 'n', 'd', 'o', 'f',
// &306 + 'p', 'e', 'r', 'm', NL
// &307
// &308 %endoffile
// 89 !015!%include IT4predef
// 90 !015!%include IT4prede
// 91
// 92 %integer %fn First El (%byte %array %name B)
// 93 %result = Addr(B(1))
// 94 %end
// 95
// 96 !T!%routine Show (%string(255) S)
// 97 !T! Pstr(S); Psym (NL)
// 98 !T!%end
// 99
// 100 { ******************************************* }
// 101 { Temporary file manipulation }
// 102 { ******************************************* }
// 103 %own %byte %array Existing Temps (1:NTemps) = No(*)
// 104 %own %integer Keep = Default Keep
// 105 {
// 106 { Return name for temporary file N
// 107 %string(12) %fn Temp Fn (%integer File)
// 108 %result = "ITEMP." . Itos (File,0)
// 109 %end
// 110 {
// 111 { Delete temporary if exists and unless we are keeping them
// 112 %routine Delete Temp (%integer File)
// 113 %if Existing Temps (File) = Yes %and Keep = No %start
// 114 Delete (Temp Fn(File))
// 115 Existing Temps (File) = No
// 116 %finish
// 117 %end
// 118 {
// 119 { Open temporary file N for output
// 120 %routine Open Temp Output (%integer Stream, File)
// 121 %on %event IO Error %start
// 122 Fatal Error ("unable to create temporary file")
// 123 %finish
// 124 Open Binary Output (Stream, Temp Fn(File))
// 125 Existing Temps (File) = Yes
// 126 %end
// 127 {
// 128 { Open temporary file N for input
// 129 %routine Open Temp Input (%integer Stream, File)
// 130 %on %event IO Error %start
// 131 Fatal Error ("unable to access temporary file")
// 132 %finish
// 133 Open Binary Input (Stream, Temp Fn(File))
// 134 %end
// 135
// 136 { ******************************************* }
// 137 { Main IMP driver routine. }
// 138 { ******************************************* }
// 139
// 140 %routine IMP
// 141
// 142 %const %integer Default Module Patch Sz = 2
// 143 %const %integer Default Code Patch Sz = 6
// 144 %const %integer Default Data Patch Sz = 6
// 145 %const %integer Max Patch Sz = 8
// 146 %const %string (255) Sz Error = "range for patch size is 2 to "
// 147
// 148 %const %integer Frag Array Unit Size = 4000
// 149
// 150 { Things set up by processing command line }
// 151
// 152 %external %string(255) Source File = ""
// 153 %external %string(255) Module = ""
// 154 %string(255) Object File = ""
// 155 %string(255) Listing File = ""
// 156 %string(255) Switch Line = ""
// 157 %string(255) Requested Includes = ""
// 158 %integer Options, P3 Switch, Dump Dir, Want Log, Want Obj, Want Hex,
// 159+ Want Bin, Want Listing, Exclude Standard Includes
// 160
// 161 { *** NB: this string is used by the second pass and mustn't *** }
// 162 { *** be changed (for example, mustn't be changed to *** }
// 163 { *** 'Imp'). (Not seen by humans, anyhow...) *** }
// 164 %external %string(7) Language Name = "IMP"
// 165 %external %integer Language = 1
// 166
// 167 %record(Global Fm) Global Info = 0
// 168 Global Info_Compiler Id == Compiler Id
// 169 Global Info_Source File == Source File
// 170 Global Info_Module == Module
// 171 Global Info_Code Patch Sz = Default Code Patch Sz
// 172 Global Info_Data Patch Sz = Default Data Patch Sz
// 173 Global Info_Frag Array Size = Frag Array Unit Size * 1
// 174 Global Info_Module Patch Sz = Default Module Patch Sz
// 175
// 176 %integer Stats = 0, Faults = 0, J, OK
// 177
// 178 %routine Announce
// 179 Select Output(0)
// 180 Print String("Transputer Imp compiler, ")
// 181 Print String(Compiler Id); New Line
// 182 Print String("Copyright (C) 1989 3L Ltd"); New Line
// 183 %end
// 184
// 185 %routine Report (%integer Stream)
// 186 %return %if Faults = 0 %and Want Log = No
// 187 Select Output (Stream)
// 188 Write (Stats, 0)
// 189 Printstring (" statement"); Printsymbol ('s') %if Stats # 1
// 190 Printstring (" analysed; ")
// 191 %if Faults = 0 %then Printstring ("no") %c
// 192+ %else Write (Faults, 0)
// 193 Printstring (" fault"); Printsymbol ('s') %if Faults # 1
// 194 Printstring (" detected")
// 195 Newline
// 196 %end
// 197
// 198 %routine Set Global Flags
// 199 %const %string (255) LLL Environ Name = "3L_FLAG"
// 200 %string(255) Translated Name
// 201 %integer Value = 0
// 202
// 203 %on 4 %start {Stoi string not-a-number}
// 204 Value = Global Flag Plumbing; -> L {Print out leak info}
// 205 %finish
// 206
// 207 Translated Name = Translate(LLL Environ Name)
// 208 %if Translated Name # LLL Environ Name %start
// 209 Value = Stoi(Translated Name)
// 210 %finish
const _imp_string7 AREAID[14] = {_imp_str_init("Code"), _imp_str_init("Own"), _imp_str_init("Const"),
_imp_str_init("Array"), _imp_str_init("Diag"), _imp_str_init("Reloc"),
_imp_str_init("Display"), _imp_str_init("Literal"), _imp_str_init("Param"),
_imp_str_init("Local"), _imp_str_init("Arg"), _imp_str_init("Dummy"),
_imp_str_init("Cache"), _imp_str_init("BSS")};
// 211
extern void DELETE(_imp_string255 FILENAME) __asm__("IMP_DELETE");
// 212 Value = Value ! Global Flag Plumbing %if Language = 1 {Imp}
extern _imp_string255 GETENV(_imp_string255 S) __asm__("IMP___GET_ENV");
// 213
extern void PASS1(int *STATS, int *FAULTS, int FLAGS);
// 214 L: Global Info_Flags = Global Info_Flags ! Value
extern int PASS2(int OPTIONS, int LLOPTIONS, struct GLOBALFM *GLOBAL);
// 215 %end
static int PASS2RESULT;
// 216
_imp_string255 ACTUALINCLUDE(_imp_string255 M, _imp_string255 F) {
// 217 { ******************************************* }
if (_imp_strcmp((_imp_string *)/*?*/ &M, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_0001;
return *(_imp_string255 *)/*?*/ &
*({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &F, (_imp_string *)/*?*/ _imp_str_literal_ptr(".INC"));
(_imp_string255 *)&tmp;
})
;
L_0001:;
// 218 { Set up control locations in Passes 1 & 2 }
_imp_strncpy(/*?*/ &M, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp = _imp_join(({
__typeof__(_imp_string255) tmp; /*D*/
tmp = UPPERCASE(*({
__typeof__(_imp_string255) tmp = M /*q*/;
(_imp_string255 *)&tmp;
}));
(void *)&tmp;
}),
(_imp_string *)/*?*/ _imp_str_literal_ptr("_INC"));
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 255);
// 219 { ******************************************* }
_imp_strncpy(/*?*/ &M, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = GETENV(*({
__typeof__(_imp_string255) tmp = M /*q*/;
(_imp_string255 *)&tmp;
}));
(void *)&tmp;
}),
/*max:*/ 255);
// 220
if (_imp_strcmp((_imp_string *)/*?*/ &M, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) == 0) goto L_0002;
_imp_strncpy(/*?*/ &M, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &M, (_imp_string *)/*?*/ _imp_str_literal_ptr("\\"));
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 255);
L_0002:;
// 221 %constinteger Max Cram = 1
return *(_imp_string255 *)/*?*/ &
*({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &M, (_imp_string *)/*?*/ &F);
(_imp_string255 *)&tmp;
}),
(_imp_string *)/*?*/ _imp_str_literal_ptr(".INC"));
(_imp_string255 *)&tmp;
})
;
// 222 %integer %array Crams (1 : Max Cram)
} /* end of ACTUALINCLUDE */
// 223 %own %string (27) %array Cram Names (1 : Max Cram) = %c
extern void OPENSTOREINPUT(int STREAM, int LOC, int LEN) __asm__("IMP_OPEN_STORE_INPUT");
// 224+ "Code fragment array size"
const unsigned char PREDEFDATA[4853] = {
37, 112, 114, 105, 109, 40, 49, 41, 37, 105, 110, 116, 101, 103, 101, 114, 102, 110, 115, 112, 101, 99, 32,
65, 100, 100, 114, 40, 37, 110, 97, 109, 101, 32, 88, 41, 10, 37, 112, 114, 105, 109, 40, 51, 41, 37,
115, 116, 114, 105, 110, 103, 40, 42, 41, 37, 109, 97, 112, 115, 112, 101, 99, 32, 83, 116, 114, 105, 110,
103, 40, 37, 105, 110, 116, 101, 103, 101, 114, 32, 65, 41, 10, 37, 112, 114, 105, 109, 40, 52, 41, 37,
105, 110, 116, 101, 103, 101, 114, 109, 97, 112, 115, 112, 101, 99, 32, 73, 110, 116, 101, 103, 101, 114, 40,
37, 105, 110, 116, 101, 103, 101, 114, 32, 65, 41, 10, 37, 112, 114, 105, 109, 40, 53, 41, 37, 115, 104,
111, 114, 116, 109, 97, 112, 115, 112, 101, 99, 32, 83, 104, 111, 114, 116, 73, 110, 116, 101, 103, 101, 114,
40, 37, 105, 110, 116, 101, 103, 101, 114, 32, 65, 41, 10, 37, 112, 114, 105, 109, 40, 53, 41, 37, 115,
104, 111, 114, 116, 109, 97, 112, 115, 112, 101, 99, 32, 83, 104, 111, 114, 116, 40, 37, 105, 110, 116, 101,
103, 101, 114, 32, 65, 41, 10, 37, 112, 114, 105, 109, 40, 54, 41, 37, 98, 121, 116, 101, 109, 97, 112,
115, 112, 101, 99, 32, 66, 121, 116, 101, 73, 110, 116, 101, 103, 101, 114, 40, 37, 105, 110, 116, 101, 103,
101, 114, 32, 65, 41, 10, 37, 112, 114, 105, 109, 40, 54, 41, 37, 98, 121, 116, 101, 109, 97, 112, 115,
112, 101, 99, 32, 66, 121, 116, 101, 40, 37, 105, 110, 116, 101, 103, 101, 114, 32, 65, 41, 10, 37, 112,
114, 105, 109, 40, 55, 41, 37, 114, 101, 97, 108, 109, 97, 112, 115, 112, 101, 99, 32, 82, 101, 97, 108,
40, 37, 105, 110, 116, 101, 103, 101, 114, 32, 65, 41, 10, 37, 112, 114, 105, 109, 40, 56, 41, 37, 108,
111, 110, 103, 114, 101, 97, 108, 109, 97, 112, 115, 112, 101, 99, 32, 76, 111, 110, 103, 82, 101, 97, 108,
40, 37, 105, 110, 116, 101, 103, 101, 114, 32, 65, 41, 10, 37, 112, 114, 105, 109, 40, 57, 41, 37, 114,
101, 99, 111, 114, 100, 40, 42, 41, 37, 109, 97, 112, 115, 112, 101, 99, 32, 82, 101, 99, 111, 114, 100,
40, 37, 105, 110, 116, 101, 103, 101, 114, 32, 65, 41, 10, 37, 112, 114, 105, 109, 40, 49, 49, 41, 37,
105, 110, 116, 101, 103, 101, 114, 102, 110, 115, 112, 101, 99, 32, 82, 101, 109, 40, 37, 105, 110, 116, 101,
103, 101, 114, 32, 65, 44, 66, 41, 10, 37, 112, 114, 105, 109, 40, 49, 50, 41, 37, 98, 121, 116, 101,
109, 97, 112, 115, 112, 101, 99, 32, 76, 101, 110, 103, 116, 104, 40, 37, 115, 116, 114, 105, 110, 103, 40,
50, 53, 53, 41, 83, 41, 10, 37, 112, 114, 105, 109, 40, 49, 51, 41, 37, 98, 121, 116, 101, 109, 97,
112, 115, 112, 101, 99, 32, 67, 104, 97, 114, 110, 111, 40, 37, 115, 116, 114, 105, 110, 103, 40, 42, 41,
37, 110, 97, 109, 101, 32, 83, 44, 37, 105, 110, 116, 101, 103, 101, 114, 32, 78, 41, 10, 37, 112, 114,
105, 109, 40, 49, 52, 41, 37, 115, 116, 114, 105, 110, 103, 40, 49, 41, 37, 102, 110, 115, 112, 101, 99,
32, 83, 78, 76, 10, 37, 112, 114, 105, 109, 40, 49, 53, 41, 37, 115, 116, 114, 105, 110, 103, 40, 49,
41, 37, 102, 110, 115, 112, 101, 99, 32, 84, 111, 83, 116, 114, 105, 110, 103, 40, 37, 98, 121, 116, 101,
32, 78, 41, 10, 37, 112, 114, 105, 109, 40, 49, 54, 41, 37, 105, 110, 116, 101, 103, 101, 114, 102, 110,
115, 112, 101, 99, 32, 83, 105, 122, 101, 79, 102, 40, 37, 110, 97, 109, 101, 32, 78, 41, 10, 37, 112,
114, 105, 109, 40, 49, 55, 41, 37, 105, 110, 116, 101, 103, 101, 114, 102, 110, 115, 112, 101, 99, 32, 84,
121, 112, 101, 79, 102, 40, 37, 110, 97, 109, 101, 32, 78, 41, 10, 37, 112, 114, 105, 109, 40, 50, 48,
41, 37, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 82, 101, 97, 100, 83, 121, 109, 98, 111,
108, 40, 37, 110, 97, 109, 101, 32, 78, 41, 10, 37, 112, 114, 105, 109, 40, 50, 49, 41, 37, 114, 111,
117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 83, 107, 105, 112, 83, 121, 109, 98, 111, 108, 10, 37, 99,
111, 110, 115, 116, 114, 101, 99, 111, 114, 100, 40, 42, 41, 37, 110, 97, 109, 101, 32, 78, 73, 76, 61,
61, 48, 10, 37, 99, 111, 110, 115, 116, 105, 110, 116, 101, 103, 101, 114, 32, 78, 76, 61, 49, 48, 10,
37, 101, 120, 116, 101, 114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 83, 112,
97, 99, 101, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 83, 80, 65, 67, 69, 34, 10, 37, 101,
120, 116, 101, 114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 78, 101, 119, 76,
105, 110, 101, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 78, 69, 87, 95, 76, 73, 78, 69, 34,
10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 78,
101, 119, 76, 105, 110, 101, 115, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 78, 69, 87, 95, 76,
73, 78, 69, 83, 34, 40, 37, 105, 110, 116, 101, 103, 101, 114, 32, 78, 41, 10, 37, 101, 120, 116, 101,
114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 78, 101, 119, 80, 97, 103, 101,
37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 78, 69, 87, 95, 80, 65, 71, 69, 34, 10, 37, 101,
120, 116, 101, 114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 83, 112, 97, 99,
101, 115, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 83, 80, 65, 67, 69, 83, 34, 40, 37, 105,
110, 116, 101, 103, 101, 114, 32, 78, 41, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 98, 121, 116, 101,
102, 110, 115, 112, 101, 99, 32, 78, 101, 120, 116, 83, 121, 109, 98, 111, 108, 37, 97, 108, 105, 97, 115,
34, 73, 77, 80, 95, 78, 69, 88, 84, 95, 83, 89, 77, 66, 79, 76, 34, 10, 37, 101, 120, 116, 101,
114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 80, 114, 105, 110, 116, 83, 121,
109, 98, 111, 108, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 80, 82, 73, 78, 84, 95, 83, 89,
77, 66, 79, 76, 34, 40, 37, 98, 121, 116, 101, 32, 83, 121, 109, 41, 10, 37, 101, 120, 116, 101, 114,
110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 80, 114, 105, 110, 116, 83, 116, 114,
105, 110, 103, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 80, 82, 73, 78, 84, 95, 83, 84, 82,
73, 78, 71, 34, 40, 37, 115, 116, 114, 105, 110, 103, 40, 50, 53, 53, 41, 83, 41, 10, 37, 101, 120,
116, 101, 114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 87, 114, 105, 116, 101,
37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 87, 82, 73, 84, 69, 34, 40, 37, 105, 110, 116, 101,
103, 101, 114, 32, 78, 44, 80, 108, 97, 99, 101, 115, 41, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108,
115, 116, 114, 105, 110, 103, 40, 50, 53, 53, 41, 37, 102, 110, 115, 112, 101, 99, 32, 83, 117, 98, 83,
116, 114, 105, 110, 103, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 83, 85, 66, 95, 83, 84, 82,
73, 78, 71, 34, 40, 37, 115, 116, 114, 105, 110, 103, 40, 50, 53, 53, 41, 83, 44, 37, 105, 110, 116,
101, 103, 101, 114, 32, 70, 114, 111, 109, 44, 84, 111, 41, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108,
115, 116, 114, 105, 110, 103, 40, 50, 53, 53, 41, 37, 102, 110, 115, 112, 101, 99, 32, 73, 84, 111, 83,
37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 73, 95, 84, 79, 95, 83, 34, 40, 37, 105, 110, 116,
101, 103, 101, 114, 32, 78, 44, 80, 41, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 105, 110, 116, 101,
103, 101, 114, 102, 110, 115, 112, 101, 99, 32, 83, 84, 111, 73, 37, 97, 108, 105, 97, 115, 34, 73, 77,
80, 95, 83, 95, 84, 79, 95, 73, 34, 40, 37, 115, 116, 114, 105, 110, 103, 40, 50, 53, 53, 41, 83,
41, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 112, 114, 101, 100, 105, 99, 97, 116, 101, 115, 112, 101,
99, 32, 69, 110, 100, 79, 102, 73, 110, 112, 117, 116, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95,
69, 78, 68, 95, 79, 70, 95, 73, 78, 80, 85, 84, 34, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108,
105, 110, 116, 101, 103, 101, 114, 102, 110, 115, 112, 101, 99, 32, 73, 110, 112, 117, 116, 83, 116, 114, 101,
97, 109, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 73, 78, 80, 85, 84, 95, 83, 84, 82, 69,
65, 77, 34, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 105, 110, 116, 101, 103, 101, 114, 102, 110, 115,
112, 101, 99, 32, 79, 117, 116, 112, 117, 116, 83, 116, 114, 101, 97, 109, 37, 97, 108, 105, 97, 115, 34,
73, 77, 80, 95, 79, 85, 84, 80, 85, 84, 95, 83, 84, 82, 69, 65, 77, 34, 10, 37, 101, 120, 116,
101, 114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 83, 101, 108, 101, 99, 116,
73, 110, 112, 117, 116, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 83, 69, 76, 69, 67, 84, 95,
73, 78, 80, 85, 84, 34, 40, 37, 105, 110, 116, 101, 103, 101, 114, 32, 78, 41, 10, 37, 101, 120, 116,
101, 114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 83, 101, 108, 101, 99, 116,
79, 117, 116, 112, 117, 116, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 83, 69, 76, 69, 67, 84,
95, 79, 85, 84, 80, 85, 84, 34, 40, 37, 105, 110, 116, 101, 103, 101, 114, 32, 78, 41, 10, 37, 101,
120, 116, 101, 114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 67, 108, 111, 115,
101, 73, 110, 112, 117, 116, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 67, 76, 79, 83, 69, 95,
73, 78, 80, 85, 84, 34, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101,
115, 112, 101, 99, 32, 67, 108, 111, 115, 101, 79, 117, 116, 112, 117, 116, 37, 97, 108, 105, 97, 115, 34,
73, 77, 80, 95, 67, 76, 79, 83, 69, 95, 79, 85, 84, 80, 85, 84, 34, 10, 37, 101, 120, 116, 101,
114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 80, 114, 111, 109, 112, 116, 37,
97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 80, 82, 79, 77, 80, 84, 34, 40, 37, 115, 116, 114, 105,
110, 103, 40, 50, 53, 53, 41, 83, 41, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 114, 101, 99, 111,
114, 100, 40, 42, 41, 37, 109, 97, 112, 115, 112, 101, 99, 32, 78, 101, 119, 37, 97, 108, 105, 97, 115,
34, 73, 77, 80, 95, 78, 69, 87, 34, 40, 37, 110, 97, 109, 101, 32, 84, 41, 10, 37, 101, 120, 116,
101, 114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 68, 105, 115, 112, 111, 115,
101, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 68, 73, 83, 80, 79, 83, 69, 34, 40, 37, 110,
97, 109, 101, 32, 88, 41, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101,
115, 112, 101, 99, 32, 82, 101, 97, 100, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 82, 69, 65,
68, 34, 40, 37, 110, 97, 109, 101, 32, 78, 41, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 114, 111,
117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 82, 101, 115, 101, 116, 73, 110, 112, 117, 116, 37, 97, 108,
105, 97, 115, 34, 73, 77, 80, 95, 82, 69, 83, 69, 84, 95, 73, 78, 80, 85, 84, 34, 10, 37, 101,
120, 116, 101, 114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 82, 101, 115, 101,
116, 79, 117, 116, 112, 117, 116, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 82, 69, 83, 69, 84,
95, 79, 85, 84, 80, 85, 84, 34, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 105, 110, 116, 101, 103,
101, 114, 102, 110, 115, 112, 101, 99, 32, 73, 110, 116, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95,
73, 78, 84, 34, 40, 37, 108, 111, 110, 103, 114, 101, 97, 108, 32, 88, 41, 10, 37, 101, 120, 116, 101,
114, 110, 97, 108, 105, 110, 116, 101, 103, 101, 114, 102, 110, 115, 112, 101, 99, 32, 73, 110, 116, 80, 116,
37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 73, 78, 84, 95, 80, 84, 34, 40, 37, 108, 111, 110,
103, 114, 101, 97, 108, 32, 88, 41, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 105, 110, 116, 101, 103,
101, 114, 102, 110, 115, 112, 101, 99, 32, 84, 114, 117, 110, 99, 37, 97, 108, 105, 97, 115, 34, 73, 77,
80, 95, 84, 82, 85, 78, 67, 34, 40, 37, 108, 111, 110, 103, 114, 101, 97, 108, 32, 88, 41, 10, 37,
101, 120, 116, 101, 114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 80, 114, 105,
110, 116, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 80, 82, 73, 78, 84, 34, 40, 37, 108, 111,
110, 103, 114, 101, 97, 108, 32, 88, 44, 37, 105, 110, 116, 101, 103, 101, 114, 32, 65, 44, 66, 41, 10,
37, 101, 120, 116, 101, 114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 80, 114,
105, 110, 116, 70, 108, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 80, 82, 73, 78, 84, 95, 70,
76, 34, 40, 37, 108, 111, 110, 103, 114, 101, 97, 108, 32, 88, 44, 37, 105, 110, 116, 101, 103, 101, 114,
32, 80, 108, 97, 99, 101, 115, 41, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 114, 111, 117, 116, 105,
110, 101, 115, 112, 101, 99, 32, 79, 112, 101, 110, 73, 110, 112, 117, 116, 37, 97, 108, 105, 97, 115, 34,
73, 77, 80, 95, 79, 80, 69, 78, 95, 73, 78, 80, 85, 84, 34, 40, 37, 105, 110, 116, 101, 103, 101,
114, 32, 83, 116, 114, 101, 97, 109, 44, 37, 115, 116, 114, 105, 110, 103, 40, 50, 53, 53, 41, 70, 105,
108, 101, 41, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101,
99, 32, 79, 112, 101, 110, 79, 117, 116, 112, 117, 116, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95,
79, 80, 69, 78, 95, 79, 85, 84, 80, 85, 84, 34, 40, 37, 105, 110, 116, 101, 103, 101, 114, 32, 83,
116, 114, 101, 97, 109, 44, 37, 115, 116, 114, 105, 110, 103, 40, 50, 53, 53, 41, 70, 105, 108, 101, 41,
10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 79,
112, 101, 110, 66, 105, 110, 97, 114, 121, 73, 110, 112, 117, 116, 37, 97, 108, 105, 97, 115, 45, 10, 34,
73, 77, 80, 95, 79, 80, 69, 78, 95, 66, 73, 78, 65, 82, 89, 95, 73, 78, 80, 85, 84, 34, 40,
37, 105, 110, 116, 101, 103, 101, 114, 32, 83, 116, 114, 101, 97, 109, 44, 37, 115, 116, 114, 105, 110, 103,
40, 50, 53, 53, 41, 70, 105, 108, 101, 41, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 114, 111, 117,
116, 105, 110, 101, 115, 112, 101, 99, 32, 79, 112, 101, 110, 66, 105, 110, 97, 114, 121, 79, 117, 116, 112,
117, 116, 37, 97, 108, 105, 97, 115, 45, 10, 34, 73, 77, 80, 95, 79, 80, 69, 78, 95, 66, 73, 78,
65, 82, 89, 95, 79, 85, 84, 80, 85, 84, 34, 40, 37, 105, 110, 116, 101, 103, 101, 114, 32, 83, 116,
114, 101, 97, 109, 44, 37, 115, 116, 114, 105, 110, 103, 40, 50, 53, 53, 41, 70, 105, 108, 101, 41, 10,
37, 101, 120, 116, 101, 114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 82, 101,
97, 100, 76, 105, 110, 101, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 82, 69, 65, 68, 95, 76,
73, 78, 69, 34, 40, 37, 115, 116, 114, 105, 110, 103, 40, 42, 41, 37, 110, 97, 109, 101, 32, 83, 41,
10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 84,
111, 85, 112, 112, 101, 114, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 84, 79, 95, 85, 80, 80,
69, 82, 34, 40, 37, 115, 116, 114, 105, 110, 103, 40, 42, 41, 37, 110, 97, 109, 101, 32, 83, 41, 10,
37, 101, 120, 116, 101, 114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 84, 111,
76, 111, 119, 101, 114, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 84, 79, 95, 76, 79, 87, 69,
82, 34, 40, 37, 115, 116, 114, 105, 110, 103, 40, 42, 41, 37, 110, 97, 109, 101, 32, 83, 41, 10, 37,
101, 120, 116, 101, 114, 110, 97, 108, 115, 116, 114, 105, 110, 103, 40, 50, 53, 53, 41, 37, 102, 117, 110,
99, 116, 105, 111, 110, 115, 112, 101, 99, 32, 76, 79, 87, 69, 82, 67, 65, 83, 69, 37, 97, 108, 105,
97, 115, 34, 73, 77, 80, 95, 76, 79, 87, 69, 82, 95, 67, 65, 83, 69, 34, 40, 37, 115, 116, 114,
105, 110, 103, 40, 50, 53, 53, 41, 83, 41, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 115, 116, 114,
105, 110, 103, 40, 50, 53, 53, 41, 37, 102, 117, 110, 99, 116, 105, 111, 110, 115, 112, 101, 99, 32, 85,
80, 80, 69, 82, 67, 65, 83, 69, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 85, 80, 80, 69,
82, 95, 67, 65, 83, 69, 34, 40, 37, 115, 116, 114, 105, 110, 103, 40, 50, 53, 53, 41, 83, 41, 10,
37, 101, 120, 116, 101, 114, 110, 97, 108, 115, 116, 114, 105, 110, 103, 40, 50, 53, 53, 41, 37, 102, 110,
115, 112, 101, 99, 32, 73, 110, 112, 117, 116, 78, 97, 109, 101, 37, 97, 108, 105, 97, 115, 34, 73, 77,
80, 95, 73, 78, 80, 85, 84, 95, 78, 65, 77, 69, 34, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108,
115, 116, 114, 105, 110, 103, 40, 50, 53, 53, 41, 37, 102, 110, 115, 112, 101, 99, 32, 79, 117, 116, 112,
117, 116, 78, 97, 109, 101, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 79, 85, 84, 80, 85, 84,
95, 78, 65, 77, 69, 34, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101,
115, 112, 101, 99, 32, 65, 98, 97, 110, 100, 111, 110, 73, 110, 112, 117, 116, 37, 97, 108, 105, 97, 115,
34, 73, 77, 80, 95, 65, 66, 65, 78, 68, 79, 78, 95, 73, 78, 80, 85, 84, 34, 10, 37, 101, 120,
116, 101, 114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 67, 111, 109, 112, 108,
101, 116, 101, 73, 110, 112, 117, 116, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 67, 79, 77, 80,
76, 69, 84, 69, 95, 73, 78, 80, 85, 84, 34, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 114, 111,
117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 65, 98, 97, 110, 100, 111, 110, 79, 117, 116, 112, 117, 116,
37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 65, 66, 65, 78, 68, 79, 78, 95, 79, 85, 84, 80,
85, 84, 34, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101,
99, 32, 67, 111, 109, 112, 108, 101, 116, 101, 79, 117, 116, 112, 117, 116, 37, 97, 108, 105, 97, 115, 34,
73, 77, 80, 95, 67, 79, 77, 80, 76, 69, 84, 69, 95, 79, 85, 84, 80, 85, 84, 34, 10, 37, 101,
120, 116, 101, 114, 110, 97, 108, 115, 116, 114, 105, 110, 103, 40, 50, 53, 53, 41, 37, 102, 117, 110, 99,
116, 105, 111, 110, 115, 112, 101, 99, 32, 68, 65, 84, 69, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80,
95, 68, 65, 84, 69, 34, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 115, 116, 114, 105, 110, 103, 40,
50, 53, 53, 41, 37, 102, 117, 110, 99, 116, 105, 111, 110, 115, 112, 101, 99, 32, 84, 73, 77, 69, 37,
97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 84, 73, 77, 69, 34, 10, 37, 101, 120, 116, 101, 114, 110,
97, 108, 108, 111, 110, 103, 114, 101, 97, 108, 102, 117, 110, 99, 116, 105, 111, 110, 115, 112, 101, 99, 32,
67, 80, 85, 84, 105, 109, 101, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 67, 80, 85, 95, 84,
73, 77, 69, 34, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 108, 111, 110, 103, 114, 101, 97, 108, 102,
110, 115, 112, 101, 99, 32, 83, 84, 111, 82, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 83, 95,
84, 79, 95, 82, 34, 40, 37, 115, 116, 114, 105, 110, 103, 40, 50, 53, 53, 41, 83, 41, 10, 37, 101,
120, 116, 101, 114, 110, 97, 108, 115, 116, 114, 105, 110, 103, 40, 50, 53, 53, 41, 37, 102, 110, 115, 112,
101, 99, 32, 82, 84, 111, 83, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 82, 95, 84, 79, 95,
83, 34, 40, 37, 108, 111, 110, 103, 114, 101, 97, 108, 32, 88, 44, 37, 105, 110, 116, 101, 103, 101, 114,
32, 78, 44, 79, 41, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 115, 116, 114, 105, 110, 103, 40, 50,
53, 53, 41, 37, 102, 110, 115, 112, 101, 99, 32, 70, 84, 111, 83, 37, 97, 108, 105, 97, 115, 34, 73,
77, 80, 95, 70, 95, 84, 79, 95, 83, 34, 40, 37, 108, 111, 110, 103, 114, 101, 97, 108, 32, 88, 44,
37, 105, 110, 116, 101, 103, 101, 114, 32, 78, 44, 79, 41, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108,
112, 114, 101, 100, 105, 99, 97, 116, 101, 115, 112, 101, 99, 32, 73, 110, 116, 101, 114, 114, 117, 112, 116,
101, 100, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 73, 78, 84, 69, 82, 82, 85, 80, 84, 69,
68, 34, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99,
32, 68, 111, 105, 110, 103, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 68, 79, 73, 78, 71, 34,
40, 37, 115, 116, 114, 105, 110, 103, 40, 50, 53, 53, 41, 83, 41, 10, 37, 101, 120, 116, 101, 114, 110,
97, 108, 105, 110, 116, 101, 103, 101, 114, 102, 110, 115, 112, 101, 99, 32, 82, 111, 117, 110, 100, 37, 97,
108, 105, 97, 115, 34, 73, 77, 80, 95, 82, 79, 85, 78, 68, 34, 40, 37, 108, 111, 110, 103, 114, 101,
97, 108, 32, 82, 41, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 108, 111, 110, 103, 114, 101, 97, 108,
102, 110, 115, 112, 101, 99, 32, 70, 114, 97, 99, 80, 116, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80,
95, 70, 82, 65, 67, 95, 80, 84, 34, 40, 37, 108, 111, 110, 103, 114, 101, 97, 108, 32, 82, 41, 10,
37, 101, 120, 116, 101, 114, 110, 97, 108, 108, 111, 110, 103, 114, 101, 97, 108, 102, 110, 115, 112, 101, 99,
32, 70, 114, 97, 99, 116, 105, 111, 110, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 70, 82, 65,
67, 84, 73, 79, 78, 34, 40, 37, 108, 111, 110, 103, 114, 101, 97, 108, 32, 82, 41, 10, 37, 101, 120,
116, 101, 114, 110, 97, 108, 108, 111, 110, 103, 114, 101, 97, 108, 102, 110, 115, 112, 101, 99, 32, 70, 108,
111, 97, 116, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 70, 76, 79, 65, 84, 34, 40, 37, 108,
111, 110, 103, 114, 101, 97, 108, 32, 82, 41, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 115, 116, 114,
105, 110, 103, 40, 50, 53, 53, 41, 37, 102, 110, 115, 112, 101, 99, 32, 84, 114, 105, 109, 37, 97, 108,
105, 97, 115, 34, 73, 77, 80, 95, 84, 82, 73, 77, 34, 40, 37, 115, 116, 114, 105, 110, 103, 40, 50,
53, 53, 41, 83, 44, 37, 105, 110, 116, 101, 103, 101, 114, 32, 77, 41, 10, 37, 101, 120, 116, 101, 114,
110, 97, 108, 114, 111, 117, 116, 105, 110, 101, 115, 112, 101, 99, 32, 80, 114, 105, 110, 116, 70, 108, 111,
97, 116, 105, 110, 103, 37, 97, 108, 105, 97, 115, 34, 73, 77, 80, 95, 80, 82, 73, 78, 84, 95, 70,
76, 79, 65, 84, 73, 78, 71, 34, 40, 37, 108, 111, 110, 103, 114, 101, 97, 108, 32, 82, 44, 37, 105,
110, 116, 101, 103, 101, 114, 32, 80, 44, 81, 41, 10, 37, 114, 101, 99, 111, 114, 100, 102, 111, 114, 109,
97, 116, 32, 69, 118, 101, 110, 116, 70, 109, 40, 37, 105, 110, 116, 101, 103, 101, 114, 32, 69, 118, 101,
110, 116, 44, 83, 117, 98, 44, 69, 120, 116, 114, 97, 44, 37, 115, 116, 114, 105, 110, 103, 40, 50, 53,
53, 41, 77, 101, 115, 115, 97, 103, 101, 44, 37, 105, 110, 116, 101, 103, 101, 114, 32, 80, 67, 44, 87,
114, 101, 103, 41, 10, 37, 101, 120, 116, 101, 114, 110, 97, 108, 114, 101, 99, 111, 114, 100, 40, 69, 118,
101, 110, 116, 70, 109, 41, 37, 115, 112, 101, 99, 32, 69, 118, 101, 110, 116, 37, 97, 108, 105, 97, 115,
34, 73, 77, 80, 95, 69, 86, 69, 78, 84, 34, 10, 37, 101, 110, 100, 111, 102, 112, 101, 114, 109, 10};
// 225 %own %integer %array Cram Defaults (1 : Max Cram) = %c
static int FIRSTEL(unsigned char *B) {
// 226+ 4096 {Values to put in the locations. Some variables use }
return _imp_ADDR(/*?*/ &[/*BUG*/ 0]);
// 227 {'0' to mean some standard default (not this one, tho) }
} /* end of FIRSTEL */
// 228 %own %integer %array Cram Actual Defaults (1 : Max Cram) = %c
static unsigned char EXISTINGTEMPS[3] = {[0 ... 2] = 0};
// 229+ 4096 {What they mean}
static int KEEP = 0;
// 230 %own %integer %array Cram Mins (1 : Max Cram) = %c
static _imp_string12 TEMPFN(int FILE) {
// 231+ 16
return *(_imp_string12 *)/*?*/ &
*({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("ITEMP."), ({
__typeof__(_imp_string255) tmp; /*E*/
tmp = _imp_ITOS(FILE, 0);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
})
;
// 232 %own %integer %array Cram Maxes (1 : Max Cram) = %c
} /* end of TEMPFN */
// 233+ 16_7FFFFFFF
static void DELETETEMP(int FILE) {
// 234 %own %integer %array Cram Multipliers (1 : Max Cram) = %c
if (EXISTINGTEMPS[FILE - 1] != 1) goto L_0003;
if (KEEP != 0) goto L_0003;
// 235+ 256 {Multiply input (in Kb) by this before storing}
DELETE(
*({
__typeof__(_imp_string12) tmp = TEMPFN(FILE) /*q*/;
(_imp_string255 *)&tmp;
})
);
// 236
EXISTINGTEMPS[FILE - 1] = 0;
// 237 %routine Initialise Crams
L_0003:;
// 238 %integer I
return;
} /* end of DELETETEMP */
// 239 Crams(1) = Addr (Global Info_Frag Array Size)
static void OPENTEMPOUTPUT(int STREAM, int FILE) {
// 240 Integer (Crams(I)) = Cram Defaults(I) %for I = 1, 1, Max Cram
if (!_imp_on_event(9)) goto L_0004;
// 241 %end
FATALERROR(_imp_str_literal("unable to create temporary file"));
// 242
L_0004:;
// 243 { ******************************************* }
_imp_OPENBINARYOUTPUT(STREAM,
*({
__typeof__(_imp_string12) tmp = TEMPFN(FILE) /*q*/;
(_imp_string255 *)&tmp;
})
);
// 244 { Process the Command Line. }
EXISTINGTEMPS[FILE - 1] = 1;
// 245 { ******************************************* }
return;
} /* end of OPENTEMPOUTPUT */
// 246
static void OPENTEMPINPUT(int STREAM, int FILE) {
// 247 %begin
if (!_imp_on_event(9)) goto L_0005;
// 248 %integer N, Switch, G
FATALERROR(_imp_str_literal("unable to access temporary file"));
// 249 %string(255) Item, Value
L_0005:;
// 250
_imp_OPENBINARYINPUT(STREAM,
*({
__typeof__(_imp_string12) tmp = TEMPFN(FILE) /*q*/;
(_imp_string255 *)&tmp;
})
);
// 251 %routine Switch Error
return;
} /* end of OPENTEMPINPUT */
// 252 Fatal Error ("unknown switch: " . Item)
static void IMP(void) {
// 253 %end
const _imp_string255 SZERROR = _imp_str_init("range for patch size is 2 to ");
// 254
_imp_string255 SOURCEFILE = _imp_str_init("");
// 255 { Get next item from command line }
_imp_string255 MODULE = _imp_str_init("");
// 256 %routine Next Item
_imp_string255 OBJECTFILE;
_imp_strncpy(/*?*/ &OBJECTFILE, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("");
(void *)&tmp;
}),
/*max:*/ 255);
// 257 %external %string(255) %spec Command Line %alias "IMP___PARAMETER"
_imp_string255 LISTINGFILE;
_imp_strncpy(/*?*/ &LISTINGFILE, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("");
(void *)&tmp;
}),
/*max:*/ 255);
// 258 %own %integer P init = 0
_imp_string255 SWITCHLINE;
_imp_strncpy(/*?*/ &SWITCHLINE, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("");
(void *)&tmp;
}),
/*max:*/ 255);
// 259 %own %byte %integer %name P
_imp_string255 REQUESTEDINCLUDES;
_imp_strncpy(/*?*/ &REQUESTEDINCLUDES, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("");
(void *)&tmp;
}),
/*max:*/ 255);
// 260 P == BYTEINTEGER(0) %and P init = 1 %if P init = 0
int OPTIONS;
int P3SWITCH;
int DUMPDIR;
int WANTLOG;
int WANTOBJ;
int WANTHEX;
int WANTBIN;
int WANTLISTING;
int EXCLUDESTANDARDINCLUDES;
// 261 Item = ""
_imp_string7 LANGUAGENAME = _imp_str_init("IMP");
// 262 %if P == Byte(0) %start
int LANGUAGE = 1;
// 263 !T! Show ("Command Line:<" . Command Line . ">")
struct GLOBALFM GLOBALINFO;
GLOBALINFO = (struct GLOBALFM){0};
// 264 {003} %begin
GLOBALINFO.COMPILERID = (_imp_string *)/*?*/ &COMPILERID;
// 265 {003} %const %string (255) Default Switches = "TI" {env. var. id}
GLOBALINFO.SOURCEFILE = (_imp_string *)/*?*/ &SOURCEFILE;
// 266 {003} %string(255) S = Translate(Default Switches)
GLOBALINFO.MODULE = (_imp_string *)/*?*/ &MODULE;
// 267 {003} %if S # Default Switches %start
GLOBALINFO.CODEPATCHSZ = 6;
// 268 {003} Command Line = S . TOSTRING(' ') . Command Line
GLOBALINFO.DATAPATCHSZ = 6;
// 269 {003} %finish
GLOBALINFO.FRAGARRAYSIZE = 4000 * 1;
// 270 {003} %end
GLOBALINFO.MODULEPATCHSZ = 2;
// 271 Command Line = Command Line . TOSTRING(0)
int STATS;
STATS = 0;
int FAULTS;
FAULTS = 0;
int J;
int OK;
// 272 P == Charno (Command Line, 1)
void ANNOUNCE(void) {
// 273 %finish
_imp_SELECTOUTPUT(0);
// 274 P == P++1 {P[1]} %while P = ' ' %or P = ',' %or P = ';'
_imp_PRINTSTRING(_imp_str_literal("Transputer Imp compiler, "));
// 275 %if P # 0 %start
_imp_PRINTSTRING(
*({
__typeof__(_imp_string31) tmp = COMPILERID /*q*/;
(_imp_string255 *)&tmp;
})
);
_imp_NEWLINE();
// 276 Item = Item . TOSTRING(P) %and P == P++1 {P[1]} %c
_imp_PRINTSTRING(_imp_str_literal("Copyright (C) 1989 3L Ltd"));
_imp_NEWLINE();
// 277+ %until P = ' ' %or P = ',' %or P = ';' %or P = '/' %or P = 0
return;
} /* end of ANNOUNCE */
// 278 %finish
void REPORT(int STREAM) {
// 279 !T! Show ("Item:<" . Item . ">")
if (FAULTS != 0) goto L_0006;
if (WANTLOG != 0) goto L_0006;
return;
L_0006:;
// 280 %end
_imp_SELECTOUTPUT(STREAM);
// 281
_imp_WRITE(STATS, 0);
// 282 %string(255) %function Rest of Item (%integer Start)
_imp_PRINTSTRING(_imp_str_literal(" statement"));
if (STATS == 1) goto L_0007;
_imp_PRINTSYMBOL(115);
L_0007:;
// 283 %if Start > Length (Item) %c
_imp_PRINTSTRING(_imp_str_literal(" analysed; "));
// 284+ %then %result = "" %c
if (FAULTS != 0) goto L_0008;
_imp_PRINTSTRING(_imp_str_literal("no"));
goto L_0009;
L_0008:;
_imp_WRITE(FAULTS, 0);
L_0009:;
// 285+ %else %result = Substring (Item, Start, Length(Item))
_imp_PRINTSTRING(_imp_str_literal(" fault"));
if (FAULTS == 1) goto L_000A;
_imp_PRINTSYMBOL(115);
L_000A:;
// 286 %end
_imp_PRINTSTRING(_imp_str_literal(" detected"));
// 287
_imp_NEWLINE();
// 288 %integer %fn Excise (%integer Ch)
return;
} /* end of REPORT */
// 289 %if Ch > Length (Item) %then %result = 0
void SETGLOBALFLAGS(void) {
// 290 %if 'a' <= Charno(Item,Ch) <= 'z' %then %c
const _imp_string255 LLLENVIRONNAME = _imp_str_init("3L_FLAG");
// 291+ Charno(Item,Ch) = Charno(Item,Ch) - 'a' + 'A'
_imp_string255 TRANSLATEDNAME;
// 292 %result = Charno(Item,Ch)
int VALUE;
VALUE = 0;
// 293 %end
if (!_imp_on_event(4)) goto L_000B;
// 294
VALUE = 128;
goto U_1000;
// 295 %integer %fn Number(%string(255) s)
L_000B:;
// 296 %on %event 4 %start
_imp_strncpy(/*?*/ &TRANSLATEDNAME, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = TRANSLATE(*({
__typeof__(_imp_string255) tmp = LLLENVIRONNAME /*q*/;
(_imp_string255 *)&tmp;
}));
(void *)&tmp;
}),
/*max:*/ 255);
// 297 Fatal Error ("switch should contain a number: ".Item)
if (_imp_strcmp((_imp_string *)/*?*/ &TRANSLATEDNAME, (_imp_string *)/*?*/ &LLLENVIRONNAME) == 0) goto L_000C;
// 298 %finish
VALUE = _imp_STOI(
*({
__typeof__(_imp_string255) tmp = TRANSLATEDNAME /*q*/;
(_imp_string255 *)&tmp;
})
);
// 299 %if S = "" %then %result = 0 %c
L_000C:;
// 300+ %else %result = S to I (S)
if (LANGUAGE != 1) goto L_000D;
VALUE = VALUE | 128;
L_000D:;
// 301 %end
U_1000:;
GLOBALINFO.FLAGS = GLOBALINFO.FLAGS | VALUE;
// 302
return;
} /* end of SETGLOBALFLAGS */
// 303 { Routine to apply Microsoft-C standard File defaulting
int CRAMS[1];
// 304 %string(255) %fn File Def (%string(*)%name Supplied, Model, %c
static _imp_string27 CRAMNAMES[1] = {_imp_str_init("Code fragment array size")};
// 305+ %string(255) Ext )
static int CRAMDEFAULTS[1] = {4096};
// 306 %string(255) S Disk, S Dirs, S Fn, S Ext,
static int CRAMACTUALDEFAULTS[1] = {4096};
// 307+ M Disk, M Dirs, M Fn, M Ext
static int CRAMMINS[1] = {16};
// 308 %routine Split Filename (%string(*)%name All, Disk, Dirs, Fn, Ext)
static int CRAMMAXES[1] = {2147483647};
// 309 %string(*) %name Elt
static int CRAMMULTIPLIERS[1] = {256};
// 310 %integer P, Ch
void INITIALISECRAMS(void) {
// 311 Disk = "" %and Dirs = "" %and Fn = "" %and Ext = ""
int I;
// 312 Elt == Fn
CRAMS[0] = _imp_ADDR(/*?*/ &GLOBALINFO.FRAGARRAYSIZE);
// 313 ! Have faith! Have Faith!
// %for I = 1, 1, 1 %cycle
{
if (invalid_for_loop(1, 1, 1)) _imp_signal(5, 1, 0, "Illegal cycle I = 1, 1, 1");
I = 0;
L_000E:
if (I == 1) goto L_000F;
I += 1;
*_imp_INTEGER(CRAMS[I - 1]) = CRAMDEFAULTS[I - 1];
goto L_000E;
}
L_000F:;
// 314 %for P = 1, 1, Length (All) %cycle
return;
} /* end of INITIALISECRAMS */
// 315 Ch = Charno (All, P)
{ /*%begin*/
// 316 %if Ch = ':' %start
int N;
int SWITCH;
int G;
// 317 Disk = Elt . TOSTRING(Ch); Elt = ""
_imp_string255 ITEM;
_imp_string255 VALUE;
// 318 %elseif Ch = '\'
void SWITCHERROR(void) {
// 319 Dirs = Dirs . Elt . TOSTRING(Ch); Elt = ""; Elt == Fn; Elt = ""
FATALERROR(
*({
__typeof__(_imp_string255) tmp = *({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("unknown switch: "), (_imp_string *)/*?*/ &ITEM);
(_imp_string255 *)&tmp;
}) /*q*/;
(_imp_string255 *)&tmp;
})
);
// 320 %elseif Ch = '.'
return;
} /* end of SWITCHERROR */
// 321 Elt == Ext; Elt = Elt . TOSTRING(Ch)
void NEXTITEM(void) {
// 322 %else
extern _imp_string255 COMMANDLINE __asm__("IMP___PARAMETER");
// 323 Elt = Elt . TOSTRING(Ch)
static int PINIT = 0;
// 324 %finish
static unsigned char *P;
// 325 %repeat
if (PINIT != 0) goto L_0011;
P = (unsigned char *)_imp_BYTEINTEGER(0);
PINIT = 1;
L_0011:;
// 326 %end
_imp_strncpy(/*?*/ &ITEM, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("");
(void *)&tmp;
}),
/*max:*/ 255);
// 327 Split Filename (Supplied, S Disk, S Dirs, S Fn, S Ext)
if (_imp_ADDR((void *)(P)) != _imp_ADDR((void *)(_imp_BYTE(0)))) goto L_0012;
// 328 Split Filename (Model, M Disk, M Dirs, M Fn, M Ext)
{ /*%begin*/
// 329 S Dirs = M Dirs %if S Dirs = "" %and S Disk = ""
const _imp_string255 DEFAULTSWITCHES = _imp_str_init("TI");
// 330 S Disk = M Disk %if S Disk = ""
_imp_string255 S;
_imp_strncpy(/*?*/ &S, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = TRANSLATE(*({
__typeof__(_imp_string255) tmp = DEFAULTSWITCHES /*q*/;
(_imp_string255 *)&tmp;
}));
(void *)&tmp;
}),
/*max:*/ 255);
// 331 S Fn = M Fn %if S Fn = ""
if (_imp_strcmp((_imp_string *)/*?*/ &S, (_imp_string *)/*?*/ &DEFAULTSWITCHES) == 0) goto L_0012;
// 332 S Ext = Ext %if S Ext = ""
_imp_strncpy(/*?*/ &COMMANDLINE, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &S, ({
__typeof__(_imp_string1) tmp; /*E*/
tmp = _imp_TOSTRING(32);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
}),
(_imp_string *)/*?*/ &COMMANDLINE);
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 255);
// 333 %result = S Disk . S Dirs . S Fn . S Ext
L_0012:;
// 334 %end
goto end_1001;
end_1001:;
}
// 335
_imp_strncpy(/*?*/ &COMMANDLINE, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &COMMANDLINE, ({
__typeof__(_imp_string1) tmp; /*E*/
tmp = _imp_TOSTRING(0);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 255);
// 336 %routine Process Patch
P = (unsigned char *)_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &COMMANDLINE, 1);
// 337 %integer Ch = Excise (3)
L_0013:;
// 338 Switch Error %unless ch = 'C' %or ch = 'D' %or ch = 'M'
L_0014:;
if (*P == 32) goto L_0010;
if (*P == 44) goto L_0010;
if (*P != 59) goto L_0013;
L_0010:;
P = (unsigned char *)P + 1;
goto L_0014;
L_0013:;
// 339 N = Number (Rest of Item(4))
if (*P == 0) goto L_0015;
// 340 %if ch = 'C' %start
L_0016:;
_imp_strncpy(/*?*/ &ITEM, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &ITEM, ({
__typeof__(_imp_string1) tmp; /*E*/
tmp = _imp_TOSTRING(*P);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 255);
P = (unsigned char *)P + 1;
if (*P == 32) goto L_0017;
if (*P == 44) goto L_0017;
if (*P == 59) goto L_0017;
if (*P == 47) goto L_0017;
if (*P == 0) goto L_0017;
goto L_0016;
L_0017:;
// 341 Global Info_Code Patch Sz = N
L_0015:;
// 342 %else %if ch = 'M'
return;
} /* end of NEXTITEM */
// 343 Global Info_Module Patch Sz = N
_imp_string255 RESTOFITEM(int START) {
// 344 %else
if (START <= *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &ITEM)) goto L_0018;
return *(_imp_string255 *)/*?*/ _imp_str_literal_ptr("");
L_0018:;
return *(_imp_string255 *)/*?*/ &_imp_SUBSTRING((_imp_string255 *)/*p*/ /*?*/ &ITEM, START,
*_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &ITEM));
// 345 Global Info_Data Patch Sz = N
} /* end of RESTOFITEM */
// 346 %finish
int EXCISE(int CH) {
// 347 %unless 1 < N <= Max Patch Sz %start
if (CH <= *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &ITEM)) goto L_0019;
return 0;
L_0019:;
// 348 Fatal Error(Sz Error . Itos(Max Patch Sz, 0) . " bytes")
{
// Double-sided test on _imp_CHARNO((_imp_string255 *)/*p*//*?*/&ITEM, CH) (Part I)
unsigned char tmp;
if (97 > (tmp = *_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &ITEM, CH))) goto L_001A;
// Double-sided test on _imp_CHARNO((_imp_string255 *)/*p*//*?*/&ITEM, CH) (Part II)
if (tmp > 122) goto L_001A;
}
*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &ITEM, CH) =
*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &ITEM, CH) - 97 + 65;
L_001A:;
// 349 %finish
return *_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &ITEM, CH);
// 350 %end
} /* end of EXCISE */
// 351
int NUMBER(_imp_string255 S) {
// 352 %routine Set Flag
if (!_imp_on_event(4)) goto L_001B;
// 353 Global Info_Flags = Global Info_Flags ! Number(Rest of Item(4))
FATALERROR(
*({
__typeof__(_imp_string255) tmp = *({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("switch should contain a number: "),
(_imp_string *)/*?*/ &ITEM);
(_imp_string255 *)&tmp;
}) /*q*/;
(_imp_string255 *)&tmp;
})
);
// 354
L_001B:;
// 355 %end
if (_imp_strcmp((_imp_string *)/*?*/ &S, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_001C;
return 0;
L_001C:;
return _imp_STOI(
*({
__typeof__(_imp_string255) tmp = S /*q*/;
(_imp_string255 *)&tmp;
})
);
// 356
} /* end of NUMBER */
// 357 %routine Process Buffer Switch
_imp_string255 FILEDEF(_imp_string * SUPPLIED, _imp_string * MODEL, _imp_string255 EXT) {
// 358 %string(63) Stuff, Val
_imp_string255 SDISK;
_imp_string255 SDIRS;
_imp_string255 SFN;
_imp_string255 SEXT;
_imp_string255 MDISK;
_imp_string255 MDIRS;
_imp_string255 MFN;
_imp_string255 MEXT;
// 359 %integer ChP, Ch, P, V
void SPLITFILENAME(_imp_string * ALL, _imp_string * DISK, _imp_string * DIRS, _imp_string * FN,
_imp_string * EXT) {
// 360 %routine Describe
_imp_string *ELT;
// 361 %integer I, J
int P;
int CH;
// 362 Pstr ("Format of /B switch: /B(a)"); Psym(NL);
*DISK = _imp_str_literal("");
*DIRS = _imp_str_literal("");
*FN = _imp_str_literal("");
*EXT = _imp_str_literal("");
// 363 Pstr ("Parameters, current values and ranges:"); Psym(NL);
ELT = (_imp_string *)FN;
// 364 %for I = 1, 1, Max Cram %cycle
// %for P = 1, 1, *_imp_LENGTH((_imp_string255 *)/*p*/ALL) %cycle
{
int _final = *_imp_LENGTH((_imp_string255 *)/*p*/ ALL);
if (invalid_for_loop(1, 1, _final))
_imp_signal(5, 1, 0, "Illegal cycle P = 1, 1, *_imp_LENGTH((_imp_string255 *)/*p*/ALL)");
P = 0;
L_001D:
if (P == _final) goto L_001E;
P += 1;
// 365 Pstr(" ")
CH = *_imp_CHARNO((_imp_string255 *)/*p*/ ALL, P);
// 366 Psym('a' + I - 1); Pstr(": ")
if (CH != 58) goto L_0020;
// 367 Pstr(Cram Names(I)); Pstr(" = ")
*DISK = *
*({
_imp_string255 tmp = _imp_join(({
__typeof__(_imp_string255) tmp; /*D*/
tmp = *ELT;
(void *)&tmp;
}),
({
__typeof__(_imp_string1) tmp; /*E*/
tmp = _imp_TOSTRING(CH);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
})
;
*ELT = _imp_str_literal("");
// 368 J = Integer (Crams(I))
goto L_0021;
L_0020:;
if (CH != 92) goto L_0022;
// 369 %if J = 0 %then J = Cram Actual Defaults (I)
*DIRS = *
*({
_imp_string255 tmp = _imp_join(({
__typeof__(_imp_string255) tmp; /*D*/
tmp = **({
_imp_string255 tmp =
_imp_join(({
__typeof__(_imp_string255) tmp; /*D*/
tmp = *DIRS;
(void *)&tmp;
}),
({
__typeof__(_imp_string255) tmp; /*E*/
tmp = *ELT;
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
({
__typeof__(_imp_string1) tmp; /*E*/
tmp = _imp_TOSTRING(CH);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
})
;
*ELT = _imp_str_literal("");
ELT = (_imp_string *)FN;
*ELT = _imp_str_literal("");
// 370 Pstr(Itos(J//Cram Multipliers(I),0))
goto L_0021;
L_0022:;
if (CH != 46) goto L_0023;
// 371 Pstr(" ("); Pstr(Itos(Cram Mins(I),0))
ELT = (_imp_string *)EXT;
*ELT = *
*({
_imp_string255 tmp = _imp_join(({
__typeof__(_imp_string255) tmp; /*D*/
tmp = *ELT;
(void *)&tmp;
}),
({
__typeof__(_imp_string1) tmp; /*E*/
tmp = _imp_TOSTRING(CH);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
})
;
// 372 Pstr(" to "); Pstr(Itos(Cram Maxes(I),0)); Psym(')')
goto L_0021;
L_0023:;
// 373 Psym(NL)
*ELT = *
*({
_imp_string255 tmp = _imp_join(({
__typeof__(_imp_string255) tmp; /*D*/
tmp = *ELT;
(void *)&tmp;
}),
({
__typeof__(_imp_string1) tmp; /*E*/
tmp = _imp_TOSTRING(CH);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
})
;
// 374 %repeat
L_0021:;
// 375 Pstr("Values are expressed in kilobytes")
goto L_001D;
}
L_001E:;
// 376 Psym(NL)
return;
} /* end of SPLITFILENAME */
// 377 %end
SPLITFILENAME((_imp_string255 *)/*p*/ SUPPLIED, (_imp_string255 *)/*p*/ /*?*/ &SDISK,
(_imp_string255 *)/*p*/ /*?*/ &SDIRS, (_imp_string255 *)/*p*/ /*?*/ &SFN,
(_imp_string255 *)/*p*/ /*?*/ &SEXT);
// 378 %routine Berr
SPLITFILENAME((_imp_string255 *)/*p*/ MODEL, (_imp_string255 *)/*p*/ /*?*/ &MDISK,
(_imp_string255 *)/*p*/ /*?*/ &MDIRS, (_imp_string255 *)/*p*/ /*?*/ &MFN,
(_imp_string255 *)/*p*/ /*?*/ &MEXT);
// 379 Describe
if (_imp_strcmp((_imp_string *)/*?*/ &SDIRS, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_0024;
if (_imp_strcmp((_imp_string *)/*?*/ &SDISK, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_0024;
_imp_strncpy(/*?*/ &SDIRS, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = MDIRS;
(void *)&tmp;
}),
/*max:*/ 255);
L_0024:;
// 380 Fatal Error ("error in format of /B switch: " . Item)
if (_imp_strcmp((_imp_string *)/*?*/ &SDISK, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_0025;
_imp_strncpy(/*?*/ &SDISK, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = MDISK;
(void *)&tmp;
}),
/*max:*/ 255);
L_0025:;
// 381 %end
if (_imp_strcmp((_imp_string *)/*?*/ &SFN, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_0026;
_imp_strncpy(/*?*/ &SFN, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = MFN;
(void *)&tmp;
}),
/*max:*/ 255);
L_0026:;
// 382 Stuff = Rest of Item (3)
if (_imp_strcmp((_imp_string *)/*?*/ &SEXT, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_0027;
_imp_strncpy(/*?*/ &SEXT, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = EXT;
(void *)&tmp;
}),
/*max:*/ 255);
L_0027:;
// 383 %if Stuff = "" %start
return *(_imp_string255 *)/*?*/ &
*({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &*({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &*({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &SDISK, (_imp_string *)/*?*/ &SDIRS);
(_imp_string255 *)&tmp;
}),
(_imp_string *)/*?*/ &SFN);
(_imp_string255 *)&tmp;
}),
(_imp_string *)/*?*/ &SEXT);
(_imp_string255 *)&tmp;
})
;
// 384 Describe
} /* end of FILEDEF */
// 385 %else
void PROCESSPATCH(void) {
// 386 ChP = 1; P = 1
int CH;
CH = EXCISE(3);
// 387 Berr %unless Charno (Stuff, ChP) = '('
if (CH == 67) goto L_0028;
if (CH == 68) goto L_0028;
if (CH == 77) goto L_0028;
SWITCHERROR();
L_0028:;
// 388 %cycle
N = NUMBER(
*({
__typeof__(_imp_string255) tmp = RESTOFITEM(4) /*q*/;
(_imp_string255 *)&tmp;
})
);
// 389 Val = ""
if (CH != 67) goto L_0029;
// 390 %cycle
GLOBALINFO.CODEPATCHSZ = N;
// 391 ChP = ChP + 1
goto L_002A;
L_0029:;
if (CH != 77) goto L_002B;
// 392 Berr %if ChP > Length(Stuff)
GLOBALINFO.MODULEPATCHSZ = N;
// 393 Ch = Charno (Stuff, ChP)
goto L_002A;
L_002B:;
// 394 %exit %if Ch = ':' %or Ch = ')'
GLOBALINFO.DATAPATCHSZ = N;
// 395 Val = Val . TOSTRING(Ch)
L_002A:;
// 396 %repeat
{
// Double-sided test on N (Part I)
int tmp;
if (1 >= (tmp = N)) goto L_001F;
// Double-sided test on N (Part II)
if (tmp <= 8) goto L_002C;
}
L_001F:;
// 397 V = Number (Val)
FATALERROR(
*({
__typeof__(_imp_string255) tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &SZERROR, ({
__typeof__(_imp_string255) tmp; /*E*/
tmp = _imp_ITOS(8, 0);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
}),
(_imp_string *)/*?*/ _imp_str_literal_ptr(" bytes"));
(_imp_string255 *)&tmp;
}) /*q*/;
(_imp_string255 *)&tmp;
})
);
// 398 %unless V = 0 %start
L_002C:;
// 399 %unless Cram Mins(P) <= V <= Cram Maxes(P) %start
return;
} /* end of PROCESSPATCH */
// 400 Describe
void SETFLAG(void) {
// 401 Fatal Error (Val." is outwith the range for the ". %c
GLOBALINFO.FLAGS = GLOBALINFO.FLAGS | NUMBER(
*({
__typeof__(_imp_string255) tmp = RESTOFITEM(4) /*q*/;
(_imp_string255 *)&tmp;
})
);
// 402+ Cram Names(P))
return;
} /* end of SETFLAG */
// 403 %finish
void PROCESSBUFFERSWITCH(void) {
// 404 Integer(Crams(P)) = V * Cram Multipliers(P)
_imp_string63 STUFF;
_imp_string63 VAL;
// 405 %finish
int CHP;
int CH;
int P;
int V;
// 406 %if Ch = ')' %then %exit
void DESCRIBE(void) {
// 407 P = P + 1
int I;
int J;
// 408 %if P > Max Cram %then Berr
PSTR(_imp_str_literal("Format of /B switch: /B(a)"));
PSYM(10);
// 409 %repeat
PSTR(_imp_str_literal("Parameters, current values and ranges:"));
PSYM(10);
// 410 %finish
// %for I = 1, 1, 1 %cycle
{
if (invalid_for_loop(1, 1, 1)) _imp_signal(5, 1, 0, "Illegal cycle I = 1, 1, 1");
I = 0;
L_002D:
if (I == 1) goto L_002E;
I += 1;
// 411 %end
PSTR(_imp_str_literal(" "));
// 412
PSYM(97 + I - 1);
PSTR(_imp_str_literal(": "));
// 413 { Set up defaults }
PSTR(
*({
__typeof__(_imp_string27) tmp = CRAMNAMES[I - 1] /*q*/;
(_imp_string255 *)&tmp;
})
);
PSTR(_imp_str_literal(" = "));
// 414 Initialise Crams
J = *_imp_INTEGER(CRAMS[I - 1]);
// 415 Options = Default Options
if (J != 0) goto L_0030;
J = CRAMACTUALDEFAULTS[I - 1];
L_0030:;
// 416 P3 Switch = 0
PSTR(
*({
__typeof__(_imp_string255) tmp = _imp_ITOS(((long)J / (long)CRAMMULTIPLIERS[I - 1]), 0) /*q*/;
(_imp_string255 *)&tmp;
})
);
// 417 Dump Dir = Default Dump Dir
PSTR(_imp_str_literal(" ("));
PSTR(
*({
__typeof__(_imp_string255) tmp = _imp_ITOS(CRAMMINS[I - 1], 0) /*q*/;
(_imp_string255 *)&tmp;
})
);
// 418 Keep = Default Keep
PSTR(_imp_str_literal(" to "));
PSTR(
*({
__typeof__(_imp_string255) tmp = _imp_ITOS(CRAMMAXES[I - 1], 0) /*q*/;
(_imp_string255 *)&tmp;
})
);
PSYM(41);
// 419 Want Log = Default Want Log
PSYM(10);
// 420 Want Bin = No
goto L_002D;
}
L_002E:;
// 421 Want Hex = No
PSTR(_imp_str_literal("Values are expressed in kilobytes"));
// 422 Want Obj = Default Want Obj
PSYM(10);
// 423 Want Listing = Default Want Listing
return;
} /* end of DESCRIBE */
// 424 Exclude Standard Includes = No
void BERR(void) {
// 425
DESCRIBE();
// 426 { Process items one-by-one }
FATALERROR(
*({
__typeof__(_imp_string255) tmp = *({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("error in format of /B switch: "),
(_imp_string *)/*?*/ &ITEM);
(_imp_string255 *)&tmp;
}) /*q*/;
(_imp_string255 *)&tmp;
})
);
// 427 %cycle
return;
} /* end of BERR */
// 428
_imp_strncpy(/*?*/ &STUFF, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = RESTOFITEM(3);
(void *)&tmp;
}),
/*max:*/ 63);
// 429 Next Item; %exit %if Item = ""
if (_imp_strcmp((_imp_string *)/*?*/ &STUFF, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_0031;
// 430
DESCRIBE();
// 431 %if Charno (Item, 1) # '/' %start
goto L_0032;
L_0031:;
// 432
CHP = 1;
P = 1;
// 433 { It's a filename }
if (*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &STUFF, CHP) == 40) goto L_0033;
BERR();
L_0033:;
// 434 %if Source File # "" %then %c
L_0034:;
// 435+ Fatal Error ("more than one source file specified")
_imp_strncpy(/*?*/ &VAL, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("");
(void *)&tmp;
}),
/*max:*/ 63);
// 436 Source File = Item
L_0035:;
// 437
CHP = CHP + 1;
// 438 %else
if (CHP <= *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &STUFF)) goto L_0036;
BERR();
L_0036:;
// 439
CH = *_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &STUFF, CHP);
// 440 { It's a switch }
if (CH == 58) goto L_0037;
if (CH != 41) goto L_0038;
L_0037:;
goto L_0039;
L_0038:;
// 441 Switch = Excise (2)
_imp_strncpy(/*?*/ &VAL, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &VAL, ({
__typeof__(_imp_string1) tmp; /*E*/
tmp = _imp_TOSTRING(CH);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 63);
// 442
goto L_0035;
L_0039:;
// 443 %if Switch = 'I' %start
V = NUMBER(
*({
__typeof__(_imp_string63) tmp = VAL /*q*/;
(_imp_string255 *)&tmp;
})
);
// 444 Value = Rest of Item (3)
if (V == 0) goto L_003A;
// 445 %if Value = "" %start
{
// Double-sided test on V (Part I)
int tmp;
if (CRAMMINS[P - 1] > (tmp = V)) goto L_003B;
// Double-sided test on V (Part II)
if (tmp <= CRAMMAXES[P - 1]) goto L_003C;
}
L_003B:;
// 446 { Identify: Say who we are }
DESCRIBE();
// 447 Announce
FATALERROR(
*({
__typeof__(_imp_string255) tmp = *({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &*({
_imp_string255 tmp = _imp_join(
(_imp_string *)/*?*/ &VAL,
(_imp_string *)/*?*/ _imp_str_literal_ptr(" is outwith the range for the "));
(_imp_string255 *)&tmp;
}),
(_imp_string *)/*?*/ &CRAMNAMES[P - 1]);
(_imp_string255 *)&tmp;
}) /*q*/;
(_imp_string255 *)&tmp;
})
);
// 448 %else
L_003C:;
// 449 Switch Error
*_imp_INTEGER(CRAMS[P - 1]) = V * CRAMMULTIPLIERS[P - 1];
// 450 %finish
L_003A:;
// 451
if (CH != 41) goto L_003D;
goto L_003E;
L_003D:;
// 452 %else %if Switch = 'E'
P = P + 1;
// 453 Exclude Standard Includes = Yes
if (P <= 1) goto L_003F;
BERR();
L_003F:;
// 454
goto L_0034;
L_003E:;
// 455 %else %if Switch = 'L'
L_0032:;
// 456 { (compatibility switch) }
return;
} /* end of PROCESSBUFFERSWITCH */
// 457 Want Listing = Yes
INITIALISECRAMS();
// 458
OPTIONS = 33556612;
// 459 %else %if Switch = 'Q'
P3SWITCH = 0;
// 460 { Quiet: suppress warning messages }
DUMPDIR = 0;
// 461 Want Log = No
KEEP = 0;
// 462 Options = Options !! LL Warn
WANTLOG = 0;
// 463
WANTBIN = 0;
// 464 %else %if Switch = 'C'
WANTHEX = 0;
// 465 { Check: suppress code generation }
WANTOBJ = 1;
// 466 Want Obj = No
WANTLISTING = 0;
// 467
EXCLUDESTANDARDINCLUDES = 0;
// 468 %else %if Switch = 'H'
L_0040:;
// 469 { (compatibility switch) }
NEXTITEM();
if (_imp_strcmp((_imp_string *)/*?*/ &ITEM, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_0041;
goto L_0042;
L_0041:;
// 470 Want Hex = Yes
if (*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &ITEM, 1) == 47) goto L_0043;
// 471
if (_imp_strcmp((_imp_string *)/*?*/ &SOURCEFILE, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) == 0) goto L_0044;
FATALERROR(_imp_str_literal("more than one source file specified"));
L_0044:;
// 472 %else %if Switch = 'F'
_imp_strncpy(/*?*/ &SOURCEFILE, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = ITEM;
(void *)&tmp;
}),
/*max:*/ 255);
// 473 { Files: unified handling of output file specification }
goto L_0045;
L_0043:;
// 474 Switch = Excise (3)
SWITCH = EXCISE(2);
// 475 %if Switch = 'B' %or Switch = 'O' %start
if (SWITCH != 73) goto L_0046;
// 476 Want Bin = Yes
_imp_strncpy(/*?*/ &VALUE, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = RESTOFITEM(3);
(void *)&tmp;
}),
/*max:*/ 255);
// 477 Object File = Rest of Item (4)
if (_imp_strcmp((_imp_string *)/*?*/ &VALUE, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_0047;
// 478 %else %if Switch = 'H'
ANNOUNCE();
// 479 Want Hex = Yes
goto L_0048;
L_0047:;
// 480 Object File = Rest of Item (4)
SWITCHERROR();
// 481 %else %if Switch = 'L'
L_0048:;
// 482 Want Listing = Yes
goto L_0049;
L_0046:;
if (SWITCH != 69) goto L_004A;
// 483 Listing File = Rest of Item (4)
EXCLUDESTANDARDINCLUDES = 1;
// 484 %else
goto L_0049;
L_004A:;
if (SWITCH != 76) goto L_004B;
// 485 Switch Error
WANTLISTING = 1;
// 486 %finish
goto L_0049;
L_004B:;
if (SWITCH != 81) goto L_004C;
// 487
WANTLOG = 0;
// 488 %else %if Switch = '?' %and Debugs Enabled = Yes
OPTIONS = OPTIONS ^ 4;
// 489 { Diagnostics }
goto L_0049;
L_004C:;
if (SWITCH != 67) goto L_004D;
// 490 Switch = Excise (3)
WANTOBJ = 0;
// 491 %if Switch = '1' %start
goto L_0049;
L_004D:;
if (SWITCH != 72) goto L_004E;
// 492 Options = Options ! LL Mon ! LL List ! LL Report
WANTHEX = 1;
// 493 Want Listing = Yes
goto L_0049;
L_004E:;
if (SWITCH != 70) goto L_004F;
// 494 %else %if Switch = '2'
SWITCH = EXCISE(3);
// 495 Options = Options ! Special P2 Diag Bit
if (SWITCH == 66) goto L_0050;
if (SWITCH != 79) goto L_0051;
L_0050:;
// 496 %else %if Switch = '3'
WANTBIN = 1;
// 497 P3 Switch = -1
_imp_strncpy(/*?*/ &OBJECTFILE, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = RESTOFITEM(4);
(void *)&tmp;
}),
/*max:*/ 255);
// 498 %else %if Switch = '*'
goto L_0052;
L_0051:;
if (SWITCH != 72) goto L_0053;
// 499 {turn all diagnostics on}
WANTHEX = 1;
// 500 Options = Options ! Special P2 Diag Bit ! LL Mon ! LL List ! %c
_imp_strncpy(/*?*/ &OBJECTFILE, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = RESTOFITEM(4);
(void *)&tmp;
}),
/*max:*/ 255);
// 501+ LL Report
goto L_0052;
L_0053:;
if (SWITCH != 76) goto L_0054;
// 502 P3 Switch = -1
WANTLISTING = 1;
// 503 Want Listing = Yes
_imp_strncpy(/*?*/ &LISTINGFILE, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = RESTOFITEM(4);
(void *)&tmp;
}),
/*max:*/ 255);
// 504 %else %if Switch = '?'
goto L_0052;
L_0054:;
// 505 Options = Options ! LL Mon
SWITCHERROR();
// 506 %else %if Switch = 'D'
L_0052:;
// 507 Dump Dir = Yes
goto L_0049;
L_004F:;
if (SWITCH != 63) goto L_0055;
if (1 != 1) goto L_0055;
// 508 %else %if Switch = 'K'
SWITCH = EXCISE(3);
// 509 Keep = Yes
if (SWITCH != 49) goto L_0056;
// 510 %else %if Switch = 'F' {Set Global Info_Flags}
OPTIONS = OPTIONS | 1 | 8 | 128;
// 511 Set Flag
WANTLISTING = 1;
// 512 %else
goto L_0057;
L_0056:;
if (SWITCH != 50) goto L_0058;
// 513 Switch Error
OPTIONS = OPTIONS | (-2147483648);
// 514 %finish
goto L_0057;
L_0058:;
if (SWITCH != 51) goto L_0059;
// 515
P3SWITCH = -1;
// 516 %else %if Switch = 'T'
goto L_0057;
L_0059:;
if (SWITCH != 42) goto L_005A;
// 517 {/T4, /T8, /T8A}
OPTIONS = OPTIONS | (-2147483648) | 1 | 8 | 128;
// 518 Switch = Excise (3)
P3SWITCH = -1;
// 519 %if Switch = '4' %start
WANTLISTING = 1;
// 520 Switch = Target T4
goto L_0057;
L_005A:;
if (SWITCH != 63) goto L_005B;
// 521 %else %if Switch = '8'
OPTIONS = OPTIONS | 1;
// 522 Switch = Target T8
goto L_0057;
L_005B:;
if (SWITCH != 68) goto L_005C;
// 523 %if Excise (4) = 'A' %then %c
DUMPDIR = 1;
// 524+ Global Info_Flags = Global Info_Flags ! Global Flag Bug 1
goto L_0057;
L_005C:;
if (SWITCH != 75) goto L_005D;
// 525 %else
KEEP = 1;
// 526 Fatal Error("target must be /T4 or /T8 only: ".Item)
goto L_0057;
L_005D:;
if (SWITCH != 70) goto L_005E;
// 527 %finish
SETFLAG();
// 528
goto L_0057;
L_005E:;
// 529 %if Global Info_Target # 0 %start
SWITCHERROR();
// 530 %if Global Info_Target # Switch %start
L_0057:;
// 531 Fatal Error("target processor already specified: ".Item)
goto L_0049;
L_0055:;
if (SWITCH != 84) goto L_005F;
// 532 %finish
SWITCH = EXCISE(3);
// 533 %finish
if (SWITCH != 52) goto L_0060;
// 534 Global Info_Target = Switch
SWITCH = 1;
// 535
goto L_0061;
L_0060:;
if (SWITCH != 56) goto L_0062;
// 536 %else %if Switch = 'P'
SWITCH = 2;
// 537 Process Patch
if (EXCISE(4) != 65) goto L_0063;
GLOBALINFO.FLAGS = GLOBALINFO.FLAGS | 8;
L_0063:;
// 538
goto L_0061;
L_0062:;
// 539 %else %if Switch = 'B'
FATALERROR(
*({
__typeof__(_imp_string255) tmp = *({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("target must be /T4 or /T8 only: "),
(_imp_string *)/*?*/ &ITEM);
(_imp_string255 *)&tmp;
}) /*q*/;
(_imp_string255 *)&tmp;
})
);
// 540 Process Buffer Switch
L_0061:;
// 541
if (GLOBALINFO.TARGET == 0) goto L_0064;
// 542 %else %if Switch = 'G' {control code-generator options}
if (GLOBALINFO.TARGET == SWITCH) goto L_0065;
// 543 %constinteger GBS = 'B'<<8 ! 'S',
FATALERROR(
*({
__typeof__(_imp_string255) tmp = *({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("target processor already specified: "),
(_imp_string *)/*?*/ &ITEM);
(_imp_string255 *)&tmp;
}) /*q*/;
(_imp_string255 *)&tmp;
})
);
// 544+ GBU = 'B'<<8 ! 'U',
L_0065:;
// 545+ GHS = 'H'<<8 ! 'S',
L_0064:;
// 546+ GHU = 'H'<<8 ! 'U'
GLOBALINFO.TARGET = SWITCH;
// 547 G = Excise(3)<<8 ! Excise(4)
goto L_0049;
L_005F:;
if (SWITCH != 80) goto L_0066;
// 548 %if G = GBS %start {bytes signed}
PROCESSPATCH();
// 549 Global Info_Flags = Global Info_Flags ! Global Flag BS
goto L_0049;
L_0066:;
if (SWITCH != 66) goto L_0067;
// 550 %else %if G = GBU {bytes unsigned}
PROCESSBUFFERSWITCH();
// 551 Global Info_Flags = Global Info_Flags & (\Global Flag BS)
goto L_0049;
L_0067:;
if (SWITCH != 71) goto L_0068;
// 552 %else %if G = GHS {shorts signed}
G = EXCISE(3) << 8 | EXCISE(4);
// 553 Global Info_Flags = Global Info_Flags & (\Global Flag SU) %c
if (G != 16979) goto L_0069;
// 554+ ! Global Flag SH
GLOBALINFO.FLAGS = GLOBALINFO.FLAGS | 4096;
// 555 %else %if G = GHU {shorts unsigned}
goto L_006A;
L_0069:;
if (G != 16981) goto L_006B;
// 556 Global Info_Flags = Global Info_Flags ! Global Flag SH %c
GLOBALINFO.FLAGS = GLOBALINFO.FLAGS & (~4096);
// 557+ ! Global Flag SU
goto L_006A;
L_006B:;
if (G != 18515) goto L_006C;
// 558 %finish %else Switch Error
GLOBALINFO.FLAGS = GLOBALINFO.FLAGS & (~8192) | 2048;
// 559
goto L_006A;
L_006C:;
if (G != 18517) goto L_006D;
// 560 {002} %else %if Switch = 'Z'
GLOBALINFO.FLAGS = GLOBALINFO.FLAGS | 2048 | 8192;
// 561 {002} Switch = Excise(3)
goto L_006A;
L_006D:;
SWITCHERROR();
L_006A:;
// 562 {002} %if Switch = 'I' %start
goto L_0049;
L_0068:;
if (SWITCH != 90) goto L_006E;
// 563 {002} Global Info_Flags = Global Info_Flags ! Global Flag Debug
SWITCH = EXCISE(3);
// 564 {002} %else %if Switch = 'D'
if (SWITCH != 73) goto L_006F;
// 565 {002} !no action just now: reserved for future use.
GLOBALINFO.FLAGS = GLOBALINFO.FLAGS | 16384;
// 566 {002} %else
goto L_0070;
L_006F:;
if (SWITCH != 68) goto L_0071;
// 567 {002} Switch Error
goto L_0070;
L_0071:;
// 568 {002} %finish
SWITCHERROR();
// 569
L_0070:;
// 570 %else
goto L_0049;
L_006E:;
// 571 Switch Error
SWITCHERROR();
// 572 %finish
L_0049:;
// 573
// 574 Switch Line = Switch Line . " " . Item
_imp_strncpy(/*?*/ &SWITCHLINE, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &SWITCHLINE,
(_imp_string *)/*?*/ _imp_str_literal_ptr(" "));
(_imp_string255 *)&tmp;
}),
(_imp_string *)/*?*/ &ITEM);
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 255);
// 575
// 576 %finish
L_0045:;
// 577 %repeat
goto L_0040;
L_0042:;
// 578
// 579 ! Fatal Error("/T4 or /T8 required") %if Global Info_Target = 0
// 580 Global Info_Target = Target T4 %if Global Info_Target = 0 {play safe}
if (GLOBALINFO.TARGET != 0) goto L_0072;
GLOBALINFO.TARGET = 1;
L_0072:;
// 581
// 582 Set Global Flags
SETGLOBALFLAGS();
// 583
// 584 { Default source file extension, etc }
// 585 %stop %if Source file = ""
if (_imp_strcmp((_imp_string *)/*?*/ &SOURCEFILE, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) != 0) goto L_0073;
_imp_stop(0);
L_0073:;
// 586 Source File = File Def (Source File, Source File, ".imp")
_imp_strncpy(/*?*/ &SOURCEFILE, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = FILEDEF((_imp_string255 *)/*p*/ /*?*/ &SOURCEFILE, (_imp_string255 *)/*p*/ /*?*/ &SOURCEFILE,
_imp_str_literal(".imp"));
(void *)&tmp;
}),
/*max:*/ 255);
// 587
// 588 { Check sensible object file requirements and default }
// 589 %if Want Obj = Yes %start
if (WANTOBJ != 1) goto L_0074;
// 590 %if Want Bin = Want Hex = No %start
{
// Double-sided test on WANTHEX (Part I)
int tmp;
if (WANTBIN != (tmp = WANTHEX)) goto L_0075;
// Double-sided test on WANTHEX (Part II)
if (tmp != 0) goto L_0075;
}
// 591 Want Bin = Default Want Bin
WANTBIN = 1;
// 592 Want Hex = Default Want Hex
WANTHEX = 0;
// 593 %else %if Want Bin = Want Hex = Yes
goto L_0076;
L_0075:;
{
// Double-sided test on WANTHEX (Part I)
int tmp;
if (WANTBIN != (tmp = WANTHEX)) goto L_0077;
// Double-sided test on WANTHEX (Part II)
if (tmp != 1) goto L_0077;
}
// 594 Fatal Error ("cannot produce both hex AND binary files")
FATALERROR(_imp_str_literal("cannot produce both hex AND binary files"));
// 595 %finish
L_0077:;
L_0076:;
// 596 %if Want Hex = Yes %start
if (WANTHEX != 1) goto L_0078;
// 597 Object File = File Def (Object File, Source File, ".hex")
_imp_strncpy(/*?*/ &OBJECTFILE, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = FILEDEF((_imp_string255 *)/*p*/ /*?*/ &OBJECTFILE, (_imp_string255 *)/*p*/ /*?*/ &SOURCEFILE,
_imp_str_literal(".hex"));
(void *)&tmp;
}),
/*max:*/ 255);
// 598 %else
goto L_0079;
L_0078:;
// 599 Global Info_Flags = Global Info_Flags ! Global Flag Binary
GLOBALINFO.FLAGS = GLOBALINFO.FLAGS | 1;
// 600 Object File = File Def (Object File, Source File, ".fla")
_imp_strncpy(/*?*/ &OBJECTFILE, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = FILEDEF((_imp_string255 *)/*p*/ /*?*/ &OBJECTFILE, (_imp_string255 *)/*p*/ /*?*/ &SOURCEFILE,
_imp_str_literal(".fla"));
(void *)&tmp;
}),
/*max:*/ 255);
// 601 %finish
L_0079:;
// 602 %finish
L_0074:;
// 603
// 604 { Sort out listing file, if any. }
// 605 %if Want Listing = Yes %start
if (WANTLISTING != 1) goto L_007A;
// 606 Options = Options ! LL List
OPTIONS = OPTIONS | 8;
// 607 Listing File = File Def (Listing File, Source File, ".lis")
_imp_strncpy(/*?*/ &LISTINGFILE, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = FILEDEF((_imp_string255 *)/*p*/ /*?*/ &LISTINGFILE, (_imp_string255 *)/*p*/ /*?*/ &SOURCEFILE,
_imp_str_literal(".lis"));
(void *)&tmp;
}),
/*max:*/ 255);
// 608 %finish
L_007A:;
// 609
// 610 %end
goto end_1000;
end_1000:;
}
// 611
// 612
// 613 {
// 614 { Open Source File }
// 615 {
// 616 Select Input(0); Select Output(0)
_imp_SELECTINPUT(0);
_imp_SELECTOUTPUT(0);
// 617 %begin
{ /*%begin*/
// 618 %on IO Error %start
if (!_imp_on_event(9)) goto L_007B;
// 619 Fatal Error ("unable to open " . Source File . " as source file")
FATALERROR(
*({
__typeof__(_imp_string255) tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("unable to open "),
(_imp_string *)/*?*/ &SOURCEFILE);
(_imp_string255 *)&tmp;
}),
(_imp_string *)/*?*/ _imp_str_literal_ptr(" as source file"));
(_imp_string255 *)&tmp;
}) /*q*/;
(_imp_string255 *)&tmp;
})
);
// 620 %finish
L_007B:;
// 621 Open Input (1, Source File)
_imp_OPENINPUT(1,
*({
__typeof__(_imp_string255) tmp = SOURCEFILE /*q*/;
(_imp_string255 *)&tmp;
})
);
// 622 %end
goto end_1002;
end_1002:;
}
// 623
// 624 { Derive module id
// 625
// 626 Module = Source File
_imp_strncpy(/*?*/ &MODULE, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = SOURCEFILE;
(void *)&tmp;
}),
/*max:*/ 255);
// 627
// 628 {
// 629 { Listing header (if any)
// 630 {
// 631 %if Want Listing = Yes %start
if (WANTLISTING != 1) goto L_007C;
// 632 %begin
{ /*%begin*/
// 633 %on IO Error %start
if (!_imp_on_event(9)) goto L_007C;
// 634 Fatal Error ("unable to open " . Listing File . " as listing file")
FATALERROR(
*({
__typeof__(_imp_string255) tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("unable to open "),
(_imp_string *)/*?*/ &LISTINGFILE);
(_imp_string255 *)&tmp;
}),
(_imp_string *)/*?*/ _imp_str_literal_ptr(" as listing file"));
(_imp_string255 *)&tmp;
}) /*q*/;
(_imp_string255 *)&tmp;
})
);
// 635 %finish
L_007C:;
// 636 Open Output (Listing Stream, Listing File)
_imp_OPENOUTPUT(7,
*({
__typeof__(_imp_string255) tmp = LISTINGFILE /*q*/;
(_imp_string255 *)&tmp;
})
);
// 637 %end
goto end_1003;
end_1003:;
}
// 638 Select Output(Listing Stream)
_imp_SELECTOUTPUT(7);
// 639 Print String("Source file: "); Print String(Source File); New Line
_imp_PRINTSTRING(_imp_str_literal("Source file: "));
_imp_PRINTSTRING(
*({
__typeof__(_imp_string255) tmp = SOURCEFILE /*q*/;
(_imp_string255 *)&tmp;
})
);
_imp_NEWLINE();
// 640 %if Want Obj = Yes %start
if (WANTOBJ != 1) goto L_007D;
// 641 Print String("Object file: "); Print String(Object File); New Line
_imp_PRINTSTRING(_imp_str_literal("Object file: "));
_imp_PRINTSTRING(
*({
__typeof__(_imp_string255) tmp = OBJECTFILE /*q*/;
(_imp_string255 *)&tmp;
})
);
_imp_NEWLINE();
// 642 %finish
L_007D:;
// 643 %if Length (Switch Line) > 1 %then %c
if (*_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &SWITCHLINE) <= 1) goto L_007E;
_imp_PRINTSTRING(
*({
__typeof__(_imp_string255) tmp = *({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("Switches: "), (_imp_string *)/*?*/ &SWITCHLINE);
(_imp_string255 *)&tmp;
}) /*q*/;
(_imp_string255 *)&tmp;
})
);
_imp_NEWLINE();
L_007E:;
// 644+ Print String ("Switches: " . Switch Line) %and New Line
// 645 Print String("Compiled by: Imp77 pass1 V")
_imp_PRINTSTRING(_imp_str_literal("Compiled by: Imp77 pass1 V"));
// 646 Print String(P1 Version); New Lines(2)
_imp_PRINTSTRING(
*({
__typeof__(_imp_string7) tmp = P1VERSION /*q*/;
(_imp_string255 *)&tmp;
})
);
_imp_NEWLINES(2);
// 647 %finish
L_007F:;
// 648
// 649 {
// 650 { Pass 1
// 651 {
// 652 Open Store Input(Predef Stream, First El(Predef data), Predef Size)
OPENSTOREINPUT(2, FIRSTEL(PREDEFDATA), 4853);
// 653 Open Temp Output (Icode Out, 1) {I-Code Temp file}
OPENTEMPOUTPUT(1, 1);
// 654 Select Output(Icode Out)
_imp_SELECTOUTPUT(1);
// 655
// 656 %if Options & Special P2 Diag Bit # 0 %start
if (OPTIONS & (-2147483648) == 0) goto L_007F;
// 657 { This is a special I-code to turn on Pass 2 diags }
// 658 Print Symbol('y'); Print Symbol(16_8F); Print Symbol(16_FF)
_imp_PRINTSYMBOL(121);
_imp_PRINTSYMBOL(143);
_imp_PRINTSYMBOL(255);
// 659 %finish
L_007F:;
// 660
// 661 Pass1(Stats, Faults, Options)
PASS1(/*?*/ &STATS, /*?*/ &FAULTS, OPTIONS);
// 662
// 663 Select Output(Icode Out); Close Output
_imp_SELECTOUTPUT(1);
_imp_CLOSEOUTPUT();
// 664 Select Input(1); Close Input
_imp_SELECTINPUT(1);
_imp_CLOSEINPUT();
// 665
// 666 Report (0)
REPORT(0);
// 667 Report (Listing Stream) %if Want Listing = Yes
if (WANTLISTING != 1) goto L_0080;
REPORT(7);
L_0080:;
// 668 Select Output (Listing Stream); Close Output
_imp_SELECTOUTPUT(7);
_imp_CLOSEOUTPUT();
// 669
// 670 %if Faults = 0 %and Want Obj = Yes %start
if (FAULTS != 0) goto L_0081;
if (WANTOBJ != 1) goto L_0081;
// 671 {
// 672 { Do the back end if no errors and required
// 673 {
// 674 { Pass 2
// 675 {
// 676 Open Temp Input (Icode In, 1) {Main I-Code file}
OPENTEMPINPUT(1, 1);
// 677 ! Open Temp Output (Code Stream, 2) {code}
// 678 ! Open Temp Output (Blocks Stream, 3) {blocks info}
// 679
// 680 %begin
{ /*%begin*/
// 681 %on IO Error %start
if (!_imp_on_event(9)) goto L_0081;
// 682 Fatal Error ("unable to open " . Object File . " as object file")
FATALERROR(
*({
__typeof__(_imp_string255) tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("unable to open "),
(_imp_string *)/*?*/ &OBJECTFILE);
(_imp_string255 *)&tmp;
}),
(_imp_string *)/*?*/ _imp_str_literal_ptr(" as object file"));
(_imp_string255 *)&tmp;
}) /*q*/;
(_imp_string255 *)&tmp;
})
);
// 683 %finish
L_0081:;
// 684 Open Output(Object Stream, Object File)
_imp_OPENOUTPUT(1,
*({
__typeof__(_imp_string255) tmp = OBJECTFILE /*q*/;
(_imp_string255 *)&tmp;
})
);
// 685 %end
goto end_1004;
end_1004:;
}
// 686
// 687 Select Output (0)
_imp_SELECTOUTPUT(0);
// 688
// 689 Pass2 Result = Pass2 (0, Options, Global Info)
PASS2RESULT = PASS2(0, OPTIONS, /*?*/ &GLOBALINFO);
// 690
// 691 Select Input(Icode In); Close Input
_imp_SELECTINPUT(1);
_imp_CLOSEINPUT();
// 692 ! Select Output(Code Stream); Close Output
// 693 ! Select Output(Blocks Stream); Close Output
// 694
// 695 ! Delete Temp (1); !for now, always keep Icode file
// 696
// 697 ! %if Pass2 Result & Pass2 Error = 0 %start
// 698 ! {
// 699 ! { Pass2 okay - on to Pass3
// 700 ! {
// 701 ! %begin
// 702 ! %on IO Error %start
// 703 ! Fatal Error ("unable to open " . Object File . " as object file")
// 704 ! %finish
// 705 ! %if Want Hex = No %start
// 706 ! Open Binary Output(Object Stream, Object File)
// 707 ! %else
// 708 ! Open Output(Object Stream, Object File)
// 709 ! %finish
// 710 ! %end
// 711 ! Open Temp Input (Code Stream, 2)
// 712 ! Open Temp Input (Blocks Stream, 3)
// 713 ! Select Output(Object Stream)
// 714 !
// 715 ! Pass3(P3 Switch, Global Info)
// 716 !
// 717 ! Select Output(Object Stream); Close Output
// 718 ! Select Input(Code Stream); Close Input
// 719 ! Select Input(Blocks Stream); Close Input
// 720 !
// 721 ! %finish
// 722 !
// 723 ! Delete Temp (2)
// 724 ! Delete Temp (3)
// 725
// 726 %finish
L_0082:;
// 727
// 728 %end
return;
} /* end of IMP */
// ?OK unused
// ?J unused
// ?REQUESTEDINCLUDES unused
// 729
// 730 %routine Compile with Traceback
static void COMPILEWITHTRACEBACK(void) {
// 731 Imp
IMP();
// 732 %end
return;
} /* end of COMPILEWITHTRACEBACK */
// 733
// 734 %routine Compile with no Traceback
static void COMPILEWITHNOTRACEBACK(void) {
// 735 %integer I
int I;
// 736 %on %event * %start
if (!_imp_on_event(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) goto L_0082;
// 737 !*FC*! Delete Temp (I) %for I = 1, 1, NTemps
// 738 %if Event_Event = IO Error %start
if (_imp_EVENT().EVENT != 9) goto L_0083;
// 739 Fatal Error ("file system failure: " . ItoS(Event_{Extra}Info,0))
FATALERROR(
*({
__typeof__(_imp_string255) tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("file system failure: "), ({
__typeof__(_imp_string255) tmp; /*E*/
tmp = _imp_ITOS(_imp_EVENT().INFO, 0);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
}) /*q*/;
(_imp_string255 *)&tmp;
})
);
// 740 %else %if Event_Event = 2 %and Event_Sub = 1
goto L_0084;
L_0083:;
if (_imp_EVENT().EVENT != 2) goto L_0085;
if (_imp_EVENT().SUB != 1) goto L_0085;
// 741 Fatal Error ("not enough memory")
FATALERROR(_imp_str_literal("not enough memory"));
// 742 %else %if Event_Event = 0 = Event_Sub
goto L_0084;
L_0085:;
{
// Double-sided test on 0 (Part I)
int tmp;
if (_imp_EVENT().EVENT != (tmp = 0)) goto L_0086;
// Double-sided test on 0 (Part II)
if (tmp != _imp_EVENT().SUB) goto L_0086;
}
// 743 %stop
_imp_stop(0);
// 744 %else
L_0086:;
// 745 CSR ("event ".Itos(Event_Event,0).",".Itos(Event_Sub,0).",". %c
CSR(
*({
__typeof__(_imp_string255) tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
_imp_string255 tmp = _imp_join(
(_imp_string *)/*?*/ &*({
_imp_string255 tmp = _imp_join(
(_imp_string *)/*?*/ &*({
_imp_string255 tmp = _imp_join(
(_imp_string *)/*?*/ &*({
_imp_string255 tmp = _imp_join(
(_imp_string *)/*?*/ _imp_str_literal_ptr("event "), ({
__typeof__(_imp_string255) tmp; /*E*/
tmp = _imp_ITOS(_imp_EVENT().EVENT, 0);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
}),
(_imp_string *)/*?*/ _imp_str_literal_ptr(","));
(_imp_string255 *)&tmp;
}),
({
__typeof__(_imp_string255) tmp; /*E*/
tmp = _imp_ITOS(_imp_EVENT().SUB, 0);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
}),
(_imp_string *)/*?*/ _imp_str_literal_ptr(","));
(_imp_string255 *)&tmp;
}),
({
__typeof__(_imp_string255) tmp; /*E*/
tmp = _imp_ITOS(_imp_EVENT().INFO, 0);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
}) /*q*/;
(_imp_string255 *)&tmp;
})
);
// 746+ Itos(Event_{Extra}Info,0))
// 747 %finish
L_0084:;
// 748 %finish
L_0082:;
// 749 Imp
IMP();
// 750 %end
return;
} /* end of COMPILEWITHNOTRACEBACK */
// ?I unused
// 751
// 752 { Start here }
// 753
// 754 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 755
// 756 %if Translate ("3L_TRACEBACK") = "3L_TRACEBACK" %c
if (_imp_strcmp((_imp_string *)/*?*/ &TRANSLATE(_imp_str_literal("3L_TRACEBACK")),
(_imp_string *)/*?*/ _imp_str_literal_ptr("3L_TRACEBACK")) != 0)
goto L_0087;
COMPILEWITHNOTRACEBACK();
goto L_0088;
L_0087:;
COMPILEWITHTRACEBACK();
L_0088:;
// 757+ %then Compile with no Traceback %c
// 758+ %else Compile with Traceback
// 759
// 760 %endofprogram
_imp_stop(0);
return 0;
end_0:;
}