OgNfp N ON 1@o  @`! #@%`')+/1 3@579;=?A C@E`GIKMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{} @` @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  ` @`!Aa   !Oa!!O%a')+-/13A5a79;=?A!CEaGIKMQSAUaY]@o  @`! #@%`')+/1 3@579;=?A C@E`GIKMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{} @` @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  ` @`!Aa   !Oa!!O%a')+-/13A5a79;=?A!CEaGIKMQSAUaY]CTYPE H DOS H ED TTP  zERROR H *FCNTL H ,GEMLIB H -:!LC TTP 6FLC1 TTP 8RLC2 TTP ZLIB0 ASM  LIB1 ASM LIB2 ASM `@LIB3 ASM PLIB4 ASM LIB5 ASM !LIB6 ASM #8LIB7 ASM 2,LIB8 ASM >LIB9 ASM D 'LIMITS H N MATH H Oc OSBIND H R]PORTAB H WWREADME TXT XSETJMP H Z.STDIO H [ /** * * This header file defines various ASCII character manipulation macros, * as follows: * * isalpha(c) non-zero if c is alpha * isupper(c) non-zero if c is upper case * islower(c) non-zero if c is lower case * isdigit(c) non-zero if c is a digit (0 to 9) * isxdigit(c) non-zero if c is a hexadecimal digit (0 to 9, A to F, * a to f) * isspace(c) non-zero if c is white space * ispunct(c) non-zero if c is punctuation * isalnum(c) non-zero if c is alpha or digit * isprint(c) non-zero if c is printable (including blank) * isgraph(c) non-zero if c is graphic (excluding blank) * iscntrl(c) non-zero if c is control character * isascii(c) non-zero if c is ASCII * iscsym(c) non-zero if valid character for C symbols * iscsymf(c) non-zero if valid first character for C symbols * **/ #define _U 1 /* upper case flag */ #define _L 2 /* lower case flag */ #define _N 4 /* number flag */ #define _S 8 /* space flag */ #define _P 16 /* punctuation flag */ #define _C 32 /* control character flag */ #define _B 64 /* blank flag */ #define _X 128 /* hexadecimal flag */ extern char _ctype[]; /* character type table */ #define isalpha(c) (_ctype[(c)+1]&(_U|_L)) #define isupper(c) (_ctype[(c)+1]&_U) #define islower(c) (_ctype[(c)+1]&_L) #define isdigit(c) (_ctype[(c)+1]&_N) #define isxdigit(c) (_ctype[(c)+1]&_X) #define isspace(c) (_ctype[(c)+1]&_S) #define ispunct(c) (_ctype[(c)+1]&_P) #define isalnum(c) (_ctype[(c)+1]&(_U|_L|_N)) #define isprint(c) (_ctype[(c)+1]&(_P|_U|_L|_N|_B)) #define isgraph(c) (_ctype[(c)+1]&(_P|_U|_L|_N)) #define iscntrl(c) (_ctype[(c)+1]&_C) #define isascii(c) ((unsigned)(c)<=127) #define iscsym(c) (isalnum(c)||(((c)&127)==0x5f)) #define iscsymf(c) (isalpha(c)||(((c)&127)==0x5f)) #define toupper(c) (islower(c)?((c)-('a'-'A')):(c)) #define tolower(c) (isupper(c)?((c)+('a'-'A')):(c)) #define toascii(c) ((c)&127) k/** * * This header file supplies information needed to interface with the * particular operating system and C compiler being used. * **/ /** * * The following symbols define which processor is being used. * * I8080 Intel 8080 * I8085 Intel 8085 * Z80 Zilog Z80 * I8086 Intel 8086 or 8088 * M68000 Motorola 68000 * GA16 General Automation 16-bit mini * IBMPC IBM Personal Computer (also sets I8086) */ /** * * The following symbols specify which operating system is being used. * * CPM Any CP/M OS * CPM80 CP/M for Intel 8080 or Zilog Z80 * CPM86 CP/M for Intel 8086 * CPM68 CP/M for Motorola 68000 * MSDOS Microsoft's MSDOS * * Note: CPM will be set to 1 for any of the above. * * UNIX "Standard" UNIX * QUNIX Quantum's QUNIX OS * MIBS General Automation's MIBS OS * OASIS OASIS OS * PICK PICK OS * */ #if CPM80 #define CPM 1 #endif #if CPM86 #define CPM 1 #endif #if CPM68 #define CPM 1 #endif #if MSDOS #define CPM 1 #endif /** * * The following definitions specify the particular C compiler being used. * * LATTICE Lattice C compiler * BDS BDS C compiler * BTL Bell Labs C compiler or equivalent * MANX MANX Aztec C compiler * */ #define LATTICE 1 /** * * The following type definitions take care of the particularly nasty * machine dependency caused by the unspecified handling of sign extension * in the C language. When converting "char" to "int" some compilers * will extend the sign, while others will not. Both are correct, and * the unsuspecting programmer is the loser. For situations where it * matters, the new type "byte" is equivalent to "unsigned char". * */ #if LATTICE typedef char byte; #endif #if BDS #define byte char #endif #if BTL typedef unsigned char byte; #endif #if MANX #define byte char #endif /** * * Miscellaneous definitions * */ #define SECSIZ 128 /* disk sector size */ #if CPM #define DMA (char *)0x80 /* disk buffer address */ #endif /** * * The following structure is a File Control Block. Operating systems * with CPM-like characteristics use the FCB to store information about * a file while it is open. * */ struct FCB { char fcbdrv; /* drive code */ char fcbnam[8]; /* file name */ char fcbext[3]; /* file name extension */ #if MSDOS short fcbcb; /* current block number */ short fcblrs; /* logical record size */ long fcblfs; /* logical file size */ short fcbdat; /* create/change date */ char fcbsys[10]; /* reserved */ char fcbcr; /* current record number */ long fcbrec; /* random record number */ #else char fcbexn; /* extent number */ char fcbs1; /* reserved */ char fcbs2; /* reserved */ char fcbrc; /* record count */ char fcbsys[16]; /* reserved */ char fcbcr; /* current record number */ short fcbrec; /* random record number */ char fcbovf; /* random record overflow */ #endif }; #define FCBSIZ sizeof(struct FCB) /** * * The following symbols define the sizes of file names and node names. * */ #if CPM #if MSDOS #define FNSIZE 16 #define FMSIZE 64 #else #define FNSIZE 16 /* maximum file node name size */ #define FMSIZE 16 /* maximum file name size */ #endif #endif #if UNIX #define FNSIZE 16 #define FMSIZE 64 #endif /** * * The following structures define the 8086 registers that are passed to * various low-level operating system service functions. * */ #if I8086 struct XREG { short ax,bx,cx,dx,si,di; }; struct HREG { byte al,ah,bl,bh,cl,ch,dl,dh; }; union REGS { struct XREG x; struct HREG h; }; struct SREGS { short es,cs,ss,ds; }; #endif /** * * The following symbols define the code numbers for the various service * functions. * */ #if MSDOS #define SVC_DATE 0x2a /* get date */ #define SVC_TIME 0x2c /* get time */ #endif /** * * The following codes are used to open files in various modes. * */ #if LATTICE #define OPENR 0x8000 /* open for reading */ #define OPENW 0x8001 /* open for writing */ #define OPENU 0x8002 /* open for read/write */ #define OPENC 0x8001 /* create and open for writing */ #else #define OPENR 0 #define OPENW 1 #define OPENU 2 #endif /** * * The following codes are returned by the low-level operating system service * calls. They are usually placed into _oserr by the OS interface functions. * */ #if MSDOS #define E_FUNC 1 /* invalid function code */ #define E_FNF 2 /* file not found */ #define E_PNF 3 /* path not found */ #define E_NMH 4 /* no more file handles */ #define E_ACC 5 /* access denied */ #define E_IFH 6 /* invalid file handle */ #define E_MCB 7 /* memory control block problem */ #define E_MEM 8 /* insufficient memory */ #define E_MBA 9 /* invalid memory block address */ #define E_ENV 10 /* invalid environment */ #define E_FMT 11 /* invalid format */ #define E_IAC 12 /* invalid access code */ #define E_DATA 13 /* invalid data */ #define E_DRV 15 /* invalid drive code */ #define E_RMV 16 /* remove denied */ #define E_DEV 17 /* invalid device */ #define E_NMF 18 /* no more files */ #endif struct MELT { struct MELT *fwd; #if FPTR unsigned size; /* number of MELTs in the block */ #else long size; #endif }; #define MELTSIZE sizeof (struct MELT) `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Љ**0印XlNurT!|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,(jNNs0^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 /** * * The following symbols are the error codes returned by the UNIX system * functions. Typically, a UNIX function returns -1 when an error occurs, * and the global integer named errno contains one of these values. * */ #define EPERM 1 /* User is not owner */ #define ENOENT 2 /* No such file or directory */ #define ESRCH 3 /* No such process */ #define EINTR 4 /* Interrupted system call */ #define EIO 5 /* I/O error */ #define ENXIO 6 /* No such device or address */ #define E2BIG 6 /* Arg list is too long */ #define ENOEXEC 7 /* Exec format error */ #define EBADF 9 /* Bad file number */ #define ECHILD 10 /* No child process */ #define EAGAIN 11 /* No more processes allowed */ #define ENOMEM 12 /* No memory available */ #define EACCES 13 /* Access denied */ #define EFAULT 14 /* Bad address */ #define ENOTBLK 15 /* Bulk device required */ #define EBUSY 16 /* Resource is busy */ #define EEXIST 17 /* File already exists */ #define EXDEV 18 /* Cross-device link */ #define ENODEV 19 /* No such device */ #define ENOTDIR 20 /* Not a directory */ #define EISDIR 21 /* Is a directory */ #define EINVAL 22 /* Invalid argument */ #define ENFILE 23 /* No more files (units) allowed */ #define EMFILE 24 /* No more files (units) allowed for this process */ #define ENOTTY 25 /* Not a terminal */ #define ETXTBSY 26 /* Text file is busy */ #define EFBIG 27 /* File is too large */ #define ENOSPC 28 /* No space left */ #define ESPIPE 29 /* Seek issued to pipe */ #define EROFS 30 /* Read-only file system */ #define EMLINK 31 /* Too many links */ #define EPIPE 32 /* Broken pipe */ #define EDOM 33 /* Math function argument error */ #define ERANGE 34 /* Math function result is out of range */ Q/** * * The following symbols are used for the "open" and "creat" functions. * **/ #define O_RDONLY 0 /* Read-only value (right byte of mode word) */ #define O_WRONLY 1 /* Write-only value */ #define O_RDWR 2 /* Read-write value */ #define O_NDELAY 4 /* Non-blocking I/O flag */ #define O_APPEND 8 /* Append mode flag */ #define O_CREAT 0x0100 /* File creation flag */ #define O_TRUNC 0x200 /* File truncation flag */ #define O_EXCL 0x400 /* Exclusive access flag */ #define O_RAW 0x8000 /* Raw I/O flag (Lattice feature) */ /** * * The following symbols are used for the "fcntl" function. * */ #define F_DUPFD 0 /* Duplicate file descriptor */ #define F_GETFD 1 /* Get file descriptor flags */ #define F_SETFD 2 /* Set file descriptor flags */ #define F_GETFL 3 /* Get file flags */ #define F_SETFL 4 /* Set file flags */ i/** * * This file contains useful macros and structures for use with GEMLIB. * **/ /* EVENT Manager definitions */ /* multi flags */ #define MU_KEYBD 0x0001 #define MU_BUTTON 0x0002 #define MU_M1 0x0004 #define MU_M2 0x0008 #define MU_MESAG 0x0010 #define MU_TIMER 0x0020 /* keyboard states */ #define K_RSHIFT 0x0001 #define K_LSHIFT 0x0002 #define K_CTRL 0x0004 #define K_ALT 0x0008 /* message values */ #define MN_SELECTED 10 #define WM_REDRAW 20 #define WM_TOPPED 21 #define WM_CLOSED 22 #define WM_FULLED 23 #define WM_ARROWED 24 #define WM_HSLID 25 #define WM_VSLID 26 #define WM_SIZED 27 #define WM_MOVED 28 #define WM_NEWTOP 29 #define AC_OPEN 40 #define AC_CLOSE 41 /* FORM Manager Definitions */ /* Form flags */ #define FMD_START 0 #define FMD_GROW 1 #define FMD_SHRINK 2 #define FMD_FINISH 3 /* RESOURCE Manager Definitions */ /* data structure types */ #define R_TREE 0 #define R_OBJECT 1 #define R_TEDINFO 2 #define R_ICONBLK 3 #define R_BITBLK 4 #define R_STRING 5 /* gets pointer to free strings */ #define R_IMAGEDATA 6 /* gets pointer to free images */ #define R_OBSPEC 7 #define R_TEPTEXT 8 /* sub ptrs in TEDINFO */ #define R_TEPTMPLT 9 #define R_TEPVALID 10 #define R_IBPMASK 11 /* sub ptrs in ICONBLK */ #define R_IBPDATA 12 #define R_IBPTEXT 13 #define R_BIPDATA 14 /* sub ptrs in BITBLK */ #define R_FRSTR 15 /* gets addr of ptr to free strings */ #define R_FRIMG 16 /* gets addr of ptr to free images */ /* WINDOW Manager Definitions */ /* Window Attributes */ #define NAME 0x0001 #define CLOSER 0x0002 #define FULLER 0x0004 #define MOVER 0x0008 #define INFO 0x0010 #define SIZER 0x0020 #define UPARROW 0x0040 #define DNARROW 0x0080 #define VSLIDE 0x0100 #define LFARROW 0x0200 #define RTARROW 0x0400 #define HSLIDE 0x0800 /* wind_create flags */ #define WC_BORDER 0 #define WCu_WORK 1 /* wind_get flags */ #define WF_KIND 1 #define WF_NAME 2 #define WF_INFO 3 #define WF_WORKXYWH 4 #define WF_CURRXYWH 5 #define WF_PREVXYWH 6 #define WF_FULLXYWH 7 #define WF_HSLIDE 8 #define WF_VSLIDE 9 #define WF_TOP 10 #define WF_FIRSTXYWH 11 #define WF_NEXTXYWH 12 #define WF_RESVD 13 #define WF_NEWDESK 14 #define WF_HSLSIZE 15 #define WF_VSLSIZE 16 #define WF_SCREEN 17 /* update flags */ #define END_UPDATE 0 #define BEG_UPDATE 1 #define END_MCTRL 2 #define BEG_MCTRL 3 /* GRAPHICS Manager Definitions */ /* Mouse Forms */ #define ARROW 0 #define TEXT_CRSR 1 #define BUSYBEE 2 #define POINT_HAND 3 #define FLAT_HAND 4 #define THIN_CROSS 5 #define THICK_CROSS 6 #define OUTLN_CROSS 7 #define USER_DEF 255 #define M_OFF 256 #define M_ON 257 /* polyline end styles */ #define SQUARED 0 #define ARROWED 1 #define ROUNDED 2 /* polyline line styles */ #define SOLID 1 #define LDASHED 2 #define DOTTED 3 #define DASHDOT 4 #define DASHED 5 #define DASHDOTDOT 6 /* interior types for filled areas */ #define HOLLOW 0 /* #define SOLID 1 same as above */ #define PATTERN 2 #define HATCH 3 #define UDFILLSTYLE 4 /* a selection of fill patterns */ #define DOTS 3 #define GRID 6 #define BRICKS 9 #define WEAVE 16 /* text special effects */ #define THICKENED 0x0001 #define SHADED 0x0002 #define SKEWED 0x0004 #define UNDERLINED 0x0008 #define OUTLINE 0x0010 #define SHADOW 0x0020 /* gem writing modes */ #define MD_REPLACE 1 #define MD_TRANS 2 #define MD_XOR 3 #define MD_ERASE 4 /* bit blt rules */ #define ALL_WHITE 0 #define S_AND_D 1 #define S_AND_NOTD 2 #define S_ONLY 3 #define NOTS_AND_D 4 #define D_ONLY 5 #define S_XOR_D 6 #define S_OR_D 7 #define NOT_SORD 8 #define NOT_SXORD 9 #define D_INVERT 10 #define NOT_D 11 #define S_OR_NOTD 12 #define NOTS_OR_D 13 #define NOT_SANDD 14 #define ALL_BLACK 15 /* Graphic types of objects */ #define G_BOX 20 #define G_TEXT 21 #define G_BOXTEXT 22 #define G_IMAGE 23 #define G_USERDEF 24 #define G_IBOX 25 #define G_BUTTON 26 #define G_BOXCHAR 27 #define G_STRING 28 #define G_FTEXT 29 #define G_FBOXTEXT 30 #define G_ICON 31 #define G_TITLE 32 /* Object flags */ #define NONE 0x0000 #define SELECTABLE 0x0001 #define DEFAULT 0x0002 #define EXIT 0x0004 #define EDITABLE 0x0008 #define RBUTTON 0x0010 #define LASTOB 0x0020 #define TOUCHEXIT 0x0040 #define HIDETREE 0x0080 #define INDIRECT 0x0100 /* Object states */ #define NORMAL 0x0000 #define SELECTED 0x0001 #define CROSSED 0x0002 #define CHECKED 0x0004 #define DISABLED 0x0008 #define OUTLINED 0x0010 #define SHADOWED 0x0020 /* Object colour numbers */ #define WHITE 0 #define BLACK 1 #define RED 2 #define GREEN 3 #define BLUE 4 #define CYAN 5 #define YELLOW 6 #define MAGENTA 7 #define LWHITE 8 #define LBLACK 9 #define LRED 10 #define LGREEN 11 #define LBLUE 12 #define LCYAN 13 #define LYELLOW 14 #define LMAGENTA 15 /* editable text field definitions */ #define EDSTART 0 #define EDINIT 1 #define EDCHAR 2 #define EDEND 3 /* editable text justification */ #define TE_LEFT 0 #define TE_RIGHT 1 #define TE_CNTR 2 /* Structure Definitions */ typedef struct object { short ob_next; /* -> object's next sibling */ short ob_head; /* -> head of object's children */ short ob_tail; /* -> tail of object's children */ unsigned short ob_type; /* type of object- BOX, CHAR,... */ unsigned short ob_flags; /* flags */ unsigned short ob_state; /* state- SELECTED, OPEN, ... */ long ob_spec; /* "out"- -> anything else */ short ob_x; /* upper left corner of object */ short ob_y; /* upper left corner of object */ short ob_width; /* width of object */ short ob_height; /* height of object */ } OBJECT; typedef struct orect { struct orect *o_link; short o_x; short o_y; short o_w; short o_h; } ORECT; typedef struct grect { short g_x; short g_y; short g_w; short g_h; } GRECT; typedef struct text_edinfo { long te_ptext; /* ptr to jtext (must be 1st) */ long te_ptmplt; /* ptr to template */ long te_pvalid; /* ptr to validation chrs. */ short te_font; /* font */ short te_junk1; /* junk short */ short te_just; /* justification- left, right... */ short te_color; /* color information short */ short te_junk2; /* junk short */ short te_thickness; /* border thickness */ short te_txtlen; /* length of text string */ short te_tmplen; /* length of template string */ } TEDINFO; typedef struct icon_block { long ib_pmask; long ib_pdata; long ib_ptext; short ib_char; short ib_xchar; short ib_ychar; short ib_xicon; short ib_yicon; short ib_wicon; short ib_hicon; short ib_xtext; short ib_ytext; short ib_wtext; short ib_htext; } ICONBLK; typedef struct bit_block { long bi_pdata; /* ptr to bit forms data */ short bi_wb; /* width of form in bytes */ short bi_hl; /* height in lines */ short bi_x; /* source x in bit form */ short bi_y; /* source y in bit form */ short bi_colour; /* fg colour of blt */ } BITBLK; typedef struct user_blk { long ub_code; long ub_parm; } USERBLK; typedef struct parm_blk { long pb_tree; short pb_obj; short pb_prevstate; short pb_currstate; short pb_x; short pb_y; short pb_w; short pb_h; short pb_xc; short pb_yc; short pb_wc; short pb_hc; long pb_parm; } PARMBLK; typedef struct fdbstr { long fd_addr; short fd_w; short fd_h; short fd_wdwidth; short fd_stand; short fd_nplanes; short fd_r1; short fd_r2; short fd_r3; } FDB; typedef struct mfstr { short mf_xhot; short mf_yhot; short mf_nplanes; short mf_fg; short mf_bg; short mf_mask[16]; short mf_data[16]; } MFORM; `L&o + ЫЫO// ?<?<JNAO Hy?< NA\G(KC EB>CON: >CON: "<$<Jgx  gp  g*  g$ -g$ >g %g =g`RS@`J9 gHyy?< NA\`8MJg +f +Qf|Oat`|`MJg +f +Sf|Par`R`Hy[?< NA\`J9 f *K(a&M  >f>Ra.`Jg"SR + g + g Jg`NuJg"SR + g + g Jg`NuHy2?< NA\&L@/ ?< NA\RJgHy?< NA\`:J9 fHy?< NA\` HyHy Hy?<?<KNAOJf:Hy?< NA\HyHyHy?<?<KNAOJfHy`Hy?< NA\Hy?< NA\?<?<NAX f??<LNALC1.TTPLC2.TTPLC Version 3.03 Copyright (C) 1985 by Metacomco plc. All rights reserved. File name missing Enter command line or to exit Invalid command line option Parameters beyond file name ignored Compilation failed Compilation successful Enter to exit BCDILNPQUXbcdilnpquxFORSTforst.** v&`1 &&o#1|AB(HSB$H  g  g  f RSBj` g =g %gJ`Rpr A9nA0m/ПЁRSBk`Jg n <#F`zRpr A9nA0m/ПЁRSBkT`JgN n <#E`8C1H`C1(rRSBk$  g  g  gQp`JBkQB"+ҫ F$9Eg< n$<&ւֹF// Bg?<JNAJg0<`< .AF#1h#1l#1pN"/ K ,MNpN)z??<LNA` /`NVBFp#F Fl nHHR"@EgR` nJgZ 9FRF @F  nHHJgR"@EfR` nrR@JfpNqHyVHy1Hy1(NO 91H-@ >g"HyV(Hy1Hy1HNO -@` HyV(Hy1Hy1INO -@HyV@Hy1Hy1NO -@Jf p/N!4XJf/.Hy1NPp/N X/9ENX//.N@P n(@Jf/.Hy1NPp/N XNy^ FfDHy1NXHy1NXp//.BNO p#F Fl nHHR"@EgR` nJgZ 9FRF @F  nHHJgR"@EfR` nrR@JfpNq Ff\B . l rN0 @V/NXR`B .갹Fl/N XR`p/N!4XHy1NXHyF/9FN,PBN XN^NuNV 9G gJf=n=|-H-H Gf09GHHy1/N;PJg09GH/./N;PJfp;/NX`L09GH dH>RJ>p-@ nEg2 f SJ>pN^Nu yJ>H>RJ>p-@` nEJf . _fB nEJf . _g $f4 .5l R". yJ>H>RJ>p-@` .B6SJ>p/HnNǔP-@Jg$"@ i Jg/N>XR` nRpN^Nu nEgB 0f, yJ>H>RJ>p-@ Xg xf yJ>H>RJ>p-@ nEg . nE-@g".0 nEg .7 nEg .W yJ>H>RJ>p-@`f . 0m 7n| .".0 yJ>H>RJ>r-@-A` nEg8 .r N0".0Ё yJ>H>RJ>r-@-A` . lf LgSJ> n pN^Nu ."<kRfN)`:(`,?`:`|`^`&`=`V!`H>`<`+`*`|/`N%`@~`,-`'`B yJ>H>RJ>p-@ 'fpN^NuB . 'g g f SJ>pN^Nu \fB yJ>H>p yJ>H>RHn//NFO ".RӹJ>-@`JKFg/.NX-@ .က yJ>H>RJ>r-@-AR`B n pN^NuJGBgpN^Nup n pN^Nup n N^Nu nR yJ>H> *f SJ>pN^Nu nRpN^NupN^Nu yJ>H>RJ>p-@ pN^Nu yJ>H>RJ>p-@ >f nRpN^Nu =f p n `SJ>p n pN^Nu nR yJ>H> 9J>R#J>r-A =g SJ>pN^NupN^Nu yJ>H>RJ> &fp N^NuSJ>pN^NupN^Nu yJ>H>RJ> |fp N^NuSJ>p N^Nu nRp N^Nup N^NupN^NuSJ>pN^NupQ/NXNBN^NuNV n (Sg"n Q-h/aX n n (m lN`.`L````t`````` n (Jf nD` nFpN^Nu n ( g4 gJf: n ".N0 `& . n"N04 ` . n"N04 pN^Nu n (Jf . nѐ` . n pN^Nu n (Jf n ". ` n ". pN^Nu n ( ddN```.`B . n]DHH `@ . n_DHH `* . n^DHH ` . n\DHH pN^Nu n (Jf . nWDHH ` . nVDHH pN^Nu . npN^Nu . npN^Nu . npN^NuJg nJgp`p n pN^NuJf nJfp`p n pN^Nu n f n JfpN^Nu"n QJg .` n  n n /a6X n pN^NupN^NuNVp/NX @ !n N^NuNV n-Pp//NbP .N^NuNV095gpN^NuB/.NPp/HnNPp. n r.-A Afp@@@`/.HnNPB/.HnaDP".ЁA/./-@a*P".ЁA/./-@aPѮ .TN^NuNVJ fp nRN^Nup n-@Jf n 1|`v o p/NX .U-@ op-@p n(r( n 1@\ B-@ .l nV"nR` .RN^NuNVH 9Gr k*fN`.``` pLN^NuN!p/HnN&P-@ gJf Ggp -@Jg .LN^NuN!/. n/N2P n Hn/.N^Pp//p/ n /N1O n /./././N~O"n Q1|Bh-@Jf/./././N~O-@ n /N20X n .LN^Nu nJg& h0(U@g nJ g h 0(S@fJg p LN^Nu n0( g /N2X/.N;TX n0(@ 1@`L nJg h0(U@g nJ g p LN^Nu/.N;TX n0( f@1@N!JGg p LN^Nu"n i-hJg$HyG n/(Na6PJg n-P`Jfp/NɚX"n i-@Jf!@`"n i"h""n i!n 9Q4 n1@HyGNatXR/NX n!@/HyGNaP n#KhpLN^NuN! n0(@ "n2)ARA3@#h #h (ѩ0(J@g0)@3@#HpLN^Nu nJ g h 0(J@g pLN^Nup-@-@-yKx|?"9GF0RGFAr0AAAB.-@-@-@-@N!"n i -h Ggp/HnN&P-@Rfp-@JfJgH n0( _@f JfJfpW/NX`B`/.HnaPR n-P`JgpW/NXBHnN9X0.@J@f JfJfHnNSX`Jf Jg n0(@U@g p/NXHnN:XJg0.gp//.//<@HnHn/N@O 9KxK|o#K|p-@ . o6 9f .0S`".6R=|-n-|5-np-@/HnHnp//9PN OѹPHnHnN^P0.H gh-n n2(H/AH @fF"/f2Jg,$n"Rf n"nfJf 0)@3@p/NXHn/-@N^PJf-n` n -n nB GfN! GfPp-@`FJf Ggp-@Jg n0( _@fJg pW/NXJgHJf$p///.p!//9PN OѹP n-Pp//NbP-n`HnNjX#KxSGFJg .LN^Nu n0(@_@f h Jf=|`t n0(@@@=@-yPRP h "P-I$n j-Hp-@f.g&0(@U@gp-@0.@=@-|5HnB/.p //9PN OѹPp#P f0.@ =@BHn/.N^PN!pLN^NuNV n JgB h0(U@f6 n Jf, n0(g h"n g pX/NXN^Nu/.N9X n0(@J@g"n Jg /N4LXJgDpX/NX`4 n JgpX/NX` n 0( @ n2(AAgpY/NX n 0( Hr////.NIO` n0(@=@ n Jfd nJ fZ n JfP nJfF n 0( H"9Q4f nl$=A` n 0( @[@f nf=| n 0( H2.H n/(/( / n /(/(/NOJg pX/NXN^Nu Gfp/NXNB095@35 g@35aNu 9G m g f095@35a 9KVR#KV l4HyGNX#G f@RJ>NBNutXRf p#GNu yJ>H> #gBK^`BK^ 9G !g295AJAgT fp#G3G`r Gfp#GByG`V GfJp#G3G`8 Gfp#GByG` Gfp#G3GNu !Hg p/NXp!#H`pQ/NXNBNu095 g p/NX095@ 35aNuNV-|G-|HB . l nr"n-AR` 9G#HG#HN^NuNPNQH~0pr3@3@3@3@3@"( i a| 0f` -f iad 0m8 9n23F <)i/gRi`aJ<) ҆Bц` .f JifnRi` Eg ef\a i  +g -f ia 0m6 9n0i :)iFi im`?)_ f $hB`4)?)_gDBi/gX3|?Jk Si`Jig$ktXiQabSi`aRi`t4)?)_gN/ $h$$$h$p0)SL ~NYNXNu$hBRRiNu|H0$&҃тdRL Nu/t?<@ B m RSWfO$NuNVp=|-yP-@-@-@-@ 9G g f&Rr////.N1O-@N!` Gn XB Gf09GHHy5/N;PJf2JGf"BHyGNǔP-@Jg @0(gJg n0( @fp /NX @-HP"@X/ //N "O Jf Ggp-@ np //NbP`S/.N20X-@Jgd @2(]AfZ0(]@fR/N20X-@"9Q8=A n2(H/(//NO -@ np //NbP`p#G3G GfD09G @f8p#G3Gp /NX @!yP Pr#GJ-@ 9G f429GH/.///.N1O-@r#GN!` 9Gr0kfN```V`6``BHyGNP-@N! n0(@J@gV Gg* 9Q4@1@ h#Khp /NX` 9Q4 n1@!|5Bh n0(fg p3/NX n0(g*@@=@-hđ-H-H n-h ` n0(@=@0(@1@-H-h-hB`=|=yGN!`=|-yGN!`=|-|GAB-H09PH".l n"nRRR`N!`J09GH/Nw0X-@N!Bn n-H-Hȑ-H-H`N!`p-@ fB`B  f*HnN9X0.@J@fJGJf p-@`Jfn Gf6Jg\JgV n0( @fHS/.N20X-@N!`0.@J@f /. HnHnHnNO-@` fBJfj0.@J@f^JgX n0(J@fLJg n0(]@f0(S@g20. gp-@` 0.@=@p//.N5lP-@Jf Gf@09G @m4T@3GHB//9G/.N1O-@r#GN! Gf`Jf . @2JgJf . @2 gJo$Jg n0( @f=|N!` Gf,Jg& n0( @f0(J@fp#G3G 9G m< n4Jg n0(H"9Gmf g gvJg n0( @f 0(S@f/N20X-@Jfp-@Jf/. HnHn/.N~O-@Jfx/.N20X-@`XB 9G m8 n0HnN7XHnN3 XHnN8XHnN;TX GfD09GJ@fp /NXr @1A4.B-@JBg:RA1AHnN4LXJf n0(R@1@ n P!yP`p//Hnp(//9PN OѹP` n-h n0(J@f`!yP PHnHnN^PHnN2Xp//Hnp)//9PN OѹPHnHnN^P`6 n0(S@f P!yP` n0(U@f#P#PB Gf.  g$p//Hnp&//9PN OѹP Gf.  g$p//Hnp$//9PN OѹP0.R@fp[-@`DHn/.N2P-@29GH/.//9G/.N1O-@N!``p#GJJg"/.N2X-@JfJfp-@Jg"/.N20X-@JfJfpN^NuJg .N^NuJgpN^Nu0. @g@_@f JfpN^Nu  f0.@J@fpN^Nu  f .谹PgpN^Nu0. g gJg n0(U@gpN^Nu0.?@@J@f"0/ fJg n0(U@gpN^Nu0.@J@f n0(@BJ@gpN^NuHn/.N^PpN^Nu . gNJgJHnN3XJg:HnN9X0.@J@f" n0(@U@gpN^NuHnN:XHnN3 XHnN7XHnN;TX  g HnN8XHn/.N^PpN^NuNVp /NX". @1A".1A!n N^NuNVp/NX/. /-@N^P n  N^NuNVJf p/NX nJg hp //NbP n-Pp //NbP .N^NuNVJf p/NX n-Pp//NbP .N^NuNV-yPRP n0(@@@=@-h -hp-@Hn////9PN OѹPHn/.N^PN^NuNV n0(@J@fJ g h 0(U@gN^NuB n0( g @1@` n0(@1@ n/( aX n!@ N^NuNV n0(@J@gpN^Nu n0(f J f JgpN^NupN^NuNV n0(@J@gpN^Nu nJ g h 0(J@gU@fpN^Nu n0( gpN^Nu n0( gpN^Nu n0(gpN^NupN^NuNV n0(@J@f p /NX n0(H dN`.``>``J`d n0(J@VDHH N^Nu n(JVDHH N^Nu nJVDHHN^Nu n (N+VDHH N^Nu n ( VDHH N^Nup /NXN^NuNVJg n0(U@g .N^Nup /NX n"@"3|N^NuNVp /NX @ 1nN^NuNV-yPRP0.@@@=@-H-H-HHn//. /./9PN OѹPHn/. N^PN^NuNV-yPRP0.@@@=@-n-n BHn/./././9PN OѹPHn/. N^PN^NuNV/. a&XJf/. aXXJfpN^Nu/. HnN^P 9Q8=@p-@Jg2 n 0( g /aX` /. aX/. HnN^PHn n/aP n "n3| .3@/./Hn/ N~O-@JgN^Nu n1|BhHn"n/aP n /./Hn/.N~O-@JgN^NuJgHn/. N^P`0Hn/. N^P n 0( g/aX` /. aXpN^NuNV n0( @g fN^Nu/.HnN^P=| n=hڑ-H0.@@@=@-yPRP-H-H-HHnHnHnp//9PN OѹPHn/.N^PN^NuNV/.HnN^P=| n=hBHnHn/. p//9PN OѹPN^NuNV n0(@J@fJg0( f gN^Nu nJ f -yQ4`>09PY@f09P fp`p29P-@UAf n0( gp-@ .=@ n-hp!@J fp`p -@JjD nJ fp`p-@ f .=@`-n n0(=@H/(/( //Hn//.a,O.g n0(@1@N^NuNV n0(g4 9Q41@ (-@ Q4f1@` n!nN^NuNV n0(g h`"n i"n 0)-Hg i`"n i"nVDHHN^NuNV n0(g /aNXN^Nu"n i0(@U@f0)HQ43@BN^Nu n!|5 0( g@1@/aX` n0(@1@N^NuNVB . n g . n fpN^NuR`pN^NuNVH n0(?@@J@f-h n0(?@@H @@f0/@2/@f$n"j f j"nftJfJg0 i0(@U@g LN^Nu"n i0(S@gLN^Nu"n i#Kh095f p^/NX n0(@1@LN^NuNVH J fJfpP/NXpLN^NuB/.NP-@.fJg n2(JAf Gf @2(Hf\4.H/././/(/(/NOJgpH/NX`& n0( f h#Khp?/NX.g n n1n!n!n n JgB-hJg n0( @f 9Q41@ n=h h-HfH nJg h0(@U@g. n!|5` 0.@ @gJ@f 9Q4 n1@p//./.NO n1n!n-@ n-h`B n!n n "n#h` n !n n !npLN^Nu n JgpA/NXpLN^Nu.f"Jg n0(J@f0.@@=@ n0(?@@J@f0/ f*.f" h#Khp?/NXpLN^Nu n0(H2.H/././/(/(/NOJgj nJgT h0(U@fHJgB n0(U@f6"n0)H"i2.H/.//$n/*//NOJg pH/NX n0(@J@f.f n1n!n!n Gf09GJ@fN!/.NURX.f.Jg( n0(U@fJfpC/NXp n!@.g nJgB//9KpNO #Kp`B/./9KtNO #Kt0.H/././NO B//9KlNO #Kl/./.NPpLN^NuNVH J fJfpP/NXpLN^NuB/.NP-@.f"Jg n0(J@f0.@@=@ n0(@J@f0(HKbf" h#Khp?/NXpLN^Nu Kbf& n0( g h#Khp?/NX.g2 n0(J@g nJg-P` n0(J@g8p /NɚX n "@#h-P n1n!n!nBh n-h"n #Hp /NɚX @B!n-@ n0(H2.H/././/(/(/NOJg nJgT h0(U@fHJgB n0(U@f6"n0)H"i2.H/.//$n/*//NOJg2pH/NX`$B/.N>P-@`.g nBh n0(@J@g1n!n!n Gf09GJ@fN!/.NURX.f(Jg" n0(U@fJfpC/NXB.g0JfJg n0(U@fJg n0(S@g0.@J@f.g nJgB//9KpNO #Kp`B/./9KtNO #Kt0.H/././NO B//9KlNO #Kl/./.NP`Jp//./9KxNO #Kx/. /.NP` n0(J@g/. /NPpLN^NuNV n0(H-@J fJf n0(S@fpP/NXpN^NuJf`J g* .". Ҁ09PH-A"9Q/.N}pXJg././.N|PJgpE/NXB 9Q4=@ n1n!n !nJ gJf&p///9Q4 n/( NO n!@ n ( n!@ .". 1@ .Ҁ09PH-A"9Q/.NatXR/NX#Kh//.NaPpG/NXpN^Nu n0( @g h#Khp?/NXpN^NuJfDJf0.@Y@f0.@@=@.gtJgn n0(U@gb`Z n0(J@fpF/NXB`< n0(U@f0Jf1|`"p /NX n"@"3|-@-@ n1n!n!npN^NuNV n0(@J@fJ g h 0(S@gp N^NuJg n0(S@gp N^Nu n0(Hf2.H/././/(/( /NOJgd nJ g h 0(S@fx n0(H h "n/)//NO 2.H/. n///@ NO "/f, n0(@2.AA1@!n !npN^Nu n0(@J@g/N4LXJf 9Q4 n1@B0.H/././NO "9Q4 AP2H-@貀fpN^NuB . lV @P0Hf< . n1@\ B-@ .l nBR`pN^NuR`p /NX0.H/././ n/B/r /N5OpN^Nu/.N9X0.@_@f& n0(@J@gp N^Nu n1|pN^NuJf/.N3XJgp N^Nu n0(@J@f8J g20.@ @lH @P029PAl p /NX n0(H/@2.H$/-@-AfJ fB .".gf& l n0(H1@pN^Nu n0(@J@fF . @2( -@Rf p /NX/././.N5O pN^Nu . n1@ . dN```J``` . dN`@``J``P```t`p` `h`*p n(Q1@`X n(@1@`F n (1@`8 n (N+,1@`$ n ("( N+1@` p /NXpN^Nu .mj lbN```V`(`:`P`N`L`` n0(@`F n (@`8 n (N+,@`$ n ("( N+@` p /NXpN^Nu . dN`b`8```b`v```,` n0(HQ!@`v n0(H!@`fp n(Q!@`Pp n(!@`@ n (N+,!@!@`( n ("( N+!@!@` p /NXpN^Nu . dN`~`D```````B``p n0(HQN+ !@` n0(0(HN+ !@`np n(QN*!@`R n(p(N*!@`8 n (N+ !@`$ n ("( N+!@` p /NXpN^Nu . dN``H```````J`` n0(HQN+h!@!A ` n0(0(HN+h!@!A `zp n(QN+L!@!A `Z n(p(N+L!@!A `< n (N+h!@!A `$ n (N+!@!A ` p /NXpN^NuN^NuNV n0(@J@f J gpN^Nu n0(gpN^NuJf p /NX n0(J@fpN^Nu0.H/. n//NO -@JfpN^Nu09PY@f09P fp`p=@U@fB09PU@f80.@0 @g$.f n0(U@f.g.g=| n0(@ng /N8X0.Hr////.aOJgpN^Nu09P @o< n0(@J@f,09PH/@ ."/N04-@Jo /N8X lpN^Nu n0(@J@f nf .=@`-n0.H=@ n0(H fD-hr!A///Hn//r/N5O .".N0 n!@-@`b n0(Hr///Hn//r/N5O`8 nf n0(H".N01@` n (".N0!@pN^NuNV n0(H/@Jf$ /"9Q4p////azO Q4f6 n0(@S@f&0(H"9Q4p////a8O n0(@Y@fp//p//aON^NuNV/.aLX/. aBX n0(H"n 2)H-@-A[g[fp-@`$ g fp-@`-yQ4 . g& n2(H n 4(Hp///./.aTOp///./. a>ON^NuNVH n0("h$hr$9Q83G3G3Gt3G~3Gh3GR=@@-A#G-I-JJ@g0.-yP3G@=@H// / ///aPO-@Jg/NXN|LN^Nu9Gg(JKbf 095 @g p!/NXLN^NuHyGHyGHyGp@//9PN O"9PЁ#PHyGzHyGdHyGNr@//N OѹP n!nLN^Nu Gf RN!JfJfJg n0(S@gp!-@`0.gp"-@` p/HyGNN&P-@Rfp"-@Jg4/.NXJg GgN|<`N|LN^NuJg$ Ggp#/NXN| fJ gN! .N^Nu GfJ f .N^NuN!` .N^NuNV9Gg AGN N^Nu Q8f 9GrN0 @G .1@` 9GrN0 @G!n 9GR#G lrN0 @GN N^NuHyGHyGHyGp@//9PN O"9PЁ#PHyGzHyGdHyGNr@//N OѹPBGp3G~3Gh3GRAGN N^NuNV n n fJfpN^NuRR `p nr n N^NuNVB nJgR` .N^NuNVB . n "nJgR` .N^NuNVB .R/@ .r N040 / .r N04-@Jn-n .S-@Jk n R ` .N^NuNVp#P#P-@ . g "g 9P#PHnHnHnHn/9PNOBByG-@ . g "g Ag: @g2 Bg*HnHnHn//./9PaPOJgp-@RyG .ѹP . "o @1Jf(HnHnHnHn/9PNO-@`VJga`-n-yP .PlHnHnHnHn/NOHnHnHn/.-@NOBHnNFXJgp-@HnNFXJgp-@HnNFXJgp-@JgHnHnHn/./.N O .Ѯ`D-n` 9PN^NuNVH B/.a\X/./@aNX"/Jgp-@ . md $g\ &gT (gL +gD /gH>RJ>p-@ nEgL f&JfNJgNJg SJ>pN^Nu yJ>H>RJ>p-@` /f* yJ>H> 9J>R#J>r-A *f @H>RJ>pr-A-@ f8Jg SJ>pN^NuNJgNJgp/NXpN^Nu /f0J5f( yJ>H>RJ>p-@ *fRNq *f6 yJ>H>RJ>p-@ /fX .S-@Jf`z yJ>H>RJ>p-@`(SJ>SJ>pN^NuNV095 gV-yKJgH . n"(f.//(HyJFaO Jf n0(@1@ N^Nu n-P`/.NXB-@ .l n"@JFR`p/NɚX @1|@!I1|!n-H/ // /9KpNO#Kp n!@ B/./9KpNO #KpB/./9KlNO #Kl n!n"n"JKf#K` yK n#K N^NuNV n0(@J@g"yKf#K#K`*-yK"n Qg n-P` nB#K n (Kl (Kp/(/(NbP np//NbPN^NuNV .S-@Jk nR n R gpN^NupN^NuJ3\f$p#3\Hy3`NXHy3NXNuNV nHH/@R @Eg / ` nHH bg lf.p#3TpN^Nu09P@3P#Q$pN^NupN^NuNV#Q$#Q( <#Q, <#Q0#Q#Q# Q -|PBn0. @lH n"@30Rn` 93X3PUfL3 3TfLBn0. @l0H @P2 Ao @P"@Pp20Rn`p3P3PJgDHy3NDXHy4NDXHy3NDX09PgHy3NDXN^NuNVJf p/NX n-Pp //NbP .N^NuNV nBh1|HyK/NPN^NuNV 9GfpN^NuJ g /. NXapN^Nu 9G g8 g0 g([f09GHHy4/N;PJfN!`Nu 9G g g gN!`Nu 9G g gN!`NuNV n Jf ` "n i  n !n nBN^NuNVBJgL n0(J@f0JfJg6 n0(S@g*pN^Nu"n Q0(S@gpN^Nu-n n-P`pN^NuNV n fpN^Nu n0(@U@gV n 0(@U@gF-hJg: nJg&/( a0XJg n/(/.aPJgpN^Nu n-P`pN^NuNVJg n0(U@gpN^Nu n-P`pN^NuNVp/HnN&PJf0.HQ4gpN^Nu Q4f 0.H-@`-nJk .mpN^Nu .N^NuNVp/NX"@"#n-@JKf#K` yK #KN^NuNVB-yKJg"n ig-n n-P`Jf p/NXJf"n Q#Kȱf"BK`"n Q"n"f#K np//NbPN^NuNV n0( @fpN^Nu n 0(R@fp[N^Nu n0(]@f/. N9X n0( @gX @lR/. N7X n0(S@g:/. N3 X n0([@g/. N3XJgpN^Nu/. N;TX n0(J@g /. N8X n0(H l/./(/. /aON^Nu/. N3XJgpN^Nu n0(H_-@"@4< .rN04///././. /N6`ON^Nu nJfpN^Nu n/HnN^P n/N2X n /. N7X/. N;TX n0(Q@g0/. N3 X/. N8XHnN3 XHnN8X n0( @gHnN7XHnN;TX n0( @f$ nJfpN^Nu n/HnN^P n/N3XJgpN^Nu n/N2X n n-h2.AJAg0 n2(SAf#P#PHn/. N^PpN^NuJg n0(S@gpN^Nu n 0(@J@fJ f0.@J@f.f.g=|`& g f=|` 9Q4=@ n 0(@2.AAn-yP-yP n#P#P0.H f"/././HnNIOJgpN^Nu 9P n"fr///Hn/NOѹPp///Hn/9PNO-@p//Hnp)//9PN O-@".g$9PԀ//N hP#P#P0.H f"/././/. NIOJgpN^Nu0.H/././ n /B/r*/N5O0. @g @f n 0(@ 1@B pN^Nu n0( @g @ g @ f n 0(gH0.g>/. N9XHnN9X/. N3XJfHnN3XJgpN^Nu n0( @f0(J@gH"@4L 1@0(H"@4x 1@Hn"n/N2P n /.//. /.aO-@JgN^Nu n1|BhHn"n/N2P n /.//. /.aON^Nu n 0(@J@g(0.@J@g/.Hn//.NON^Nu n0(H2(HHn/. //a2ON^NuNVH n 0(@J@gH .m0 l&N```|`l`*/. NSX n 0(H g* g f4 n 0(D@1@`$ n D` n ("( N0!@!A pLN^Nu/. NSX n 0(H g* g f$ n 0(F@1@` n F` pLN^NupLN^Nu/. N4LXJWDHH 9Q4 n 1@-A Q4f1A` n !npLN^Nu n 0(Hr///NO n !@ 9Q81@pLN^Nu fr n 0(@J@gb"nJgZ"Q0)S@fPp///9Q8/NIO n0(@@ n 1@ ("n!Q !i!@pLN^Nu n0(H/(///. NIOLN^NupLN^Nu . dN``*``P``` n J g h 0(S@g pLN^Nu n 0( g /N2X n 0( gJf @1@` n 0(@ 1@"n i "P$n %I f0*@_@f pLN^Nu n 0( gf h0( fX0(g-h`&"n i0(H/(/(/NO -@ n Jk (m pS/NXpLN^Nu n 0( g @1@`F n 0(?@@PJ@f0/f h0( g pLN^Nu n 0(@1@p/ n /( N5lP n !@ pLN^Nu n 0( g pKLN^Nu n 0(H/(/( /NO n !@ 9Q81@ n#P#PpLN^Nu fP n 0( gB nJg: P0(S@f0 n0(@ n 1@ n"n #P #hpLN^Nu n Jg"h0)@U@f /N:X n0(H/(///. NIOLN^Nu n J g pLN^Nu/. NSX n 0(H//r /N5O pLN^Nu n J f0(@ @m pLN^Nu/. NSX n 0(H//r /N5O pLN^Nu n J g h 0(S@g pLN^Nu/9Q4/. p /N5O pLN^Nup /NXLN^NuNVH . @4Jgj n0(@J@fJ f< n0(@J@fJ f& g4 n0(f n0(g fp`pLN^Nu .m ^ l TN`.```h```X`T`P``` "`/./.NT|P  f n0(@[@f pLN^Nu . @4"n0)Hr//// $n/ / /N5OpLN^Nup n2(A-@JAf J gp-@ n0(@J@f J gT  fX . d&N`(`````X` `|`,pLN^Nu n0(@J@g0/.HnN^P/./.N^PHn/.N^P n0(H fQ4ft n0(@J@gd0(HQ4fPp///9Q8/NIO  f nD n ("nѩ/ /N^PpLN^Nu/.N8X/.N8X/./.NT|P . @4"n0)Hr//// $n/ / /N5OpLN^Nu/.HnN^P/./.N^PHn/.N^P n0(H/(/( //.NQ\O-@JgLN^Nu"n i 0(U@f / N3 X n0(HglQ4f^"n0) fPp///9Q8/NIO  f nD n ("nѩ/ /N^PpLN^Nu n0(@0 @f4 n0(@J@f$09PHSJf ("nѩB` /.N8X/.N8X . @5"n0)H/) /@ /HN50X n/(////"n/ / $o/N5O n0(?@@0 @g 0/ g n0(@1@pLN^Nu/.N3 X/.N8X/.N3 X/.N8X n0(H"n2)H/)/) //(/( /NOJg pLN^Nu09PY@f09P fp`pr////. n//r/N5OpLN^Nu/.NSXp///9Q4/.NIOJ fp`p n2(Ht////"n/ / /N5OpLN^NuX /.N3XJf/.N3XJgr n0(g $n"j` n"h0)@-IU@g pLN^Nu/./.N:4PJg p/N4LXJg pLN^Nu n0(H/(/( //.NIO` n0(@J@g/NX0.@@ n1@0.N^Nu n0(g/N~PX n0(@1@2.@gp>/NX` Gg$ n0(2.@g p>/NX0.N^Nu n0(HKbf h#Khp?/NX`Z"n ip//(N>P n -@`6 Ggp=/NX0.N^Nup/NɚX n -@N! n1nJg/./NP nf/./.aP`DHyDvp//Hy5//./.NO n0(@J@g 9Q<Ѩ 1n Ggp#/NXN|< nJfJ f p@/NXN!0.N^Nu fP Gf09GHHy5/N;PJf 9Q4N^Nu=|09GH-@N! .r8kfN` ` ``h`8``0.H"9Q4 N^Nu09Kf2.@ N^Nu Gf09G[@fN!0.@N^Nu Gf<09G @ f N! nf p'/NXpN^Nu09G[@fN!0.@N^NupN^NupN^NupN^Nu 9Q4N^NuNVp n n 9G g]fl09GJ@fb Gg p/ n/N5lP n N!`N! GfN^Nu n Rp/ n/N5lP n `N^NuNVpBn n!@ -@-@ 9G g g f GfZJgSN! n 0( @g-P/./N|\P-n ` n -P r //-@NbP`| GfN!Bp/HnN&P-@RfB`lJff0.?@@J@g0/@=@ @g U@gpB-@`8 nf0.H` .-@ Q8f nf gpB-@ Gg pB-@`Jf JgpB-@Jg/.NXBN!Rp /NX @1|!n/./-@N|\P`bN!p /NX @BhB/./-@N|\P 9G g g(JfP/./-@NP`/./.NP n1|N! Gf N!`NN!`Jf Jgp-@JfxJ g n -P/./N|\P-n `Jg n-P/./N|\P n n/N|XJg pC-@`Jng nJg P0(J@g pA/NXHyH$p//<Hy5,/.//NO"n Q"h-Ig n-hJg\Jg6 n0(H"n2) H/)/)//(/(/NOJgpV/NX` n-P n-P`JfJg pV/NXp /NX"n Q"@"BiB n -@JgRJ g n -Pp //NbP-n ` nJg P-Pp //NbP n ` .N^NupN^NuNVB GgHnHnHnN "O JgpZN^NuJf&Jf 0._@fJf GgpZN^Nup/NX"@"3n #n#n-@Jf-@` n -n Gf N!`P GgpZN^Nu Hf*p/NX"@"3| #H#H n -@ n!npN^NuNVґ-H-HJGfBHyGNP @2(A-@JAfD2(HKbf h#Khp?/NXB`09GHB/N>P-@N! Gf09GJ@f|N!p/HnN&P-@Rfp-@`&Jf 0.HgQ4gp-@Jg/.NX` Q4f0.H` .-@-nJg*"n i ( fpO/NX` n-P`Jgfp/NX"@"#n-@Jf-@` n -n 9Q4 n1@!n R!n  n !yQ< Gf N!`@ n !nN^NuNVH/./. NT|P n0(H/@"/-@-A gv gX f n0( n 2(=@=AJgHH-@-A`L0.H2.H-@-A`6 n-h n -h` n-h-h n -h-h n0(Hm lN`&```X```.`~`` n0(J@fx . gF g$ f .".N0 n1@`h .".N0 n!@`N .".$.&.N, n!@!A `( n0(S@f . gf g$ f .".N04 n1@`Jg .".N04-@` .".N04-@ n!n` .".$.&.N, n!@!A ` . gf g$ fd .".N04 n1A`JJg .".N04-A` .".N04-A n!n`pLN^Nu n0(J@fl . g: g f0.n n1@` .Ю n!@` .".$.&.N-T n!@!A ` . g: g fp0.n n1@`\ . n!@`H .".$.&.N-T n!@!A `" n0(J@fT . g> g f .". n1A` .". n!A`pLN^Nu . g> g f .". n1A` .". n!A`xpLN^Nu n0(J@f . g` g" f< .]DHH-A`$Jg .]DHH-A` .]DHH-A` .".$.&.N0]DHH-D` n0(S@f . g` g" f ._DHH-A`Jg ._DHH-A`f ._DHH-A`N .".$.&.N0_DHH-D`( n0(U@f . g` g" f .^DHH-A`Jg .^DHH-A` .^DHH-A` .".$.&.N0^DHH-D` . gX g fj .\DHH-A`TJg .\DHH-A`8 .\DHH-A`" .".$.&.N0\DHH-D 9Q4 n1@ Q4f .1@` n!n` n0(J@fX . g( g f .WDHH-A`x .".$.&.N0WDHH-D`T . g& g f8 .VDHH-A`" .".$.&.N0VDHH-D 9Q4 n1@ Q4f .1@` n!n` . g: g f0.n n1@` . n!@`pLN^Nu . g> g fn0.2.A n1A`X .". n!A`BpLN^Nu . g: g f0.n n1@` . n!@`pLN^Nu gp'-@`h/.N4LXJg/. N4LXJgp`p-@`< gp%-@`*/.N4LXJf/. N4LXJfp`p-@ g/9Q4/. /.N5O `4 9Q4 n1@ Q4f .1@` n!npLN^NupLN^Nu/./. N^PpLN^NuNVH p-yJ>/-@NutXJg#J>LN^NuHna ,XJf Hna X-@ l d N`"`$```t``*`|` lp/NutXJf zHna XJf jp/HnNP @2(A-@JAf, h#KhpT/NXp/HnN>P-@ nBh yJ>H> (fRJ>B lp/NutXHna XJf .Hn/@NatXR/NX"/-"./6Hn-@NaPB .l/./6Na6PJgR` .mBRp/NutX yJ>H> )g yJ>H> ,f RJ>` yJ>H> )fRJ> . n1@`p n1@-@-yJ>Bp/NutXRf #J>`n lb yJ>H>p-@ gD \f6 yJ>H? f"NJg p-@`p/NutX` /f: yJ>H? *f&-yJ>p/NutXRf`#J>`-yJ>JgHna2XJfB .lHn/6Na6PJgR` .lARR`-n .J>l". lAR"@H>R`AR .RJ>` g4 g( .S-@JkApR @EfNqRABB .l,/6/@ NatXR/"/ /6NbPR` .R/NX n!@ /HnNaPLN^Nup/NutXJftHnaXJfdBp/HnNǔP-@JgF n-h$n"jg p/NX n"n#P/( NatXR/ n/( NbP np//NbP`p/NutXJf yJ>H>RJ>p-@ "g -@B lL yJ>H> g8 yJ>H>pg"A"yJ>H>RJ>R` yJ>H>pf"ARBNJg p-@`B/.HnNPJgA#Khp/NXSKR`p/NutXJf yJ>H>pR @EgB yJ>H>RJ>p-@ nEg8 .r N0".0Ё-@ yJ>H>RJ>p-@`#JB gSJ>p/NutXJfB yJ>H> g, . lAR"yJ>H>RJ>` gARBJKNg /9KNNatXR//9KNNbP/.NX#KN/HnNaP095@35NJg p-@`2LN^Nup/NutXJfB095R@35N -@Rfp-@095S@35` fLN^Nua,-@`p/NutXJfHnaXJfB095R@35p/HnNǔPJfxa-@`lp/NutXJfZHnaXJfJB095R@35p/HnNǔPJg"a-@`095@J@gp295SA35-@-@NJfp/NutXJf yJ>H> #fRJ>p/NutXJfHnaXJfHnaX-@ g .m lN``` `n` R`bJgS`TBJ> H>LN^Nup-@` 095@J@gB095S@35Jg&/.NX fNJgNBBJ> H>LN^NuNVp n/@R @EJf / _gpN^NuBp n/@R @EJf / _f .5l R nR` .B6 n =fR` nJgpN^Nup/HnNP @2(A-@JAfp/HnN>P-@p n1@1@!n pN^NuNV yJ>H>RJ>p @-HEJf _g SJ>pN^NuB nEJf( . _g095 gB $f8 .5l nR . yJ>H>RJ>p-@` nBSJ>pN^NuNVB . l" @5j//.Na6PJgR` .N^NuNVBNJfp/NutXJf yJ>H> #fRJ>p/NutXJfHnaXJfHna`X-@ g .m lN```` `R`lJfdpN^NuJgS`P095S@35pN^Nu095S@35pN^NuNVB . 0mj 7nbB l@ 0m6 7n, .".0R-@p n R -@` .S n .N^Nu .r8kFfNx`nv`\f`Jr`8b`&t`n`p -@`p -@`p-@`p -@`p -@`p -@`Bp n R -@ l nEg . nE-@g".0 nEg .7 nEg .Wp n R R-@`` n .N^NuJKFg/.NX-@ nB .N^NuNV n0(H/@"/-@gj yJ>H>RJ>p-@ nEg& g yJ>H>RJ>p-@` (f op/NXNBB l yJ>H>RJ>p-@ nEg& g yJ>H>RJ>p-@`Jgbp-@-@-@-@ l gJfVJf . ,g )g (fR )fS . "g 'f -n` .f \gBAR .Jg \f \fB-n yJ>H>RJ>p-@`$A .RB/-@NX".R-B-@ . nCJgR` ,f g Jf>Nq )f .gp/NXNB n-h B lhp nR-@JgT .n6-vp nR-@Jg". lAR`AR .`-yJ> nH>R f . g".J>Ё op/NXNB 9J>".o: .S-@-A .J>m".Ҁ AH>"@H>S` 9J>".l6-yJ>-@ .l @H>"nH>R`p#J>-@ .l @H>CR`B .l,/6/@NatXR/"//6NbPR`N^NuNV . nJj p/NX . @5/./HaX"o Q-PJg. n/(/.Na6PJf n (N^Nu n-P`pN^NuNVH /. /.ajP-@JgLN^Nu/.aX". A5/-@a//9PN OѹPp-@p-@`RRKbN!p /NXr /-@NXr /-@NX"@#H#H$n%H%H$n%H%Hr/-@NX @!yKxHy@B/<@Hy6/././.-@NO 9KxK|o#K|/.HyKNP/.HyKNP n "n"$n$&n&-H-I-J-K` .S-@Jjp&/NXB`x 9KbS#KbJgN!/.NjX/.NjX/.NjX n-hJg2 n0(f h#Khp]/NX n-h` n-hJg2 n0(f h#Khp]/NX n-h`/.N{BX/.-@N{BX/.-@N{BX n#Kx-P"t//-@-ANbP``09G @f2N!JQLf p)/NXp/HnN&P-@Rfp*-@Jf0.HQ4gp*-@Jg/.NXN{`-yQXJg n (g n-P`Jgp+/NX`VJQLgNp//Hnp9//9PN OѹPp/NX @ QX!nRQP#QX-@p8/p/N{PJf8N!p-@p-@`"09G @fN!JQLfp-/NX` 9QTRQTJo p./NXp8/p/N{PJfp///p://9PN OѹPN!p-@p-@`JgJfp$/NXp-@HnaX-@Rf\JgJfp$/NXp-@p#P/HnN&P-@RfB`&Jf JPf095f p\/NXJg/.NXN{B`p9/p/N{P GfN!`L N^NuNV09GH-@N! .m> l6N``6``n`R```` `` ``4N#lpN^Nu 9Q@йQDйQHйQLJfp(/NX`"p///pP/-@N{vX=|-nđ-H-H-H//Hnp?//9PN OѹPN!p9/p/N{PN!p n N^Nup:/p/N{PJgpN^NuN!p/HnN&P-@Rfp4-@Jg/.NXN{pN^Nup:/p/N{PJgpN^Nup//Hnp+//9PN OѹPp#GN!Ba$X Gf<09G @f0N!p///p,//9PN OѹPBaXp///p-//9PN OѹPpN^Nu yKJg h"P`BHn-IN&P-@RfJf. yK0(H g Q4f 095 f pU/NXp///p#//9PN OѹPp9/p/N{PN!pN^NuJg/.NXN{pN^NuJff yKJgZ h0(@@@=@B yK-hHnHnN:4PJgpHyA>NDXJfHyANDXJgHyAa,Xp/N XHyAH/9KJNaP @-HA>" @A?BBHyQNatX9Q-@Jg^ @Q :fH-nJo .S yKJ :gS` . o .-@`p-@Jk yKJB yKJ/NatX".ҀV @oHyBa*Xp/N X yKJ"nQ/ /NaP".Ё @-HQ. @Q/HJKZgpp`pq o nQB yKJ.JKZgJHyB8HyQNP#QJfHyB:a|Xp/N X095@@35N^Nu/</<HyQN^O #PRfHyBba*Xp/N X/9A:Nz XAPpp//a PN^NuNVByPp-@ . n "P -f .l n "PRp/@R @E-Ig / `p nr@kfNu`i`o`n`vc`tx``d`p`p#KZ`f n(Jg"R/NDXJgHHyByaX`809P@@3P`$35` nR-HJgp/@R @Eg / `p nr0kfNw`|u`hs`Lm`0d`c`B5`t095@35``095@35`L095@35`83Kf`,095@35`HyBaX`p#5`RB nJg 0l nQRR` nQB` QfHyBaxX`RB nJg 0l .RR` .B6"9Q AQR//Ha|X o "9Q AQ/Hn-@NaP nBRQ`$BA:`/.NyXSf HyBaXR` .N^NuNuNVJKZgNJK^fFB nH> g nH>p/a XR`p /a Xp /a XB ln yQ (S!@Jk "PRp`/9QNX-@Rg: g0 fp-@` . g nH>R` f JfpN^Nu gp/aXa2 nH> .R @-HH>B 9JBR#JBHyA/NaP @-HABJKRf.09Pg"p///pB//9PN OѹPp#J>#KVN^NuNV .N^NuNV/.NTXN^NuNVp-@-@ . nJg n :fp-@`R`B-|B/.NatX/.-@NatX".Ҁ @l Hn/.NaPA//.NaP".ЁB6HyAHn-@NP-@Jg095 g" @A?p#Qp#JB0AB9AN^Nu .R @Q-PJf .QopN^Nu KRfpNu 9KR @Qx Q @Q JB @Q KJRKRpNuNVJKRnpN^Nu 9KRS#KR @Q#JB/9QNX 9KR @Qx#Qp#J> H>JKJg/9KJNatXR//9KJaP 9KR @Q"P#KJHyAH/ NaP @-HA>" @A?BHyA/9JBNaP @-HABpN^NuNVHnHyBNaPA//.-@NaP".ЁB6Hn-@aX095@@35ahp/N XN^Nu095@@35JKZf HyBaXXa0p/N XNuHyBa:XaNuHyCa*XaNuJKZg/9QNXNuaQ`6 `.`&````N^NuB095 g yKN` yKJ-HgHn0/NaPA0R -@A0//9JBNaP".ЁA0R A0//.-@NaPѮ . m ^o p/aXA0 .R A0//. -@NaP".ЁA0R:A0R ". A?C0/ /-@NaP".ЁA/-@ $fJA/"JKhg4A0//9KhNaP".ЁA0R"BKh-@`SA0BHn0aXN^NuNV/.NX-@Jf,HyC9aX095@@35aLp/N X .N^NuNV/. /.NPJg p/aXXN^NuNVJ g 9R `p".Ҁ#R N^NuNVp "9R -A 9Ag B/aP 9R -@ . S-@ Jk< f .RB/-@aLPB nRR"nR`p ".Ү#R N^NuNVp "9R -A 9Ag p//aPp#R 9R -@ . S-@ JkF f" .Rr//-@aPBp#R nRR"nR`p ".Ү#R N^NuJRg`pr $9A///9P#RNO r $9A㢰gaL/<HyR/9PNO ga$NuNVJRga .#A  f(Rm B/<HyRN0O RR`lp "9AB//9PNO r $9A㢰ga/<HyR/9PNO ga 9ARo#R# RN^NuNV yQ (S!@Jk"PR. r`p. /9Q/NP"N^NuNV-n-n B . l n"nR`N^NuNV0. @2.AAf ngpN^NuJ f JfpN^NuJ gJg n 0( n2(AgpN^Nu n 0(U@f ("ngpN^Nu n 0(J@fJg nJg| n -h n-hJgVJg8 n0( "n2) Af$HH/)/)//(/(/aOJgpN^Nu n-P n-P`JgpN^Nu n -P n-P` JgpN^NupN^NuNVB l BNutXRfpN^Nu yJ>H>RJ>p @-HEJf _ff 9J>SB-@ nEJf( . _g095 g> $f4 .5l R". yJ>H>RJ>p-@` .B6SJ>p/HnNǔP-@JgNJKZg2JK^f*B .l @H>p/NXR`/.N>XR`p.R @EgBB . l2 @D/HnNa6PJf . n0pN^NuR`/.HnNaPpN^Nu nEgp-@-|-@ 0f@ yJ>H>RJ>p-@ Xg xf yJ>H>RJ>p-@ nEg . nE-@g".0 nEg .7 nEg .WR yJ>H>RJ>p-@`bJfp!N^Nu nEg .".0Ё yJ>H>RJ>rR-@-A` nEgD .谹Q n8 .r N0".0Ё yJ>H>RJ>r-@-A`Jfj . .g Eg eg @Eg> yJ>H=Hn/././N#OSѹJ>Jfp!N^NupN^Nu . lg Lf n pN^NuSJ> .Jf Q4f n pN^Nu . n0pN^Nu ."<kfN}`{`v]`h[`Z)`L(`>;`0,`":`?`~`.`l#`|`^`\=`>`v<`%`/`D+`!`-`*&`*`"`V'`B yJ>H>RJ>p-@ 'fp!N^NuB . 'g g . g295f Sfp!N^Nu \fB yJ>H>p yJ>H>RHn//NFO ".RӹJ>-@`JKFg/.NX-@ .က yJ>H>RJ>r-@-AR`4 f SJ>p!N^Nu .Jf Q4f n pN^Nu . n0pN^NuB yJ>H>RJ>p-@ "g g l \fr yJ>H>RJ>r-A f NJgNJgpN^Nup!N^Nu yJ>H>Hn//.NFO ".ӹJ>-@`JKFg/.NX-@ nJFR .` g fp /NXNB nJF .R-@B . n0pN^Nu yJ>H>RJ>p-@ =f n0pN^NuSJ>pN^Nu yJ>H>RJ>p-@ =f n0pN^Nu &fpN^NuSJ>p N^Nu yJ>H>RJ>p-@ -f n0pN^Nu =f n0pN^Nu >fpN^NuSJ>p N^Nu yJ>H>RJ>p-@ =f n0p N^NuSJ> n0pN^Nu yJ>H>RJ>p-@ +f n0pN^Nu =f n0pN^NuSJ> nBPpN^Nu yJ>H>RJ>p-@ =f n0pN^NuSJ> n0pN^Nu yJ>H>RJ>p-@ =f n0pN^NuSJ> n0pN^Nu yJ>H> 9J>R#J>r-A @H>RJ>p-@ =f n0pN^NuSJ> nBPp N^Nu =f n0p N^NuSJ> nBPp N^Nu yJ>H> 9J>R#J>r-A >f@ @H>RJ>p-@ =f n0pN^NuSJ> n0p N^Nu =f n0p N^NuSJ> n0p N^Nu yJ>H>RJ>p-@ =f nBPp N^NuSJ> nBPpN^Nu yJ>H>RJ>p-@ =f n0 pN^NuSJ>p N^Nu yJ>H>RJ>p-@ =f n0 pN^Nu |fpN^NuSJ>pN^Nu KVop!N^Nu J>g>B 9J>S".l* AH>pR @Efp!N^NuR`SJ>p#K^pN^Nu yJ>H> 9J>R#J>r A-HEg8 @HJfp!N^NupN^NuSJ>pN^Nu n0pN^Nu nBPpN^NupN^NupN^NupN^NupN^NupN^NupN^NupN^NupN^NupN^Nup!N^NupQ/NXNBN^NuNV# P095gpN^Nu . @B/.HnatP".ЁAT/./-@aXP".ЁAT/./-@a gJfV n@`\.gp`p nHH`8.gp`p` nHH` nBp#EpN^Nup n@ nJf n|B .N^NuB . lFr N0 @DR//.Na6PJf .r N0 @D"nPR`.g /.N%X.gp` . //.N"P n!@J1xg@ . JgB/.N$P n!@J1xgJp#E nBpN^Nu .  f$ n/(N%Xp#E nBpN^Nu .N^NuNV . ". ///.azO N^NuNVJjp#EpN^Nu/.aX-@JfpN^Nu n(HH dN``` ``/./. n/(N%O -@J1xg JfpN^Nu ng .N^Nup-@-@ .lZ n R@HH g f$ .Sr///.aO .N^Nu n R`JfJfB .N^NupN^NuNVJjp#EpN^Nu/.aX-@JfpN^Nu n(HH drN``` ``P ngp/B/.aLO ng0/./. /(N&&O -@J1xgpN^Nu .N^NuB.p-@-@-@ .l n R@ f . g | S nW .R.-@A m/HyW n/(N&&O -@갮gpN^NuJ1xgpN^NuB`hJg:/.HyW n/(N&&O -@갮gpN^NuJ1xgpN^Nu .N^Nu .N^Nup#EpN^NuNV/.aX-@JfpN^Nu n(JgpN^Nu/./. n/(N&lO -@J1xgp#EpN^Nu f`JgZ nfN .S-@Jk4B/./.afO Jgp/Hn/.a\O JfS` .RN^Nu .N^NuNV/.aJX-@JfpN^NuB n/(N%XJ1xgp-@ nB .N^NuNV/.N%XJ1xgpN^NupN^NuNV/.aXN^NuNV/. /.NPN^NuNVJ9Ejg9EjHHB9EjN^NuBp/N/PN^NuNVJ9Ejg9EjHHB9EjN^NuBp/N/PN^NuNV fp /p/p/N/O /.p/p/N/O .N^NuNVJ9EjgpN^Nu .EjN^NuBp /N/PJVDHH NuNV .1popN^Nu y1l .ѹ1l1p N^NuNV/.aX-@JgN^Nu | N^NuNV 91l1hѹ1p#1h1l#E#E#E#E N^NuNVaL /./9E-@aP n-@Jfp-@ . dN```8`R``J f`A"n#H`4  fDA"n#H`  f(A,"n#H`A"n#H`  fA"n#H`A2"n#H`  f. .r/@B///r/r/N/O #1xJ1xWDHHLN^NuNV .r/@///r/rA/N/O#1xJWDHH N^NuNVJfB/./. /.aON^Nu"n iB/./. / NON^NuNVJfp//./. /.adON^Nu"n ip//./. / NON^NuNVH Jf pLN^NuAL$n"jg pLN^Nup". /. n/(/. /p/pB/N/OLN^NuNVJgp@`p?r$.". v/A////./ n/(v//-@N/O-@Jj #1xpN^Nu .N^NuNVBp/N/P n pN^NuNVB .l& n HH/r/r/N/O R` .N^NuNVB .l& n HH/r/r/N/O R` .N^NuNVv . lS`p}@A r//r/r /N/Op /p/p/N/O .HHr-Ax-@| .|T".xl>6@w f| w .wf .xUDN^Nu .xU n wRx` .| }l n  .|RN^NuNVB .lP n @HH fp /p/p/N/O .HH/r/r/N/O R` .N^NuNVJg .`pN^NuNVB . n*r N0 @XtJf @Xt N^NuR`pN^NuNV nBN^NuJYdg/9YdaX`NuNV. am zn aAN^Nu. N^NuNV. HH/aX.HH/@aX/fp`pN^NuNVp-@p-@p-@-@ n JgR`B . nJg n@JgR =g ,f .S".f .N^Nu .R.HH n HH//-@a2PJfB. ,g =f p-@p-@ .,fRR`^Jg .S".f .N^NupN^Nu/N+LN+"Nu /N+hN+"Nu /N+N+"Nu /BtN/ $Nu /BtJjDN/ $Nu /N. $rN/ $Nu /$Jfp`"N.RBoB kp`DBJjD$Nu /N."N.B$Nu +H?/Wf/<N/OBB`D/Wg:/N.(*, "N.BFHFHBBHB,.BBBa a N/ LNu?< rJf efe dSRSWfONu $H?/WgT/WfBB`D/N.(*, "N.FHFHBBHB,.BBBa.aJgRBN/ LNu?< d҅ф@SWfTNu 3H?B` H?.<(/g(/f "`/N.(*, "N.&6FlDC C@m "$`NSCQ6`g C@m`4SCQ6k҅фdRC`dCD@ "$N/ LNu -"gHAHIANu/JgLQA/gRA/fJjR`SAgAo Al&I?HA_HABA$Nu/<N/B`/<N/ <JjO` 9$fprt`"HBHBB/t Q$Nu//gdB Jf BB /g$RB/fJjRd R`SBgBo Bl(J?BBHB_HB&Nu/<N/p`/<N/0<HBBH@B@Or` NV#YhN^NuNVH*OB1xpn@N?.*?.&?."?.?.?.?.?. NA.ML?N^Nu o /o "/ SfNu H<*g2jD(g(jDBv㒴eRQ"jDjD`BBL to exit 'G   Lattice 68000 C Compiler (Phase 1) V3.03Copyright (C) 1984 Lattice, Inc.DEBUG=1SPTR=1M68000=1TOS=1    defineundefincludelineififdefifndefelseendif545;5A5I5N5Q5W5^5c KMdN  invalid pre-processor commandunexpected end of filefile not found $invalid lexical tokeninvalid macro usageline buffer overflowfile stack fullinvalid conversionundefined identifier $invalid subscript expressionstring too large or not terminatedinvalid structure referencemember name missingundefined member $invalid function callinvalid function argumenttoo many operandsunresolved operatorunbalanced parenthesesinvalid constant expressionillegal use of aggregatestructure used as function argumentinvalid use of conditional operatorpointer operand requiredlvalue requiredarithmetic operand requiredarithmetic or pointer operand requiredmissing operandinvalid pointer operationpointers do not point to same objectintegral operand requiredinvalid conversion specifiedillegal initializer expressioninvalid initializer expressionclosing brace expectedstatement not preceded by case/defaultduplicate statement label $unbalanced bracesinvalid use of keywordbreak not inside loop or switchcase not inside switchinvalid case expressionduplicate case valuecontinue not inside loopdefault not inside switchmore than one defaultwhile missing from do statementinvalid while expressionelse not associated with iflabel missing from gotolabel name conflict $invalid if expressioninvalid return expressioninvalid switch expressionno case values for switch statementcolon expectedsemi-colon expectedmissing parenthesisinvalid storage classincompatible aggregate typesundefined structure tag $structure/union type mismatchduplicate declaration of item $structure contains no membersinvalid function definitioninvalid array limit expressionillegal objectillegal object for structurestructure includes instance of selfillegal object for formalformal declaration error $external item attribute mismatchdeclaration expectedinitializer data truncatedinvalid sizeof expressionleft brace expectedidentifier expectedundefined statement label $duplicate enumeration valueinvalid bit fieldpre-processor symbol loopmaximum object/storage size exceededreference beyond object sizeredefinition of pre-processor symbol $function return value mismatchformal definitions conflict with type listargument count incorrectargument type incorrectconstant converted to required typeinvalid argument type specifierillegal void operandstatement has no effectno reference to identifier $uninitialized auto variable $66<6S6d6z6666667797M7`7v7777788&8J8c8s8888999<9[9z99999::4:L:a:z:::::;;-;C;];w;;;;;<<<=<]<{<<<<== =;=\=q=====>>>2>W>t>>>>??:?Z?o??__FILE__="A__LINE__=0 File name missingParameters beyond file name ignoredrCan't open source fileCan't define __LINE__ and __FILE__Combined output file name too largewCan't open file for preprocessor outputCan't create quad fileInvalid symbol definitionUnrecognized -c option-i option ignoredInvalid command line optionCXERR: Execution terminatedIntermediate file errorNo functions or data definedErrorWarningNot enough memoryexternstaticautoregistertypedefintcharlongshortunsignedfloatdoublestructunionsizeofreturnbreakcontinueifelsefordowhileswitchcasedefaultgotoentryenumvoidCLCSCZC_ChCpCtCyC~CCCCCCCCCCCCCCCCCCCCC Enter to exitcon:CON:prn:PRN:lst:LST:lpt:LPT:lpt1:LPT1:aux:AUX:com:COM:com1:COM1:rdr:RDR:pun:PUN:nul:NUL:null:NULL:AXI:,AXO:,LST:,NIL:,CON:=*En  ( H  ( H  B H" .  "   2  .  L ( &:   &   :  ,"2z" ,0  $ :(@  (.2 6$*DzD 0d H&">  ,@6$0 6 L" . *"  LP (T&.Vh          6(  <$ "     N  $z( &.* $  .&(B, *         (". 0$6 R4."2 6 :FN:`D ,j    B$ L 6  (( 48 V"(**,  " h,@ R( ,V&D<4`T&$XX P, V,2"6$ .    @    4f 0HV, T  4 F*Tr(  6BD: $46     >"L & , r6" &FFh H4L  *,B (V"J.*"2$   B>.    f* 0*6<6,6 $ &* $6"0   " $ B  6   "   ""  X@ 6H 8& &   000& N  t$     2j 2HRVb4LX|&|F*:4 4$ $0 $ ,04( &H < * 4N <. .D $r    z &B$:, z,J" @ . ^0,* B $V  "2&      ^   $ 0$$ f .  4 .   8$4`, >$,2B D    0:2( (L"J (< lVrV..  8n& & " $ ("  8:" >6*,>   $"     ,""  t "<&L"*"$ "  x >$ D B((r "" ,*4`*  F,2:F       (       "   J> 8  4    N , 8   ( 0    &2   P                 2 .        $ &  4              , J &22:. >&>& H ^$(^8@4 &      D      H~ &h  *F   ":<@ H                  h "*L.*0 $ D" D "    * " " *. $ $""8 :"D   $*6  , "$ 4 L $<$$$*$,"$ 4   fvnb   (    P: :":V:l&$@l"&:P(J.z   H $ , Xd`$  J $0  ,  4" & 0  D &B 4 T<@HD(n& (6*"j,ll* 4]`C rB&o#CAB(HSB$H  g  g  f RSBj` g =g %gJ`Rpr A9nA0m/ПЁRSBk`Jg n <#M`zRpr A9nA0m/ПЁRSBkT`JgN n <#K`8CC`CCrRSBk$  g  g  gQp`JBkQB"+ҫ M$9Kg< n$<&ւֹM// Bg?<JNAJg0<`< .AM#C#C#CN6J/ KØ,MNpN=2??<LNA` /`NVBMp#M M l nHHR"@KgR` nJgZ 9M RM @M  nHHJgR"@KfR` nrR@JfpNqHyZxHyCHyCN#O 9C-@ >g"HyZHyCHyCN#O -@` HyZHyCHyCN#O -@HyZHyCHyCN#O -@Jf p/N4XJf/.HyDN"Pp/N!|X/9KN+HX//.N"P n(@Jf/.HyDN"Pp/N!|XNT M fDHyD0N XHyDGN Xp//.BN0O p#M M l nHHR"@KgR` nJgZ 9M RM @M  nHHJgR"@KfR` nrR@JfpNq M f\B . l rNA@ @Zx/N%XR`B .갹Ll/N4lXR`p/N4XHyDnN XHyM/9M N pPBN!|XN^NuNVp//HnHn/.NjO".Ҁ#MNQ/9VNX/.N/XB . "gf g\09U|@J@fa09U|@3U|HnHnHnHn/9MNjO-@ . Ag @g BfJVkRV` . "mHyDp/aPJgHnHnHn/./9MaBO 5fb 9M".Ҁ#MHnHnHnHn/NjO-@ f p/N xX BfRV 6f .ѹM`HyD/.a.PJgHnHnHn/./9MaO .ѹMN 9MR#MM-@JMg yMJ g6 h 0(HmBh"yM i 0)2(A"yM3@Bh yMJg8 h0(HmBh"yM i0)2(A"yM3@1i  yMJg8 h0(HmBh"yM i0)2(A"yM3@1i  yM0(HHyD/aPJg yM0( H-@ yM#M`#MMJMg yMJg0(H//(aP yMJg0(H//(aP yMJ g0(H//( aP yM0( H#M09Ug0(H/NX yM0(fH @D"PN yMMf!yMp/NX yM#M`HyD/.aPJfF09Ug"HyD/.aPJg/9VNX ."<kfN?`H>`$=`<`;`:`9`7`6`4`2`|1`j0`X.`F-`4,`"`r"`jp/N xX`ZNf`PN`FN`/@ n /AN>$/&/NAWDHH LN^Nu n "("n$&)NAVDHH LN^NuLN^NuNV-n -nB . l n"nR`N^NuNV0. H dN`,``:`|`D`\ n 0J@VDHH N^Nu n JVDHH N^Nu n JVDHHN^Nu n N>VDHH N^Nu n VDHH N^NuN^NuNV nf$ n f n  n0`Lp/N xX`>Jnf8 n f n0 n`" n f n  n` p/N xXN^NuNV.g=|`.g=|0`=|  o nfp/N xX`#O\#OXJfl  o0.H". 4.H/.//.//NdO/. N?X0.H/./.B//. NOpN^Nu .r/r//./aOpN^NuJOPg: .8/NXp/NQbXB-@NX`" .r/r//./aO-@ n"n#h3h 3hpN^Nu .(F/NX .P/NXpN^Nu .8/NXp/NQbX n"@#h BNXpN^Nup/N xXN^NuNVJOLg> .(OL/NX/.NQbX/. -@NX .N^Nu .8/NX/.NQbXr$. /-@NX/. NX .N^NuNVJ g-| /./.B/. p/N?O-@ g @N6 M .N^Nup/N~X/-@NX/.N?X/./.p//. /N?O-@ g//.N@P .N^NuJ fp//.///N?O-@Rf"p//.//p/N?O-@Rg/./.aP`& .r///.//< @NdOJgx .r /NXp"./NX/.NX`: n=h -h=h=h (Ю-@HnB/.a:O /./.B/. /.N . @Fh .r "/NX/.NX`N . @Fh .r "/NXp"./NX/.NXp//.NnPN^Nu . @F`"n / /././././NO-@r//NnP"yM i #O\#OXN^NuHnHnHnBHnHn/.NVOJf( 9F<-@-@/. HnHn/.NdOJf& 9F<-@-@BHnHn/.NdO . @Fh .rN@"/././././././/. NLO -@r//NnPJ f"yM i #O\#OXN^NuNVHnHnHnBHnHn yM/(NVO-@Qfp-@p-@BHnHn yM/(NdOBNXBN?Xp/NXp/N?XHyFpNX#O\#OXp//NnPN^NuB/.NP-@/./././/<DBN O-@r//NnP"yM i #O\#OXN^NuNVN"yM i-iHnHnHnBHnHn/-HNVOHnHnHnBHnHn/.-@NVO f f gJf f yM-h-hp-@p-@BHnHn/.NdOBNXBN?Xp/NXp/N?Xp-@p-@BHnHn/.NdOHyFuNXp/BNnPN^Nu n0(J@fP0(H //NP-@Rg2 yM!|O*3O.ByO0#O4BN:XN^Nu#O\#OX fB 9F<-@-@/HnHn/.NdO/.NX/.N?X n0(g <` <-@ f0 n0(J@g$ 9F<-@-@BHnHn/NdO fn n0(J@f:p ". .老8/NX n0( H/NX`D n0(H/( //././.NdO`p ". .老/NXp//.NnPN^Nu gJf yM-h-hp-@p-@BHnHn/.NdOBNXBN?Xp-@p-@BHnHn/.NdO n0(gHyF{NX`HyFNXp/BNnPN^NuNV"yM i-i0(@-H[@fp-@p-@BHnHn/NdOBNXBN?Xp/NXp/N?Xp-@p-@BHnHn/.NdOHyFNXp/BNnPN^Nu n0(g` n0(J@fT0(H //NP-@Rg6 yM!|O*3O.ByO0 .3O4p/N:XN^NuBaXN^Nup/aXNuNV"yM i-iؓ#O\#OXHnHnHn/ HnHn/-HNVO-@Uf 9F<-@-@BHnHn/.NdO/.NX/.N?X n0(g6-| ./NXBNX/<NX`-| .H/NX-nHnHnHnBHnHn/.NVO f0 n0(J@g$ 9F<-@-@BHnHn/NdO fn n0(J@f:p ". .8/NX n0( H/NX`D n0(H/( //././.NdO`p ". ./NXJg .H@/NXp//.NnPN^Nup-@p-@BHnHn/.NdOBNXBN?Xp-@BHnHn/.NdOp/NXp/N?X n0(gHyFNX`HyFNXJfp`pr//NnPN^NuNV09U?@R@3U2/H AU2. 09U @faN^NuNV09UJ@f JUfN^Nu#VUȑ#V#V09UH/N X-|UB-@-@ l n"nRRR`B09UH".l AU"nRR`JVf #V` yV "n"#V09UR@3UByU#U#U3UN^NuNVp/N X @0 1n1nr1A1A 1A#U-@a .N^NuNV09UH29U HЁ oap/N X-@JVf#V` yV n#VB1n 1yU N^Nup3U‘#V#V#V#V3U3U#U#UNuNVp /N X". @1A".1A B"n-i-@Jg n0(H n-n n-P` n"n#Hf n!I` n n"n"g!I .N^NuNV0. Hg`p-yV-@Jg n0(H".fn g\//. //N$OJfL`V n0(H"n2HPT/ ///NOJg n ("n f 0(2)Ag n-P`nJg n (N^Nup/N X-@JVf#V` yV #V nB .1@Qg8\/. /N%:P . @U 2H @U0H-@-A`f n0 n1@ n"n#h3h 3h0]@f#h ` n"n#h  n0(H n1@29U H-@-A ."9U@ҀF€#U@ n!A .ѹU@Jf f n ( ѹU@ n (N^NuJFf$p#FHyFN XHyFN XNuNV nHH/NCdXr(kfNt`p`xf`,r`m`p#OHN^Nup#OPpN^NuR n 5f p#F`$ n 6f p#F`HyFN XpN^Nup#OTpN^Nup#FpN^NupN^NuNVJFf nbRiRnRBN^Nu noR nBN^NuNVp#UU~B9U#GU#GU#G Up3U3U3U. g Ff p#OL`p#OL Fg OLf yF8p p#UN^NuNVN-@ .S-@Jk2 n /NXp// n///N2OXX `/.NXN^NuNV yM-h h HnHnHn/-HNXO/.NX-@Rg2p-@BHnHn/.NdOp//.NnPN^Nu/.NX-@Rg n0(J@f>0(U@f n0( [@g*p-@0.H/.//./.r/N&O`D nJgp`p/N~X-@/NX/.N?X/./.N.LPp//.NnPN^NuHnHnHnp/HnHn/.NVO n2(-@UAf n0( [@g| n0(J@fn"n0)J@f` fT fH0(H d8N```(`$N n0(H //N%rPJf0 n-P`4Jf .аo$ n-P-@` .аo n-P-@X`.Jk-n`DJk-n`6Jk-n`(Jk-n`Jk-n` p/N xX . @N6 M/.N.X .N^NuNVB.fJ n-hJg: n0(U@f$Jg/.NXN^Nu n0(HN^Nu n-P`.gp`p n-h-@Jg. n0(Hf (f 0(HN^Nu n-P`pN^NuNV n n fJfpN^NuRR `p nr n N^NuNVB nJgR` .N^NuNVB . n "nJgR` .N^NuNVB .R/@ .r N@0 / .r N@-@Jn-n .S-@Jk n R ` .N^NuBa.XNu"yM i0(g p/aX`p/aXNuNV"yM i-iHnHnHnBHnHn/-HNVO". AH""yM i 4(B-@-AUBf -A` n0(J@f 0(@S@f0( H` n ( -@ n0(J@f o.-yF/./././B/<NO-@F/./././B/<@NO-@F f n0(H/( /././B/9F/././././<FBN O-@"yM i #O\#OX`D n //././././< NO-@"yM i #O\#OXp//.NnPN^NuHnHnHnBHnHn/.NVO .rN@/././././././BNLO -@"yM i #O\#OXr//NnPN^NuNV0. H/NOX0. H/NOXN^NuNV0. @H @U0H-@Qf09U@J@fN^Nu-n n  !@N^NuNV f B .Fp(J-@ .@ /Y////.NR O `Jp n"( nAp n"( nA n ( n@ n ( n@ n-h "n$n5i5i -Qp // N 2P-n n-PR` nBP .1@ .1@ 1|1|`LN^Nu n0[@fJf` n0( H/@]////NR O "n i B r//-@N 2P"n Q-h n0( @1@`\ n0( Hp".p".A .@ .@"n-i ."n3@ .3@ -H"n Q-h ` n-h . n1@ .1@ LN^Nup/a>XNuBa4XNuBaXNup/aXNup/aXNup/aXNuNVNNtJg p/NX yM-h-h n0(J@f80(H //N%rPJfF f NrN^NuJHhf/.NX/.NRX/9F`X``.`j```|`p///p/BN2O`Hp//p/p/BN2O`*p//p/p/BN2O` p//p/p//N2O`p//p///N2O` n0( H2(H//(/t//N2O` n0( H2(H//(/t/t/N2O`x n0( H2(H//(/t/BN2O`L n ("ngR @2AJAfFp /N X @ O`#O`"n!i"."n"ҮҮ!A-@`"n if,09UH n ."n Ю"-A`("n i (". n"Ү-@ . m o p/N xX .R n . n`FJg@ . nrR"npҀҮ-A` p/N xX"n Q-Hg0(H`p-@` . g` n0( H n//-@NP .Ѯ` nJ g2 . n"n0) H"Ҁ//) /././.aHO/.NX-nR`N^Nu n-hJgp n"(Ap"(A (@ (@|`B.0(H"n0(H"Ҁ .X-AA .@Pp/HnNP n-P`pN^Nup/N xX/.HnNPN^NuNV n0(J@f&0S@g p/N xX n/( NXN^Nu n0(29U Ag p/N xX n0Hm lN``>``````Pp//p/p/BN2O n-h `p//p/p/BN2O n-h `h n0(H2(H//(/t/BN2O n-h `4p///p/BN2O"n i -h` p/N xXp-@Jk .".-@S`p/HnNPN^NuNVB .Nl @N"P-Ig0 gp`p-yM-@Jg n0( Hf hft . @N0HB//.N:O -@Jg/./N;P . @N ."@N0Hr//.///NB .Nl. @N"P$nf @N LN^NuR`pLN^NuNV .R-@Utl6 yUp"P g . yUp"P0 g .N^NupN^NuNVp/NX"yM i0(J@fB0(H //N%rPJfBp/N X#Oh @BNt yOh!@`p// yM/(NsO p /N X @ O|#O|!yOh-@JOpg609UH29UH///9OpNv O p/N?XN#Op#Oh"n#HN^NuNt yO|!@09UH29UH///(Nv O yO|BNuNV yO|Jg h1yU1yU `(09UH29UH// yO|/(Nv O yO|#O| r //-@N 2PN^NuNVp/N X @ O#O1yU1yU !I!I / -@NwzXN^Nup/NX"yM i0(J@fB0(H //N%rPJfBp/N X#Oh @BNt yOh!@`p// yM/(NsO yO!yOh JOpg609UH29UH///9OpNv O p/N?XN#Op#OhNuNV yO0(H2( H//NP09UH29UH// yO/( Nv O 09UH29UH// yO/(Nv O yO#O r//-@N 2PBNwXN^NuNVp/N X @ O#O1yU1yU !I!I r/-@NwzXN^Nu09UH29UH// yO/( Nv O NuNVp/NX"yM i0(J@f<0(H //N%rPJg yO0(H2( H//NP`dBp/ yM/(NsO yO0(H2( H///9OpNv O 09UH29UH///9OhNv O #Op#Oh09UH29UH// yO/(Nv O yO#O r//-@N 2Pp/NwXN^NuNVp/N X @ O#O1yU1yU !I!I!I r/-@NwzXN^Nup/NX"yM i0(J@fD0(H //N%rPJfp/N X#Oh @BNt yOh!@`Xp// yM/(NsO JOpg609UH29UH///9OpNv O p/N?XN yO!yOh #Op#Oh yM"yO#hNuNV09UH29UH// yO/(Nv O yO (!yM yO!yVr#Vr///Hn/-@NjO".Ҁ#MN^NuNV yO0(H2( H//NP09UH29UH// yO/( Nv O 09UH29UH// yO/(Nv O yO#M#V#O r//-@N 2Pp/NwXN^NuNV n0@J@g/(/(NPN^Nu-yOJg"n ig n-P`JfHp/N X yO"@"-@JOg yO!@#O"n#H#n#H p/N X n"@" !@ -@Nt n!@N^NuNV n0@009UH!@09UH!@-yOJg"n ig n-P`Jgh nJf#O` "n i nJg P"n!i09UH29UH// n/( Nv O np//N 2PN^NuNVp/N X-@Nt n!@ yOx0(H dN`` `:`T yO"n" yO!IN^Nu yO"n" yO!IN^Nu yO"n" yO!IN^Nu yO"n" yO!IN^NuN^NuNV-yOxJg n0(W@f n-P`Jf p/N xX n0(J@f yO0(H2( H//NP`\p/N X-@Nt n!@"n0)S@f yO"n" yO!I ` yO"n" yO!IN^NuNVp/NXp/N X @ O#OBHn-@N\X n!@".1A @Br1A1A r/-@NwzXN^NuNVp /N X"yO i"@"!@ n2(A-@SAf 0(H#@` n"n#h n1yU1yUN^Nu"yO i1yU 1yUNuNV"yO iHnHn/(NwO yO2( H/././//(-@NO09UH29UH// yO/(Nv O yO#O r//-@N 2Pp/NwXN^NuNV n0( @lN^Nu n-h 0(U@f (m lN``|``,````4B/</.N;O N^Nup///.N;O N^NuB/< /.N;O B/</.N;O N^NuB/</.N;O N^NuN^Nup///.N;O n-h (m lN````.````:/./<H/.N;O N^Nu/./<@/.N;O N^Nu/./<`/.N;O /./<P/.N;O N^Nu/./<D/.N;O N^NuN^NuNV"n""n" n0(J@f&0(@H @U0H n 0-@`T n0(S@f0(H n 0-@`4 n-h n BP n"n" "n"0(W@f n 0@ f n 0@0`F f n 0@ 0`. f n 0@0` g p/N xX .N^NuNVHn/.Hn/.aOr n "n ""n"2.H/. n//.//.-@N?O n nJg0.H/.//N:O n n f`Jf\ f$0.H/./ n/NO n `.0.H/. n//.//./9FO `0.H//.N=PJk .FO `0.H//.N=P g0.H/.//.N:O -@Jg/./N;P0.H/./.B//. N @Hl/./N PJg .R". AHl-R` .r--yMJg-H-H"n0)H-HfZ i0(H fDJf>/aXJg2"n i$h *f/B/9OaO #O`p n0(HfJ h0(Hf4 n/( aXJg" n/( B/9OaO #O`JOg n0(H/./N PJg n/( a*XJgl/. /. HnHn/.aOJgLJg/./.aPJg/./.a~P n/( //9OaO r-A#O n0(H/./N PJfB n0(HHn/N PJg/.NtXJg n/( a`XJgl/. /. HnHn/.a OJgLJg/./.aPJg/./.aP n/( B/9Oa&O r-A#OJf n0(H mZHyD/N PJgF-yOJgh nJg$ h"h ) nm n/(axX n-P`JOg( nJg /(aRX nJg /(a>X n-P`-yMJg nJgJOg"h$yOf/././. /./ /aOSf n-hJg"n i $ng n-h`Jf p/N xX0.&H//. /./. /. n/(/aO n!@"h $i 2* [Ag$$n%I 0(@1@!I !I!I` nBh yO-H#Op//N 2P` n0(H/./N PJgHn/./. /. n/(/aOJgHn/./. /. n/(/a^OJgd0.&H//. /./. /. n/(/aO n!@2.&H//. /./. /./(/aO n!@` n0(H/./N PJg/.NtXJgHn/./. /. n/(/aOJgHn/./. /. n/(/a|OJg0.&H//. /. n/( aO0.&H//. /./. /. n/(/aO n!@2.&H//. /./. /./(/aO n!@ n-h`/9OaX/9OaX#O#O#OLN^NuNV n0(U@f h 0( [@fpN^NupN^NuNVp/N X @ !n!IBh -@J g /. /a@P .N^NuNV-nJg"n i f N^Nu n-P`pN^NuNVp/N X n"@"#n !@N^NuNV"n i0(J@fJ0(Hf20)HHyHl/N PJfN/. n/(NPJf6pN^Nu"n i0( @m//9Oa*P n JfpN^Nu nJg h0(J@fN0(Hf6 n0(HHyHl/N PJfN/. n/(NPJf6pN^Nu"n i0( @m//9OaP n JfpN^NupN^NuNV/./9OajP-@Jg @B/./9OaJPJf n-hJgn n-h nJ g/( /9OaPJf< nJg /(a~X nJg /(ajX nJ g /( aVX n-P`N^NuNVJ g n 0(J@fpN^Nu n 0(S@fpN^Nu n 0(Hf JfpN^Nu/. /9OabP-@JfpN^Nu nJh gpN^Nu n1| -hJg("n i-Hg0(Hf h0(Hg n ("n g"/././././/a OJg n ("n g /././././/aOJgr n/( /9Oa~PJfh n/( /9OafPJfP n0(H/./N PJg&/. .///. n/( /ahOSg nBh pN^Nu n-P` nBh pN^NuNVH0 n-hJg"n i fv0)Hf i0(Hf0(U@f$h 0* [@g/( N~ XJfn"n i&n $k HnHnHnHnHn/*/( /N{O Jf2Jf,"n i#J #J#J0)@3@ L N^Nu nBh0."H//././( aO . L N^Nu0."H//./. n/( aO0."H//./././. n/(/afO n!@2."H//././././(/a:O n!@ . L N^Nu n-h`hp/N xXL N^NuNVJ f . N^Nu n 0(J@fb0(Hf N^Nu n 0(H".=@ Hn///.N& OHnNXN^Nu n (f N^Nu0."H//././././. /.aO-@ n f !nN^Nu-yMJg4"n i f#n"n i f#n n-h` .N^NuNV n0(H". 1A .!@ h 1@"h3nN^NuNVJgL n-hJg n-Pp//N 2P-n` n-Pp//N 2P-n`N^NuNV .OnN^Nu09UHH|f209UHHf" 9O yOX . #ON^NuJOg 9OR#O @fJ/<N X#OJOf#O` yO O#OOp yO #O 9O yOX . "9O yOX49U1B yOX29U1A29UH49UH#O#H|#HN^NuNVp#HB-yOJg nOf 9OR`p@ n-PB-@ .l nX2(H nX-A"n0(HБ-@찹Ho^ . @f/HnHnNVO B .A".$. ԁ A ."nX R#H`( .찹Hf .A ."nX R`0 n/</N 2P-n`Jg/.HnHnNVO p#H|#H#O#O#O#O#ON^NuNV-yOJg nOf 9OR`p@B-@ .lL nX2(Hf0 nX0(H m . nX0(H1@R` n-P`xN^NuNV yM-h-h-h "n0)S@fr0) J@fj Un^ mT"n0)U@f6"i 0) [@f*/ /aP-@Jg/r/r/BaON^Nup/BNA*PN^Nu n0(U@f n0(U@f h 0( [@f"n i 0( [@fv-yMJg$ n0(S@f h"n g n-P`Jg> n"n#h  i -h#yM p//NA*P yM!nN^Nup/BNA*PN^Nup//NA*PNuNV yM-h-h n0(S@f (` n (#O\#OX n2(-@SAfJ 9F<-@-@p/HnHn/NdOBNXBN?X/.BN.LP`8p-@p-@BHnHn/.NdOBNXBN?XHnHnHnBHnHn/.NVOJf( 9F<-@-@p/HnHn/.NdO . g/NX`& n0(H/( //.B/<NdO fp/BNnPN^Nu-nHnp/NP-@Jot o09UH".g p/N xXB09UH".l n"P i -Hg0H/N X-@ gYfR .R n2(Hf*0( J@f"p//N 2P . n"PB `f nP//.aP`R fH n-hJg nX//.aP n-P` n0( J@g //.a~PR` /.NHyJw/.N PJf p#X`HyJ|/.N PJfp#X 9XN^NuNVB.JXfpN^NuNJgJWgpN^Nu#W`f 9WrN@SfTB/9X/9UN3O XgN Dp/Hn/9UN1O SgN *RXRW 9X @X Wp#XN^NuNVJXf=|`& Xf=|` Xf=|0.H//. /.aO N^NuNV . S Jg6 WfN yWVRW"nRRW` 9WWo#WN^NuNV .SJg. WfN yWVRWBRW` 9WWo#WN^NuNVJWfpN^Nu 9WW-@ Xf 9XѮB/9X/9UN3O XgN D ."9XlD m </HyX8/9U-@N1O gN * .ѹX`B/./9UN3O gN D/9WHyV/9UN1O WgN * .йWXo#XBWN^NuNVp/N X"@"-@JX(f#X(` yX, #X,Jf>Jf n1|`T f n1|`> f4 n1|`(/</9W/.a\O  n1@ n!yW!n f1|pN^Nu 9WNuNVN#WN^NuNVB-yX0JgF n/(/.N PJf nf n0(2.@f .N^NuR n-P`p/N X"@"-@JX4f#X0` yX4 #X4/.NJXR/N X n!@/./NAP n1n!n .N^NuNVHyPlNJXJr/HyJ/9U-@N1O WgN */.HyPl/9UN1O gN *B . l. @Y@"@Jp///H aP o R`p/HyJaP#YLN^Nup/HyJ/9UN1O UgN *NuNVJZ\gpN^Nup#Z\p"9Z` AY@$J AY@"Jr/HyJ/9U#ZT#ZXN1O YgN * 9Z`N^NuNVJZ\fpN^NuJg /.NXNRZ`p#Z\N^NuNVN/.NJXJr/HyJ/9U-@N1O WgN */././9UN1O gN *A@ 9Z` @Y@"A @Y@ @p/Hn/9UN1O ]gN *N^NuNVJZdg6 . Zhl p/N xX/.a4X 9Zh ѮѹZT . S Jgh ZPfN yZPYP 9ZPR"nR#ZPZf$ fN yZPYPRZPRZT` 9ZTZXo#ZXN^NuNVJZdg2 .Zhl p/N xXHyJadX 9ZhѹZT .SJg. ZPfN yZPYPRZPBRZT` 9ZTZXo#ZXN^NuNVBZdNp/HyJ/9UN1O UgN *p@@@@B 9Zh".ltS n(R`JZlfp`p"9ZhA Zlf AJZlf .@@|+ 9Zp@@ Zlf|- 9YL@@p -@`p-@ ./@R"//Hn/9U-@N1O gN *N^NuNVJZPfN^Nu/9ZPHyYP/9UN1O ZPgN *BZPN^NuNVp#ZdJf . @Y@#Zp`p//.a(P#Zp#ZTZt# Zh#ZlpN^NuNV-yY8p-@Jg& n/(/.N PJg n-PR`JfNp /N X @@ -HJY8f#Y8` yY< #Y gJfV n@`\.gp`p nHH`8.gp`p` nHH` nBp#KpN^Nup n@ nJf n|B .N^NuB . lFr NA@ @JR//.N PJf .r NA@ @J"nPR`.g /.N9^X.gp` . //.N6P n!@JCg@ . JgB/.N8XP n!@JCgJp#K nBpN^Nu .  f$ n/(N8Xp#K nBpN^Nu .N^NuNV . ". ///.azO N^NuNVJjp#KpN^Nu/.aX-@JfpN^Nu n(HH dN``` ``/./. n/(N9O -@JCg JfpN^Nu ng .N^Nup-@-@ .lZ n R@HH g f$ .Sr///.aO .N^Nu n R`JfJfB .N^NupN^NuNVJjp#KpN^Nu/.aX-@JfpN^Nu n(HH drN``` ``P ngp/B/.aLO ng0/./. /(N9O -@JCgpN^Nu .N^NuB.p-@-@-@ .l n R@ f . g | S n\X .R.-@A m/Hy\X n/(N9O -@갮gpN^NuJCgpN^NuB`hJg:/.Hy\X n/(N9O -@갮gpN^NuJCgpN^Nu .N^Nu .N^Nup#KpN^NuNV/.aX-@JfpN^Nu n(JgpN^Nu/./. n/(N:$O -@{JCgp#KpN^Nu f`JgZ nfN .S-@Jk4B/./.afO Jgp/Hn/.a\O JfS` .RN^Nu .N^NuNV/.aJX-@JfpN^NuB n/(N8XJCgp-@ nB .N^NuNV/.N9^XJCgpN^NupN^NuNV/.aXN^NuNV/. /.NPN^NuNVJ9Kg9KHHB9KN^NuBp/N@lPN^NuNVJ9Kg9KHHB9KN^NuBp/N@lPN^NuNV fp /p/p/N@lO /.p/p/N@lO .N^NuNVJ9KgpN^Nu .KN^NuBp /N@lPJVDHH NuNV .CopN^Nu yC .ѹC䑹C N^NuNV/.aX-@JgN^Nu | N^NuNV 9C䐹CѹC#CC#K#K#K#K N^NuNVaL /./9K-@aP n-@Jfp-@ . dN```8`R``J f`A"n#H`4  fDA"n#H`  f(A,"n#H`A"n#H`  fA"n#H`A2"n#H`  f. .r/@B///r/r/N@lO #CJCWDHHLN^NuNV .r/@///r/rA/N@lO#CJWDHH N^NuNVJfB/./. /.aON^Nu"n iB/./. / NON^NuNVJfp//./. /.adON^Nu"n ip//./. / NON^NuNVH Jf pLN^NuAL$n"jg pLN^Nup". /. n/(/. /p/pB/N@lOLN^NuNVJgp@`p?r$.". v/A////./ n/(v//-@N@lO-@Jj #CpN^Nu .N^NuNVBp/N@lP n pN^NuNVB .l& n HH/r/r/N@lO R` .N^NuNVB .l& n HH/r/r/N@lO R` .N^NuNVv . lS`p}@A r//r/r /N@lOp /p/p/N@lO .HHr-Ax-@| .|T".xl>6@w f| w .wf .xUDN^Nu .xU n wRx` .| }l n  .|RN^NuNVB .lP n @HH fp /p/p/N@lO .HH/r/r/N@lO R` .N^NuNVJg .`pN^NuNVB . n*r NA@ @\Jf @\ N^NuR`pN^NuNV nBN^NuJ]g/9]aX`NuNV. am zn aAN^Nu. N^NuNV. HH/aX.HH/@aX/fp`pN^NuNVp-@p-@p-@-@ n JgR`B . nJg n@JgR =g ,f .S".f .N^Nu .R.HH n HH//-@a2PJfB. ,g =f p-@p-@ .,fRR`^Jg .S".f .N^NupN^Nu /N>$rN?$Nu -"gHAHIANu/JgLQA/gRA/fJjR`SAgAo Al&I?HA_HABA$Nu/<N@\B`/<N@\ <JjO` 9$fprt`"HBHBB/t Q$Nu//gdB Jf BB /g$RB/fJjRd R`SBgBo Bl(J?BBHB_HB&Nu/<N@\p`/<N@\0<HBBH@B@Or` NV#]N^NuNVH*OBCpn@N?.*?.&?."?.?.?.?.?. NA.ML?N^NuH<*g2jD(g(jDBv㒴eRQ"jDjD`BBL to exit$%&'()*+/5#38 %')*.1249:<=>?V^T_(`c dghicG rTdtH$KMAAlx0"3@3@/8lJn:lomqxrjf`6"Lt.®\j$Ī EFCXA55CXS55FDFJPQCXN5CXM55CXM22CXM33CXD55CXD22CXD33Lattice 68000 C Compiler (Phase 2) V3.03Copyright (C) 1984 Lattice, Inc.Invalid -f optiontextdataudata????CXV43CXV42GGCXV53CXV52GGCXV24CXV34CXV54CXV45CXV25CXV35$%&'(+/35`lnmodbecCXC55 CXD33  Module size P= D= U=File name missingParameters beyond file name ignoredCan't open quad fileCombined output file name too largeCan't create object fileInvalid command line optionEnd of file on object fileSeek errror on object fileIntermediate file errorCXERR: Not enough memoryInvalid intermediate file0123456789ABCDEFtextdataudatatextdataudataJJJ_32k Enter to exitcon:CON:prn:PRN:lst:LST:lpt:LPT:lpt1:LPT1:aux:AUX:com:COM:com1:COM1:rdr:RDR:pun:PUN:nul:NUL:null:NULL:AXI:,AXO:,LST:,NIL:,CON:=*K  ( H  ( H  B H" .  "   2  " $ 0 $  $                 "  6. &8<$ ,.j (4R0 ,F   * 4"`"*H  &"~ F0 *2   N48>@rZB,RRdJX2D$<$V$,X@L @(, " >D 6| $ V Z$  "  4 &">& V:>    D B " ,  *  >F,V6 4p4  $2 "(@  .4"   $  T $       P 6 < .B &  "H fF4, (.4, "   p. F    " $ * $ *   " ,(:, " &  ><& , " : " 4  &" * ( <& &      : ( :.N   j  H @ "$P (^$ $d "\ &&2 b$> F     2 "     2D : ,,     (2    6(   "  B .  ", , "  44  $  D  $  6  @Dz              (          (           "           N&     L`884 jJ  F&B,,p $ : & $  ,$ $ f0 &*  ,"t, &*  ,"4 ( &*  @" d"4B > , >:L "6 . $h * (" .,"  8<N &.& &( ,&&$4~r". "> >6, ("*H&&,*TF(  "R8  ($&&,*$v$ R .p( *t*h ,.,. @lf\T  F ^< ,6@&&V(4$4$8^ . (                                        & 0 " 6& $.   0F    `>`(<,&8(<,&   6 *  (& $($$0 pL rr  F<hv  >xL&P&* : : v^    X@ 8$~0ZFP. $ "&   & 6,< "  "2$80,&*   &  2$     :  l&B   $,:$*,  L$4XJ, $Z6,   $p 4*" F , 4:6.vTh*0J00 *  Jv    P&   RN     $ @"     "  ,       0J $    &               >         P&$ > &   &             &8    "  "      (    P: :":V:l&$@l"&:P(J.z   H $ , Xd`$  J $0  ,  4" & 0  D &B 4 T<@HD(n *?HH>*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. * *$"*# XDEF CALLVDI,CALLAES,VDIPB,AESPB * 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 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) requir Re * * 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 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) *H * 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 *B * * 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 2: VDI Ouput functions * F* * (C) Copyright 1985 METACOMCO plc. All Rights reserved. * *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 *( * * 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,3 WORD II,0 WORD PI,1 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. *H 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 of 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 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 w idth 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 *H * vst_height( handle, height, &char_w, &char_h, &cell_w, &cell_h ) * * word h andle 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 S 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 *H * 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 W*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 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 specified, each destination pixel will take * on a value derived from a logical combination of the * source (S) and de stination (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, &colour ) * * word handle Device handle * long x,y Coordinates of pixel * word value Pixel value (0 or 1) is returned here * word col ,our 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 *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 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 from the upper * 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 ) * * word handle Device handle * word status The state of various keyboard keys, with bits set * as follows if the key is U 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 *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 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 information * word work_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_attributes,2 LABEL attrib LONG IO WORD CO,6 SETPTS 0,0 CALL W 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 Horizontal 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 = vqt_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 Error code. 0 if all 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 *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 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 *H * v_exit_cur( handle ) * * word handle Device handle * * This causes the device to enter graphics mode and ex 9it 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 CO,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 * e*B * 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 * Enquire current alpha cursor 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 *H * v_rmcur( handle ) * * word handle Device handle *3* LIBFNR v_rmcur,1 WORD CO,6 SETPTS 0,0 SETA CO,5,19 CALLW v_rmcur,5 END 9*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 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 * application's id number. *H 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 Null terminated string of exactly eight characters, * padded with spaces if required. The name is the filename * 9 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 appl_exit,19 RETURN IO,0 END b*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 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,kstate 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 IO,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, an td 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 #define HUGE_VAL 1.797693E+308 /** * * Redefine secondary simulation function names to become primary names * for systems without a Numeric Data Processor. * */ #ifdef NONDP #define _acos acos #define _asin asin #define _atan atan #define _cos cos #define _cosh cosh #define _cot cot #define _exp exp #define _fabs fabs #define _ldexp ldexp #define _log log #define _log10 log10 #define _modf modf #define _pow pow #define _pow2 pow2 #define _sin sin #define _sinh sinh #define _sqrt sqrt #define _tan tan #define _tanh tanh #endif /** * * Structure to hold information about math exceptions * */ struct exception { int type; /* error type */ char *name; /* math function name */ double arg1, arg2; /* function arguments */ double retval; /* proposed return value */ }; /* * * Exception type codes, found in exception.type * */ #define DOMAIN 1 /* domain error */ #define SING 2 /* singularity */ #define OVERFLOW 3 /* overflow */ #define UNDERFLOW 4 /* underflow */ #define TLOSS 5 /* total loss of significance */ #define PLOSS 6 /* partial loss of significance */ /** * * Error codes generated by basic arithmetic operations (+ - * /) * */ #define FPEUND 1 /* underflow */ #define FPEOVF 2 /* overflow */ #define FPEZDV 3 /* zero divisor */ #define FPENAN 4 /* not a number (invalid operation) */ /** * * Constants * */ #define PI 3.14159265358979323846 #define PID2 1.57079632679489661923 /* PI divided by 2 */ #define PID4 0.78539816339744830962 /* PI divided by 4 */ #define I_PI 0.31830988618379067154 /* Inverse of PI */ #define I_PID2 0.63661977236758134308 /* Inverse of PID2 */ #define HUGE 1.797693e308 /* huge value */ #define TINY 2.2e-308 /* tiny value */ #define LOGHUGE 709.778 /* natural log of huge value */ #define LOGTINY -708.396 /* natural log of tiny value */ /** * * External declarations * */ extern int _fperr; /* floating point arithmetic error */ extern int errno; /* UNIX error code */ extern char *ecvt(); extern short *seed48(); extern int atoi(),matherr(); extern long atol(),strtol(),lrand48(),nrand48(),mrand48(),jrand48(); extern double atof(),exp(),log(),log10(),pow(),sqrt(); extern double floor(),ceil(),fmod(),fabs(),frexp(),ldexp(),modf(); extern double sinh(),cosh(),tanh(),sin(),cos(),tan(),cot(),asin(),acos(); extern double atan(),atan2(),except(); extern double drand48(),erand48(); /** * * This file contains macro definitions for use with the Atari specific * functions gemdos,bios and xbios (see manual section 5.5) * **/ extern bios(); extern xbios(); extern gemdos(); /* GEMDOS functions (trap #1) */ #define Pterm0() gemdos(0x0) #define Cconin() gemdos(0x1) #define Cconout(a) gemdos(0x2,a) #define Cauxin() gemdos(0x3) #define Cauxout(a) gemdos(0x4,a) #define Cprnout(a) gemdos(0x5,a) #define Crawio(a) gemdos(0x6,a) #define Crawcin() gemdos(0x7) #define Cnecin() gemdos(0x8) #define Cconws(a) gemdos(0x9,a) #define Cconrs(a) gemdos(0x0a,a) #define Cconis() gemdos(0x0b) #define Dsetdrv(a) gemdos(0x0e,a) #define Cconos() gemdos(0x10) #define Cprnos() gemdos(0x11) #define Cauxis() gemdos(0x12) #define Cauxos() gemdos(0x13) #define Dgetdrv() gemdos(0x19) #define Fsetdta(a) gemdos(0x1a,a) #define Super(a) gemdos(0x20,a) #define Tgetdate() gemdos(0x2a) #define Tsetdate(a) gemdos(0x2b,a) #define Tgettime() gemdos(0x2c) #define Tsettime(a) gemdos(0x2d,a) #define Fgetdta() gemdos(0x2f) #define Sversion() gemdos(0x30) #define Ptermres(a,b) gemdos(0x31,a,b) #define Dfree(a,b) gemdos(0x36,a,b) #define Dcreate(a) gemdos(0x39,a) #define Ddelete(a) gemdos(0x3a,a) #define Dsetpath(a) gemdos(0x3b,a) #define Fcreate(a,b) gemdos(0x3c,a,b) #define Fopen(a,b) gemdos(0x3d,a,b) #define Fclose(a) gemdos(0x3e,a) #de fine Fread(a,b,c) gemdos(0x3f,a,b,c) #define Fwrite(a,b,c) gemdos(0x40,a,b,c) #define Fdelete(a) gemdos(0x41,a) #define Fseek(a,b,c) gemdos(0x42,a,b,c) #define Fattrib(a,b,c) gemdos(0x43,a,b,c) #define Fdup(a) gemdos(0x45,a) #define Fforce(a,b) gemdos(0x46,a,b) #define Dgetpath(a,b) gemdos(0x47,a,b) #define Malloc(a) gemdos(0x48,a) #define Mfree(a) gemdos(0x49,a) #define Mshrink(a,b) gemdos(0x4a,0,a,b) /* NOTE: Null parameter added */ #define Pexec(a,b,c,d) gemdos(0x4b,a,b,c,d) #define Pterm(a) gemdos(0x4c,a) #define Fsfirst(a,b) gemdos(0x4e,a,b) #define Fsnext() gemdos(0x4f) #define Frename(a,b,c) gemdos(0x56,a,b,c) #define Fdatime(a,b,c) gemdos(0x57,a,b,c) /* BIOS functions (trap #13) */ #define Bconstat(a) bios(1,a) #define Bconin(a) bios(2,a) #define Bconout(a,b) bios(3,a,b) #define Rwabs(a,b,c,d,e) bios(4,a,b,c,d,e) #define Setexc(a,b) bios(5,a,b) #define Bcostat(a) bios(8,a) #define Mediach(a) bios(9,a) #define Drvmap() bios(10) #define Getshift() bios(11) /* XBIOS functions (trap #14) */ #define Initmous(a,b,c) xbios(0,a,b,c) #define Physbase() xbios(2) #define Logbase() xbios(3) #define Getrez() xbios(4) #define Setscreen(a,b,c) xbios(5,a,b,c) #define Setpallete(a) xbios(6,a) #define Setcolor(a,b) xbios(7,a,b) #define Floprd(a,b,c,d,e,f,g) xbios(8,a,b,c,d,e,f,g) #define Flopwr(a,b,c,d,e,f,g) xbios(9,a,b,c,d,e,f,g) #define Midiws(a,b) xbios(12,a,b) #define Mfpint(a,b) xbios(13,a,b) #define Iorec(a) xbios(14,a) #define Rsconf(a,b,c,d,e,f) xbios(15,a,b,c,d,e,f) #define Keytbl(a,b,c) xbios(16,a,b,c) #define Random() xbios(17) #define Protobt(a,b,c,d) xbios(18,a,b,c,d) #define Flopver(a,b,c,d,e,f,g) xbios(19,a,b,c,d,e,f,g) #define Prtblk() xbios(20) #define Cursconf(a,b) xbios(21,a,b) #define Settime(a) xbios(22,a) #define Gettime() xbios(23) #define Bioskeys() xbios(24) #define Ikbdws(a,b) xbios(25,a,b) #define Jdisint(a) xbios(26,a) #define Jenabint(a) xbios(27,a) #define Giaccess(a,b) xbios(28,a,b) #define Offgibit(a) xbios(29,a) #define Ongibit(a) xbios(30,a) #define Xbtimer(a,b,c,d) xbios(31,a,b,c,d) #define Dosound(a) xbios(32,a) #define Setprt(a) xbios(33,a) #define Kbdvbase() xbios(34) #define Kbrate(a,b) xbios(35,a,b) #define BYTE unsigned char /* unsigned 8 bit int */ #define WORD short /* signed 16 bit int */ #define UWORD unsigned short /* unsigned 16 bit int */ #define LONG int /* signed 32 bit int */ #define ULONG unsigned long /* unsigned 32 bit int */ #define TRUE 1 #define FALSE 0  COMPILER DISK should contain: README.TXT This file LC.TTP Compiler driver LC1.TTP First phase of compiler LC2.TTP Second phase of compiler ED.TTP Screen editor Header files... STDIO.H Standard input/output header MATH.H External declarations for math library functions FCNTL.H File control header, mode names etc ERROR.H Unix error codes CTYPE.H Character classification macros DOS.H Standard Lattice environment definitions LIMITS.H Storage class ranges SETJMP.H Structure definitions for LONGJMP GEMLIB.H Assorted GEM definitions OSBIND.H GEMDOS, BIOS, and XBIOS function names PORTAB.H Standard type definitions for portability LIB0.ASM Assembler sources of GEMLIB LIB1.ASM LIB2.ASM LIB3.ASM LIB4.ASM LIB5.ASM LIB6.ASM LIB7.ASM LIB8.ASM LIB9.ASM LINKER DISK should contain: LINK.TTP Linker C.LNK Standard linker control file STARTUP.BIN Initialisation code (GST format) CLIB.BIN C run-time library (GST format) GEMLIB.BIN GEM graphics interface library (GST format) STARTUP.O Same as above in TOS format CLIB.O GEMLIB.O LIB10.ASM Assembler sources of GEMLIB LIB11.ASM LIB12.ASM LIB13.ASM LIB14.ASM LIB15.ASM LIB16.ASM LIB17.ASM LIB18.ASM VDIMACS Assembler macro definitions for GEMLIB AESMACS f/** * * This structure is used by the setjmp/longjmp functions to save the * current environment on the 68000. * */ struct JMP_BUF { long jmpret; /* return address */ long jmp_d1; long jmp_d2; long jmp_d3; long jmp_d4; long jmp_d5; long jmp_d6; long jmp_d7; long jmp_a1; long jmp_a2; long jmp_a3; long jmp_a4; long jmp_a5; long jmp_a6; long jmp_a7; }; typedef struct JMP_BUF jmp_buf; /** * * This header file defines the information used by the standard I/O * package. * **/ #define _BUFSIZ 512 /* standard buffer size */ #define BUFSIZ 512 /* standard buffer size */ #define _NFILE 20 /* maximum number of files */ struct _iobuf { char *_ptr; /* current buffer pointer */ int _rcnt; /* current byte count for reading */ int _wcnt; /* current byte count for writing */ char *_base; /* base address of I/O buffer */ char _flag; /* control flags */ char _file; /* file number */ int _size; /* size of buffer */ char _cbuff; /* single char buffer */ char _pad; /* (pad to even number of bytes) */ }; extern struct _iobuf _iob[_NFILE]; #define _IOREAD 1 /* read flag */ #define _IOWRT 2 /* write flag */ #define _IONBF 4 /* non-buffered flag */ #define _IOMYBUF 8 /* private buffer flag */ #define _IOEOF 16 /* end-of-file flag */ #define _IOERR 32 /* error flag */ #define _IOSTRG 64 #define _IORW 128 /* read-write (update) flag */ #if SPTR #define NULL 0 /* null pointer value */ #else #define NULL 0L #endif #define FILE struct _iobuf /* shorthand */ #define EOF (-1) /* end-of-file code */ #define stdin (&_iob[0])  /* standard input file pointer */ #define stdout (&_iob[1]) /* standard output file pointer */ #define stderr (&_iob[2]) /* standard error file pointer */ #define getc(p) (--(p)->_rcnt>=0? ((unsigned char)(*(p)->_ptr++)):_filbf(p)) #define getchar() getc(stdin) #define putc(c,p) (--(p)->_wcnt>=0? ((int)(*(p)->_ptr++=(c))):_flsbf((c),p)) #define putchar(c) putc(c,stdout) #define feof(p) (((p)->_flag&_IOEOF)!=0) #define ferror(p) (((p)->_flag&_IOERR)!=0) #define fileno(p) (p)->_file #define rewind(fp) fseek(fp,0L,0) #define fflush(fp) _flsbf(-1,fp) #define clearerr(fp) clrerr(fp) FILE *fopen(); FILE *freopen(); long ftell(); char *fgets(); #define abs(x) ((x)<0?-(x):(x)) #define max(a,b) ((a)>(b)?(a):(b)) #define min(a,b) ((a)<=(b)?(a):(b))