( h __text__TEXTz .__data__DATA }__cstring__TEXT% (__common__DATA__bss__DATA`__picsymbolstub2__TEXT x__la_sym_ptr2__DATAP __nl_symbol_ptr__DATA\ (__textcoal_nt__TEXT\ | @<@< P ,@?UVSĀEEEED$$$XEED$D$ED$ $D$D$$D$D$E$UЍ4KUЍK 1G8u5UЍ4KUЍK@1C8EEE ?;8~[7T$PT$PT$ P T$$@D$(EȉD$ẺD$EЉD$ EԉD$E؉D$$EY7T$PT$PT$ P T$$@D$(EȉD$ẺD$EЉD$ EԉD$E؉D$$Q$@,EEE ?3T$,PT$0PT$4P T$8@D$<3T$PT$PT$ P T$$@D$(EȉD$ẺD$EЉD$ EԉD$E؉D$$h3T$PT$PT$ P T$@D$$ED$$[^]ÐUS$D8t$TE<KTEE E}!(EEMl"KKKKhyyyyyyy9Gaa$"$h$W$$$.$$"$$o$^$M$A$0$$$$t$$"Z$$@$2$$$${$[]ÐUS$h8u$E<$EEE})EEMlR%6_|8UrRRa8''RRR8RF$-$$$"$$$}$l$`$T$H$<$0$.$$q$$"T$$7$$$$$$$v$j$^$R$A$0$x$$$$$,$++$$$$,$${$+o$^$"R$ F$5$ )$$ h$Z$$$-4$$$ $$[]US4T8u!EEE E܋E $EEE E܋E $CE؋UE܋UBEUBEUB EUBE4[]UVSpDžhDžlDžpƅtD$$EED$D$hD$ D$D$$jD$D$E$:UЍ4UЍ 18u5UЍ4UЍ@18 8uY$7ehD$$ EEEEEDžxEUUUED$0ED$,ED$ED$ED$ ED$$ED$(ED$ED$ED$ EĉD$EȉD$$ED$0ED$,ED$ED$ED$ ED$$ED$(ED$ED$ED$ EĉD$EȉD$$KED$0ED$,ED$ED$ED$ ED$$ED$(ED$ED$ED$ EĉD$EȉD$$$68E$EEU;|`EE} EEUD$0ED$,ED$ED$ED$ ED$$ED$(ED$ED$ED$ EĉD$EȉD$$UЍ|ExD$|D$ED$ED$ ED$$$PT$PT$P T$ @D$AUЍ|UЍЍ%t |ExD$|D$ED$ED$ ED$$$PT$PT$P T$ @D$UЍЍ|ExD$|D$ED$ ED$ED$$1E$ E$6E$EU;|EE} EEUD$0ED$,ED$ED$ED$ ED$$ED$(ED$ED$ED$ EĉD$EȉD$$PDž|UЍЍ%t Dž|ExD$|D$ED$ED$ ED$$$PT$PT$P T$ @D$tUЍЍ|ExD$|D$ED$ ED$ED$$1E$E$6E$E|xU;|/tE8 t)tE8 ttE8tUЍ%|U} EEUD$0ED$,ED$ED$ED$ ED$$ED$(ED$ED$ED$ EĉD$EȉD$$Dž|tE8 u Dž|tE8 u Dž|UЍ%t |ExD$|D$ED$ED$ ED$$$PT$PT$P T$ @D$E|E xD$|D$ED$ ED$ED$$1mE$E|E$7hD$$i8T$PT$PT$ P T$@D$$*hD$$$#[^]ÐUVS@8te 8u ;E { EEE荃E}uEE}/~ߍE<D$MȍЍE$EUЍ;MȍЍEDD$$MȍЍEDD$$MȍЍED D$$dMȍЍEDD$$4MȍЍEDD$$MȍЍEDD$$ED$D$ MȍЍED$D$$uD$D$E$;8UЍ4UЍ@1vE8t/MȍЍED$$5UЍ4UЍ1[MUЍEEE@[^]ÐUU)E}/~(EEEUVSxD$$@[^]ÐUSED$$E[]% %&@(M)M)M)N)`)M)M)M)M)M)))M)M)M)M)M)))M)M)M)M)M)))M)M)M)M)M)* *M)M)M)M)M)"*@*M)M)M)M)M)G+U+M)M)M)M)M)g++`-M)M)M)M). .M)M)M)M)M)//M)M)M)M)M)1 124 79:< <M)M)M)M)M)==M)M)M)M)M)L?`?M)M)M)M)M)@AM)M)M)M)M)BBDFM)M)M)GGM)M)M)M)M)I IJM)M)M)M))L@LMM)M)M)M)pNN`PM)M)M)M)fQQRM)M)M)M)BT`TW\^_M)WaaM)M)M)M)M)mddM)M)M)M)M)Ee`eM)M)M)M)M):f`fM)M)M)M)M)rggjkM)M)M)llmM)M)M)M)oo pM)M)M)M)6q@qrM)M)M)M)hss@tM)M)M)M)uuvM)M)M)M)wwQxM)M)M)M)_xxM)M)M)M)M)xyyM)M)M)M)yy@zM)M)M)M)hzz2|M)M)M)M)M|`|~M)M)M)M)/~@~~M)M)M)M)~]M)M)M)M)nM)M)M)M)M)M)M)M)%@M)M)M)M)M)N)`)M)M)M)M)M)))M)M)M)M)M)))M)M)M)M)M)))M)M)M)M)M)* *M)M)M)M)M)"* M)M)M)M)M)G+U+M)M)M)M)M)g+@M)M)M)M)M).M)M)M)M)M)/M)M)M)M)M)1` <M)M)M)M)M)=@M)M)M)M)M)L?M)M)M)M)M)@M)M)M)M)M)B M)M)M)M)M)G`M)M)M)M)M)IM)M)M)M)M))L`M)M)M)M)M)pN@M)M)M)M)M)fQ`M)M)M)M)M)BT@\ @M)WaM)M)M)M)M)mdM)M)M)M)M)EeM)M)M)M)M):fM)M)M)M)M)rg M)M)M)M)M)lM)M)M)M)M)oM)M)M)M)M)6q M)M)M)M)hsM)M)M)M)u@M)M)M)M)M)w QxM)M)M)M)_xxM)M)M)M)M)xM)M)M)M)M)yM)M)M)M)M)hzM)M)M)M)M)M|M)M)M)M)M)/~`M)M)M)M)M)~M)M)M)M)M)n M)M)M)M)M)M)M)M)M)M)@M)M)M)M)M)J`M)M)M)M)M)-@M)M)M)M)M)oM)M)M)M)M)4`M)M)M)M)M)Main__Box__Routinemaxw table n w w2 line lc t; n = table --> 0; @add n 6 -> sp; @split_window sp; @set_window 1; w = 0 -> 33; if (w == 0) w=80; w2 = (w - maxw)/2; style reverse; @sub w2 2 -> w; line = 5; lc = 1; @set_cursor 4 w; spaces maxw + 4;do { @set_cursor line w; spaces maxw + 4; @set_cursor line w2; t = table --> lc; if (t~=0) print (string) t; line++; lc++; } until (lc > n); @set_cursor line w; spaces maxw + 4; @buffer_mode 1; style roman; @set_window 0; @split_window 1; @output_stream $ffff; print "[ "; lc = 1;do { w = table --> lc; if (w ~= 0) print (string) w; lc++; if (lc > n) { print "]^^"; break; } print "^ "; } until (false); @output_stream 1; ]R_Processa b c; print "Action <", a, " ", b, " ", c, ">^"; ]DefArtobj; print "the ", obj; ]InDefArtobj; print "a ", obj; ]CDefArtobj; print "The ", obj; ]CInDefArtobj; print "A ", obj; ]PrintShortNameobj; switch(metaclass(obj)) { 0: print "nothing"; Object: @print_obj obj; Class: print "class "; @print_obj obj; Routine: print "(routine at ", obj, ")"; String: print "(string at ", obj, ")"; } ]EnglishNumberobj; print obj; ]Print__PNameprop p size cla i; if (prop & $c000) { cla = #classes_table-->(prop & $ff); print (name) cla, "::"; if ((prop & $8000) == 0) prop = (prop & $3f00)/$100; else { prop = (prop & $7f00)/$100; i = cla.3; while ((i-->0 ~= 0) && (prop>0)) { i = i + i->2 + 3; prop--; } prop = (i-->0) & $7fff; } }p = #identifiers_table; size = p-->0; if (prop<=0 || prop>=size || p-->prop==0) print ""; else print (string) p-->prop; ]WV__Probj identifier value x; x = obj..&identifier; if (x==0) { RT__Err("write to", obj, identifier); return; } #ifdef INFIX; if (obj has infix__watching || (debug_flag & 15)) RT__TrPS(obj,identifier,value); #ifnot; #ifdef DEBUG; if (debug_flag & 15) RT__TrPS(obj,identifier,value); #endif; #endif; x-->0 = value; ]RV__Probj identifier x; x = obj..&identifier; if (x==0) { if (identifier >= 1 && identifier < 64 && obj.#identifier <= 2) return obj.identifier; RT__Err("read", obj, identifier); return; } if (obj.#identifier > 2) RT__Err("read", obj, identifier, 2); return x-->0; ]CA__Probj id a b c d e f x y z s s2 n m; if (obj < 1 || obj > #largest_object-255) { switch(Z__Region(obj)) { 2: if (id == call) { s = sender; sender = self; self = obj; #ifdef action;sw__var=action;#endif; x = indirect(obj, a, b, c, d, e, f); self = sender; sender = s; return x; } jump Call__Error;3: if (id == print) { @print_paddr obj; rtrue; } if (id == print_to_array) { @output_stream 3 a; @print_paddr obj; @output_stream -3; return a-->0; } jump Call__Error; } jump Call__Error; } @check_arg_count 3 ?~A__x;y++;@check_arg_count 4 ?~A__x;y++; @check_arg_count 5 ?~A__x;y++;@check_arg_count 6 ?~A__x;y++; @check_arg_count 7 ?~A__x;y++;@check_arg_count 8 ?~A__x;y++;.A__x;#ifdef INFIX;if (obj has infix__watching) n=1;#endif; #ifdef DEBUG;if (debug_flag & 1 ~= 0) n=1;#endif; if (n==1) { #ifdef DEBUG;n=debug_flag & 1; debug_flag=debug_flag-n;#endif; print "[ ~", (name) obj, "~.", (property) id, "("; switch(y) { 1: print a; 2: print a,",",b; 3: print a,",",b,",",c; 4: print a,",",b,",",c,",",d; 5: print a,",",b,",",c,",",d,",",e; 6: print a,",",b,",",c,",",d,",",e,",",f; } print ") ]^"; #ifdef DEBUG;debug_flag = debug_flag + n;#endif; }if (id > 0 && id < 64) { x = obj.&id; if (x==0) { x=$000a-->0 + 2*(id-1); n=2; } else n = obj.#id; } else { if (id>=64 && id<69 && obj in Class) return Cl__Ms(obj,id,y,a,b,c,d); x = obj..&id; if (x == 0) { .Call__Error; RT__Err("send message", obj, id); return; } n = 0->(x-1); if (id&$C000==$4000) switch (n&$C0) { 0: n=1; $40: n=2; $80: n=n&$3F; } }for (:2*mm==$ffff) rfalse; switch(Z__Region(x-->m)) { 2: s = sender; sender = self; self = obj; s2 = sw__var; #ifdef LibSerial; if (id==life) sw__var=reason_code; else sw__var=action; #endif; switch(y) { 0: z = indirect(x-->m); 1: z = indirect(x-->m, a); 2: z = indirect(x-->m, a, b); 3: z = indirect(x-->m, a, b, c);4: z = indirect(x-->m, a, b, c, d); 5:z = indirect(x-->m, a, b, c, d, e); 6: z = indirect(x-->m, a, b, c, d, e, f); } self = sender; sender = s; sw__var = s2; if (z ~= 0) return z; 3: print_ret (string) x-->m; default: return x-->m; } } rfalse; ]IB__Probj identifier x; x = obj..&identifier; if (x==0) { RT__Err("increment", obj, identifier); return; } #ifdef INFIX; if (obj has infix__watching || (debug_flag & 15)) RT__TrPS(obj,identifier,(x-->0)+1); #ifnot; #ifdef DEBUG; if (debug_flag & 15) RT__TrPS(obj,identifier,(x-->0)+1); #endif; #endif; return ++(x-->0); ]IA__Probj identifier x; x = obj..&identifier; if (x==0) { RT__Err("increment", obj, identifier); return; } #ifdef INFIX; if (obj has infix__watching || (debug_flag & 15)) RT__TrPS(obj,identifier,(x-->0)+1); #ifnot; #ifdef DEBUG; if (debug_flag & 15) RT__TrPS(obj,identifier,(x-->0)+1); #endif; #endif; return (x-->0)++; ]DB__Probj identifier x; x = obj..&identifier; if (x==0) { RT__Err("decrement", obj, identifier); return; } #ifdef INFIX; if (obj has infix__watching || (debug_flag & 15)) RT__TrPS(obj,identifier,(x-->0)-1); #ifnot; #ifdef DEBUG; if (debug_flag & 15) RT__TrPS(obj,identifier,(x-->0)-1); #endif; #endif; return --(x-->0); ]DA__Probj identifier x; x = obj..&identifier; if (x==0) { RT__Err("decrement", obj, identifier); return; } #ifdef INFIX; if (obj has infix__watching || (debug_flag & 15)) RT__TrPS(obj,identifier,(x-->0)-1); #ifnot; #ifdef DEBUG; if (debug_flag & 15) RT__TrPS(obj,identifier,(x-->0)-1); #endif; #endif; return (x-->0)--; ]RA__Probj identifier i otherid cla; if (obj==0) rfalse; if (identifier<64 && identifier>0) return obj.&identifier; if (identifier & $8000 ~= 0) { cla = #classes_table-->(identifier & $ff); if (cla.&3 == 0) rfalse; if (~~(obj ofclass cla)) rfalse; identifier = (identifier & $7f00) / $100; i = cla.3; while (identifier>0) { identifier--; i = i + i->2 + 3; } return i+3; }if (identifier & $4000 ~= 0) { cla = #classes_table-->(identifier & $ff); identifier = (identifier & $3f00) / $100; if (~~(obj ofclass cla)) rfalse; i=0-->5; if (cla == 2) return i+2*identifier-2; i = 0-->((i+124+cla*14)/2); i = CP__Tab(i + 2*(0->i) + 1, -1)+6; return CP__Tab(i, identifier); } if (obj.&3 == 0) rfalse; if (obj in 1) { if (identifier<64 || identifier>=72) rfalse; }if (self == obj) otherid = identifier | $8000; i = obj.3; while (i-->0 ~= 0) { if (i-->0 == identifier or otherid) return i+3; i = i + i->2 + 3; } rfalse; ]RL__Probj identifier x; if (identifier<64 && identifier>0) return obj.#identifier; x = obj..&identifier; if (x==0) rfalse; if (identifier&$C000==$4000) switch (((x-1)->0)&$C0) { 0: return 1; $40: return 2; $80: return ((x-1)->0)&$3F; } return (x-1)->0; ]RA__Sccla identifier otherid i j k; if (cla notin 1 && cla > 4) { RT__Err("be a '::' superclass", cla, -1); rfalse; } if (self ofclass cla) otherid = identifier | $8000; for (j=0: #classes_table-->j ~= 0: j++) { if (cla==#classes_table-->j) { if (identifier < 64) return $4000 + identifier*$100 + j; if (cla.&3 == 0) break; i = cla.3;while (i-->0 ~= 0) { if (i-->0 == identifier or otherid) return $8000 + k*$100 + j; i = i + i->2 + 3; k++; } break; } } RT__Err("make use of", cla, identifier); rfalse; ]OP__Probj identifier; if (obj<1 || obj > (#largest_object-255)) { if (identifier ~= print or print_to_array or call) rfalse; switch(Z__Region(obj)) { 2: if (identifier == call) rtrue; 3: if (identifier == print or print_to_array) rtrue; } rfalse; }if (identifier<64) { if (obj.&identifier ~= 0) rtrue; rfalse; } if (obj..&identifier ~= 0) rtrue; if (identifier<72 && obj in 1) rtrue; rfalse; ]OC__Clobj cla j a n; if (obj<1 || obj > (#largest_object-255)) { if (cla ~= 3 or 4) rfalse; if (Z__Region(obj) == cla-1) rtrue; rfalse; } if (cla == 1) { if (obj<=4) rtrue; if (obj in 1) rtrue; rfalse; } else if (cla == 2) { if (obj<=4) rfalse; if (obj in 1) rfalse; rtrue; } else if (cla == 3 or 4) { rfalse; }if (cla notin 1) { RT__Err("apply 'ofclass' for", cla, -1);rfalse;} @get_prop_addr obj 2 -> a; if (a==0) rfalse; @get_prop_len a -> n; for (j=0: jj == cla) rtrue; } rfalse; ]Copy__Primitiveo1 o2 a1 a2 n m l size identifier; for (n=0:n<48:n++) { if (o2 has n) give o1 n; else give o1 ~n; } for (n=1:n<64:n++) if (n~=2 or 3) { a1 = o1.&n; a2 = o2.&n; size = o1.#n; if (a1~=0 && a2~=0 && size==o2.#n) { for (m=0:mm=a2->m; } }if (o1.&3 == 0 || o2.&3 == 0) return; for (n=o2.3: n-->0 ~= 0: n = n + size + 3) { identifier = n-->0; size = n->2; for (m=o1.3: m-->0 ~= 0: m = m + m->2 + 3) if ((identifier & $7fff == (m-->0) & $7fff) && size==m->2) for (l=3: ll = n->l; } ]RT__Errcrime obj id size p q; print "^[** Programming error: "; if (crime<0) jump RErr; if (crime==1) { print "class "; @print_obj obj; ": 'create' can have 0 to 3 parameters only **]";} if (crime == 32) "objectloop broken because the object ", (name) obj, " was moved while the loop passed through it **]"; if (crime == 33) "tried to print (char) ", obj, ", which is not a valid ZSCII character code for output **]"; if (crime == 34) "tried to print (address) on something not the ", "byte address of a string **]"; if (crime == 35) "tried to print (string) on something not a ", "string **]"; if (crime == 36) "tried to print (object) on something not an ", "object or class **]";if (crime < 32) { print "tried to "; if (crime >= 28) { if (crime==28 or 29) print "read from "; else print "write to "; if (crime==29 or 31) print "-"; print "->", obj, " in the"; switch(size&7){0,1:q=0; 2:print " string"; q=1; 3:print " table";q=1; 4:print " buffer";q=WORDSIZE;} if(size&16) print" (->)"; if(size&8) print" (-->)"; " array ~", (string) #array_names_offset-->p, "~, which has entries ", q, " up to ",id," **]"; } if (crime >= 24 && crime <=27) { if (crime<=25) print "read"; else print "write"; print " outside memory using "; switch(crime) { 24,26:"-> **]"; 25,27:"--> **]"; } } if (crime < 4) print "test "; else if (crime < 12 || crime > 20) print "find the "; else if (crime < 14) print "use "; if (crime==20) "divide by zero **]"; print "~"; switch(crime) { 2: print "in~ or ~notin"; 3: print "has~ or ~hasnt"; 4: print "parent"; 5: print "eldest"; 6: print "child"; 7: print "younger"; 8: print "sibling"; 9: print "children"; 10: print "youngest"; 11: print "elder"; 12: print "objectloop"; 13: print "}~ at end of ~objectloop"; 14: "give~ an attribute to ", (name) obj, " **]"; 15: "remove~ ", (name) obj, " **]";16,17,18: print "move~ ", (name) obj, " to ", (name) id; if (crime==18) { print ", which would make a loop: ",(name) obj; p=id; if (p==obj) p=obj; else do { print " in ", (name) p; p=parent(p);} until (p==obj); " in ", (name) p, " **]"; } " **]"; 19: "give~ or test ~has~ or ~hasnt~ with a non-attribute on the object ",(name) obj," **]"; 21: print ".&"; 22: print ".#"; 23: print "."; } "~ of ", (name) obj, " **]"; }.RErr; if (obj>=0 && obj<=(#largest_object-255)) { if (obj && obj in Class) print "class "; if (obj) @print_obj obj;else print "nothing";print" ";} print "(object number ", obj, ") "; if (id<0) print "is not of class ", (name) -id;else if (size) print "has a property ", (property) id, ", but it is longer than 2 bytes so you cannot use ~.~"; else { print " has no property ", (property) id; p = #identifiers_table; size = p-->0; if (id<0 || id>=size) print " (and nor has any other object)"; } print " to ", (string) crime, " **]^"; ]Z__Regionaddr top; if (addr==0 or -1) rfalse; top = addr; #IfV5; #iftrue (#version_number == 6) || (#version_number == 7); @log_shift addr $FFFF -> top; #Endif; #Endif; if (Unsigned__Compare(top, $001A-->0) >= 0) rfalse; if (addr>=1 && addr<=(#largest_object-255)) rtrue; #iftrue #oddeven_packing; @test addr 1 ?~NotString; if (Unsigned__Compare(addr, #strings_offset)<0) rfalse; return 3; .NotString; if (Unsigned__Compare(addr, #code_offset)<0) rfalse; return 2; #ifnot; if (Unsigned__Compare(addr, #strings_offset)>=0) return 3; if (Unsigned__Compare(addr, #code_offset)>=0) return 2; rfalse; #endif; ]Unsigned__Comparex y u v; if (x==y) return 0; if (x<0 && y>=0) return 1; if (x>=0 && y<0) return -1; u = x&$7fff; v= y&$7fff; if (u>v) return 1; return -1; ]Meta__classobj; switch(Z__Region(obj)) { 2: return Routine; 3: return String; 1: if (obj in 1 || obj <= 4) return Class; return Object; } rfalse; ]CP__Tabx id n l; while ((n=0->x) ~= 0) { if (n & $80) { x++; l = (0->x) & $3f; } else { if (n & $40) l=2; else l=1; } x++; if ((n & $3f) == id) return x; x = x + l; } if (id<0) return x+1; rfalse; ]Cl__Msobj id y a b c d x; switch(id) { create: if (children(obj)<=1) rfalse; x=child(obj); remove x; if (x provides create) { if (y==0) x..create(); if (y==1) x..create(a); if (y==2) x..create(a,b); if (y>3) RT__Err(1,obj); if (y>=3) x..create(a,b,c);} return x; recreate: if (~~(a ofclass obj)) { RT__Err("recreate", a, -obj); rfalse; } Copy__Primitive(a, child(obj)); if (a provides create) { if (y==1) a..create(); if (y==2) a..create(b); if (y==3) a..create(b,c); if (y>4) RT__Err(1,obj); if (y>=4) a..create(b,c,d); } rfalse;destroy: if (~~(a ofclass obj)) { RT__Err("destroy", a, -obj); rfalse; } if (a provides destroy) a..destroy(); Copy__Primitive(a, child(obj)); move a to obj; rfalse; remaining: return children(obj)-1;copy: if (~~(a ofclass obj)) { RT__Err("copy", a, -obj); rfalse; } if (~~(b ofclass obj)) { RT__Err("copy", b, -obj); rfalse; } Copy__Primitive(a, b); rfalse; } ]RT__ChTobj1 obj2 x; if (obj1<5 || obj1>(#largest_object-255) || obj1 in 1) return RT__Err(16,obj1,obj2); if (obj2<5 || obj2>(#largest_object-255) || obj2 in 1) return RT__Err(17,obj1,obj2);x=obj2; while (x~=0) { if (x==obj1) return RT__Err(18,obj1,obj2); x=parent(x); } #ifdef INFIX; if (obj1 has infix__watching || obj2 has infix__watching || (debug_flag & 15)) print "[Moving ", (name) obj1, " to ", (name) obj2, "]^"; #ifnot; #ifdef DEBUG; if (debug_flag & 15) print "[Moving ", (name) obj1, " to ", (name) obj2, "]^"; #endif; #endif; @insert_obj obj1 obj2; ]RT__ChRobj1; if (obj1<5 || obj1>(#largest_object-255) || obj1 in 1) return RT__Err(15,obj1);#ifdef INFIX; if (obj1 has infix__watching || (debug_flag & 15)) print "[Removing ", (name) obj1, "]^"; #ifnot; #ifdef DEBUG; if (debug_flag & 15) print "[Removing ", (name) obj1, "]^"; #endif; #endif; @remove_obj obj1; ]RT__ChGobj1 a; if (obj1<5 || obj1>(#largest_object-255) || obj1 in 1) return RT__Err(14,obj1); if (a<0 || a>=48) return RT__Err(19,obj1); if (obj1 has a) return;#ifdef INFIX; if (a ~= workflag && (obj1 has infix__watching || (debug_flag & 15))) print "[Giving ", (name) obj1, " ", (DebugAttribute) a, "]^"; #ifnot; #ifdef DEBUG; if (a ~= workflag && debug_flag & 15) print "[Giving ", (name) obj1, " ", (DebugAttribute) a, "]^"; #endif; #endif; @set_attr obj1 a; ]RT__ChGtobj1 a; if (obj1<5 || obj1>(#largest_object-255) || obj1 in 1) return RT__Err(14,obj1); if (a<0 || a>=48) return RT__Err(19,obj1); if (obj1 hasnt a) return;#ifdef INFIX; if (a ~= workflag && (obj1 has infix__watching || (debug_flag & 15))) print "[Giving ",(name) obj1," @@126", (DebugAttribute) a, "]^"; #ifnot; #ifdef DEBUG; if (a ~= workflag && debug_flag & 15) print "[Giving ",(name) obj1," @@126", (DebugAttribute) a, "]^"; #endif; #endif; @clear_attr obj1 a; ]RT__ChPSobj prop val size; if (obj<5 || obj>(#largest_object-255) || obj in 1 || obj.&prop==0 || (size=obj.#prop)>2 ) return RT__Err("set", obj, prop, size); @put_prop obj prop val;#ifdef INFIX; if (obj has infix__watching || (debug_flag & 15)) RT__TrPS(obj,prop,val); #ifnot; #ifdef DEBUG; if (debug_flag & 15) RT__TrPS(obj,prop,val); #endif; #endif; return val; ]RT__ChPRobj prop val size; if (obj<5 || obj>(#largest_object-255) || (size=obj.#prop)>2) {RT__Err("read", obj, prop, size); obj=2;} @get_prop obj prop -> val;return val; ]RT__TrPSobj prop val; print "[Setting ",(name) obj,".",(property) prop, " to ",val,"]^"; ]RT__ChLDBbase offset a val; a=base+offset;if (Unsigned__Compare(a,#readable_memory_offset)>=0) return RT__Err(24);@loadb base offset -> val;return val; ]RT__ChLDWbase offset a val; a=base+2*offset;if (Unsigned__Compare(a,#readable_memory_offset)>=0) return RT__Err(25);@loadw base offset -> val;return val; ]RT__ChSTBbase offset val a f; a=base+offset; if (Unsigned__Compare(a,#array__start)>=0 && Unsigned__Compare(a,#array__end)<0) f=1; else if (Unsigned__Compare(a,#cpv__start)>=0 && Unsigned__Compare(a,#cpv__end)<0) f=1; else if (Unsigned__Compare(a,#ipv__start)>=0 && Unsigned__Compare(a,#ipv__end)<0) f=1; else if (a==$0011) f=1; if (f==0) return RT__Err(26);@storeb base offset val; ]RT__ChSTWbase offset val a f; a=base+2*offset; if (Unsigned__Compare(a,#array__start)>=0 && Unsigned__Compare(a,#array__end)<0) f=1; else if (Unsigned__Compare(a,#cpv__start)>=0 && Unsigned__Compare(a,#cpv__end)<0) f=1; else if (Unsigned__Compare(a,#ipv__start)>=0 && Unsigned__Compare(a,#ipv__end)<0) f=1; else if (a==$0010) f=1; if (f==0) return RT__Err(27);@storew base offset val; ]RT__ChPrintCc fl; if (c==0 or 9 or 11 or 13) fl=1; if (c>=32 && c<=126) fl=1; if (c>=155 && c<=251) fl=1; if (fl==0) return RT__Err(33,c);@print_char c; ]RT__ChPrintAa; if (Unsigned__Compare(a, #readable_memory_offset)>=0) return RT__Err(34);@print_addr a; ]RT__ChPrintSa; if (Z__Region(a)~=3) return RT__Err(35);@print_paddr a; ]RT__ChPrintOa; if (Z__Region(a)~=1) return RT__Err(36);@print_obj a; ]maxwid arr ix; maxwid = 0; glk($0086, 7); for (ix=0 : ix0 : ix++) { print (string) arr-->(ix+1); new_line; } glk($0086, 0); ]obj q; switch(metaclass(obj)) { 0: print "nothing"; Object: q = obj-->3; @streamstr q; Class: print "class "; q = obj-->3; @streamstr q; Routine: print "(routine at ", obj, ")"; String: print "(string at ", obj, ")"; } ]prop ptab cla maxcom minind maxind str; if (prop & $FFFF0000) { cla = #classes_table-->(prop & $FFFF); print (name) cla, "::"; @ushiftr prop 16 prop; } ptab = #identifiers_table; maxcom = ptab-->1; minind = INDIV_PROP_START; maxind = minind + ptab-->3; str = 0; if (prop >= 0 && prop < maxcom) { str = (ptab-->0)-->prop; } else if (prop >= minind && prop < maxind) { str = (ptab-->2)-->(prop-minind); } if (str) print (string) str; else print ""; ]obj id val addr; addr = obj.&id; if (addr == 0) { RT__Err("write", obj, id); return 0; } addr-->0 = val; return 0; ]obj id addr; addr = obj.&id; if (addr == 0) { if (id > 0 && id < INDIV_PROP_START) { return #cpv__start-->id; } RT__Err("read", obj, id); return 0; } return addr-->0; ]_vararg_count obj id zr s s2 z addr len m val; @copy sp obj; @copy sp id; _vararg_count = _vararg_count - 2; zr = Z__Region(obj); if (zr == 2) { if (id == call) { s = sender; sender = self; self = obj; #ifdef action; sw__var=action; #endif; @call obj _vararg_count z; self = sender; sender = s; return z; } jump Call__Error; } if (zr == 3) { if (id == print) { @streamstr obj; rtrue; } if (id == print_to_array) { if (_vararg_count >= 2) { @copy sp m; @copy sp len; } else { @copy sp m; len = $7FFFFFFF; } s2 = glk($0048); s = glk($0043, m+4, len-4, 1, 0); if (s) { glk($0047, s); @streamstr obj; glk($0047, s2); @copy $ffffffff sp; @copy s sp; @glk $0044 2 0; @copy sp len; @copy sp 0; m-->0 = len; return len; } rfalse; } jump Call__Error; } if (zr ~= 1) jump Call__Error; #ifdef DEBUG;#ifdef InformLibrary; if (debug_flag & 1 ~= 0) { debug_flag--; print "[ ~", (name) obj, "~.", (property) id, "("; @stkcopy _vararg_count; for (val=0 : val < _vararg_count : val++) { if (val) print ", "; @streamnum sp; } print ") ]^"; debug_flag++; } #endif;#endif; if (obj in Class) { switch (id) { remaining: return Cl__Ms(obj, id); copy: @copy sp m; @copy sp val; return Cl__Ms(obj, id, m, val); create, destroy, recreate: m = _vararg_count+2; @copy id sp; @copy obj sp; @call Cl__Ms m val; return val; } } addr = obj.&id; if (addr == 0) { if (id > 0 && id < INDIV_PROP_START) { addr = #cpv__start + 4*id; len = 4; } else { jump Call__Error; } } else { len = obj.#id; } for (m=0 : 4*mm; if (val == -1) rfalse; switch (Z__Region(val)) { 2: s = sender; sender = self; self = obj; s2 = sw__var; #ifdef LibSerial; if (id==life) sw__var=reason_code; else sw__var=action; #endif; @stkcopy _vararg_count; @call val _vararg_count z; self = sender; sender = s; sw__var = s2; if (z ~= 0) return z; 3: @streamstr val; new_line; rtrue; default: return val; } } rfalse; .Call__Error; RT__Err("send message", obj, id); rfalse; ]obj identifier x; x = obj.&identifier; if (x==0) { RT__Err("increment", obj, identifier); return; } #ifdef INFIX; if (obj has infix__watching || (debug_flag & 15)) RT__TrPS(obj,identifier,(x-->0)+1); #ifnot; #ifdef DEBUG; if (debug_flag & 15) RT__TrPS(obj,identifier,(x-->0)+1); #endif; #endif; return ++(x-->0); ]obj identifier x; x = obj.&identifier; if (x==0) { RT__Err("increment", obj, identifier); return; } #ifdef INFIX; if (obj has infix__watching || (debug_flag & 15)) RT__TrPS(obj,identifier,(x-->0)+1); #ifnot; #ifdef DEBUG; if (debug_flag & 15) RT__TrPS(obj,identifier,(x-->0)+1); #endif; #endif; return (x-->0)++; ]obj identifier x; x = obj.&identifier; if (x==0) { RT__Err("decrement", obj, identifier); return; } #ifdef INFIX; if (obj has infix__watching || (debug_flag & 15)) RT__TrPS(obj,identifier,(x-->0)-1); #ifnot; #ifdef DEBUG; if (debug_flag & 15) RT__TrPS(obj,identifier,(x-->0)-1); #endif; #endif; return --(x-->0); ]obj identifier x; x = obj.&identifier; if (x==0) { RT__Err("decrement", obj, identifier); return; } #ifdef INFIX; if (obj has infix__watching || (debug_flag & 15)) RT__TrPS(obj,identifier,(x-->0)-1); #ifnot; #ifdef DEBUG; if (debug_flag & 15) RT__TrPS(obj,identifier,(x-->0)-1); #endif; #endif; return (x-->0)--; ]obj id cla prop ix; if (id & $FFFF0000) { cla = #classes_table-->(id & $FFFF); if (~~(obj ofclass cla)) return 0; @ushiftr id 16 id; obj = cla; } prop = CP__Tab(obj, id); if (prop==0) return 0; if (obj in Class && cla == 0) { if (id < INDIV_PROP_START || id >= INDIV_PROP_START+8) return 0; } if (self ~= obj) { @aloadbit prop 72 ix; if (ix) return 0; } return prop-->1; ]obj id cla prop ix; if (id & $FFFF0000) { cla = #classes_table-->(id & $FFFF); if (~~(obj ofclass cla)) return 0; @ushiftr id 16 id; obj = cla; } prop = CP__Tab(obj, id); if (prop==0) return 0; if (obj in Class && cla == 0) { if (id < INDIV_PROP_START || id >= INDIV_PROP_START+8) return 0; } if (self ~= obj) { @aloadbit prop 72 ix; if (ix) return 0; } @aloads prop 1 ix; return WORDSIZE * ix; ]cla id j; if ((cla notin Class) && (cla ~= Class or String or Routine or Object)) { RT__Err("be a '::' superclass", cla, -1); rfalse; } for (j=0 : #classes_table-->j ~= 0 : j++) { if (cla == #classes_table-->j) { return (id * $10000 + j); } } RT__Err("make use of", cla, id); rfalse; ]obj id zr; zr = Z__Region(obj); if (zr == 3) { if (id == print or print_to_array) rtrue; rfalse; } if (zr == 2) { if (id == call) rtrue; rfalse; } if (zr ~= 1) rfalse; if (id >= INDIV_PROP_START && id < INDIV_PROP_START+8) { if (obj in Class) rtrue; } if (obj.&id ~= 0) rtrue; rfalse; ]obj cla zr jx inlist inlistlen; zr = Z__Region(obj); if (zr == 3) { if (cla == String) rtrue; rfalse; } if (zr == 2) { if (cla == Routine) rtrue; rfalse; } if (zr ~= 1) rfalse; if (cla == Class) { if (obj in Class || obj == Class or String or Routine or Object) rtrue; rfalse; } if (cla == Object) { if (obj in Class || obj == Class or String or Routine or Object) rfalse; rtrue; } if (cla == String or Routine) rfalse; if (cla notin Class) { RT__Err("apply 'ofclass' for", cla, -1); rfalse; } inlist = obj.&2; if (inlist == 0) rfalse; inlistlen = (obj.#2) / WORDSIZE; for (jx=0 : jxjx == cla) rtrue; } rfalse; ]o1 o2 p1 p2 pcount i j propid proplen val pa1 pa2; for (i=1 : i<=NUM_ATTR_BYTES : i++) { o1->i = o2->i; } p2 = o2-->4; pcount = p2-->0; p2 = p2+4; for (i=0 : i1; pa2 = p2-->1; for (j=0 : jj = pa2-->j; } } p2 = p2+10; } ]crime obj id size p q; print "^[** Programming error: "; if (crime<0) jump RErr; if (crime==1) { print "class "; q = obj-->3; @streamstr q; ": 'create' can have 0 to 3 parameters only **]";} if (crime == 40) "tried to change printing variable ", obj, "; must be 0 to ", #dynam_string_table-->0-1, " **]"; if (crime == 32) "objectloop broken because the object ", (name) obj, " was moved while the loop passed through it **]"; if (crime == 33) "tried to print (char) ", obj, ", which is not a valid Glk character code for output **]"; if (crime == 34) "tried to print (address) on something not the ", "address of a dict word **]"; if (crime == 35) "tried to print (string) on something not a ", "string **]"; if (crime == 36) "tried to print (object) on something not an ", "object or class **]";if (crime < 32) { print "tried to "; if (crime >= 28) { if (crime==28 or 29) print "read from "; else print "write to "; if (crime==29 or 31) print "-"; print "->", obj, " in the"; switch(size&7){0,1:q=0; 2:print " string"; q=1; 3:print " table";q=1; 4:print " buffer";q=WORDSIZE;} if(size&16) print" (->)"; if(size&8) print" (-->)"; " array ~", (string) #array_names_offset-->(p+1), "~, which has entries ", q, " up to ",id," **]"; } if (crime >= 24 && crime <=27) { if (crime<=25) print "read"; else print "write"; print " outside memory using "; switch(crime) { 24,26:"-> **]"; 25,27:"--> **]"; } } if (crime < 4) print "test "; else if (crime < 12 || crime > 20) print "find the "; else if (crime < 14) print "use "; if (crime==20) "divide by zero **]"; print "~"; switch(crime) { 2: print "in~ or ~notin"; 3: print "has~ or ~hasnt"; 4: print "parent"; 5: print "eldest"; 6: print "child"; 7: print "younger"; 8: print "sibling"; 9: print "children"; 10: print "youngest"; 11: print "elder"; 12: print "objectloop"; 13: print "}~ at end of ~objectloop"; 14: "give~ an attribute to ", (name) obj, " **]"; 15: "remove~ ", (name) obj, " **]";.RErr; if (obj==0 || obj->0>=$70 && obj->0<=$7F) { if (obj && obj in Class) print "class "; if (obj) print (object) obj;else print "nothing";print" ";} print "(object number ", obj, ") "; if (id<0) print "is not of class ", (name) -id;else { print " has no property ", (property) id; p = #identifiers_table; size = INDIV_PROP_START + p-->3; if (id<0 || id>=size) print " (and nor has any other object)"; } print " to ", (string) crime, " **]^"; ]addr tb endmem; if (addr<36) rfalse; @getmemsize endmem; @jgeu addr endmem?outrange; tb=addr->0; if (tb >= $E0) return 3; if (tb >= $C0) return 2; if (tb >= $70 && tb <= $7F && addr >= (0-->2)) return 1; .outrange; rfalse; ]x y u v; if (x==y) return 0; if (x<0 && y>=0) return 1; if (x>=0 && y<0) return -1; u = x&$7fffffff; v= y&$7fffffff; if (u>v) return 1; return -1; ]obj; switch(Z__Region(obj)) { 2: return Routine; 3: return String; 1: if (obj in Class || obj == Class or String or Routine or Object) return Class; return Object; } rfalse; ]obj id otab max res; if (Z__Region(obj)~=1) {RT__Err(23, obj); rfalse;} otab = obj-->4; if (otab == 0) return 0; max = otab-->0; otab = otab+4; @binarysearch id 2 otab 10 max 0 0 res; return res; ]_vararg_count obj id a b x y; @copy sp obj; @copy sp id; _vararg_count = _vararg_count - 2; switch (id) { create: if (children(obj) <= 1) rfalse; x = child(obj); remove x; if (x provides create) { @copy create sp; @copy x sp; y = _vararg_count + 2; @call CA__Pr y 0; } return x; recreate: @copy sp a; _vararg_count--; if (~~(a ofclass obj)) { RT__Err("recreate", a, -obj); rfalse; } if (a provides destroy) a.destroy(); Copy__Primitive(a, child(obj)); if (a provides create) { @copy create sp; @copy a sp; y = _vararg_count + 2; @call CA__Pr y 0; } rfalse; destroy: @copy sp a; _vararg_count--; if (~~(a ofclass obj)) { RT__Err("destroy", a, -obj); rfalse; } if (a provides destroy) a.destroy(); Copy__Primitive(a, child(obj)); move a to obj; rfalse; remaining: return children(obj)-1; copy: @copy sp a; @copy sp b; _vararg_count = _vararg_count - 2; if (~~(a ofclass obj)) { RT__Err("copy", a, -obj); rfalse; } if (~~(b ofclass obj)) { RT__Err("copy", b, -obj); rfalse; } Copy__Primitive(a, b); rfalse; } ]obj1 obj2 ix; if (obj1==0 || Z__Region(obj1)~=1 || (obj1 == Class or String or Routine or Object) || obj1 in Class) return RT__Err(16, obj1, obj2); if (obj2==0 || Z__Region(obj2)~=1 || (obj2 == Class or String or Routine or Object) || obj2 in Class) return RT__Err(17, obj1, obj2); ix = obj2; while (ix ~= 0) { if (ix==obj1) return RT__Err(18, obj1, obj2); ix = parent(ix); } #ifdef INFIX; if (obj1 has infix__watching || obj2 has infix__watching || (debug_flag & 15)) print "[Moving ", (name) obj1, " to ", (name) obj2, "]^"; #ifnot; #ifdef DEBUG; if (debug_flag & 15) print "[Moving ", (name) obj1, " to ", (name) obj2, "]^"; #endif; #endif; OB__Move(obj1, obj2); ]obj1; if (obj1==0 || Z__Region(obj1)~=1 || (obj1 == Class or String or Routine or Object) || obj1 in Class) return RT__Err(15, obj1); #ifdef INFIX; if (obj1 has infix__watching || (debug_flag & 15)) print "[Removing ", (name) obj1, "]^"; #ifnot; #ifdef DEBUG; if (debug_flag & 15) print "[Removing ", (name) obj1, "]^"; #endif; #endif; OB__Remove(obj1); ]obj1 a; if (Z__Region(obj1) ~= 1) return RT__Err(14,obj1); if (obj1 in Class || obj1 == Class or String or Routine or Object) return RT__Err(14,obj1); if (a<0 || a>=NUM_ATTR_BYTES*8) return RT__Err(19,obj1); if (obj1 has a) return;#ifdef INFIX; if (a ~= workflag && (obj1 has infix__watching || (debug_flag & 15))) print "[Giving ", (name) obj1, " ", (DebugAttribute) a, "]^"; #ifnot; #ifdef DEBUG; if (a ~= workflag && debug_flag & 15) print "[Giving ", (name) obj1, " ", (DebugAttribute) a, "]^"; #endif; #endif; give obj1 a; ]obj1 a; if (Z__Region(obj1) ~= 1) return RT__Err(14,obj1); if (obj1 in Class || obj1 == Class or String or Routine or Object) return RT__Err(14,obj1); if (a<0 || a>=NUM_ATTR_BYTES*8) return RT__Err(19,obj1); if (obj1 hasnt a) return;#ifdef INFIX; if (a ~= workflag && (obj1 has infix__watching || (debug_flag & 15))) print "[Giving ",(name) obj1," @@126", (DebugAttribute) a, "]^"; #ifnot; #ifdef DEBUG; if (a ~= workflag && debug_flag & 15) print "[Giving ",(name) obj1," @@126", (DebugAttribute) a, "]^"; #endif; #endif; give obj1 ~a; ]obj prop val res; if (obj==0 || Z__Region(obj)~=1 || (obj == Class or String or Routine or Object) || obj in Class) return RT__Err("set", obj, prop); res = WV__Pr(obj, prop, val); #ifdef INFIX; if (obj has infix__watching || (debug_flag & 15)) RT__TrPS(obj,prop,val); #ifnot; #ifdef DEBUG; if (debug_flag & 15) RT__TrPS(obj,prop,val); #endif; #endif; return res; ]obj prop val; if (obj==0 or Class or String or Routine or Object || Z_Region(obj)~=1 ) {RT__Err("read", obj, prop); obj=2;} val = RV__Pr(obj, prop);base offset a b val; a=base+offset; @getmemsize b; if (Unsigned__Compare(a, b) >= 0) return RT__Err(24); @aloadb base offset val; return val; ]base offset a b val; a=base+WORDSIZE*offset; @getmemsize b; if (Unsigned__Compare(a, b) >= 0) return RT__Err(25); @aload base offset val; return val; ]base offset val a b; a=base+offset; @getmemsize b; if (Unsigned__Compare(a, b) >= 0) jump ChSTB_Fail; @aload 0 2 b; if (Unsigned__Compare(a, b) < 0) jump ChSTB_Fail; @astoreb base offset val; return; .ChSTB_Fail; return RT__Err(26); ]base offset val a b; a=base+WORDSIZE*offset; @getmemsize b; if (Unsigned__Compare(a, b) >= 0) jump ChSTW_Fail; @aload 0 2 b; if (Unsigned__Compare(a, b) < 0) jump ChSTW_Fail; @astore base offset val; return; .ChSTW_Fail; return RT__Err(27); ]c; if (c<10 || (c>10 && c<32) || (c>126 && c<160) || c>255) return RT__Err(33,c); @streamchar c; ]addr endmem; if (addr<36) return RT__Err(34); @getmemsize endmem; if (Unsigned__Compare(addr, endmem) >= 0) return RT__Err(34); if (addr->0 ~= $60) return RT__Err(34); Print__Addr(addr); ]str; if (Z__Region(str) ~= 3) return RT__Err(35); @streamstr str; ]obj; if (Z__Region(obj) ~= 1) return RT__Err(36); @aload obj 3 sp; @streamstr sp; ]OB__Moveobj dest par chi sib; par = obj-->5; if (par ~= 0) { chi = par-->7; if (chi == obj) { par-->7 = obj-->6; } else { while (1) { sib = chi-->6; if (sib == obj) break; chi = sib; } chi-->6 = obj-->6; } } obj-->6 = dest-->7; obj-->5 = dest; dest-->7 = obj; rfalse; ]OB__Removeobj par chi sib; par = obj-->5; if (par == 0) rfalse; chi = par-->7; if (chi == obj) { par-->7 = obj-->6; } else { while (1) { sib = chi-->6; if (sib == obj) break; chi = sib; } chi-->6 = obj-->6; } obj-->6 = 0; obj-->5 = 0; rfalse; ]Print__Addraddr ix ch; if (addr->0 ~= $60) { print "(", addr, ": not dict word)"; return; } for (ix=1 : ix <= DICT_WORD_SIZE : ix++) { ch = addr->ix; if (ch == 0) return; print (char) ch; } ]Glk__Wrap_vararg_count callid retval; @copy sp callid; _vararg_count = _vararg_count - 1; @glk callid _vararg_count retval; return retval; ]Dynam__Stringnum val; if (num < 0 || num >= #dynam_string_table-->0) return RT__Err(40, num); (#dynam_string_table)-->(num+1) = val; ]assertion violated (not in Z-code compiler)assertion violated (not in Glulx compiler)Symb__Tab*** Infix symbol-table routine is not yet implemented. ***The following name is reserved by Inform for its own use as a routine name; you can use it as a routine name yourself (to override the standard definition) but cannot use it for anything else:veneer source code areaB!⍀P.!)!⍀P!!⍀P ⍀P ⍀P ⍀P q⍀qP \⍀\P z G⍀GPf a 2⍀2PM H ⍀P4 / ⍀P  ⍀P ⍀P⍀P⍀P⍀P⍀Pu⍀uPlg`⍀`PS*C\u $=Vo$Ë $Ë$ph$\^\X A1)+$)% ` `EErE_XEIXE5-EEXEXETEE$EE;$E $E$E$E{$EUK$EEXE`EE EqEfEYPEGEA (   8 8 @ < ~ xU8 B8 <(L   ;X   ~L n4 E +X      L z1   X { _L 4  L vk"   X m N$ <( , VL F4 0   L j L d  L ~ L n 4 ^ 4 N 4   8 8  < P X z X a T L X 6 X $    E $  P        | p _ S B 6 *    ziXG6*pdXL@4(          h h |h xh t pK l" hd`\XrTaPaL HPD @?< 840,(y$y yy  ```P ug[M?3% |k_NB6%m m S E + + + +                   t W W W W . | x mx <` )` # P  @ X@ .@ L D FD 9H +L P X X T X X oW% 80% | x t p l h d ` \ X T P L H D @ < 8 4 0 , ( $                                          | x t p l h d ` \ X T P L H D @ < 8 4 0 , ( $          |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@|xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  ?  ?  ? gg ? NN ? 5~5x s? me_ Z? TLF A? ;3- (? " ?  ?  ?  ? mm ? TT ? ;;~ y? s"k"e `? Z R L G? A93 .? (  ?  LHD@<840,($  ()%034$ "!7()%034$ "!7'5/-*.6:9,+<#>8=1&;2{`  $ \ d `O8wPB2 _T(5Ep5\eH4_(}T rmyA _compile_initial_routine___i686.get_pc_thunk.bx_veneer_routine_veneer_mode_compile_veneer_veneer_routine_address_init_veneer_vars_veneer_begin_pass___i686.get_pc_thunk.cx_veneer_allocate_arrays_veneer_free_arrays___i686.get_pc_thunk.axdyld_stub_binding_helper_module_switch_stypes_no_symbols_no_named_constants_named_routine_symbols_no_named_routines_svals_temp_var3_array_symbols_array_types_temp_var2_array_sizes_no_arrays_next_label_variable_usage_define_INFIX_switch_zero_operand_temp_var1_version_number_sequence_point_follows_glulx_mode_trace_fns_setting_sflags_my_free_my_malloc_error_named_parse_routine_strcat_strcpy_error_assemblez_1_assemblez_store_assemble_label_no_assemblez_2_branch_compiler_error_assemble_routine_end_assembleg_1_assembleg_3_assemblez_0_assemblez_1_to_assign_symbol_assemble_routine_header_symbol_index_VRs_z_VRs_g_mark_as_needed_z_veneer_routine_needs_compilation_mark_as_needed_g_compile_symbol_table_routine_veneer_symbols_base_veneer_source_area