OgNZp N ON 8@`  @`! #@%`')+-/1 3@5`79;=?A C@E`GIKMOQ S@U`WY[]_ac@e`gikmoq s@u`wy{}/@` ` O ` @ ` ` ǀ ɠ @ ׀ ٠  @` @`/Aa   /Aa!!#A%a')+-/1!O5a79;?A!CAEaGIKMOQOUaWY[]@`  @`! #@%`')+-/1 3@5`79;=?A C@E`GIKMOQ S@U`WY[]_ac@e`gikmoq s@u`wy{}/@` ` O ` @ ` ` ǀ ɠ @ ׀ ٠  @` @`/Aa   /Aa!!#A%a')+-/1!O5a79;?A!CAEaGIKMOQOUaWY[]AESMACS  q+ASSEM TTP t PED TTP bzGEMLIB BIN JLIB0 ASM  LIB1 ASM LIB10 ASM LIB11 ASM \!LIB12 ASM LIB13 ASM +LIB14 ASM  LIB15 ASM  LIB16 ASM k,LIB17 ASM rLIB18 ASM LIB2 ASM @LIB3 ASM =QLIB4 ASM LIB5 ASM "LIB6 ASM 8LIB7 ASM  [-LIB8 ASM ,2LIB9 ASM 3'LINK TTP =QREADME  RVDIMACS  S* *D * Macro definitions for Lattice C interface library * *D * (Last Changed 28 FEB 86 * *D * XREF CALLAES,AESPB * * Offsets of arrays within parameter block * COPB EQU 0 Control array GLPB EQU 4 Global array IIPB EQU 8 Input array IOPB EQU 12 Output array AIPB EQU 16 Address in array AOPB EQU 20 Address out array * * Sizes of arrays in bytes * COS EQU 12*2 GLS EQU 15*2 IIS EQU 256*2 IOS EQU 256*2 AIS EQU 256*2 AOS EQU 256*2 * * Flags set to 1 if we must replace the standard values * * COPBS SET 0 Control array IIPBS SET 0 Input array IOPBS SET 0 Output array AIPBS SET 0 Address in array AOPBS SET 0 Address out array * * Offsets of the actual arrays from the base pointer * COAR EQU 24 Control array IIAR EQU COAR+COS Input array AIAR EQU IIAR+IIS Address in array IOAR EQU AIAR+AIS Output array AOAR EQU IOAR+IOS Address out array GLAR EQU AOAR+AOS Global array * * Other macro variables * ARGPTR SET 0 Offset for arguments EXIT SET 0 1 if work to be done after call LEND1 SET 0 1 if string length contained in D1 * *C * LIBFNV name,args Set up entry Point for 'void' function * *C * LIBFNV MACRO IFNE NARG-2 FAIL ENDC XDEF \1 \1 INIT \2 ENDM * *C * LIBFNR name,args Set up entry Point for 'long' function * * It may need to do more work than LIBFNV * *C * LIBFNR MACRO IFNE NARG-2 FAIL ENDC XDEF \1 \1 INIT \2 ENDM * *1 * INIT argcount Set up initial call * *1 * INIT MACRO ARGPTR SET 4*\1 LEA.L AESPB,A0 ENDM * *I * LONG Move past argument * * LONG array Place argument (array) in parameter block slot * * LONG array,offset Place argument in offset in specified array * *I * LONG MACRO IFEQ NARG-1 MOVE.L ARGPTR(SP),\1PB(A0) \1PBS SET 1 EXIT SET 1 ENDC IFEQ NARG-2 MOVE.L ARGPTR(SP),\2*2+\1AR(A0) ENDC ARGPTR SET ARGPTR-4 ENDM * *F * WORD array,offset Place argument in offset in specified array * *F * WORD MACRO IFNE NARG-2 FAIL ENDC MOVE.W ARGPTR+2(SP),\2*2+\1AR(A0) ARGPTR SET ARGPTR-4 ENDM * *G * LPOINTW array,offset array[offset] = *(&value) * * LPOINTW name remember stack offset to put result there * *G * LPOINTW MACRO IFEQ NARG-2 MOVEA.L ARGPTR(SP),A1 MOVE.W (A1),\2*2+\1AR(A0) ENDC IFEQ NARG-1 \1 SET ARGPTR EXIT SET 1 ENDC ARGPTR SET ARGPTR-4 ENDM * *: * LABEL name Set a label for this argument offset * *: * LABEL MACRO \1 SET ARGPTR ENDM * *D * SETPTS ii,io,ai Set the size of intin. intout. and addrin. * *D * SETPTS MACRO IFNE NARG-3 FAIL ENDC SETA CO,1,\1 SETA CO,2,\2 SETA CO,3,\3 ENDM * *: * SETA array,offset,value Set specified array slot. * *: * SETA MACRO IFNE NARG-3 FAIL ENDC IFEQ \3 CLR.W \2*2+\1AR(A0) ENDC IFNE \3 MOVE.W #\3,\2*2+\1AR(A0) ENDC ENDM * *) * CALLW name,code Call the function * *) * CALLW MACRO IFNE NARG-2 FAIL ENDC MOVE.W #\2,COAR(A0) JSR CALLAES IFNE EXIT LEA.L AESPB,A0 Reload address register ENDC RESTORE II RESTORE AI RESTORE IO RESTORE AO ENDM * *. * RESTORE array -- Service macro for above * *. * RESTORE MACRO IFNE \1PBS LEA.L \1AR(A0),A1 MOVE.L A1,\1PB(A0) \1PBS SET 0 ENDC ENDM * *C * SPOINTW array,offset,name Place short result back into output * *C * SPOINTW MACRO IFNE NARG-3 FAIL ENDC MOVE.L \3(SP),A1 Point to destination MOVE.W \2*2+\1AR(A0),(A1) Move back result ENDM * *B * SPOINTL array,offset,name Place long result back into output * *B * SPOINTL MACRO IFNE NARG-3 FAIL ENDC MOVE.L \3(SP),A1 Point to destination MOVE.L \2*2+\1AR(A0),(A1) Move back result ENDM * *E * SETEXIT Ensure A0 is loaded with Pointer to Params after call * *E * SETEXIT MACRO EXIT SET 1 ENDM * *G * COPYW array,offset,length,name,off,direction Array copying * *G * COPYW MACRO IFNE NARG-6 FAIL ENDC LEND1 SET 0 Because we're destroying D1 MOVE.W #\3-1,D1 Count MOVE.L \4(SP),A1 Pointer to destination LEA.L \5*2(A1),A1 Add in offset MOVE.L A2,-(SP) Save A2 LEA.L \2*2+\1AR(A0),A2 A2 is now source pointer IFC \6,'BACK' C\@ MOVE.W (A2)+,(A1)+ Put Values into user array DBRA D1,C\@ ENDC IFC \6,'FROM' C\@ MOVE.W (A1)+,(A2)+ Get Values from user array DBRA D1,C\@ ENDC MOVE.L (SP)+,A2 Restore A2 ENDM * *G * COPYWA array,offset,length,name,off * * Copy alternate elements of source array to destination * *G * COPYWA MACRO IFNE NARG-5 FAIL ENDC LEND1 SET 0 Because we're destroying D1 MOVEQ.L #0,D1 Zero D1 MOVE.W #\3-1,D1 Count MOVE.L \4(SP),A1 Pointer to destination LEA.L \5*2(A1),A1 Add in offset MOVE.L A2,-(SP) Save A2 LEA.L \2*2+\1AR(A0),A2 A2 is now source pointer C\@ MOVE.W (A2)+,(A1)+ Put Values into user array TST.W (A2)+ Skip source element DBRA D1,C\@ Back for next item MOVE.L (SP)+,A2 Restore A2 ENDM * *C * STRLEN array,offset,stringptr array[offset] = length of string * *C * STRLEN MACRO MOVEQ.L #-1,D1 Initialise D1 MOVEA.L \3(SP),A1  Pointer to string S\@ ADDQ.L #1,D1 TST.B (A1)+ Is it a 0 BNE.S S\@ MOVE.W D1,\2*2+\1AR(A0) Store result LEND1 SET 1 Indicates length in D1 ENDM * *K * STRCPY array,offset,string Copy each byte of the string into a word * * of array. Relies on length being in D1 * *K * STRCPY MACRO IFEQ LEND1 FAIL ENDC LEND1 SET 0 MOVEQ.L #0,D0 Initialise D0 MOVE.L \3(SP),A1 Pointer to string MOVE.L A2,-(SP) Save A2 LEA.L 2*\2+\1AR(A0),A2 A2 pointer to offset array SC\@ MOVE.B (A1)+,D0 Get a char MOVE.W D0,(A2)+ Move 16 bits into destination array DBRA D1,SC\@ Go Back for next byte MOVE.L (SP)+,A2 Restore A2 ENDM * *@ * RETURN Perform return sequence * * RETURN array,offset Transfer array[offset] to a register * * (if necessary) and return * *@ * RETURN MACRO IFEQ NARG-2 IFEQ EXIT LEA.L AESPB,A0 Reload address register ENDC MOVE.W \2*2+\1AR(A0),D0 ENDC EXIT SET 0 EXT.L D0 RTS ENDM * * * End of Macros File * * `Px`J*_G JgG. g'[Q`GN7|GNNq;Ipd"gI",l `E"R$"f$ (R!8mgR&!8"RNk %|g(rN"<p (jN`FreevecJg&A"#fRN"<aglobin pg.(A"$G($#g&#on Ԍ%8`B%|o(`"Nmuldiv (vN *H@HE.,ڀB0H@BE@HEހ݅JjJjރB݃HzJj DaDNuJjD@a DD(Nu b,"BAHA2HG2<HG2HF<BAHA%A("NuJfJk"$/a(%B(Nu*BEHER "BAHA42HB4HG26HGHC6"BAHA:2HE:HC24HC2HB4 "Ğ H@HD"&HCĜBҀ ׀HDB0H@2HA/aҟJ(j٪(SNuaptovec(A" W&C8H#L#p#pNgetbyteԁB0(Nputbyteԁ(Nget2bytԁB20(Nput2bytԁ1(Ngbytes (ABSfNpbytes (A(SfNlevel ")Nlongjum"A(iN(Vdu &B3zk aQ` NP` ````>`X`ZrNrNrNra  dv3  eapgf`Nr|H8$(jp NL``ka`t aHEa``0H<r(jp NL%C0BH!H "p8 NL (iN&_HHN` `>`LЉ**0XlNurT!|X`H868HAHBBHABA҃LNuJj DaDNuJjDaDDNu b,BAHA&2HAB42HANuc$rNu.BGHGR(*$a$ǂ$&HCHCԃbDbR`NuS`r`rJ_*<&/&Ccgcg cgcgJc& GLo2 n($rb`"r`r`r`r`r` r `r `r &/p,(jNNs 8flr0p  ^4_L` xHtad 09BLIB 12-Feb-86sys.ini <0N$v0(#C%jB4BG" p(jN%AG" p(jN%AJgJf"<p(jNrҪ#A#i r#A n$$ԁv0(S$)ԁ(rҩ`")ҩt "*B rҩ&*!8NNqCON:CON:stop <0N#j4`.")#pJg")p(iN")#pJft"p(j8NNtestfla <0Ntr p(j8NJfr`Rtrp(j8N#AtfGt" p(j$Np(jNrgtvfF"`N^C datstri <N$B("B"B(rNNqdatstam <NNlocateo <$Np(jNNfreeobj <$Np(jNNlocated <NrNNqfault <0N`zG" `G" `G" `G" `G," `GH" `zGd" `nG" `bG" `VG" `J"tzlJgvggxogzyg`g g g g gD`#A$p(j(Np(jNNNqFile not found No store leftToo many globalsNot a .RUN fileResident library not loadedCan't rename across devicesFile already open for writingInvalid input/output streamError %Nvdu.rdc <0NJftr p(j8NJfrNtrp(j8NNNqvdu.wrc <0N&trp(j8NNNqrdch <$Np (jN"t fp(jNt f"Np(jN"Nwrch <(Ntgv f r p(jN"p(jNNbinrdch <,N"*$" #p(&)n"pINNrґ$*!( rҪґt0"Nunrdch <N"*" JntJfF"N"S$*!( rNNqbinwrch <4N$*&#p( #p8J(l#p( p(i NN")npI,NBrҪҩrҩ$*!( NNqrepleni <0N$*#p(v#CB((0(JlDzg"<p(jNJfrNJg"*p(iN#Arf$*B( $*B(Nrҩ$*!( rҪҩt0"Ndeplete <(N"*"$0JlDvg"<p(jNJg "*p(QNJg"<p(jNNNqfindinp <,NtpI@NNNqfindout <,NtpI NNNqfindstr <`Nr1p(jtN#AG$ #B BJfrNr#A t1nҩBrҩ `")t! ")!rҩ#Av֩#CB($") p,(j@N#A`rg%|(`r#A$)G & !(`rg%|(`r#A$)G \& !(`rg%|(`r#A$)G & !(`rf$)B( $)!(`~rf G " `G " $)!(D`R$")p,IN$)")p,I4N%A(JftfN")p@I N#A4")pDI Nt#B<(&)4tr=p,(j8N%A($)G & !(`")p@I N#A4")pDI N(&)4trAp,(j8N")p@I N#A4")pDI NB<(&)4trp(j8N%A(r(fFNabort <@N#j `Gh" `Gp" `G|" `G" `G" `G" `G" `vG" `jG" `^G" `RG " `FG " `:G0" `.G@" `"G`" `Gx" ` G" `G" `G" `G" `G" `"t lVvl&xgzg|g~g`gtg vgx gz g`g l(t gvTgxbg g `tg$ g& g( g* g, g.`:#AG$ %BvTfG" p (j$N`RG" p (j$N&)$")p (j(Nrdo$)G" p (j(N l p I(N%i p (jNNNqCode %N Bus error Address errorIllegal instructionDivide by zeroCHK instructionTRAPV instructionPrivilege violationTrace exceptionLine 1010 emulatorLine 1111 emulatorUnexpected TRAPStack overflowUndefined global %$%N calledInvalid input streamInvalid output streamFailed to initialiseCoroutine failure Heap corruptIllegal FREEVEC Disk full FATAL ERROR: Stack overflow FATAL ERROR:  @ %X6backtra <8N$ #B&(08#DG" p(j$N`v")"0pINr:p(jNr#A tn.ҩ#A&)Wl&"08p INrҩ `p(jN#i")$0#B")0fG" p(j$NN Backtrace of stack  End of backtrace writear <,NpINJg"U$Gl" p(j(N`8 o B@lt "p(jN`$Gt" p(j(NN %T7 #X%X8isfn <$NU#A o $ 䊲mrNr‘JgrN")t0vgrNr#Atn:&)ցx08v n()؁z0HxorNrҩ`rNNqreadn <,NBBBp(jN#At0n v9oT`,p(jNr%A(rN`r#Ap(jN#A`&")t gv gx gz+g|-g`` $r Nҩt0"p(jN#Ar0n t9lJgDp(jNB("Nnewline <$Nr p (jNNNqwrited <lND#Av։#CB Jl S#Qt ")ND")ҩ !t ")N#AR Jf#i@tԩ "#AD@nr pT(jNrҩD`Jl r-pL(jN") S#A@Jm ҩt0԰"pP(jNrҩ@`Nwriten <,Ntp(jNNNqwritehe <0NvoSp(jNr‘G<$ ҂"0p(jNN0123456789ABCDEFwriteoc <0NvoSp(j Nr‘t0҂p(jNNwrites <0N$v0(#Cr#An $ԁv0("p(jNrҩ`NNqwritet <4Np(j$N"t0&)#Cr#A nr p(jNrҩ `Nwritef <xNzډ#E0,~0h#G4r#A84nb$ԁv0(#Cp$(jN#Ap$(j,NtEfr#A")p$(j,NtNfr #A` r;glt gbv=gXR") lrN"ҩ" p$(jN#Argt g vf.p$(jNJgrNJfr=fp$(jNrNrNrNNqfindarg <HNBB B&x08#Dr#An$ԁv0(#CJf`t=gx/g z,f")t0 f")NR ")ҩ t0")p,(j0NJgr#Ar,g t=f BB r,fRrҩ`LJf")t0 f")NrNNqbcplhi <NtNbcpllo <NNhi <N$<āv"NNqlo <N$<ā"NNq2$%pUV l4mP{lhb<c68. 7|/;P<pZ [ L= |> ?@(]PAB: zyx9sLt&XCDxEFhGH IDJKLMk -!h,!N"TO%P'P 09ASM00 03-Mar-86start <Nr҉"tHԉ#BD&<P։#CL#j| <(jDN%A&)D$")L <(jTNr%A <(jLNB"* <(jN"*\ <(jN"*p <(jN <(jN"* <(jN <(jN"*\ <(jN <(jN <ILN <INJgJTg <(j0N"* <(jNJfG" <(j$N`$*G" <(j(NG" #AtfG" ` G" $") <(j(NG" #A$*#jt"*t$0Ց%pt")p(jxNJtf%jxtBxrҩ`"NNqnewvece <,N"*p(jN$G`" p(j(N 'nJlG" p(j$N"*\p(jNr]p(jtNN* Run out of space. %n longwords requested Probable Error in Program give.OS <(N"<p (jtN"Jfr]p(jtN` "p(jxNNNqheap4 <4Nrp(jN#A$!(")!")!")!  ")NNqheap3 <0Nrp(jN#A $!(") !") !") NNqheap2 <,Nrp(jN#A$!(")!")NNqwritehe <0NvoSp(jNr‘G<$ ҂"0p(jNN0123456789ABCDEFwritenu <0Nvot N$)Sp(j NJfr `t "Nr0ԁ"p(jNNNqwritest <0N$v0(#Cr#An $ԁv0("p(jNrҩ`NNqwritech <N$*Ho&*֪H8RHNclearbu <Nr" n$*ԁv (rґ`NNqspaceli <,NJg:JTg2p(j0N#Qr#Anp(jNrҩ`r%APNsettitl <(N$v0( o "<`"t0"#A#Ar#A n"$ԁv0($*ԁ(rҩ `rҩ#A n$*ԁv (rҩ`"*NNqprintbu <0NJgJf JTgB"*S#AJm*$*ԁv0(t g vց"` rҩ`"*L[$"*NJfJg pIN"S#Ar#An"$*ԁv0("p(jNrҩ`p(jNRNNqpagehea <4NJgJg%jGt" %ABHR&*($*G" p (j(N"*Q"H#A$*v0(o4v0(tN#Ar#A nr p(jNrҩ `"*H$#Br#A n"$*ԁv0("p(jNrҩ `$*G" p (j(NJgG" p (j$N`Jfr"tnr p(jNrґ`G@" p (j$Nr"tnr p(jNrґ`GD" p (j$Nr"t nr p(jNrґ`GL" p (j$Nr"t nr p(jNrґ`GT" p (j$NGh" p (j$N%jBN METACOMCO ASSEMBLER V%N.%N PAGE %N 6SYMBOL DEFN VALUE REFERENCES LOCOBJECTSTMTSOURCE STATEMENT wch <(Nt f"p(jNBH`"*Ho"p(jNRHNwrite0 <0Nvot N$)Sp(jNt "Nr0ԁ"p(jNNNqcoagula <0Nt"*0pIHNt"*,pIHN$)"pINpItNNNqupdater <`N`"#p#p $*ԩ#p($*ԩ&0(#C#p$)ԃ(*lة *)ڃ#B(#pH0$)"p@(j Nҩ0&$)")(p((j$N"*lҩ$)԰"!""Jf\NNqupdatex <HN#j`")#p #p#p$0") p$IN")$0")p$IN"$)#p")$0( p(INҩ$!(")$*(԰!")#pJfrNNqmodifyx <4NBB Jf``")#p#p$*ԩ#p(`.R"*lҩ$)԰")!`*R `"")t)gv*gx+gz.g`")#pJf|%i (")NNqupdater <,Nr" ndҪ#p`H")tİ#Bvf$#p #p(*lة*) ڰH!")#pJfrґ`Ncountex < N#jB`")ґ$0թ")#pJf")Nsystemw <(Np(j(NNwritewo <,Nt" p(jNNNqwbytes <0Np(jNNNq$4OTT; l b 4g f e , h @L~yPpM,P$09ASM01 27-Feb-86asmargs <NG& #CG( #D G* #EBG, #FG. #G4 r0#A8BHr#AL&*($*G" p`(j(NG" p`(j$NG8" p`(j$Nvd$")p`(j8N#AP`HGP" pd(j$NGd" pd(j$Npd(jN#ATt f v#C`pd(jNJPgJg p`(jN"JfG" ` ""0#A<$v0(#C@֩8#CD(#pH#pH #pH$#pH (#pH,#pH0J$gz%E#i8Tr#AXTn$$)4ԁv0($)ԁ(rҩX`#i@Tr#AXTn6$)<ԁv0("ph(j,N$)8ԩX&)ւ8rҩX`")GJHf J(g")tLJLf J grG#ALr%AJLg$)O(")t0#BTr#AXTo`")ҩXt0G" ph(j(N``r%A`r%A`r%A`BL`r%A#AH`r%At%B#iL`r%At%B#iL`r%A`|")ҩXt0"ph(j,NtJl,v gjx gbz,gZ|CgV~Gg`$g|tLgfvNgVxQgzSg>|Xg,`rҩX`")p`(jN%ApJf#j(TG$ #BX&)x08*|0X#D\#F`#id#Dhr#Alhn$$)ԁv0($)Pԁ(rҩl`rҩ\$)Pԁr.(#i`hr#Alhn,$)Xԁv0(tԩ\ԁ()P؂Hrҩl`")\ҩ`R$)P(#iP")\ҩ`RtNҩPR#AP")pt(jN%ApJf%iT(#id%iJpf$*G" p`(j(Nr%A%i0`%i,%i$J$fp`(jN`$*"*p`(jdN%AJfZJLgRJ fJ#iPTJPg.tdԑP#Bt()L&)PG$ ")pdIN#APJPg#iT Jf^JHgVJ(fN#iPTJPg2rdґP#AtG( &)PG$ ")pdIN#APJPg#iT(J f "*`") %A$*p`(jdN%AJ(f "*`")(%A\$*p`(jdN%A\Jg>BG" p`(j$Np`(jN%A|t f p`(jNp`(jN`."G$ "0p`I NNbinobjo:PROG=FROM/A,CODE=TO/K,VER/K,LIST/K,HDR/K,EQU/K,OPT/K,INC/K ( MC68000 Macro Assembler Version %N.%N 5Copyright (C) 1985 by Tenchstar Ltd., T/A Metacomco. All rights reserved.  Bad arguments (Enter command line or to exit Bad option: "%C" - Ignored asm*** Cannot open %S for input asmasmlst(Enter command line or to exit default <`N*|0X#F.p0x#@"t0#BB B(r.#A,obr#A #@0r#A40nJ$)&)ց(؃v0H()؁z0H$"pD(j0NJg B ` rҩ4`J g")$)S#B")ҩRtNR#A$orN#i0r#A40n(R($ԁv0($)ԩ((rҩ4`R(")ҩ(/#i0r#A40n*R($) ԁv0($)ԩ((rҩ4`")+")ҩ$NNqasminit <4NBBB\B`BBp(jN%Ap(jN%AG$ %BG& %CG( %DBz %E%|(rp(jtN%Arp(jtN%Ar!p(jtN%A,rdp(jtN%Arp(jtN%A@r!p(jtN%Ar!p(jtN%A"<p(jtN%A"<p(jtN%A"<p(jtN%AttdԪ%BBBBPG& %C B0B,B8B4BpB\BBBxBB$BBx%DBBBB%DBBBBBlBXB %Dz%EJg,Bh"*t!JgJJgBJ,g:Jg2J@g*Jg"JgJgJg JtfG" p(j$Np(jN$)"pIXN"<p(jN%A"<p(jN%Ar#A nҪBrҩ `r#A nҪBrҩ `$*rp(jN%ANNIL:"*** Insufficient heap for M68KASM insert. <0Nt"NRp(jN#A $B(#ir#An,ҩS$ԁr0(tԩ ԩ(rҩ`rҩ  ") NNqmakefil <LN&<֊#CJg(z0H#E |#F`#iB"ҩt0#B`(RR") m0$ԩv0(#Cr+gt,g v f&)$)"p,I|N$)!(")#pR") lh")t0&t")pI|N$)!(N f09ASM02 26-Feb-86firstpa <,Nr%AXv)GT$ rp (jNBlr%AB%ABBXBBB`BdBxBBtB|Bht%BBB(vfF%C%jTBBGX" p (jNr%ADBBHBBlBXBt<%BL%|B`BBB&*B8&*!8"*pp (jNp (jNr%APJg"*p (jNBP`p (jNp (jdNJfJXgp IdNp INNamendlo <,N"P`Z$rp(jN fB fBr.\f#jt"*N")%A""JfNalignbu <,N"P` $rp(jNrp(jN""Jf$*Prp(jNNinitloc <,N"P`&$rp(jN%|BBl""JfNallocat <DNB#jP"*p(jN%Al"*p(jN%A"*p(jN%ABp(g4r(g*r0(g r/(gr,(g r-(fp (j`N`r f p INr%A`dJgJgr`p (j@N`FJ(grf($*v(g x(fp (j`N`Jgt"*DNp (jN"v$"p(jN#A$*DS#Br#A n"$*,ԁv0($ԁ(rҩ `"*|!"*|!D"*|!%i|r%A`vrfp IN``rfp (j`N`Jr fp IN`4rf J`r]#AR4 <(jN`"R")<ҩ <(jN"*|gt fr |frr <(j@N` <(jN`Zr |gR4`"R")<ҩ <(jNr,|gt |gv |g x |f")<t")NR <(jN#A#ir#Aزn$$)<ԁv0($)ԁ(rҩ`"ҩ8! <(jNrg$t&grs <(j@Nrҩ8`Lr&f rvpD(j@N&)4$")0pDINNNqBWLSexpandm <N(#pH B#jx#jd#j`z xf rlp,(j@Nr%Ap,(jN")p,INRxp,(jN`@B B$"#p(r#A, n$*,ԁv (rҩ,``J") ҩ$t0#B,r\fR$&)$(frmp<(j N`") ҩ$t0#B,r@fv4։#C0B`BdJfptIN#A#id")pt(j\N#A`tl#B`")`#Ahtm6t ")dNr0ԁ&)0֩h!8t ")dN#Adtԩh"`"*,ҩ t.#i`hr#Alhn(ҩ0$) ԩl&*,ւ$08rҩl`") ҩ`R#A R$`r0,npt9,mf&),#C0֩#p84&)4x08#D8r#A<8n*$)4ԁv0($*,ԩ (R rҩ<`R$`rmp<(j N``~") ҩ$t0r g `JR$")($o$) ԩ$v0(t g"*,ҩ t R ")$ o`"*,ҩ /R R$")$(fJgh")(S#A,r#A0,n$$) ԁv0($*,ԁ(rҩ0`%i(D"*,ҪDt r%ARXp8(jN`(%i D"*,ҪDt RXBp8(jdN"""#p p8(jNJ g"*xgJf JXg"*xf%id%i`p,IPN%ixr%APNstack.N <,NG@" p(jN"*$0"*p(jN%A$*!(NNARGdestack <$NG<" p (jN"*$*!("*%pNNqNARGdigits <(Nt lr`t "Np(j\NRNnewasml <NRh"*hNskipres <N%|Nskiplay < N` p (jNr |gt |gNrch < N"*Dl p IPNJgr`"*,Ҫt0"%A|RNnextlin < NBp I4N%ADtvfF%BNNqreadlin <Nr҉"BB <(jN#ABRltf"N`t fD"< <(j N` <(jN#Ar g tfr#A`:"*,ҩR <(jN#Ar g tf|r#A n$ԁv (rҩ`")S#Ar#An$*,ԁv0(#Ct fxةt"NtN#A`"ҩR m(Jf"< <(j N#|` rҩ`r")S#Ar#An"$ԁv0($*,ԁ(rҩ`")S#AJm$$*,ԁv0(t fSvց"`"*,ҩt ")Ncheckfo <,Nfp(jN`")p(j@NNreadtag <4NBrfbrZp(j N` p(jNrA|n tZ|lra|n tz|lr0|n t9|lr_|gt.|fl`R"*ґp(jNrA|n tZ|lnra|n tz|lZr0|n t9|lFr_|grgrp(j@N`&"<ªJfrp(j@N`r#A"*t 婂0&)ዂ#A"*8p((jN퉂#Ap((jlNp(j8Np(jN` pI N`"<?ªJf rp(j@NpI N#AJlDp(j@N`")pIPN`\pIDN#AJm%|8hrp(jN`")Dp(j@N`"pI N#AJmpIPN`pIDN#AJm%A0%|8hrp(jN`rf,B$<?ĪJf rp(j@Np(jN`8r#Agrp(j@N`"<ªJf rp(j@N"*t 婂0&)ዂ#A"*8p((jN퉂#Ap((jlNp(j8Np(jN` "*hJgtgjvg`` "p(jNrfBpItNp$(jpNp(j|Nt r&p(jNrg rp(j@Np(jNp$(jpNp(j|Nt rp(jNJ@g8"*DTf$<8ĪJf %|`"<p(j@NJg%|`,r?ªtf"*Tg"<p(j@N frpg rp(j@N`D g f"Jfr%pg rp(j@N` rp(j@NrfVJ8fNJfFtԪl&*얂#C txnFz|nFą#BJgJgJfz%E8r8fJg$#j tԪl(*v"*p(jN`*rҪl$*씁#B JfJg rp(j@N"*hቂ0$<ĩ p(j8Nr n t lJf rp(j@N`rҪl$*씁#B Jg"#j rҪl(*v$"*p(jN m  o JgF"*hቂ0#Atf "*`rp(j8N"<© p(j8N` rp(j@N`&pItNp(jNp$(jpNp(j|Nrg$<ĪJgrª#A tf"`r#AtĪh#BJg"<p$(j@Nt r&p$(jNp$(jNp0(jpNp$(j|Nt rp$(jNrfD$) v 窄0()ጄ#B$"*8p4(jN퉂$$)늂p$(j8N` rp$(j@N`t"<ªJgZG `" Ҫh#p rªh#At rp (jN")ቂ #A p0(jlN p (j8Np (jN` rp(j@N`pI NrfthfF#B Jg:Jg "<?`"<JfJ gr!`rp(j@N`8"*t &*h틂#Ap,(jlNp(j8Np(jN`"<ªJg"<ªJfrp(j@N`p"*h#Ap((jlNp(j8NJg*#j$*rNҪl(*v$")p(jN"<ªp(j8Np(jN` rp(j@N`dr#A Bp I N"*© Jf rp (j@N"*© Jf rp (j@N"*Ȳftfr`r `r#A$*ȴgvf p (jN"*t 婂0&)狂p (j8N`pItN`ZpIN`npIN`br%A$pINB$`LpIN`@pIN`4"<p(j@N`""*hmtn6{N `2pItNp(jNp$(jpNp(j|NJg"<p(j@Nt rp(jN"<8ªJfrp(j@N`2Jm rlrp(j@N`"*0p(j8N`pI NpIDN#AJlDp(j@N`")pIN`fpI NpIDN#AJmpIN`rrg rp(j@N"<ªJf rp(j@N"*t 婂0#A"*8p((jN퉂#Ap((jlNp(j8Np(jN`B p I N"<?ªJf rp (j@N`4p I N#AJlDp (j@N`")p IPN`&p IDN#AJlDp (j@N`%|8hrp (jN`p IN#AJlDp (j@N` p IN`p I N#AJmp IPN`p IDN#AJm %| 0%|8hrp (jN`vp IN#AJm%|0p IN`Prg r p (j@N"*8p,(jNp IPN`$"*hmtn6{N F `J"<p(j@N`8"Smtn6{N40 $ p(jNNNqget.ope <,Np INp (jNp(jpNp (j|Nt r&p (jNp (jNp(jpNp (j|Nt r (jNNcheckAf <NrgrNr8g J8frNr8frNr8fr`rNcheckIf <(N`x$<rp INN$<rp INN$< rp INN$< rp INNtrp INN$<rp INNrp (j@N`|"*0 l,Jg g gz g^ g`gt g gP gX g` gv g`zNcheckIa < NJg&<8ƪJfrN @fPrfr`r fr`r#AJlrNJ8g"*8grN")N"<ªJfr`")N"<ªJfrN"<8ªJfrN")Ncheckcm <NrgrNrgrNrNNqgenNfor <8Np(jN"*t 婂0&틂#Ap (jlNp(j8Np(jNNNqgencmpm <8N"*t 婂0#A "*8p(jN퉂 p (j8NNNqgenIfor <8N%A0 @fZtfr`r fr` rp(j@N#Ap (jN퉂0t`r=p(jNr%AHJf$<ĪJgt"#jrfr`rg tfr`r$")p(jNrf r'p(jNrfG" p(j$NrfG" p(j$NBp(jNr%APNNq -Dr-Argenmove <4NBBp(jNp (jpNp(j|Nt r&p(jNp(jNp (jpNp(j|Nt rp(jNrf(t f"p(jN` r*p(j@N`4r gr+p(j@N`rgrp(j@N`Br8fr`*r8fr`J8fr` r,p(j@N#A$*v (퉄"*剄"p(j8N"<ªp(j8NNNqgenmove <0Np (jNp(jpNp (j|Nt r&p (jN"<8ªJf rp (j@Np (jNp(jpNp (j|Nt r (jNrg rp (j@Nrn tl r-p (j@NJg,#j $*rNҪlR(*v$") p (jN"*t p&<ƪЂp (j8NN$Z8hB09ASM04 26-Feb-86dodir <LNBBr ҉#A$*%p(vg,xg"zg|(g <(j(NrfrV <(j@N`Jhg"< <(j@Nr <(j N <(jN <((jN <(jxNt?‚" <(jNrtfF&$*" <(jNJg*"*@ <(jN"*t!"*!" <(jN`` r`0r`*r. <(j@N`"*Jgtgvg`#A <(jN <((jN <(jxN" <(jN"<ªJg"< <(j@Nrpfv.G$ r <(jN%i"* <(jNJ$<r <(jNr%A`Zr <(j N <(jNJgr`r#A$*vư(#C#p(fJdg"< <((j@NJg*rҪt0o"< <((j NJgxr <((jN#At#Bv#C(!H")!")B")B ")B")B")B")B%i`BJgrgt?Jgvf "<`"< <((j@N"*!r$*!( <((jNr&f <((jN`$<r <(jNr%A`rz <(j@N`"< <(j@N`z"*mt0n6{Nvvv6 BV~**px ^ Z (f  000 j8x <(jNNABSOLUTEOFFSET TrueFalsedosecti <|fp(jNr%A` r8p(j@N`J(f rup(j@N` p(jNr |gt |g v |fr%A`p(jN`Bp(jNB`jr |f r9p(j@Nr'|g t"|f(p(jNr'|gt"|g v%C`F"*Ҫ|%ARp(jNrlr:p(j@N`r;p(j@N`"*|t mvun6{NZZZd<R<dv. 0@R0vNreadnum <8N"*|pIN#AB$*S#B m rp((j@N#j#j$#j p((jNr!f.p((jN&) $)")p<(jN&$rp((jNNr&ftgv g r?p((j@Np((jNrgtg r@p((j@N#j#j$#jp((jNtBr!p((jN&) $)")pH(jN#A<&)$)")pL(jN$")"<p(j@N`,""0tg>vg xg2zg&`NNqabs16ad <NJf$<āg "<N"<Nevalnum <,NJfr`"p(jxN#Ap(jNJf")p(jNJg ")``:"<p(j@N"<p(j@N"<p(j@NrFp(j@N`D")t lvgxgzg| g`gt gvgxgz g`Nevalexp <dNJfr`"#p#p#p B`b"p (j$N%A")`")p (j$N%A")`%i")`r%At%B"*`|")tİvfF#CtİJgJg rjp (j@N")%p")`0%jlrpf$*Tኄp"`"*p (jNJgr`r`%i"*p (jNJgr`r`")p (jxN%AJg"<p (j@N`$rJp (j@N"*D`(rFp (j@N`r?ªJgtgvg`%Ap (jNJgr`r`L")p (jxN%AJg"<p (j@N`$rJp (j@N"*F`(rFp (j@N`r?ªJgtgvg`%Ap (jNJgr`r`BBBB B$B(#j,B0B")"0p@(jxN#A#j#j$B$)"0(p@(jxN#A#j #j(J$f J(g")#p4J,fJ$gJ(g"<pD(j@NJglJ$g:r4g t4f")pD(jNJf"<pD(j@N`,r4f")pD(jNJf"<pD(j@N"),$(%A`")ҩ `") $)"`$)") N`$) ")N`")© `x") `l")$) `^")$) `P"<p@(j@N`>")"0tmv n6{Nlx%A$)(&0($)")p@IDN#A0Jgr`")0`r%A%i$)%p(r`~"<p (j@N`lr?©mt(n6{Np44bbbbdJJJ26Nsizeval <N`rNrNrNrN"tgvgxg`finalty <XNp(jN#A")p (jN#A"p$(jN#A")p((jN#A$)ĩ#B ©#A$&)Ʃ#C(()ȩ#D,") p<(jN#A0`J gJ0gr`rNrKp@(j@NJ gJ0gr`rNJ(g")NJ,g"NrLp@(j@NJ gJ0gr`rNJ$g0"fJ0gr`rN"<p@(j@N`:J,g"NJ(gJgrNrLp@(j@N` rLp@(j@N"<p@(j@N`8")tmv n6{NnnnnnnNr$\0`_ T^t{|T09ASM06 26-Feb-86definec <8Nt"\g v+\f"<p(j@Np(jNrfpINr&f>`"p(j N#ABrp (j Np(jN$)"pINr&gtMrp(jNJ"* "#pJgrp(j8N`")tfr`6")tfr` ")Jfr` rWp(j@N#A$)v(fr`r#A tn vl rHp(j@N"JfvJg4Jg,#j$*rNҪlR(*v$")p(jN") t&)(08z 묂()| (<Ȫ삄p(j8N` rQp(j@N`Jg2Jg*#j $*rNҪl(*v$") p (jNJ@g&Jg$*rNҪl&*Dtp IN"*tp (j8N"<ªp (j8N`xJgrp (j8N`$*rNҪl"$*씁#BJg #j(*v$"*p(jN`Rr%pf"*p(jNJf6rpf""*p(jNJg"*Tg rXp(j@N m o"<p(j@N"<©p(j8N`Jgrp (j8N`J" "tfr`2"tfr`"Jfr` rWp(j@N#A$v(fr`r#AJg0#j$*rNҪlR(*v$")p(jN`\rҪlr%pf"*p(jNJf6rpf""*p(jNJg"*Tg rXp(j@Nrn tl rHp(j@N")t&(08z 묂()| (<Ȫ삄p(j8N`4"*8p (j N"Jg2Jg*#j$*rNҪl(*&$")p(jNJ@g&Jg$*rNҪl&*D$pINrf$*v" (j8Nrf$<Ī"p(j8N`"<ªp(j8N`r"*t l.vgxgnzgz|gr~gj`gdt@g g g g gr`Naddexte <TNJgB#j`D")$f(`Nr#At#B`Xr#At#B`Hrf"<p0(j@N`r#At#B`")tgvgxg`")ҩt԰")ҩ!rffrp0(jN#A $)ԩ&!(8") !") !T") B ") ! ")ҩ! `0")ҩx&*T$)"0p0(jN$)ԩ!(N")#pJfJfr#A$"(`"<p,(j@NNcodewor < <@ tA B K \dzd[c=N@XxEX x09ASM07 27-Feb-86lookup <DNB$v0(#C#C xl"`r#Ar#An.$ԁv0(#C$) (<ȃԄ#B x؁"`$<") N#B Ԫ%p(`rҪ#A$v0(g|`#ir#AnT$ԁv0(#Ctanxzn z "`")$)ԩv0(gr` rҩ`rJg`V`>Jg#ir#An$ԁv0(#C$)ԁx0(#D tanzzn | "`")#A$ta nvz mx *) "`") $gr`rҩ`trJg``P#ir#An0$ԁv0($)ԁx0(gr` rҩ`rJg`V`>"*tİ"Umt n6{N&&&"*%pJfJf"*ҩ #pt")NPp (jN%A#ir#An$$ԁv0(tԪԁ(rҩ`"*t!"*B"*B"*BJgr`r$*!("*B"*BJf"*ҩ !`")!"*ҩ !"*tİ%B%p$vf%pJgTJg "*Jg$*l"*pINrft%B"*tİJg r\p(j@NNaddref <4Nvց#C(*匴Hf$`D")#p")$)g&")Jf$)rp(jN$)!(Ncomplai <,NtpIDNNNqwarning <,NRtpI$NNNqasmerro <@NJg$*rN#A f>"*p(jN$<GT" p(j(N"*\p(jNr%AX%A`"*ҩ!lrҩҪ!BHp(j0Nr"p(jN"*"0p(j$Nr"p(jNG" p(j$N"*lp((j\N$"*lp(j Nr:p(jNJgG" ` G" p(j$N"p((j\N$"p(jNG" p(j$N"p$(jNp(j$N"*p(jNrgRG" p(j$N"*DS#A r#A n"$*,ԁv0("p (jNrҩ`p(jN"*HS#A r#A n"$*ԁv0("p (jNrҩ`rp(jDNJfG" p(j$Np(jNG" p(j$N"*\p(jNRr%AJg%A$*"*p(jHNNNq9 *** More than %N errors detected - Assembly aborted. , line  Error Warning : ***  *** Assembly Aborted  continu <4Np(jN#Ap(jN#A JgrN"*p(jNG" p(j$NJfG" p(j$NG" p(j$N")p(jN"*p(jNp(jN#At f") p(jNrN`p(jN#Ar f") p(jNrN Press 'A' to abort or  to continue : error <LN"*p(jN"*G$ #BJfG" ` "*"0#AJgr`Jgr`r#A"p0(jN#A$#Q (*l&)$)")p(j(Nr%AX%A$* "*p(jHNNNq/ "%S" Pass %N, line %N. Fatal error %N - %S message <N`nG " NG @" NG `" NG x" NG " NG " NG " NG " NG (" NG P" NG t" NG " NG " NG " NG " NG H" NG t" NG " NG " NG " NG " NG <" NG l" NG " NG " NG " NG (" NG T" NG " NG " NG " NG4" NGx" NG" NG" NG" NGD" NGx" NG" NG" NG " NGP" NG" NG" NG" NG@" NG" NG" NG" NG" NG," NGT" NG|" NG" NG" NG" NG" NG0" NGT" NGh" NG" NG" NG" NG" NG$" NG@" NG|" NG" NG" NG" NG " NG@" NGt" NG" NG" NG" NG" NGL" NGh" NG" NG" NG" NG" NG" NG@" NGt" NG" NG" NG" NG(" NGX" NGp" NG" NG" NG" NG" NG@" NGl" NG" NG" NG" NG " NG@" NGt" NG" NG" NG" NG" NG(" NGD" NGd" NG" NG" NG" NG" NG$" NG@" NGp" NG" NG" NG" NG" NGH" NGt" NG" NG" NG" NG" NG8" NG\" NG" NG" NG" NG" NGH" NGx" NG" NG" NG" NG " NG (" NG H" NG h" NG " NG " NG " NG!$" NG!," NG!T" NG!|" NG!" NG!" NG!" NG"" NG"@" NG"d" NG"" NG"" NG"" NG"" NG#$" NG#H" NG#" NG#" NG#" NG#" NG$" NG$0" NG$X" NG$|" NG$" NG$" NG%" NG%0" NG%X" NG%" NG%" NG%" NG&" NG&4" NG&X" NG&|" NG&" NG&" NG&" NG'" NG'T" NG'p" NG'" NG'" N"Sm n6{N",6@JT^hr|&0:DNXblvp  *4>HR\fpz$.8BLV`jt~p (2<FPZdnx",6@JT^hr|&0:DNXblppppppv  *4>HR\f"Size specifier is illegal on LabelGarbage found in Opcode fieldIllegal Opcode field'END' statement missingGarbage found in Label field&Illegal size specifier for this Opcode%Illegal address mode for this Operand&Illegal address mode for First Operand'Illegal address mode for Second Operand ',' expected after First Operand!Too many operands for this Opcode!Garbage found after Operand field$First Operand must be of 'DATA' mode-First Operand must be of 'DATA REGISTER' mode1Second Operand must be of 'MEMORY ALTERABLE' mode(Illegal address mode for Relative Branch#Label must be of 'RELOCATABLE' type Label must be of 'ABSOLUTE' type,Short Branch displacement of ZERO is illegal&Location out of range for Short Branch%Location out of range for Long Branch.Second Operand must be of 'DATA REGISTER' mode/Second Operand must be of 'DATA ALTERABLE' mode-Illegal register combination for 'EXG' Opcode#Operand must be of 'IMMEDIATE' mode5Immediate value out of range of 4-Bit Unsigned Number)First Operand must be of 'IMMEDIATE' mode0Inconsistent Size Specifier for 'SR/CCR' Operand7'.B' size specifier illegal for 'ADDRESS REGISTER' mode1Second Operand must be of 'ADDRESS REGISTER' mode?First Operand must be of 'ADDRESS REGISTER POST INCREMENT' mode@Second Operand must be of 'ADDRESS REGISTER POST INCREMENT' mode%Second Operand must be of 'DATA' mode4Illegal Size Specifier for 'SR' Operand (W expected)5Illegal Size Specifier for 'USP' Operand (L expected)0First Operand must be of 'ADDRESS REGISTER' mode0'SHORT' Size Specifier illegal for 'MOVE' Opcode;Illegal Size Specifier for 'MOVEM' Opcode (W or L expected)1Register Range must be for Registers of same type5Size Specifier on Register is illegal in 'MOVEM' mask-Register missing or malformed in 'MOVEM' mask:Second Operand must be of 'ADDRESS REGISTER + OFFSET' mode9First Operand must be of 'ADDRESS REGISTER + OFFSET' mode;Illegal Size Specifier for 'MOVEP' Opcode (W or L expected)9'QUICK' Operand value out of range of 8-Bit Signed NumberNNqS$R(j09ASM09 03-Mar-86xreflis <0NBr%ABr" nNҪ#p`2")Jg$<Ԋ")pI N")#pJfrґ`p INJ`g2$*"*`p (jdN"Jg p(jN$*"p(jNNprintxr <$Nr%AT%ABPBGL" p (jNp (j0N"*p INp (j0NNNqCROSS-REFERENCEputinxr <4N&J8fv$p(jN$)!(`X")#ptԑ&)xذ8"$p(jJf6p(jN#A"*p(jNG" p(j$N")p(jNNNq@** WARNING : One or more symbol names have been truncated ** getsymb <8NBr#A nҪ#p `") tİ#BJf$vgxة "p INJf`F")p (jNJfrg")p (jNJgrҩ f")NR") #p J fprҩ`H")Natarisy <@N$v0(#Cx ؉#Dz|oF#Eo"`")#Ar#Atn&)ցx8rҩ`")S#Ar#An&tԁ&ւt08&)ց8rҩ`t")p$(j,N")Nxdefsym <N#j`$")t԰frN")#pJfrNatarico <#i ") #p!") $&*lְ((08ذ!#i Jf"!NNqsort <,N$#p(B`p#i r҉#A$)#p(`&")$0&) (08(o#p")Jf")$) !(")! Jf"!N$09ASMG 26-Feb-86gstmodu <8N#jPp(jN#A#j J,g*"*p(jNG" p(j$N")p(jN"*p(jN%j"pI0NpINpI@NpI")#p")p IN")p IN")p IN")#pJf"<p(jNrp(jN%i ")p(jNN,GST module will not allow 16 bit relocation gstsour <8N$v0(xo"`"t0"#A#Av$<G" p(j(N`SJg,"ҩt0r:g$ԩv0(t/f")$)"p(jN#i rҩ#A n $ԁv0("p (jNrҩ`N%C%Cgstsect <@N"P`"#p#p $)DS#B #p&)x08Jg*`BG" `2G" `&G " `")t)gv*gx+g`#Av$<G" p (j(Nr ҉t0"p (jNr ҉t0"p (jN")t0&)G" p (j(N""JfNNqTEXTDATABSS%C%C%C%Sgstxdef <LNJg"`"#p$)&0(DS#Cxة#D #p(*|0X#D0(v$<G" p (j(Nr#Atn v։ցx08"p$(jNrҩ`")"0p (jNJgBr҉t0"p (jNr҉t0"p (jN""Jf0NNq%C%C%C%Sgstxref <8Np I4NJgr"#j`")t԰#Bv$<G" p(j(N" t0"p(jN" t0"p(jN")t0&)G" p(j(N")$0!(R")#pJfpNNq%C%C%C%Sgstsect <0NDS"v$<GP" p(j(N" t0"p(jN" t0"p(jNNNq%C%Ccontain <N"`*"JnJn JorN""JfrNNqgstcode <@NJfr` "*"0#A$#p(#p( #p( v+f0()S#Dr#Anrp((jNrҩ``Bl`v")lfP$*J( l") p IN`") p IN"*%pJg"*#p`") Ҫlt0"p IN")lnNgstrelo <HN$*&<ư( DS#CxT#Dv$<G" p(j(Nr#A tn"&֪lx08"pINrҩ `r҉t0v։x08z08#E(#|,v+G" p(j(NN%C%C %C%C%C%C%Cgstxref <PN$*&0( x#C*<ʰ( #E|fr`rf`r#Atfvx@#C `rt #A v$<G," p (j(N#ir#Anrp((jNrҩ`rҩ#Atn&&֪lx08",p$(jNRlrҩ`r ҉t0v։x08z08#E0#|4v+G4" p (j(NNNq%C%C %C%C%C%C%Csort.xr <HN#jBx&$<0Ԋ"<ҊpIN`")$0#p(tԩv#C(#i,x&"<ҊpINrҩt#B(#i,x&$"<ҊpINrҩt#B(#i,x&$"<ҊpIN")#pJf`Nmergeli <\N#B*#pX`X")#p $)f4&)! 8#i@()&) $)"p0IN#i `#i#i JfNNqinsert <,N`""$0&)(08(o""Jf"$)!("!Jg"< t&)!8 Nwriteco <(Np(jNRl f "p(jNN$ d`z`J*_G JgG. g'[Q`GN7|GNNq9Ipd"gI",l `E"R$"f$ (R!8mgR&!8"RNk %|g(rN"<p (jN`FreevecJg&A"#fRN"<aglobin pg.(A"$G($#g&#on Ԍ%8`B%|o(`"Nmuldiv (vN *H@HE.,ڀB0H@BE@HEހ݅JjJjރB݃HzJj DaDNuJjD@a DD(Nu b,"BAHA2HG2<HG2HF<BAHA%A("NuJfJk"$/a(%B(Nu*BEHER "BAHA42HB4HG26HGHC6"BAHA:2HE:HC24HC2HB4 "Ğ H@HD"&HCĜBҀ ׀HDB0H@2HA/aҟJ(j٪(SNuaptovec(A" W&C8H#L#p#pNgetbyteԁB0(Nputbyteԁ(Nget2bytԁB20(Nput2bytԁ1(Ngbytes (ABSfNpbytes (A(SfNlevel ")Nlongjum"A(iN(Vdu &B3zk aQ` NP` ````>`X`ZrNrNrNra  dv3  eapgf`Nr|H8$(jp NL``ka`t aHEa``0H<r(jp NL%C0BH!H "p8 NL (iN&_HHN` `>`LЉ**0XlNurT!|X`H868HAHBBHABA҃LNuJj DaDNuJjDaDDNu b,BAHA&2HAB42HANuc$rNu.BGHGR(*$a$ǂ$&HCHCԃbDbR`NuS`r`rJ_*<&/&Ccgcg cgcgJc& GLo2 n($rb`"r`r`r`r`r` r `r `r &/p,(jNNs 0^dj|(h^,_DX p@lad 09BLIB 11-Dec-85sys.ini <0N$v0(#CB4BG" p(jN%AG" p(jN%AJgJf"<p(jNrҪ#A#i r#A n$$ԁv0(S$)ԁ(rҩ`")ҩt "*B rҩ&*!8%jNNqCON:CON:stop <0N#j4`.")#pJg")p(iN")#pJft"p(j8NNtestfla <0Ntr p(j8NJfr`Rtrp(j8N#AtfGt" p(j$Np(jNrgtvfF"`N^C datstri <N$B("B"B(rNNqdatstam <NNlocateo <$Np(jNNfreeobj <$Np(jNNlocated <NrNNqfault <0N`zG" `G" `G" `G" `G," `GH" `zGd" `nG" `bG" `VG" `J"tzlJgvggxogzyg`g g g g gD`#A$p(j(Np(jNNNqFile not found No store leftToo many globalsNot a .RUN fileResident library not loadedCan't rename across devicesFile already open for writingInvalid input/output streamError %Nvdu.rdc <0NJftr p(j8NJfrNtrp(j8NNNqvdu.wrc <0N&trp(j8NNNqrdch <$Np (jN"t fp(jNt f"Np(jN"Nwrch <(Ntgv f r p(jN"p(jNNbinrdch <,N"*$" #p(&)n"pINNrґ$*!( rҪґt0"Nunrdch <N"*" JntJfF"N"S$*!( rNNqbinwrch <4N$*&#p( #p8J(l#p( p(i NN")npI,NBrҪҩrҩ$*!( NNqrepleni <0N$*#p(v#CB((0(JlDzg"<p(jNJfrNJg"*p(iN#Arf$*B( $*B(Nrҩ$*!( rҪҩt0"Ndeplete <(N"*"$0JlDvg"<p(jNJg "*p(QNJg"<p(jNNNqfindinp <,NtpI@NNNqfindout <,NtpI NNNqfindstr <`Nr1p(jtN#AG$ #B BJfrNr#A t1nҩBrҩ `")t! ")!rҩ#Av֩#CB($") p,(j@N#A`rg%|(`r#A$)G 4& !(`rg%|(`r#A$)G & !(`rg%|(`r#A$)G p& !(`rf$)B( $)!(`~rf G d" `G @" $)!(D`R$")p,IN$)")p,I4N%A(JftfN")p@I N#A4")pDI Nt#B<(&)4tr=p,(j8N%A($)G & !(`")p@I N#A4")pDI N(&)4trAp,(j8N")p@I N#A4")pDI NB<(&)4trp(j8N%A(r(fFNabort <@N#j `Gh" `Gp" `G|" `G" `G" `G" `G" `vG" `jG" `^G" `RG " `FG " `:G0" `.G@" `"G`" `Gx" ` G" `G" `G" `G" `G" `"t lVvl&xgzg|g~g`gtg vgx gz g`g l(t gvTgxbg g `tg$ g& g( g* g, g.`:#AG$ %BvTfG" p (j$N`RG" p (j$N&)$")p (j(Nrdo$)G" p (j(N l p I(N%i p (jNNNqCode %N Bus error Address errorIllegal instructionDivide by zeroCHK instructionTRAPV instructionPrivilege violationTrace exceptionLine 1010 emulatorLine 1111 emulatorUnexpected TRAPStack overflowUndefined global %$%N calledInvalid input streamInvalid output streamFailed to initialiseCoroutine failure Heap corruptIllegal FREEVEC Disk full FATAL ERROR: Stack overflow FATAL ERROR:  @ %X6backtra <8N$ #B&(08#DG" p(j$N`v")"0pINr:p(jNr#A tn.ҩ#A&)Wl&"08p INrҩ `p(jN#i")$0#B")0fG" p(j$NN Backtrace of stack  End of backtrace writear <,NpINJg"U$Gl" p(j(N`8 o B@lt "p(jN`$Gt" p(j(NN %T7 #X%X8isfn <$NU#A o $ 䊲mrNr‘JgrN")t0vgrNr#Atn:&)ցx08v n()؁z0HxorNrҩ`rNNqreadn <,NBBBp(jN#At0n v9oT`,p(jNr%A(rN`r#Ap(jN#A`&")t gv gx gz+g|-g`` $r Nҩt0"p(jN#Ar0n t9lJgDp(jNB("Nnewline <$Nr p (jNNNqwrited <lND#Av։#CB Jl S#Qt ")ND")ҩ !t ")N#AR Jf#i@tԩ "#AD@nr pT(jNrҩD`Jl r-pL(jN") S#A@Jm ҩt0԰"pP(jNrҩ@`Nwriten <,Ntp(jNNNqwritehe <0NvoSp(jNr‘G<$ ҂"0p(jNN0123456789ABCDEFwriteoc <0NvoSp(j Nr‘t0҂p(jNNwrites <0N$v0(#Cr#An $ԁv0("p(jNrҩ`NNqwritet <4Np(j$N"t0&)#Cr#A nr p(jNrҩ `Nwritef <xNzډ#E0,~0h#G4r#A84nb$ԁv0(#Cp$(jN#Ap$(j,NtEfr#A")p$(j,NtNfr #A` r;glt gbv=gXR") lrN"ҩ" p$(jN#Argt g vf.p$(jNJgrNJfr=fp$(jNrNrNrNNqfindarg <HNBB B&x08#Dr#An$ԁv0(#CJf`t=gx/g z,f")t0 f")NR ")ҩ t0")p,(j0NJgr#Ar,g t=f BB r,fRrҩ`LJf")t0 f")NrNNqbcplhi <NtNbcpllo <NNhi <N$<āv"NNqlo <N$<ā"NNq2$%pUV l4mP{lhb<c68. 7|/;P<pZ [ L= |> ?@(]PAB: zyx9tL& CTD,ELFG<HIJK4LhMk X-!,!dN"O%tP'09ED1 11-Dec-85ptr Ҫ`$0JlD"Nwordlentԁv0(t"p(jNTNshuffle$*pS#B#A`"rҩҪ`$*`ԩ!(R")l"p(jtNr%ANNqget.nexp(jlNґD$*`Ԫp!(Nstore.prp IDN"$!l(%QlNshuffle$*pgRprґ#A#jp`"")SҪ`$*`ԩ!(S")l"p(jxNr%ANNqnext.li"*pp IN"\fr` pItNrpIN"pIPNrNprev.lirp ItNXfr`8"l"%plrpITN"D$*`!(rҪp(jtNrNdelete.pIN#Ap(jlN#A"*ppIN#A t\fF#BBLBPJg&pf()Jfb%jl\J\f6zڪX%E,~h%jX\"*\D$*`!(rp (jN"*\%pl$*\D&*`!8N"Sp IN%A\GX& $rp (jdN` &)$)"p IdN"*p (jtNSp"*pl%AN&)$)"p IdN"pfp (j`N`")$) "p INNNqdelete.p(jtNr%A$)")p(jNrґ$*pS#A #B`Frҩ Ҫ`#pJo")$)"` ")ҩ$*`ԩ !(R ") lNadjust.#A #B`D"*`ҩ #pJo")ҩ`")$)"$*`ԩ !(R ") lNNqinsert.pIN#Ap(jlN#Aҩ#A BLBPrp(jN"*pf`$*rp(jN"p(jxNpIN"S#AB`"rҩҪ`$*`ԩ!(R")l`RR"pIN")\f%i \T`t") p(jNrҩ t"*`ґ! rґv$*ppIN%jpNNqextractpINR#A$v0(S%ChB#C `(rҩ$)ԁr0($*dԩ(R") lNreplacepIPN#Ap(jlN#AtԪh#B t") p(jNT#A#ABJgJoTp$(j NJf"p$(j`Nrp$(jN")\f$)ժ`")ҩ$)p$(jN`")ҩ$)Dp$(jNrґ&)$*pp$I$NBLBPRB#jh`("*dҩt0rҩ&)ց8R")l$)(NNqflag.lipI$ND$*`ԑ!(N@l\p09ED2 11-Dec-85edit BJgJXf"*$#p#p( vP l#C rҪ$rp(j|N$*rp(jN") S#AB`<")ҩt0r m $)ԩv0("p$(jNRR")l")p(jxN"*p(jNBr#Arp(jN"JgtԪG& rp(jdN$*"*p(j|N`"*p(j"*XSmtn6{N*6BNZfr~&$)") p (jdNNNqLast line deletedNo room in bufferCreating new fileInput lines truncated Top of file End of file Line too longUnknown command Unmatched ()Commands abandoned Syntax errorUnable to open fileNumber expectedNo block markedCursor inside blockBlock incorrectly specified Search failedTabs in input file expandedErrorfatal $*rp(jN&)$)"p(j(Np(jNrp(jPNN$tY09ED4 11-Dec-85getsp $*ДS%B"Nget.siz"<'Ninit.edr҉#At#B\B`Bpp(jN%App(jN%Av$)G" pp(j8N#A`J`fJ\g6G" pt(j$NG" pt(j$NG" pt(j$NB\G " pt(j$NG4" pt(j$Npt(jN#Adt f "pt(jNpt(jNv$)G`" pp(j8NJg\")"0ppIN"$)J(g#p(dBh&)dx08#Dpz#El``")dҩlt0#Btr0n v9oGl" <(j$N`$)hr <(j Nҩtt0#AhRl")pll hl$)hG" px(j(N`"h"pp(jtN%AXJnG" pp(j$N`^"*Xґ%A%jX\rppIN%A$)&0(x08#DhBd`*")$0ԩdv0($*ԩd(Rd")hdlB$*rpp(jN$*rpp(jNU%A$*rpp(jNS%A"*ppIN%A`r@ppIN%Adt"*p|(jNRppIN%A4$v(r%A8r@ppIN%A$v(r@ppIN%At BBB&*`!X8r#Ad#jh`"*`ҩdBRd")hdlBpBlBBBBt%BHBLBPBpvO%CtBBBXx%DBx%j|$*rpp(jN"*pp(jN%AJf$rpp(jNrҪX%A$v(`rҪX#AlBhBpBtBx$*X&*Ж$*" <(jN#A|ҪX#AG& t r <(jdNG& t r <(jdNtr <(j|N"* <(jN <(jN#Adr dn8tdg.Rh ho #Bt`")lҩhg`4`")lk")lS%A\$*pmD&*`֩p!8Rpt")h <(jNҩlT#Al <(jN#AdtgBhr@ҩlm" <(jNG" <(jN")ll$)|թr@ <(jNR`B`Rh")lҩht Rrlt#Bx`8")dtgv gx gz g| g~g` <(jN#Ad`| <(jN"* <(jNrҪ\#At")h <(jNҩ%A$)pS%Bp$*r <(jNJxgr <(jNJtgr <(jNN FROM/A,SIZE3 Metacomco Screen Editor Version 1.6 August 1985 2Copyright (C) 1985 Tenchstar Ltd., T/A Metacomco. All rights reserved.  Bad arguments (Enter command line or to exit FROM/A,SIZEInvalid number given for SIZE SIZE of %N too small Not enough free store Metacomco Screen Editor (1.6)'(C) Tenchstar 1985 All Rights Reserved File too bigvdu.wri(z0H#E p(j|N$*rp(jN&) t")p(jN"ҩ %ANNqvdu.wrlS#CB `"")ҩ $ԁr0(p (jNR ") lNNqtidyup $*rp(jNJXo"*Xp(jxN"p(jNNNqshow.tiNNqLhT 0w09ED5 11-Dec-85start p (jNp (jDN%AxG$ %B|p (jNNcursor.Jf,Jfr`$r %At &*"p (jN`SrNNqcursor."*nt %Av ֪"p (jN`RNNqcursor.Jfp (jNJf rp (jN`SNNqcursor."*Ȳpfp (jNJf rp (jN`RNNqdo.tab p (jN"*Ҫ$*Hp (jNJfNNqcheck.np (jN"*Ҫho."*p (jr0n t9l*r;g t(gv)g xf r p(jNpIN#A g tf`R"ҩ `"NNqcheckomp IN"tgS8rt;fFvxfFvz(fFv|)fFNNqgetch "*4Ҫ8t0""*4v08lr`R8"NreplaceJg"*p (jNNNq$p09ED7 11-Dec-85do.writ"p(jN#A Jfr p(jNr`rҪG& $rp(jdNrҪ&)$rp(jdN") p(jNrґ#Ap (j$Np (jN")o"p (jlNӑ`p(jN"*p(jN"g "<p(jNG" p(jNrNWriting to fileBuffer corruptdo.joinp (jN"p(jlNґ#Atԁ#B&x08#D *\f rp(jN"*hҩ m rp(jNr#A#i `*")ҩt0")Ҫh&*dց8R")l$) ժh"*p(jN"*p(jN"*p(j`NNNqset.poiB#j`~"D$*`ԩ!(%ip"\fLtԩ#B #j`G& $) rp (jdNR ") l$)l%BN"p(jlNӑR")lzNdo.tof "*Xp I\NBlNNqdo.bof $*`&0(JlD#C(*`تp*0HJlD#Ex#D `8")!l%il")p(jlNө")p(jlNөR "*\g $) f")pI@N") NNqfill.pr#jXBl`$")!l%il")p(jlNө")fNNqdo.showp (jTN"*Lp IN"*Lp I`NBrp (jNNcheck.bJLg JPf rp (jN"*PLl rp (jNNNqcurrent"*`Ҫ$0JlD"Ninsert.o؂%D\ת`$)")p(jN")l$)Ց")S#AB`"ҩ$)ԩ!(R")l%jp`*Rp")D$*`Ԫp!(")p(jlNө"*pg $*l%jpNdo.insbp (jN"p(jTN"*L$*P#B"*Pp(jlNҩ#A$LmPl rp(jN")p(j NJf rp(jN"p$(jlNґ(*P&)$"*LpI8N"Ll$)ժLժPNNqdo.delb"L#jPp(jN"*`$0JlD"p(jlN#Arp(jNtg r p(jNrp(jN")$)m`Ncopy.cu$v0(S%ChB#C`&rҩ$ԁr0($*dԩ(R")lt%B"*p(jN"*p(j`NNNqdo.appe"*p(jN"pINNdo.inseBrp (jN$*"*p (j|Np (jNp (jN"*p IlNNdo.insf"*p (jN"BJf r p(jN"p(jNp(jN#Atg|r%Ah`8 ho r#A`Rh"*dҪh p(jN#Ar g tf"*p(jN"*p(jN"*p(j`N`tp(jN"*p(jNJg rp(jNNNqlocate.*|0X#F.p0x#@#@Jf o#@J g")lr``Jlr`r#A#i `JgL")ҩ$)ԁr0(p0(j,N$ԩv0(#A$"p4(j,N$g`L`0")ҩ$)ԁr0($ԩv0(g`R") lr")`"J g rҩ`")S#A`Nfind.st$*Ԫԁ#B#jvmF#C`^"*`ҩ$0JlD#Br҂()&$)"*p$IN#A Jl4JgRB`S#|"*pmJlJ lB")!l`h")\g Xf rp$(jNJg")p$(jlNө`")#prҩ()&$)"*p$IN#A J m")p$IHN")p$IN%iBrp$(jN") S#AB`p,(jNR")lNdo.exch$*v0((*z0H#C#Erp(j\N"*p(jNr%AJgtԪGd& rp(jdNrp((jNp(j,N#A tԪGp& rp(jdNrN f*t#B#i`p$(jNR")lNrY g r p(jNr%At#B #i`$*"*p (j|Np (jNR ") lt#B #i`0$*"*p (j|N"*ҩ t0"p (jNR ") l"*p(jNBN Exchange? numtostvd#Cx#D `L$)")p(jNt0҂&֩ 8$)")p(jN#At ")p(jN#AR r l$("NNqdisplayG* #E$rp (jdNJgtrҩ#A$v0(#Cxo#Dr#A#i `$")ҩt0") ҩR") l#i $) (&)$rp (jdNNUnsetdo.showr҉"G& t"p<(jdN&*trp<(jdNG& trp<(jdN$*H"pPIN&trp<(jdNG& trp<(jdNrҪp$"pPIN&trp<(jdNG& trp<(jdNrҪt$"pPIN&trp<(jdN(G& $*Lrptn66{N.4:TnZZZ rNNqmy.vdu.Jftr p(j8NJfr`\trp(j8N#A fr`< Sfr`* (fr'`"<©#A$<ĩv#B Jg``r`r`r`r`r`r`r`r`r`r`r`r `r`r`r `r`"<`"<`v"<`l") t;mv'n6{NNNqaH lib0TEXTGLIBVERAESPB,VDIPBCALLAES CALLVDI"0<sNBNu"0<NBNu1.01DT+\T+\T+\T+\T+DT+\T+\T+\T+\T+\T+8lib1TEXTVDIPBCALLVDIvs_clipvst_unload_fontsvst_load_fontsv_clrwkv_clsvwklv_opnvwkAT+!o "o1Q8!oBh.1| 21|d,NT+AT+CD!ICD!I "o282< "o CX/ ED2Q$_HNuAT+1o8Bh.Bh21|e,NT+HNuAT+1o8Bh.Bh21|,NT+HNuAT+1o D1o8Bh.1|21|w,NT+0(DHNuAT+1o D1o8Bh.1|21|x,NT+HNuAT+!o 1o D1o81|.1|21|,NT+AT+CD!IHNulib2TEXTVDIPBCALLVDI v_justifiedv_rfboxNv_rbox v_ellipsev_ellpiexv_ellarc&v_circle v_pieslice|v_arcv_barvr_recfl v_contourfillh v_cellarray v_fillareav_gtextt v_pmarker:v_plineAT+!o 1o .1o8Bh21|,NT+AT+CD!IHNuAT+!o 1o .1o8Bh21|,NT+AT+CD!IHNuAT+1oF1o D1o8r"oRJf1A2p"o/ ED4Q$_1|.1|,NT+HNuAT+!o 1o .1o8Bh21| ,NT+AT+CD!IHNuAT+!o1o@ /!@>1o<"/ !A:!o1o81|.!@21| ,NT+AT+CD!ICD!IHNuAT+1oD1oH1o D1o81|.1|21|g,NT+HNuAT+!o1o81|.Bh21|r,NT+AT+CD!IHNuAT+!o1o81|.Bh21|61| ,NT+AT+CD!IHNuAT+1oF1oD1oP1oF1o D1o81|.1|21|6BhHBhJBhLBhNBhR1| ,NT+HNuAT+1oF1oD1oP1oF1o D1o81|.1|21|6BhHBhJBhLBhNBhR1| ,NT+HNuAT+1oL1oF1o D1o81|.Bh21|6BhHBhJBhN1| ,NT+HNuAT+1oF1oD1oJ1oH1oF1o D1o81|.1|21|61| ,NT+HNuAT+1oF1oD1oJ1oH1oF1o D1o81|.1|21|61| ,NT+HNuAT+1oJ1oH1oF1o D1o81|.Bh21|61| ,NT+HNuAT+!o1o81|.Bh21|61| ,NT+AT+CD!IHNuAT+!o1o81|.Bh21| 61| ,NT+AT+CD!IHNuAT+1oF1oD1oH1oF1o D1o81|.r"oRJf1A2p"o/ EH4Q$_h21| 61| ,NT+HNulib3TEXTVDIPBCALLVDI vsf_udpatl vsf_perimeter< vsf_color  vsf_style vsf_interior vst_alignmentd vst_effects4 vst_colorvst_font vst_rotation vst_pointN vrt_heigHt vsm_color vsm_heightvsm_typehvsl_ends6 vsl_color vsl_width vsl_udstyvsl_typevvs_color0 vswr_modeAT+1o D1o8Bh.1|21| ,NT+0(DHNuAT+1o D1o82<"o C/ EF4Q$_Bh.1|21|,NT+HNuAT+1o D1o8Bh.1|21|,NT+0(DHNuAT+1o D1o8Bh.1|21|q,NT+HNuAT+1o D1o8BhF1|.Bh21|,NT+0(DHNuAT+1o D1o8Bh.1|21|,NT+0(DHNuAT+1oF1o D1o8Bh.1|21|l,NT+HNuAT+1o D1o8Bh.1|21|,NT+0(DHNuAT+1o F1o81|.Bh21|,NT+0(FHNuAT+1o D1o8Bh.1|21|,NT+0(DHNuAT+1o F1o8BhD1|.Bh21| ,NT+AT+"o 2D"o2F"o2H"o2JHNuAT+1o D1o8Bh.1|21|k,NT+AT+"o 2D"o2F"o2H"o2J0(DHNuAT+1o D1o8Bh.1|21| ,NT+0(DHNuAT+1o D1o8Bh.1|21|,NT+0(DHNuAT+1o D1o8Bh.1|21|,NT+0(DHNuAT+1o D1o8Bh.1|21|j,NT+0(DHNuAT+1oF1o D1o8Bh.1|21|',NT+AT+"o2D"o2FHNuAT+1o D1o8Bh.1|21|,NT+0(DHNuAT+1o D1o8Bh.1|21|,NT+0(DHNuAT+1o D1o8Bh.1|21|,NT+0(DHNuAT+1o D1o8Bh.1|21|h,NT+0(DHNuAT+ /!@2!o1o8Bh.1|p,NT+AT+CD!IHNulib4TEXTVDIPBCALLVDI v_get_pixelvr_trnfm vrt_cpyfmN vro_cpyfmAT+!o>!o:!o 1o D1o81|.1|21|m,NT+AT+CD!IHNuAT+2<"oC/ EF4Q$_!o>!o:!o 1o D1o81|.1|21|y,NT+AT+CD!IHNuAT+!o >!o:1o8Bh.Bh21|n,NT+HNuAT+1oF1o D1o81|.Bh21|i,NT+AT+"o2D"o2FHNulib5TEXTVDIPBCALLVDIvq_key_svex_curv|vex_motvDvex_butv vq_mousev_hide_cv_show_czvex_timv:vsc_formAT+!o1o8Bh.1|%21|o,NT+AT+CD!IHNuAT+!o:1o8Bh.Bh21|v,NT+AT+"o2D"o ">HNuAT+1o D1o8Bh.1|21|z,NT+HNuAT+1o8Bh.Bh21|{,NT+HNuAT+1o8Bh.Bh21||,NT+AT+"o2D"o 2D"o2FHNuAT+!o:1o8Bh.Bh21|},NT+AT+"o ">HNuAT+!o:1o8Bh.Bh21|~,NT+AT+"o ">HNuAT+!o:1o8Bh.Bh21|,NT+AT+"o ">HNuAT+1o8Bh.Bh21|,NT+AT+"o2DHNulib6TEXTVDIPBCALLVDI vqt_fontinfod vqin_mode* vq_cellarrayvqt_namen vqt_width  vqt_extntvqt_attributes|vqf_attributesDvqm_attributesvql_attributesvq_colorZvq_extndAT+!o 1o D1o8Bh.1|21|f,NT+AT+CD!I 2< "o CZ/ ED2Q$_HNuAT+!o 1oF1o D1o8Bh.1|21|,NT+AT+CD!I HNuAT+!o 1o8Bh.Bh21|#,NT+AT+CD!I 2<"oC/ ED2Q$_HNuAT+!o 1o8Bh.Bh21|$,NT+AT+CD!I 2<"oC/ EF2Q$_HNuAT+!o 1o8Bh.Bh21|%,NT+AT+CD!I HNuAT+!o 1o8Bh.Bh21|&,NT+AT+CD!I 2<"oC / ED2Q$_HNuAT+!o !o1o8Bh.r"oRJf1A21|t,NT+AT+CD!ICD!IHNuAT+1o D1o8Bh.1|21|u,NT+AT+"o 2D"o2H"o2L0(DHNuAT+1o D1o8Bh.1|21|,NT+AT+2<"o C/ EF2Q$_0(DHNuAT+!o 1o<1o:!o1o81|.Bh21|,NT+AT+CD!ICD!I "o2>"o2@"o2BHNuAT+1o D1o8Bh.1|21|s,NT+AT+"o 2DHNuAT+1o8Bh.Bh21|,NT+AT+"o2Dr2<"oC/ EF2JZQ$_r2<"oC/ EH2JRQ$_HNuH gyXTVDIPBCALLVDIv_rmcur0v_dspcur vq_tabstatus vq_curaddressv_rvofffv_rvon< v_curtext vs_curaddressv_eeolv_eeosf v_curhome< v_curleft v_curright v_curdownv_curup v_enter_curj v_exit_cur@ vq_chcellsAT+1o8Bh.Bh21|61|,NT+AT+"o2D"o 2FHNuAT+1o8Bh.Bh21|61|,NT+HNuAT+1o8Bh.Bh21|61|,NT+HNuAT+1o8Bh.Bh21|61|,NT+HNuAT+1o8Bh.Bh21|61|,NT+HNuAT+1o8Bh.Bh21|61|,NT+HNuAT+1o8Bh.Bh21|61|,NT+HNuAT+1o8Bh.Bh21|61|,NT+HNuAT+1o8Bh.Bh21| 61|,NT+HNuAT+1o8Bh.Bh21| 61|,NT+HNuAT+1oF1o D1o8Bh.Bh21| 61|,NT+HNuAT+1o8r"oRJf1A2p"o/ ED4Q$_Bh.1| 61|,NT+HNuAT+1o8Bh.Bh21| 61|,NT+HNuAT+1o8Bh.Bh21|61|,NT+HNuAT+1o8Bh.Bh21|61|,NT+AT+"o2D"o 2FHNuAT+1o8Bh.Bh21|61|,NT+HNuAT+1oF1oD1o8Bh.Bh21|61|,NT+HNuAT+1o8Bh.Bh21|61|,NT+lib8TEXTAESPBCALLAES appl_exitl appl_trecord. appl_tplay appl_find appl_writer appl_read. appl_initAT+Bh1|Bh1| NT+AT+0(0HNuAT+!o 01o 21o01|1|1|1| NT+AT+0(0HNuAT+!o 01o 21o01|1|1|1| NT+AT+0(0HNuAT+1o0Bh1|Bh1| NT+AT+0(0HNuAT+1o21o 0!o01|1|1|1|NT+AT+0(0HNuAT+1o 0!o01|1|1|1|NT+AT+0(0HNuAT+Bh1|Bh1|NT+AT+0(0HNulib9TEXTAESPBCALLAES evnt_dclick8 evnt_multip evnt_timer4 evnt_mesag evnt_mouse evnt_button. evnt_keybdAT+Bh1|Bh1|NT+AT+0(0HNuAT+1o41o 21o01|1|Bh1|NT+AT+"o22"o24"o26"o280(0HNuAT+1o81o61o41o 21o01|1|Bh1|NT+AT+"o22"o24"o 26"o$280(0HNuAT+!o0Bh1|1|1|NT+AT+0(0HNuAT+1o 21o01|1|Bh1|NT+AT+0(0HNuAT+1oFN1oBL!o<01o:J1o6H1o2F1o.D1o*B1o&@1o">1o<1o:1o81o61o41o 21o01|1|1|1|NT+AT+"oH22"oL24"oP26"oT28"oX2:"o\2<0(0HNuAT+1o 21o01|1|Bh1|NT+AT+0(0HNulib10TEXTAESPBCALLAES menu_registerN menu_text  menu_tnormal menu_ienable menu_icheck>menu_barAT+1o 0!o01|1|1|1|NT+AT+0(0HNuAT+1o21o 0!o01|1|1|1|NT+AT+0(0HNuAT+1o21o 0!o01|1|1|1| NT+AT+0(0HNuAT+1o21o 0!o01|1|1|1|!NT+AT+0(0HNuAT+!o 41o 0!o01|1|1|1|"NT+AT+0(0HNuAT+!o01o01|1|1|1|#NT+AT+0(0HNulib11TEXTAESPBCALLAES objc_change objc_edit objc_order| objc_offset. objc_find objc_draw objc_deleteDobjc_addAT+1o21o 0!o01|1|1|1|(NT+AT+0(0HNuAT+1o 0!o01|1|1|1|)NT+AT+0(0HNuAT+1o:1o81o61o41o21o 0!o01|1|1|1|*NT+AT+0(0HNuAT+1o61o41o21o 0!o01|1|1|1|+NT+AT+0(0HNuAT+1o 0!o01|1|1|1|,NT+AT+"o 22"o240(0HNuAT+1o21o 0!o01|1|1|1|-NT+AT+0(0HNuAT+1o61o41o21o 0!o01|1|1|1|.NT+AT+"o220(0HNuAT+1o&>1o"<1o:1o81o61o41o21o 0!o01|1|1|1|/NT+AT+0(0HNulib12TEXTAESPBCALLAES form_center form_error form_alert form_dial>form_doAT+1o 0!o01|1|1|1|2NT+AT+0(0HNuAT+1o&@1o">1o<1o:1o81o61o41o 21o01| 1|1|1|3NT+AT+0(0HNuAT+!o01o01|1|1|1|4NT+AT+0(0HNuAT+1o01|1|Bh1|5NT+AT+0(0HNuAT+!o0Bh1|1|1|6NT+AT+"o22"o 24"o26"o280(0HNulib13TEXTAESPBCALLAES graf_mkstate graf_mouse graf_handlep graf_slidebox& graf_watchboxgraf_shrinkbox| graf_growbox graf_movebox graf_dragboxXgraf_rubberboxAT+1o61o41o 21o01|1|Bh1|FNT+AT+"o22"o240(0HNuAT+1o">1o<1o:1o81o61o41o 21o01|1|Bh1|GNT+AT+"o$22"o(240(0HNuAT+1o:1o81o61o41o 21o01|1|Bh1|HNT+AT+0(0HNuAT+1o">1o<1o:1o81o61o41o 21o01|1|Bh1|INT+AT+0(0HNuAT+1o">1o<1o:1o81o61o41o 21o01|1|Bh1|JNT+AT+0(0HNuAT+1o61o41o 2!o01|1|1|1|KNT+AT+0(0HNuAT+1o41o21o 0!o01|1|1|1|LNT+AT+0(0HNuAT+Bh1|Bh1|MNT+AT+"o22"o24"o 26"o280(0HNuAT+!o01o01|1|1|1|NNT+AT+0(0HNuAT+Bh1|Bh1|ONT+AT+"o22"o24"o 26"o280(0HNulib14TEXTAESPBCALLAES scrp_write6 scrp_readAT+!o0Bh1|1|1|PNT+AT+0(0HNuAT+!o0Bh1|1|1|QNT+AT+0(0HNulib15TEXTAESPBCALLAES fsel_inputAT+!o4!o0Bh1|1|1|ZNT+AT+"o 220(0HNulib16TEXTAESPBCALLAES wind_calc* wind_update wind_findwind_setdwind_get wind_delete wind_close wind_openN wind_createAT+1o81o61o41o 21o01|1|Bh1|dNT+AT+0(0HNuAT+1o81o61o41o 21o01|1|Bh1|eNT+AT+0(0HNuAT+1o01|1|Bh1|fNT+AT+0(0HNuAT+1o01|1|Bh1| XgNT+AT+0(0HNuAT+1o 21o01|1|Bh1|hNT+AT+"o 22"o24"o26"o280(0HNuAT+1o:1o81o61o41o 21o01|1|Bh1|iNT+AT+0(0HNuAT+1o 21o01|1|Bh1|jNT+AT+0(0HNuAT+1o01|1|Bh1|kNT+AT+0(0HNuAT+1o:1o81o61o41o 21o01|1|Bh1|lNT+AT+"o22"o 24"o$26"o(280(0HNulib17TEXTAESPBCALLAES rsrc_obfix rsrc_saddr rsrc_gaddrd rsrc_free6 rsrc_loadAT+!o0Bh1|1|1|nNT+AT+0(0HNuAT+Bh1|Bh1|oNT+AT+0(0HNuAT+1o 21o01|1|Bh1| 1|pNT+AT+"o "0Bh 0(0HNuAT+!o 01o 21o01|1|1|1|qNT+AT+0(0HNuAT+1o 0!o01|1|1|1|rNT+AT+0(0HNulib18TEXTAESPBCALLAES shel_envrn shel_find shel_write< shel_readAT+!o4!o0Bh1|1|1|xNT+AT+0(0HNuAT+!o4!o01o41o 21o01|1|1|1|yNT+AT+0(0HNuAT+!o0Bh1|1|1||NT+AT+0(0HNuAT+!o4!O0Bh1|1|1|}LT+AT+0(0HNu*H * F* * Metacomco interface library to the GEM system * * F* * The Metacomco mechanism for calling C is to place all arguments on * * the SP stack in reverse order. The arguments are all passed as * * longwords. Some C compilers (eg DRI C => graphics and GEM) require * * word arguments. This library provides the necessary interface code. * * F* * Section 0: Shared routines and data structures * * F* * (C) Copyright 1985 METACOMCO plc. All Rights reserved. * *H * ,Last Changed 28 FEB 86 * *H XDEF CALLVDI,CALLAES,VDIPB,AESPB,GLIBVER * Sizes of arrays in words COS EQU 12 IIS EQU 256 PIS EQU 256 IOS EQU 256 POS EQU 256 GLS EQU 15 *H * CALLVDI -- Called from macro generated code with A0 holding VDI * parameter block *H CALLVDI MOVE.L A0,D1 MOVE.W #$73,D0 TRAP #2 RTS *H * CALLAES -- Called from macro generated code with A0 holding VDI * parameter block *H CALLAES MOVE.L A0,D1 MOVE.W #$C8,D0 TRAP #2 RTS * The Version number GLIBVER DC.L '1.01' * The parameter block for VDI VDIPB DC.L COSP DC.L IISP DC.L PISP DC.L IOSP DC.L POSP * The parameter block for AES AESPB DC.L COSP DC.L GLSP DC.L IISP DC.L IOSP DC.L PISP DC.L POSP * The area arrays COSP DS.W COS IISP DS.W IIS PISP DS.W PIS IOSP DS.W IOS POSP DS.W POS GLSP DS.W GLS END + !*H * F* * Metacomco interface library to the GEM system * * F* * The Metacomco mechanism for calling C is to place all arguments on * * the SP stack in reverse order. The arguments are all passed as * * longwords. Some C compilers (eg DRI C => graphics and GEM) require * * word arguments. This library provides the necessary interface code. * * F* * Section 1: VDI Control Functions "* * F* * (C) Copyright 1985 METACOMCO plc. All Rights reserved. * *H * ,Last Changed 28 FEB 86 * *H INCLUDE "vdimacs" PAGE *H * Open virtual workstation *H * v_opnvwk( work_in, &handle, work_out ) * * word work_in[11] Input array specifying options * word handle Pointer to handle returned from AES * word work_out[57] Output array * Input values in work_in are as follows * * work_in[0] Device id (1 for the screen) * work_in[1] Default line type (1 for solid) * work_in[2] Polyline colour (1 for black) * work_in[3] Marker type (1) * work_in[4] Polymarker colour (1 for black) * work_in[5] Text font (1) * work_in[6] Text colour (1 for black) * work_in[7] Fill interior style (1) * work_in[8] Fill style (1) * work_in[9] Fill colour (1 for black) * work_in[10] Coordinate type (0 for normalised, 2 for raster) * Various values are placed in work_out. Some of the more interesting * are detailed below. Note that values are filled in to work_out up to * work_out[56]. * * work_out[0] Max x coordinate * work_out[1] Max y coordinate * work_out[13] Max number of colours available * work_out[45] Min character width * work_out[46] Min character height * work_out[47] Max character width * work_out[48] Max character height *H LIBFNV v_opnvwk,3 LABEL workout LONG IO LABEL handle LPOINTW CO,6 LONG II SETPTS 0,11 SETEXIT CALLW v_opnvwk,100 SPOINTW CO,6,handle COPYW PO,0,12,workout,44,'BACK' RETURN *H * Close virtual workstation *H * v_clsvwk( handle ) * word handle Handle returned by v_opnvwk *H LIBFNV v_clsvwk,1 WORD CO,6 SETPTS 0,0 CALLW v_clsvwk,101 RETURN *H * Clear screen to current background colour *H * v_clrwk( handle ) * word handle Handle returned by v_opnvwk *H LIBFNV v_clrwk,1 WORD CO,6 SETPTS 0,0 CALLW v_clrwk,3 RETURN *H * Loads all fonts (other than system fonts, which are already loaded) * *A * numfonts = vst_load_fonts( handle, select ) * long numfonts Number of extra fonts loaded (possibly zero) * word handle Device handle * long select Reserved for future use *H LIBFNR vst_load_fonts,2 WORD II,0 WORD CO,6 SETPTS 0,1 CALLW vst_load_fonts,119 RETURN IO,0 *H * Unloads all fonts *H * vst_unload_fonts( handle, select ) * word handle Device handle * long select Reserved for future use *H LIBFNV vst_unload_fonts,2 WORD II,0 WORD CO,6 SETPTS 0,1 CALLW vst_unload_fonts,120 RETURN *H * Enable clipping to specified rectangle, or disable it. *H * vs_clip( handle, flag, work_in ) * word handle Device handle * long flag 0 to turn clipping off, 1 to turn on * word work_in[4] Coordinates for clip rectangle (x,y,x',y') *H LIBFNV vs_clip,3 LONG PI WORD II,0 WORD CO,6 SETPTS 2,1 CALLW vs_clip,129 RETURN END *H * F* * Metacomco interface library to the GEM system * * F* * The Metacomco mechanism for calling C is to place all arguments on * * the SP stack in reverse order. The arguments are all passed as * * longwords. Some C compilers (eg DRI C => graphics and GEM) require * * word arguments. This library provides the necessary interface code. * * F* * Section 10: AES Menu Functions $* * F* * (C) Copyright 1985 METACOMCO plc. All Rights reserved. * *H * ,Last Changed 28 FEB 86 * *H INCLUDE "aesmacs" PAGE *H * Display or erase the menu bar *H * rc = menu_bar( tree, flag ) * * long tree The address of the object tree for this menu * long flag 0 to erase bar, 1 to show it * long rc >0 if no error *H LIBFNR menu_bar,2 WORD II,0 LONG AI,0 SETPTS 1,1,1 CALLW menu_bar,30 RETURN IO,0 *H * Display or erase a check mark next to menu item *H * rc = menu_icheck( tree, item, flag ) * * long tree The address of the object tree for this menu * long item Number identifying the menu item * long flag 0 to erase check mark, 1 to add one * long rc >0 if no error *H LIBFNR menu_icheck,3 WORD II,1 WORD II,0 LONG AI,0 SETPTS 2,1,1 CALLW menu_icheck,31 RETURN IO,0 * O*: * Enable or disable a menu item *H * rc = menu_ienable( tree, item, flag ) * * long tree The address of the object tree for this menu * long item Number identifying the menu item * long flag 0 to disable item, 1 to enable it * long rc >0 if no error *H LIBFNR menu_ienable,3 WORD II,1 WORD II,0 LONG AI,0 SETPTS 2,1,1 CALLW menu_ienable,32 RETURN IO,0 *H * Display menu title in normal or reverse video *H * rc = menu_tnormal( tree, title, flag ) * * long tree The address of the object tree for this menu * long title Number identifying the menu * long flag 0 for reverse video, 1 for normal * long rc >0 if no error *H LIBFNR menu_tnormal,3 WORD II,1 WORD II,0 LONG AI,0 SETPTS 2,1,1 CALLW menu_tnormal,33 RETURN IO,0 *H * Change the text of a menu item *H * rc = menu_text( tree, item, text ) * * long tree The address of the object tree for this menu * long item Number identifying the menu item * byte *text The new text for the item. This must be the same * length as the text it is replacing. * long rc >0 if no error *H LIBFNR menu_text,3 LONG AI,2 WORD II,0 LONG AI,0 SETPTS 1,1,2 CALLW menu_text,34 RETURN IO,0 *H * Install desk accessory menu item string on the Desk menu *H * menuid = menu_register( id, text ) * * long id The application id for this program (see appl_init). * byte *text The string to be placed in the Desk menu. * long menuid The menu item id (0-5) or -1 for error. *H LIBFNR menu_register,2 LONG AI,0 WORD II,0 SETPTS 1,1,1 CALLW menu_register,35 RETURN IO,0 END /*H * F* * Metacomco interface library to the GEM system * * F* * The Metacomco mechanism for calling C is to place all arguments on * * the SP stack in reverse order. The arguments are all passed as * * longwords. Some C compilers (eg DRI C => graphics and GEM) require * * word arguments. This library provides the necessary interface code. * * F* * Section 11: AES Object functions "* * F* * (C) Copyright 1985 METACOMCO plc. All Rights reserved. * *H * ,Last Changed 2 8 FEB 86 * *H INCLUDE "aesmacs" PAGE *H * Add an object to the object tree *H * rc = objc_add( tree, parent, child ) * * long tree Address of object tree containing parent and child * long parent The object to be added to * long child The object to add * long rc >0 if no error *H LIBFNR objc_add,3 WORD II,1 WORD II,0 LONG AI,0 SETPTS 2,1,1 CALLW objc_add,40 RETURN IO,0 *H * Delete an object from the object tree *H * rc = objc_delete( tree, object ) * * long tree Address of object tree containing object * long object The object to be deleted * long rc >0 if no error *H LIBFNR objc_delete,2 WORD II,0 LONG AI,0 SETPTS 1,1,1 CALLW objc_delete,41 RETURN IO,0 *H * Redraw the objects in a subtree using specified clip rectangle *H * rc = objc_draw( tree, object, depth, x, y, w, h ) * * long tree Address of object tree * long object The starting object in the tree * long depth The number of levels to be drawn (1 for this alone) * long x,y,w,h Coordinates, width and height of clip rectangle * long rc >0 if no error *H LIBFNR objc_draw,7 WORD II,5 WORD II,4 WORD II,3 WORD II,2 WORD II,1 WORD II,0 LONG AI,0 SETPTS 6,1,1 CALLW objc_draw,42 RETURN IO,0 *H * Find an object under the mouse cursor *H * obj = objc_find( tree, object, depth, x, y ) * * long tree Address of object tree to be searched * long object The starting object in the tree * long depth The number of levels to be searched (1 for this alone) * long x,y Coordinates of mouse cursor * long obj Object number of found object, or -1 if not found *H LIBFNR objc_find,5 WORD II,3 WORD II,2 WORD II,1 WORD II,0 LONG AI,0 SETPTS 4,1,1 CALLW objc_find,43 RETURN IO,0 *H * Enquire the position of an object *H * rc = objc_offset( tree, object, &x, &y ) * * long tree Address of object tree containing object * long object The object to be located * word x,y The coordinates of the object * long rc >0 if no error *H LIBFNR objc_offset,4 LPOINTW y LPOINTW x SETEXIT WORD II,0 LONG AI,0 SETPTS 1,3,1 CALLW objc_offset,44 SPOINTW IO,1,x SPOINTW IO,2,y RETURN IO,0 *H * Move an object to a new position in parent's list of children *H * rc = objc_order( tree, object, position ) * * long tree Address of object tree * long object The object to be moved * long position Place to put object. This is 0 for the bottom level, * 1 for one level up from bottom and so on. The value * -1 can be used to indicate the top of the tree. * long rc >0 if no error *H LIBFNR objc_order,3 WORD II,1 WORD II,0 LONG AI,0 SETPTS 2,1,1 CALLW objc_order,45 RETURN IO,0 *H * Allow the user to edit text within an object *H * rc = objc_edit( tree, object, char, index, type, &newindex ) * * long tree Address of object tree * long object The object containing the text to be edited * long char The character typed by the user * long index Index of next character position in string * long type The type of editing to be performed * 1 Combine values, turn cursor on * 2 Validate char, update text and display it * 3 Turn off cursor * word newindex The new character position in the string * long rc >0 if no error *H LIBFNR objc_edit,6 LPOINTW newindex WORD II,3 WORD II,2 WORD II,1 WORD II,0 LONG AI,0 SETPTS 4,2,1 CALLW objc_edit,46 SPOINTW IO,1,newindex RETURN IO,0 *H * Change the state of an object, and possibly redraw it *H * rc = objc_change( tree, object, dummy, x, y, w, h, state, redraw ) * * long tree Address of object tree * long object The object to be changed * long dummy A reserved value which must be zero * long x,y,w,h Coordinates, width and height of clip rectangle * long state The value to which the ob_state field must be set * long redraw Set to 1 if the object is to be redrawn; 0 otherwise * long rc >0 if no error *H LIBFNR objc_change,9 WORD II,7 WORD II,6 WORD II,5 WORD II,4 WORD II,3 WORD II,2 WORD II,1 WORD II,0 LONG AI,0 SETPTS 8,1,1 CALLW objc_change,47 RETURN IO,0 END *H * F* * Metacomco interface library to the GEM system * * F* * The Metacomco mechanism for calling C is to place all arguments on * * the SP stack in reverse order. The arguments are all passed as * * longwords. Some C compilers (eg DRI C => graphics and GEM) require * * word arguments. This library provides the necessary interface code. * * F* * Section 12: AES Form library &* * F* * (C) Copyright 1985 METACOMCO plc. All Rights reserved. * *H * ,Last Changed 2 8 FEB 86 * *H INCLUDE "aesmacs" PAGE *H * Start an interaction with the user *H * obj = form_do( tree, object ) * * long tree The object tree that draws this form * long object The starting object which is to be made active when * the form is displayed. The object must be editable text, * or else pass -1 if no suitable object exists. * long obj The object number which caused the interaction to finish. *H LIBFNR form_do,2 WORD II,0 LONG AI,0 SETPTS 1,1,1 CALLW form_do,50 RETURN IO,0 *H * Handle dialogue boxes *H * rc = form_dial( flag, x1, y1, w1, h1, x2, y2, w2, h2 ) * * long flag Specifies the action to be taken as follows: * 0 Reserve screen space for dialog box * 1 Draw an expanding box from x1 to x2 * 2 Draw a shrinking box from x2 to x1 * 3 Terminate dialogue and send redraw message to myself * long x1,y1,w1,h1 Coordinates, width and height of smallest box size * long x2,y2,w2,h2 Coordinates, width and height of largest box size * long rc >0 if no error *H LIBFNR form_dial,9 WORD II,8 WORD II,7 WORD II,6 WORD II,5 WORD II,4 WORD II,3 WORD II,2 WORD II,1 WORD II,0 SETPTS 9,1,1 CALLW form_dial,51 RETURN IO,0 *H * Display an alert message on the screen *H * button = form_alert( defbutton, text ) * * long defbutton The default exit button for the form. This is 0 for * no exit button, 1 for the first and so on. * byte *text The text to be displayed * long button The exit button selected by the user (as above). *H LIBFNR form_alert,2 LONG AI,0 WORD II,0 SETPTS 1,1,1 CALLW form_alert,52 RETURN IO,0 *H * Display an alert according to the error number *H * button = form_error( n ) * * long n The error number (DOS error code) * long button The exit button selected by the user *H LIBFNR form_error,1 WORD II,0 SETPTS 1,1,0 CALLW form_error,53 RETURN IO,0 *H * Calculate the position of a form centered on the screen *H * form_center( tree, &x, &y, &w, &h ) * * long tree The object tree that draws this form * word x,y,w,h The coordinates, width and height of where the form * should be displayed in order to centre it. *H LIBFNR form_center,5 LPOINTW h LPOINTW w LPOINTW y LPOINTW x SETEXIT LONG AI,0 SETPTS 0,5,1 CALLW form_center,54 SPOINTW IO,1,x SPOINTW IO,2,y SPOINTW IO,3,w SPOINTW IO,4,h RETURN IO,0 END s t*H * F* * Metacomco interface library to the GEM system * * F* * The Metacomco mechanism for calling C is to place all arguments on * * the SP stack in reverse order. The arguments are all passed as * * longwords. Some C compilers (eg DRI C => graphics and GEM) require * * word arguments. This library provides the necessary interface code. * * F* * Section 13: AES Graphics Library "* * F* * (C) Copyright 1985 METACOMCO plc. All Rights reserved. * *H * ,Last Changed 28 FEB 86 * *H INCLUDE "aesmacs" PAGE *H * Draw a rubber box, expanding and contracting as user drags it *H * rc = graf_rubberbox( x, y, w, h, &fw, &fh ) * * long x,y Coordinates of box's upper left corner * long w,h Minimum width and height of box * word fw,fh Final width and height when the user has finished * long rc >0 if no error *H LIBFNR graf_rubberbox,6 LPOINTW fh LPOINTW fw SETEXIT WORD II,3 WORD II,2 WORD II,1 WORD II,0 SETPTS 4,3,0 CALLW graf_rubberbox,70 SPOINTW IO,1,fw SPOINTW IO,2,fh RETURN IO,0 *H * Allow the user to drag a box within a rectangle *H * rc = graf_dragbox( bw, bh, bx, by, x, y, w, h, &fx, &fy ) * * long bw,bh Width and height of box to be dragged * long bx,by Coordinates of box's upper left corner * long x,y,w,h Coordinates, width and height of bounding rectangle * word fx,fy Final coordinates when the user has finished * long rc >0 if no error *H LIBFNR graf_dragbox,10 LPOINTW fy LPOINTW fx SETEXIT WORD II,7 WORD II,6 WORD II,5 WORD II,4 WORD II,3 WORD II,2 WORD II,1 WORD II,0 SETPTS 8,3,0 CALLW graf_dragbox,71 SPOINTW IO,1,fx SPOINTW IO,2,fy RETURN IO,0 *H * Draw a box moving from one place to another *H * rc = graf_movebox( w, h, sx, sy, dx, dy ) * * long w,h Width and height of box * long sx,sy Source coordinates of box's upper left corner * long dx,dy Destination coordinates * long rc >0 if no error *H LIBFNR graf_movebox,6 WORD II,5 WORD II,4 WORD II,3 WORD II,2 WORD II,1 WORD II,0 SETPTS 6,1,0 CALLW graf_movebox,72 RET qURN IO,0 *H * Draw an expanding box outline *H * rc = graf_growbox( sx, sy, sw, sh, fx, fy, fw, fh ) * * long sx,sy,sw,sh Coordinates, width and height of box at start * long fx,fy,fw,fh Coordinates, width and height of box at finish * long rc >0 if no error *H LIBFNR graf_growbox,8 WORD II,7 WORD II,6 WORD II,5 WORD II,4 WORD II,3 WORD II,2 WORD II,1 WORD II,0 SETPTS 8,1,0 CALLW graf_growbox,73 RETURN IO,0 *H * Draw a shrinking box outline *H * rc = graf_shrinkbox( fx, fy, fw, fh, sx, sy, sw, sh ) * * long fx,fy,fw,fh Coordinates, width and height of box at finish * long sx,sy,sw,sh Coordinates, width and height of box at start * long rc >0 if no error *H LIBFNR graf_shrinkbox,8 WORD II,7 WORD II,6 WORD II,5 WORD II,4 WORD II,3 WORD II,2 WORD II,1 WORD II,0 SETPTS 8,1,0 CALLW graf_shrinkbox,74 RETURN IO,0 *H * Track mouse moving in and out of object *H * pos = graf_watchbox( tree, object, instate, outstate ) * * long tree The object tree containing the object * long object The object to be watched * long instate The state of the object when the mouse pointer * is inside it. This uses bits as follows: * 0 Normal * 1 Selected * 2 Crossed * 3 Checked * 4 Disabled * 5 Outlined * 6 Shadowed * long outstate The state of the object when the pointer is outside it. * long pos The position of the mouse when the button was released. * This is 0 if it was outside the object, 1 otherwise. *H LIBFNR graf_watchbox,4 WORD II,3 WORD II,2 WORD II,1 LONG AI,0 SETPTS 4,1,1 CALLW graf_watchbox,75 RETURN IO,0 *H * Track a sliding box within a parent *H * pos = graf_slidebox( tree, parent, object, direction ) * * long tree The object tree containing the objects * long parent The parent object * long object The object to be slid * long direction 0 for horizontal, 1 for vertical * long pos Position of sliding box with respect to parent, in the * range 0-1000. 0 is the left or upper edge of the parent. *H LIBFNR graf_slidebox,4 WORD II,2 WORD II,1 WORD II,0 LONG AI,0 SETPTS 3,1,1 CALLW graf_slidebox,76 RETURN IO,0 *H * Return the VDI handle used by the AES *H * handle = graf_handle( &cw, &ch, &bw, &bh ) * * word cw,ch Width and height of the system font character cell * word bw,bh Width and height of a box large enough to hold a * system font character * long handle The VDI handle which can be used in subsequent calls * to the VDI library. *H LIBFNR graf_handle,4 V LPOINTW bh LPOINTW bw LPOINTW ch LPOINTW cw SETEXIT SETPTS 0,5,0 CALLW graf_handle,77 SPOINTW IO,1,cw SPOINTW IO,2,ch SPOINTW IO,3,bw SPOINTW IO,4,bh RETURN IO,0 *H * Change the shape of the mouse cursor *H * rc = graf_mouse( code, buffer ) * * long code A code value for the mouse shape. This is one of * 0 Arrow * 1 Vertical bar (text cursor) * 2 Busy Bee * 3 Pointing hand * 4 Flat hand * 5 Thin cross-hair * 6 Thick cross-hair * 7 Outline cross-hair * 255 Use the shape pointed at by buffer * 256 Hide mouse cursor * 257 Show mouse cursor * long buffer A pointer to a 35 word buffer area holding a suitable * mouse definition. Only used when code is 255. * long rc >0 if no error *H LIBFNR graf_mouse,2 LONG AI,0 WORD II,0 SETPTS 1,1,1 CALLW graf_mouse,78 RETURN IO,0 *H * Enquire the current position of the mouse and keyboard shift keys *H * graf_mkstate( &x, &y, &button, &kstate ) * * word x,y Coordinates of mouse * word button State of mouse buttons. See evnt_button for details. * word kstate State of keyboard shift keys. See evnt_button. *H LIBFNR graf_mkstate,4 LPOINTW kstate LPOINTW button LPOINTW y LPOINTW x SETEXIT SETPTS 0,5,0 CALLW graf_mkstate,79 SPOINTW IO,1,x SPOINTW IO,2,y SPOINTW IO,3,button SPOINTW IO,4,kstate RETURN IO,0 END *H * F* * Metacomco interface library to the GEM system * * F* * The Metacomco mechanism for calling C is to place all arguments on * * the SP stack in reverse order. The arguments are all passed as * * longwords. Some C compilers (eg DRI C => graphics and GEM) require * * word arguments. This library provides the necessary interface code. * * F* * Section 14: AES Scrap Library %* * F* * (C) Copyright 1985 METACOMCO plc. All Rights reserved. * *H * ,Last Changed 28 FEB 86 * *H INCLUDE "aesmacs" PAGE *H * Read the current scrap directory name *H * rc = scrp_read( buffer ) * * long buffer Pointer to space into which scrap directory name * is to be copied. * long rc >0 if no error *H LIBFNR scrp_read,1 LONG AI,0 SETPTS 0,1,1 CALLW scrp_read,80 RETURN IO,0 *H * Write a new scrap directory name *H * rc = scrp_write( buffer ) * * long buffer Pointer to buffer containing new name * long rc  >0 if no error *H LIBFNR scrp_write,1 LONG AI,0 SETPTS 0,1,1 CALLW scrp_write,81 RETURN IO,0 END *H * F* * Metacomco interface library to the GEM system * * F* * The Metacomco mechanism for calling C is to place all arguments on * * the SP stack in reverse order. The arguments are all passed as * * longwords. Some C compilers (eg DRI C => graphics and GEM) require * * word arguments. This library provides the necessary interface code. * * F* * Section 15: AES File Selector Library * * F* * (C) Copyright 1985 METACOMCO plc. All Rights reserved. * *H * ,Last Changed 28 FEB 86 * *H INCLUDE "aesmacs" PAGE *H * Display file selector box and allow the user to interact with it *H * rc = fsel_input( pathspec, filename, &button ) * * long pathspec A pointer to 64 bytes containing pathname and wildcard * specification. The filenames which match this are * displayed in a dialog box, and the user may choose one. * When the user finishes the interaction this buffer is * updated with the selection indicated by the user. * long filename A pointer to 16 bytes which specifies the name of the * file to be displayed initially. It may be null. When * the user finishes this buffer will be updated with the * filename selected by the user. * word button This is 0 if the user selected cancel, 1 otherwise. * long rc >0 if no error *H LIBFNR fsel_input,3 LPOINTW button SETEXIT LONG AI,2 LONG AI,0 SETPTS 0,2,2 CALLW fsel_input,90 SPOINTW IO,1,button RETURN IO,0 END lib16.asm ,i*H * F* * Metacomco interface library to the GEM system * * F* * The Metacomco mechanism for calling C is to place all arguments on * * the SP stack in reverse order. The arguments are all passed as * * longwords. Some C compilers (eg DRI C => graphics and GEM) require * * word arguments. This library provides the necessary interface code. * * F* * Section 16: AES Window Functions "* *  *H * F* * Metacomco interface library to the GEM system * * F* * The Metacomco mechanism for calling C is to place all arguments on * * the SP stack in reverse order. The arguments are all passed as * * longwords. Some C compilers (eg DRI C => graphics and GEM) require * * word arguments. This library provides the necessary interface code. * * F* * Section 16: AES Window Functions "* * F* * (C) Copyright 1985 METACOMCO plc. All Rights reserved. * *H * ,Last Changed 28 FEB 86 * *H INCLUDE "aesmacs" PAGE *H * Create (but do not display) a new window *H * wid = wind_create( flags, x, y, w, h ) * * long flags A flag word indicating options for the window. Bits are * as follows, with a bit set if the window is to have the * feature. * 0 Title bar with name * 1 Close symbol * 2 Full size symbol * 3 Move box symbol * 4 Information line * 5 Resize symbol * 6 Up-arrow symbol * 7 Down-arrow symbol * 8 Vertical slider * 9 Left-arrow symbol * 10 Right-arrow symbol * 11 Horizontal slider * long x,y,w,h Coordinates and size of the maximum window size * long wid A window identifier is returned, or negative if error *H LIBFNR wind_create,5 WORD II,4 WORD II,3 WORD II,2 WORD II,1 WORD II,0 SETPTS 5,1,0 CALLW wind_create,100 RETURN IO,0 *H * Display a window in initial size *H * rc = wind_open( wid, x, y, w, h ) * * long wid The window id from a previous call to wind_create * long x,y,w,h Coordinates and size of the initial window size * long rc >0 if no error *H LIBFNR wind_open,5 WORD II,4 WORD II,3 WORD II,2 WORD II,1 WORD II,0 SETPTS 5,1,0 CALLW wind_open,101 RETURN IO,0 *H * Close a window. It may be opened again by wind_open if required *H * rc = wind_close( wid ) * * long wid The window id for the window to be closed * long rc >0 if no error *H LIBFNR wind_close,1 WORD II,0 SETPTS 1,1,0 CALLW wind_close,102 RETURN IO,0 *H * Delete a window and free the space used *? T* * rc = wind_delete( wid ) * * long wid The window id for the window to be deleted. This * id is then no longer valid. * long rc >0 if no error *H LIBFNR wind_delete,1 WORD II,0 SETPTS 1,1,0 CALLW wind_delete,103 RETURN IO,0 *H * Get information about a window *H * rc = wind_get( wid, field, &p1, &p2, &p3, &p4 ) * * long wid The window id for the window. * long field This is a general purpose function. Different results * are returned into the parmameter areas depending on what * is requested via the value of 'field'. The values and * the results are as follows. * 4 Returns x,y,w,h of the work area of the window * 5 Returns x,y,w,h of the entire area of the window * 6 Returns x,y,w,h of the entire area of previous window * 7 Returns x,y,w,h of the entire area of full size window * 8 Returns p1 holding position of horizontal slider. This * is in range 1-1000, with 1 if at left edge. * 9 Returns p1 holding position of vertical slider as above. * 10 Returns p1 holding wid of window that is on top (active) * 11 Returns x,y,w,h of first rectangle in the window's * rectangle list. * 12 Returns x,y,w,h of next rectangle. * 15 Returns p1 as size of horizontal slider. This is in the * range 1-1000, or -1 for the default minimum size. * 16 Returns p1 as size of vertical slider as above. * word p1,p2,p3,p4 Parameter values returned as described above. * long rc >0 if no error *H LIBFNR wind_get,6 LPOINTW p4 LPOINTW p3 LPOINTW p2 LPOINTW p1 SETEXIT WORD II,1 WORD II,0 SETPTS 2,5,0 CALLW wind_get,104 SPOINTW IO,1,p1 SPOINTW IO,2,p2 SPOINTW IO,3,p3 SPOINTW IO,4,p4 RETURN IO,0 *H * Set window attributes *H * rc = wind_set( wid, field, p1, p2, p3, p4 ) * * long wid The window id for the window. * long field This is another general purpose function to set various * attributes on a window. Depending on the option the * parameters take different values, as follows. * 1 Window components. p1 is as 'flags' in wind_create. * 2 p1 and p2 (word sized) point to the string for the name * of the window. p1 is the low word, p2 the high. * 3 p1 and p2 (word sized) point to the string to be placed * in the information line. * 5,8,9,10,15,16 set the same options that wind_get returns. * 14 p1,p2 (word sized) point to a new object tree to be * drawn. p3 identifies the starting object. * long p1,p2,p3,p4 Parameter values used as described above. * long rc >0 if no error *H LIBFNR wind_set,6 WORD II,5 WORD II,4 WORD II,3 WORD II,2 WORD II,1 WORD II,0 SETPTS 6,1,0 CALLW wind_set,105 RETURN IO,0 *H * Find which window is under the mouse cursor *H * wid = wind_find( x, y ) * * long x,y The coordinates of the mouse. * long wid The window id of the window under the specified position. *** LIBFNR wind_find,2 WORD II,1 WORD II,0 SETPTS 2,1,0 CALLW wind_find,106 RETURN IO,0 *H * Interlock window updates *H * rc = wind_update( flag ) * * long flag A code for the operation required as follows. * 0 Finished updating window, back to normal action. * 1 Starting to update a window. While this is set, * windows cannot be moved or sized and menus are disabled. * 2 Finished handling mouse control * 3 Disable AES handling of mouse, and handle it myself. * long rc >0 if no error *H LIBFNR wind_update,1 WORD II,0 SETPTS 1,1,0 CALLW wind_update,107 RETURN IO,0 *H * Calculate size of work area or entire window *H * rc = wind_calc( mode, flags, ix, iy, iw, ih, &ox, &oy, &ow, &oh ) * * long mode A code for the operation required as follows. * 0 Calculate sizes for entire area * 1 Calculate sizes for work area * long flags The flags given to wind_create specifying the attributes * of the window. * long ix,iy,iw,ih The input coordinates and size of the entire area if * converting to the work area, and of the work area if * converting to the entire area. * word ox,oy,ow,oh The resulting coordinates and size. * long rc >0 if no error *H LIBFNR wind_calc,10 LPOINTW oh LPOINTW ow LPOINTW oy LPOINTW ox SETEXIT WORD II,5 WORD II,4 WORD II,3 WORD II,2 WORD II,1 WORD II,0 SETPTS 6,5,0 CALLW wind_calc,108 SPOINTW IO,1,ox SPOINTW IO,2,oy SPOINTW IO,3,ow SPOINTW IO,4,oh RETURN IO,0 END *H * F* * Metacomco interface library to the GEM system * * F* * The Metacomco mechanism for calling C is to place all arguments on * * the SP stack in reverse order. The arguments are all passed as * * longwords. Some C compilers (eg DRI C => graphics and GEM) require * * word arguments. This library provides the necessary interface code. * * F* * Section 17: AES Resource Library "* * F* * (C) Copyright 1985 METACOMCO plc. All Rights reserved. * *H * ,Last Changed 2 8 FEB 86 * *H INCLUDE "aesmacs" PAGE *H * Load resource file into memory after allocating space for it *H * rc = rsrc_load( filename ) * * long filename A pointer to the filename of the resource file * long rc >0 if no error *H LIBFNR rsrc_load,1 LONG AI,0 SETPTS 0,1,1 CALLW rsrc_load,110 RETURN IO,0 *H * Free the memory allocated by rsrc_load *H * rc = rsrc_free( ) * * long rc >0 if no error *H LIBFNR rsrc_free,0 SETPTS 0,1,0 CALLW rsrc_free,111 RETURN IO,0 *H * Get the address in memory of an item in the resource file *H * rc = rsrc_gaddr( type, index, &address ) * * long type The type of data structure, as follows. * 0 Tree * 1 OBJECT structure * 2 TEDINFO structure * 3 ICONBLK structure * 4 BITBLK structure * 5 String * 6 imagedata structure * 7 obspec structure * 8 te_ptext * 9 te_ptmplt * 10 te_pvalid * 11 ib_pmask * 12 ib_pdata * 13 ib_ptext * 14 bi_pdata * 15 ad_frstr - address of pointer to free string * 16 ad_frimg - address of pointer to free image * long index The index of the data structure. * long address The address in memory of the specified structure. * long rc >0 if no error *H LIBFNR rsrc_gaddr,3 LPOINTW address SETEXIT WORD II,1 WORD II,0 SETPTS 2,1,0 SETA CO,4,1 CALLW rsrc_gaddr,112 SPOINTL AO,0,address SETA CO,4,0 RETURN IO,0 *H * Store the address of a data structure *H * rc = rsrc_saddr( type, index, address ) * * long type The type of data structure, as described in rsrc_gaddr. * long index The index of the data structure * long address The address in memory of the specified structure. * long rc >0 if no error *H LIBFNR rsrc_saddr,3 LONG AI,0 WORD II,1 WORD II,0 SETPTS 2,1,1 CALLW rsrc_saddr,113 RETURN IO,0 *H * Convert the size of an object from character coordinates to pixels *H * rc = rsrc_obfix( tree, object ) * * long tree The object tree * long object The object to be converted * long rc >0 if no error *H LIBFNR rsrc_obfix,2 WORD II,0 LONG AI,0 SETPTS 1,1,1 CALLW rsrc_obfix,114 RETURN IO,0 END  d*H * F* * Metacomco interface library to the GEM system * * F* * The Metacomco mechanism for calling C is to place all arguments on * * the SP stack in reverse order. The arguments are all passed as * * longwords. Some C compilers (eg DRI C => graphics and GEM) require * * word arguments. This library provides the necessary interface code. * * F* * Section 18: AES Shell Library %* * F* * (C) Copyright 1985 METACOMCO plc. All Rights reserved. * *H * ,Last Changed 28 FEB 86 * *H INCLUDE "aesmacs" PAGE *H * Get command name and command tail *H * rc = shel_read( command, tail ) * * byte *command Pointer to space to hold command name * byte *tail Pointer to space to hold command tail * long rc >0 if no error *H LIBFNR shel_read,2 LONG AI,2 LONG AI,0 SETPTS 0,1,2 CALLW shel_read,120 RETURN IO,0 *H * Start up another application when this one terminates *H * rc = shel_write( exec, graf, gem, command, tail ) * * long exec 0 to return to OS, 1 to run another application * long graf 0 if new application is graphics, 1 otherwise * long gem 0 if new application is a GEM one, 1 otherwise * byte *command Command to execute next * byte *tail Command tail for next application * long rc >0 if no error *H LIBFNR shel_write,5 LONG AI,2 LONG AI,0 WORD II,2 WORD II,1 WORD II,0 SETPTS 3,1,2 CALLW shel_write,121 RETURN IO,0 *H * Find a filename in the current directory and in a preset list *H * rc = shel_find( buffer ) * * long buffer Initially this contains the filename which is being * searched for. On exit it will contain the full path * name of the file. It must be at least 80 bytes long. * long rc >0 if no error *H LIBFNR shel_find,1 LONG AI,0 SETPTS 0,1,1 CALLW shel_find,124 RETURN IO,0 *H * Search environment for a parameter and return pointer to it *H * rc = shel_envrn( pvalue, buffer ) * * long *pvalue A pointer to longword where the routine will store * the address of the first byte after the parameter. * byte *buffer The parameter string for which this application is * searching. * long rc >0 if no error *7* LIBFNR shel_envrn,2 LONG AI,2 LONG AI,0 SETPTS 0,1,3 CALLW shel_envrn,125 RETURN IO,0 END *H * F* * Metacomco interface library to the GEM system * * F* * The Metacomco mechanism for calling C is to place all arguments on * * the SP stack in reverse order. The arguments are all passed as * * longwords. Some C compilers (eg DRI C => graphics and GEM) require * * word arguments. This library provides the necessary interface code. * * F* * Section 2: VDI Ouput functions * F* * (C) Copyright 1985 METACOMCO plc. All Rights reserved. * *H * ,Last Changed 28 FEB 86 * *H INCLUDE "vdimacs" PAGE *H * Draw lines between coordinate pairs given *H * v_pline( handle, count, work_in ) * * word handle Device handle * long count Number of pairs in work_in * word work_in[] An array, of size 2*count. This contains coordinate * pairs between which lines will be drawn. If the array * contains only two pairs which are the same then a point * will be drawn. The pairs are specified in the order x,y. *H LIBFNV v_pline,3 LONG PI WORD CO,1 WORD CO,6 SETA CO,3,0 CALLW v_pline,6 RETURN *H * Draw markers at coordinate pairs given *H * v_pmarker( handle, count, work_in ) * * word handle Device handle * long count Number of pairs in work_in * word work_in[] An array, of size 2*count. This contains coordinate * pairs in the form x,y at which markers will be drawn. *H LIBFNV v_pmarker,3 LONG PI WORD CO,1 WORD CO,6 SETA CO,3,0 CALLW v_pmarker,7 RETURN *H * Write graphic text *H * v_gtext( handle, x, y, string ) * * word handle Device handle * long x,y Coordinates of where to write text. The text will be * written with the bottom left of the string at this * coordinate unless this is changed via vst_alignment. * byte string[] Text to be printed. *H LIBFNV v_gtext,4 LABEL string LONG WORD PI,1 WORD PI,0 WORD CO,6 STRLEN CO,3,string STRCPY II,0,string SETA CO,1,1 CALLW v_gtext,8 RETURN *H * Draw a filled polygon *H * v_fillarea( handle, count, work_in ) * * word handle Device handle * long count Number coordinate pairs in work_in. * word work_in[] An array, of size 2*count. This contains coordinate * pairs specifying the vertices of the polygon. If it * contains only two pairs which are the same then a point * will be drawn. The pairs are specified in the order x,y. *H LIBFNV v_fillarea,3 LONG PI WORD CO,1 WORD CO,6 SETA CO,3,0 CALLW v_fillarea,9 RETURN *H * Draw a rectangular pixel image *H * v_cellarray( handle, coords, rowlen, rowsize, nrows, mode, work_in ) * * word handle Device handle * word coords[4] Coordinates of rectangle given as x,y,x',y' * long rowlen Length of each row in two dimensional work_in array * long rowsize Size of each row in 16bit words * long nrows Number of rows in work_in * long mode Writing mode (see vswr_mode for details) * word work_in[] Two dimensional array, stored by row. Each entry * specifies the colour for a cell within the rectangle * defined by coords above. Each cell is then mapped to * pixels which are displayed in the colour given by the * cell covering the centre of the pixel. *H LIBFNV v_cellarray,7 LONG II WORD CO,10 * by hand MOVE.L ARGPTR(SP),D0 MOVE.L D0,2*9+COAR(A0) LONG * WORD CO,8 * by hand MOVE.L ARGPTR(SP),D1 MOVE.L D1,2*7+COAR(A0) LONG * LONG PI WORD CO,6 SETA CO,1,2 * * Have to fix the length of PI array by hand * MULS D1,D0 MOVE.L D0,2*3+COAR(A0) CALLW v_cellarray,10 RETURN *H * Flood fill *H * v_contourfill( handle, x, y, colour ) * * word handle Device handle * long x,y Coordinates of starting point for fill * long colour A colour value. The algorithm will start to fill with the * current fill area attribute until this colour value is * found. If colour is negative then the fill will be * terminated by any colour other than that of the starting * point. *H LIBFNV v_contourfill,4 WORD II,0 WORD PI,2 WORD PI,0 WORD CO,6 SETPTS 1,1 CALLW v_contourfill,103 RETURN *H * Draw filled rectangle with no outline *H * vr_recfl( handle, coords ) * * word handle Device handle * word coords[4] Coordinates x,y,x',y' of rectangle to be drawn. *H LIBFNV vr_recfl,2 LONG PI WORD CO,6 SETPTS 2,0 CALLW vr_recfl,114 RETURN *H * Draw a filled rectangle with an outline *H * v_bar( handle, coords ) * * word handle Device handle * word coords[4] Coordinates x,y,x',y' of rectangle to be drawn. *E %*** LIBFNV v_bar,2 LONG PI WORD CO,6 SETPTS 2,0 SETA CO,5,1 CALLW v_bar,11 RETURN *H * Draw an arc *H * v_arc( handle, x, y, radius, starta, stopa ) * * word handle Device handle * long x,y Coordinates of centre point of the arc * long radius Radius of arc (in x-coord units) * long starta,stopa Start and stop angles for the arc, specified in * tenths of degrees counterclockwise. *H LIBFNV v_arc,6 WORD II,1 WORD II,0 WORD PI,6 WORD PI,1 WORD PI,0 WORD CO,6 SETPTS 4,2 SETA CO,5,2 SETA PI,2,0 SETA PI,3,0 SETA PI,4,0 SETA PI,5,0 SETA PI,7,0 CALLW v_arc,11 RETURN *H * Draw a pie shape *H * v_pieslice( handle, x, y, radius, starta, stopa ) * * word handle Device handle * long x,y Coordinates of centre point of the pie * long radius Radius of pie (in x-coord units) * long starta,stopa Start and stop angles for the pie, specified in * tenths of degrees counterclockwise. *H LIBFNV v_pieslice,6 WORD II,1 WORD II,0 WORD PI,6 WORD PI,1 WORD PI,0 WORD CO,6 SETPTS 4,2 SETA CO,5,3 SETA PI,2,0 SETA PI,3,0 SETA PI,4,0 SETA PI,5,0 SETA PI,7,0 CALLW v_pieslice,11 RETURN *H * Draw a circle *H * v_circle( handle, x, y, radius ) * * word handle Device handle * long x,y Coordinates of centre point of the circle * long radius Radius (in x-coord units) *H LIBFNV v_circle,4 WORD PI,4 WORD PI,1 WORD PI,0 WORD CO,6 SETPTS 3,0 SETA CO,5,4 SETA PI,2,0 SETA PI,3,0 SETA PI,5,0 CALLW v_circle,11 RETURN *H * Draw an elliptical arc *H * v_ellarc( handle, x, y, xradius, yradius, starta, stopa ) * * word handle Device handle * long x,y Coordinates of centre point of the arc * long xradius Radius of x axis * long yradius Radius of y axis * long starta,stopa Start and stop angles for the arc, specified in * tenths of degrees counterclockwise. *H LIBFNV v_ellarc,7 WORD II,1 WORD II,0 WORD PI,3 WORD PI,2 WORD PI,1 WORD PI,0 WORD CO,6 SETPTS 2,2 SETA CO,5,6 CALLW v_ellarc,11 RETURN *H * Draw an elliptical pie *H * v_ellpie( handle, x, y, xradius, yradius, starta, stopa ) * * word handle Device handle * long x,y Coordinates of centre point of the pie * long xradius Radius of x axis * long yradius Radius of y axis * long starta,stopa Start and stop angles for the pie, specified in * tenths o f degrees counterclockwise. *H LIBFNV v_ellpie,7 WORD II,1 WORD II,0 WORD PI,3 WORD PI,2 WORD PI,1 WORD PI,0 WORD CO,6 SETPTS 2,2 SETA CO,5,7 CALLW v_ellpie,11 RETURN *H * Draw an ellipse *H * v_ellipse( handle, x, y, xradius, yradius ) * * word handle Device handle * long x,y Coordinates of centre point of the pie * long xradius Radius of x axis * long yradius Radius of y axis *H LIBFNV v_ellipse,5 WORD PI,3 WORD PI,2 WORD PI,1 WORD PI,0 WORD CO,6 SETPTS 2,0 SETA CO,5,5 CALLW v_ellipse,11 RETURN *H * Draw a rectangle with rounded corners *H * v_rbox( handle, coords ) * * word handle Device handle * word coords[4] Coordinates x,y,x',y' of rectangle to be drawn. *H LIBFNV v_rbox,2 LONG PI WORD CO,6 SETPTS 2,0 SETA CO,5,8 CALLW v_rbox,11 RETURN *H * Draw a filled rectangle with rounded corners *H * v_rfbox( handle, coords ) * * word handle Device handle * word coords[4] Coordinates x,y,x',y' of rectangle to be drawn. *H LIBFNV v_rfbox,2 LONG PI WORD CO,6 SETPTS 2,0 SETA CO,5,9 CALLW v_rfbox,11 RETURN *H * Display text justified to fit given length *H * v_justified( handle, x, y, string, length, wordsp, charsp ) * * word handle Device handle * long x,y Coordinates of alignment point for the text * byte string[] Null terminated string to be printed * long length Length of text string, in x-coord units * long wordsp If zero, then spaces between words are not altered. * If nonzero, spaces may be modified. * long charsp If zero, then the space between letters is not altered. * If nonzero, the gap between characters may be altered. *H LIBFNV v_justified,7 WORD II,1 WORD II,0 WORD PI,2 LABEL string LONG WORD PI,1 WORD PI,0 WORD CO,6 SETA CO,1,2 STRLEN CO,3,string STRCPY II,2,string ADD.W #2,3*2+COAR(A0) SETA CO,5,10 CALLW v_justified,11 RETURN END  *H * F* * Metacomco interface library to the GEM system * * F* * The Metacomco mechanism for calling C is to place all arguments on * * the SP stack in reverse order. The arguments are all passed as * * longwords. Some C compilers (eg DRI C => graphics and GEM) require * * word arguments. This library provides the necessary interface code. * * F* * Section 3: VDI Attribute Functions * * F* * (C) Copyright 1985 METACOMCO plc. All Rights reserved. * *H * ,Last Changed 28 FEB 86 * *H INCLUDE "vdimacs" PAGE *H * Select the writing mode *H * vswr_mode( handle, mode ) * * word handle Device handle * long mode Writing mode. This can be one of the following * 1 Replace new for previous * 2 Transparent * 3 XOR * 4 Reverse transparent *H LIBFNR vswr_mode,2 WORD II,0 WORD CO,6 SETPTS 0,1 CALLW vswr_mode,32 RETURN IO,0 *H * Select the red/green/blue proportions for a particular colour value *H * vs_color( handle, colour, rgb ) * * word handle Device handle * long colour The colour value to be specified * word rgb[3] The proportions of red, green and blue; specified * in the range 0 to 1000. *H LIBFNV vs_color,3 LABEL rgb_in LONG WORD II,0 WORD CO,6 COPYW II,1,3,rgb_in,0,'FROM' SETPTS 0,4 CALLW vs_color,14 RETURN *H * Select the line drawing style *H * actual _style = vsl_type( handle, style ) * * word handle Device handle * long style The style required. This is one of * 1 solid line * 2 long dash * 3 dot * 4 dash, dot * 5 dash * 6 dash, dot, dot * 7 User defined 16bit mask * long actual_style The style actually selected *H LIBFNR vsl_type,2 WORD II,0 WORD CO,6 SETPTS 0,1 CALLW vsl_type,15 RETURN IO,0 *H * Specify the user defined line drawing mask *H * vsl_udsty( handle, mask ) * * word handle Device handle * long mask A 16bit mask to be used when drawing lines in the * 'user defined' style. *H LIBFNV vsl_udsty,2 WORD II,0 WORD CO,6 SETPTS 0,1 CALLW vsl_udsty,113 RETURN *H * Select the line width *H * actual_width = vsl_width( handle, width ) * * word handle Device handle * long width The line width required. This is specified in x-coord * units, and is an odd number greater than 1. The line * width actually used is always less than or equal to * the width requested. If you specify 2 when using raster * coords then the width is set to 1, which is a line one * pixel wide. * long actual_style The actual line width selected. *H LIBFNR vsl_width,2 WORD PI,0 WORD CO,6 SETA PI,1,0 SETPTS 1,0 CALLW vsl_width,16 RETURN PO,0 *H * Select the line colour *H * actual_colour = vsl_color( handle, colour ) * * word handle Device handle * long colour The colour value to be used in subsequent line drawing * operations. * long actual_colour The actual colour selected. *H LIBFNR vsl_color,2 WORD II,0 WORD CO,6 SETPTS 0,1 CALLW vsl_color,17 RETURN IO,0 *H * Select the line end style *H * vsl_ends( handle, starts, ends ) * * word handle Device handle * long starts,ends The style required for the start and end of lines. * This is one of the following * 0 Square end (default) * 1 Arrow end * 2 Rounded end *H LIBFNV vsl_ends,3 WORD II,1 WORD II,0 WORD CO,6 SETPTS 0,2 CALLW vsl_ends,108 RETURN *H * Select the marker type for the polymarker call *H * actual_type = vsm_type( handle, type ) * * word handle Device handle * long type The type of marker to be used. * This is one of the following * 1 Dot * 2 Plus * 3 Asterisk * 4 Square * 5 Diagonal cross * 6 Diamond * long actual_type The actual type selected. *H LIBFNR vsm_type,2 WORD II,0 WORD CO,6 SETPTS 0,1 CALLW vsm_type,18 RETURN IO,0 *H * Select the marker height for the polymarker call *H * actual_height = vsm_height( handle, height ) * * word handle Device handle * long height The height of marker to be used, in y-coord units. * If the selected height is not possible, the next smallest * is used. * long actual_height The actual height selected. *H LIBFNR vsm_height,2 WORD PI,1 WORD CO,6 SETPTS 1,0 CALLW vsm_height,19 RETURN PO,1 *H * Select the marker colour for the polymarker call *H * actual_colour = vsm_color( handle, colour ) * * word handle Device handle * long colour The colour of marker to be used. * long actual_colour The actual colour selected. *H LIBFNR vsm_color,2 WORD II,0 WORD CO,6 SETPTS 0,1 CALLW vsm_color,20 RETURN IO,0 *H * Select the height of characters using coordinate units * *A * vst_height( handle, height, &char_w, &char_h, &cell_w, &cell_h ) * * word handle Device handle * long height The height of characters, specified as the distance * from the base line to the top of the character cell. * If the requested height is not supported, the next * smallest is used. * word char_w The width of a character is returned. * word char_h The height of a character is returned. * word cell_w The width of a character cell is returned. * word cell_h The height of a character cell is returned. *H LIBFNV vst_height,6 LPOINTW cell_height LPOINTW cell_width LPOINTW char_height LPOINTW char_width WORD PI,1 WORD CO,6 SETA PI,0,0 SETPTS 1,0 SETEXIT CALLW vst_height,12 SPOINTW PO,0,char_width SPOINTW PO,1,char_height SPOINTW PO,2,cell_width SPOINTW PO,3,cell_height RETURN *H * Select the height of characters using points units *H * vst_point( handle, height, &char_w, &char_h, &cell_w, &cell_h ) * * word handle Device handle * long height The height of characters, specified as printer points * (1/72th inch). The values returned are in coordinate * units, as in the preceding call. Again, if the requested * height is not supported the next smallest is used. * word char_w The width of a character is returned. * word char_h The height of a character is returned. * word cell_w The width of a character cell is returned. * word cell_h The height of a character cell is returned. *H LIBFNV vst_point,6 LPOINTW cell_height LPOINTW cell_width LPOINTW char_height LPOINTW char_width WORD II,0 WORD CO,6 SETEXIT SETPTS 0,1 CALLW vst_point,107 SPOINTW PO,0,char_width SPOINTW PO,1,char_height SPOINTW PO,2,cell_width SPOINTW PO,3,cell_height RETURN IO,0 *H * Select the rotation for characters *H * actual_angle = vst_rotation( handle, angle ) * * word handle Device handle * long angle The requested rotation for the character base line, * specified in tenths of a degree. * long actual_angle The actual rotation selected. *H LIBFNR vst_rotation,2 WORD II,0 WORD CO,6 SETPTS 0,1 CALLW vst_rotation,13 RETURN IO,0 *H * Select the character font *H * actual_font = vst_font( handle, font ) * * word handle Device handle * long font The character font requested. * long actual_font The actual font selected. Font 1 is always available; * other possible font numbers are available via the * vqt_name call. *H LIBFNR vst_font,2 WORD II,0 WORD CO,6 SETPTS 0,1 CALLW vst_font,21 RETURN IO,0 *H * Select the character colour for graphic text *H * actual_colour = vst_color( handle, colour ) * * word handle Device handle * long colour The colour requested. * long actual_colour ] The actual colour selected. *H LIBFNR vst_color,2 WORD II,0 WORD CO,6 SETPTS 0,1 CALLW vst_color,22 RETURN IO,0 *H * Select the special effects for graphic text *H * actual_effect = vst_effects( handle, effect ) * * word handle Device handle * long effect The effect requested. This is specified as a bit pattern, * where if a bit is 0 then the effect is turned off, and if * the bit is 1 then the effect is turned on. * Bit 0 Thickened lines * Bit 1 Light intensity * Bit 2 Skewed characters * Bit 3 Underlined * Bit 4 Outlined * Bit 5 Shadowed * long actual_effect The actual effect mask selected. *H LIBFNR vst_effects,2 WORD II,0 WORD CO,6 SETPTS 0,1 CALLW vst_effects,106 RETURN IO,0 *H * Specify the alignment of text with respect to a coordinate point *H * vst_alignment( handle, hin, vin, &hactual, &vactual ) * * word handle Device handle * long hin Horizontal alignment requested. This is one of * 0 Left justified * 1 Centered * 2 Right justified * long vin Vertical alignment requested. * 0 Base (base of character such as 'n') * 1 Half (top of character such as 'n') * 2 Ascent (top of character such as 'l') * 3 Bottom of character cell * 4 Descent (base of character such as 'g') * 5 Top of character cell * word hactual The actual horizontal alignment selected. * word vactual The actual vertical alignement selected. *H LIBFNV vst_alignment,5 LPOINTW vert_out LPOINTW hor_out WORD II,1 WORD II,0 WORD CO,6 SETEXIT SETPTS 0,2 CALLW vst_alignment,39 SPOINTW IO,0,hor_out SPOINTW IO,1,vert_out RETURN *H * Specify the style for filling the interior of polygons etc *H * actual_style = vsf_interior( handle, style ) * * word handle Device handle * long style The style requested. This is one of * 0 Hollow (using current background colour) * 1 Solid (using current fill colour) * 2 Pattern * 3 Hatched * 4 User defined style * long actual_style The actual style selected. *H LIBFNR vsf_interior,2 WORD II,0 WORD CO,6 SETPTS 0,1 CALLW vsf_interior,23 RETURN IO,0 *H * Specify the pattern for filling when pattern or hatched selected *H * actual_style = vsf_style( handle, style ) * * word handle Device handle * long style The style requested. This is a number in the range * 1 to 24, specifying different pattern and hatch effects. * long actual_style The actual style selected. *H LIBFNR vsf_style,2 WORD II,0 WORD CO,6 SETPTS 0,1 CALLW vsf_style,24 RETURN IO,0 *3* * Specify the colour to be used when filling *H * actual_colour = vsf_color( handle, colour ) * * word handle Device handle * long colour The colour requested. * long actual_colour The actual colour selected. *H LIBFNR vsf_color,2 WORD II,0 WORD CO,6 SETPTS 0,1 CALLW vsf_color,25 RETURN IO,0 *H * Turn fill area outline on or off  *H * actual_flag = vsf_perimeter( handle, flag ) * * word handle Device handle * long flag 0 No display of fill area perimeter * 1 Display fill area perimeter as solid line in current * fill area colour. * long actual_flag The actual value selected. *H LIBFNR vsf_perimeter,2 WORD II,0 WORD CO,6 SETPTS 0,1 CALLW vsf_perimeter,104 RETURN IO,0 *H * Specify the user definable fill pattern *H * vsf_udpat( handle, pattern, planes ) * * word handle Device handle * long *pattern A pointer to the pattern data. This is specified * as a 32byte area for each plane. * long planes The number of planes (at least 1) *H LIBFNV vsf_udpat,2 MOVE.L ARGPTR(SP),D0 Number of planes ASL.L #4,D0 Number of points MOVE.L D0,2*3+COAR(A0) Put in cntrl[3] LONG LONG II Ptr to array of points WORD CO,6 SETA CO,1,0 CALLW vsf_udpat,112 RETURN END *H * F* * Metacomco interface library to the GEM system * * F* * The Metacomco mechanism for calling C is to place all arguments on * * the SP stack in reverse order. The arguments are all passed as * * longwords. Some C compilers (eg DRI C => graphics and GEM) require * * word arguments. This library provides the necessary interface code. * * F* * Section 4: VDI Raster Functions #* * F* * (C) Copyright 1985 METACOMCO plc. All Rights reserved. * *H * ,Last Changed 28 FEB 86 * *H INCLUDE "vdimacs" PAGE *H * Copy a rectangular area, opaque *H * vro_cpyfm( handle, mode, coords, source, dest ) * * word handle Device handle * long mode The mode in which the copy is to take place. Depending * on the value spec ified, each destination pixel will take * on a value derived from a logical combination of the * source (S) and destination (D) pixels as follows. * 0 0 * 1 S AND D * 2 S AND (NOT D) * 3 S * 4 (NOT S) AND D * 5 D * 6 S XOR D * 7 S OR D * 8 NOT (S OR D) * 9 NOT (S XOR D) * 10 NOT D * 11 S OR (NOT D) * 12 NOT S * 13 (NOT S) OR D * 14 NOT (S AND D) * 15 1 * word coords[8] Source and destination rectangles specified as x,y,x',y'. * long source[] Memory form definition block for source. This is a structure * describing the area to be copied as follows. * long ptr Ptr to upper left corner of first plane of raster * word w,h Width and height of raster area in pixels * word ww Width of raster area in words * word flag 0 if device specific format, 1 if standard format * word nmp Number of memory planes * In standard form, the planes are contiguous blocks of memory. * You must use the function vr_trnfm to transform from standard * form to device specific form, which is required for this call. * long dest[] Memory form definition block for the destination. *H LIBFNV vro_cpyfm,5 LONG CO,9 LONG CO,7 LONG PI WORD II,0 WORD CO,6 SETPTS 4,1 CALLW vro_cpyfm,109 RETURN *H * Copy a rectangular area, transparent *H * vrt_cpyfm( handle, mode, coords, source, dest, colour ) * * word handle Device handle * long mode The mode for the copy. This is one of the following * representing how the monochrome source gets moved to the * colour destination. * 1 Replace. Source pixels which are set go to foreground * colour, unset ones go to background colour. * 2 Transparent. Source pixels which are set go to foreground. * 3 XOR. Simple XOR of source and destination. * 4 Reverse transparent. Source pixels which are unset go to * background colour. * word coords[8] Source and destination rectangles specified as x,y,x',y'. * long source[] Memory form definition block for source. * long dest[] Memory form definition block for destination. * word colour[2] An array containing the foreground and background colours. *H LIBFNV vrt_cpyfm,6  LABEL colour_index LONG COPYW II,1,2,colour_index,0,'FROM' LONG CO,9 LONG CO,7 LONG PI WORD II,0 WORD CO,6 SETPTS 4,3 CALLW vrt_cpyfm,121 RETURN *H * Transform memory form definition block *H * vr_trnfm( handle, source, dest ) * * word handle Device handle * long source[] Memory form definition block for source. * long dest[] Memory form definition block for destination. * A call will toggle from standard form to device specific and back again. * The destination will have the flag inverted from the destination, but * you must fill in the other fields. *H LIBFNV vr_trnfm,3 LONG CO,9 LONG CO,7 WORD CO,6 SETPTS 0,0 CALLW vr_trnfm,110 RETURN *H * Get pixel value and colour *H * v_get_pixel( handle, x, y, &value, &colou mr ) * * word handle Device handle * long x,y Coordinates of pixel * word value Pixel value (0 or 1) is returned here * word colour Pixel colour is returned here *H LIBFNV v_get_pixel,5 LPOINTW index LPOINTW pel WORD PI,1 WORD PI,0 WORD CO,6 SETEXIT SETPTS 1,0 CALLW v_get_pixel,105 SPOINTW IO,0,pel SPOINTW IO,1,index RETURN END s*H * F* * Metacomco interface library to the GEM system * * F* * The Metacomco mechanism for calling C is to place all arguments on * * the SP stack in reverse order. The arguments are all passed as * * longwords. Some C compilers (eg DRI C => graphics and GEM) require * * word arguments. This library provides the necessary interface code. * * F* * Section 5: VDI Input Functions $* * F* * (C) Copyright 1985 METACOMCO plc. All Rights reserved. * *H * ,Last Changed 28 FEB 86 * *H INCLUDE "vdimacs" PAGE *H * Define mouse cursor *H * vsc_form( handle, form ) * * word handle Device handle * word form[37] An array specifying the mouse cursor as follows * * form[0] x-coord of 'hot-spot', which is the offset froIOOpper * left corner of the cursor of a pixel whose position is returned * when the mouse position is queried. * form[1] y coord of 'hot-spot'. * form[2] Must be 1 * form[3] Mask colour (normally 0) * form[4] Data colour (normally 1) * form[5..20] 16 words of cursor mask * form[21..36] 16 words of cursor data * * A 1 set in the mask causes the corresponding pixel to be drawn in the mask * colour, while a 1 set in the data causes it to be set to the data colour. *H LIBFNV vsc_form,2 LONG II WORD CO,6 SETPTS 0,37 CALLW vsc_form,111 RETURN *H * Define timer interrupt routine *H * vex_timv( handle, new_addr, old_addr, &mspertick ) * * word handle Device handle * long *new_addr Address of timer interrupt routine * long *old_addr Address of previous timer interrupt routine * word mspertick Number of milliseconds per tick *H LIBFNV vex_timv,4 LPOINTW mspertick LPOINTW old_addr LONG CO,7 WORD CO,6 SETEXIT SETPTS 0,0 CALLW vex_timv,118 SPOINTW II,0,mspertick SPOINTL CO,9,old_addr RETURN *H * Show mouse cursor *H * v_show_c( handle, reset ) * * word handle Device handle * long reset Reset flag. If zero, the cursor is shown irrespective * of the number of calls to v_hide_c. If nonzero, then * the mouse cursor will only be shown if the same number * of calls have been made to v_show_c and v_hide_c. *H LIBFNV v_show_c,2 WORD II,0 WORD CO,6 SETPTS 0,1 CALLW v_show_c,122 RETURN *H * Hide mouse cursor *H * v_hide_c( handle ) * * word handle Device handle * * Hide the mouse cursor. If more than one call is made to this function * without an intervening call to v_show_c, the cumulative count is maintained * and is decremented by v_show_c. *H LIBFNV v_hide_c,1 WORD CO,6 SETPTS 0,0 CALLW v_hide_c,123 RETURN *H * Inquire mouse position and state *H * vq_mouse( handle, &button, &x, &y ) * * word handle Device handle * word button Contains 2 bits, which are set if a mouse button is * pressed. The low order bit refers to the left button. * word x,y Current position of mouse cursor *H LIBFNV vq_mouse,4 LPOINTW y LPOINTW x LPOINTW pstatus WORD CO,6 SETEXIT SETPTS 0,0 CALLW vq_mouse,124 SPOINTW IO,0,pstatus SPOINTW PO,0,x SPOINTW PO,1,y RETURN *H * Define mouse button interrupt routine *H * vex_butv( handle, new_addr, old_addr ) * * word handle Device handle * long *new_addr Address of mouse button interrupt routine * long *old_addr Address of previous interrupt routine * * The routine is called whenever a button changes state. *H LIBFNV vex_butv,3 LPOINTW old_addr LONG CO,7 WORD CO,6 SETEXIT SETPTS 0,0 CALLW vex_butv,125 SPOINTL CO,9,old_addr RETURN *H * Define mouse movement interrupt routine *H * vex_motv( handle, new_addr, old_addr ) * * word handle Device handle * long *new_addr Address of mouse movement interrupt routine * long *old_addr Address of previous interrupt routine * * The routine is called whenever the mouse is moved. *H LIBFNV vex_motv,3 LPOINTW old_addr SETEXIT LONG CO,7 WORD CO,6 SETPTS 0,0 CALLW vex_motv,126 SPOINTL CO,9,old_addr RETURN *H * Define cursor change interrupt routine *H * vex_curv( handle, new_addr, old_addr ) * * word handle Device handle * long *new_addr Address of cursor change interrupt routine * long *old_addr Address of previous interrupt routine * * The routine is called whenever the cursor is redrawn. *H LIBFNV vex_curv,3 LPOINTW old_addr SETEXIT LONG CO,7 WORD CO,6 SETPTS 0,0 CALLW vex_curv,127 SPOINTL CO,9,old_addr RETURN *H * Inquire keyboard status *H * vq_key_s( handle, &status ) * * wor d handle Device handle * word status The state of various keyboard keys, with bits set * as follows if the key is depressed. * 0 Right shift key * 1 Left shift key * 2 Control key * 3 Alternate key *H LIBFNV vq_key_s,2 LPOINTW status SETEXIT WORD CO,6 SETPTS 0,0 CALLW vq_key_s,128 SPOINTW IO,0,status RETURN END o*H * F* * Metacomco interface library to the GEM system * * F* * The Metacomco mechanism for calling C is to place all arguments on * * the SP stack in reverse order. The arguments are all passed as * * longwords. Some C compilers (eg DRI C => graphics and GEM) require * * word arguments. This library provides the necessary interface code. * * F* * Section 6: VDI Enquire Functions "* * F* * (C) Copyright 1985 METACOMCO plc. All Rights reserved. * *H * ,Last Changed 28 FEB 86 * *H INCLUDE "vdimacs" PAGE *H * Extended enquire *H * vq_extnd( handle, flag, work_out ) * * word handle Device handle * long flag 0 to return same information as v_opnvwk * 1 to return device specific HL3"DIrk_out[57] Various items of information are returned concerning * the features supported. *H LIBFNV vq_extnd,3 LABEL work_out LONG IO WORD II,0 WORD CO,6 SETPTS 0,1 CALLW vq_extnd,102 COPYW PO,0,12,work_out,45,'BACK' RETURN *H * Enquire red/green/blue proportions of specified colour *H * vq_color( handle, colour, flag, rgb ) * * word handle Device handle * long colour The requested colour number * long flag 0 to return the rgb proportions initially requested * 1 to return the proportions used on the device * word rgb[3] Red, green and blue proportions returned in the range * 0 to 1000. *H LIBFNV vq_color,4 LONG IO WORD II,1 WORD II,0 WORD CO,6 SETPTS 0,2 CALLW vq_color,26 RETURN *H * Enquire attributes concerning polylines *H * vql_attributes( handle, work_out ) * * word handle Device handle * word work_out[4] An array which is returned containing the current settings * of possible polyline attributes as follows. * 0 Line type * 1 Line colour * 2 Writing mode * 3 Line width *H LIBFNV vql_attrib utes,2 LABEL attrib LONG IO WORD CO,6 SETPTS 0,0 CALLW vql_attributes,35 COPYW PO,0,1,attrib,3,'BACK' RETURN *H * Enquire attributes concerning polymarkers *H * vqm_attributes( handle, work_out ) * * word handle Device handle * word work_out[4] An array which is returned containing the current settings * of possible polymarker attributes as follows. * 0 Marker type * 1 Marker colour * 2 Writing mode * 3 Marker height *H LIBFNV vqm_attributes,2 LABEL attrib LONG IO WORD CO,6 SETPTS 0,0 CALLW vqm_attributes,36 COPYW PO,1,1,attrib,3,'BACK' RETURN *H * Enquire attributes concerning filling *H * vqf_attributes( handle, work_out ) * * word handle Device handle * word work_out[4] An array which is returned containing the current settings * of possible fill attributes as follows. * 0 Fill area interior style * 1 Fill area colour * 2 Fill area style * 3 Writing mode *H LIBFNV vqf_attributes,2 LONG IO WORD CO,6 SETPTS 0,0 CALLW vqf_attributes,37 RETURN *H * Enquire attributes concerning text *H * vqt_attributes( handle, work_out ) * * word handle Device handle * word work_out[10] An array which is returned containing the current settings * of possible text attributes as follows. * 0 Text font * 1 Colour * 2 Text baseline angle * 3 HJontal alignment * 4 Vertical alignment * 5 Writing mode * 6 Character width * 7 Character height * 8 Character cell width * 9 Character cell height *H LIBFNV vqt_attributes,2 LABEL attrib LONG IO WORD CO,6 SETPTS 0,0 CALLW vqt_attributes,38 COPYW PO,0,4,attrib,6,'BACK' RETURN *H * Enquire size of rectangle enclosing given text. *H * vqt_extnt( handle, string, work_out ) * * word handle Device handle * byte *string The string involved. * word work_out[8] An array which is returned containing the definition * of a rectangle enclosing the string. This is defined * in terms of a coordinate system which has the rectangle * touching both the x and y axes. The offsets of the * four corners are returned in this array as x,y pairs. * The first pair refers to the bottom left corner, and then * proceed anticlockwise around the rectangle. *H LIBFNV vqt_extnt,3 LONG PO LABEL string LONG LONG II WORD CO,6 SETA CO,1,0 STRLEN CO,3,string CALLW vqt_extnt,116 RETURN *H * Enquire size of character cell *H * rc = vq t_width( handle, char, &width, &left, &right ) * * word handle Device handle * long char Character involved * word width Width of character cell * word left,right Offset of actual character from left and right sides of * the character cell. * long rc -1 if the character is invalid. *H LIBFNR vqt_width,5 LPOINTW right LPOINTW left LPOINTW width SETEXIT WORD II,0 WORD CO,6 SETPTS 0,1 CALLW vqt_width,117 SPOINTW PO,0,width SPOINTW PO,2,left SPOINTW PO,4,right RETURN IO,0 *H * Enquire font name and index number *H * index = vqt_name( handle, id, name ) * * word handle Device handle * long id The font id (starts at 1, goes up to the maximum * number of fonts available) * byte *name The name of the font is returned as a null terminated * string. The first 16 characters describe the font, * the second 16 describe the style and weight. * long index The index value, suitable as an argument to vst_font. *H LIBFNR vqt_name,3 LPOINTW name WORD II,0 WORD CO,6 SETPTS 0,1 CALLW vqt_name,130 COPYW IO,1,32,name,0,'BACK' RETURN IO,0 *H * Enquire cell array definition *H * index = vq_cellarray( handle, coords, rowlen, nrows, &rowsize, * &rowused, &err, work_out ) * * word handle Device handle * word coords[4] Coordinates of rectangle enclosing area (x,y,x',y') * long rowlen Length of each row in two dimensional work_out array * long nrows Number of rows in work_out * word rowsize Number of 16bit words used in each row in work_out * word rowused Number of rows used in work_out * word err ErrNDό @ςώl went well, 1 is a colour value * could not be found for some pixel. * word *work_out Two dimensional array, stored by row. Each entry * specifies the colour for a cell within the rectangle * defined by coords above, or -1 if no value could be found. *H LIBFNV vq_cellarray,8 LONG IO LPOINTW status LPOINTW rows_used LPOINTW el_used WORD CO,8 WORD CO,7 LONG PI WORD CO,6 SETPTS 2,0 CALLW vq_cellarray,27 SPOINTW CO,9,el_used SPOINTW CO,10,rows_used SPOINTW CO,11,status RETURN *H * Enquire input mode *H * vqin_mode( handle, dev_type, &input_mode ) * * word handle Device handle * long dev_type The type of input device as follows * 1 locator * 2 valuator * 3 choice * 4 string * word input_mode This is set up by the call to indicate * the input mode as follows * 1 request * 2 sample *H LIBFNV vqin_mode,3 LPOINTW input_mode WORD II,0 WORD CO,6 SETPTS 0,1 CALLW vqin_mode,115 SPOINTW IO,0,input_mode RETURN *H * Enquire current font information *H * vqt_fontinfo( handle, &min,  &max, dist, &maxwidth, work_out ) * * word handle Device handle * word min,max Minimum and maximum ASCII Decimal Equivalent indicating * the first and last characters in this font. * short *dist[5] An array containing size information for the current font * as follows. * 0 Distance between bottom line and base line * 1 Distance between descent line and base line * 2 Distance beteen half line and base line * 3 Distance between ascent line and base line * 4 Distance between top line and base line * word maxwidth Returned holding the maximum cell width, not including * any overhead due to current effects which may be in force. * short *work_out[3] An array holding effects information as follows * 0 Amount current effects increase character width * 1 Offset of character from left edge of cell * 2 Offset of character from right edge of cell *H LIBFNV vqt_fontinfo,6 LABEL work_out LONG LPOINTW maxwidth LABEL distances LONG LPOINTW max LPOINTW min WORD CO,6 SETPTS 0,0 CALLW vqt_fontinfo,131 SPOINTW PO,0,maxwidth COPYWA PO,1,5,distances,0 COPYWA PO,2,3,work_out,0 RETURN END g*H * F* * Metacomco interface library to the GEM system * * F* * The Metacomco mechanism for calling C is to place all arguments on * * the SP stack in reverse order. The arguments are all passed as * * longwords. Some C compilers (eg DRI C => graphics and GEM) require * * word arguments. This library provides the necessary interface code. * * F* * Section 7: VDI Escape Functions #* * F* * (C) Copyright 1985 METACOMCO plc. All Rights reserved. * *H * ,Last Changed 28 FEB 86 * *H INCLUDE "vdimacs" PAGE *H * Inquire number of character cells *H * vq_chcells( handle, &rows, &cols ) * * word handle Device handle * word rows,cols Number of rows and columns supported on this device *H LIBFNV vq_chcells,3 LPOINTW cols LPOINTW rows SETEXIT WORD CO,6 SETPTS 0,0 SETA CO,5,1 CALLW vq_chcells,5 SPOINTW IO,0,rows SPOINTW IO,1,cols RETURN *H * Exit alpha mode *0 W* * v_exit_cur( handle ) * * word handle Device handle * * This causes the device to enter graphics mode and exit alphameric mode *H LIBFNV v_exit_cur,1 WORD CO,6 SETPTS 0,0 SETA CO,5,2 CALLW v_exit_cur,5 RETURN *H * Enter alpha mode *H * v_enter_cur( handle ) * * word handle Device handle * * This causes the device to enter alphameric mode and exit graphics mode *H LIBFNV v_enter_cur,1 WORD CO,6 SETPTS 0,0 SETA CO,5,3 CALLW v_enter_cur,5 RETURN *H * Cursor up *H * v_curup( handle ) * * word handle Device handle * * Move the cursor up one row. If at top of screen, no action. *H LIBFNV v_curup,1 WORD CO,6 SETPTS 0,0 SETA CO,5,4 CALLW v_curup,5 RETURN *H * Cursor down *H * v_curdown( handle ) * * word handle Device handle * * Move the cursor down one row. If at bottom of screen, no action. *H LIBFNV v_curdown,1 WORD CO,6 SETPTS 0,0 SETA CO,5,5 CALLW v_curdown,5 RETURN *H * Cursor right *H * v_curright( handle ) * * word handle Device handle * * Move the cursor right one column. If at right hand edge of screen, no action. *H LIBFNV v_curright,1 WORD BO,6 SETPTS 0,0 SETA CO,5,6 CALLW v_curright,5 RETURN *H * Cursor left *H * v_curleft( handle ) * * word handle Device handle * * Move the cursor left one column. If at left hand edge of screen, no action. *H LIBFNV v_curleft,1 WORD CO,6 SETPTS 0,0 SETA CO,5,7 CALLW v_curleft,5 RETURN *H * Cursor home *H * v_curhome( handle ) * * word handle Device handle * * Move the cursor home. *H LIBFNV v_curhome,1 WORD CO,6 SETPTS 0,0 SETA CO,5,8 CALLW v_curhome,5 RETURN *H * Erase from cursor to end of screen *H * v_eeos( handle ) * * word handle Device handle *H LIBFNV v_eeos,1 WORD CO,6 SETPTS 0,0 SETA CO,5,9 CALLW v_eeos,5 RETURN *H * Erase from cursor to end of line *H * v_eeol( handle ) * * word handle Device handle *H LIBFNV v_eeol,1 WORD CO,6 SETPTS 0,0 SETA CO,5,10 CALLW v_eeol,5 RETURN *H * Cursor absolute address *H * vs_curaddress( handle, row, col ) * * word handle Device handle * long row, col Row and column of destination. *H LIBFNV vs_curaddress,3 WORD II,1 WORD II,0 WORD CO,6 SETPTS 0,0 SETA CO,5,11 CALLW vs_curaddress,5 RETURN *H * Print string at current alpha cursor position *H * v_curtext( handle, string ) * * word handle Device handle * byte *string Text to be printed *H LIBFNV v_curtext,2 LABEL string LONG WORD CO,6 STRLEN CO,3,string STRCPY II,0,string SETA CO,1,0 SETA CO,5,12 CALLW v_curtext,5 RETURN *H * Turn on reverse video mode *H * v_rvon( handle ) * * word handle Device handle *H LIBFNV v_rvon,1 WORD CO,6 SETPTS 0,0 SETA CO,5,13 CALLW v_rvon,5 RETURN *H * Turn off reverse video mode *H * v_rvoff( handle ) * * word handle Device handle *H LIBFNV v_rvoff,1 WORD CO,6 SETPTS 0,0 SETA CO,5,14 CALLW v_rvoff,5 RETURN *H * ENquJO90@I21cursor position *H * vq_curaddress( handle, &row, &col ) * * word handle Device handle * word row,col Current row and column positions of alpha cursor *H LIBFNV vq_curaddress,3 LPOINTW col LPOINTW row SETEXIT WORD CO,6 SETPTS 0,0 SETA CO,5,15 CALLW vq_curaddress,5 SPOINTW IO,0,row SPOINTW IO,1,col RETURN *H * Enquire whether a mouse or tablet is available *H * status = vq_tabstatus( handle ) * * word handle Device handle * long status 0 if no mouse or tablet available, 1 if available. *H LIBFNV vq_tabstatus,1 WORD CO,6 SETPTS 0,0 SETA CO,5,16 CALLW vq_tabstatus,5 RETURN *H * Display graphics cursor at specified location *H * v_dspcur( handle, x, y ) * * word handle Device handle * long x,y Coordinates of position required *H LIBFNV v_dspcur,1 WORD PI,1 WORD PI,0 WORD CO,6 SETPTS 0,0 SETA CO,5,18 CALLW v_dspcur,5 RETURN *H * Hide graphics cursor *)* * v_rmcur( handle ) * * word handle Device handle *H LIBFNR v_rmcur,1 WORD CO,6 SETPTS 0,0 SETA CO,5,19 CALLW v_rmcur,5 END *H * F* * Metacomco interface library to the GEM system * * F* * The Metacomco mechanism for calling C is to place all arguments on * * the SP stack in reverse order. The arguments are all passed as * * longwords. Some C compilers (eg DRI C => graphics and GEM) require * * word arguments. This library provides the necessary interface code. * * F* * Section 8: AES Application Functions * * F* * (C) Copyright 1985 METACOMCO plc. All Rights reserved. * *H * ,Last Changed 28 FEB 86 * *H INCLUDE "aesmacs" PAGE *H * Initialise the AES. This call must precede any use of VDI or AES. *H * id = appl_init() * * long id This is >=0 if the call worked, and represents the * applicatiJHO π25*5 LIBFNR appl_init,0 SETPTS 0,1,0 CALLW appl_init,10 RETURN IO,0 *H * Read bytes from a message pipe *H * rc = appl_read( id, n, buffer ) * * long id The id of the application whose message stream is * to be read (normally your own id) * long n The number of bytes to be read * long buffer The buffer area to be filled with the data * long rc This is >0 if the call worked. *H LIBFNR appl_read,3 LONG AI,0 WORD II,1 WORD II,0 SETPTS 2,1,1 CALLW appl_init,11 RETURN IO,0 *H * Write bytes to a message pipe *H * rc = appl_write( id, n, buffer ) * * long id The id of the application whose message stream is * to be written to (normally not your own id) * long n The number of bytes to be written * long buffer The buffer area holding the data * long rc This is >0 if the call worked. *H LIBFNR appl_write,3 LONG AI,0 WORD II,1 WORD II,0 SETPTS 2,1,1 CALLW appl_write,12 RETURN IO,0 *H * Find the id of another application *H * id = appl_find( name ) * * string name K Null terminated string of exactly eight characters, * padded with spaces if required. The name is the filename * of another application. * long id The id of the new application, or -1 if the call failed. *H LIBFNR appl_find,1 WORD II,0 SETPTS 0,1,0 CALLW appl_find,13 RETURN IO,0 *H * Replay a recording of user interaction created with appl_trecord *H * appl_tplay( buffer, n, speed ) * * long buffer The buffer area used to store the recording. * long n The number of interactions to play back * long speed A number in the range 1-10000 indicating the speed the * playback is to be run at. *H LIBFNR appl_tplay,3 WORD II,1 WORD II,0 LONG AI,0 SETPTS 2,1,1 CALLW appl_tplay,14 RETURN IO,0 *H * Make a recording of user interactions *H * n = appl_trecord( buffer, size ) * * long buffer The buffer area used to store the recording. * long size The number of interactions to be recorded. Each * interaction requires 6 bytes of buffer memory, so * this number is the buffer size divided by 6. * long n The number of interactions recorded. *H LIBFNR appl_trecord,2 WORD II,0 LONG AI,0 SETPTS 1,1,1 CALLW appl_trecord,15 RETURN IO,0 *H * Close down the application library *H * rc = appl_exit() * * long rc Returns >0 if no error. *H LIBFNR appl_exit,0 SETPTS 0,1,0 CALLW apcg RETURN IO,0 END *H * F* * Metacomco interface library to the GEM system * * F* * The Metacomco mechanism for calling C is to place all arguments on * * the SP stack in reverse order. The arguments are all passed as * * longwords. Some C compilers (eg DRI C => graphics and GEM) require * * word arguments. This library provides the necessary interface code. * * F* * Section 9: AES Event functions $* * F* * (C) Copyright 1985 METACOMCO plc. All Rights reserved. * *H * ,Last Changed 2 8 FEB 86 * *H INCLUDE "aesmacs" PAGE *H * Wait for a keyboard event *H * keycode = evnt_keybd() * * long keycode The ASCII value of the key pressed is in the low * order byte. The next highest order byte contains * the scan code which must be examined if the low * order byte is zero. *H LIBFNR evnt_keybd,0 SETPTS 0,1,0 CALLW evnt_keybd,20 RETURN IO,0 *H * Wait for a mouse button event *H * n = evnt_button( clicks, mask, state, &x, &y, &button, &kstate ) * * long clicks The number of times the button must enter the required * state (eg 2 for a double click) * long mask A mask for the buttons (bit 0 set for left, bit 1 for * right) * long state The button state required. Same bits as above, set for * button down and unset for button up. * word x,y The mouse position when the button was pressed. * word button The mouse button state when the event happened (same bit * settings as 'state' above) * word kstate The keyboard state when the button was pressed. Bits are * set as follows, set to 0 if the key is up and 1 if down. * 0 Right shift key * 1 Left shift key * 2 Control key * 3 Alternate key * long n The number of times the button entered the state requested. *H LIBFNR evnt_button,7 LPOINTW kstate LPOINTW button LPOINTW y LPOINTW x SETEXIT WORD II,2 WORD II,1 WORD II,0 SETPTS 3,5,0 CALLW evnt_button,21 SPOINTW IO,1,x SPOINTW IO,2,y SPOINTW IO,3,button SPOINTW IO,4,jDrp RETURN IO,0 *H * Wait for a mouse movement event *H * evnt_mouse( flags, x, y, w, h, &mx, &my, &button, &kstate ) * * long flags This routine waits for the mouse to enter or leave * a rectangle on the screen. If this flag is zero then * the event will happen when the mouse enters the rectangle; * if it is one then the event happens when it leaves it. * long x,y,w,h The x,y coordinates and the width and height of the * rectangle. * word mx,my The mouse position when the event happened. * word button The mouse button state (see event_button). * word kstate The keyboard state (see event_button). *H LIBFNR evnt_mouse,9 LPOINTW kstate LPOINTW button LPOINTW y LPOINTW x SETEXIT WORD II,4 WORD II,3 WORD II,2 WORD II,1 WORD II,0 SETPTS 5,5,0 CALLW evnt_mouse,22 SPOINTW IO,1,x SPOINTW IO,2,y SPOINTW IO,3,button SPOINTW IO,4,kstate RETURN IO,0 *H * Wait for a message event *H * evnt_mesag( buffer ) * * long buffer A sixteen byte message area which is used to contain * messages. *H LIBFNR evnt_mesag,1 LONG AI,0 SETPTS 0,1,1 CALLW evnt_mesag,23 RETURN I O,0 *H * Wait for a timer event *H * evnt_timer( low, high ) * * long timeout The timeout period requested. * long low, high The timeout period, specified as two word sized * values; the high order part and the low order part. *H LIBFNR evnt_timer,2 WORD II,1 WORD IO,0 SETPTS 2,1,0 CALLW evnt_timer,24 RETURN IO,0 *H * Wait for a mixture of events *H * status = evnt_multi( flags, clicks, mask, state, * flags1, x1, y1, w1, h1, * flags2, x2, y2, w2, h2, * buffer, low, high, &x, &y, &button, &kstate, * &keycode, &n ) * * long flags This function waits for any event, and is a mixture * of all the preceding routines. This value indicates * which events are being waited for with bits set as * follows. Note that two different mouse movement events * may be specified. * 0 Keyboard * 1 Button * 2 Mouse movement 1 * 3 Mouse movement 2 * 4 Message * 5 Timer * long clicks,mask The same variables as in the evnt_button call. * long state * long flags1,x1,y1 The same variables as in the evnt_mouse call. * long w1,h1 * long flags2,x2,y2 The same variables as in the evnt_mouse call, but enabling * long w2,h2 the mouse to be tracked to a second rectangle. * long buffer The messsage buffer as in the evnt_mesag call. * long low,high The timeout values as in the evnt_timer call. * word x,y The position of the mouse * word button The button state * word kstate The keyboard shift keys state * word keycode The keyboard scan code and ASCII value * word n The number of times the button entered state requested * long status The result is a bit pattern of the same form as 'flags' * above, showing what event has happened. *H LIBFNR evnt_multi,23 LPOINTW n LPOINTW keycode LPOINTW kstate LPOINTW button LPOINTW y LPOINTW x SETEXIT WORD II,15 WORD II,14 LONG AI,0 WORD II,13 WORD II,12 WORD II,11 WORD II,10 WORD II,9 WORD II,8 WORD II,7 WORD II,6 WORD II,5 WORD II,4 WORD II,3 WORD II,2 WORD II,1 WORD II,0 SETPTS 16,7,1 CALLW evnt_multi,25 SPOINTW IO,1,x SPOINTW IO,2,y SPOINTW IO,3,button SPOINTW IO,4,kstate SPOINTW IO,5,keycode SPOINTW IO,6,n RETURN IO,0 *H * Set or read back the mouse double click delay *H * current = evnt_dclick( new, mask ) * * long new The new delay for the time period between double key * clicks. This is a number ranging from 0 to 4. * long mask If set to zero, then the function reads the current * delay. If set to one, it sets it. * long current The current delay value (possibly newly set) *H LIBFNR evnt_dclick,2 WORD II,1 WORD II,0 SETPTS 2,1,0 CALLW evnt_dclick,26 RETURN IO,0 END _`P &o + ЫЫO// Bg?<JNA CN!R132V039 out of memoryB-4pNuH`aa:Ap2a"UH0LNuHHa;GApBA g g RAax`0;GLNuH=.JjDJjD6:HA48H@ք"HACHABCHCՃBJgp`JjpJjDJLNuH@00Qo0EG2<` mnRA@o0Pmnp`p`pL Nu/0T@a NuHn S@kQ`S@k QLNu/4<` RB@o$NuH瀀B@@g 0am 0zn0R@`LNuHpa\ataB<:0*a*a*a I</0*a*aaBL Nu B4B@H@ҀNuABAHA<AHAANu Z@H@R@pSaCaxgaTIJfp a(`aNJ-bfaJ@gp aLNu/Aa< _a>PbNuHat @f Ap a`8 Pf (*f -VgC` p a``aA"<BaLNuHa @f A>p a|`T<Ba$Ha @f A*p aZ`2CaJgp aF`a @f Ap a0`ab%ILNuHa @f Ap a`a:A|<BafJfjJ-YgAajJfX`B-[B-\B-]B-^J-Zg Aa?\Jf4J-Wg A.aVJf"`,a -agApa4,Bra4P`a*a`tNu/ R"@ NuH"-ga7"-ga7"-ga7 "-ga7LNuGST 68000 LinkerPageCommand line information *Command line and control file information Object module information Load map Symbol table Cross-reference - continued Command line Control file 9Address Symbol Section Module QType Start End Module/entry Section name   MondayTuesday WednesdayThursdayFridaySaturdaySundayHNV| IPA0<Pr aa3*&OAC EaCA0avC.A0W@ahB+S@AC40aLC>A 0a>CHA0a0| PBmFBmH;|PJJmLf;|<LCJ-VgA`A.0a N^LNuHJ-YgBJmHfa@B@ 0 gR@`mJo mHfa"0-JaaJ0<QaSmHLNuHJ-YgB2-FRA;AFApaAd0a0-L;@HahafAPapAahaTAa^aV - f B 0 gR@`CAV0aP a - gA a aaLNu/Aa _NuH"-gA0aH`AH24 AgAfUHLNuStarting pass 1 Starting pass 2 Errors in linker command fileLink completed with errorsLink completed with warnings%Link completed with undefined symbolsLink successfully completed NV*Oaa#0a#dB-aa a0`N^Nuaaah g Ara" fNuB-cAa$& -[gaa l -cf$aa*Z -cfAa#a (a.B -cfa aaBa.B`aa mgAr`& mgAr` mgAr`AralNuH@ -agA"a#pBa#a2<aa+HD2<aa+H@2<NuH vNuHs0GTK g,f$+Gj>3`Np f>4`Np` `TK`0<"L NuH@BB2<< mLaL2< mHa@LNu pINPUT EXTRACT LIBRARY  FROM HB&mBmBg.+KRm kah g aPc`a&m&S`LNuHdCz g+ fTIN`XI``X<CA^a kaaRma @fA"k"-af<B g| Sm @!g kaDPc`CAaAazAar kajapaL @f"-'Aa @fa @g @!g| kaPc`<CAa ka aRma @f0"-a @f"a, @fA"k"-az<B g| Sm @!g kaXPc`| NE`aL&NuJ-`g*-a!>BB&mBmgN fFRm + g6 + gaR kad gaa"+a @fan&S` gPcaaNu0aNuJ-[g Aa aNuH@a& fB+ABmC P,naԎ`BQLNuH mfBA"-$<a8 f Bfp`0` ;BA+H` Aaa m+HSmRLNuHdBg:Bm*$+A"-a gAa\av` gaVL&NuH g"-aJ gAa LNu Absolute symbols (sorted by value) : User defined symbols (in input order) : Dummy common sections : %Undefined symbols (alphabetically) :  aataaA\a$NuH砘B l(mD tg aT h`X`J-\gaa V&ml(mgo4,ap.apa(m`(mιg -_g , f`a~(l`+K -_g@(m-_g gah`Cag, ga2(l`-_g+K`+m ga `LNuHhJ-`gdf -RѬ$l"mB gJlF"m")&A $Ka"mg") ) $ԁo l&B$Kn`)KJ-\ga &JBl"l&,gT#C#CJ-\ga )g,/ @rI a F(_$HaJ-\ga "$jf, g֩ "Q` , g"@"J-`g df+CLNuH"mJ-\ga g0 )Щ $i+JBgo4*a p>azLNu )Ѫ aNuH -^g.2*Ag&a̴ gp5a@Q^P]`%HBjLNuH&m@B l*$s(g*f %H JRmBj$R`X` g`$HAa\AaTCarI Ja$HCA 0a AR@0aAaa,$jfLNuH&m@B l2$s(g"*f*f*g%H J$R`X` g4J-\gCarI aP$HJ-\ga 2a$jfLNuH$-gJ-\gCa Bg&a$h%m J-\ga aR P`LNuH@"-fp,"-g A-_g ( gp-RLNua:BNua2BNuH@a2<aʠ -g$@$`+HB+H+HBB!CB BB1mBBLNuH@aa( f<( gA"p4aPcp!`" a|"h +H+I*)") LNuH@@"-fp,`"AJmo o#E *B`p?LNuHAa~$H(f(gAp;apB`R!C BfB1m`2 Bl$aR gp8`"h %I%i#J`p9LNuH`-_g mg( gp-`jgRځ g g gp<`@a\ +g -fa~ fa gp)`` gp(` fBLNuH BoAa`RhAa`f Bl`ABa g fF$H2<av"j g"`%HBBBB B!J1m%H AajLNuH@a\a f4( gA"p4a߼Pcp!` aR"h +H+I*)LNuaBBaBNuH -g< @!E"( l"gR!A (g"@) g o#A`өBLNu -[g0AC 0-aVp < Aap0-@  aNNuH瀀 -[g A a4LNu -g @( g -_gp-`aBNuH@a"-f m` A P+H+HB"a^*ggp1`BLNuaaNuH@ mfp,`0"(҃*!E-_g"mg ) g`aBLNuHp-_g"mg) gp-`Za\ fgapgagxaSDfg2IaagaBLNuHha< g.adJBf(`o a(( ` a h (( -fDքLNuHA"HJBl(a"JfLHa i P0(mgp1`2#H `*axJf$Ha -^g0(Rh@ h1BLNuaa,NuaBBBBNuH瀀 -g @!ELNuH@aJf6+H"h +I*)-_g"mg ) g`"aJLNuHg$$gHHg4H¶ga0`&g$gBgB4gaLNuHNV &O0<" K0a* Kp6aN^L Nulma|RNu module number not in module listHpNVB4XB-O-O g ɕʱg&p!"H KI`&n'&n'$n&n r"s JgNn6 2g%$H p n%$K&I"q n`2 2g%$I"q n%$K&H p n  @ "@Jf" 2g%'`F`^ n"p @ 0nB IN^LNuH jm: j6*SC Cg*BDBF:E20P40Pao 1P1P<RDCf6`LNuH@ mұg!P P` m2<Ia\+HLNuH`"( $) dp`fB@`pLNuH aLNuH$mvAm8`8g Dg$RRC`fp:AaٞrBaT`RAmA8`C8g Dg$RRC`fp:Aa^rBa`AmC`Aa2LNuH`"($)dp`dp`"( $) Adp`dp`pLNu ABSOLUTEHAa@$IaTCA0aA p"*aҪ Aa| Aa"JaLNuCOMMONSECTIONHAaaCA, gA0aĤA p",aƆҬAazA"0CPazC| PAaԀLNuH&IAalaCA p"+a.ҫ Aa"4+ar0Ca  Aa*LNuHa6CAp"* aA 0C a AaLNuHpPr AaLNu mSB Bo PSB`ANu undefineddefinedabsolute H -]f -^f -Zf`BB&m@ l$s g "R$ J$I`XB`I ra4 -]gaՎ` -^gaծ$Hg0 -]f -^ga$ -^ga2 -Zga$R`LNuHaIAp*fr?a`"* aĚA r a,*fABB`2*gABB`"*f A4*`&j4+&kA"a BgaaahLNuHalCAp*frFaL|U `B"* a*g|D `* j (f|A ` @( g|R `|C A 0C a Aa,LNuHp6*g2BAaaar"j Co4aabSC`aBAaLNuH0@4B HB Bo6<BC86<PACo ahav2< C0a4@RAL NuH0@4 HB Bo6< BC86<PACo a a.2<C0a@RAL Nu/A a _Nu ERRMSG.PROCKEY:SCREEN: Error withsource input file drive fullfile not foundmemory allocation failed.BIN.LNK.MAP.PRG.SYMGST 68000 Linker GST Linker finished LINKASM.OVRGST 68000 LinkerNVa A +HN^NuG& @fGL @fG6 @fGHNuaAxaA`aAaNuH,O/</<Ax/?<?<KNA.N m+@C`(mN+A+A`B+|+|LNuHP a Bf& g(m"-N ` 2&-a4`PaLP NuH(H,O/?< NA?< ?<NA.N Lr( "HTHa I 2pLpNuHЊ g(m"-0N`2vaPLQ Nu mg(mN,O f( f0<` f0<` f0NA.NLANuHP&2Jga> @fAaϢL NuH@ Ao fp axp arSA`LNuH@ g.f(B@@o 0 fR@``R@`(m"-NB`$ Ao fp ap a`a SA`LNuH,OJo"? O//<??<@NAJlp`B` DC??NAB.NLANuH&2aLNuH BBo&a:J@o& g f a&RBB`RB`| BJBfp2LNuH@,O?"O/ /<??<?NAJ@mB.NLCNuH0"H4BR@ 1.g@f 1.g$Eza @fBa @g2Ba`BaL NuH0"H4BR@ 1.g@f 1.g E$a @fa @g2a`aL NuH<a:LNuHP,O//??<?NA.NJm$BLA NuaBNuH,O?<?/?<BNA.NfB`X fP,O?<?/<?<BNA.N& o,p@o ,OHz(/??<@NA.NJn pATa`BLANu@H $-g ga+H+HJVcLNuH aLPNuH (H0B0,O/?<ANA.N L0B0,O?</?<