IMD 1.17: 11/11/2014 12:48:08 82VKXBVERDOS B* VERSADOS/RMS68K OBJECT 4.3 SN=39358 (DRIVERS) 5 OF 11  BT0582VKXBVERDOS 0420¿|-*g>*g RjÇaÞ* f@* g­,fí-`­ ,g` B­X­,AÕa Vfÿfa|`ÿ`HçAP$8 >&68 @HC(HD4<  g 4<8***HB* g2Hçz,* m6a``NqLß8`Lßp&*HC6‚€4*AÕaNqLß ‚R�`ÿ|@ç|$©%|ÿÿÿÿ#JFßNuIé L g(@´¬lò%B$€ ŠNu"x ,Aé ?Fü'"HJ‘fNs Q²¨mð°hlê/(?(Bh (RhШ ²€lô!@B€0("((f"�"x , ©#H!|ÿÿÿÿFßNu9 4ga€î`*_aœ _N`Lßÿ\�?_f,J¹gaýžfJ9 [g|øÿa¢AÖa Ö`tNs@ç9 4ga&î HçÿþNi/ /9 b oF,hHV/(@À@ÿ?"h 0P*n6`2 f€\�,_( „!TCBgaÄJ@gÿZ @f AÖa7@`ÿJ @fÿBJ�f&HC4<HBAÖa  Nq`ÿ(HBHA(&64< ‚HB4`àâˆ&T�(,_" �!TCBga`Cð=C^AÖa6àJ®@gþæ$< ÿÿHCHD6`¤.x Fü aüæMø "NJ© gì|,i 0.,@ÿfæ#n ®-!Î Kî.r?%2 °føB8 [|øÿ1ø T R®-fd.-fh®-fhJ¸ g*n6aú n®ú`þðJngAÖavHzþˆ`>®úHzþÖ`AÖa`Hzþr`JnfB®@ÁAû-oü|úrNuHV,x Hî?ÿ-_8Ni-I<"x =iÿúúNuEø ¦Çìs,)gÇ`"ÂüEø ¦(NGs*r»Îg°$<‡42&26,(gÃáK,$( *,,,p<,.,>, ,"0<2 gB@2g<,*.,(>,°H@0,²H@"@J²f -@g4&@4+HC6+HCAòa@J²gHç@(AÕa „`0Lß raÈ,sf-|çOGB.ûAúþ¶.ˆNuLß,sò Rrì ,NuÇ1G*Bh\è)!|EXEC°!|  ´<(,Æ1F.½Èg$F-ÿ† g†1F,|ð& fa¬Nu1F,X� <1Wú!oü`äa aaaaaaaaaa a aaaaNq?/_g/ gºa aþ8 4g @ça ¤ªT�Kú`ªVLaaaaaaa a aNqNqa Nq`"`6`>?/_gL/ fX�—Ns?/_g0/ gNa"/ fÈ?/ _g/ g&aaýr8 4g @ça ªT�Kú` ˜H.ž•â� n2-4.(g^2-,6"’må‰Ü�z n6a²`Nq`<"FJ‘g6*8 š�,.<œ… n6a’`Nq`(F-C<&8 8ß¿Ãfú/?,ÿú<<`B† m n-_¸-_¼.)g".Hg a@ nü|Jfüv n,Cø – 1pfHzüf`üÄ=@=|ç�GB.û`üDJFfü>AÖaý¤ Hzþ�Ÿ`új P�` €˜`úX~$.HffdfLLîÿ`®z,.P n6a ¬`Nq`&~ F&(.T·„f È®Lg-CT`"R‡È®Lggû¶RnX .X°nXbû¦~Hzû `X oBEgaFßüNu.�/,x ½üg*/ f".)g.H8gîH,_"—Ns,_"/8 6Nuaè$< 4.&.(.8áL<Aî@aª`®)Lîÿt®-@&Nuî ,`ùv@çHçp "x ,Gé Fü'$K&g&&C´«fò$“JAj.&©#K'|ÿÿÿÿLßT�NuJAkô&)fT¯`è&C#SFïB«'@ '@'H'BB«BkgëáIAA 7Aa–Ó«Fü'&© #K LßT�NuHøÿÿ@ø!×Ni!ÉH!øL"x :3|•3|µ3| 3|°|`Þ@ç|8 4ga ÈÝFßNu|8 4ga °ÝNsNu|ð%a|`øLHøÿÿ1×!ï|LøÿÿNs@ç|JÐkü0ãHâ@S@0€kFßNua>T.ra�Fß.x AÖaî`÷úî ,B® (f!NNu*@ - fø+N Nu.&|ð&î-HîÿtHç 8 Kï�� €Poaþà. ‡ÿIöpGr8ÝU@núLß0€Nu@ç|JÐkü0ãHâ@R@o0€FßNu/ "h!i €0€B© © ,"_FßNu/ x NB�B8 Z 0àIDAÒx XäIÒ¸ BJ8 Zfà _NupðÀ($@&`h$&@çè-f,Hç@ Eø |(&"* g ʰ*&còÊ!A %H LßFßNuJ¸ tf|Hçÿþ!Ï tFï<.x t|9÷0 À÷0.x tLßÿÿB¸ tNsRx \ xd \k$/ "x :3|3|53|.3|>"_Bx \Nsp þÀˆÀÚÀj€nÀLÀ À€$: 0ÀH(¼€@*ž ‚&À&ì%z ‚%n Â,œ,ܼø(fÀ#R Â+È€,¨$€,²8€*À œÀ” ÂŒ<Â,Þ"ØÔР€#L €#D € €¬ €<´°¬¨"X€BˆTÀ”�Œ €$n, ¶ÀŒ€tìÁÀÊ À!> Àê ÀZ ÀXT>€#†€´€HçÀÀ x :| x NPø Z(( B�28 VÓ¸ B 8 B€&\k:R¸ >!À B <&\"x ,@ç| i "g‘¨ P`ôFß i"g‘¨ P`ô"x ,J© g0/@'ÿ@ "8 BaóLß8 4gaòÿJx Tg Sx RnPø [`órfNsT� €%bû°Ð€0;"Nû �%cT—Nu/Ò�2; Aû"Nuûˆü"üÈý@&|P”˜,`ÀBûøˆÞ~ ®ö"ä÷B+v˜èœxý ~ò†&ÆûˆònúÜÿäðÆñ.?_fó\aõ¨=n\8 4ga6ÿ.)g".Hg~aú=@|Bn€ÿÿJ@kZåˆ €(n¦EùŠÕÀ4*?g0B…, n6aÎ`NqTn`d(FgAÔan`Vn`N*HÔÒHyÜNÒ$x ($ gND@°jnFS€Àü EòJªg6*f"²®f&?*$jHyÜ@çNÒ0€ãˆAùBNð=|`ôj=|Ns*I"H Q")aÖ`T—Nu"M �!TCBfò*H(m@ ”!ASQfì`T—`n �!TCBf*H(m@ gÆPø [,fT—`B"á™�ÿa ``êHç<ta4gßüHç`ta$ßüJ€g/a:`T¯(¬fNuNuAï6Ø·ìe&lUBgU�fìNuUANuHç&B‚4fx`–HC2xƒf6ƒpx ga>KøIøB§$I"x fFJQk$¶1@f&i OJ�g·Øg`öHSAëaùŽa”Cé QÿÿfÎB„ g| g4´¬o  g($,aœ‚)aØ®- K gT¯Lß88Nu g@î-|ð&Aí-H”|0ãHâ@S@lü0€aùJ�Fü AÖaú$a‚`ñ,R„R„`œ g*$@ g**º‚m´¬nº¬m` º¬o(J*K fÖNu•¬Õ¬ *,á�GôXf*, $T ,g"@Û© "Šg%INu*ŠgúBªNuaøänw&Nu"_ g @Aèaù`ðNÑ g  iµèl”µém˜fÿNJQk’*iHUAíaø6 gþðáŠ&J×ÂàŠ(@°Šnþà ,áˆÐŒ°Šn fè`þ̰‹gþˆn gþ¼�Šàˆ$`þt&”g"T#K(‹'L'l B¬ �‹àˆ'@‘¬`þJCé QÿÿfÿPgþ¸&JB„`þLa÷Hç $nLß0T—Nu$H"x ÿÿg *iµílµémÜJQkÞá‰Òв­bÎ` Cé QÿÿfÐ`ÀCøAía÷T&g C±Ál"H&fô g )áˆÐ‰µÀm¬%B f -��àˆ%@ $ƒ%If*Š`$"Š �‰àˆ�©#@ f *Ñ©#j "’$IJƒg$"C#JJª f )Ѫ%i $‘g"R#J- ð"x ²f(i,g Aìa÷H`îCé QÿÿfÜAía÷4Lß0NuT—`îHçÀ@ç&x 0|*S»ëfKëIí&ŒFß+@+H+N (o:”T¯;o+o Uïÿb+o a÷+A2<ù’àHF@@ÀüúÒ@;ALß8NuBƒB€"x gbEé0)gP—ËJj f ·üf$&J` ±êf´’gB* g f4 f& ÕüS@fÄJƒf"0) K·üf J°i m‘ÈR€T—Nu JNu CNuB€*g B…:(0P$f `¾°P g Q… E læ*T—NuB‚BƒB�"x $( gd4)´i gRB(pJq fJƒf:& „g04)`*±üg±ñf$lµñf$lµñg"Jq k"€SDf²T—JƒfB€B‚Nu Nu qNu gJ�g` NNu gø"(g. (f".°®f²®gÚ"x ³üg°©f²©g"i`æT— INu`††ÿÿÿB€&àŽ(o8؃S„àŒB…:(J0Pg¼pPe¼pPb¸pPbÜpPáŽÜNu Q… E lÔ*T—T—,Nu$x ( gTB€0lTD@°jnLS€Àü Eò4,f^Jªf8g .(f‚z,, n6aÿ\`$Nqn NuXnNuZnNu\nNun Nu%FBó5B$®NuJªgÚ .°’g.(gÐBªNu"x f$x jB‡B‚, Jlf„J1 g\nNu~Gòp·êmZnNuJ«g‡`â6üN¹Aúê�&Èz,, m6aþ¬` Nqn Nu6‚'M'l 'l ‡ Žü‡ í)GëÿúåŠ B ‹Nu1 g"S‡ÎüP‡Gòp k (°®g.(f=|NuGë,fÿx,f=|Nua0Nu"x f$x j~Gòp·êl¹ëf GëB‚4a ‡`ÞNuAúéf&åŠ B ƒäŠB1 B«Nu*n6., AÕaüÄ`^n`Ò<5P$0@0f22, A0g ŒA g& f.(fn `œn`¾\n`¸,g†, gÆ"�$. uP aûÎ`±üf Zn`R\n`L�uP$!uP  ‚1A1| Bƒ65PÖuPá‹!C 65P–uPRC1C3@1| , gè NuJ¬6g*l6B…:-5P$gabQ… E lî,)gP"x Ké>)gB,,Jm g.¼•f*­ Jm f0-@ fB�2- m aùf`aðnÛüSGfÂNuB„,)gÄ `–>, fz,, n6aüF` Nqn Nu$F,g"z,, m6aü"`"` JEgJ0Ðf^nNu., m6aúþ``êB€00P, f8ÐpPáˆ%@B€$°P 5pP$ª00Páˆ%@B€00Páˆÿ%@ Nuáˆ-@ Nu»Îg -,fn NuZn`r\n`jB¸ b., m6aúx`æJ…gÚ0, 2,A'ÿg� f  gÁÁÁ� B‡,,g�  gB†.8vΆެÞ¸vθzà�"Ff�fAø pfRˆ-(fTˆHG>G‡ÿ?HG Gaõn`.S€g^n`®Pn`ön /fè"AÓa÷š`Þaî¢&H.*á�g, "F m6aú–`È`ÆJ0PfÀ!¬ P 0, @Oÿ gÀ1€P$1¼Pg1¼P àˆ1€PЇS€1€P �‰àˆ1€P�P&ðP$R(-K gá�-G$T�Nu., 8,(M¹Îg,,f n NuB¸ b*l6AÕaøò`^n`´J¬@g ,<àˆ°uPe°uPb n `’05P$@0g@$,25P$ uP aø.`aíœ<(SFÜuP;†PSh B†<(  g†1F JFf.05P$@ f$B€05PÐuPáˆB�25P’uPR� @aö<`aíDaí¬BµP BuP$B5P'BuPS-Nu*NB¸ b` »Îfn Nu$-2, l a÷’`^n`ÜZn`Ôn `ô\n`î&H$m6.+AÒa÷à`èJ…gÔB…:+á�, gº¬d n`�*,…ÿB$,,B, g,+ AÒaø˜`”`’J…faì~J0Pf„%«P B2P' àŽ5†PàŠÜBSF5†PD€Ð« àˆ5€P5¼P+g5¼P5«P$òP$R*Rk -k  NuB‚,"x fJ1 n=|NuBƒ,g Co=| Nuá‹à Hz@çåŠ B/?8 5gaõèîNs8 5gaõØÝNu&MB¸ b*n6., AÕaö´`^n`ZJ®@g .<àH°uPe°uPbn `ÜVn`Ö·Îgö"E$F.* k6aöp` J…fZn`\n`ö* ,**fB†<5P* gÜuPáŽB€05P�uP$R@*á�a÷(` `J…f aën `ªJ0Pfò"( à‰ÔA1�P1‚P’u@DAÒu@1�P!µ@ P 1µ@&P&65@$*gƒ* gÃÃ1ƒP$1¼Pg1¼PBµ@ Bµ@$Bµ@Bµ@S-R(20PÒpPá‰-A ÉEaêàËD g$$.´«g pP "(Kaôâ`aêP&L$+ ‚Nu,,`*"-6g*,,, Aaö8`` J…gJ0Pfn Nu.Aì aõÒ`^nNu.(f((gn Nu"(6g*,,, Aaõä`` J…gJ0Pfn NuHzÿ¢?,--gGÿg­-g- ,gSs­-f­ ,Ss3g³ gAóaêgl û g+l  g+l  g- ,fAÕaêVNu gí,Nu gÜí ,NuJ­@g\n`h&, ƒÿà‹HC8 nHC Caîþ`Pn`F&H&¼!ASQl«l 'l'l Aë('H'H'H"áŠÔ‹'BBk&+K@Nu&L(m@ fXn`Þ,fn`ìz,+ n6aóð` Nqn `Ò"FB�,+ Ü�àŽ¼pPbä �c6B…,B‡ fY‡+gX� ‡fP†P�P…B€,¼€cn`X($KaÐ`Zn`H(m@ JÄ(gÇÇtU„a0(g tEèaY„J…g $EîaQ„$I$gaaÆNu6Ú·ìe&lUBnðNu(N¬-J¬@g l@B¬@"(’ˆ�ÿà�aïÚ`aæâNu(n@ fXnNuJl&f~`*lB‡-gY‡*, n6aò¶` Nqn Nu&F GfBSNuT�‚gX�»ìe›ìÛìÇÂn`6Ý»ìe*lUGnð. R‡‡¾¬e.,@ç|)GSl&Fß&F f$k'jJ+g+g7|NuB€00PR@ÐpPሀ�‹B‡+°‡l.oÔ|G*,+g7|Nu j6añÚ`"``êàŽÜpPáŽÜ>0PR‡á�žƒ|GB‡+*FGë6ÝU‡núNu(n@ fXn`$ . ?,ø€_@Jl&gKÖaNu--f°, g˜", l(gTˆ±ìe l2HA±ìe l2J�kL"Az, m6añ`Nq`8)I,- 8 > �&\e�&\R€HÔNu&F- ,fm NuzNaÿŒ(FCí0<"ÜS@fú+mt+m ”+\ü0-H+\H-Hø�-H@ûNuAÖaÞòNu¨ ,fn NuaÞîNu&L- ,fm Nuzaÿ(F­ú+lP+lT+l L+lXBmX-H8�-HJg:íú.-Hg*z,-P m6aèÖ` NqnNs†(Ff+TT­ ,0-,@ÿfAÕaÞFNu$, 6,|B„g(,n=|NuB… g *,fÆaÝØCÀg*B†6, gƒg´�lJ„gÔ„`ô‚&\`6,$Ô„"x ,Eé&J$S gŒJªf&’aÒê`ê»êfâ*fÚJ†kºªfÐ&’J†f$%M%D %lBj%EÃ5CaÒÄNuRFCf* gêªêaÒœJ†kÿ~NuaÒtJ†kÿrNuJ†f @ç| )g $@#RFß`ˆ=|FßNuSFn=|Nu&Fz`aýL(FCí0<(ÙS@fú(íü8íú -H€ÿÿÿ(À(í,0-H@ø8À(íP(íT(íL(íXNu*H(n@zB, gz.,.< n6aæü` Nq><€™AÖa֘߮<&F, fLÛÿHîÿLÛHî 2Aÿ/gÁ=Aú/[(n@ g gì Jl&gKÖaõ$Nu>,.(f‡J”gz, n6aæn` Nqn NuJ®@fXnNu,‚Eø –J2 g\n`:¼ Eø ¦Äü%Ž %® 5¼ B² %” Br 5‡ 2` ò Nu.(f((gn Nu,°(%cB® h%#n Nu@$@&NuBG`><&,"x $0àH°i lB(¸±0f:Jq0 g4 10f ¾10g,‡0Jq0 j&10JGg Añ0aÙüNuAñ0aÚ˜Nu^nNun Nu,*H"y 0 g i‘É*$ n6aå8` Nqn Nu$F&äŠ$ÙS‚fú$F(M"y 0&Q—ÉÙË$ÌÛÃ$ÍNu.(fn NuLÜ.<&\²‡e’‡R€`ö&(@ç|–¸ B˜¸ >!À >!Á B׸ FÙ¸ JFßB§"x ,Eé&J$S g@*g2&’$—.Š*fä * gÞ²ªn ‘ª²ªgÎmôѪ²ªnö`Àת`¸.g$G$*.aÏNJ‡fðNu=| . €Kª{ûfDJnpg x :(f2 x ‘ü, z n6aä```*FB®LîÿN•B¸ b,x Nuî ,NuJ”f@",g.(f".*y »üg(²­f-(f ½Ígí-gD*m`ØAÔaãf` B® VnNu*H½Íg-(g.(fn Nuí-g\nNu0,gÀí);@*;m,.-m +n°+n´­ ,­-­ ,g2 m”@ç|JÐküCèÿâJ© g»é g"i `î#m RP�Fßm-ÿ,|ð&­ ,gí-@ç|­-g <  @ ( g °�fô!m AÕaØfFßNuî)=H*fî*.(g . (gaÖ†.-g`$.)fÚ=H*=n,.î--n°-n´(N"x ,Eé&J g$@¹êfò&’aÍ`ì,)gaä ,Tg @B¨!x:!È:&,(,ì)"x )-f2¸©f¬),)g) ,g¶©@f¸©Df ><@AÑaÑ‚"i f¾,)gaôNqaö®,)gaõø~Cø –Eø ¦"Âü 1pf2g/aÐ., ,gaÕÞR‡ ‡oÄaîVaä‚J¬gH4<HB4,&,8,HD8,°*,²<,¶HF<<.,*>,\,)g<<$LAìaÚêNq(JCø )g¹Àg"@`ò#laÕ`B¸ rAÔaÝÚNuaÔâ(-gn -hp =h("NuIëÿþ6<€`&LLìpHF>,6.(BAÓaàh``0<`,B€8 oH@0< @aÛ `0<`*H4<B˜QÊÿü+S +fgJ€f `<.p .;Fp+@aæBfDÿ;D(+E l+EüHD0àHgfJg¸.%c.%D%°c@$@&*¼!TCB|€,;|:|úr;|0$MÕü`+J6$¼!TST|5|$5|D x  -"-±üg °¨f²¨g h`ærAÕaÜ|0<`aÓì`0<` +x !Í Nuf=@NuT—Nufg2 .".` ", , g.(g J�g` .".+@+ANu.(fn Nu*<,, n6aß` Nqn Nu,fnNu&Fp&ÝQÈÿüNu@ç, gzR` ,gz,. n6aÞ¼` NqTnFßNuJ”f6".*y »üg,²­f-(f-,g-.fD*m`ÔAÔaÞ(` B® Vn`°*H½Íg-(g.(fn `’-,f \n`„-m -.f`>,aþº+mlü|úr- (gDz,-ü m6aÞ` Nqn `ÿ@+Fü:(0P$g00PÑpPÑpPBpPQ… E làBm., gGìLÛÿHíÿLÛHí |­,0-,@ßfF×AÕaÓ,`þÔ@ç FJ�f8".*x »üg.²­f-(f½Íg--fí,gL*m`ÐaÜú` B® VnFßNu*H--fê½Íg-(g.(fn `Öí,g\n`È;m,.-m |­-gCø  I"h ³üg ³Ífî!i `’î,®-fNu®,=n^Bn^AÖaÒFNu-n Hî)Nu-n Lî)Nu»Î`ø [¨,g( (Xg "@B©B¨X1h^g 1|Bh^aÑðNuè-Nu(n@ fXn`4î ,.-g® ,AÖaѾ`ìì Jl&gKÖaê–Nu,fz. n6aÛì`NqpaX$F"*fp aJAø ŠAø ŠaÐRGø "SJ“g²©gÒGé`ì f¸, n6B…*ç�EaÛ’`Nq`¢B€* e c @dpËa„r Âj A fp ar"x fJ1gj°*f¦ *ÿg Jª fpÇaH *b *dpÌa4GêB…*g0 opÎaS…ç�2*²sPdpÏa ²sPd pÏaR`NQ…lâp Àjf$ * @fRˆ/<K‚? *(SJ“fp a¤Gì°¬fì*,Ig°,(gp a„ ¬g(l`ð"SJ“gGé`ô j p(R@ @Hç€8aÔÊ` LßpaÿHLß"HíˆB˜S€nú*g)I&‰"¼!CCB*giHLê?Hé?))àáˆ3@B@3@@GêIép)+g(Û(ÛS`öB€*åˆ#@D&j ×Ó#K )ÿf#|Q(*géI*géH`R*fbB€*&x fJ3g:(iD &TGëÿ¶*` &lJ¬g +*²n(K`ê¹Àg #K)I`#K&iD3|N¹J#|QÜLIéJ&ŒB€* x f¼ÿ iÑè*I/N�,_`t`Zp aøp aôpað g@o opÁaÜ n6B€S&@B… f )e2 )c )€e" )�b;°g,aØ’` Nq`¢×ËGû°ÖÓNÓÿþ Ì¢Úð *a²f´ © ©HfX")D(A&TGëÿ¶ `&lJ¬faÌ(°‹g(K`ê¹Áf&J«g((k)|N¹J)|QÜLIìJ&kD&Œ` )k`B�)(&iD&¼¶&x fB3Iø  &TJ”faËÆ°‹gIë`ì(«Aø ŠaÌî IraÔš`8aË p�az&Iaî"Kfpal)Hgp‚a`)IgpƒaT)Ig .(gþ†)Igp a6 )c )c )€e )�c*g< * d pÆa˜`”j :#j +HPAø ŠaÊü mÑè/N�,_J@g>a, )AîDJ�g"P°©gAé `îF€NuB�Aø Šaʾ X�=@`Aø ŠaʬB€B®Nu,m4B€-9f NpN@`F|q|ptAíp!­< g ­€pX‚€ ­8 T‚´-:cm:pLí<pažNuHç`CípB€ m"-+g|00J)fFÄ)fCéS`â0))gJ0`(©0-&ЈfS€�ˆ$J0U@løB0 UBlø@À@FÀ-Hg Hç:aÿ Lß\øLß|NuLß|ÿþNuHç m4pN@`Lßx`LßxNu8 4g @çaÒZîFßHç€Ä*oKíÿ°"m/ N‘*_e -g*@`êLß#X�`¿À8 5gaÒîHç€Ä 8 g*@ m ( g / @çN°Fß*_ -`àLß#`¿‚ÞjH091483 4@€€ vØRÄRxþ/ |pN@`p N@*_+HÀp@B˜S€núNu *faÌ`\-qg<ó`pB‡-qg<„`:B…,*:*"mPal` Nq<†`@&F(m",gíq<ó`&(j+mPˆpAúÿF<¼XWÈÿüf Ñü0Nð<‚`øah,+aZ+FŒ Fan1@1AB†ÆaÂaþ2<0‰| |`l -g´a,+a+FŒ Fa"H§À<F@ÀhFAÂh‚@LŸf"<6< Æhf<°hf Aÿó²hg ‚<ˆ`NB†Æa6ar2<@‰ mŒ,g< <€( É B€( f|` |€À@h|`t <€( gÀ( fÀ( gÀ( gÀ@ (&(gÀ@h'h B€É( g €À@|||P` -gþfaÌ,+a¾+FŒAìz"mŒ<aÈF@ÀiFAÂi‚@f”0)ÁiF@Àh�i0)âHe3h âHe#h âHe#h âHe#h,g äHeh` îHâHeh&&âHeh''äHeh))"�Ba$E PˆP‰ÙQÍÿü|PB�`˜<ˆ‚`Žz. -g z*,fz:Nu0<2< -g0<2<',f0<|2-…fJ-äfr²f J-äfh`°-„fPíäí¸`°-‡fJ-áfF-æ`š màôfpê`:2-ò€Smòf;|àòRmô mÚôfí¹í¸`Àí¸`¶Jmüf"@þ;mòü màôfRmü màücBmü`(B(JkÀNu -´fJ-àg -Ê�­Â` -Ö�­ÎNu$�Agpè`�gpê`†gÒfæ(�Aí¸``¶(gª²fþz` Jíåf˜Fí@­¸f0­¸fˆ­¸f­¸fž­¸f`­¸fž­¸fÀ­¸fÊ­¹fÔ­¹f ­¹f P­¹f z­¹f zFíBJm¸fÿpQíå"|NuJmìgâJmôgÜ m úcPíè`Î2-ð²müf8 md"-Ê’­Â!AmþAíÆ¼ |pB(mþ ata `Œ5Smðf;|àðSmôJ-ãg mÌôbaÊ0-ìNû`ÿ\`Nq`† mʱíÆc aDgpaF`6Á+HÊJ-âga2 -Ê-tg°­Æc�­Â+@´`´`a`ÿ -Šá˜g²gB`ô-»À°-¼f -Ê�­Â+@´í¸BmìNu mÊaÆf ±íÆb�`JJgþÎ c pa°`þ¾g ff±íÂc\ +HÊS­¬J-âgL-ug&JíçfpS­¬ < a0`þPJ-çgQíçp>a,²-ˆf -Ža +mÂÖB­¬+|8p¦`¨²-‰f0+mÂÊJ-âg-ugp\aæ -ŽaÌ`ýì+| 8p¦`p±íÆcpaÄ`DÁ+HÊR­¬J-âg bp^a¤R­¬r@Òa–-tg±íÆc ‘íÂ+H´``ýŒJ-âg J-çgp>ah -ŽaNBmìí¸`ýLFíB)ÁA)f@`ý*@Fí@0-êNû`|`¨`Ø``:`lJ-æg0B-º;|ö;|øBmú -ÒR€+@ÖJ-ÀgB-Á`B-ë`€€)ÁA g fm“ºg aÔíÀ`üœJ-èg Qíèí¸`Jmìfa`ü~H瀀 -¦cœá˜+@¦ /bB­°@ëí¸`x ?b&Qíç0@í-ªf-ugalí¸`LB­¦ md|!m´)€@)QíàQíá mhS('AíÆ¼ |p1|a^LßNu)€@)`èFíB;|àð;|àòBmôBmüFí@J-ãgaNuHçÀQíã-ug -…aŽ`FíB)À@Fí@LßNu mÖ±íÒc aBmê`þ¾`+HÖ`þLJ-àf -Ö�­Î+@´Nu mÖ±íÒb g+HÖ cR­°`þBmêa -°B�2-vg��nüg -Žaè`ý¦J­¬gS­¬ < aÐp`ýÖBmê`þ4 mÖ±íÊfBmê`þ"+HÖR­¬ bR­¬@a¦<^`ý˜-Àf*-Àf&-Àf,-Àf(-Àf8mÁë`ýF`úb­À-„`ýŠ`úPJ-ºf­À`ªpS-º`ý8Jmúf­À`’2-ö5oSmöf;|öSmú`ýá˜g a `aBá˜føNua&íÀí¸2-ø€oSmøf;|øRmúNuJ-Àf mëÁ|ëNu/ -pïf-fNq`Nq|tïí¸`2J-¦c,AíÆ"mdaø‚#@pá@¼ |p1@aLaè"_`ùbJ-îgdJ-¦k^f(AíÔ¼ |€1|aø&À@ | `$ mdaø!@pÆ@AíÆ¼ |p1@FíBaàFí@ax`øô/ AíÆJ-¦f1|`&md|æa÷Ì'@aª1|æFí@¼ |qa2&_`ø¬/ a† mpAèCítpFíB2ØQÈÿüFí@aÆ"_`ø€J-äg aþ¤íÀ`ølQíä­Àí¸`øXPíã-ugaþvíÀí¸`FíB)€@Fí@`ø"Hç€@aüV;|ö;|øBmúBmêB-ÀBmìJ-¦c B­¦"mhS)'QíæQíàQíáQíèQíäB-º"m"|7LßNuHçÀð@çAíl"m"p( f@`À( g( g ( g` FíB@(&p@F×<7(g (gþFíB@(Fß((rðÂA»fpé@¼pÿ( gp@½LßNuHç?|FíB(@Fí@aýíÀAú¶"|,r$ p"N@`p N@Lß>ü`öÈ­Àg(FíB)€€@)Fí@|p¦í¸`ö”AíÆa `öŠaþf`ö‚Hç?üm8!mlB(|$-"9…*²¹…&b\") ²¹…&bHf"J¹…k 9….°¹…b8 )œ°¹…b$") #Á…&")œ#Á…Aù…0<NAfüÒAú"_NuaŽ`òEúr,²*gÕüµü…lfì`ü¤, *6h&vh J,fü’JvhgüŠKöX0+kB- g|á` f|á`JvhlBvh`ýºBvh`aßü!i&B(p ¬fà , f’*, aòaò.6Xg€KöX0B�-a J€k¢aTg®GúªB“B«'vx 'vxí¡'vXLX«'|¡7|Aù P0<NA6Xg2J-g,3ü jCí#É X#öXL dP¹ dAù P0<NA3ü jGí#Ë X#öXL d¹ dAù P0<NA¶hB¶XB6X+BvX @gJf 2-AfJ-ga Ô`Ja À`DBy ²#öx ª#öx ®2-Ag#í ¸y€ ²#öXL¡"Aù ª0<#NA6hgAù¡*0<NAgaý¦J¶Xg a†a ¤a¢aša’`F , f<*, a\JvXgav`&öX%¶X%öX%a\a€!vX&6¼€B«7|p-�X,aj`‚6hgxaT`Ê6hgf6hfa"`‚aJvXfa,`DCöX0 ia`Öaúª6hg”6hgŠ&la Tf af �`a°`òAú $KGúHµËfB¨B¨ 1|`!l!l Bhl!vX&!E!JpÁ¡Á âGú 6B“B«'|¡7|'l 'l'lX«Aù P0<NANua: |‚0<5NAgâ gÚaóa2-Aga Ufÿ*"<Â`ÿ"By ²#ì ª#ì ®2-Ag#í ¸y€ ²#ì¡"Aù ª0<#NANuAú Þ#È |#Æ À#Ç ÄöhöX Aù  r0<#NAg& g f |0<NA`¶atad`ah`ÿB€ y¡&(( f ((!D `*J¶Hg(&6Hg(`ð&„8¸¨lЄ-„8B¶HB¶H-…H-†H¬HB6H-‡H -¬H¬H¬H hº¨f ¸ˆgJ¨kJ�g P`èöH`F6H¶(b&&H"(�J�g A`ä"(gÁ!ANuJ¨l$¨"Á-�H6hf-„XNu-„XNu"J«lÁ'A-ˆHNupNuB�Aú <| `Aú 0B( ¶x!vx| 1|hB¨ mgrçA Aù „0<6NAf’Nu(6X"6H�-�Xgö.6H -‡XB¶H B¶H=¼ÿX¶HX+&vHë«-¶HXLGúnB« B«'M&¶x'vx'vH'|Aù P0<NAfaØg:B-#öX  ˜#Å¡ü¡Aù ˜0<#NAfÒ2-AgaþðNuAún!vX&!vx!vx !E!vHBhvHaöxprƒ`8afrÅ`2rÇ`0rƒ`*rë`$rá` rä`r†`6hfaH`aJ€f ¬a â=­ Xa øa ð`B�-a ¨J€k zg –6hg,g*6h$6Xg JvXo` ~a8aúa ¦`¼a*Á�hadfa Ž`¤6h��ha z` .6hgÁ�ha `0<NAa 6`Þ�f�hNua $*6h6haa 6Nua Œ6Xf6XgB¶Xb` vXbJCfJDgS¨fJCgjBƒ`DCÖvX"JDgjB„`DDØvX =ƒX"=„X J¶X f$"6Xf J6XPga` ¬gaÖNu6h$����g� vhB¨ZB¨^�hB¶hBvhB6hS6x NuaB�-a hJ€g:k66hfaZfa„`ša|`0*6h6haÌ"6XJCf�JDf�;A ,E;n„"+n†$�ÎvX$+vXAú ð!M!l1|(AÐ0<NAføˆa`*JmfšB�-aÄJ€o–6hf~6haDJCgˆaªfaÔ`êaÌ`€JŸaÂ2- Ag Ag& Ag ra`"B†algLaLaþ` B¹·–Aú >1| Gú ^!K!mBƒ"y·´"i$4-* g`"6X BfgJRy·˜`  g2-AfÎJ€gk6hfôB�2-A€g6ha¢JDkæJCkà"9·ž�€g ,g®&(Aía¬J€g"9·žHAAíaîf„B�-a´J€k†f¢J-f"9·ž�€gl-¶8h-¶8hR6x B�2-A€fÚÇFÉGaûøÇFÉG`ÊJ€k8fTJ-f,g",g &(AíaJ€g"9·žHAAíaJfàB�-aJ€gâkÞ6hfÒfÊfÂHçB�2-A€g6halJDk´JCk®Lß-¶h8-¶h8R6H B�2-A€faû,ÇFÉG6hg62-A€g$a¤*6h6haJCgRvX"JDgRvX a¤aœ`²Á�h2-AgaR` ÇFÉGaHÇFÉGfan`„2-A€f-¶h8-¶h8R6H aúœaH`üJŸ`ª ,múB�aœ gìrAúl4Bÿ‚gJBf¦J�g  PNÐJ˜S�k”`âB†aöa6g¢raV`d ,m ,gdB�a6 g†rAú&4Bÿ‚gJBf@J�g: PNÐJ˜S�k.`âB†a�a\gþ¹üga!¬(Nu") ,yP²–gMîv½ùTcð`¶a(üa#æa) $yX½Òfê EêVµù\cê`Œù AgFa&~$h µüf $h!J `@Jªg<&R·üg$K`ì&JÕü8µèeB(*AùzKù¤p `•ü&ŠB’Bª)g%i %i` %i %i %i$i)iAB*%| < h ¨ <f µÈgJ¨kJ�g P`äê#Ê <`b*¶(n&&H"(�J�g A`ä" (gÁ!A`2J¨j¨"Á%A#Ê <`" J«jÁ'A%H y B(*`þ>üÿÿ 6B¹ 8EùzGùØ0</6ÚS@fúCùØKù )f |-g )4)eøJfX -&f0@ÀgUÀ-g­a':™Ì�ÎCùØAù¿ú-2<fJXSAjö`$B€0€º @NÐAùÀ 0JPaý$°XgàJX`òB�AùØKù $(&(x"h$-a&ÎAù v!B !CB�Gú ²gJfø`4ÒÓïãåìíGîV!K gGé$`Gé!K!|AÐ0<NAºg&Á¨!|¨!IX¨!|AÐ0<NA f<,g4Aù Ö ‚!CBh,g !l,1|€#É êAÐ0<#NA`a#Äa#ª f Jªfª B(+`üza$¨B(+`üN¹ AJ¹ B…-% Bg Bg B` e dbfJAg²Ed`ÿ"-'f 0<@'` eÿ-&f 0<@&` bþöBƒ6-"fTƒB„-'Èü¸ƒeþ¾ã……B„-&Èü¸…eþ¾`J­$gþ a4fX#Ê 85m 0-÷@25m"4m&8m'9m%7%m$ -@g -&fa an<aFg`ýìÁ 6B€a(Òg* f -@g -&f aÜa4`Ø"a:Î `Äa:Æf¾-gB¹ 8a0#Ê 8`a$­`ü - ga fTafNa#Aí 0< X fS@fö`aðf0a¢e * g&`ýÀa(f#Ê 8a¦ - g a&âg`ý a¦2-Aa"øfêa^fäÁ 62)a„JjJBg JAg²nfüäaüf¼`ØaÈf²HBaÞfªHB gàaÜfü¾a.²-g¬BÀa”gaÚ`üœAù F ©!i-g+lt(!lt`!m(!ll 1|1| ,|�¬tR€!@AÐ0<NAg" fa2`Š g aø ab`ü–+y R0 9 ZS€Ð­(+@,)m(pat9mŒlÿøŒB�9 6ƒlŒJEjlÿÇŒ-g )j(8)j,4)i)i)i )iJk*.Mf"Aù ’0<JNA5h<ê JBg5h:aô,�g!|2a!œga¢`û¾üÿÿ 6B¹ 8aŽ"i #J3|_Jj©2,ŒA�©B()­`ù¦aìfha ¬a`dû`aðfV#Ê 85m 0ah<a@f<Á 6aúf0a,ÒB€a*ffa7¢faaX­`ùD"a7ˆ aè`úªata `>JkS�²€g4 fJkÚ Ff<`Î €ÿÿÿÿg �ÿÿÿÿg²€e `þ)A4¬Ž r�a jg ÂfÌ lfÂ`T)l\8"lt",4B€0*4g ’¬`ÂÀÓÁ`($,`²‚gB€0gR€ÓÀ³ìxb¢R‚`â0g˜B lg€ lg lgÒ lfÐJj4fdT‰ *@gZ,fR,fJBƒ*7–€Dƒ n@îMk±îDb"ÁS€fð`°ƒbîAgð±îDb ü SAfò`àtÁ"n@‘É  g,fB�*7ÓÁ��dB€¸€d tÁaÚ!@(g !I!l AÐ0<NAg gœaç` ì�`ü„ �¬t`î f2,ŒA fv¸€fh`H" n@a Ög gRaça òfhgR�,gR†¼�gb(a (fÎ �†R‰`àa f¾ì�¬�B`ÿp �� IJj4fT�ÑÁ`8 g( n@a ^fˆJfr g a zdð`a pbæ f ,|�¬xgBJj4fU€°„e6"lxR‰R¬4 fÐa �fÿ6³ì|dBi)Ixpa ¶a €`ÿ\aÜfd)l\8"ltS‰)Ix`´(pÿa ŒìŽ Jj4fT€a-¼f^`ÿ l|Rˆa ¦fþÐ&Ha(L lg$)l\8)A4¬Ž Êf(B€0*4gýz`ý| Âgÿ~ Êf g Ég`Ò)A4)l\8¬Ž I Jj4fT€a(dfÚa °fþV lfpaÜBJ�gþ‚Sf a&® f²`þtB€Sgpì�¬�a$Àf”`ýÖa f† f–R¬4B€0*4f 0gR€ÓÀ`ÿ|a -&f "e8S@fò`  f,S@fö0<a8`  gaeS@fòB"_Nu  fS@fö`îp`ì  g 0e 9c Ae ZbJ<þNu<NuHç@"|Ú ?? ÿÿf J_p LßøNu²gJJ™`æJ$/gJ_`Ê<>B * gz6jJgDC8jJgDD2�f¢JFg jÿÿTg¢JFjJjTf˜`ÜjTJGg jÿÿRg†JGj JjRfÿ|`ÞjRJCg nÿÿJgÿhJCj JnJfÿ\`ÖnJJDg nÿÿHgÿHJDj JnHfÿ<`ØnHJFg5FTJGg5GRJCg=CJJDg=DHB`ÿJFgjBjT` JjTgSjTJGgjBjR` JjRgSjRJCgjBnJ` JnJgSnJJDgjBnH` JnHgSnH` ÿÿÿÿÿÿÿÿÿÿÿÿÿ$yXJ’gEêVµù\cðp Nu$ŽBNu?0<+BZS@fú0Nu(y`J”gIì�¹ùdcðp Nu(ŠBNuHç€a¶0<HB\S@fúLßNuHç€$yX½Òf"Gí Iê ¹Kf0< ¹KfS@fø<þLßNuEêVµù\cÎ<`èHçà 9 6kÁaý®üÿÿ 6$y 8µüg aÿJB¹ 8LßNuH瀀Aùz$h $j(y`°¬ f,RLßNuIì�¹ùdcæaßêHç€À yè"yä/a" _S( ©©© y B()LßNuHç€À F"G`È l ¨(gAù î0<NAa߆NuHçÀ@B� * g2*2@ f;|""*$R�+A$`"+j6$;j4"`"V+i†$;i„"i$aŽCí!I"yüCé!I!|&LßNuHçp€gfVAù ¦J¨ gBhAÐ0<NAB¨ Aù ^R¹ jBA*8f BB*9RBÒBÂü!AAÐ0<NAg gaÞ–p LßNuf&)HtBB*9ÄüS‚ÑÂ)H|)HxÑüì�)H@BB*8ÄüS‚ÑÂ)HD)y jlAù ¦!y j 1|1| g1| AÐ0<NAg€ ga gÿp`ÿha`ÿ H瀀Aù ¦ ,lga1|B¬lAÐ0<NAB¨ LßNuH瀀Aù ¦ ,lgD°¨ g>BhJ¨ gAÐ0<NA!ll 1| ,�g1| 1| AÐ0<NAaÝ~LßNuH瀀Aù `Â:<ÿÿ * g*2 gEÿJENuHç€0,@` @ f(,Žf,�f,�f <LßNu<þ`ô @f ,ŽfìÒ‚`è @@fJ�gÔ �ÿÿÿÿgÌS�`Ò", lfÆ �ÿÿÿÿf¾,f¶"*,`°Hç`aL&lLB‚+’‚gÓª(Ó¬dÓ+ê a(ŠLßJ@NuѪ,Ѭh/ &lLÑk&_ê a(dNu",x’¬tR�‚üHA0BAHAJ@gR�NuB€#È ŠaÄB‚*7g!B!l AÐ0<NA hJ€Nu/ JgJj4fT‰³fSBføB€"_Nu/a€!D!l !I *@f 2¬U¨T¨AÐ0<NAfÓÄS‰ _NuHç €Jj4f2Ä*I¾„fa²fa'ž fR‰BB€Lß�NuÉG.Mg"n@aˆfè n@"Mpa"`Èpÿ)@8)@4D€)@aÕÚ´jRfHB´jTLßNuAÐ0<NAg g aÕ°JNu+nf / V+h _;j +j +j+j+j;jNu *@f" ©g Q@i | B€NupNu040584 4&I$ „ü´nepÏNu/ "n ÒÂa�"_fîBBHB êˆåˆ$nÕÀpÄ€”D,B€NuJ�fpÏNuHç>4* .$ff*n Úî“Éa Bƒ»î$cJ"Kaªe8ºƒc axf&aœe `ð"aÿ|f,ÆîMS…gaX`ð$†B€` ÏgJf aDg´ ÏfpÍLß,|Nu*@�® Àü"@aÿ8Bƒ"KaFeºƒcªafa:e`òJfÿxagà`ÿpR‹Jf$†Jšµî c / "Kaþü"_Nut,B€NuS`ø f J†g †ÿÿÿÿf6×ÂB‚`4Ö‚×ÂB‚Rƒ<þNu f JFgè FÿÿgÜ` f JgÖ ÿgÊgÒ<NuHç"0$V³ê†epÏ`&I×Á·ê†bòJ�gîaþxgLß DNu†îMS�gaÿNfè`ì$†B€`à/³î$ga4f B®$-|`Na f-I$B€ _Nu-@V-nZ-n^aüÖNu/B€.Mg .$fa `-|`NaÈf®MJ€ _NuHç@àpra`B®JfN ©EXORøfJ ©MACSüf@ g< € g4 yP°¨g($V°ªg Aèv±ùTcæAîp 0ÙS@fúB€LßNup`ö/îM n@"nDHA2<`-ANHîV"Haü _NuHç@ÀpraÌfBCî n@p 0ÙS@fú n@"nDBh>pÿ³H@³H@±Écð n@@>H@@?praˆLßNuHç<ÔHçCB�B†B‡ .f0B�S�2Oï pLß+%KF5BJa Ž`þ /³î0ga4f -|`NB®0a f-I0B€ _Nu-@V-n(Z-n,^aøXNu/B€.Mg .0faŽ`-|`NaÈf®MJ€ _Nu/³î f¸ jÿþ g&Cê p *gS@föBªFBjJBªLBjPp`Š4*P *L`ÿ"Kó JgªAêpa|f pAêKó anf’&HC Cm3 g Cgÿ|¸Efâ5BJ%IFGó pAê0ÛS@fú²Dg JAg|ÿÿ0"n40*PCñpGê 6ÙS@fúB€Lß+NuâHB[S@fú`ØHç@@",HfpÄ`"Aa LßNuHç|Ð$,Hfaê`F l@Cè )IP((p&a8f.aŽf(Jƒf %D$ê J„f %C ê ašB¬H¬�Lß >JNuHç`T$ g>raöf6Ké gJ‚j&lPÀâHg:ÛS@fúU‚g`S‚g#D raõÌLß*NugêBSBfú`âHç@@ graõ¬f"ƒ raõ ` %C ê JLßNuHçTA? ma`h&(B€AùófãI00€º"@¬Ž&l@*lD",H lLB€B…NÑ9®9 <=f=f=f)HL¬ŽgabfB€Lß*þNuJfaš`pÂB¬LJ€`æ$*,,<`X~h`$*(,<\T.<ÿÿd fpÿ¶€gÊR‚gÆS‚¶‚bÀJ�gZºˆg< ,\(J‡k ,`:(Ú€°ƒb¶…d,�fÿr`ÂB€afÿtB¬LB…Jƒg¶‚g`ab`aœgš`.¶‚gòaNf$+ AóP ",H¶´`e ¶´pcaž`aÞgä`ÿ( 4`aý B�B„HFHG(KðP¶€gDda°`ÿ(2(JGgЄ`Ð�°ƒb$Ù¬\Ó¬` M*lDW�±Íea~`ÌJ�f¶at`ô)HL gþ¤B… &lt(ÊüS…Ú‹)Ex" Hî#V-|`Naðng� �¬@"y`³Ìg$)�g"²”f")H²¬Hf ")L’©@²€gCé�³ùdcÌ`L/".Za–,�g A"it Ù±Åcú`$aî@!it!A ��R€!@AÐ0<NAaÅÔaz _`$,�f-lj-lnîP/aï( _fV0*4gÀè×ÀS‹)Kxaˆgý¨`:,�g|g"ER‰BQB�B€·ìxbÒ0ggR€RA×À `èW‹²hgºpÈ`þ¶J„fa`òJ*7fa `òJ�fJª gaVg‚`ý\ºˆgj"B€*7 ltJj4fTˆa2eJf4aLf.Aë CóP ³ìLgAéCñP³ìDeêa²`œaúg` A^ˆaîca0f `üÔJ¬\göB€ahfüÔB¬LAë aÆc† lPaºb†BE+ GóP aúš`,+Û¬\:+Û¬`BE^‹fa2`ˆ×ÅAíÿý·ÈdJ“gAë)KLanbÆ`& *$°¬Hga`ЗÅQ‹+›¬\:+›¬`BE K`ý„J¬Tg‚aì` J“gÿxašgÿJ`ü"p‚`ü/ aÔf~Hî(VB¬Haíìg:"y`¹Ég °”f²©HgCé�³ùdcä`a: K"i@ Ù±ÍcúaL`af.)AHB€+ Aó ±ìDea\`pÄJ�g쎬ŽB€"_NuHçTB€",Hg6"g2aÿdfF ,dR€)@T)@\",hR�)AX)A`a jS€S�Hìd`L`ûRHçTB€",Hgð"+gêaÿfû2 ,T&S€",X(S�HìdB€B�a "–€˜�HìTHì\`úìHçT * g¦",H²€g"pÿ)@d)@h`ÿ^B@+ Aó J¬\gÊB€aXf&aø²`¼HçTB€",Hg"l@J‘gX"*$gÿVaþ†fúœB€a&fôB�BC+ Aó0 a ’Lê(HìdRƒ*–€R„,˜�B€%š€0%œ€J¥ MHìxT`ú@",Lg²a �gú6`¨HçpÐB€¬�g|Lì @ fpÄ`nHîVB‚&HB�+ Có J‘f B¬HB¬L`.CéCñ³ìDU‰dJ‘fê“Ë*8Äü €ÂH@J@gRBa &f¬�g Jg&pÿaøÈLß Nu *FfaPNuHçÀ"@aòdf$0*J"n(ÓÀAêp2ØS@fúîMª B€LßNu¬�fB€NuS€a¶faNuHçXÐLìt R€�ˆ@ÿg2<’@R‰âIBYSAfúS‰&lL HîV*2 g\B„*72*4 Bƒ6f6fa ¤`:g RCfa ”`*Gð8& JAfTƒ¶¬xbaØbfaòg<ÿÌ` K`´Lß Nua fô¬�B€`êHçÔLìtR‰&lL fa 8`f*2B†B…B„Bƒ*7:*4f$6g*HgRƒÑÃR„±Ébfè`±ÉgJXf`ö( ˜ˆˆÅv*I›ÅHDJDfŽHDaãœB@*9²@ca Ð`p,�grJg. fHç„ MKëB„& aLß!eg Jfaf6B€0+‘¬h‘ª,7DÙ¬hÙª,aââgJCgê a „lÿŸŽB€Lß+þNupË`ö,�gæ²+fP¸kfJ& 8gÔAëaŠgÊd8"l@B€Aé Cñ ·Ég) ICñ³ìDeìa `¦aXbšazg”`NqpÈ`”/B�* gaýŠ"B€aýÄg"aüêg"að–g"að g"aëšf LßNu/B�`ÜB@/ *CJg°eg»fS@føB*_Nup¸`öHç|Ô"lL fa r`B…*7gÀGéB€fa X`ºga X`4 l@B‚v Öˆ( Að ±ìDea :`³Èg&^ƒ(Að fâa "`p C& (aÿdbeha‚gJ¬\f\AóP$,DW‚±ÂdRJ�gN^ˆB‚aÿ:e b>aXgJg6BaNfHç°fSEföLß( gÝSEfúa ÐJ‚gì�B€Lß+>NupÌ`ö l@t g¾raëfäAé `ž*2 NuHç>€J*7fa h`^ r‚aõNfT,,`B„*7"ltB…:*4"J‚fa >`4³ìxd>JEf2fa *` gR� K0& aþrgepÉ"JEfJaLß|NuÓÁR†`ÀpÊ`èz`âHç?B§B§B§,gR€(fa Ø`B" ‚ga È`2&lx.,|B�³Ëcr&a^fv)Mxaà»ì|ga¼ÒB­a¬B€$& IB„"_* ga�("_* gaxg("_* gajg(""H f Lß(üNu @ÑË*H±ÇbR‹Rˆ³Ëg1#`øB€Nu lt �ˆR€�„$”ˆ& –‰Rƒ*,Lfa `„°‚d¶€b¬ aîfì¶‚d~" Jƒg*KJgB€�Ò€‡a”gaâ`Æ lta fÿB"HÑÄKð8ÿ&AâKg±Ëgb0ÛSCfú`" ãK×ÃÑÃ1#²‹fú&EB@+Gó·ìDea”` r azgþÚ`þòaTfø FKðHÿ&Er a`fèaýêfrB€`Ø a fÔa,fÐ)Ix&EB� a:fÂaf¾œ‰Ø†KðHÿ"H`’)IxS¬xp`)FtB€ì�a4aú)HtJNuHçÿÄ. B€B‚"lL³Àfaü`J‘faò`Ø"l@&()) Cñ *,DKéCñ,S†³Ëb$ ³ÆdJ‘fä*7Kñ»ÆbÖgB•P€B†·Éf Cë)IP` !·ÉfúѬP·ìLgB€"lL)Ѭ\0)Ѭ`B„*7)KL"WJ™"f J™"faV`Nu&lD&,@"lL¬�$B�)“¬d“ª(W‹B€)Kñ»ËdJ•g X‹2Ý»Ëfú`ì�B‘B¬L"Bal/ CB€( Að aÀ fJ�faîV`ˆaüføa^B€`ðJ*7g.B…:*4fB€0fa$`Ö*HgR€ÑÀ±Áfæ`*A›Åaøˆgÿ&SCT€fÒ &SCT€€ÿ€Ø &BCT&EETBP&EETP.STT&EET€ØVERSAdos VERSION 4.3 8403201138 BBAA >€SYS:0.& CN00LOG OFæ*vLOGOFæ*vOFF*vBYE*zLOAD*ÞSTARô*æSTOP,äCONTéîõå*øTERMéîáôå,T^#ÄDATE.âTIME/~USE-*DEFáõìôó-èARGõíåîôó0^NOARGõíåîôó0€BSTOð.RBTERí.`OPTéïîó.nNEWS1„HELP1œASSIçî2ÔCLOSå2�CHAIî9²END:JRETRù<’PROCååä<–R?@ôBATCèA CANCåìD QUERùC€ELIMéîáôåDˆPASS÷ïòä4VSWORD4ÒSECURE7 `0ä` h`#6  Gù Oëf'O^Oë`Iúýì/< OÜ :fø&LùPLùð`@ÙH@@£B€9PãˆÀü#À>'AÚ'BÞ'Cz'D'E7FøAùaÚAùaÐAù0aÆAùJNBgpNA`ðAùB˜±ùköaÌ9 g"0|èaúAëB'H:Aù 'PDAë0p#NAa¦Lë0œº„c8µÉg4<ja4'J¨`ð fa&`æ4¼@LëŒ$*a@g4¼€`ÎR„'Dœa  `´PеùkEùNuLØÿ$+vAë.HàNAfNu `öAë*Hà~NANu <ÿÿB�$+v&<€a&`ª |p!`Ø |`ô&SCTêÀ&SCTP&EET&SCT .SCT&SCT .ARG&SCTÚaä (g (g`òLè“ÉAù'C–±üg."g¶�gPH`ì³üf"H`ð'Ah'hXp#AëTNA`ª³ügôf𠫬f J«âfa`ôaÜ'@d'@êAël!@aþšAúþîaþ|Aúþþaþt'HªAúÿaþh'H¦ +âg'@zAúÿLØÿAë`& kªÑü`,*+vaþ@Aúþ†aþ0p Aë`NAfþJ#kv"«–`ÐBƒ( g fê6( ¨&BCTgüL ¨&SCTfÐ((Aù¸¨g PH±ükð`´B˜B�J«âfªB«¬`¤/ +¬R@fT@'@¬Aëva5 +vAù°¨gÚPˆ±ùkð _Nu |èpNANua< (g>a Æ`¦a*B+ØÇf/+æ <a '_æ/Gp% |NAp"Aë:NANug.7hÌg/,kª.ÿgÇ,_2(‚kÎ7AÎjÇ"+’�²¨f$+ž´¨fB«’B«¢ (gŒ (g < AèJ(f <a ä`ÿh ¨&SCT fÿ\J+ØgÿTS+Ø`ÿLaÿVÇ'h Æ`ÿ:aÿDÇ/h /hfÿ"Ç`ÿ-Mª&NOë`B-;| PaüŒCùRa Æa Èa ÄyiŠMùa ZB,kª=|@þMù$8J«âfšMù$Ç9 g„aÈAúÖ/ a,Z&_,KCú L™?< ga ’gaþHSW`ðCúöL™a |`*Aë* ¼!|Cúè!I Cú!INBT�`ÆT�‡AëTIúøJÔ  føAëT`a–f�aZgŒ/,kª®þ,_ +~'@šJ«âgnyiŠaù–g$‡aÜga<`ò‡föadf‡ga&`ðLùžÖ‹'| *af*Mù#ða ´`jMù#óa ¨Nu ægºaêS+Šfþ¨,KGùŠva ¤ <a n` òREJECT NW <` VÚ&EET ÚB‡ kªÑüP'H®LërHëjB«’Lù4ajpJAëÚNAB«¢ <aÜ,Kf GùHva 9rg( «0001vf/+šB«~B«šMùæa€'W~'_šfˆaÂAú­/ a*T&_CùpL™a ’CúîL™a †fCúøL™a xCúÔa 6Múpa(`Ñü, €d. |`$ ytR+Ùf÷> <ÿÿ&<€a Âp0|€NAAë!kâ <`JLëæ'A’'BžB†+'FŠgNug$Aë’ < ‚0000d <a~ë’NuAë!B 0¼�!A'A’,+ŽgVgX(+²B… †J†g`R… gúE f fB(E1|€J(g f1|NCgÂa0&HC` 0|5`|6Aë <` pJAë¢NAgkpÎAë`HÐp a®f*,+Ž(+²ÄÌ„'FŽfp$NAJ«’ggðJ€NuAë& <` <>`Ø CHAIN ABORTED(CHAIN)=  =ENTER DEFAULT SYSTEM VOLUME:USER NO.=ENTER USER NO.=LëÂAë*Hà~NAf8NuIùNðg$Lù8%haÌ"<$<‡g.A `(*kª-ÿgSŽ<€KëTaÖLù~%`aŽ* ang ‚fЫg&a^f†/,(AëTCð`ü ü AëöR†!QÎÿüKëTB� ae {d/,kª.þf ,_ =f /fÇ \g>±ÍcÁ  fº�'M¾, AëTœˆ'F¶ JNuTTõ ,H (g<4fZ‡ kªEèP Ngú  g¦ =g ²gêJfü`â =gF`ò (Rf„ (Xfz ()frXˆÇ0+Êgf` Ça(nJ@g"$kª°nP2Eò  PÇJgþø±Íc0Ú`î/ $kª*$_€ü a H@aÇ`þÒ±Íc0ÀNu   <`H Nf SˆÇ`þÞü~‡ \gÿ =gþŒ !gþ¼ &gþ´4kþ¬`Ôff æg fa`JJNu/,kª.þg,_`,,_f$f fgHçþüU�aŽLß?ÇNufrÇ`jKëæB…atAëæ("<$<* +‘fB‚Aë*Hà~NBg8 áfJ«¢k’ ÆfJ«¢k„ÇgÇ` ÂfÇJNuKëTB…aAëT(`’ M/ÞfünS� Nu  oášNuB‚aðaîaì`êáš  oNu$< aìaêaè`æ'k–L™a.fÿ&(+ŽÄ'DŽJNuL™afÿ(+²„'D²(+Ž„`ÜAëH pBhNCNu +vLëh�B„ kª(þgÄ69jg69n` g69l*+šAëHàü7|`~pAëæBhJNDNuHëæpAëæ!|+‘fB¨NDLëæJ€NuaH@a < aNuáXÀáXÀÅNu  fSˆB†`4k`ê  gö,+¾œˆ'F¶'HºNuRˆ  gøNu$/".âAî,H<ü@<Â<Ã,ÁB^$< ,üPRIV,Â,Û,Û<ÛB^Bž&_NCNuB.Ù?2<a¼g f€X+Ùgx |ôpNAAëNC`Þ|ÿìÙ"<$<Lú8üaÚAë*Hà~NBf>*(AëSÚˆ"<$<Aë*Hà~NBfR+Ùk¶fªMù)Äaú´gžÇ7|Bk7_NCNuJffÀJ€Nug g'k–NuLДªj‚&\S�’’NuÔ© ‚&\e‚&\R�Ò‘"Á"‚Nuڋ؋֋Nu"+va f&0¼À`Aù±ùj ²¨gPˆ`îJ�NuÇÇ&<€aÈ+‘g vB‚2<aýFJ«¢f,KGù*Ôvaêìgf Mù#ðaü< <aópNAACCOUNT OWÇ`önalJ�fø <`üaZÁ²«’f <`û†�Bƒp aþ PgNu < J+f < aJ�gÖgø€Ç`ø~'HAë`ýaüZ" � g( �ALL g.áš .g( @c Zc <X�`ûp"+’f <`ìB�aýBg &g.$<0000aûî ‚0000f $+žf$+v´«vgJ«šgX�`ðÂ/a""$gØ`à/J�gAë�HÐpagP�Nu  f _Nu <=aúæ`äAëHÐNAg$Aë fúf ‚0000d€ J+ÙgúP`R+ÙJ€NuB�B‚`>aþþf|� <ÿÿ&<€J�f,J‚g ´«vg"<&SCTpa”f <aþ¼B�`B«’B«žaêè0<aÿrf.J‚g´«vg <J+f <aþ‚`R+ØaêªJ�gÄaê¢NuB�$+v`aþnpaÿ*gNu < J+f < aþBJ�gÜNuKëzMë-]J]=] -] -UNuaâ/ az&_/,kª-@òj ,_ <4`Œ,_fî€pf <5aùŽ`HJ«âf €`kdKëz*îJ]:î *î *îL¹-äaúbf6J«âf4<aúRf&'kzâ/,kª.þf",_a&/,kª .ò,_Nu <6aù0<ÿÿNu,_`Þ€a:"+âLë|vAëTHÐ~Lë’�Hè <aúTNua <`úF*kª2-þKë|'Mòpg€@R€ cîüÿ'MöNu/,kªîþ`h/,kª®þ`Z$H  c¢ ;fJaüJk8fNf, d&Jg"/,kªf2.þÁ`2.þ�=Aþ,_`À <7`÷Ì.þg,_Nu,_`ÿ@/,kª`æagNu‡føfòMù/faõ`‡gÇNuaL € nÒáˆ& /fÈa6 €n¼ /f¶a" €Pm¨€lHCЃH@a¢/AëpJNA'_`rpJ`p ENTER DATE (MM/DD/YR)=atfZ‡fTfNMù/ÞaôȇgÇNua´ €nÒÀü<& :fÆaœ €g6À`âJføB$ // ,kªCîO”‰"_,_µë®eÚÇ`JgÀR`°SfÆ`ªB|  /,kªRŽ�ŽSŽ@,_JfNu <`÷8,_x$kª¸n6KëTü\ apáXÀáXÀü:B@2@MòP/Baöaö(R„`Ƈg¬ <`õp,KGù1’v`÷ŽNEWS NWMù2Naõ\,KGùKîTJgD›fø| ÿÿ Z€€&@ / IîT�Œ(_"‚ü HAJAgü R`ì/ Iî„»ÌkP(_S�/ &Naõr,K&_Jf¢&NMù2hBaôèAë < ÀBX À À üHELP À0¼LOaõÎf"+æ`ðtNu(_`ÿfSESSION CONTROL COMMANDS:(ENTRY OF LOWER CASE LETTERS OPTIONAL)algJ bD g fgÇgÇ`ô2<BBaõ‡fˆNua(g c <9`óª  f <:`î/,kª-Cò,_aú/ až&_j <4`Ìgg0f'k–`" <)`ª/,kªîò,_gÂg¼ ;g\B‚aôDaô@aô <;`ÿ0$H/ a¾&_kê OfägÞ4 kª&(òƒ`& g fÂ4g kª(òg‚@2<@aó¼fg ,+²Æ'F²NuEREWERPWPREWPRPWEWPWERPR �-:]_f +–°¨J—NuJ«šf <aôyiŠaèfDJgaÂLù872Ö‹a gaç¾`&Hç|Lù?5èaõžHë?Lß>AëNBgaò8Aë0¼Bh1|NCNuJ«šfç¼yiŠLù87>Ö‹a¾gaç\Nu KGèÚ/&Ú/&ÒLùžÖˆ!|*/ &Haï0,_--fÆNu KGè"K×ü(Eù5Ð'"·Éfú#hâ&HAëNCNuaÔg f8 |épNAaâ`ê'kšæLù5ÐaôÂAë.HàþNBg Éf <1añ\`ÿCëêNu@ PRIV ACCOUNT PWÿ‰æõ‰æõ  +ÙEJ€fè «0001vfä gŠEÙfHaÿ*fæ8aþ‚JgjLù87&Ö‹a`f AëTaýîgRCëêMëæÝü³Îg@³gøaŽ`ÌJ«Úg(Lù87Ö‹a&fAëTaý´gCëÚ±‰gab`Ö±‰fø+Ùf‚NuLù6îAë&Hà|NBLù6ö(|*Ú†Aë&Hà|NBf$C*(B2PR…¼…döB€Nu0 Æf Hç~aåFLß~S+ŠgåXNuT7J7\T7v7Œê7Ž7Ÿê7^7tENTER SECURITY WORDENTER NEW SECURITY WORDENTER EXISTING PASSWORDENTER NEW PASSWORDJ«šfäîMù8ZaïPLù8˜Ü‹aMù8„aMù8ŒaLù8´Ö‹'|*`ìl+Ùé@ÙBaìlg+Ù0@TKëVaîÒ+T 4dÞ 0eØ 2d+Ùü€@ÙaîŽNuaüð/aüx gÚ gÔJŸaî¤`ÿHLEVELS ARE: 0/NONE,1/SWORD,2/PWORD,3/BOTHUSER=0:USER NOT 0:&EET ÙÙÙ&EET Ù,K2<aðfT'kšTLù92Ö‹Ø‹Aë.HàþNBf6AëtpJNAEëÚañCë|añCëTR©0Lù9JÖ‹Ø‹Aë.HàþNBNu‰T“‰T“faèÇaŠgNu¸9pbtva–g fí Å`Ì Å'EÔ,k®+ÐBfBf'N®aaóZ=|CF/ a ê&_ @ügìaðj <aì¸`lHçÿÿCùpaíòLßÿÿÇHç@€CùXaíÄëµLßJfH«‘/,kª®ÿ,_Ç  gažaö`f BkÊBkÌBkÎNuÇCùpaí†,k®"kªÓüP½ÉgDXŽ'N®<ažëµë‘gaì`¶*+Ô…'EÔf¦´+ÐgžfZfïÂCùXaí뵇ë‘/,kªîÿ,_BkЇ‡gÿ\‡MùA`ì,+Ž*+Ôx f fNuR„  eîDDNu"HAë1| f1|€0¼CDB(B¨B¨ NC INu,k®]ŽB€/,kª.ÐŽ,_½ÀeNuÇX� <`ëvfaÌaÿtgNu¸9pb^va‚g fêð Å'EÔ`Ò Å'EÔ,k®gÄ+Ðaa2=f7CÊa"='N®¶nd¢ÇÇNuÇ <`êòf^fÿ~,k®+а.fè6¶ncFRn.f7nÊÇCùpaë–.<AëaþÔ ëµ ë‘Nu‡‡,k®ZŽ'N®2<*+Ô…'EÔaëRNuÇÇ«‘/,kª®ÿ,_gNu <@aê4`ýˆf <2`éÀJB‚aê´ *gl @güz &gzaêœ BENgd BIFgP BELg(gNu BRXgx BRAgx BRDgx BR?gÂaêX ‚ABTg" ‚FORgþ6`æšg6NuÇ*k¾`é2Ç`é^gNuaéRfôMù$aç `âf`é&a><!<&B†< Ba°e f†`ôa`ò†NutB�¼dºg¸g ~gìr`èÄNuaögJŸNuaða¦g+ÐëÑÇNu+ЫчNu < `ÿHaé| QfÌa¸a"Ha  f "gÈNÕ³gîNÕ  g¦ "fòNuaŒaÿBf¨NÕ +Ðg¬R+ÐKúÿŠaé* Cgÿx SgÔ Eg–aÿZ Rfb,KaZ (gŠ =gt >gJ g* (=gaîJ€f ¶Rnÿ4NÕ`ÿ.aØJ€f ¶RlðNÕaÊJ€fþt¶RfàNÕ (=ga´J€fæ¶RmÊNÕa¤J€fضRo¼NÕa˜J€fʶRg®NÕaTkÄfgžNÕf˜NÕaèf ‚SEfä¨+ÐkÑ+Ð+ÑgÇNu‡Nuaè: ‚DIFg ‚DFORgü�`äp+ЫÑS+Ðk`À <!`ýÆ,KGîÊ`,KGîÌ`,KGîÎ$Ka" (fa¼k6gÄ`„6„&NNu =f aÔk>J€fê6ƒ&NNuRˆ Xg Ag DgJŸ`òEîÊ` EîÌ`EîÎaºNu RfÔaÆ +g@ -g* &g !g`¶ajJ€f„0€C`a\J€fv0ÀC` aPJ€fj0�C6€&NNua@J€fZ0ÐC`îa ‚ )f$aP =f Cja@8 0fNu 1fJNu6<ÿÿNuRˆa LJ�k B€ ƒjJ�Nu <3Nu&N`üŒRˆBA  g  gî4NuJŸ <"`üh&N`ò <#AëÊ`çhEND CHAINg <$`åxB«ÆLùEa>a('yE>(7kœ,LùE$:9naâúfæLù¨aâêfÆLùÀaâÚf¶Kè`'MüLùÜaâÂfžÑü'HøLùŒaâ¨f„ kºaëb=|CF/ aò&_"Haè(kdL¹XaôfTaæ fH8<aøf< I(ÿÿ  b&$aøLùEap*<F&'kÆ*a@‡ A€gAë <*`åL <-aãl <ÿÿ&<€aá <.AëÂ`ã® kª<(üHE8:< aàö‡faÖR`ôNu/Aë$.HG6.HD8HD.Nua6fLùEaÖ*<F¼a¬‡faŽfÜNufø <'`ä²  g$<0000aãÖ ‚0000f$+Æg" ‚0ALLfB‚'B*B†<+œ/,kª-Fú,_Nu —C‚gàJŸ <&`âˆaªLùEaÿP*<FÄaÿ$‡fØafàNu kª!Aò <,f <+f <* f <,HëTAëTaãú/,kª,.ò,_B‚ÇBFJ†NuJ«šfØaè|/ a&_kgB†'F*<+ kª!Fú`ÿV <(`áÐv,+Žg RC Cfô6<ÿNuLëÂAë0ÄHÐ"<taãg /rB‚aâö Nu#&EET€$F &BCT€&EET@€E^p AùEàNA&Hp AùEðNA'HªOë`aÑüLërLëÂHër'Bd'BêB«ÆBkÊBkÌBkÎ.<¡,kª=kÒþ®ÿ'|`ŽaçDL¹-äaâ"fÓð`ÖÞ&BCT .SCT&BCT .ARG  aÓüaÓx,Lù?Gz/aýR _$(aÑ4`ÒþaÓÖLè "k¤,o"<€` �ÿÿÁ"Á"³ùkCù'I¤,'B*Lù?G’/aüö _`¢B�$(/ a†f&_`Ò˜gp/ &o‘«œ&_Áfà‚C6�`ÚaÓPLè J‚g|`L/ aì&_`œ/ aäg4JAk0&<€/" &o/B�paÐpgø"<&BCTpaÐb&_"A€6�&_Aë:`ÿZGù·ùj´«gP‹`îJAg ²kgB�B‚NuB�2Nu0( çˆGùGó·ùjÜJAg ²kgP‹`êJ«gö €æˆR€H@0"$+Nu#&SCT€$¦#&SCT€$¸ Hç8 .gJ4k`ÊÀ6<ÿþ` ƒ€g ƒ'cÀ` =C ` À`À4<aX6< Gî at4<aD n& f| 6< GîaR4<a" (g6<Gîa84<a (fœBBBC4kJ )gg> Pn8AéK†AB`Ø4Bÿg BnÀ BcÀ=C `HÀÀÀBÿ BcÀ`,Rˆ6<Gîa¬4<a|$< Gî &Â&Â&Â&Â6ÂBn $B|gÀ$fÀ fÀ fÀ fÀ fÀ4B|gÀg :f€J€Lß<NuJ€jÀX�`’QBgQBÀ`ÀBgÀNu4HB€€»Èg64k.f(f @À`< *fÀÁSCn΀€`$HB´CfÀ`< (*ÿþf<*`ÂSCnúNuHçB€B�Iúj ,gø4k6 -fÀ`æg0ƒgÁ` =fRŠa`  f@` Lß NuBƒ:< &J $gN4gˆ`&4k&gã‹/å‹ÖŸ�Ö�SEnÞ‚4jø  f"+ÿþNu:<4käfgÌ_�郆�SEnÜ`º€üê`"B€0€ü|?B®@.ÊfV .Ö @g @g-|@ad`=|,latJn<?B†B‡|?aûØ> .?g nBfPR®àSGfÖ`F-nà¬-nä°Aî¬0< NAf.=|<0<NAAî40<6NAg Aø„0<5NA |0<%NAAî¾0< NA~#üÿÿÿÿRtaZAîÌCîšajAîÚCî¬a` .ÖIî±aAî–-H†Aî¶-HŠAîzNBJ‡gAúøè-H†Aúù-HŠAîzNBAúøšNC`ÿnCúø¸-nÐT-YPkAîHNCfòNu2< c {c< ÀSAfèNué˜0 :m^�ÁSBfæNuZ"ZDSRV4: UNABLE TO LOAD TASKDUMP.SY $ $ FROM ** EMH ERROR # $ USR SVC IOS FHS LDR ^F^`^V^’^Ì_’^>_>^L^‚^t^d^2ABCIKLTWXYZD˜–€B@† 'èd €Zâ[Y@ ERRORMSGSYADIÿB¹\.:üD-|j|NC|NC .à nä`ö#üZj\2` 5PazYƒ`ÿJ05Pad`ð5PaR`æKîäü$ 5Pa"T…`ü$ 5Pa`ÄB@ü$5Paú`´¹\6g¼0|4B…Kúýš(aR õ@aˆR„S…nòal]ƒ`þÊAúýhKîf2ÐAîø!nì .ð�®ìR€ €`b:!@!MpNAf0Aîø hÑÍ ` »ÈdJjöS…fòÝk »Èdþa`ðSŒ`ÿ 0.à@ ÐEH@05P( GîßAúü˜/(!KGî¸a!_J€f"(ÛaÊS�fö (a¬&D`þ¼&D`þäU‹pB… 9c é�ŠQÈÿê]ƒoHù\<Ö‹Rƒþ&C`Gúû aªf�&( \f Sƒg KghSƒfê&h &(ü ü  …g … fý .à€€füþAî˜0¼1|nÍ|NCfAîp0¼€|NC#è\Dù\6Aî˜1|NCfÌ`üªAúûr!K &€NBNuà˜4<`4<é˜0 :m^€ÀSBfèNuAúû.H€`AúûHÀ`Aúû J€jü-D€r `Â4��eRBÁ`ôИJ�jBJ�f J�kBÂNuJ�kÒB`ÐtB… 9n 0lR‹J…fgËü €Ú€SBfÚNuR9[fR9[fR9[fR9[fR9[fR9[fR9[fR9[fR9[fR9[fR9[fR9[fR9[f#À\2Iúùèaÿ :ú¦H@IúùÞaþúazaV:ùÈIúùÄaÿCúøÀAúù¬raøAúøN|0¼!|ZF S‰!INBB9[f`ü#üÿÿÿÿRta÷Èfˆ`ú¾.à€xâ cB€Cúùn#ñZdNu .àIúø !ú„ 6Cø x2¼B©\‰³ü –mîaJ :lf <S€!Àv!üÿÿÿÿz‘¸zB¸r$9Þg |pN@`aˆ!Èra¬ ¼!ASNB¸ $:ðg< BpN@`ad!È aˆ ¼!GST1|1B ኂ„ü1B Eè!JB¸ $$:®g< BpN@`a!È $aB ¼!UST1|1B ኂ„ü1B Eè!J |pN@`aÞ(x f!È ftaütÿ  Â0ÂEø(tÿ¹Úg‚AèµüfîB¸ j$:Dg$ BpN@`aš!È ja¾ ¼!IOVáŠÔˆS‚!B!ü ,$:gD BpN@`ah!È ,aŒ ¼!PATáJ!BEð CèIè(‰#|ÿÿÿÿ(ICéµÉgnêB”B¸ ($:®g& BpN@`a!È (a> ¼!UDRáŠ]‚„ü 1BB¸ 0$:†g2 BpN@`aê!È 0aEè ŠáŠQ‚„üÄüÔŠ!B1úX 4!ü –aºJ¸ fœB¸ Gú”Cë <€pN@`ad4+;B,g +x  !Í EëpB�JjgR�EêQÈÿòGë(m6AIì p(ÛQÈÿü “!TCBg†aœ.x 2<ÀaD/:~NuHVMù,¯@îFü'MîHÖ?ÿ-_8-O<2<¢a`ø,áŽ,FÝÈB†-½ÈnúNu0<`0<�F虀2<é™"x :Cé2�A02�2€@02€Nua&a°‹fa†a|°�faÿ|Cí!É aÂazNuB€Aú°Pgaÿ^B‡EЇ Eê Rÿÿfð‡#à�*(B(:šº„c*„ÿBKúûû" B*AMú ,Bœ�°ºjf†` (<�B*DB†º„baþöNu hÿÿ g,a2 ÿfaN`aðJga$`a@°‹ga¾a`Ì3|ÿÿ Nu~Aè Cé ((„ÿB*(B*DB†º„baþ�Nu•ÊB�B‚BƒIÕKõhHz ?÷ü6÷J9÷üN÷ü>÷ü6÷ü¿÷0OïNuNuuu} ÷ ð¼ÿÿVM02 VERSADOSSY—mVERSqVER0mÿÿÿÿzÿÿ  qNùBo=|NuN¹L!VCTÖÖØÚÜ ì ä xÖ ˆ!"x0�ÈŽL��‘’“L”R:•/ @ç|Jèf B�"x "ˆ!È Fß"_NuJøf@HçÿþAø@ç| g$"@ ‘f!È |øÿ$iQéN’Aø| fÜQøFßLßÿNuPøN�QøJ¸f¨NurÒx VÒ¸ B"x ,Gé$S g Jªf&’`ŒNu²ªmøa –²ªmî&’*j--fjª$* Ôª>*g>*g RjÇaÞ* f@* g­,fí-`­ ,g` B­X­,AÕa Vfÿfa|`ÿ`HçAP$8 >&68 @HC(HD4<  g 4<8***HB* g2Hçz,* m6a``NqLß8`Lßp&*HC6‚€4*AÕaNqLß ‚R�`ÿ|@ç|$©%|ÿÿÿÿ#JFßNuIé L g(@´¬lò%B$€ ŠNu"x ,Aé ?Fü'"HJ‘fNs Q²¨mð°hlê/(?(Bh (RhШ ²€lô!@B€0("((f"�"x , ©#H!|ÿÿÿÿFßNu9 4ga€î`*_aœ _N`Lßÿ\�?_f,J¹gaýžfJ9 [g|øÿa¢AÖa Ö`tNs@ç9 4ga&î HçÿþNi/ /9 b oF,hHV/(@À@ÿ?"h 0P*n6`2 f€\�,_( „!TCBgaÄJ@gÿZ @f AÖa7@`ÿJ @fÿBJ�f&HC4<HBAÖa  Nq`ÿ(HBHA(&64< ‚HB4`àâˆ&T�(,_" �!TCBga`Cð=C^AÖa6àJ®@gþæ$< ÿÿHCHD6`¤.x Fü aüæMø "NJ© gì|,i 0.,@ÿfæ#n ®-!Î Kî.r?%2 °føB8 [|øÿ1ø T R®-fd.-fh®-fhJ¸ g*n6aú n®ú`þðJngAÖavHzþˆ`>®úHzþÖ`AÖa`Hzþr`JnfB®@ÁAû-oü|úrNuHV,x Hî?ÿ-_8Ni-I<"x =iÿúúNuEø ¦Çìs,)gÇ`"ÂüEø ¦(NGs*r»Îg°$<‡42&26,(gÃáK,$( *,,,p<,.,>, ,"0<2 gB@2g<,*.,(>,°H@0,²H@"@J²f -@g4&@4+HC6+HCAòa@J²gHç@(AÕa „`0Lß raÈ,sf-|çOGB.ûAúþ¶.ˆNuLß,sò Rrì ,NuÇ1G*Bh\è)!|EXEC°!| ´<(,Æ1F.½Èg$F-ÿ† g†1F,|ð& fa¬Nu1F,X� <1Wú!oü`äa aaaaaaaaaa a aaaaNq?/_g/ gºa aþ8 4g @ça ¤ªT�Kú`ªvLaaaaaaa a aNqNqa Nq`"`6`>?/_gL/ fX�—Ns?/_g0/ gNa"/ fÈ?/ _g/ g&aaýr8 4g @ça ªT�Kú` ¸H.ž•â� n2-4.(g^2-,6"’må‰Ü�z n6a²`Nq`<"FJ‘g6*8 š�,.<œ… n6a’`Nq`(F-C<&8 8ß¿Ãfú/?,ÿú<<`B† m n-_¸-_¼.)g".Hg a@ nü|Jfüv n,Cø – 1pfHzüf`üÄ=@=|ç�GB.û`üDJFfü>AÖaý¤ Hzþ�Ÿ`új P�` €¸`úX~$.HffdfLLîÿ`®z,.P n6a ¬`Nq`&~ F&(.T·„f È®Lg-CT`"R‡È®Lggû¶RnX .X°nXbû¦~Hzû `X oBEgaFßüNu.�/,x ½üg*/ f".)g.H8gîH,_"—Ns,_"/8 6Nuaè$< 4.&.(.8áL<Aî@aª`®)Lîÿt®-@&Nuî ,`ùv@çHçp "x ,Gé Fü'$K&g&&C´«fò$“JAj.&©#K'|ÿÿÿÿLßT�NuJAkô&)fT¯`è&C#SFïB«'@ '@'H'BB«BkgëáIAA 7Aa–Ó«Fü'&© #K LßT�NuHøÿÿ@ø!×Ni!ÉH!øL"x :3|•3|µ3| 3|°|`Þ@ç|8 4ga ÈÝFßNu|8 4ga °ÝNsNu|ð%a|`øLHøÿÿ1×!ï|LøÿÿNs@ç|JÐkü0ãHâ@S@0€kFßNua>T.ra�Fß.x AÖaî`÷úî ,B® (f!NNu*@ - fø+N Nu.&|ð&î-HîÿtHç 8 Kï�� €Poaþà. ‡ÿIöpGr8ÝU@núLß0€Nu@ç|JÐkü0ãHâ@R@o0€FßNu/ "h!i €0€B© © ,"_FßNu/ x NB�B8 Z 0àIDAÒx XäIÒ¸ BJ8 Zfà _NupðÀ($@&`h$&@çè-f,Hç@ Eø |(&"* g ʰ*&còÊ!A %H LßFßNuJ¸ tf|Hçÿþ!Ï tFï<.x t|9÷0 À÷0.x tLßÿÿB¸ tNsRx \ xd \k$/ "x :3|3|53|.3|>"_Bx \Nsp þÀˆÀÚÀj€nÀLÀ À€$: 0ÀH(¼€@*ž ‚&À&ì%z ‚%n Â,œ,ܼø(fÀ#R Â+È€,¨$€,²8€*À œÀ” ÂŒ<Â,Þ"ØÔР€#L €#D € €¬ €<´°¬¨"X€BˆTÀ”�Œ €$n, ¶ÀŒ€tìÁÀÊ À!> Àê ÀZ ÀXT>€#†€´€HçÀÀ x :| x NPø Z(( B�28 VÓ¸ B 8   B€&\k:R¸ >!À B <&\"x ,@ç| i "g‘¨ P`ôFß i"g‘¨ P`ô"x ,J© g0/@'ÿ@ "8 BaóLß8 4gaòÿJx Tg Sx RnPø [`órfNsT� €%bû°Ð€0;"Nû �%cT—Nu/Ò�2; Aû"Nuûˆü"üÈý@&|P”˜,`ÀBûøˆÞ~ ®ö"ä÷B+v˜èœxý ~ò†&ÆûˆònúÜÿäðÆñ.?_fó\aõ¨=n\8 4ga6ÿ.)g".Hg~aú=@|Bn€ÿÿJ@kZåˆ €(n¦EùªÕÀ4*?g0B…, n6aÎ`NqTn`d(FgAÔan`Vn`N*HÔÒHyüNÒ$x ($ gND@°jnFS€Àü EòJªg6*f"²®f&?*$jHyü@çNÒ0€ãˆAùbNð=|`ôj=|Ns*I"H Q")aÖ`T—Nu"M �!TCBfò*H(m@ ”!ASQfì`T—`n �!TCBf*H(m@ gÆPø [,fT—`B"á™�ÿa ``êHç<ta4gßüHç`ta$ßüJ€g/a:`T¯(¬fNuNuAï6Ø·ìe&lUBgU�fìNuUANuHç&B‚4fx`–HC2xƒf6ƒpx ga>KøIøB§$I"x fFJQk$¶1@f&i OJ�g·Øg`öHSAëaùŽa”Cé QÿÿfÎB„ g| g4´¬o  g($,aœ‚)aØ®- K gT¯Lß88Nu g@î-|ð&Aí-H”|0ãHâ@S@lü0€aùJ�Fü AÖaú$a‚`ñ,R„R„`œ g*$@ g**º‚m´¬nº¬m` º¬o(J*K fÖNu•¬Õ¬ *,á�GôXf*, $T ,g"@Û© "Šg%INu*ŠgúBªNuaøänw&Nu"_ g @Aèaù`ðNÑ g  iµèl”µém˜fÿNJQk’*iHUAíaø6 gþðáŠ&J×ÂàŠ(@°Šnþà ,áˆÐŒ°Šn fè`þ̰‹gþˆn gþ¼�Šàˆ$`þt&”g"T#K(‹'L'l B¬ �‹àˆ'@‘¬`þJCé QÿÿfÿPgþ¸&JB„`þLa÷Hç $nLß0T—Nu$H"x ÿÿg *iµílµémÜJQkÞá‰Òв­bÎ` Cé QÿÿfÐ`ÀCøAía÷T&g C±Ál"H&fô g )áˆÐ‰µÀm¬%B f -��àˆ%@ $ƒ%If*Š`$"Š �‰àˆ�©#@ f *Ñ©#j "’$IJƒg$"C#JJª f )Ѫ%i $‘g"R#J- ð"x ²f(i,g Aìa÷H`îCé QÿÿfÜAía÷4Lß0NuT—`îHçÀ@ç&x 0|*S»ëfKëIí&ŒFß+@+H+N (o:”T¯;o+o Uïÿb+o a÷+A2<ù’àHF@@ÀüúÒ@;ALß8NuBƒB€"x gbEé0)gP—ËJj f ·üf$&J` ±êf´’gB* g f4 f& ÕüS@fÄJƒf"0) K·üf J°i m‘ÈR€T—Nu JNu CNuB€*g B…:(0P$f `¾°P g Q… E læ*T—NuB‚BƒB�"x $( gd4)´i gRB(pJq fJƒf:& „g04)`*±üg±ñf$lµñf$lµñg"Jq k"€SDf²T—JƒfB€B‚Nu Nu qNu gJ�g` NNu gø"(g.(f".°®f²®gÚ"x ³üg°©f²©g"i`æT— INu`††ÿÿÿB€&àŽ(o8؃S„àŒB…:(J0Pg¼pPe¼pPb¸pPbÜpPáŽÜNu Q… E lÔ*T—T—,Nu$x ( gTB€0lTD@°jnLS€Àü Eò4,f^Jªf8g .(f‚z,, n6aÿ\`$Nqn NuXnNuZnNu\nNun Nu%FBó5B$®NuJªgÚ .°’g.(gÐBªNu"x f$x jB‡B‚, Jlf„J1 g\nNu~Gòp·êmZnNuJ«g‡`â6üN¹Aúê�&Èz,, m6aþ¬` Nqn Nu6‚'M'l 'l ‡ Žü‡ í)GëÿúåŠ B ‹Nu1 g"S‡ÎüP‡Gòp k (°®g.(f=|NuGë,fÿx,f=|Nua0Nu"x f$x j~Gòp·êl¹ëf GëB‚4a ‡`ÞNuAúéf&åŠ B ƒäŠB1 B«Nu*n6., AÕaüÄ`^n`Ò<5P$0@0f22, A0g ŒA g& f.(fn `œn`¾\n`¸,g†, gÆ"�$. uP aûÎ`±üf Zn`R\n`L�uP$!uP  ‚1A1| Bƒ65PÖuPá‹!C 65P–uPRC1C3@1| , gè NuJ¬6g*l6B…:-5P$gabQ… E lî,)gP"x Ké>)gB,,Jm g.¼•f*­ Jm f0-@ fB�2- m aùf`aðnÛüSGfÂNuB„,)gÄ `–>, fz,, n6aüF` Nqn Nu$F,g"z,, m6aü"`"` JEgJ0Ðf^nNu., m6aúþ``êB€00P, f8ÐpPáˆ%@B€$°P 5pP$ª00Páˆ%@B€00Páˆÿ%@ Nuáˆ-@ Nu»Îg -,fn NuZn`r\n`jB¸ b., m6aúx`æJ…gÚ0, 2,A'ÿg� f  gÁÁÁ� B‡,,g�  gB†.8vΆެÞ¸vθzà�"Ff�fAø pfRˆ-(fTˆHG>G‡ÿ?HG Gaõn`.S€g^n`®Pn`ön /fè"AÓa÷š`Þaî¢&H.*á�g, "F m6aú–`È`ÆJ0PfÀ!¬ P 0, @Oÿ gÀ1€P$1¼Pg1¼P àˆ1€PЇS€1€P �‰àˆ1€P�P&ðP$R(-K gá�-G$T�Nu., 8,(M¹Îg,,f n NuB¸ b*l6AÕaøò`^n`´J¬@g ,<àˆ°uPe°uPb n `’05P$@0g@$,25P$ uP aø.`aíœ<(SFÜuP;†PSh B†<(  g†1F JFf.05P$@ f$B€05PÐuPáˆB�25P’uPR� @aö<`aíDaí¬BµP BuP$B5P'BuPS-Nu*NB¸ b` »Îfn Nu$-2, l a÷’`^n`ÜZn`Ôn `ô\n`î&H$m6.+AÒa÷à`èJ…gÔB…:+á�, gº¬d n`�*,…ÿB$,,B, g,+ AÒaø˜`”`’J…faì~J0Pf„%«P B2P' àŽ5†PàŠÜBSF5†PD€Ð« àˆ5€P5¼ P+g5¼P5«P$òP$R*Rk -k  NuB‚,"x fJ1 n=|NuBƒ,g Co=| Nuá‹à Hz@çåŠ B/?8 5gaõèîNs8 5gaõØÝNu&MB¸ b*n6., AÕaö´`^n`ZJ®@g .<àH°uPe°uPbn `ÜVn`Ö·Îgö"E$F.* k6aöp` J…fZn`\n`ö* ,**fB†<5P* gÜuPáŽB€05P�uP$R@*á�a÷(` `J…f aën `ªJ0Pfò"( à‰ÔA1�P1‚P’u@DAÒu@1�P!µ@ P 1µ@&P&65@$*gƒ* gÃÃ1ƒP$1¼Pg1¼PBµ@ Bµ@$Bµ@Bµ@S-R(20PÒpPá‰-A ÉEaêàËD g$$.´«g pP "(Kaôâ`aêP&L$+ ‚Nu,,`*"-6g*,,, Aaö8`` J…gJ0Pfn Nu.Aì aõÒ`^nNu.(f((gn Nu"(6g*,,, Aaõä`` J…gJ0Pfn NuHzÿ¢?,--gGÿg­-g- ,gSs­-f­ ,Ss3g³ gAóaêgl û g+l  g+l  g- ,fAÕaêVNu gí,Nu gÜí ,NuJ­@g\n`h&, ƒÿà‹HC8 nHC Caîþ`Pn`F&H&¼!ASQl«l 'l'l Aë('H'H'H"áŠÔ‹'BBk&+K@Nu&L(m@ fXn`Þ,fn`ìz,+ n6aóð` Nqn `Ò"FB�,+ Ü�àŽ¼pPbä �c6B…,B‡ fY‡+gX� ‡fP†P�P…B€,¼€cn`X($KaÐ`Zn`H(m@ JÄ(gÇÇtU„a0(g tEèaY„J…g $EîaQ„$I$gaaÆNu6Ú·ìe&lUBnðNu(N¬-J¬@g l@B¬@"(’ˆ�ÿà�aïÚ`aæâNu(n@ fXnNuJl&f~`*lB‡-gY‡*, n6aò¶` Nqn Nu&F GfBSNuT�‚gX�»ìe›ìÛìÇÂn`6Ý»ìe*lUGnð. R‡‡¾¬e.,@ç|)GSl&Fß&F f$k'jJ+g+g7|NuB€00PR@ÐpPሀ�‹B‡+°‡l.oÔ|G*,+g7|Nu j6añÚ`"``êàŽÜpPáŽÜ>0PR‡á�žƒ|GB‡+*FGë6ÝU‡núNu(n@ fXn`$ . ?,ø€_@Jl&gKÖaNu--f°, g˜", l(gTˆ±ìe l2HA±ìe l2J�kL"Az, m6añ`Nq`8)I,- 8 > �&\e�&\R€HÔNu&F- ,fm NuzNaÿŒ(FCí0<"ÜS@fú+mt+m ”+\ü0-H+\H-Hø�-H@ûNuAÖaÞòNu¨ ,fn NuaÞîNu&L- ,fm Nuzaÿ(F­ú+lP+lT+l L+lXBmX-H8�-HJg:íú.-Hg*z,-P m6aèÖ` NqnNs†(Ff+TT­ ,0-,@ÿfAÕaÞFNu$, 6,|B„g(,n=|NuB… g *,fÆaÝØCÀg*B†6,  gƒg´�lJ„gÔ„`ô‚&\`6,$Ô„"x ,Eé&J$S gŒJªf&’aÒê`ê»êfâ*fÚJ†kºªfÐ&’J†f$%M%D %lBj%EÃ5CaÒÄNuRFCf* gêªêaÒœJ†kÿ~NuaÒtJ†kÿrNuJ†f @ç| )g $@#RFß`ˆ=|FßNuSFn=|Nu&Fz`aýL(FCí0<(ÙS@fú(íü8íú -H€ÿÿÿ(À(í,0-H@ø8À(íP(íT(íL(íXNu*H(n@zB, gz.,.< n6aæü` Nq><€™AÖa֘߮<&F, fLÛÿHîÿLÛHî 2Aÿ/gÁ=Aú/[(n@ g gì Jl&gKÖaõ$Nu>,.(f‡J”gz, n6aæn` Nqn NuJ®@fXnNu,‚Eø –J2 g\n`:¼ Eø ¦Äü%Ž %® 5¼ B² %” Br 5‡ 2` ò Nu.(f((gn Nu,°(%cB® h%#n Nu@$@&NuBG`><&,"x $0àH°i lB(¸±0f:Jq0 g4 10f ¾10g,‡0Jq0 j&10JGg Añ0aÙüNuAñ0aÚ˜Nu^nNun Nu,*H"y 0 g i‘É*$ n6aå8` Nqn Nu$F&äŠ$ÙS‚fú$F(M"y 0&Q—ÉÙË$ÌÛÃ$ÍNu.(fn NuLÜ.<&\²‡e’‡R€`ö&(@ç|–¸ B˜¸ >!À >!Á B׸ FÙ¸ JFßB§"x ,Eé&J$S g@*g2&’$—.Š*fä * gÞ²ªn ‘ª²ªgÎmôѪ²ªnö`Àת`¸.g$G$*.aÏNJ‡fðNu=| . €Kª{ûfDJnpg x :(f2 x ‘ü, z n6aä```*FB®LîÿN•B¸ b,x Nuî ,NuJ”f@",g.(f".*y »üg(²­f-(f ½Ígí-gD*m`ØAÔaãf` B® VnNu*H½Íg-(g.(fn Nuí-g\nNu0,gÀí);@*;m,.-m +n°+n´­ ,­-­ ,g2 m”@ç|JÐküCèÿâJ© g»é g"i `î#m RP�Fßm-ÿ,|ð&­ ,gí-@ç|­-g <  @ ( g °�fô!m AÕaØfFßNuî)=H*fî*.(g . (gaÖ†.-g`$.)fÚ=H*=n,.î--n°-n´(N"x ,Eé&J g$@¹êfò&’aÍ`ì,)gaä ,Tg @B¨!x:!È:&,(,ì)"x )-f2¸©f¬),)g) ,g¶©@f¸©Df ><@AÑaÑ‚"i f¾,)gaôNqaö®,)gaõø~Cø –Eø ¦"Âü 1pf2g/aÐ., ,gaÕÞR‡ ‡oÄaîVaä‚J¬gH4<HB4,&,8,HD8,°*,²<,¶HF<<.,*>,\,)g<<$LAìaÚêNq(JCø )g¹Àg"@`ò#laÕ`B¸ rAÔaÝÚNuaÔâ(-gn -hp =h("NuIëÿþ6<€`&LLìpHF>,6.(BAÓaàh``0<`,B€8 oH@0< @aÛ `0<`*H4<B˜QÊÿü+S +fgJ€f `<.p .;Fp+@aæBfDÿ;D(+El+EüHD0àHgfJg¸.%c.%D%°c@$@&*¼!TCB|€,;|:|úr;|0$MÕü`+J6$¼!TST|5|$5|D x  -"-±üg °¨f²¨g h`ærAÕaÜ|0<`aÓì`0<` +x !Í Nuf=@NuT—Nufg2 .".` ", , g.(g J�g` .".+@+ANu.(fn Nu*<,, n6aß` Nqn Nu,fnNu&Fp&ÝQÈÿüNu@ç, gzR` ,gz,. n6aÞ¼` NqTnFßNuJ”f6".*y »üg,²­f-(f-,g-.fD*m`ÔAÔaÞ(` B® Vn`°*H½Íg-(g.(fn `’-,f \n`„-m -.f`>,aþº+mlü|úr- (gDz,-ü m6aÞ` Nqn `ÿ@+Fü:(0P$g00PÑpPÑpPBpPQ… E làBm., gGìLÛÿHíÿLÛHí |­,0-,@ßfF×AÕaÓ,`þÔ@ç FJ�f8".*x »üg.²­f-(f½Íg--fí,gL*m`ÐaÜú` B® VnFßNu*H--fê½Íg-(g.(fn `Öí,g\n`È;m,.-m |­-gCø  I"h ³üg ³Ífî!i `’î,®-fNu®,=n^Bn^AÖaÒFNu-n Hî)Nu-n Lî)Nu»Î`ø [¨,g( (Xg "@B©B¨X1h^g 1|Bh^aÑðNuè-Nu(n@ fXn`4î ,.-g® ,AÖaѾ`ìì Jl&gKÖaê–Nu,fz. n6aÛì`NqpaX$F"*fp aJAø ŠAø ŠaÐRGø "SJ“g²©gÒGé`ì f¸, n6B…*ç�EaÛ’`Nq`¢B€* e c @dpËa„r Âj A fp ar"x fJ1gj°*f¦ *ÿg Jª fpÇaH *b *dpÌa4GêB…*g0 opÎaS…ç�2*²sPdpÏa ²sPd pÏaR`NQ…lâp Àjf$ * @fRˆ/<K¢? *(SJ“fp a¤Gì°¬fì*,Ig°,(gp a„ ¬g(l`ð"SJ“gGé`ô j p(R@ @Hç€8aÔÊ` LßpaÿHLß"HíˆB˜S€nú*g)I&‰"¼!CCB*giHLê?Hé?))àáˆ3@B@3@@GêIép)+g(Û(ÛS`öB€*åˆ#@D&j ×Ó#K )ÿf#|QH*géI*géH`R*fbB€*&x fJ3g:(iD &TGëÿ¶*` &lJ¬g +*²n(K`ê¹Àg #K)I`#K&iD3|N¹J#|QüLIéJ&ŒB€* x f¼ÿ iÑè*I/N�,_`t`Zp aøp aôpað g@o opÁaÜ n6B€S&@B… f )e2 )c )€e" )�b;°g,aØ’` Nq`¢×ËGû°ÖÓNÓÿþ Ì¢Úð *a²f´ ©  ©HfX")D(A&TGëÿ¶ `&lJ¬faÌ(°‹g(K`ê¹Áf&J«g((k)|N¹J)|QüLIìJ&kD&Œ` )k`B�)(&iD&¼Ö&x fB3Iø  &TJ”faËÆ°‹gIë`ì(«Aø ŠaÌî IraÔš`8aË p�az&Iaî"Kfpal)Hgp‚a`)IgpƒaT)Ig .(gþ†)Igp a6 )c )c )€e )�c*g< * d pÆa˜`”j :#j +HPAø ŠaÊü mÑè/N�,_J@g>a, )AîDJ�g"P°©gAé `îF€NuB�Aø Šaʾ X�=@`Aø ŠaʬB€B®Nu,m4B€-9f NpN@`F|q|ptAíp!­< g ­€pX‚€ ­8 T‚´-:cm:pLí<pažNuHç`CípB€ m"-+g|00J)fFÄ)fCéS`â0))gJ0`(©0-&ЈfS€�ˆ$J0U@løB0 UBlø@À@FÀ-Hg Hç:aÿ Lß\øLß|NuLß|ÿþNuHç m4pN@`Lßx`LßxNu8 4g @çaÒZîFßHç€Ä*oKíÿ°"m/ N‘*_e -g*@`êLß#X�`¿À8 5gaÒîHç€Ä 8 g*@ m ( g / @çN°Fß*_ -`àLß#`¿‚ÞjH091483 4@€€ vØRÄRxþ/ |pN@`p N@*_+HÀp@B˜S€núNu *faÌ`\-qg<ó`pB‡-qg<„`:B…,*:*"mPal` Nq<†`@&F(m",gíq<ó`&(j+mPˆpAúÿF<¼XWÈÿüf Ñü0Nð<‚`øah,+aZ+FŒ Fan1@1AB†ÆaÂaþ2<0‰| |`l -g´a,+a+FŒ Fa"H§À<F@ÀhFAÂh‚@LŸf"<6< Æhf<°hf Aÿó²hg ‚<ˆ`NB†Æa6ar2<@‰ mŒ,g< <€( É B€( f|` |€À@h|`t <€( gÀ( fÀ( gÀ( gÀ@ (&(gÀ@h'h B€É( g €À@|||P` -gþfaÌ,+a¾+FŒAìz"mŒ<aÈF@ÀiFAÂi‚@f”0)ÁiF@Àh�i0)âHe3h âHe#h âHe#hâHe#h,g äHeh` îHâHeh&&âHeh''äHeh))"�Ba$E PˆP‰ÙQÍÿü|PB�`˜<ˆ‚`Žz. -g z*,fz:Nu0<2< -g0<2<',f0<|2<J-×g prAúþŒ` Fg+KL+mPPprAúþT¼XWÈÿüfÒpþNðþr‚(mLAAí´¼ |p1Aí¥FíB`¸í¥FíB`ª,+z:"mPa"F mìaª€m||3|¿ÿ0<ÿ -§f€ 3@Aí\Cép2ØQÈÿür`ÿpAíT(j!lŠ!lŽ0<€2< a~í¤r`ÿF(jAìzB@BAad mX(g8(Ví×g,,(*z"mPazg~C`P+FŽHzýf!_*!M.1mB2 mXaâ€AèCì‚p2ØQÈÿür`þÔ,+z:"mPa"F+IX~ÀifüÂifô~0<@Àifæ0<€ -§fÀ ÀifÎ0)ÁiF@Àh�i0)// Aè Cé Eúü’B�gâHe SAØQÉÿü`ÑÁÓÁ`æ"_ _~B -§f )&bv~A0<Ài @gf~@)( b)fJ©gL` rðÂé²f>) g )(c)(g )á˜gjB`öm||PìPNu‡rˆ`ý´a°Híp°aFíB+g;|4p’`;|8p’`ZPíÎPíÏQíÔB­˜QíÐ+f -]WíÐNua`Híp¼FíB+gQíÔPíÏ+g;|p’`;|p’"mPR)'í¤"m"Pí«Hz/`.Qí«Fü p.mHNu mìaðf -ôgrá`üæ;k–+gAëpN@`r„`üÈ+HPB­ ,+ *+š†RE"mPaNuagr„`ü¢(Ú†S…NuHçýü?<fJ…g i6pN@BWNqNq0Lß?¿NuaÿnHíp¼,+*+"mPa®Híp°aþÆFíB+g|’`|’+g|4“`|8“|p”`þæí ¤FíB`þæ`.Nq`R`RNq`¦`Nq`>`>Nq`’`Î`¾`ºAò"m"¼(¼8J-×g mŽN¨`~í¤`ÌAò"m")ÿü¼8J-×gÀ-ª mŽN�`PJ-ôf¼À-ªfJ-ÒgJ-mgž-\g*`R°-nf í¤`p-mfJ-Òft²f J-Òfj`þ°-lfPíÒí¤`B°-ofJ-ÏfF-Ô`Ö mÈàfpê`Î2-Þ€SmÞf;|ÈÞRmà mÂàfí¥í¤`ðí¤`æJ-õf†À-ª fQíôí¤`ÆF-öfa(`a4PíõFí@AúP"|…r$ p"N@`Qíõ`>/@çFíBQíöp@`/@çFíBPíöpÀ-?ð�-ð¼­ðFß Nu/ *AQíõ*_NsJmèf"@ê;mÞè mÈàfRmè mÈècBmè`ÐBrÂ-ógÀJ-ôgÀ -§f-ò-fÒJjÀNu - fJ-Îg -¸�­°` -Ä�­¼NuAò"m"-óAó³¼¼8J-×g€Àg mŽN¨`BrÂgí¥J-ôf.€À-ógí¤`rAò"m"¼¼0¼8rPÂgpè`ÿ` r Âgpê`þò`èAòí¤`2Aò-f Ò¨ÿö`¨ÿú|pøJk´í¤`NqJíÓf¢Fí@­¤f:­¤f’­¤fì­¤f|­¤f>­¤f|­¤fÆ­¤fЭ¥fÚ­¥f ¦­¥f à­¥f þ­¥f þ­¥f "FíBJm¤fÿfQíÓ"pU@NuJmÚgâJmàgÜ m æcPíÖ`Î2-ܲmèf8 mL"-¸’­°!AmêAí´¼ |pB(mê ara ¼`Œ5SmÜf;|ÈÜSmàJ-Ñg m´àba|0-ÚNû`ÿ\`Nq`† m¸±í´c aDgpa`6Á+H¸J-Ðga -¸-\g°­´c�­°+@ `´`a`ÿ -rá˜g²gB`ô-¨À°-©f -¸�­°+@ í¤BmÚNu m¸aÆf ±í´b�`JJgþÎ c p a„`þ¾g ff±í°c\ +H¸S­˜J-ÐgL-]g&JíÕfpa²-pf -vaÞ+m°ÄB­˜+|8p’`¨²-qf0+m°¸J-Ðg-]gp\aº -va `ýì+| 8p’`p±í´cpa˜`DÁ+H¸R­˜J-Ðg bp^axR­˜r@Òaj-\g±í´c ‘í°+H ``ýŒJ-Ðg J-Õgp>a< -va"BmÚí¤`ýLgýD0-ØNû`rNq`†`¶`ú``JJ-Ôg0B-¦;|â;|äBmæ -ÀR€+@ÄJ-­gB-®`B-Ù`¢@ÿü g fm{¦g aÔí­`üÈJ-Ög QíÖí¤`JmÚfa`üªH瀀 -’c†á˜+@’ /bB­œ@Ùí¤`h ?b&QíÕ0@Û-–f-]gaJí¤`ü`öB­­gFíB¼­ñFí@|p’í¤`öAí´a>`ö-\gí¤pÀ-óg-\g aýÌaó¾Píô`õâaý¼aþ@`õÖHç?üm8!mTB(|$-­q mzS('6< g6<áp<p$-˜C'mÎIí~a8Nu-¸-§f< aJf < a JgJŸHzÿžNuBB�)$ f8J-×gB2< )VÉÿøf2@Ì+_ÈU­È+_ÒFíBééNu aûÀB-×JPÃ`J€©éPí×)Fí@Nu"m")� �g)� �g|ÿþNu-If-Hg-qf"m"aûRFí@|NuHç:aû@B-×J m�-Ì$mÈ&mv(m˜R-ÖHz/-ÒNÒS-ÖLß\þFí@|Nu,~|)m<g X€X‡”€�p­8pX€°-:c-:€)‚p9ƒp g9„p g…p B4p LÔüaNuHç m4pJ-ÖfpN@` Lß8+Wr`Lß8B­rNu ``”#È—&Oú¸/Aù–l0<3NAg gab�Î"_"iAú ©.IOS f>!i&B(p ¬fà , f’*, aòaò.6Xg€KöX0B�-a J€k¢aTg®GúªB“B«'vx 'vxí—'vXLX«'|—7|Aù–P0<NA6Xg2J-g,3ü–jCí#É–X#öXL–dP¹–dAù–P0<NA3ü–jGí#Ë–X#öXL–d¹–dAù–P0<NA¶hB¶XB6X+BvX @gJf 2-AfJ-ga Ô`Ja À`DBy–²#öx–ª#öx–®2-Ag#í–¸y€–²#öXL—"Aù–ª0<#NA6hgAù—*0<NAgaý¦J¶Xg a†a ¤a¢aša’`F , f<*, a\JvXgav`&öX%¶X%öX%a\a€!vX&6¼€B«7|p-�X,aj`‚6hgxaT`Ê6hgf6hfa"`‚aJvXfa,`DCöX0 ia`Öaúª6hg”6hgŠ&la Tf af �`a°`òAú $KGúHµËfB¨B¨ 1|`!l!l Bhl!vX&!E!JpÁ—Á–âGú 6B“B«'|—7|'l 'l'lX«Aù–P0<NANua: |‚0<5NAgâ gÚaóa2-Aga Ufÿ*"<Â`ÿ"By–²#ì–ª#ì–®2-Ag#í–¸y€–²#ì—"Aù–ª0<#NANuAú Þ#È–|#Æ–À#Ç–ÄöhöX Aù–r0<#NAg& g f |0<NA`¶atad`ah`ÿB€ y—&(( f ((!D `*J¶Hg(&6Hg(`ð&„8¸¨lЄ-„8B¶HB¶H-…H-†H¬HB6H-‡H -¬H¬H¬H hº¨f ¸ˆgJ¨kJ�g P`èöH`F6H¶(b&&H"(�J�g A`ä"(gÁ!ANuJ¨l$¨"Á-�H6hf-„XNu-„XNu"J«lÁ'A-ˆHNupNuB�Aú <| `Aú 0B( ¶x!vx| 1|hB¨ mgrçA Aù–„0<6NAf’Nu(6X"6H�-�Xgö.6H -‡XB¶H B¶H=¼ÿX¶HX+&vHë«-¶HXLGúnB« B«'M&¶x'vx'vH '|Aù–P0<NAfaØg:B-#öX –˜#Å—ü—Aù–˜0<#NAfÒ2-AgaþðNuAún!vX&!vx!vx !E!vHBhvHaöxprƒ`8afrÅ`2rÇ`0rƒ`*rë`$rá` rä`r†`6hfaH`aJ€f ¬a â=­ Xa øa ð`B�-a ¨J€k zg –6hg,g*6h$6Xg JvXo` ~a8aúa ¦`¼a*Á�hadfa Ž`¤6h��ha z` .6hgÁ�ha `0<NAa 6`Þ�f�hNua $*6h6haa 6Nua Œ6Xf6XgB¶Xb` vXbJCfJDgS¨fJCgjBƒ`DCÖvX"JDgjB„`DDØvX =ƒX"=„X J¶X f$"6Xf J6XPga` ¬gaÖNu6h$����g� vhB¨ZB¨^�hB¶hBvhB6hS6x NuaB�-a hJ€g:k66hfaZfa„`ša|`0*6h6haÌ"6XJCf�JDf�;A ,E;n„"+n†$�ÎvX$+vXAú ð!M!l1|(AÐ0<NAføˆa`*JmfšB�-aÄJ€o–6hf~6haDJCgˆaªfaÔ`êaÌ`€JŸaÂ2- Ag Ag& Ag ra`"B†algLaLaþ` B¹­–Aú >1| Gú ^!K!mBƒ"y­´"i$4-* g`"6X BfgJRy­˜`  g2-AfÎJ€gk6hfôB�2-A€g6ha¢JDkæJCkà"9­ž�€g ,g®&(Aía¬J€g"9­žHAAíaîf„B�-a´J€k†f¢J-f"9­ž�€gl-¶8h-¶8hR6x B�2-A€fÚÇFÉGaûøÇFÉG`ÊJ€k8fTJ-f,g",g &(AíaJ€g"9­žHAAíaJfàB�-aJ€gâkÞ6hfÒfÊfÂHçB�2-A€g6halJDk´JCk®Lß-¶h8-¶h8R6H B�2-A€faû,ÇFÉG6hg62-A€g$a¤*6h6haJCgRvX"JDgRvX a¤aœ`²Á�h2-AgaR` ÇFÉGaHÇFÉGfan`„2-A€f-¶h8-¶h8R6H aúœaH`üJŸ`ª ,múB�aœ gìrAúl4Bÿ‚gJBf¦J�g  PNÐJ˜S�k”`âB†aöa6g¢raV`d ,m ,gdB�a6 g†rAú&4Bÿ‚gJBf@J�g: PNÐJ˜S�k.`âB†a�a\gþ¹üga!¬(Nu") ,yþP²–gMîv½ùþTcð`¶a(üa#æa) $yþX½Òfê EêVµùþ\cê`ŒùÿAgFa&~$h µüf $h!J `@Jªg<&R·üg$K`ì&JÕü8µèeB(*AùþzKùþ¤p `•ü&ŠB’Bª)g%i %i` %i %i %i$i)iAB*%|ÿ< h ¨ÿ<f µÈgJ¨kJ�g P`äê#Êÿ<`b*¶(n&&H"(�J�g A`ä" (gÁ!A`2J¨j¨"Á%A#Êÿ<`" J«jÁ'A%H yB(*`þ>üÿÿÿ6B¹ÿ8EùþzGùþØ0</6ÚS@fúCùþØKùÿ)f |-g )4)eøJfX -&f0@ÀgUÀ-g­a':™Ì�ÎCùþØAùµú-2<fJXSAjö`$B€0€° @NÐAù¶ 0JPaý$°XgàJX`òB�AùþØKùÿ$(&(x"h$-a&ÎAùÿv!B !CB�Gú ²gJfø`4ÒÓïãåìíGîV!K gGé$`Gé!K!|AÐ0<NAºg&Áþ¨!|þ¨!IX¨!|AÐ0<NA f<,g4AùÿÖ ‚!CBh,g !l,1|€#ÉÿêAÐ0<#NA`a#Äa#ª f Jªfª B(+`üza$¨B(+`üN¹ÿAJ¹ÿB…-% Bg Bg B` e dbfJAg²Ed`ÿ"-'f 0<@'` eÿ-&f 0<@&` bþöBƒ6-"fTƒB„-'Èü¸ƒeþ¾ã……B„-&Èü¸…eþ¾`J­$gþ a4fX#Êÿ85m 0-÷@25m"4m&8m'9m%7%m$ -@g -&fa an<aFg`ýìÁÿ6B€a(Òg* f -@g -&f aÜa4`Ø"a:Î `Äa:Æf¾-gB¹ÿ8a0#Êÿ8`a$­`ü - ga fTafNa#Aí 0< X fS@fö`aðf0a¢e * g&`ýÀa(f#Êÿ8a¦ - g a&âg`ý a¦2-Aa"øfêa^fäÁÿ62)a„JjJBg JAg²nfüäaüf¼`ØaÈf²HBaÞfªHB gàaÜfü¾a.²-g¬BÀa”gaÚ`üœAùÿF ©!i-g+lt(!lt`!m(!ll 1|1| ,|�¬tR€!@AÐ0<NAg" fa2`Š g aø ab`ü–+yÿR0 9ÿZS€Ð­(+@,)m(pat9mŒlÿøŒB�9ÿ6ƒlŒJEjlÿÇŒ-g )j(8)j,4)i)i)i )iJk*.Mf"Aùÿ’0<JNA5h<ê JBg5h:aô,�g!|2a!œga¢`û¾üÿÿÿ6B¹ÿ8aŽ"i #J3|_Jj©2,ŒA�©B()­`ù¦aìfha ¬a`dû`aðfV#Êÿ85m 0ah<a@f<Áÿ6aúf0a,ÒB€a*ffa7¢faaX­`ùD"a7ˆ aè`úªata `>JkS�²€g4 fJkÚ Ff<`Î €ÿÿÿÿg �ÿÿÿÿg²€e `þ)A4¬Ž r�a jg ÂfÌ lfÂ`T)l\8"lt",4B€0*4g ’¬`ÂÀÓÁ`($,`²‚gB€0gR€ÓÀ³ìxb¢R‚`â0g˜B lg€ lg lgÒ lfÐJj4fdT‰ *@gZ,fR,fJBƒ*7–€Dƒ n@îMk±îDb"ÁS€fð`°ƒbîAgð±îDb ü SAfò`àtÁ"n@‘É  g,fB�*7ÓÁ��dB€¸€d tÁaÚ!@(g !I!l AÐ0<NAg gœaç` ì�`ü„ �¬t`î f2,ŒA fv¸€fh`H" n@a Ög gRaça òfhgR�,gR†¼�gb(a (fÎ �†R‰`àa f¾ì�¬�B`ÿp �� IJj4fT�ÑÁ`8 g( n@a ^fˆJfr g a zdð`a pbæ f ,|�¬xgBJj4fU€°„e6"lxR‰R¬4 fÐa �fÿ6³ì|dBi)Ixpa ¶a €`ÿ\aÜfd)l\8"ltS‰)Ix`´(pÿa ŒìŽ Jj4fT€a-¼f^`ÿ l|Rˆa ¦fþÐ&Ha(L lg$)l\8)A4¬Ž Êf(B€0*4gýz`ý| Âgÿ~ Êf g Ég`Ò)A4)l\8¬Ž I Jj4fT€a(dfÚa °fþV lfpaÜBJ�gþ‚Sf a&®f²`þtB€Sgpì�¬�a$Àf”`ýÖa f† f–R¬4B€0*4f 0gR€ÓÀ`ÿ|a -&f "e8S@fò`  f,S@fö0<a8`  gaeS@fòB"_Nu  fS@fö`îp`ì  g 0e 9c Ae ZbJ<þNu<NuHç@"|Ð ?? ÿÿf J_p LßøNu²gJJ™`æJ$/gJ_`Ê<>B * gz6jJgDC8jJgDD2�f¢JFg jÿÿTg¢JFjJjTf˜`ÜjTJGg jÿÿRg†JGj JjRfÿ|`ÞjRJCg nÿÿJgÿhJCj JnJfÿ\`ÖnJJDg nÿÿHgÿHJDj JnHfÿ<`ØnHJFg5FTJGg5GRJCg=CJJDg=DHB`ÿJFgjBjT` JjTgSjTJGgjBjR` JjRgSjRJCgjBnJ` JnJgSnJJDgjBnH` JnHgSnH` ÿÿÿÿÿÿÿÿÿÿÿÿÿ$yþXJ’gEêVµùþ\cðp Nu$ŽBNu?0<+BZS@fú0Nu(yþ`J”gIì�¹ùþdcðp Nu(ŠBNuHç€a¶0<HB\S@fúLßNuHç€$yþX½Òf"Gí Iê ¹Kf0< ¹KfS@fø<þLßNuEêVµùþ\cÎ<`èHçà 9ÿ6kÁaý®üÿÿÿ6$yÿ8µüg aÿJB¹ÿ8LßNuH瀀Aùþz$h $j(yþ`°¬ f,RLßNuIì�¹ùþdcæaßêHç€À yþè"yþä/a" _S( ©©© yB()LßNuHç€À F"G`È l ¨(gAùÿî0<NAa߆NuHçÀ@B� * g2*2@ f;|""*$R�+A$`"+j6$;j4"`"V+i†$;i„"i$aŽCí!I"yþüCé!I!|&LßNuHçp€gfVAùÿ¦J¨ gBhAÐ0<NAB¨ Aùÿ^R¹ÿjBA*8f BB*9RBÒBÂü!AAÐ0<NAg gaÞ–p LßNuf&)HtBB*9ÄüS‚ÑÂ)H|)HxÑüì�)H@BB*8ÄüS‚ÑÂ)HD)yÿjlAùÿ¦!yÿj 1|1| g1| AÐ0<NAg€ ga gÿp`ÿha`ÿ H瀀Aùÿ¦ ,lga1|B¬lAÐ0<NAB¨ LßNuH瀀Aùÿ¦ ,lgD°¨ g>BhJ¨ gAÐ0<NA!ll 1| ,�g1| 1| AÐ0<NAaÝ~LßNuH瀀Aù`Â:<ÿÿ * g*2 gEÿJENuHç€0,@` @ f(,Žf,�f,�f <LßNu<þ`ô @f ,ŽfìÒ‚`è @@fJ�gÔ �ÿÿÿÿgÌS�`Ò", lfÆ �ÿÿÿÿf¾,f¶"*,`°Hç`aL&lLB‚+’‚gÓª(Ó¬dÓ+ê a(ŠLßJ@NuѪ,Ѭh/ &lLÑk&_ê a(dNu",x’¬tR�‚üHA0BAHAJ@gR�NuB€#ÈÿŠaÄB‚*7g!B!l AÐ0<NA hJ€Nu/ JgJj4fT‰³fSBføB€"_Nu/a€!D!l !I *@f 2¬U¨T¨AÐ0<NAfÓÄS‰ _NuHç €Jj4f2Ä*I¾„fa²fa'ž fR‰BB€Lß�NuÉG.Mg"n@aˆfè n@"Mpa"`Èpÿ)@8)@4D€)@aÕÚ´jRfHB´jTLßNuAÐ0<NAg g aÕ°JNu+nf / V+h _;j +j +j+j+j;jNu *@f" ©gQ@i | B€NupNu040584 4&I$ „ü´nepÏNu/ "n ÒÂa�"_fîBBHB êˆåˆ$nÕÀpÄ€”D,B€NuJ�fpÏNuHç>4* .$ff*n Úî“Éa Bƒ»î$cJ"Kaªe8ºƒc axf&aœe `ð"aÿ|f,ÆîMS…gaX`ð$†B€` ÏgJf aDg´ ÏfpÍLß,|Nu*@�® Àü"@aÿ8Bƒ"KaFeºƒcªafa:e`òJfÿxagà`ÿpR‹Jf$†Jšµî c / "Kaþü"_Nut,B€NuS`ø f J†g †ÿÿÿÿf6×ÂB‚`4Ö‚×ÂB‚Rƒ<þNu f JFgè FÿÿgÜ` f JgÖ ÿgÊgÒ<NuHç"0$V³ê†epÏ`&I×Á·ê†bòJ�gîaþxgLß DNu†îMS�gaÿNfè`ì$†B€`à/³î$ga4f B®$-|`Na f-I$B€ _Nu-@V-nZ -n^aüÖNu/B€.Mg .$fa `-|`NaÈf®MJ€ _NuHç@àpra`B®JfN ©EXORøfJ ©MACSüf@ g< € g4 yþP°¨g($V°ªg Aèv±ùþTcæAîp 0ÙS@fúB€LßNup`ö/îM n@"nDHA2<`-ANHîV"Haü _NuHç@ÀpraÌfBCî n@p 0ÙS@fú n@"nDBh>pÿ³H@³H@±Écð n@@>H@@?praˆLßNuHç<ÔHçCB�B†B‡ .f0B�S�2Oï pLß+%KF5BJa Ž`þ /³î0ga4f -|`NB®0a f-I0B€ _Nu-@V-n(Z-n,^aøXNu/B€.Mg .0faŽ`-|`NaÈf®MJ€ _Nu/³î f¸ jÿþ g&Cê p *gS@föBªFBjJBªLBjPp`Š4*P *L`ÿ"Kó JgªAêpa|f pAêKó anf’&HC Cm3 g Cgÿ|¸Efâ5BJ%IFGó pAê0ÛS@fú²Dg JAg|ÿÿ0"n40*PCñpGê 6ÙS@fúB€Lß+NuâHB[S@fú`ØHç@@",HfpÄ`"Aa LßNuHç|Ð$,Hfaê`F l@Cè )IP((p&a8f.aŽf(Jƒf %D$ê J„f %C ê ašB¬H¬�Lß >JNuHç`T$ g>raöf6Ké gJ‚j&lPÀâHg:ÛS@fúU‚g`S‚g#D raõÌLß*NugêBSBfú`âHç@@ graõ¬f"ƒ raõ ` %C ê JLßNuHçTA? ma`h&(B€AùéfãI00€°"@¬Ž&l@*lD",H lLB€B…NÑ9®9 <=f=f=f)HL¬ŽgabfB€Lß*þNuJfaš`pÂB¬LJ€`æ$*,,<`X~h`$*(,<\T.<ÿÿd fpÿ¶€gÊR‚gÆS‚¶‚bÀJ�gZºˆg< ,\(J‡k ,`:(Ú€°ƒb¶…d,�fÿr`ÂB€afÿtB¬LB…Jƒg¶‚g`ab`aœgš`.¶‚gòaNf$+ AóP ",H¶´`e ¶´pcaž`aÞgä`ÿ( 4`aý B�B„HFHG(KðP¶€gDda°`ÿ(2(JGgЄ`Ð�°ƒb$Ù¬\Ó¬` M*lDW�±Íea~`ÌJ�f¶at`ô)HL gþ¤B… &lt(ÊüS…Ú‹)Ex" Hî#V-|`Naðng� �¬@"yþ`³Ìg$)�g"²”f")H²¬Hf ")L’©@²€gCé�³ùþdcÌ`L/".Za–,�g A"it Ù±Åcú`$aî@!it!A ��R€!@AÐ0<NAaÅÔaz _`$,�f-lj-lnîP/aï( _fV0*4gÀè×ÀS‹)Kxaˆgý¨`:,�g|g"ER‰BQB�B€·ìxbÒ0ggR€RA×À`èW‹²hgºpÈ`þ¶J„fa`òJ*7fa `òJ�fJª gaVg‚`ý\ºˆgj"B€*7 ltJj4fTˆa2eJf4aLf.Aë CóP ³ìLgAéCñP³ìDeêa²`œaúg` A^ˆaîca0f `üÔJ¬\göB€ahfüÔB¬LAë aÆc† lPaºb†BE+ GóP aúš`,+Û¬\:+Û¬`BE^‹fa2`ˆ×ÅAíÿý·ÈdJ“gAë)KLanbÆ`& *$°¬Hga`ЗÅQ‹+›¬\:+›¬`BE K`ý„J¬Tg‚aì` J“gÿxašgÿJ`ü"p‚`ü/ aÔf~Hî(VB¬Haíìg:"yþ`¹Ég °”f²©HgCé�³ùþdcä`a: K"i@ Ù±ÍcúaL`af.)AHB€+ Aó ±ìDea\`pÄJ�g쎬ŽB€"_NuHçTB€",H g6"g2aÿdfF ,dR€)@T)@\",hR�)AX)A`a jS€S�Hìd`L`ûRHçTB€",Hgð"+gêaÿfû2 ,T&S€",X(S�HìdB€B�a "–€˜�HìTHì\`úìHçT * g¦",H²€g"pÿ)@d)@h`ÿ^B@+ Aó J¬\gÊB€aXf&aø²`¼HçTB€",Hg"l@J‘gX"*$gÿVaþ†fúœB€a&fôB�BC+ Aó0 a ’Lê(HìdRƒ*–€R„,˜�B€%š€0%œ€J¥ MHìxT`ú@",Lg²a �gú6`¨HçpÐB€¬�g|Lì @ fpÄ`nHîVB‚&HB�+ Có J‘f B¬HB¬L`.CéCñ³ìDU‰dJ‘fê“Ë*8Äü €ÂH@J@gRBa &f¬�g Jg&pÿaøÈLß Nu *FfaPNuHçÀ"@aòdf$0*J"n(ÓÀAêp2ØS@fúîMª B€LßNu¬�fB€NuS€a¶faNuHçXÐLìt R€�ˆ@ÿg2<’@R‰âIBYSAfúS‰&lL HîV*2 g\B„*72*4 Bƒ6f6fa ¤`:g RCfa ”`*Gð8& JAfTƒ¶¬xbaØbfaòg<ÿÌ` K`´Lß Nua fô¬�B€`êHçÔLìtR‰&lL fa 8`f*2B†B…B„Bƒ*7:*4f$6g*HgRƒÑÃR„±Ébfè`±ÉgJXf`ö( ˜ˆˆÅv*I›ÅHDJDfŽHDaãœB@*9²@ca Ð`p,�grJg. fHç„ MKëB„& aLß!eg Jfaf6B€0+‘¬h‘ª,7DÙ¬hÙª,aââgJCgê a „lÿŸŽB€Lß+þNupË`ö,�gæ²+fP¸kfJ& 8gÔAëaŠgÊd8"l@B€Aé Cñ ·Ég) ICñ³ìDeìa `¦aXbšazg”`NqpÈ`”/B�* gaýŠ"B€aýÄg"aüêg"að–g"að g"aëšf LßNu/B�`ÜB@/ *CJg°eg»fS@føB*_Nup¸`öHç|Ô"lL fa r`B…*7gÀGéB€fa X`ºga X`4 l@B‚v Öˆ( Að ±ìDea :`³Èg&^ƒ(Að fâa "`p C& (aÿdbeha‚gJ¬\f\AóP$,DW‚±ÂdRJ�gN^ˆB‚aÿ:e b>aXgJg6BaNfHç°fSEföLß( gÝSEfúa ÐJ‚gì�B€Lß+>NupÌ`ö l@t g¾raëfäAé `ž*2 NuHç>€J*7fa h`^ r‚aõNfT,,`B„*7"ltB…:*4"J‚fa >`4³ìxd>JEf2fa *` gR� K0& aþrgepÉ"JEfJaLß|NuÓÁR†`ÀpÊ`èz`âHç?B§B§B§,gR€(fa Ø`B" ‚ga È`2&lx.,|B�³Ëcr&a^fv)Mxaà»ì|ga¼ÒB­a¬B€$& IB„"_* ga�("_* gaxg("_* gajg(""H f Lß(üNu @ÑË*H±ÇbR‹Rˆ³Ëg1#`øB€Nu lt �ˆR€�„$”ˆ& –‰Rƒ*,Lfa `„°‚d¶€b¬ aîfì¶‚d~" Jƒg*KJgB€�Ò€‡a”gaâ`Æ lta fÿB"HÑÄKð8ÿ&AâKg±Ëgb0ÛSCfú`" ãK×ÃÑÃ1#²‹fú&EB@+Gó·ìDea”` r azgþÚ`þòaTfø FKðHÿ&Er a`fèaýêfrB€`Ø a fÔa,fÐ)Ix&EB� a:fÂaf¾œ‰Ø†KðHÿ"H`’)IxS¬xp`)FtB€ì�a4aú)HtJNuHçÿÄ. B€B‚"lL³Àfaü`J‘faò`Ø"l@&()) Cñ *,DKéCñ,S†³Ëb$ ³ÆdJ‘fä*7Kñ»ÆbÖgB•P€B†·Éf Cë)IP` !·ÉfúѬP·ìLgB€"lL)Ѭ\0)Ѭ`B„*7)KL"WJ™"f J™"faV`Nu&lD&,@"lL¬�$B�)“¬d“ª(W‹B€)Kñ»ËdJ•g X‹2Ý»Ëfú`ì�B‘B¬L"Bal/ CB€( Að aÀ fJ�faîV`ˆaüføa^B€`ðJ*7g.B…:*4fB€0fa$`Ö*HgR€ÑÀ±Áfæ`*A›Åaøˆgÿ&SCT€fÒ &SCT€€ÿ€Ø &BCT&EETB P&EETP.STT&EET€ØVERSAdos VERSION 4.3 8403201215 BBAA>€SYS:0.& CN00LOG OFæ vLOGOFæ vOFF vBYE zLOAD ÞSTARô æSTOP"äCONTéîõå øTERMéîáôå"T^ÄDATE$âTIME%~USE#*DEFáõìôó#èARGõíåîôó&^NOARGõíåîôó&€BSTOð$RBTERí$`OPTéïîó$nNEWS'„HELP'œASSIçî(ÔCLOSå(�CHAIî/²END0JRETRù2’PROCååä2–R?6ôBATCè7 CANCåì: QUERù9€ELIMéîáôå:ˆPASS÷ïòä*VSWORD*ÒSECURE- `0ä` h`#6GùOëf'O^Oë`Iúýì/< OÜ :fø&Lù PLùð `@ÙH@@£B€9 PãˆÀü#À>'AÚ'BÞ'Cz'D'E7FøAùaÚAùaÐAù0aÆAùJNBgpNA`ðAùB˜±ùköaÌ9 g"0|èaúAëB'H:Aù 'PDAë0p#NAa¦Lë0œº„c8µÉg4<ja4'J¨`ð fa&`æ4¼@LëŒ$*a@g4¼€`ÎR„'Dœa  `´PеùkEùNuLØÿ$+vAë.HàNAfNu `öAë*Hà~NANu <ÿÿB�$+v&<€a&`ª |p!`Ø |`ô&SCTêÀ&SCTP&EET &SCT .SCT&SCT .ARG &SCTÚaä (g (g`òLè“ÉAù'C–±üg."g¶�gPH`ì³üf"H`ð'Ah'hXp#AëTNA`ª³ügôf𠫬f J«âfa`ôaÜ'@d'@êAël!@aþšAúþîaþ|Aúþþaþt'HªAúÿaþh'H¦ +âg'@zAúÿLØÿAë`& kªÑü`,*+vaþ@Aúþ†aþ0p Aë`NAfþJ#kv"«–`ÐBƒ( g fê6( ¨&BCTgüL ¨&SCTfÐ((Aù¸¨g PH±ükð`´B˜B�J«âfªB«¬`¤/ +¬R@fT@'@¬Aëva5 +vAù°¨gÚPˆ±ùkð _Nu |èpNANua< (g>a Æ`¦a*B+ØÇf/+æ <a '_æ/Gp% |NAp"Aë:NANug.7hÌg/,kª.ÿgÇ,_2(‚kÎ7AÎjÇ"+’�²¨f$+ž´¨fB«’B«¢ (gŒ (g < AèJ(f <a ä`ÿh ¨&SCT fÿ\J+ØgÿTS+Ø`ÿLaÿVÇ'h Æ`ÿ:aÿDÇ/h /hfÿ"Ç`ÿ-Mª&NOë`B-;| PaüŒCùRa Æa Èa Äy iŠMù a ZB,kª=|@þMù8J«âfšMùÇ9 g„aÈAúÖ/ a,Z&_,KCú L™?< ga ’gaþHSW`ðCúöL™a |`*Aë* ¼!|Cúè!I Cú!INBT�`ÆT�‡AëTIúøJÔ  føAëT`a–f�aZgŒ/,kª®þ,_ +~'@šJ«âgny iŠaù–g$‡aÜga<`ò‡föadf‡ga&`ðLùžÖ‹'| *af*Mùða ´`jMùóa ¨Nu ægºaêS+Šfþ¨,KGùŠva ¤ <a n` òREJECT NW <` VÚ&EETÚB‡ kªÑüP'H®LërHëjB«’Lù4ajpJAëÚNAB«¢ <aÜ,Kf GùHva 9 rg( «0001vf/+šB«~B«šMùæa€'W~'_šfˆaÂAú­/ a*T&_CùpL™a ’CúîL™a †fCúøL™a xCúÔa 6Múpa(`Ñü, €d. |`$ y tR+Ùf÷> <ÿÿ&<€a Âp0|€NAAë!kâ <`JLëæ'A’'BžB†+'FŠgNug$Aë’ < ‚0000d <a~ë’NuAë!B 0¼�!A'A’,+ŽgVgX(+²B… †J†g`R… gúE f fB(E1|€J(g f1|NCgÂa0&HC` 0|5`|6Aë <` pJAë¢NAgkpÎAë`HÐp a®f*,+Ž(+²ÄÌ„'FŽfp$NAJ«’ggðJ€NuAë& <` <>`Ø CHAIN ABORTED(CHAIN)=  =ENTER DEFAULT SYSTEM VOLUME:USER NO.=ENTER USER NO.=LëÂAë*Hà~NAf8NuIùDðg$Lù8haÌ"<$<‡g.A `(*kª-ÿgSŽ<€KëTaÖLù~`aŽ* ang ‚fЫg&a^f†/,(AëTCð`ü ü AëöR†!QÎÿüKëTB� ae {d/,kª.þf ,_ =f /fÇ \g>±ÍcÁ  fº�'M¾, AëTœˆ'F¶ JNuTTõ ,H (g<4fZ‡ kªEèP Ngú  g¦ =g ²gêJfü`â =gF`ò (Rf„ (Xfz ()frXˆÇ0+Êgf` Ça(nJ@g"$kª°nP2EòPÇJgþø±Íc0Ú`î/ $kª*$_€ü a H@aÇ`þÒ±Íc0ÀNu   <`H Nf SˆÇ`þÞü~‡ \gÿ =gþŒ !gþ¼ &gþ´4kþ¬`Ôff æg fa`JJNu/,kª.þg,_`,,_f$f fgHçþüU�aŽLß?ÇNufrÇ`jKëæB…atAëæ("<$<* +‘fB‚Aë*Hà~NBg8 áfJ«¢k’ ÆfJ«¢k„ÇgÇ` ÂfÇJNuKëTB…aAëT(`’ M/ÞfünS� Nu  oášNuB‚aðaîaì`êáš  oNu$< aìaêaè`æ'k–L™a.fÿ&(+ŽÄ'DŽJNuL™afÿ(+²„'D²(+Ž„`ÜAëH p BhNCNu +vLëh�B„ kª(þgÄ69 jg69 n` g69 l*+šAëHàü7|`~pAëæBhJNDNuHëæpAëæ!|+‘fB¨NDLëæJ€NuaH@a < aNuáXÀáXÀÅNu  fSˆB†`4k`ê  gö,+¾œˆ'F¶'HºNuRˆ  gøNu$/".âAî,H<ü@<Â<Ã,ÁB^$< ,üPRIV,Â,Û,Û<ÛB^Bž&_NCNuB.Ù?2<a¼g f€X+Ùgx |ôpNAAëNC`Þ|ÿìÙ"<$<Lú8üaÚAë*Hà~NBf>*(AëSÚˆ"<$<Aë*Hà~NBfR+Ùk¶fªMùÄaú´gžÇ7|Bk7_NCNuJffÀJ€Nug g'k–NuLДªj‚&\S�’’NuÔ© ‚&\e‚&\R�Ò‘"Á"‚Nuڋ؋֋Nu"+va f&0¼À`Aù±ùj ²¨gPˆ`îJ�NuÇÇ&<€aÈ+‘g vB‚2<aýFJ«¢f,KGù Ôvaêìgf Mùðaü< <aópNAACCOUNT OWÇ`önalJ�fø <`üaZÁ²«’f <`û†�Bƒp aþ PgNu < J+f < aJ�gÖgø€Ç`ø~'HAë`ýaüZ" � g( �ALL g.áš .g( @c Zc <X�`ûp"+’f <`ìB�aýBg &g.$<0000aûî ‚0000f $+žf$+v´«vgJ«šgX�`ðÂ/a""$gØ`à/J�gAë�HÐpagP�Nu  f _Nu <=aúæ`äAëHÐNAg$Aë fúf ‚0000d€ J+ÙgúP`R+ÙJ€NuB�B‚`>aþþf|� <ÿÿ&<€J�f,J‚g ´«vg"<&SCTpa”f <aþ¼B�`B«’B«žaêè0<aÿrf.J‚g´«vg <J+f <aþ‚`R+ØaêªJ�gÄaê¢NuB�$+v`aþnpaÿ*gNu < J+f < aþBJ�gÜNuKëzMë-]J]=] -] -UNuaâ/ az&_/,kª-@òj ,_ <4`Œ,_fî€pf <5aùŽ`HJ«âf €`kdKëz*îJ]:î *î *îL¹#äaúbf6J«âf4<aúRf&'kzâ/,kª.þf",_a&/,kª .ò,_Nu <6aù0<ÿÿNu,_`Þ€a:"+âLë|vAëTHÐ~Lë’�Hè <aúTNua <`úF*kª2-þKë|'Mòpg€@R€ cîüÿ'MöNu/,kªîþ`h/,kª®þ`Z$H  c¢ ;fJaüJk8fNf, d&Jg"/,kªf2.þÁ`2.þ�=Aþ,_`À <7`÷Ì.þg,_Nu,_`ÿ@/,kª`æagNu‡føfòMù%faõ`‡gÇNuaL € nÒáˆ& /fÈa6 €n¼ /f¶a" €Pm¨€lHCЃH@a¢/AëpJNA'_`rpJ`p ENTER DATE (MM/DD/YR)=atfZ‡fTfNMù%ÞaôȇgÇNua´ €nÒÀü<& :fÆaœ €g6À`âJføB$ // ,kªCîO”‰"_,_µë®eÚÇ`JgÀR`°SfÆ`ªB|  /,kªRŽ�ŽSŽ@,_JfNu <`÷8,_x$kª¸n6KëTü\ apáXÀáXÀü:B@2@MòP/Baöaö(R„`Ƈg¬ <`õp,KGù'’v`÷ŽNEWS NWMù(Naõ\,KGù KîTJgD›fø| ÿÿ Z€€&@ / IîT�Œ(_"‚ü HAJAgü R`ì/ Iî„»ÌkP(_S�/ &Naõr,K&_Jf¢&NMù(hBaôèAë < ÀBX À À üHELP À0¼LOaõÎf"+æ`ðtNu(_`ÿfSESSION CONTROL COMMANDS:(ENTRY OF LOWER CASE LETTERS OPTIONAL)algJ bD g fgÇgÇ`ô2<BBaõ‡fˆNua(g c <9`óª  f <:`î/,kª-Cò,_aú/ až&_j <4`Ìgg0f'k–`" <)`ª/,kªîò,_gÂg¼ ;g\B‚aôDaô@aô <;`ÿ0$H/ a¾&_kê OfägÞ4 kª&(òƒ`& g fÂ4g kª(òg‚@2<@aó¼fg ,+²Æ'F²NuEREWERPWPREWPRPWEWPWERPR �-:]_f +–°¨J—NuJ«šf <aôy iŠaèfDJgaÂLù8-2Ö‹a gaç¾`&Hç|Lù?+èaõžHë?Lß>AëNBgaò8Aë0¼Bh1|NCNuJ«šfç¼y iŠLù8->Ö‹a¾gaç\Nu KGèÚ/&Ú/&ÒLùžÖˆ!|*/ &Haï0,_--fÆNu KGè"K×ü(Eù+Ð'"·Éfú#hâ&HAëNCNuaÔg f8 |épNAaâ`ê'kšæLù+ÐaôÂAë.HàþNBg Éf <1añ\`ÿCëêNu@ PRIV ACCOUNT PWÿ‰æõ‰æõ+ÙEJ€fè «0001vfä gŠEÙfHaÿ*fæ8aþ‚JgjLù8-&Ö‹a`f AëTaýîgRCëêMëæÝü³Îg@³gøaŽ`ÌJ«Úg(Lù8-Ö‹a&fAëTaý´gCëÚ±‰gab`Ö±‰fø+Ùf‚NuLù,îAë&Hà|NBLù,ö(|*Ú†Aë&Hà|NBf$C*(B2PR…¼…döB€Nu0 Æf Hç~aåFLß~S+ŠgåXNuT-J-\T-v-Œê-Ž-Ÿê-^-tENTER SECURITY WORDENTER NEW SECURITY WORDENTER EXISTING PASSWORDENTER NEW PASSWORDJ«šfäîMù.ZaïPLù.˜Ü‹aMù.„aMù.ŒaLù.´Ö‹'|*`ìl+Ùé@ÙBaìlg+Ù 0@TKëVaîÒ+T 4dÞ 0eØ 2d+Ùü€@ÙaîŽNuaüð/aüx gÚ gÔJŸaî¤`ÿHLEVELS ARE: 0/NONE,1/SWORD,2/PWORD,3/BOTHUSER=0:USER NOT 0:&EETÙÙÙ&EETÙ,K2<aðfT'kšTLù/2Ö‹Ø‹Aë.HàþNBf6AëtpJNAEëÚañCë|añCëTR©0Lù/JÖ‹Ø‹Aë.HàþNBNu‰T“‰T“faèÇaŠgNu¸9 pbtva–g fí Å`Ì Å'EÔ,k®+ÐBfBf'N®aaóZ=|CF/ a ê&_ @ügìaðj <aì¸`lHçÿÿCùpaíòLßÿÿÇHç@€CùXaíÄëµLßJfH«‘/,kª®ÿ,_Ç  gažaö`f BkÊBkÌBkÎNuÇCùpaí†,k®"kªÓüP½ÉgDXŽ'N®<ažëµë‘gaì`¶*+Ô…'EÔf¦´+ÐgžfZfïÂCùXaí뵇ë‘/,kªîÿ,_BkЇ‡gÿ\‡Mù7`ì,+Ž*+Ôx f fNuR„  eîDDNu"HAë1| f1|€0¼CDB(B¨B¨ NC INu,k®]ŽB€/,kª.ÐŽ,_½ÀeNuÇX� <`ëvfaÌaÿtgNu¸9 pb^va‚g fêð Å'EÔ`Ò Å'EÔ,k®gÄ+Ðaa2=f7CÊa"='N®¶nd¢ÇÇNuÇ <`êòf^fÿ~,k®+а.fè6¶ncFRn.f7nÊÇCùpaë–.<AëaþÔ ëµ ë‘Nu‡‡,k®ZŽ'N®2<*+Ô…'EÔaëRNuÇÇ«‘/,kª®ÿ,_gNu <@aê4`ýˆf <2`éÀJB‚aê´ *gl @güz &gzaêœ BENgd BIFgP BELg(gNu BRXgx BRAgx BRDgx BR?gÂaêX ‚ABTg" ‚FORgþ6`æšg6NuÇ*k¾`é2Ç`é^gNuaéRfôMùaç `âf`é&a><!<&B†< Ba°e f†`ôa`ò†NutB�¼dºg¸g ~gìr`èÄNuaögJŸNuaða¦g+ÐëÑÇNu+ЫчNu < `ÿHaé| QfÌa¸a"Ha  f "gÈNÕ³gîNÕ  g¦ "fòNuaŒaÿBf¨NÕ +Ðg¬R+ÐKúÿŠaé* Cgÿx SgÔ Eg–aÿZ Rfb,KaZ (gŠ =gt >gJ g* (=gaîJ€f ¶Rnÿ4NÕ`ÿ.aØJ€f ¶RlðNÕaÊJ€fþt¶RfàNÕ (=ga´J€fæ¶RmÊNÕa¤J€fضRo¼NÕa˜J€fʶRg®NÕaTkÄfgžNÕf˜NÕaèf ‚SEfä¨+ÐkÑ+Ð+ÑgÇNu‡Nuaè: ‚DIFg ‚DFORgü�`äp+ЫÑS+Ðk`À <!`ýÆ,KGîÊ`,KGîÌ`,KGîÎ$Ka" (fa¼k6gÄ`„6„&NNu =f aÔk>J€fê6ƒ&NNuRˆ Xg Ag DgJŸ`òEîÊ` EîÌ`EîÎaºNu RfÔaÆ +g@ -g* &g !g`¶ajJ€f„0€C`a\J€fv0ÀC` aPJ€fj0�C6€&NNua@J€fZ0ÐC`îa ‚ )f$aP =f Cja@8 0fNu 1fJNu6<ÿÿNuRˆa LJ�k B€ ƒjJ�Nu <3Nu&N`üŒRˆBA  g  gî4NuJŸ <"`üh&N`ò <#AëÊ`çhEND CHAINg <$`åxB«ÆLù;a>a('y;>(7kœ,Lù;$:9 naâúfæLù ¨aâêfÆLù ÀaâÚf¶Kè`'MüLù ÜaâÂfžÑü'HøLù Œaâ¨f„ kºaëb=|CF/ aò&_"Haè(kdL¹XaôfTaæ fH8<aøf< I(ÿÿ  b&$aøLù;ap*<<&'kÆ*a@‡ A€gAë <*`åL <-aãl <ÿÿ&<€aá <.AëÂ`ã® kª<(üHE8:< aàö‡faÖR`ôNu/Aë$.HG6.HD8HD.Nua6fLù;aÖ*<<¼a¬‡faŽfÜNufø <'`ä²  g$<0000aãÖ ‚0000f$+Æg" ‚0ALLfB‚'B*B†<+œ/,kª-Fú,_Nu —9‚gàJŸ <&`âˆaªLù;aÿP*<<Äaÿ$‡fØafàNu kª!Aò <,f <+f <* f <,HëTAëTaãú/,kª,.ò,_B‚ÇBFJ†NuJ«šfØaè|/ a&_kgB†'F*<+ kª!Fú`ÿV <(`áÐv,+Žg RC Cfô6<ÿNuLëÂAë0ÄHÐ"<taãg /rB‚aâö Nu#&EET€$< &BCT€&EET@€;^p Aù;àNA&Hp Aù;ðNA'HªOë`aÑüLërLëÂHër'Bd'BêB«ÆBkÊBkÌBkÎ.<¡,kª=kÒþ®ÿ'|`ŽaçDL¹#äaâ"fÓð`ÖÞ&BCT .SCT&BCT .ARGaÓüaÓx,Lù?=z/aýR _$(aÑ4`ÒþaÓÖLè "k¤,o"<€` �ÿÿÁ"Á"³ùkCù'I¤,'B*Lù?=’/aüö _`¢B�$(/ a†f&_`Ò˜gp/ &o‘«œ&_Áfà‚C6�`ÚaÓPLè J‚g|`L/ aì&_`œ/ aäg4JAk0&<€/" &o/B�paÐpgø"<&BCTpaÐb&_"A€6�&_Aë:`ÿZGù·ùj´«gP‹`îJAg ²kgB�B‚NuB�2Nu0( çˆGùGó·ùjÜJAg ²kgP‹`êJ«gö €æˆR€H@0"$+Nu#&SCT€$¦#&SCT€$¸ Hç8 .gJ4k`ÊÀ6<ÿþ` ƒ€g ƒ'cÀ` =C ` À`À4<aX6< Gî at4<aD n& f| 6< GîaR4<a" (g6<Gîa84<a (fœBBBC4kJ )gg> Pn8AéK†AB`Ø4Bÿg BnÀ BcÀ=C `HÀÀÀBÿ BcÀ`,Rˆ6<Gîa¬4<a|$< Gî &Â&Â&Â&Â6ÂBn $B|gÀ$fÀ fÀ fÀ fÀ fÀ4B|gÀg :f€J€Lß<NuJ€jÀX�`’QBgQBÀ`ÀBgÀNu4HB€€»Èg64k.f(f @À`< *fÀÁSCn΀€`$HB´CfÀ`< (*ÿþf<*`ÂSCnúNuHçB€B�Iúj ,gø4k6 -fÀ`æg0ƒgÁ` =fRŠa`  f@` Lß NuBƒ:< &J $gN4gˆ`&4k&gã‹/å‹ÖŸ�Ö�SEnÞ‚4jø  f"+ÿþNu:<4käfgÌ_�郆�SEnÜ`º€üê`"B€0€ü|?B®@.ÊfV .Ö @g @g-|@ad`=|,latJn<?B†B‡|?aûØ> .?g nBfPR®àSGfÖ`F-nà¬-nä°Aî¬0< NAf.=|<0<NAAî40<6NAg Aø„0<5NA |0<%NAAî¾0< NA~#üÿÿÿÿHtaZAîÌCîšajAîÚCî¬a` .ÖIî±aAî–-H†Aî¶-HŠAîzNBJ‡gAúøè-H†Aúù-HŠAîzNBAúøšNC`ÿnCúø¸-nÐT-YPkAîHNCfòNu2< c {c< ÀSAfèNué˜0 :m^�ÁSBfæNuP"PDSRV4: UNABLE TO LOAD TASKDUMP.SY $ $ FROM ** EMH ERROR # $ USR SVC IOS FHS LDR TFT`TVT’TÌU’T>U>TLT‚TtTdT2ABCIKLTWXYZD˜–€B@† 'èd €PâQY@ ERRORMSGSYADIÿB¹R.:üD-|j|NC|NC .à nä`ö#üPjR2` 5PazYƒ`ÿJ05Pad`ð5PaR`æKîäü$ 5Pa"T…`ü$ 5Pa`ÄB@ü$5Paú`´¹R6g¼0|4B…Kúýš(aR õ@aˆR„S…nòal]ƒ`þÊAúýhKîf2ÐAîø!nì .ð�®ìR€ €`b:!@!MpNAf0Aîø hÑÍ ` »ÈdJjöS…fòÝk »Èdþa`ðSŒ`ÿ 0.à@ ÐEH@05P( GîßAúü˜/(!KGî¸a!_J€f"(ÛaÊS�fö (a¬&D`þ¼&D`þäU‹pB… 9c é�ŠQÈÿê]ƒoHùR<Ö‹Rƒþ&C`Gúû aªf�&( \f Sƒg KghSƒfê&h &(ü ü  …g … fý .à€€füþAî˜0¼1|nÍ|NCfAîp0¼€|NC#èRDùR6Aî˜1|NCfÌ`üªAúûr!K &€NBNuà˜4<`4<é˜0 :m^€ÀSBfèNuAúû.H€`AúûHÀ`Aúû J€jü-D€r `Â4��eRBÁ`ôИJ�jBJ�f J�kBÂNuJ�kÒB`ÐtB… 9n 0lR‹J…fgËü €Ú€SBfÚNuR9QfR9QfR9QfR9QfR9QfR9QfR9QfR9QfR9QfR9QfR9QfR9QfR9Qf#ÀR2Iúùèaÿ :ú¦H@IúùÞaþúazaV:ùÈIúùÄaÿCúøÀAúù¬raøAúøN|0¼!|PF S‰!INBB9Qf`ü#üÿÿÿÿHta÷Èfˆ`ú¾.à€xâ cB€Cúùn#ñPdNu .àIúøFD04.IOS3CRD1ÿÿÿóMgæFD05.IOS3CRD1ÿÿÿóMhŽFD10.IOS3CFD1ÿÿÿóMi6FD11.IOS3CFD1ÿÿÿóMNULLÿÿ:j.CPRTRþxøáqj\SUP1þb÷Œ0jŠ CMPS`þcSUP1÷Œ0j¸ CMP1aþcSUP1÷Œ0jæCRD1þSÿÿÿ�ÿÿƒÿÿkCFD1þSÿÿþ�ÿÿƒÿÿ` IOSG[.|lZ#ü[kJ"|jJ‘gH |kf1i!iLé? Hè? (g (f(p ¼!UDRáŠ]‚„ü 1BB¸ 0$:²g2 BpN@`aê!È 0aEè ŠáŠQ‚„üÄüÔŠ!B1ú„ 4!ü –aºJ¸ fœB¸ GúÌCë <€pN@`ad4+;B,g +x  !Í EëpB�JjgR�EêQÈÿòGë(m6AIì p(ÛQÈÿü “!TCBg†aœ.x 2<ÀaD/:ªNuHVMù,¯@îFü'MîHÖ?ÿ-_8-O<2<¢a`ø,áŽ,FÝÈB†-½ÈnúNu0<`0<�F虀2<é™"x :Cé2�A02�2€@02€Nua&a°‹fa†a|°�faÿ|Cí!É aÂazNuB€AúH°Pgaÿ^B‡EЇ Eê Rÿÿfð‡#à�*(B(:ƺ„c*„ÿBKúûû" B*AMúA,Bœ�°º–f†` (<�B*DB†º„baþöNu hÿÿ g,a2 ÿfaN`aðJga$`a@°‹ga¾a`Ì3|ÿÿ Nu~Aè Cé ((„ÿB*(B*DB†º„baþ�Nu•ÊB�B‚BƒIÕKõhHz ? .gJ4k`ÊÀ6<ÿþ` ƒ€g ƒ'cÀ` =C ` À`À4<aX6< Gî at4<aD n& f|  6< GîaR4<a" (g6<Gîa84<a (fœBBBC4kJ )gg> Pn8AéK†AB`Ø4Bÿg BnÀ BcÀ=C `HÀÀÀBÿ BcÀ`,Rˆ6<Gîa¬4<a|$< Gî &Â&Â&Â&Â6ÂBn $B|gÀ$fÀ fÀ fÀ fÀ fÀ4B|gÀg :f€J€Lß<NuJ€jÀX�`’QBgQBÀ`ÀBgÀNu4HB€€»Èg64k.f(f @À`< *fÀÁSCn΀€`$HB´CfÀ`< (*ÿþf<*`ÂSCnúNu/ &HIú B€B�"@$@JFf <@@@(_Nua¬J€j €€`šR‹·Èf€@ ;g6  g0a°"H&HazJ€j€€`j ,f€`äR‹·Èf "|€@  g> ;g€  `6$H&HaVk nö€€€`  g ,gâ`êR‹·Èf $|€@(_Nua k0fö #gð€ NuSF4NuJFfò€ÀNu  gNuaê`ôHçB€B�Iú ,gø4k6 -fÀ`æg0ƒgÁ` =fRŠa`  f@` Lß NuBƒ:< &J $gN4gˆ`&4k&gã‹/å‹ÖŸ�Ö�SEnÞ‚4jø  f"+ÿþNu:<4käfgÌ_�郆�SEnÜ`ºHç~|/U�AúêpNAg fÐB€`Ê*H>¨þ o&($h ƒf  fSƒ!C hCò8¼ TˆR‰!QËÿü"JB�B€ ae {d -þf \gš±ÉcöÁ  fÐ oS‰& –¨ !CH瀀AúdpNALßf0/f(/LÐHçþ O ¼!|!INBßü T� _Lß>~JNu .ARG.ARG&H 0e 9c(EíP Kgú  gL =g ²gìJfü`ä =g`ò/a04 JBg&EÕ´n 2 Eò PJgþî±ÉcÚ`ò <`ÿ < KSˆ`þî€üê`"B€0€ü�126Œ00000025…T0GTFRML�EQU†37”GET�MULTIPLE�BUFFERS�FROM�FREE�Q2�127Œ00000026…T0PTFRBF�EQU†38”PUT�BUFFER�IN�FREE�Q<�128Œ00000027…T0PTFRML�EQU†39”PUT�MULTIPLE�BUFFERS�IN�FREE�Q1�129Œ00000028…T0PTXMQ‚EQU†40”PUT�BUFFER�ON�XMIT�Q3�130Œ00000029…T0GTUSQ‚EQU†41”GET�BUFFER�FROM�USER�Q1�131Œ0000002A…T0PTUSQ‚EQU†42”PUT�BUFFER�ON�USER�Q�132™*=�133™*„THE�FOLLOWING�EQU'S�DEFINE�ENTRIES�TO�SUBROUTINES�ONLY5�134™*ˆTRAP�0�ENTRIES�FOR�EXTERNAL�CALLS�DO�NOT�EXIST�135™*C�136Œ00000003…T0RYEXT1�EQU†3•READY�ROUTINE�ENTRY�-�FROM�TRAP�1�EXIT>�137Œ00000003…T0RYEXIR�EQU†3•READY�ROUTINE�ENTRY�-�FROM�EXITIRJ�138Œ00000003…T0RYCINT�EQU†3•READY�ROUTINE�ENTRY�-�FROM�COMMON�INT�HANDLERG�139Œ00000003…T0RYTINT�EQU†3•READY�ROUTINE�ENTRY�-�FROM�TIMER�INTERRUPTI�140Œ00000003…T0RYACK‚EQU†3•READY�ROUTINE�ENTRY�-�FROM�SERVER�ACKNOWLEDGEB�141Œ00000003…T0RYRELQ�EQU†3•READY�ROUTINE�ENTRY�-�FROM�RELINQUISHI�142Œ00000003…T0RYXMON�EQU†3•READY�ROUTINE�ENTRY�-�FROM�RETURN�FROM�EXMONB�143Œ00000003…T0RYSTRT�EQU†3•READY�ROUTINE�ENTRY�-�FROM�START�TASKM�144Œ00000003…T0RYWAKE�EQU†3•READY�ROUTINE�ENTRY�-�FROM�WAKEUP�FOLLOWING�WAIT LMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGEƒ5(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• I�145Œ00000003…T0RYASR‚EQU†3•READY�ROUTINE�ENTRY�-�FROM�GO�TO�ASR�(ASRINT)K�146Œ00000003…T0RYDLAY�EQU†3•READY�ROUTINE�ENTRY�-�FROM�RESTART�AFTER�DELAY LMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGEƒ6(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• �395™*�396™*ˆTASK�CONTROL�BLOCK�397™*�398™*7�399™*†USE�ASƒNAME(AX)‚WHERE�AX=ADDRESS�OF�START�OF�TCB6�400™*‰WHERE‚AX�IS�THE�ADDRESS�OF�THE�START�OF�THE�TCB'�401™*‰AND�NAME�IS�ONE�OF�THE�FOLLOWING�402™*�403¢OFFSETƒ0•START�AT�ZERO9�404ƒ00000000�00000004…TCB†DS.L…1•'!TCB'‚DUMP�EYE�CATCHER:�405ƒ00000004�00000004…TCBALLƒDS.L…1•LINK�FOR�ALL�TCB�LISTC�406ƒ00000008�00000004…TCBGROUP�DS.L…1•LINK�FOR�TCB-TH IS-GROUP�LIST:�407ƒ0000000C�00000004…TCBREADY�DS.L…1•LINK�FOR�READY�LIST6�408ƒ00000010�00000004…TCBNAME‚DS.L…1•4-BYTE�TASK�NAME3�409ƒ00000014�00000004…TCBSESSN�DS.L…1•SESSION�CODED�410ƒ00000018�00000008…TCBMONƒDS.L…2•MONITOR�TASKNAME�+�SESSION�CODEB�411ƒ00000020�00000004…TCBSEMƒDS.L…1•LINK�TO�NEXT�SEMAPHORE�WAITER;�412ƒ00000024�00000001…TCBCPRI‚DS.B…1•CURRENT�TASK�PRIORITY9�413ƒ00000025�00000001…TCBLPRI‚DS.B…1•TASK�LIMIT�PRIORITYO�414ƒ00000026�00000001…TCBRPRI‚DS.B…1•PRIORITY�USED�TO�ENTER�TASK�IN�READY�LIST>�415ƒ00000027�00000001…TCBIOCNT�DS.B…1•COUNT�OF�PENDING�INPUTS5�416ƒ00000028�00000002…TCBATTR‚DS.W…1•TASK�ATTRIBUTESK�417Œ00000029…TCBATTI‚EQU†TCBATTR+1�2ND�BYTE�OF�ATTRIBUTES�(INTERNAL�FLAGS)1�418ƒ0000002A�00000002…TCBABORT�DS.W…1•ABORT�CODE9�419ƒ0000002C�00000004…TCBSTATE�DS.L…1•CURRENT�TASK�STATE<�420Œ0000002D…TCBSTAT2�EQU†TCBSTATE+1Œ2ND�BYTE�OF�STATE�WORD4�421ƒ00000030�00000006…TCBTSTSM�DS.W…3•TST�SEMAPHOREB�422ƒ00000036�00000004…TCBTSTƒDS.L…1•POINTER�TO�TASK�SEGMENT�TABLE4�423ƒ0000003A�00000006…TCBASQSM�DS.W…3•ASQ�SEMAPHORE3�424ƒ00000040�00000004…TCBASQƒDS.L…1•POINTER�TO�ASQH�425ƒ00000044�00000004…TCBCHAN‚DS.L…1•LINK�TO�NEXT�CHANNEL�CONTROL�BLOCKG�426ƒ00000048�00000004…TCBEVECT�DS.L…1•ADDRESS�OF�TASK�EXCEPTION�VECTORB�427ƒ0000004C�00000004…TCBTVECT�DS.L…1•ADDRESS�OF�TASK�TRAP�VECTOR�428™*5�429ƒ00000050�00000004ŽDS.L…1•RESERVED�FOR�FUTURE�USEM�430ƒ00000054�00000004…TCBNAUƒDS.L…1•ADDRESS�OF�NAT�ENTRY�IF�THIS�TASK�IS�NAUR�431ƒ00000058�00000004…TCBDLAY‚DS.L…1•ADDRESS�OF�DELAY�ENTRY�IN�PERIODIC�ACT�TABLEF�432ƒ0000005C�00000002…TCBUPD0‚DS.W…1•SAVE�UPPER�1/2�OF�D0�ON�TRAP�1'SF�433ƒ0000005E�00000002…TCBISRS‚DS.W…1•ISR�ERROR�CODE�-�SAVE�FOR�WAKEUP5�434ƒ00000060�0000000CŽDS.L…3•RESERVED�FOR�FUTURE�USE?�435ƒ0000006C�00000004…TCBENTRY�DS.L…1•TASK�INITIAL�ENTRY�POINTF�436ƒ00000070�00000002…TCBUSER‚DS.W…1•USER�NUMBER�ASSOCIATED�WITH�TASK5�437ƒ00000072�00000001…TCBSSPƒDS.B…1•EXEC�STACK�DEPTHM�438ƒ00000073�00000001…TCBUTRP‚DS.B…1•USER�TRAP�NUMBER�-�SET�WHEN�TRAP�OCCURS�439™*�440™*†SAVE�AREAS�441™*5�442ƒ00000074�00000020…TCBXREGS�DS.L…8•EXEC�REGISTERS5�443ƒ00000094�00000004…TCBXA0ƒDS.L…1•EXEX�REGISTER�A0�444ƒ00000098�00000018ŽDS.L…6*�445Œ000000B0…TCBSAFE‚EQU†*•EXEC�REGISTERSO�446ƒ000000B0�00000004…TCBATSK‚DS.L…1•TASK�NAME�OF�TASK�THAT�CAUSED�TERMINATIONM�447ƒ000000B4�00000004…TCBASES‚DS.L…1•SESSION�OF�TASK�THAT�CAUSED�TERMINATIONR�448ƒ000000B8�00000008…TCBBERR‚DS.L…2•INFO�PLACED�ON�STACK�BY�BUS�OR�ADDRESS�ERROR�449™*‰ORG‚$FA!�450ƒ000000C0�0000003AŽDS.B…$FA-*:�451ƒ000000FA�00000002…TCBSR„DS.W…1•USER'S�STATUS�REGISTER6�452Œ000000FB…TCBCC„EQU†TCBSR+1�USER'S�CONDITION�CODES LMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGEƒ7(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• :�453ƒ000000FC�00000004…TCBPC„DS.L…1•USER'S�PROGRAM�COUNTER&�454Œ00000050…TCBROOM‚EQU†$100-TCBSAFE�455™*-�456ƒ00000100�00000004…TCBD0„DS.L…1•USER'S�D0!�457Œ00000102…TCBRTCD‚EQU†TCBD0+2/�458ƒ00000104�0000001CŽDS.L…7•USER'S�D1�THRU�D7-�459ƒ00000120�00000004…TCBA0„DS.L…1•USER'S�A05�460ƒ00000124�00000014…TCBA1„DS.L…5•USER'S�A1�THRU�A5-�461ƒ00000138�00000004…TCBA6„DS.L…1•USER'S�A6.�462ƒ0000013C�00000004…TCBUSPƒDS.L…1•USER'S�A7�463™*#�464™*‡EXCEPTION�MONITOR�PARAMETERS�465™*@�466ƒ00000140�00000004…TCBEXMƒDS.L…1•EXCEPTION�MONITOR�TASK�NAME?�467ƒ00000144�00000004…TCBEXMS‚DS.L…1•EXCEPTION�MONITOR�SESSION=�468ƒ00000148�00000004…TCBEMMSK�DS.L…1•EXCEPTION�MONITOR�MASKC�469ƒ0000014C�00000004…TCBEVMSK�DS.L…1•EXCEPTION�MONITOR�VALUE�MASKG�470ƒ00000150�00000004…TCBEVLOC�DS.L…1•EXCEPTION�MONITOR�VALUE�LOCATION>�471ƒ00000154�00000004…TCBEVALU�DS.L…1•EXCEPTION�MONITOR�VALUEQ�472ƒ00000158�00000004…TCBECNT‚DS.L…1•EXCEPTION�MONITOR�MAX�COUNT�OF�INSTRUCTIONS�473ƒ0000015C�00000004ŽDS.L…1�474™*7�475Œ00000160…TSTBEGIN�EQU†*•OFFSET�TO�BEGINNING�OF�TST�476™*�477™*‰TCBATTR�BIT�DEFINITIONS�478™*)�479Œ0000000F…TSKASYST�E QU†15”SYSTEM�TASK5�480Œ0000000E…TSKAMRES�EQU†14”TASK�IS�MEMORY�RESIDENTN�481Œ0000000D…TSKACRIT�EQU†13”TASK�IS�CRITICAL�TO�OS�-�CRASH�SYSTEM�IF�ABORTEDK�482Œ0000000B…TSKARELO�EQU†11”TASK�IS�RELOCATEABLE�(NO�MMU)�-�CONVERT�ENTRY<�483Œ00000007…TSKIUSEM�EQU†7•TASK�HAS�CREATED�USER�SEMAPHORE@�484Œ00000006…TSKIEXM‚EQU†6•TASK�CONTROLLED�BY�EXCEPTION�MONITORG�485Œ00000005…TSKIEXMT�EQU†5•TASK�IS�EXCEPTION�MONITOR�FOR�ANOTHER�TASK:�486Œ00000004…TSKIEVCT�EQU†4•TASK�HAS�OWN�EXCEPTION�VECTOR5�487Œ00000003…TSKITVCT�EQU†3•TASK�HAS�OWN�TRAP�VECTORL�488Œ00000002…TSKILAST�EQU†2•TASK�IS�LAST�TASK�IN�SESSION�(SET�ONLY�BY�TERM)-�489Œ00000001…TSKIABRT�EQU†1•TASK�WAS�ABORTED9�490Œ00000000…TSKIUVCT�EQU†0•TASK�HAS�CLAIMED�USER�VECTOR�491™*�492™*‰TCBSTATE�BIT�DEFINITIONS�493™*-�494Œ0000000F…TSKSDORM�EQU†15”TASK�IS�DORMANT-�495Œ0000000E…TSKSBLCK�EQU†14”TASK�IS�BLOCKED?�496Œ0000000D…TSKSSMWT�EQU†13”TASK�IS�BLOCKED�ON�EXEC�SEMAPHORE7�497Œ0000000C…TSKSEVWT�EQU†12”TASK�IS�WAITING�FOR�EVENTM�498Œ0000000B…TSKSAKWT�EQU†11”TASK�IS�WAITING�FOR�SERVICE�REQ�ACKNOWLEDGEMENTD�499Œ0000000A…TSKSWTEM�EQU†10”TASK�IS�WAITING�FOR�COMMAND�FROM�EXMON.�500Œ00000009…TSKSSUSP�EQU†9•TASK�IS�SUSPENDED�501™*9�502Œ00000007…TSK2TRMP�EQU†7•TASK�HAS�PENDING�TERMINATION5�503Œ00000006…TSK2RTEX�EQU†6•TASK�WILL�RETURN�TO�EXEC3�504Œ00000005…TSK2EVWK�EQU†5•TASK�IS�HEADED�FOR�ASR2�505Œ00000004…TSK2NRDY�EQU†4•TASK�IS�ON�READY�LIST4�506Œ00000003…TSK2WKWT�EQU†3•TASK�HAS�PENDING�WAKEUPN�507Œ00000002…TSK2ACK2�EQU†2•TERM�MESSAGE�TO�SERVER�SENT�WHILE�ACK�OUTSTANDING�508™*=�509Œ0000FF00…TSKSWMSK�EQU†$FF00‘MASK�OF�ALL�TASK�WAIT�STATES�510™* LMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGEƒ8(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• �511™*…TCBEMMSK�BIT�DEFINITIONS�512™*0�513Œ00000001…TEMTRAP1�EQU†1•TRAP�1�IS�MONITORED4�514Œ00000010…TEMBUSER�EQU†16”BUS�ERROR�IS�MONITORED8�515Œ00000011…TEMADDER�EQU†17”ADDRESS�ERROR�IS�MONITORED>�516Œ00000012…TEMILLEG�EQU†18”ILLEGAL�INSTRUCTION�IS�MONITORED5�517Œ00000013…TEMZDIV‚EQU†19”ZERO�DIVIDE�IS�MONITORED8�518Œ00000014…TEMCHKƒEQU†20”CHK�INSTRUCTION�IS�MONITORED<�519Œ00000015…TEMTRAPV�EQU†21”TRAPV�INSTRUCTION�IS�MONITORED=�520Œ00000016…TEMPRIV‚EQU†22”PRIVILEGE�VIOLATION�IS�MONITORED4�521Œ00000017…TEML1010�EQU†23”LINE�1010�IS�MONITORED4�522Œ00000018…TEML1111�EQU†24”LINE�1111�IS�MONITORED�523™*;�524Œ0000001B…TEMMCNT‚EQU†27”MAX�INSTRUCTION�COUNT�SUPPLIEDK�525Œ0000001C…TEMTRAC‚EQU†28”SINGLE�INSTRUCTION�TRACE�REQUESTED�(IF�VCHG=0)?�526Œ0000001C…TEMVEQU‚EQU†28”VALUE�=�TEST�REQUESTED�(IF�VCHG=1)8�527Œ0000001D…TEMVCHG‚EQU†29”VALUE�CHANGE�TEST�REQUESTED LMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGEƒ9(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• "�530™*�CHANNEL�CONTROL�BLOCK�(CCB)I�531™*ƒCONTAINS�CHANNEL�DESCRIPTION�AND�DATA�AREAS�FOR�DEVICE�INDEPENDENT�532™*ƒCMR�PORTION.�533™*�534™*M�535™*�CHANNEL�MANAGEMENT�DATA�AREA�*****************************************�536™* �537¢OFFSETƒ0�538™*5�539ƒ00000000�00000004ŽDS.B…4•'!CCB'�DUMP�EYE�CATCHERD�540ƒ00000004�00000004…CCBALLƒDS.B…4•ALL�LINK�FOR�CCB�CHAIN�IN�ORDER�541™*¨OF�ALLOCATIONF�542ƒ00000008�00000004…CCBPOLL‚DS.B…4•LINK�TO�NEXT�CCB�FOR�THIS�VECTORL�543ƒ0000000C�00000004…CCBTLNK‚DS.B…4•LINK�TO�NEXT�CCB�ATTACHED�TO�SAME�TASKX�544ƒ00000010�00000004…CCBSUBƒDS.B…4•LINK�TO�CCB�OF�NEXT�SUBORDINATE�CHANNEL�(MEANINGFUL-�545™*§ONLY�IF�CCBSTR�OPTION�CCBFGSUP�IS�SET)�546™*O�547™*�THE�FOLLOWING�24�BYTES�MUST�BE�CONTIGUOUS�IN�THE�CCB�(LOAD�WITH�MOVEM.L)?�548ƒ00000014�00000004…CCBMNEM‚DS.B…4•MNEMONIC�FOR�THIS�CHANNEL2�549ƒ00000018�00000001…CCBTYPE‚DS.B…1•CHANNEL�TYPE=�550ƒ00000019�00000001…CCBCMCT‚DS.B…1•RESERVED�(USED�BY�CHPI)H�551ƒ0000001A�00000004…CCBUSER‚DS.B…4•I/O�HANDLER�SERVICE�VECTOR�ADDRESSC�552ƒ0000001E�00000004…CCBRTNI‚DS.B…4•INTERRUPT�ENTRY�POINT�ADDRESSD�553ƒ00000022�00000004…CCBCHBƒDS.B…4•BASE�OF�MEMORY�MAPPED�I/O�SPACEU�554ƒ00000026�00000002…CCBMMEƒDS.B…2•0-R EL�NUMBER�OF�CONSEC�BYTES�IN�MEM�MAPPED�SPACE=�555ƒ00000028�00000001…CCBVECT‚DS.B…1•INTERRUPT�VECTOR�NUMBERQ�556ƒ00000029�00000001…CCBPPRIO�DS.B…1•POLLING�PRIORITY�(HARDWARE�INTERRUPT�PRIO)H�557ƒ0000002A�00000001…CCBSPRIO�DS.B…1•SOFTWARE�PRIO�(POSITION�IN�CHAIN)E�558ƒ0000002B�00000001…CCBPECT‚DS.B…1•NUMBER�OF�POLLING�TABLE�ENTRIES�559™*U�560ƒ0000002C�00000008…CCBRQST‚DS.B…8•TASK�NAME�AND�SESSION�CODE�THAT�ORIGINALLY�MADE�561™*A�562ƒ00000034�00000004…CCBRQSTA�DS.B…4•ADDRESS�OF�REQUESTOR'S�TCB�563™*8�564ƒ00000038�00000001…CCBKEYƒDS.B…1•REQUESTOR'S�I/O�KEY;�565ƒ00000039�00000001…CCBRTNƒDS.B…1•RETURN�OPTION�(BIT�0):�566™*§0=PUT�RETURN�STATUS�IN�567™*ªBUFFER,�ISSUE�WAKEUP�568™*§1=PUT�RETURN�STATUS�ON �569™*ªASQ�570™*:�571ƒ0000003A�00000001…CCBASQL‚DS.B…1•MAX�ASQ�ENTRY�LENGTH&�572ƒ0000003B�00000001ŽDS.B…1•RESERVEDN�573ƒ0000003C�00000004…CCBSVVC‚DS.B…4•SERVICE�VECTOR�FOR�RETURN�FROM�INTERRUPT@�574ƒ00000040�00000002…CCBSR„DS.B…2•UNMASK�STATUS�REGISTER�VALUE?�575ƒ00000042�00000002…CCBISRƒDS.B…2•MASK�STATUS�REGISTER�VALUE4�576ƒ00000044�00000004…CCBVADR‚DS.B…4•VECTOR�ADDRESS8�577ƒ00000048�00000002…CCBSTRƒDS.B…2•CCB�STATUS�REGISTERH�578ƒ0000004A�00000006…CCBJSRƒDS.B…6•HOLDS�JSR�INSTRUCTION�FOR�VECTORING;�579Œ00000050…CCBIOHƒEQU†*•I/O�HANDLER�PARAMETER�BLOCK�INFO=�580ƒ00000050�00000004…CCBTASKA�DS.B…4•ADDRESS�OF�ATTACHE�TCBK�581ƒ00000054�00000008…CCBTASK‚DS.B…8•ATTACHEE�TASK�NAME�AND�SESSION�NUMBER�582™*Z�583ƒ0000005C�00000000…CCBRESV1�DC.L…0•FUTURE�USE�BUFFER�BETWEEN�CCB�INDEPENDENT/DEPENDENTZ�584ƒ00000060�00000000…CCBRESV2�DC.L…0•FUTURE�USE�BUFFER�BETWEEN�CCB�INDEPENDENT/DEPENDENTZ�585ƒ00000064�00000000…CCBRESV3�DC.L…0•FUTURE�USE�BUFFER�BETWEEN�CCB�INDEPENDENT/DEPENDENTZ�586ƒ00000068�00000000…CCBRESV4�DC.L…0•FUTURE�USE�BUFFER�BETWEEN�CCB�INDEPENDENT/DEPENDENTZ�587ƒ0000006C�00000000…CCBRESV5�DC.L…0•FUTURE�USE�BUFFER�BETWEEN�CCB�INDEPENDENT/DEPENDENT MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚10(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• 3�588Œ00000070…CCBDDPƒEQU†*•DEVICE�DEPENDENT�PORTION�589™*�590™*�591™*2�592™*�POLLING�TABLE�AND�POLLING�TABLE�ENTRY�COUNT�593™*$�594™*žSTART�OF�POLLING�TABLE�IN�CCBC�595Œ00000004…CCBMCNT‚EQU†4•MAXIMUM�NUMBER�OF�POLLING�TABLE�ENTRIESM�596ƒ00000070�00000020…CCBPBASE�DS.B…CCBMCNT*8�RESERVE�REMAINING�SPACE�IN�CCB�597™*�598™*'�599™*�POLLING�TABLE�RESIDES�WITHIN�CCB>�600™*ƒCONTAINS�8-BYTE�ENTRIES�TO�ALLOW�HANDLING�MORE�THAN�ONE,�601™*ƒINTERRUPT�TYPE�FROM�A�SINGLE�CHANNEL.�602™* �603¢OFFSETƒ09�604ƒ00000000�00000002…CCBPOFF‚DS.B…2•POLLING�BYTE�OFFSET2�605ƒ00000002�00000001…CCBMASK‚DS.B…1•POLLING�MASK@�606ƒ00000003�00000001…CCBPTST‚DS.B…1•POLLING�=�OR�<>�TEST�VALUE7�607ƒ00000004�00000002…CCBRESO‚DS.B…2•RESET�BYTE�OFFSET1�608ƒ00000006�00000001…CCBRESV‚DS.B…1•RESET�VALUE3�609ƒ00000007�00000001…CCBRESP‚DS.B…1•RESET�OPTIONS 610 611�612™*�613™*�CCBSTR�(BIT�FLAGS)�614™*�BIT”MEANING�IF�SET2�615™*�---”---------------------------------------1�616Œ0000000F…CCBFGATH�EQU†15”CHANNEL�IS�ATTACHED0�617Œ00000008…CCBFGDIR�EQU†8•EXCLUSIVE�VECTORINGM�618Œ00000002…CCBFGSUP�EQU†2•THIS�IS�A�SUPERVISOR�CHANNEL;�THE�ADDRESS�OF�THE-�619™*§CCB�OF�THE�FIRST�CHANNEL�IN�THE�SUBOR-!�620™*§DINATE�CHAIN�IS�IN�CCBSUB.0�621Œ00000001…CCBFGOFF�EQU†1•CHANNEL�IS�OFF-LINEI�622Œ00000000…CCBFGSYS�EQU†0•ONLY�SYSTEM�TASKS�MAY�ATTACH�TO�THIS�CHANNEL 623 624�625™*�626™*�CCBRESP�--�RESET�OPTIONS�627™*+�628Œ00000000…CCBRSWƒEQU†0•WRITE�RESET�BYTE*�629Œ00000001…CCBRSRƒEQU†1•READ�RESET�BYTE MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚11(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• �633™**�634™*”**************�635™*”*‚03/26/82‚*�636™*”**************�637™*T�638™*------------------------------------------------------------------------------�639™*�640™*B�641™*ˆERROR�MESSAGE�HANDLER�EQUATES�FOR�NON-TRAP�RELATED�MESSAGES�642™*�643™*’AS�OF�8/31/81�644™*�645™*+�646Œ0 0000100…EM_NVEƒEQU†$100’INVALID�ENTRYB�647Œ00000101…EM_SCBO‚EQU†$101’SUBSTITUTION�CAUSED�BUFFER�OVERFLOW1�648Œ00000102…EM_NOARG�EQU†$102’NO�ARGUMENT�FOUND,�649Œ00000103…EM_NVOƒEQU†$103’INVALID�OPTION3�650Œ00000104…EM_NOMEM�EQU†$104’INSUFFICIENT�MEMORY/�651Œ00000105…EM_OPTCF�EQU†$105’OPTION�CONFLICT8�652Œ00000106…EM_CLSE‚EQU†$106’COMMAND�LINE�SYNTAX�ERROR?�653Œ00000107…EM_NVDEV�EQU†$107’INVALID�DEVICE�NAME�FOR�REQUEST�654™*�655™*T�656™*�-----------------------------------------------------------------------------*�657™*ˆDATA�STRUCTURES�AND�EQUATES�FOR�I/O�658™*�659™*)�660™*�FHS�PARAMETER�BLOCK�DATA�STRUCTURE�661™*$�662¢OFFSETƒ0•START�WITH�ZERO�OFFSET,�663ƒ00000000�00000002…FHSCMDƒDS.W…1•COMMAND,�664ƒ00000002�00000002…FHSOPTƒDS.W…1•OPTIONS+�665ƒ00000004�00000001…FHSSTAƒDS.B…1•STATUS8�666ƒ00000005�00000001…FHSLUNƒDS.B…1•LOGICAL�UNIT�NUMBER0�667ƒ00000006�00000004…FHSVOLƒDS.L…1•VOLUME�NAME;�668Œ0000000A…FHSDLNƒEQU†*•LENGTH�FOR�ASSIGN�DEFAULT�VOLUME0�669ƒ0000000A�00000002…FHSUSNƒDS.W…1•USER�NUMBER1�670ƒ0000000C�00000008…FHSCLGƒDS.L…2•CATALOG�NAME.�671ƒ00000014�00000008…FHSFILƒDS.L…2•FILE�NAME.�672ƒ0000001C�00000002…FHSEXTƒDS.W…1•EXTENSION-�673ƒ0000001E�00000002…FHSGENƒDS.W…1•RESERVED7�674ƒ00000020�00000001…FHSWCDƒDS.B…1•WRITE�PROTECT�CODE6�675ƒ00000021�00000001…FHSRCDƒDS.B…1•READ�PROTECT�CODE:�676ƒ00000022�00000002…FHSLRLƒDS.W…1•LOGICAL�RECORD�LENGTHN�677ƒ00000024�00000004…FHSSIZƒDS.L…1•CONTIGUOUS�FILE�SIZE�/�DIR.�ENTRY�POINTER4�678¢OFFSETƒFHSSIZ�REDEFINED�FOR�NONCONTIGUOUS�FILES+�679ƒ00000024�00000001…FHSRESƒDS.B…1•UNUSED>�680ƒ00000025�00000001…FHSKEYƒDS.B…1•KEY�LENGTH�(0�IF�NO�KEYS)-�681ƒ00000026�00000001…FHSFABƒDS.B…1•FAB�SIZE4�682ƒ00000027�00000001…FHSDATƒDS.B…1•DATA�BLOCK�SIZE0�683Œ00000028…FHSBLNƒEQU†*•LENGTH�OF�PARAM�BLOCK/�684™*REDEFINED�FHS�BLOCK�FOR�CHANGE�LU�REQUEST�685¢OFFSETƒFHSLUN0�686ƒ00000005�00000001…FHSLUAƒDS.B…1•CHANGE�LU�A0�687ƒ00000006�00000001…FHSLUBƒDS.B…1•CHANGE�LU�B&�688ƒ00000007�00000001ŽDS.B…1•RESERVED6�689ƒ00000008�00000004…FHSTSKƒDS.L…1•CHANGE�LU�TASK�ID;�690ƒ0000000C�00000004…FHSSESƒDS.L…1•CHANGE�LU�TASK�SESSION MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚12(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• B�691Œ00000010…FHSCLNƒEQU†*•LENGTH�OF�PARAMETER�BLOCK�FOR�CHANGE�LU4�692™*REDEFINED�FHS�BLOCK�FOR�FETCH�DEVICE�MNEMONICS�693¢OFFSETƒFHSVOL>�694ƒ00000006�00000004…FHSPTRƒDS.L…1•POINTER�TO�RETURNED�INFO.C�695ƒ0000000A�00000004…FHSLENƒDS.L…1•LENGTH�OF�RETURNED�INFO.�BLOCK<�696Œ0000000E…FHSFLNƒEQU†*•LENGTH�FOR�FETCH�DEVICE�MNEMONICS:�697™*ADDITIONAL�FHS�PARAMETERS�FOR�SHARED�SEGMENT�REQUEST�698¢OFFSETƒFHSBLNE�699ƒ00000028�00000004…FHSSADƒDS.L…1•SEGMENT�STARTING�LOGICAL�ADDRESSA�700ƒ0000002C�00000004…FHSEADƒDS.L…1•SEGMENT�ENDING�LOGICAL�ADDR.1�701ƒ00000030�00000004…FHSSNMƒDS.L…1•SEGMENT�NAMEK�702Œ00000034…FHSNLNƒEQU†*•LENGTH�OF�PARM.�BLOCK�FOR�SHARED�SEGMENT�REQUEST�703™*�704™*�FHSCMD�EQUATES�(16�BITS)�705™*5�706Œ00000080…FHALLOƒEQU†$80“ALLOCATE�(CREATE�A�FILE)*�707Œ00000040…FHASGNƒEQU†$40“ASSIGN�(OPEN)5�708Œ00000020…FHCHNGƒEQU†$20“CHANGE�ACCESS�PERMISSION#�709Œ00000010…FHRENMƒEQU†$10“RENAME#�710Œ00000008…FHPROTƒEQU†$8”PROTECT!�711Œ00000004…FHCLOSƒEQU†$4”CLOSE"�712Œ00000002…FHDELTƒEQU†$2”DELETE&�713Œ00000001…FHCKPTƒEQU†$1”CHECKPOINT1�714Œ00000180…FHRATTƒEQU†$180’RETRIEVE�ATTRIBUTES3�715Œ00000140…FHFDENƒEQU†$140’FETCH�DIRECTORY�ENTRY4�716Œ00000120…FHFDMNƒEQU†$120’FETCH�DEVICE�MNEMONICS2�717Œ00000110…FHCHLUƒEQU†$110’CHANGE�LU�ASSIGNMENT1�718Œ00000108…FHFDV„EQU†$108’FETCH�DEFAULT�VOLUME-�719Œ00000280…SPLCANC‚EQU†$280’CANCEL�SPOOLER'�720Œ00000240…SPLCONT‚EQU†$240’CONTINUE$�721Œ00000220…SPLFORM‚EQU†$220’FORMS$�722Œ00000210…SPLPRNT‚EQU†$210’PRINT%�723Œ00000208…SPLCOPY‚EQU†$208’COPIES+�724Œ00000204…SPLQUEƒEQU†$204’DISPLAY�QUEUE1�725Œ00008001…FHDVOLƒEQU†$8001‘SET�DEFAULT�VOLUME�726™*!�727™*ˆEQUATES�FOR�LU�ASSIGNMENT S�728™*.�729Œ00000005…CDFLUNƒEQU†5•CMD�DEVICE/FILE�LUN.�730Œ00000006…LDFLUNƒEQU†6•LOG�DEVICE/FIEL�LUN�731™*�732™*�FHSOPT�EQUATES�(16�BITS)(�733™*ACCESS�PERMISSION�FIELD�(BITS�0-2)�734™*7�735Œ00000007…FAPBITƒEQU†$7”BITS�FOR�ACCESS�PERM.�FIELD%�736Œ00000000…FOPPR„EQU†0•PUBLIC�READ(�737Œ00000001…FOPER„EQU†1•EXCLUSIVE�READ&�738Œ00000002…FOPPW„EQU†2•PUBLIC�WRITE)�739Œ00000003…FOPEW„EQU†3•EXCLUSIVE�WRITE-�740Œ00000004…FOPPRPW‚EQU†4•PUBLIC�READ-WRITE8�741Œ00000005…FOPPREW‚EQU†5•PUBLIC�READ,�EXCLUSIVE�WRITE8�742Œ00000006…FOPERPW‚EQU†6•EXCLUSIVE�READ,�PUBLIC�WRITE0�743Œ00000007…FOPEREW‚EQU†7•EXCLUSIVE�READ-WRITE�744™*�745™*OVERWRITE�FIELD�(BIT�3)*�746Œ00000008…FOPOVRT‚EQU†8•OVERWRITE�FILE�747™*�748™*TRUNCATE�FIELD�(BIT�4) MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚13(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• 8�749Œ00000010…FOPTRNƒEQU†$10“TRUNCATE�FILE�AT�CLOSE�TIME�750™*)�751™*�ALLOCATE�DATA�BUFFER�FIELD�(BIT�5)8�752Œ00000020…FOPABFƒEQU†$20“ALLOCATE�SHARED�DATA�BUFFER�753™*�754™*POSITION�FIELD�(BIT�6)8�755Œ00000000…FOPBEGƒEQU†0•POSITION�AT�BEGINNING�OF�FILE4�756Œ00000040…FOPENDƒEQU†$40“POSITION�AT�END�OF�FILE&�757™*RESERVED�FIELD�(BITS�7�NOT�USED)�758™*!�759™*FILE�TYPE�FIELD�(BITS�8-10)0�760Œ00000700…FFTBITƒEQU†$700’BITS�FOR�FILE�TYPE%�761Œ00000000…FOPCONƒEQU†0•CONTIGUOUS2�762Œ00000100…FOPSEQƒEQU†$100’SEQUENTIAL�(FRL/VRL)Q�763Œ00000200…FOPISKƒEQU†$200’KEYED�RECORD,�INDEXED�SEQUENTIAL,�NO�DUPLICATE�KEYS:�764Œ00000300…FOPISDƒEQU†$300’",�",�DUPLICATE�KEYS�ALLOWED�765™*I�766Œ00000800…FOPADRƒEQU†$800’RETURN�PHY.�ADR�FOR�SHARED�DATA�BUFFER�REQ.�767™*(�768™*USER�ATTRIBUTES�FIELD�(BITS�15-12)7�769Œ0000F000…FUSBITƒEQU†$F000‘BITS�FOR�USER�ATTRIBUTES�770™*�771™*�CHANGE�LU�OPTIONS"�772Œ00000000…FOPSLUƒEQU†0•SEND�LU%�773Œ00000001…FOPRLUƒEQU†1•RECEIVE�LU.�774Œ00008000…FOPKEPƒEQU†$8000‘KEEP�ASSIGNMENT�775™**�776™*SET�AND�FETCH�DEFAULT�VOLUME�OPTIONS0�777Œ00000000…FOPDSYƒEQU†0•SYSTEM�VOLUME�DEFAULT$�778Œ00000001…FOPDTMƒEQU†1•TEMPORARY"�779Œ00000002…FOPDSPƒEQU†2•SPOOLER�780Œ00000003…FOPDUSƒEQU†3•USER�781™*$�782™*FETCH�DEVICE�MNEMONICS�OPTIONS5�783Œ00000004…FOPFRAƒEQU†4•FETCH�RANDOM�ACCES�DEVICES3�784Œ00000005…FOPFINƒEQU†5•FETCH�INTERATCIE�DEVICES0�785Œ00000006…FOPFPRƒEQU†6•FETCH�PRINTER�DEVICES�786™*�787™*�FHSSTA�EQUATES�(8�BITS)�788™*$�789Œ00000000…FSTAOKƒEQU†$0”NO�ERROR�790™*'�791™*ERROR�CODE�1�IS�RESERVED�FOR�EXEC�792™*(SERVER�DOES�NOT�EXIST)�793™*+�794Œ00000002…FSTAIFƒEQU†$2”INVALID�COMMAND1�795Œ00000003…FSTAILU‚EQU†$3”INVALID�LOGICAL�UNIT)�796Œ00000004…FSTAVOL‚EQU†$4”VOLUME�ERROR0�797Œ00000005…FSTADNM‚EQU†$5”DUPLICATE�FILE�NAME1�798Œ00000006…FSTAFDƒEQU†$6”FILE�DESCRIPTOR�ERROR.�799Œ00000007…FSTAPCƒEQU†$7”PROTECT�CODE�ERROR/�800Œ00000008…FSTARLƒEQU†$8”RECORD�LENGTH�ERROR0�801Œ00000009…FSTASEƒEQU†$9”SHARED�SEGMENT�ERROR8�802Œ0000000A…FSTADSƒEQU†$A”INSUFFICIENT�DIRECTORY�SPACE3�803Œ0000000B…FSTAAPƒEQU†$B”ACCESS�PERMISSION�ERROR5�804Œ0000000C…FSTASSƒEQU†$C”INSUFFICIENT�SYSTEM�SPACE.�805Œ0000000D…FSTAASƒEQU†$D”INVALID�ASSIGNMENT/�806Œ0000000E…FSTADTƒEQU†$E”INVALID�DEVICE�TYPE MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚14(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• +�807Œ0000000F…FSTABOƒEQU†$F”BUFFER�OVERFLOW.�808Œ00000010…FSTATNƒEQU†$10“INVALID�TASK�NAME4�809Œ00000011…FSTAADD‚EQU†$11“INVALID�BUFFER�ADDRESS.�810Œ00000012…FSTAFTƒEQU†$12“INVALID�FILE�TYPE/�811Œ00000013…FSTAIEƒEQU†$13“INTERNAL�FHS�ERROR8�812Œ00000014…FSTAIPƒEQU†$14“INVALID�PARAM�BLOCK�ADDRESS4�813Œ00000015…FSTADLƒEQU†$15“DATA�BLOCK�LENGTH�ERROR'�814Œ00000016…FSTASZƒEQU†$16“SIZE�ERROR4�815Œ00000017…FSTANNM‚EQU†$17“NON-EXISTENT�FILE�NAME.�816Œ00000018…FSTAEOD‚EQU†$18“END�OF�DIRECTORY-�817Œ00000019…FSTAKYƒEQU†$19“KEY�LENGTH�ERROR-�818Œ0000001A…FSTAFLƒEQU†$1A“FAB�LENGTH�ERROR8�819Œ0000001B…FSTANDV‚EQU†$1B“DEFAULT�VOLUME�NOT�DEFINED@�820Œ0000001C…FSTAWSƒEQU†$1C“WRONG�STATE�FOR�SPOOL�S TART�COMMANDD�821Œ0000001D…FSTAIUƒEQU†$1D“SPOOL�COMMANDS-INVALID�USER�#�SPECIFIED�822™**�823™*FETCH�DIRECTORY�ENTRY�RETURNED�INFO.�824™*$�825¢OFFSETƒ0•START�WITH�ZERO�OFFSET/�826ƒ00000000�00000002…FDUSN„DS.W…1•USER�NUMBER+�827ƒ00000002�00000008…FDCLG„DS.L…2•CATALOG-�828ƒ0000000A�00000008…FDFIL„DS.L…2•FILE�NAME-�829ƒ00000012�00000002…FDEXT„DS.W…1•EXTENSION&�830ƒ00000014�00000002ŽDS.W…1•RESERVED4�831ƒ00000016�00000004…FDFS…DS.L…1•FILE�STARTING�PSN2�832ƒ0000001A�00000004…FDFE…DS.L…1•FILE�ENDING�PSNE�833ƒ0000001E�00000004…FDEOF„DS.L…1•END�OF�FILE�LOGICAL�SECTOR�NUMBERE�834ƒ00000022�00000004…FDEOR„DS.L…1•END�OF�FILE�LOGICAL�RECORD�NUMBER5�835ƒ00000026�00000001…FDWCD„DS.B…1•WRITE�ACCESS�CODE5�836ƒ00000027�00000001…FDRCD„DS.B…1•READ�ACCESSS�CODE.�837ƒ00000028�00000001…FDATT„DS.B…1•ATTRIBUTESU�838ƒ00000029�00000001…FDLBZ„DS.B…1•LAST�DATA�BLOCK�SIZE�(FILE�TRUNCATED�IF�<>�FDDAT)M�839ƒ0000002A�00000002…FDLRL„DS.W…1•RECORD�SIZE�(0�=>�VARIABLE�RECORD�LENGTH)&�840ƒ0000002C�00000001ŽDS.B…1•RESERVED;�841ƒ0000002D�00000001…FDKEY„DS.B…1•KEY�SIZE�(0�=>�NO�KEYS),�842ƒ0000002E�00000001…FDFAB„DS.B…1•FAB�SIZE3�843ƒ0000002F�00000001…FDDAT„DS.B…1•DATA�BLOCK�SIZE6�844ƒ00000030�00000002…FDDTECƒDS.W…1•DATE�FILE�CREATED<�845ƒ00000032�00000002…FDDTEAƒDS.W…1•DATE�FILE�LAST�ASSIGNED&�846ƒ00000034�00000008ŽDS.B…8•RESERVED1�847Œ0000003C…FDLEN„EQU†*•FETCH�DIR.�ENTRY�LENGTH�848™*+�849™*FETCH�DEVICE�MNEMONICS�RETURNED�INFO.�850™* �851¢OFFSETƒ04�852ƒ00000000�00000004…FDVDEVƒDS.L…1•DEVICE�MNEMONIC.�853ƒ00000004�00000004…FDVVOLƒDS.L…1•VOLUME�ID-�854ƒ00000008�00000001…FDVVALƒDS.B…1•RESERVED2�855ƒ00000009�00000001…FDVSTSƒDS.B…1•DEVICE�STATUS7�856Œ0000000A…FDVLENƒEQU†*•FETCH�DEVICE�MNEOMICS�LENGTH MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚15(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• �858™*$�859™*�IOS�PARAMETER�BLOCK�STRUCTURE�860™*$�861¢OFFSETƒ0•START�WITH�ZERO�OFFSET-�862ƒ00000000�00000002…IOSFCTƒDS.W…1•FUNCTION,�863ƒ00000002�00000002…IOSOPTƒDS.W…1•OPTIONS+�864ƒ00000004�00000001…IOSSTAƒDS.B…1•STATUS8�865ƒ00000005�00000001…IOSLUNƒDS.B…1•LOGICAL�UNIT�NUMBER>�866Œ00000006…IOSSRVƒEQU†*•SERVICE�ADDRESS�FOR�ATTENTION�EVENT&�867ƒ00000006�00000001ŽDS.B…1•RESERVEDD�868ƒ00000007�00000001…IOSPKLƒDS.B…1•RESERVED�FOR�PARTIAL�KEY�LENGTHE�869ƒ00000008�00000004…IOSRRNƒDS.L…1•RANDOM�RECORD�NUMBER:�LRN�OR�LSN9�870ƒ0000000C�00000004…IOSSADƒDS.L…1•START�BUFFER�ADDRESS7�871ƒ00000010�00000004…IOSEADƒDS.L…1•END�BUFFER�ADDRESS7�872ƒ00000014�00000004…IOSLENƒDS.L…1•LENGTH�OF�TRANSFER7�873ƒ00000018�00000004…IOSCADƒDS.L…1•COMPLETION�ADDRESS0�874Œ0000001C…IOSBLNƒEQU†*•LENGTH�OF�PARAM�BLOCK�875™*$�876™*�IOS�PARAMETER�BLOCK�STRUCTURE*Ÿ¤¨¬°´¸¼ÀÄÈÌÐÔØÜ1à3ä1èìðôøü )�877™*ˆFOR�CONFIGURE�AND�STATUS�COMMANDS.�878™*�879¢OFFSETƒIOSRRN7�880ƒ00000008�00000004…IOSDBPƒDS.L…1•DATA�BLOCK�POINTER'�881Œ0000000C…IOSCSLƒEQU†*•LENGTH�OF�PB 882�883™*F�884™*‚IOS�Configuration�Block�structure�for�CONFIGURE,�CHANGE�DEFAULT0�885™*‚CONFIGURATION,�&�REQUEST�STATUS�commands."�886™*‚Device-independent�portion:�887™* �888¢OFFSETƒ02�889ƒ00000000�00000001…IOSDSTƒDS.B…1•DEVICE�STATUSM�890Œ00000000…IOSCECƒEQU†IOSDST�CONFIGURATION�ERROR�CODE�(returned�in�lieu�of-�891™*§device�status�if�ISTACNF�error�status)1�892ƒ00000001�00000001…IOSCTPƒDS.B…1•CHANNEL�TYPE0�893ƒ00000002�00000001…IOSDTPƒDS.B…1•DEVICE�TYPE0�894ƒ00000003�00000001…IOSDRCƒDS.B…1•DRIVER�CODE4�895ƒ00000004�00000002…IOSATMƒDS.W…1•ATTRIBUTES�MASK4�896ƒ00000006�00000002…IOSPRMƒDS.W…1•PARAMETERS�MASK4�897ƒ00000008�00000002…IOSATWƒDS.W…1•ATTRIBUTES�WORD2�898ƒ0000000A�00000002…IOSRECƒDS.W…1•RECORD�LENGTH0�899ƒ0000000C�00000004…IOSRSZƒDS.L…1•DEVICE�SIZE2�900ƒ00000010�00000004…IOSWTOƒDS.L…1•WRITE�TIMEOUT 1�901ƒ00000014�00000004…IOSRTOƒDS.L…1•READ�TIMEOUT9�902Œ00000018…IOSDDCƒEQU†*•DEVICE�DEPENDENT�CONFIGURATION 903�904™*K�905™*‚Bit�equates�for�IOSPRM�for�device-independent�part�of�configuration.�906™*=�907Œ00000000…IOSRECB‚EQU†0•Parameter�#�for�IOSREC�parameter. �908Œ00000001…IOSRSZB‚EQU†1•etc.�909Œ00000002…IOSWTOB‚EQU†2�910Œ00000003…IOSRTOB‚EQU†3 911�912™*E�913™*‚Device-dependent�portion�of�configuration�block�for�terminals:�914™*�915¢OFFSETƒIOSDDC MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚16(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• 4�916ƒ00000018�00000001…IOSXOFƒDS.B…1•X-OFF�CHARACTER3�917ƒ00000019�00000001…IOSXONƒDS.B…1•X-ON‚CHARACTER?�918ƒ0000001A�00000001…IOSBRCƒDS.B…1•BREAK�EQUIVALENT�CHARACTER=�919ƒ0000001B�00000001…IOSDOPƒDS.B…1•DISCARD�OUTPUT�CHARACTER;�920ƒ0000001C�00000001…IOSRLNƒDS.B…1•REPRINT�LINE�CHARACTER:�921ƒ0000001D�00000001…IOSCLCƒDS.B…1•CANCEL�LINE�CHARACTER5�922ƒ0000001E�00000004…IOSRTVƒDS.L…1•READ�TERMINATORS7�923ƒ00000022�00000004…IOSEOLƒDS.L…1•END�OF�LINE�STRING3�924ƒ00000026�00000001…IOSBRTƒDS.B…1•BAUD�RATE�CODE7�925ƒ00000027�00000001…IOSNLSƒDS.B…1•NULL�PADDING�COUNT5�926ƒ00000028�00000001…IOSTRCƒDS.B…1•TERMINATOR�CLASSF�927ƒ00000029�00000001…IOSTCDƒDS.B…1•TERMINAL�CODE�(SEE�EQUATES�BELOW)&�928ƒ0000002A�00000006ŽDS.B…6•RESERVEDD�929Œ00000030…IOSTLNƒEQU†*•LENGTH�OF�DATA�BLOCK�FOR�TERMINAL�DEVICES 930�931™*;�932™*ˆCONFIGURATION�PARAMETERS�SPECIFIC�TO�PRINTER�DEVICES�933™*�934¢OFFSETƒIOSDDCX�935ƒ00000018�00000002…IOSLRLƒDS.W…1•LOGICAL�RECORD�LENGTH�<=�IOSREC(PHYSICAL�REC.�LEN.)N�936ƒ0000001A�00000001…IOSELCƒDS.B…1•END�OF�LINE�CHARACTER�(WITH�AUTO�LF�ONLY)'�937ƒ0000001B�0000000FŽDS.B…15”RESERVEDC�938Œ0000002A…IOSPLNƒEQU†*•LENGTH�OF�DATA�BLOCK�FOR�PRINTER�DEVICES�939™*S�940™*‚Bit�equates�for�IOSDST�(device�status);�also�for�XRPDST�in�channel�commands.�941™*A�942Œ00000000…XDSBRKƒEQU†0•BREAK�CONDITION�(only�used�internally).�943Œ00000005…XDSWPBƒEQU†5•WRITE-PROTECTED�BIT/�944Œ00000007…XDSNRBƒEQU†7•DEVICE�NOT�READY�BIT�945™*5�946™*‚Equates�for�IOSCEC�(configuration�error�code).+�947™*‚$01-$3F‚errors�common�to�all�drivers5�948™*‚$40-$7F‚errors�specific�to�a�particular�driver�949™*‚$80-$FF‚reserved�950™*J�951Œ00000001…CECCDOƒEQU†1•A�CONFIGURE�specified�an�attribute�or�parameter2�952™*Ÿwhich�is�recognized�by�CHANGE�DEFAULT�only.H�953Œ00000002…CECUAPƒEQU†2•An�attempt�was�made�to�change�an�unrecognized�954™*Ÿattribute�or�parameter.4�955™*„(IOSCEC�equates�specific�to�terminal�devices)�956™*F�957Œ00000040…CECTTIƒEQU†$40“Termination�would�be�impossible�given�the�958™*Ÿsuggested�configuration.L�959Œ00000041…CECTIMƒEQU†$41“Modem�operation�and�some�incompatible�parameter#�960™*Ÿor�attribute�were�specified.L�961Œ00000042…CECTBRƒEQU†$42“The�device�cannot�be�software-configured�to�the�962™*Ÿspecified�baud�rate.�963™*�964™*3�965™*…(IOSCEC�equates�specific�to�printer�devices)�966™*A�967Œ00000040…CECPNIƒEQU†$40“NULL�is�invalid�for�an�EOL�characterK�968Œ00000041…CECPRLZ‚EQU†$41“Logical�and/or�physical�record�length�is�zeroL�969Œ00000042…CECPLGP‚EQU†$42“Logical�record�length�>�physical�record�lengthN�970™*‚Equates�for�IOSCTP�(channel�type);�also�for�XIOCTP�in�channel�commands.�971™*&�972Œ00000001…XTACIAƒEQU†1•ACIA�DEVICE,�973Œ00000002…XTPIAAƒEQU†2•PIA�A-SIDE�DEVICE MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚17(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• ,�974Œ00000003…XTPIABƒEQU†3•PIA�B-SIDE�DEVICE&�975Œ00000004…XTCRTCƒEQU†4•CRTC�DEVICE&�976Œ00000005…XTSSDAƒEQU†5•SSDA�DEVICE&�977Œ00000006…XTADLCƒEQU†6•ADLC�DEVICE%�978Œ00000010…XTDIPCƒEQU†$10“DISK�IPC%�979Œ00000011…XTMIPCƒEQU†$11“MCCM�IPC)�980Œ00000020…XTDSASƒEQU†$20“SASI�CHANNEL�981™*¨PRINTER�PORTS:�$50-$5F)�982Œ00000050…XTPEXMƒEQU†$50“PIA�EXORMACS*�983Œ00000051…XTPVM1ƒEQU†$51“VM01�PARALLEL,�984Œ00000052…XTPRTLƒEQU†$52“RTTLIO�PARALLEL�985™*¨SERIAL�PORTS:�$60-$6F 0�986Œ00000060…XTS7A2ƒEQU†$60“7201�A-SIDE�ON�VM020�987Œ00000061…XTS7B2ƒEQU†$61“7201�B-SIDE�ON�VM020�988Œ00000062…XTS7A8ƒEQU†$62“7201�A-SIDE�ON�VM800�989Œ00000063…XTS7B8ƒEQU†$63“7201�B-SIDE�ON�VM800�990Œ00000064…XTS7ARƒEQU†$64“7201�A-SIDE�ON�RSIO0�991Œ00000065…XTS7BRƒEQU†$65“7201�B-SIDE�ON�RSIO�992™*M�993™*‚Equates�for�IOSDTP�(device�type);�also�for�XRPDTP�in�channel�commands.�994™*&�995Œ00000001…XDSFDKƒEQU†1•FLOPPY�DISK%�996Œ00000002…XDSRDKƒEQU†2•RIGID�DISK$�997Œ00000003…XDSACIA‚EQU†3•TERMINAL"�998Œ00000004…XDSPRTƒEQU†4•PRINTER)�999Œ00000005…XDSTAPE‚EQU†5•MAGNETIC�TAPE1000™*(1001™*‚Equates�for�IOSDRC�(driver�code).1002™*A1003Œ00000001…IODMPSC‚EQU†1•Async�terminal�driver�for�7201�ports.B1004Œ00000002…IODLPRT‚EQU†2•Driver�for�local�Centronics�printer�on01005™*£EXORmacs�DEBUG�or�MVME410�on�I/O�channel.C1006Œ00000003…IODSASI‚EQU†3•Driver�for�SASI�channel�on�I/O�channel.(1007Œ00000020…IODIPCƒEQU†$20“IPC�driver.1008™*71009™*‚Bit�equates�for�IOSATM�and�IOSATW�for�terminals.1010™*%1011Œ00000000…IOAHCPY‚EQU†0•HARD�COPY$1012Œ00000001…IOAXCTL‚EQU†1•XON/XOFF%1013Œ00000002…IOABITS‚EQU†2•7BIT/8BIT%1014Œ00000003…IOASTPB‚EQU†3•STOP�BITS"1015Œ00000004…IOAUSEP‚EQU†4•PARITY+1016Œ00000005…IOAPRTY‚EQU†5•ODD/EVEN�PARITY,1017Œ00000006…IOAECHO‚EQU†6•HALF/FULL�DUPLEX&1018Œ00000007…IOATAHD‚EQU†7•TYPE�AHEAD11019Œ00000008…IOATFUL‚EQU†8•FULL�BUFFER�TERMINATE&1020Œ00000009…IOAPNUL‚EQU†9•PASS�NULLS11021Œ0000000A…IOAMODM‚EQU†10”MODEM/DIRECT�CONNECT*1022Œ0000000B…IOAOFFH‚EQU†11”MODEM�OFFHOOK1023™*,1024™*‚Bit�equates�for�IOSPRM�for�terminals.1025™*=1026Œ00000004…IOSXOFB‚EQU†4•Parameter�#�for�IOSXOF�parameter. 1027Œ00000005…IOSBRCB‚EQU†5•etc.1028Œ00000006…IOSDOPB‚EQU†61029Œ00000007…IOSRLNB‚EQU†71030Œ00000008…IOSCLCB‚EQU†81031Œ00000009…IOSRTVB‚EQU†9 MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚18(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• 1032Œ0000000A…IOSEOLB‚EQU†101033Œ0000000B…IOSBRTB‚EQU†111034Œ0000000C…IOSNLSB‚EQU†121035Œ0000000D…IOSTRCB‚EQU†131036Œ0000000E…IOSTCDB‚EQU†141037™*)1038™*‚Equates�for�IOSTCD�(terminal�code)1039™*‚$00-$7F‚reserved1040™*‚$80-$FF‚user-defined1041™*)1042Œ00000000…TCDX155‚EQU†0•EXORterm�155.1043™*+1044™*‚Bit�equates�for�IOSATW�for�printers.1045™**1046Œ00000000…IOALNFD‚EQU†0•AUTO�LINE�FEED:1047Œ00000001…IOASNFF‚EQU†1•SUPRESS�FORM�FEED�AFTER�ASSIGNA1048Œ00000002…IOATPLL‚EQU†2•TRUNCATE�PRINT�AT�LOGICAL�LINE�LENGTH1049™**1050™*‚Bit�equates�for�IOSPRM�for�printers1051™*G1052Œ00000004…IOSLRLB‚EQU†4•Parameter�number�for�logical�record�length.K1053Œ00000005…IOSELCB‚EQU†5•Parameter�number�for�the�end-of-line�character.1054™*#1055™*�IOS�DATA�BLOCK�STRUCTURE�FOR*1056™*‰DISK�CONFIGURE�AND�STATUS�COMMANDS.1057™*1058¢OFFSETƒIOSDDC61059ƒ00000018�00000001…IOSSPTƒDS.B…1•SECTORS�PER�TRACK11060ƒ00000019�00000001…IOSHDSƒDS.B…1•NO.�OF�HEADS21061ƒ0000001A�00000002…IOSTRKƒDS.W…1•NO.�OF�TRACKS61062ƒ0000001C�00000001…IOSILVƒDS.B…1•INTERLEAVE�FACTOR21063ƒ0000001D�00000001…IOSSOFƒDS.B…1•SPIRAL�OFFSET'1064ƒ0000001E�00000010ŽDS.B…16”RESERVED/1065Œ0000002E…IOSDLNƒEQU†*•LENGTH�OF�DATA�BLOCK1066™*1067™*�IOSFCT�EQUATES�(16�BITS)1068™*(1069Œ00000001…IOREADƒEQU†$1”READ�REQUEST)1070Œ00000002…IOWRITƒEQU†$2”WRITE�REQUEST-1071Œ00000004…IOOWINƒEQU†$4”OUTPUT�WITH�INPUT)1072Œ00000008…IOUPDRƒEQU†$8”UPDATE�RECORD*1073Œ00000010…IODELRƒEQU†$10“DELETE�RECORD(1074Œ00000020…IOFRMTƒEQU†$20“FORMAT�DISK+1075Œ00000040…IOTBRKƒEQU†$40“TRANSMIT�BREAK&1076Œ00000101…IOPOSTƒEQU†$101’POSITION$1077Œ00000102…IOREWDƒEQU†$102’REWIND/1078Œ00000104…IOTESTƒEQU†$104’TEST�I/O�COMPLETE'1079Œ00000108…IOWAITƒEQU†$108’WAIT�ONLY&1080Œ00000110…IOHALTƒEQU†$110’HALT�I/O+1081Œ00000120…IOBRKSƒEQU†$120’BREAK�SERVICE,1082Œ00000140…IOSTATƒEQU†$140’STATUS�REQUEST.1083Œ00000180…IOCNFGƒEQU†$180’CONFIGURE�DEVICE31084Œ00000201…IONBRKS‚EQU†$201’NEGATE�BREAK�SERVICE/1085Œ00008001…IOUCBKƒEQU†$8001‘UNCLAIMED�BREAKS;1086Œ00008002…IOCHDCƒEQU†$8002‘CHANGE�DEFAULT�CONFIGURATION 1087™*1088™*�IOSOPT�EQUATES�(16�BITS)1089™* MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚19(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• 1090Œ00000000…IOPASCƒEQU†0•ASCII1091Œ00000000…IOPWATƒEQU†0•WAIT*1092Œ00000000…IOPCNPƒEQU†0•CONNECTION�WAIT$1093Œ00000000…IOPFORƒEQU†0•FORMATTED$1094Œ00000000…IOPECHƒEQU†0•ECHO�MODE(1095Œ00000000…IOPRECƒEQU†0•RECORD�ACCESS,1096Œ00000000…IOPLRNƒEQU†0•LOGICAL�RECORD�IO41097Œ00000000…IOPNOKƒEQU†0•RETURN�RECORD�WITHOUT�KEY01098Œ00000000…IOPNOCƒEQU†0•NO�COMPLETION�ADDRESS*1099Œ00000000…IOPINFƒEQU†0•INPUT�FORMATTED&1100Œ00000000…IOPPMPƒEQU†0•PRIMARY�MAP-1101Œ00000000…IOPDSKƒEQU†0•FORMAT�ENTIRE�DISK!1102Œ00000001…IOPBINƒEQU†1•BINARY"1103Œ00000002…IOPPROƒEQU†2•PROCEED&1104Œ00000004…IOPUNPƒEQU†4•BUSY�RETURN 1105Œ00000008…IOPIMGƒEQU†8•IMAGE91106Œ00000010…IOPBRKƒEQU†$10“EXCLUSIVE�BREAK�NOTIFICATION)1107Œ00000020…IOPNECƒEQU†$20“NO�ECHO�MODE<1108Œ00000040…IOPBLKƒEQU†$40“BLOCK�ACCESS(LOGICAL�SECTOR�IO)81109Œ00000080…IOPRRNƒEQU†$80“RANDOM�RECORD�I/O-KEY�GIVEN41110Œ00000100…IOPRTKƒEQU†$100’RETURN�KEY�WITH�RECORD81111Œ00000200…IOPCADƒEQU†$200’COMPLETION/SERVICE�ADDRESS)1112Œ00000400…IOPINMƒEQU†$400’INPUT�IMAGE+1113Œ00000800…IOPSMPƒEQU†$800’SECONDARY�MAP71114Œ00001000…IOPTRKƒEQU†$1000‘FORMAT�TRACK�(PSN�GIVEN)61115Œ00001000…IOPCTAƒEQU†$1000‘CLEAR�TYPE�AHEAD�BUFFER81116Œ00001000…IOPCDOƒEQU†$1000‘CLEAR�DISCARD�OUTPUT�MODED1117Œ00006000…IOPPOSƒEQU†$6000‘BITS�13-14:�LOGICAL�ACCESS�/�POSITION-1118Œ00000000…IOPNXTƒEQU†$0”NEXT(FORWARD)�/�>31119Œ00002000…IOPCURƒEQU†$2000‘CURRENT�POSITION�/�=51120Œ00004000…IOPPRVƒEQU†$4000‘PREVIOUS(BACKWARD)�/�<@1121Œ00006000…IOPRANƒEQU†$6000‘RANDOM(LRN�OR�LSN�GIVEN)�/�>�OR�=/1122Œ00008000…IOPTSKƒEQU†$8000‘TASK�ID�SUPPLIED1123™*1124™*�IOSSTA�EQUATES�(8�BITS)1125™*#1126Œ00000000…ISTAOKƒEQU†0•NO�ERROR1127™*‚PARAMETER�BLOCK�ERRORS-1128Œ00000082…ISTAIFƒEQU†$82“INVALID�FUNCTION21129Œ00000083…ISTAILU‚EQU†$83“INVALID�LOGICAL�UNIT11130Œ00000084…ISTAADD‚EQU†$84“INVALID�DATA�BUFFER21131Œ00000085…ISTARRƒEQU†$85“INVALID�RANDOM�RECORD81132Œ00000086…ISTAIPƒEQU†$86“INVALID�PARAM�BLOCK�ADDRESS/1133Œ00000087…ISTAPCƒEQU†$87“PROTECT�CODE�ERROR71134Œ00000088…ISTACNF‚EQU†$88“CONFIGURATION�PARAM�ERROR 1135™*‚DEVICE�INDEPENDENT�ERRORS,1136Œ000000C1…ISTABOƒEQU†$C1“BUFFER�OVERFLOW)1137Œ000000C2…ISTAEOF‚EQU†$C2“END�OF�FILE+1138Œ000000C3…ISTAEOV‚EQU†$C3“END�OF�VOLUME21139Œ000000C4…ISTAFAB‚EQU†$C4“INVALID�OR�EMPTY�FAB81140Œ000000C5…ISTATMƒEQU†$C5“INVALID�TRANSFER�FOR�DEVICE-1141Œ000000C6…ISTABRK‚EQU†$C6“BREAK�CONDITION.1142Œ000000C7…ISTAIEƒEQU†$C7“INTERNAL�IO�ERROR41143Œ000000C8…ISTAFDƒEQU†$C8“FAB/DATA�BLOCK�CONFLICT21144Œ000000C9…ISTARNƒEQU†$C9“RECORD�DOES�NOT�EXIST21145Œ000000CA…ISTAREƒEQU†$CA“RECORD�ALREADY�EXISTSK1146Œ000000CB…ISTAROƒEQU†$CB“RECORD�OVERFLOW/TOO�MANY�RECORDS�IN�DATA�BLOCK81147Œ000000CC…ISTAKYƒEQU†$CC“KEY�ERROR,�FAB�KEY�CONFLICT MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚20(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• 51148Œ000000CD…ISTAIDS‚EQU†$CD“INSUFFICIENT�DISC�SPACE51149Œ000000CE…ISTAUFƒEQU†$CE“UNRECOVERABLE�FILE�ERRORI1150Œ000000CF…ISTAALƒEQU†$CF“FILE�SPACE�ALLOCATION/DE-ALLOCATION�CONFLICT1151™*‚DEVICE�DEPENDENT�ERRORS81152Œ000000D1…ISTAUNR‚EQU†$D1“UNRECOVERABLE�DEVICE�ERROR01153Œ000000D2…ISTACMP‚EQU†$D2“DATA�COMPARE�ERROR21154Œ000000D3…ISTASPE‚EQU†$D3“SECTOR�PROTECT�ERROR-1155Œ000000E1…ISTANRƒEQU†$E1“DEVICE�NOT�READY(1156Œ000000E2…ISTADBƒEQU†$E2“DEVICE�BUSY,1157Œ000000E3…ISTACRC‚EQU†$E3“DATA�CRC�ERROR31158Œ000000E4…ISTAWPƒEQU†$E4“WRITE�PROTECTED�DEVICE81159Œ000000E5…ISTADDM‚EQU†$E5“DELETED�DATA�MARK�DETECTED$1160Œ000000E6…ISTATOƒEQU†$E6“TIMEOUT31161Œ000000E7…ISTASAƒEQU†$E7“INVALID�SECTOR�ADDRESS,1162Œ000000E8…ISTACSM‚EQU†$E8“CHECKSUM�ERROR01163Œ000000E9…ISTARES‚EQU†$E9“DISC�RESTORE�ERROR)1164Œ000000EA…ISTADOƒEQU†$EA“DATA�OVERRUN21165Œ000000EB…ISTASCƒEQU†$EB“DEVICE�STATUS�CHANGED71166Œ000000EC…ISTADME‚EQU†$EC“TRACK/SECTOR�ID�NOT�FOUND 21167Œ000000ED…ISTAMRK‚EQU†$ED“ADDR.�MARK�CRC�ERROR(1168Œ000000EE…ISTASEK‚EQU†$EE“SEEK�ERROR(1169Œ000000EF…ISTABDS‚EQU†$EF“BAD�SECTOR1170™*1171™*ˆCHANNEL�ERRORS1172™**1173Œ000000F1…ISTACHN‚EQU†$F1“CHANNEL�BUSY/1174Œ000000F2…ISTADMA‚EQU†$F2“CHANNEL�DMA�ERROR91175Œ000000F3…ISTACDN‚EQU†$F3“UNRECOVERABLE�CHANNEL�ERROR.1176Œ000000F4…ISTACNT‚EQU†$F4“CONTROLLER�ERROR81177Œ000000F5…ISTACFG‚EQU†$F5“DEVICE�CONFIGURATION�ERROR+1178Œ000000F6…ISTABUS‚EQU†$F6“DMA�BUS�ERROR/1179Œ000000F7…ISTAMAP‚EQU†$F7“DMA�MAPPING�ERROR21180Œ000000F8…ISTADMC‚EQU†$F8“DMA�CONTROLLER�ERROR91181Œ000000F9…ISTAICE‚EQU†$F9“INDETERMINATE�CHANNEL�ERROR MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚21(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• 1183™*1184™*ˆI/O�MACROS1185™*1186™*…CALLING�SEQUENCE%1187™*ˆXXXCALL�(ADDR.�OF�PARAM�BLOCK)1188™* 1189¢OFFSETƒ01190™FHSCALL‚MACRO1191¢IFNC…'\1',''1192¢IFNC…'\1','(A0)'*1193¢LEA†\1,A0�LOAD�ADDRESS�OF�PARAM�BLOCK 1194¢ENDC 1195¢ENDC 1196¢TRAP…#3�CALL�EXEC�DIRECTIVE 1197¢ENDM1198™*1199™*1200™IOSCALL‚MACRO1201¢IFNC…'\1',''1202¢IFNC…'\1','(A0)'*1203¢LEA†\1,A0�LOAD�ADDRESS�OF�PARAM�BLOCK 1204¢ENDC 1205¢ENDC 1206¢TRAP…#2�CALL�EXEC�DIRECTIVE 1207¢ENDM1208™* 1209™*ˆIOS�PARAMETER�BLOCK�MACRO1210™*ŠCALLING�SEQUENCE%1211™*�XXX�(LABEL,PARAM1�...,PARAM�N)1212™*1213™IOS†MACRO1214™\0IOS„EQU†*1215¢IFC†'\1',''1216¢DFC.W„0“FUNCTION 1217¢ENDC1218¢IFNC…'\1',''1219¢DFC.W„\1’FUNCTION 1220¢ENDC1221¢IFC†'\2',''1222¢DFC.W„0’OPTIONS 1223¢ENDC1224¢IFNC…'\2',''1225¢DFC.W„\2’OPTIONS 1226¢ENDC1227¢DFC.B„0“STATUS1228¢IFC†'\3',''1229¢DFC.B„0’LUN 1230¢ENDC1231¢IFNC…'\3',''1232¢DFC.B„\3’LUN 1233¢ENDC1234¢DFC.B„0“RESERVED1235¢IFC†'\4',''1236¢DFC.B„0“PARTIAL�KEY�LENGTH 1237¢ENDC1238¢IFNC…'\4','' 1239¢DFC.B„\4’PARTIAL�KEY�LENGTH 1240¢ENDC MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚22(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• 1241¢IFC†'\5',''%1242¢DFC.L„0’RECORD�NO.�-�KEY�POINTER 1243¢ENDC1244¢IFNC…'\5',''&1245¢DFC.L„\5”RECORD�NO.�-�KEY�POINTER 1246¢ENDC1247¢IFC†'\6',''!1248¢DFC.L„0’BUFFER�START�ADDRESS 1249¢ENDC1250¢IFNC…'\6',''"1251¢DFC.L„\6“BUFFER�START�ADDRESS 1252¢ENDC1253¢IFC†'\7',''1254¢DFC.L„0“BUFFER�END�ADDRESS 1255¢ENDC1256¢IFNC…'\7','' 1257¢DFC.L„\7“BUFFER�END�ADDRESS 1258¢ENDC1259¢DFC.L„0“LENGTH�OF�TRANSFER1260¢IFC†'\8',''1261¢DFC.L„0’COMPLETION�ADDRESS 1262¢ENDC1263¢IFNC…'\8','' 1264¢DFC.L„\8’COMPLETION�ADDRESS 1265¢ENDC 1266¢ENDM1267™* 1268™*ˆFHS�PARAMETER�BLOCK�MACRO1269™*1270™FHS†MACRO1271™\0FHS„EQU†*1272¢IFC†'\1',''1273¢DFC.W„0’COMMAND 1274¢ENDC1275¢IFNC…'\1',''1276¢DFC.W„\1“COMMAND 1277¢ENDC1278¢IFC†'\2',''1279¢DFC.W„0“OPTIONS 1280¢ENDC1281¢IFNC…'\2',''1282¢DFC.W„\2”OPTIONS 1283¢ENDC1284¢DFC.B„0“STATUS1285¢IFC†'\3',''1286¢DFC.B„0’LUN 1287¢ENDC1288¢IFNC…'\3',''1289¢DFC.B„\3”LUN 1290¢ENDC1291¢IFC†'\4',''%1292¢DFC.L„$20202020ŒVOLUME-DEVICE�ID 1293¢ENDC1294¢IFNC…'\4',''1295¢DFC.L„\4’VOLUME-DEVICE�ID 1296¢ENDC1297¢DFC.W„0“USER�NUMBER1298¢DFC.L„$20202020‹CATALOG MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚23(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• 1299¢DFC.L„$202020201300¢DFC.L„$20202020‹FILENAME1301¢DFC.L„$202020201302¢DFC.W„$2020�EXTENSION1303¢DFC.W„0“RESERVED1304¢IFC†'\5',''1305¢DFC.B„0“WRITE�CODE 1306¢ENDC1307¢IFNC…'\5',''1308¢DFC.B„\5“WRITE�CODE 1309¢ENDC1310¢IFC†'\6',''1311¢DFC.B„0’READ�CODE 1312¢ENDC1313¢IFNC…'\6',''1314¢DFC.B„\6’READ�CODE 1315¢ENDC1316¢IFC†'\7',''1317¢DFC.W„0’RECORD�LENGTH 1318¢ENDC1319¢IFNC…'\7',''1320¢DFC.W„\7”RECORD�LENGTH 1321¢ENDC1322¢IFC†'\8',''1323¢DFC.L„0“SIZE/POINTER 1324¢ENDC1325¢IFNC…'\8',''1326¢DFC.L„\8“SIZE/POINTER 1327¢ENDC 1328¢ENDM1329™*1330™*ˆOUTPUT�CONSTANT�MACRO1331™*1332™DFC†MACRO 1333¢DC.\0„\1 1334¢ENDM  MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚24(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• T1338™*******************************************************************************T1339™*******************************************************************************1340™*31341™*ˆDATA�STRUCTURES�AND�EQUATES�FOR�INTERNAL�I/O1342™*1343™*ˆMODIFICATION�HISTORYB1344™*‰6/15/82‚Modified�DCB�so�that�default�configuration�is�last.;1345™*‰4/13/82‚Initial�update�to�make�all�systems�the�same.G1346™*‰2/23/82‚Addition�of�structures�used�in�CONFIGURE,�CHANGE�DEFAULT21347™*’CONFIGURATION,�and�REQUEST�STATUS�commands.A1348™*‰9/14/81‚Revision�2.0�--�Additional�DCB�field�equates.‚R.V.1349™*‰8/12/801350™*T1351™*******************************************************************************T1352™*******************************************************************************1353135461355Œ00000002…IOSTINƒEQU†2•IOS�TRAP�INSTRUCTION�NUMBER61356Œ00000003…FHSTINƒEQU†3•FHS�TRAP�INSTRUCTION�NUMBER=1357Œ2E464853…FHSID„EQU†'.FHS'�FILE�HANDLING�SERVICES�TASK�ID?1358Œ2E464D53…FMSID„EQU†'.FMS'�FILE�MANAGEMENT�SERVICES�TASK�ID<1359Œ2E494F53…IOSID„EQU†'.IOS'�INPUT/OUTPUT�SERVICES�TASK�ID51360Œ2E494F44…IODID„EQU†'.IOD'�I/O�COMPLETION�TASK�ID61361Œ2E545459…TTYID„EQU†'.TTY'�TERMINAL�DRIVER�TASK�ID51362Œ2E505254…PRTID„EQU†'.PRT'�PRINTER�DRIVER�TASK�ID51363Œ2E494F49…IOIID„EQU†'.IOI'�IO�INITIALIZER�TASK�ID.1364Œ2E53504C…SPLID„EQU†'.SPL'�SPOOLER�TASK�ID41365Œ00000001…IOSESSƒEQU†1•I/O�MODULE�SESSION�NUMBER,1366Œ00000000…DRVHLTƒEQU†0•HALT�I/O�SUB-CODE01367Œ00000001…DRVEVTƒEQU†1•DRIVER�EVENT�SUB-CODE01368Œ00000002…TRMEVTƒEQU†2•IODONE�EVENT�SUB-CODE71369Œ00000003…STAEVTƒEQU†3•STATUS�CHANGE�EVENT�SUB-CODE91370Œ00000004…BRKEVTƒEQU†4•BREAK�CONDITION�EVENT�SUB-CODE41371Œ00000005…IOLEVTƒEQU†5•IOS�LOGICAL�CMD.�SUB-CODE41372Œ00000006…FHLEVTƒEQU†6•FHS�LOGICAL�CMD.�SUB-CODE(1373Œ00000007…SPLEVTƒEQU†7•.SPL�SUB-CODE51374Œ00000008…CFGEVTƒEQU†8•RECONFIGURE�EVENT�SUB-CODE81375Œ494F5347…IOCOMNƒEQU†'IOSG'�SHARED�DATA�SEGMENT�NAME13761377™*)1378™*‚DEVICE�I/O�EVENT�MESSAGE�STRUCTURE1379™*$1380¢OFFSETƒ0•START�WITH�TEXT�OFFSET*1381ƒ00000000�00000001ŽDS.B…1•EVENT�LENGTH(1382ƒ00000001�00000001ŽDS.B…1•EVENT�CODE)1383ƒ00000002�00000004ŽDS.L…1•SENDER�TASK,1384ƒ00000006�00000004ŽDS.L…1•SENDER�SESSION-1385ƒ0000000A�00000001…EVTCODƒDS.B…1•SUB-CODE&1386ƒ0000000B�00000001ŽDS.B…1•RESERVED01387ƒ0000000C�00000004…EVTDCBƒDS.L…1•DCB�ADDRESS'1388Œ00000010…EVTLNGƒEQU†*•EVENT�LENGTH13891390™*&1391™*‚FMS�I/O�EVENT�MESSAGE�STRUCTURE1392™*$1393¢OFFSETƒ0•START�WITH�TEXT�OFFSET*1394ƒ00000000�00000001ŽDS.B…1•EVENT�LENGTH(1395ƒ00000001�00000001ŽDS.B…1•EVENT�CODE MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚25(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• )1396ƒ00000002�00000004ŽDS.L…1•SENDER�TASK,1397ƒ00000006�00000004ŽDS.L…1•SENDER�SESSION-1398ƒ0000000A�00000001…EVTKODƒDS.B…1•SUB-CODE&1399ƒ0000000B�00000001ŽDS.B…1•RESERVED.1400ƒ0000000C�00000004…EVTLUEƒDS.L…1•LUT�ENTRY(1401ƒ00000010�00000004…EVTLUTƒDS.L…1•LUT<1402ƒ00000014�00000001…EVTTINƒDS.B…1•TRAP�INSTRUCTION�NUMBER91403ƒ00000015�00000001…EVTPRIƒDS.B…1•REQUESTOR'S�PRIORITY:1404ƒ00000016�00000004…EVTTSKƒDS.L…1•REQUESTOR'S�TASK�NAME?1405ƒ0000001A�00000004…EVTSESƒDS.L…1•REQUESTOR'S�SESSION�NUMBER01406ƒ0000001E�00000002…EVTUNMƒDS.W…1•USER�NUMBER31407ƒ00000020�00000004…EVTRD0ƒDS.L…1•REQUESTOR'S�D091408ƒ00000024�00000004…EVTRA0ƒDS.L…1•ADDRESS�OF�IOCB�(A0).1409ƒ00000028�00000001…EVTPSTƒDS.B…1•PB�STATUS.1410ƒ00000029�00000001…EVTPSZƒDS.B…1•PB�LENGTH,1411Œ0000002A…EVTLENƒEQU†*•LENGTH�OF�MESSAGE14121413™*(1414™*‚FHS�COMMAND�BIT�EQUATES�(16�BITS)1415™*$1416Œ00000007…FHALLOB‚EQU†7•ALLOCATE"1417Œ00000006…FHASGNB‚EQU†6•ASSIGN41418Œ00000005…FHCHNGB‚EQU†5•CHANGE�ACCESS�PERMISSION"1419Œ00000004…FHRENMB‚EQU†4•RENAME#1420Œ00000003…FHPROTB‚EQU†3•PROTECT  !1421Œ00000002…FHCLOSB‚EQU†2•CLOSE"1422Œ00000001…FHDELTB‚EQU†1•DELETE&1423Œ00000000…FHCKPTB‚EQU†0•CHECKPOINT/1424Œ00000007…FHRATTB‚EQU†7•RETRIEVE�ATTRIBUTES11425Œ00000006…FHFDENB‚EQU†6•FETCH�DIRECTORY�ENTRY21426Œ00000005…FHFDMNB‚EQU†5•FETCH�DEVICE�MNEMONICS01427Œ00000004…FHCHLUB‚EQU†4•CHANGE�LU�ASSIGNMENT*1428Œ00000000…FHDVOLB‚EQU†0•DEFAULT�VOLUME14291430™*'1431™*‚FHS�OPTION�BIT�EQUATES�(16�BITS)1432™*&1433Œ00000003…FOPOVRTB�EQU†3•OVERWRITE$1434Œ00000004…FOPTRNB‚EQU†4•TRUNCATE21435Œ00000005…FOPABFB‚EQU†5•ALLOCATE�SHARED�BUFFER51436Œ00000006…FOPBEGB‚EQU†6•POSITION�AT�BEGINNING/END/1437Œ0000000B…FOPADRB‚EQU†11”RETURN�PHY.ADR�BIT+1438Œ00000000…FOPSLUB‚EQU†0•SEND/RECEIVE�LU,1439Œ0000000F…FOPKEPB‚EQU†15”KEEP�ASSIGNMENT14401441™* 1442™*‚IOS�FUNCTION�CODE�EQUATES1443™*(1444Œ00000000…IOSFIOƒEQU†0•DATA�TRANSFER#1445Œ00000001…IOSFCMƒEQU†1•COMMANDS+1446Œ00000080…IOSFPVƒEQU†$80“PRIV.�COMMANDS14471448™*'1449™*‚IOS�OPTION�BIT�EQUATES�(16�BITS)1450™*(1451Œ00000000…IOPASCB‚EQU†0•ASCII/BINARY(1452Œ00000001…IOPWATB‚EQU†1•WAIT/PROCEEDB1453Œ00000002…IOPUNPB‚EQU†2•CONDITIONAL�PROCEED/UNCONDITIONAL�PROC MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚26(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• +1454Œ00000003…IOPFORB‚EQU†3•FORMATTED/IMAGE81455Œ00000004…IOPBRKB‚EQU†4•EXCLUSIVE�BREAK�NOTIFICATION(1456Œ00000005…IOPECHB‚EQU†5•ECHO/NO�ECHO(1457Œ00000006…IOPRECB‚EQU†6•RECORD/BLOCK81458Œ00000007…IOPLRNB‚EQU†7•LOGICAL�RECORD/RANDOM�RECORD61459Œ00000008…IOPNOKB‚EQU†8•NO�KEY�RETURNED/RETURN�KEY>1460Œ00000009…IOPNOCB‚EQU†9•NO�COMPLETION�ADDR/COMPLETION�ADDR/1461Œ0000000A…IOPINFB‚EQU†10”INPUT�FORMAT/IMAGE11462Œ0000000B…IOPSMPB‚EQU†11”SECONDARY�MEMORY�MAP)1463Œ0000000C…IOPFTRK‚EQU†12”FORMAT�TRACK41464Œ0000000C…IOPCTAB‚EQU†12”CLEAR�TYPE�AHEAD�BUFFER61465Œ0000000C…IOPCDOB‚EQU†12”CLEAR�DISCARD�OUTPUT�MODE-1466Œ0000000F…IOPTSKB‚EQU†15”TASK�ID�SUPPLIED14671468™*(1469™*‚ATTENTION�EVENT�MESSAGE�STRUCTURE1470™*)1471¢OFFSETƒ0•START�WITH�PARAMETER�OFFSET*1472ƒ00000000�00000001ŽDS.B…1•EVENT�LENGTH(1473ƒ00000001�00000001ŽDS.B…1•EVENT�CODE41474ƒ00000002�00000004…EVADEVƒDS.L…1•DEVICE�MNEMONIC+1475ƒ00000006�00000002…EVASTAƒDS.W…1•STATUS1476Œ00000008…EVALENƒEQU†*14771478™*-1479™*‚ATTENTION�STATUS�BIT�EQUATES�(16�BITS)1480™*+1481Œ00000001…EVATNAS‚EQU†1•DEVICE�ASSIGNED14821483™*%1484™*‚IOS�PARAMETER�BLOCK�EXTENSIONS1485™*.1486¢OFFSETƒIOSBLN�START�WITH�END�OF�IOS�BLOCK81487ƒ0000001C�00000004…IOSTSKƒDS.L…1•REQUESTOR'S�TASK�ID81488ƒ00000020�00000004…IOSSESƒDS.L…1•REQUESTOR'S�SESSION'1489Œ00000024…IOSNLNƒEQU†*•TOTAL�LENGTH MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚27(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• 1491™*À***********:1492™*‚DEVICE�CONTROL�BLOCK�(DCB)�DATA�STRUCTURE•*‚D�C�B‚*1493™*À***********$1494¢OFFSETƒ0•START�WITH�ZERO�OFFSET:1495ƒ00000000�00000004…DCBPTRƒDS.L…1•POINTER�TO�NEXT�BLOCK51496ƒ00000004�00000004…DCBAIDƒDS.L…1•ASCII�IDENTIFIERM1497ƒ00000008�00000004…DCBDCQƒDS.L…1•ADDRESS�OF�DCQ�ENTRY�(0=NOTHING�PENDING):1498ƒ0000000C�00000008…DCBDIDƒDS.L…2•DRIVER�ID�(TASK�NAME);1499ƒ00000014�00000004…DCBLUTƒDS.L…1•ADDRESS�OF�CURRENT�LUT91500ƒ00000018�00000002…DCBATTƒDS.W…1•ATTRIBUTES�OF�DEVICE71501ƒ0000001A�00000001…DCBWCDƒDS.B…1•WRITE�PROTECT�CODE61502ƒ0000001B�00000001…DCBRCDƒDS.B…1•READ�PROTECT�CODE-1503ƒ0000001C�00000002…DCBTMOƒDS.W…1•USE�FLAG01504ƒ0000001E�00000002…DCBWNTƒDS.W…1•WRITE�COUNT/1505ƒ00000020�00000002…DCBRNTƒDS.W…1•READ�COUNT01506ƒ00000022�00000002…DCBFLGƒDS.W…1•DEVICE�FLAG/1507ƒ00000024�00000004…DCBCCBƒDS.L…1•CHANNEL�ID:1508ƒ00000028�00000001…DCBCDVƒDS.B…1•CHANNEL�DEVICE�NUMBER81509ƒ00000029�00000001…DCBPRIƒDS.B…1•CONNECTION�PRIORITY:1510ƒ0000002A�00000004…DCBCRNƒDS.L…1•CURRENT�RECORD�NUMBERO1511ƒ0000002E�0000001C…DCBIOSƒDS.B…IOSBLN�ROOM�FOR�IOCB�(EXCLUDING�EXTENSIONS!)C1512ƒ0000004A�00000004…DCBLBAƒDS.L…1•LOGICAL�ADDRESS�OF�PARAM�BLOCK  D1513ƒ0000004E�00000001…DCBCCFƒDS.B…1•CONFIGURATION�COORDINATION�FLAG,1514™*�0�-->�DEVICE�IN�DEFAULT�CONFIGURATION71515™*�1�-->�DEVICE�MAY�NOT�BE�IN�DEFAULT�CONFIGURATION01516ƒ0000004F�00000001…DCBBCTƒDS.B…1•BREAK�COUNTA1517ƒ00000050�00000004…DCBBRKƒDS.L…1•ADDRESS�OF�BREAK�SERVICE�LUT:1518ƒ00000054�00000004…DCBSRVƒDS.L…1•BREAK�SERVICE�ADDRESS.1519ƒ00000058�000000000000�DCBRSVƒDC.L…0,0,0,031520™*œRESERVED�BUFFER�OF�16�BYTES�FOR�FUTURE�USAGE01521™*œBETWEEN�THE�DEVICE�INDEPENDENT�AND�DEVICE1522™*œDEPENDENT�INFORMATION1523™*1524™*‚DEVICE�DEPENDENT�PORTION1525™*91526Œ00000068…DCBDEVƒEQU†*•START�DEVICE�DEPENDENT�PORTION41527Œ00000072…DCBLENƒEQU†DCBDEV+IOSREC‰RECORD�LENGTH31528Œ00000074…DCBSECƒEQU†DCBDEV+IOSRSZ‰DISK�SECTORS71529Œ00000074…DCBSIZƒEQU†DCBDEV+IOSRSZ‰SCREEN/PAGE�SIZE41530Œ00000078…DCBTMWƒEQU†DCBDEV+IOSWTO‰WRITE�TIMEOUT31531Œ0000007C…DCBTMRƒEQU†DCBDEV+IOSRTO‰READ�TIMEOUT1532™*J1533™*�DEVICE�DEPENDENT�PORTION�FOR�TTY�COMPATABILITY�THAT�WAS�THROWN�AWAY1534™*�ORIGINALLY1535™*71536Œ00000082…DCBSBSƒEQU†DCBDEV+IOSBRC‰PROGRAMMING�INFO71537Œ00000086…DCBHBSƒEQU†DCBDEV+IOSRTV‰PROGRAMMING�INFOJ1538Œ0000008A…DCBTIMƒEQU†DCBDEV+IOSEOL‰I/O�TIMEOUT�VALUE�-�TIME�(IN�MSECS)>1539Œ0000008E…DCBDATƒEQU†DCBDEV+IOSBRT‰I/O�TIMEOUT�VALUE�-�DAY?1540Œ00000092…DCBCANƒEQU†DCBDEV+IOSBRT+4‡FLAG�FOR�VERSION�3�TTY1541™*(1542™*‚DISK�DCB�DEVICE�DEPENDENT�PORTION1543™*1544¢OFFSETƒDCBDEVE1545ƒ00000068�0000002E…DCBDKCƒDS.B…IOSDLN�ROOM�FOR�CONFIGURATION�INFO-1546Œ00000096…DDCBLNƒEQU†*•LENGTH�OF�DISK�DCB15471548™* MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚28(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• ,1549™*‚TERMINAL�DCB�DEVICE-DEPENDENT�PORTION1550™*1551¢OFFSETƒDCBDEVE1552ƒ00000068�00000030…DCBPTCƒDS.B…IOSTLN�ROOM�FOR�CONFIGURATION�INFO11553Œ00000098…CDCBLNƒEQU†*•LENGTH�OF�TERMINAL�DCB15541555™*+1556™*‚PRINTER�DCB�DEVICE-DEPENDENT�PORTION1557™*1558¢OFFSETƒDCBDEV"1559ƒ00000068�0000002AŽDS.B…IOSPLN01560Œ00000092…PDCBLNƒEQU†*•LENGTH�OF�PRINTER�DCB156115621563™*#1564™*‚DCBFLG�BIT�EQUATES�(16�BITS)1565™*D1566Œ00000000…DFLGONƒEQU†0•DEVICE�ON�LINE�0�-->�OFFLINE„1�-->�ONLINE(1567Œ00000001…DFLGWPƒEQU†1•WRITE�PROTECT/1568Œ00000002…DFLGSCƒEQU†2•DEVICE�STATUS�CHANGE91569Œ00000003…DFLGINƒEQU†3•DEVICE�BUSY�FOR�INITIALIZATION81570Œ00000004…DFLGCFƒEQU†4•DEVICE�BUSY�FOR�CONFIGURATION61571Œ00000005…DFLGCTƒEQU†5•CANCEL�TIMER�0-->NO‚1-->YESE1572Œ00000006…DFLGITƒEQU†6•SET�-->�IGNORE�TIMER�EVENT�FOR�THIS�DEVICE15731574™*#1575™*‚DCBATT�BIT�EQUATES�(16�BITS)1576™*(1577Œ00000000…DATREDƒEQU†0•SUPPORTS�READ)1578Œ00000001…DATWRTƒEQU†1•SUPPORTS�WRITE*1579Œ00000002…DATBINƒEQU†2•SUPPORTS�BINARY*1580Œ00000003…DATRANƒEQU†3•SUPPORTS�RANDOM)1581Œ00000004…DATIMGƒEQU†4•SUPPORTS�IMAGE,1582Œ00000005…DATHIOƒEQU†5•SUPPORTS�HALT�I/O31583Œ00000006…DATPOSƒEQU†6•SUPPORTS�POSITION�RECORD,1584Œ00000007…DATFMKƒEQU†7•SUPPORTS�FILEMARK-1585Œ00000008…DATINDƒEQU†8•INTERACTIVE�DEVICE)1586Œ00000009…DATPRTƒEQU†9•PRINTER�DEVICE-1587Œ0000000A…DATSPLƒEQU†10”SUPPORTS�SPOOLING91588Œ0000000B…DATWRCƒEQU†11”SUPPORTS�WRITE�WITH�CRC�CHECKB1589Œ0000000C…DATSPDƒEQU†12”SUPPORTS�SPECIAL�PURPOSE�DEVICE�DRIVER15901591™*1592™*‚DCBTMO�VALUES�(16�BITS)1593™*$1594™*ˆ0�=�NOT�ACTIVE�(OR�TIMED�OUT)(1595™*ˆ+�=�ACTIVE�IN�DATA�TRANSFER�PHASE&1596™*ˆ-�=�ACTIVE�IN�TERMINATION�PHASE1597™* MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚29(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• 1599™*À***********81600™*‚SYSTEM�VALUE�TABLE�(SVT)�DATA�STRUCTURE—*‚S�V�T‚*1601™*À***********$1602¢OFFSETƒ0•START�WITH�ZERO�OFFSET71603ƒ00000000�00000004…SVTSOPƒDS.L…1•I/O�SYSTEM�OPTIONSK1604ƒ00000004�00000004…SVTQSTƒDS.L…1•START�OF�DEVICE�CONNECTION�QUEUE�SPACEF1605ƒ00000008�00000004…SVTQNDƒDS.L…1•END�OF�DEVICE�CONNECT�QUEUE�SPACE.1606ƒ0000000C�00000004…SVTQUEƒDS.L…1•FIRST�DCQF1607ƒ00000010�00000004…SVTLSTƒDS.L…1•START�OF�LOGICAL�UNIT�TABLE�SPACE! D1608ƒ00000014�00000004…SVTLNDƒDS.L…1•END�OF�LOGICAL�UNIT�TABLE�SPACE61609ƒ00000018�00000004…SVTLUTƒDS.L…1•FIRST�TABLE�ENTRY=1610ƒ0000001C�00000004…SVTDSTƒDS.L…1•START�OF�DCB�TABLE�SPACE;1611ƒ00000020�00000004…SVTDNDƒDS.L…1•END�OF�DCB�TABLE�SPACE61612ƒ00000024�00000004…SVTDCBƒDS.L…1•FIRST�TABLE�ENTRY31613ƒ00000028�00000001…SVTSDCB‚DS.B…1•DCB�SEMAPHORE31614ƒ00000029�00000001…SVTSLUT‚DS.B…1•LUT�SEMAPHORE31615ƒ0000002A�00000001…SVTSDCQ‚DS.B…1•DCQ�SEMAPHORE31616ƒ0000002B�00000001…SVTSFCB‚DS.B…1•FCB�SEMAPHOREF1617ƒ0000002C�00000010…SVTSIDƒDS.L…4•I/O�SYSTEM�ID�AND�REVISION�NUMBER@1618ƒ0000003C�00000008…SVTBRKƒDS.L…2•TASK-ID�OF�UNCLAIMED�BREAKSM1619ƒ00000044�00000004…SVTBSAƒDS.L…1•SERVICE�ADDRESS�FOR�UNCLAIMED�BREAK�TASK16201621™*#1622™*‚EQUATES�FOR�SVTSOP�(32�BITS)1623™*(1624Œ00000000…SVOPMUƒEQU†0•MULTIPLE�USER&1625Œ00000001…SVOPFMƒEQU†1•FMS�PRESENT16261627™*À***********81628™*‚LOGICAL�UNIT�TABLE�(LUT)�DATA�STRUCTURE—*‚L�U�T‚*1629™*À***********•£!%)-159=AEIMQUY]a"eimquy}�…‰�$1630¢OFFSETƒ0•START�WITH�ZERO�OFFSET:1631ƒ00000000�00000004…LUTPTRƒDS.L…1•POINTER�TO�NEXT�TABLE,1632ƒ00000004�00000004…LUTTIDƒDS.L…1•TASK-ID81633ƒ00000008�00000004…LUTSESƒDS.L…1•TASK�SESSION�NUMBER;1634ƒ0000000C�00000001…LUTMLUƒDS.B…1•MAXIMUM�NUMBER�OF�LUNS81635ƒ0000000D�00000001…LUTCASƒDS.B…1•CURRENT�ASSIGNMENTS01636ƒ0000000E�00000002…LUTUNMƒDS.W…1•USER�NUMBER+1637Œ00000010…LUTBEGƒEQU†*•BEGIN�LU�ENTRIES1638™*$1639¢OFFSETƒ0•START�WITH�ZERO�OFFSET>1640ƒ00000000�00000001…LUTCAPƒDS.B…1•CURRENT�ACCESS�PERMISSION81641ƒ00000001�00000001…LUTCSFƒDS.B…1•CURRENT�STATUS�FLAG>1642ƒ00000002�00000002…LUTATTƒDS.W…1•ATTRIBUTES�OF�DEVICE/FILE71643ƒ00000004�00000004…LUTDCBƒDS.L…1•ADDRESS�OF�DCB/FCB/1644Œ00000008…LUTSEGƒEQU†*•LENGTH�OF�EACH�ENTRY16451646™*"1647™*‚LUTCSF�BIT�EQUATES�(8�BITS)1648™*!1649Œ00000000…LUSFACƒEQU†0•ACTIVE&1650Œ00000001…LUSFIOƒEQU†1•I/O�PENDING(1651Œ00000002…LUSFCPƒEQU†2•CLOSE�PENDING)1652Œ00000003…LUSFASƒEQU†3•ASSIGN�PENDING*1653Œ00000004…LUSFCWƒEQU†4•CONNECTION�WAIT,1654Œ00000007…LUSFDVƒEQU†7•DEVICE�ASSIGNMENT16551656™*À*********** MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚30(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• :1657™*‚DEVICE�CONNECT�QUEUE�(DCQ)�DATA�STRUCTURE•*‚D�C�Q‚*1658™*À***********$1659¢OFFSETƒ0•START�WITH�ZERO�OFFSET:1660ƒ00000000�00000004…DCQPTRƒDS.L…1•POINTER�TO�NEXT�TABLE>1661ƒ00000004�00000004…DCQNXTƒDS.L…1•POINTER�TO�NEXT�DCB�ENTRY31662ƒ00000008�00000004…DCQDCBƒDS.L…1•ADDRESS�OF�DCB31663ƒ0000000C�00000004…DCQLUTƒDS.L…1•ADDRESS�OF�LUT91664ƒ00000010�00000004…DCQLUEƒDS.L…1•ADDRESS�OF�LUN�ENTRY<1665ƒ00000014�00000004…DCQLADƒDS.L…1•LOGICAL�ADDRESS�OF�IOCB31666ƒ00000018�00000001…DCQTINƒDS.B…1•TRAP�INDICATOR21667ƒ00000019�00000001…DCQRESƒDS.B…1•RESERVED�BYTE;1668ƒ0000001A�00000001…DCQPLNƒDS.B…1•PARAMETER�BLOCK�LENGTH-1669ƒ0000001B�00000001…DCQPRIƒDS.B…1•PRIORITY1670Œ0000001C…DCQLENƒEQU†* MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚31(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE•  MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚32(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• N1674™*************************************************************************1675™*1676™*—***********1677™*—*�4/16/82�*1678™*—***********1679™*P1680™***************************************************************************1681™*1682™*91683™*ˆDATA�STRUCTURES�AND�EQUATES�FOR�EXEC�(CHANNEL)�I/O1684™*1685™**1686™*ˆEXEC�I/O�PARAMETER�BLOCK�STRUCTURES1687™*$1688¢OFFSETƒ0•START�WITH�ZERO�OFFSET11689ƒ00000000�00000001…XIOCODƒDS.B…1•COMMAND�CODE51690ƒ00000001�00000001…XIOSCDƒDS.B…1•COMMAND�SUB-CODE<1691ƒ00000002�00000001ŽDS.B…1•--�UPPER�BYTE�OF�OPTIONS�WORD!C! 1692ƒ00000003�00000001…XIOOPTƒDS.B…1•--�LOWER�BYTE�OF�OPTIONS�WORD!51693ƒ00000004�00000004…XIOCIDƒDS.L…1•CHANNEL�MNEMONIC+1694Œ00000008…XIOPRMƒEQU†*•START�PARAMETERS1695™*)1696™*ˆALLOCATE�PARAMETER�BLOCK�STRUCTURE1697™*/1698¢OFFSETƒXIOPRM�START�WITH�PARAMETERS�OFFSET11699ƒ00000008�00000001…XIOCTPƒDS.B…1•CHANNEL�TYPEV1700ƒ00000009�00000001…XIOMICƒDS.B…1•MASKED�INTERRUPT�INSTRUCTION�COUNT�(USED�BY�CHPI)G1701ƒ0000000A�00000004…XIOSVAƒDS.L…1•I/O�HANDLER�SERVICE�VECTOR�ADDRESSX1702ƒ0000000E�00000004…XIOSUPƒDS.L…1•SUPERVISOR�CHANNEL�MNEMONIC�(use�only�if�option�bit-1703™*§XOPSUB�is�set--otherwise�leave�this�0)31704ƒ00000012�00000004…XIOADDƒDS.L…1•DEVICE�ADDRESS41705ƒ00000016�00000002…XIOMLNƒDS.W…1•#�OF�BYTES�ACRO21706ƒ00000018�00000001…XIOVNOƒDS.B…1•VECTOR�NUMBER51707ƒ00000019�00000001…XIOPPRƒDS.B…1•POLLING�PRIORITY61708ƒ0000001A�00000001…XIOSPRƒDS.B…1•SOFTWARE�PRIORITY81709ƒ0000001B�00000001…XIOPFCƒDS.B…1•POLLING�FIELD�COUNT!1710Œ0000001C…XIOALNƒEQU†*•LENGTH1711™*1712™*ˆINTERRUPT�SEGMENTS1713™* 1714¢OFFSETƒ081715ƒ00000000�00000002…XIOPOFƒDS.W…1•POLLING�BYTE�OFFSET11716ƒ00000002�00000001…XIOMSKƒDS.B…1•POLLING�MASK71717ƒ00000003�00000001…XIOTSTƒDS.B…1•POLLING�TEST�VALUE11718ƒ00000004�00000002…XIOROFƒDS.W…1•RESET�OFFSET01719ƒ00000006�00000001…XIOREVƒDS.B…1•RESET�VALUE&1720ƒ00000007�00000001ŽDS.B…1•RESERVED!1721Œ00000008…XIOXLNƒEQU†*•LENGTH1722™*-1723™*ˆEQUATES�FOR�'XIOOPT'�(8�BITS)�ALLOCATE1724™*E1725Œ00000000…XOPSHRƒEQU†0•Only�system�tasks�may�attach�this�channel.31726Œ00000001…XOPEXCƒEQU†1•Reserved�(used�by�CHPI)./1727Œ00000004…XOPDIRƒEQU†4•Exclusive�vectoring.N1728Œ00000008…XOPSUBƒEQU†8•This�channel�is�to�be�subordinate�to�the�supervisor#1729™*§whose�mnemonic�is�in�CCBSUP.H1730Œ00000010…XOPSUPƒEQU†$10“This�channel�is�to�be�a�supervisor�channel.1731™* MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚33(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• '1732™*ˆATTACH�PARAMETER�BLOCK�STRUCTURE1733™*/1734¢OFFSETƒXIOPRM�START�WITH�PARAMETERS�OFFSET71735ƒ00000008�00000001…XIOKEYƒDS.B…1•USER�GENERATED�KEY<1736ƒ00000009�00000001…XIOSLNƒDS.B…1•LENGTH�OF�STATUS�RETURN31737ƒ0000000A�00000004…XIOVADƒDS.L…1•VECTOR�ADDRESS21738ƒ0000000E�00000002…XIOTOCƒDS.W…1•TIMEOUT�COUNT01739ƒ00000010�00000002…XIORETƒDS.W…1•RETRY�COUNT1740™*+1741™*ˆEQUATES�FOR�'XIOOPT'�(8�BITS)�ATTACH1742™*(1743Œ00000000…XOPWUPƒEQU†0•ISSUE�WAKE-UP.1744Œ00000001…XOPASQƒEQU†1•ISSUE�ASQ�INTERRUPT*1745Œ00000000…XOPPROƒEQU†0•I/O�AND�PROCEED'1746Œ00000002…XOPWATƒEQU†2•I/O�AND�WAIT21747Œ00000003…XOPSRVƒEQU†3•SERVICE�VECTOR�SUPPLIED1748™*+1749™*ˆEQUATES�FOR�'XIOOPT'�(8�BITS)�DETACH1750™*21751Œ00000000…XOPONEƒEQU†0•DETACH�ONLY�ONE�CHANNEL.1752Œ00000001…XOPALLƒEQU†1•DETACH�ALL�CHANNELS1753™*-1754™*ˆINITIATE�I/O�PARAMETER�BLOCK�STRUCTURE1755™*/1756¢OFFSETƒXIOPRM�START�WITH�PARAMETERS�OFFSET,1757ƒ00000008�00000004…XIOTSKƒDS.L…1•TASK�ID81758ƒ0000000C�00000004…XIOSESƒDS.L…1•TASK�SESSION�NUMBER1759Œ00000010…XIOCHNƒEQU†*)1760™*ˆNON-STANDARD�CHANNEL�UNIQUE�FIELDS91761ƒ00000010�00000004…XIOSADƒDS.L…1•START�BUFFER�ADDRESS51762ƒ00000014�00000004…XIOBLNƒDS.L…1•LENGTH�OF�BUFFER>1763ƒ00000018�00000004…XIOBOFƒDS.L…1•ADDRESS�OF�BUFFER�POINTER=1764ƒ0000001C�00000004…XIOCADƒDS.L…1•COMMAND�SEQUENCE�ADDRESS?1765ƒ00000020�00000002…XIOCLNƒDS.W…1•LENGTH�OF�COMMAND�SEQUENCE31766ƒ00000022�00000002…XIOCOFƒDS.W…1•COMMAND�OFFSET<1767ƒ00000024�00000004…XIOTADƒDS.L…1•TRANSIENT�SPACE�ADDRESS>1768ƒ00000028�00000002…XIOTLNƒDS.W…1•LENGTH�OF�TRANSIENT�SPACE:1769ƒ0000002A�00000004…XIORTNƒDS.L…1•RETURN�STATUS�POINTER!1770Œ0000002E…XIOILNƒEQU†*•LENGTH%1771™*ˆSTANDARD�CHANNEL�UNIQUE�FIELDS1772¢OFFSETƒXIOCHNC1773ƒ00000010�00000004…XIOUIDƒDS.L…1•USER�SUPPLIED�ID�(DCB�POINTER)A1774ƒ00000014�00000004…XIOCPKƒDS.L…1•START�COMMAND�PACKET�ADDRESS21775ƒ00000018�00000002…XIOPLNƒDS.W…1•PACKET�LENGTH$1776Œ0000001A…XIONLNƒEQU†*•PB�LENGTH1777™*11778™*ˆEQUATES�FOR�'XIOOPT'�(8�BITS)�INITIATE�I/O1779™*01780" Œ00000000…XOPDCPƒEQU†0•DRIVER�COMMAND�PACKET31781Œ00000001…XOPRCPƒEQU†1•REQUESTOR�COMMAND�PACKET1782™*"1783™*�CMR�TRAP�1�EXEC�ERROR�CODES1784™*31785Œ0000000B…XSTMNOƒEQU†$0B“CHANNEL�MNEMONIC�ERROR1786™*1787™*ˆINIT.�I/O�SUB�CODES1788™*'1789Œ00000000…XDSCMDƒEQU†0•INITIATE�I/O MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚34(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• 1790Œ00000001…XDRESTƒEQU†1•RESET"1791Œ00000002…XDHALTƒEQU†2•HALT�IO,1792Œ00000003…XDRESBƒEQU†3•RESUBMIT�SEQUENCE1793™*01794™*ˆEQUATES�FOR�RETURN�STATUS�(D0�AND�XRSSTA)1795™*;1796Œ00000081…XSTNATƒEQU†$81“CHANNEL�NOT�ATTACHED�TO�CALLER=1797Œ00000082…XSTAATƒEQU†$82“CHANNEL�ATTACHED�TO�ANOTHER�TASK-1798Œ00000083…XSTOFFƒEQU†$83“CHANNEL�OFF-LINE)1799Œ00000084…XSTBSYƒEQU†$84“CHANNEL�BUSY?1800Œ00000085…XSTINVƒEQU†$85“INVALID�CALL�FOR�THIS�CHANNEL�TYPE1801™*81802Œ00000091…XSTCPSƒEQU†$91“COMMAND�PACKET�STRUC.�ERROR11803Œ00000092…XSTCMEƒEQU†$92“CHANNEL�MARKED�ERROR01804Œ00000093…XSTADSƒEQU†$93“BUFFER�LENGTH�ERROR/1805Œ00000094…XSTADBƒEQU†$94“BASE�ADDRESS�ERROR1806™*71807Œ000000A1…XSTSMBƒEQU†$A1“SHARED�MEMORY�BUSY�(FATAL)/1808Œ000000A2…XSTUANƒEQU†$A2“UNEXPECTED�ACK/NAK,1809Œ000000A3…XSTMANƒEQU†$A3“MISSING�ACK/NAK31810Œ000000A4…XSTSYNƒEQU†$A4“IPC�ACK/NAK�SYNC�ERROR31811Œ000000A5…XSTBCMƒEQU†$A5“BAD�CMD�COUNT�EXCEEDED01812Œ000000A7…XSTSHMƒEQU†$A7“SHARED�MEMORY�ERROR1813™*91814Œ000000B1…XSTRNGƒEQU†$B1“COMMAND�SEQUENCE�RANGE�ERROR41815Œ000000B2…XSTIBBƒEQU†$B2“ILLEGAL�BACKWARD�BRANCH41816Œ000000B3…XSTIOPƒEQU†$B3“ILLEGAL�COMMAND�OP-CODE61817Œ000000B4…XSTHLTƒEQU†$B4“I/O�COMMAND�SEQUENCE�HALT>1818Œ000000B5…XSTSDAƒEQU†$B5“SOURCE�FIELD�DEVICE�ADDRESS�ERROR>1819Œ000000B6…XSTSBAƒEQU†$B6“SOURCE�FIELD�BUFFER�ADDRESS�ERROR@1820Œ000000B7…XSTSTAƒEQU†$B7“SOURCE�FIELD�TRANSIENT�ADDRESS�ERRO=1821Œ000000B8…XSTDDAƒEQU†$B8“DEST.�FIELD�DEVICE�ADDRESS�ERROR=1822Œ000000B9…XSTDBAƒEQU†$B9“DEST.�FIELD�BUFFER�ADDRESS�ERROR@1823Œ000000BA…XSTDTAƒEQU†$BA“DEST.�FIELD�TRANSIENT�ADDRESS�ERROR1824™*-1825Œ000000C6…XSTSESƒEQU†$C6“BAD�SESSION�CODE/1826Œ000000C7…XSTBUFƒEQU†$C7“BAD�BUFFER�ADDRESS.1827Œ000000C8…XSTBLNƒEQU†$C8“BAD�BUFFER�LENGTH/1828Œ000000C9…XSTCADƒEQU†$C9“CHANNEL�ADR.�ERROR1829™*31830™*ˆDATA�STRUCTURE�FOR�NON-STANDARD�RETURN�EVENT1831™*&1832¢OFFSETƒ0•START�WITH�VARIABLE�DATA*1833ƒ00000000�00000001ŽDS.B…1•EVENT�LENGTH(1834ƒ00000001�00000001ŽDS.B…1•EVENT�CODE01835ƒ00000002�00000001…XRSSTAƒDS.B…1•STATUS�CODE01836ƒ00000003�00000001…XRSKEYƒDS.B…1•CHANNEL�KEY81837ƒ00000004�00000002…XRSPTRƒDS.W…1•LAST�COMMAND�NUMBER!1838Œ00000006…XRSLENƒEQU†*•LENGTH1839™*61840™*ˆDATA�STRUCTURE�FOR�TYPE�(70,71,FF)�RETURN�EVENT1841™*&1842¢OFFSETƒ0•START�WITH�VARIABLE�DATA*1843ƒ00000000�00000001ŽDS.B…1•EVENT�LENGTH(1844ƒ00000001�00000001ŽDS.B…1•EVENT�CODE/1845ƒ00000002�00000001…XRPSTAƒDS.B…1•EVENT�TYPE01846ƒ00000003�00000001…XRPKEYƒDS.B…1•CHANNEL�KEY?1847ƒ00000004�00000004…XRPUIDƒDS.L…1•USER�SUPPLIED�ID�(DCB�PTR) MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚35(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• 11848ƒ00000008�00000002…XRPSTVƒDS.W…1•STATUS�VALUE,1849Œ0000000A…XRPPRMƒEQU†*•STATUS�PARAMETERS1850™*$1851™*ˆEQUATES�FOR�'XRPSTA'�(8�BITS)1852™**1853Œ00000070…XPSNRMƒEQU†$70“NORMAL�RETURN'1854Œ00000071…XPSHLTƒEQU†$71“HALT/ABORT51855Œ00000080…XPSUNSƒEQU†$80“UNSOLICITED�DEVICE�EVENT61856Œ000000FF…XPSUNRƒEQU†$FF“UNSOLICITED�CHANNEL�EVENT1857™*1858™*ˆEQUATES�FOR�'XRPSTV'1859™*81860Œ00000000…XSTVABT‚EQU†0•INVALIT�HALT�COMMAND�(ABORT))1861Œ00000000…XSTVDST‚EQU†0•DEVICE�STATUS71862Œ00000001…XSTVNID‚EQU†1•DEVICE�STATUS�(NO�ID�GIVEN)*1863Œ00000000…XSTVRSET�EQU†0•CHANNEL�RESET*1864Œ000000FF…XSTVDWN‚EQU†$FF“CHANNEL�DOWN1865™*L1866™*‚Remainder�of�event�if�XRPSTA=$80�and�XRPSTV=0.‚This�is�the�format�forM1867™*‚an�unsolicited�event�if�INITIATE�I/O�commands�have�been�done�and�hence1868™*‚the�device�ID�is�known.1869™*/1870¢OFFSETƒXRPPRM�START�WITH�PACKET�PARAMETERS21871ƒ00000" 00A�00000001…XRPDSTƒDS.B…1•DEVICE�STATUS01872ƒ0000000B�00000001…XRPDTPƒDS.B…1•DEVICE�TYPE!1873Œ0000000C…XRPLENƒEQU†*•LENGTH1874™*H1875™*‚Remainder�of�event�if�XRPSTA=$80�and�XRPSTV=1.‚This�is�the�formatO1876™*‚for�an�unsolicited�event�if�no�INITIATE�I/O�commands�have�been�done�yet.1877™*1878¢OFFSETƒXRPLEN218NSƒEQU†$80“UNS000001…XRPDNOƒDS.B…1•DEVICE�NUMBER&1880ƒ0000000D�00000001ŽDS.B…1•RESERVED"1881Œ0000000E…XRP1LEN‚EQU†*•LENGTH1882™*&1883™*ˆCHANNEL�COMMAND�DIRECTIVE�CODES1884™*#1885Œ00000001…XDCALLƒEQU†1•ALLOCATE!1886Œ00000002…XDDELTƒEQU†2•DELETE!1887Œ00000003…XDATCHƒEQU†3•ATTACH!1888Œ00000004…XDDTCHƒEQU†4•DETACH'1889Œ00000005…XDONLNƒEQU†5•MARK�ON�LINE(1890Œ00000006…XDOFLNƒEQU†6•MARK�OFF�LINE'1891Œ00000007…XDINITƒEQU†7•INITIATE�I/O1892™*'1893™*ˆDIRECTIVE�NUMBER�FOR�CHANNEL�I/O1894™*-1895Œ0000003C…XCAIO„EQU†60”ARBITRARY�I/O�CODE21896Œ0000003C…XCCMR„EQU†60”CHANNEL�MANAGEMENT�CODE1897™*21898™*ˆDATA�STRUCTURE�FOR�CHANNEL�DATA�BLOCK�(CDB)1899™* 1900¢OFFSETƒ021901ƒ00000000�00000004…XCDBPTR‚DS.L…1•NEXT�POINTERI1902ƒ00000004�00000002…XCDBOPT‚DS.W…1•OPTIONS�TO�USE�IN�ALLOCATE�COMMAND.61903ƒ00000006�00000004…XCDBAID‚DS.L…1•ASCII�IDENTIFIER<1904ƒ0000000A�00000014…XCDBPRM‚DS.B…XIOALN-XIOPRM‰PARAMETERS1905™* MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚36(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• ,1906™*ˆDRIVER�TRANSIENT�SPACE�DATA�STRUCTURE1907™*$1908¢OFFSETƒ0•START�WITH�ZERO�OFFSET11909ƒ00000000�00000004…ZSTAT„DS.L…1•DEVICE�STATUS.1910ƒ00000004�00000004…ZOPT…DS.L…1•I/O�OPTIONS21911ƒ00000008�00000004…ZDOPT„DS.L…1•DRIVER�OPTIONS81912ƒ0000000C�00000004…ZRLEN„DS.L…1•DEVICE�RECORD�LENGTH21913ƒ00000010�00000004…ZBCNT„DS.L…1•BUFFER�COUNTER;1914ƒ00000014�00000004…ZBPTR„DS.L…1•BUFFER�RELATIVE�POINTER51915ƒ00000018�00000004…ZEOLC„DS.L…1•END�OF�LINE�CHAR.21916ƒ0000001C�00000004…ZCRNULƒDS.L…1•CR�NULL�COUNT<1917ƒ00000020�00000004…ZSBITSƒDS.L…1•PROGRAM�BYTE�FOR�DEVICE81918ƒ00000024�00000004…ZBAL…DS.L…1•BRANCH�AND�LINK�VALUE41919ƒ00000028�00000004…ZNCNT„DS.L…1•NULL�PAD�COUNTER71920ƒ0000002C�00000004…ZBUF…DS.L…1•TEMP.�STORAGE�BUFFER91921ƒ00000030�00000004…ZMODE1ƒDS.L…1•2661�MODE�REGISTER�191922ƒ00000034�00000004…ZMODE2ƒDS.L…1•2661�MODE�REGISTER�21923Œ00000038…TSPACEƒEQU†*1924™*11925™*ˆDRIVER�CHANNEL�CONTROL�AREA�DATA�STRUCTURE1926™*$1927¢OFFSETƒ0•START�WITH�ZERO�OFFSET31928ƒ00000000�00000004…ZCID…DS.L…1•CHANNEL�MNEMONIC-1929ƒ00000004�00000002…ZSTW…DS.W…1•STATE�WORD.1930ƒ00000006�00000001…ZKEY…DS.B…1•CHANNEL�KEY.1931ƒ00000007�00000001…ZRSET„DS.B…1•RESET�FLAG81932ƒ00000008�00000004…ZBSAD„DS.L…1•START�BUFFER�ADDRESS;1933ƒ0000000C�00000004…ZTSAD„DS.L…1•TRANSIENT�SPACE�ADDRESS*1934ƒ00000010�00000004…ZPTR…DS.L…1•POINTER1935Œ00000014…ZLEN…EQU†*•LENGTH1936™*1937™*ˆZSTW�(STATE�WORD)�VALUES1938™*)1939™*’-1�=�TERMINATION�(NOTHING�PENDING)1940™*“0�=�NOT�ACTIVE1941™*“1�=�I/O�IN�PROGRESS MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚37(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• O1944™**************************************************************************1945™*1946™*P1947™*ƒThe�following�code�has�been�extracted�from�an�operating�I/O�driver�and�isS1948™*�meant�to�serve�only�as�an�aid�to�understanding�channel�I/O�drivers�and�theirR1949™*�interface�to�VERSAdos�and�the�task�requesting�the�I/O.�The�structure�of�theQ1950™*�code�and�the�techniques�used�therein�are�neither�recommended�nor�supportedR1951™*�by�MOTOROLA.�Although�the�code�supplied�is�believed�to�be�relatively�deviceS1952™*�independent,�no�guarantee�is�made�that�the�addition�of�only�device�dependent41953™*�code�will�produce�a�functional�device�driver.1954™*,1955™*ƒPURPOSE:‚CHANNEL�(DEVICE)�I/O�HANDLER1956™*41957™*ƒENTRY:‚JSR�FROM�CMR�HANDLER�(COMMAND�SERVICE)%1958™*‹JSR�FROM�CMR�INTERRUPT�HANDLER1959™*21960™*ƒEXIT:�-�ALWAYS�EXITS�WITH�A�RTS�INS# TRUCTION1961™*1962™*1963™*ƒCODE�IS�RE-ENTRANT1964™*1965™*M1966™*-----------------------------------------------------------------------1967™* MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚38(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• 1969™DRVORG:1970™*-1971™****************************************-1972™*�EQUATES�FOR�SPECIAL�ASCII�CHARACTERS�*-1973™****************************************1974™*1975Œ00000000…NUL†EQU‡$00‘Null1976Œ00000007…BEL†EQU‡$07‘Bell"1977Œ00000008…BS‡EQU‡$08‘Backspace"1978Œ0000000A…LF‡EQU‡$0A‘Line�feed"1979Œ0000000C…FF‡EQU‡$0C‘Form�feed(1980Œ0000000D…CR‡EQU‡$0D‘Carriage�return!1981Œ00000020…SPACE„EQU‡$20‘Blank19821983™*1984™******************1985™*�DEVICE�EQUATES�*1986™******************1987™*91988Œ00000002…DEV1ACƒEQU‡2“A-side�control�register�offset91989Œ00000006…DEV1BCƒEQU‡6“B-side�control�register�offset61990Œ00000000…DEV1ADƒEQU‡0“A-side�data�register�offset61991Œ00000004…DEV1BDƒEQU‡4“B-side�data�register�offset1992™*.1993Œ00000004…STRBSYƒEQU‡%00000100‹Device�busy21994Œ00000001…STRSELƒEQU‡%00000001‹Device�selected1995™*71996Œ0000003E…DSDVIAƒEQU‡$3E‘Disabled�A-side�interrupts71997Œ0000003C…DSDVIBƒEQU‡$3C‘Disabled�B-side�interrupts19981999™*2000™*************************2001™*�MISCELLANEOUS�EQUATES�*2002™*************************2003™*)2004Œ00000001…IOEVCD„EQU„1’I/O�event�code  62006Œ00000007…VALATM„EQU„%111�Mask�of�driver�supported2007™*£attributes.F2008Œ0000FFF8…NVALATMƒEQU„$FFFF-VALATM‡Mask�of�unsupported�attributes.  92010Œ00000007…VALPRM„EQU„1<2144�7�00000027�34•DC.Bƒ'4'’This�is�the�minimum�major�VERSAdos+2145™*£revision�level�with�which�the�driver.2146™*£is�compatible.�The�major�revision�level.2147™*£is�the�number�to�the�left�of�the�period2148™*£as�in�VERSADOS�4.XX. MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚43(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• O2150™**************************************************************************2151™*!2152™*‰COMMAND�TABLE�&�JUMP�TABLE2153™*?2154™*‰These�are�used�by�the�command�service�routine�to�jump�to32155™*‰the�appropriate�routine�to�handle�a�command.2156™*O2157™**************************************************************************2158™* 2159™CMDTBL:/2160�7�00000028�0002“DC.WƒIOWRIT�WRITE�command.82161�7�0000002A�0140“DC.WƒIOSTAT�REQUEST�STATUS�command.32162�7�0000002C�0180“DC.WƒIOCNFG�CONFIGURE�command.F2163�7�0000002E�8002“DC.WƒIOCHDC�CHANGE�DEFAULT�CONFIGURATION�command.2164K2165Œ00000004…NUMCMDSƒEQU„(*-CMDTBL)/2‡The�number�of�commands�in�the�table.2166O2167�7�00000030�0086‰JMPTBL:ƒDC.WƒWRITE-*ŒBiases�to�the�corresponding�routines.#2168�7�00000032�00A6“DC.WƒREQSTAT-*$2169�7�00000034�00DC“DC.WƒCONFIGUR-*#2170�7�00000036�00F6“DC.WƒCHNGDEF-*2171E2172Œ00000008…JMPOFF„EQU„JMPTBL-CMDTBL†Offset�between�the�two�tables. MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚44(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• O2174™**************************************************************************2175™*2176™*C2177™*‹This�is�the�I/O�Handler�Initialization�Service�Routine.�ThisI2178™*‰routine�is�called�by�CMR�whenever�a�channel�to�be�serviced�by�thisA2179™*‰driver�is�allocated.�CMR�determines�the�entry�point�of�theI2180™*‰initialization�routine�by�adding�the�driver�origin�relative�offsetG2181™*‰in�the�third�long�word�of�the�service�vector�table�to�the�driver2182™*‰origin�address.2183™*I2184™*‹The�function�of�this�routine�is�to�perform�hardware�initializationF2185™*‰of�the�device�and�software�initialization�of�any�control�tablesH2186™*‰required�by�the�driver.�Note�that�upon�entry�to�this�routine,�theI2187™*‰interrupt�mask�is�zero,�so�it�is�wise�to�disable�interrupts�beforeJ2188™*‰performing�hardware�initialization.�However�the�interrupt�mask�must32189™*‰be�returned�to�zero�before�returning�to�CMR.2190™*)2191™*ˆENTRY:‚ALL�REGISTERS�ARE�AVAILABLE2192™*�A5�=�CCB�POINTER2193™*N2194™*************************************************************************2195™* 2196™DEVINIT:2197™*02198™*�Execute�device�initialization�subroutine.2199™*2200�7�00000038—INHIBA…7�00000038�46ED0042†MOVE.W�CCBISR(A5),SR�Set�processor�priority.:2201�7�0000003C�6106’BSR.S…DEVINITLŒInitialize�the�device.2202�7�0000003E—ENABLH…7�0000003E�46ED0040†MOVE.W�CCBSR(A5),SR�Drop�processor�priority�by�one.2203 2204�7�00000042�4E75’RTS›Return. MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚45(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• Q2206™****************************************************************************2207™*2208™*‚DEVICE�INITIALIZATION2209™*G2210™*…FUNCTION:‚THIS�SUBROUTINE�CLEARS�ANY�PENDING�INTERRUPTS�FROM�THE#2211™*�DEVICE,�PROGRAMS�THE�DEVICE.2212™*P2213™***************************************************************************2214™*2215™DEVINITL:2216P2217™*„Any�device�dependent,�hardware�initialization�code�required�by�the�driver'2218™*�would�normally�be�inserted�here.2219 2220�7�00000044�4E75’RTS›Return. MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚46(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• O2222™**************************************************************************2223™**2224™*ˆTHIS�IS�T$ HE�COMMAND�SERVICE�ROUTINE2225™*I2226™*ŒWhen�a�user�makes�an�I/O�request�(TRAP�#2),�IOS�issues�an�InitiateJ2227™*‰I/O�request�to�CMR�passing�the�requesting�tasks�TCB�address�and�theJ2228™*‰logical�address�of�the�users�IOCB.�All�processing�related�to�accessL2229™*‰permission,proceed�I/O,�connection�wait,�etc.�is�handled�by�IOS�priorK2230™*‰to�sending�the�I/O�request�to�CMR.�As�much�processing�as�possible�isH2231™*‰performed�by�the�command�routine�up�to�the�point�where�the�driverG2232™*‰would�be�waiting�for�the�device�to�transmit�or�receive�data.�TheI2233™*‰driver�would�then�enable�transmit/receive�interrupts�on�the�deviceJ2234™*‰and�return�to�CMR.�Note�that�the�processor�interrupt�mask�is�set�toC2235™*‰zero�upon�entry�to�this�routine.Therefore,�interrupts�shouldD2236™*‰be�disabled�prior�to�any�reprogramming�of�the�device,�and�theK2237™*‰processor�interrupt�mask�should�be�set�back�to�zero�before�returningL2238™*‰to�CMR.�Also�note�that�although�control�is�returning�to�CMR,�IOS�willI2239™*‰not�notify�the�requesting�task�of�I/O�completion,�until�the�driver)2240™*‰returns�a�completion�event�to�IOS.2241™*"2242™*ƒENTRY:‚JSR�FROM�CMR�HANDLERF2243™*‹A2�-�Physical�address�of�Initiate�I/O�Parameter�block(from�IOS)?2244™*‹A5�-�Physical�address�of�the�CCB�of�the�requested�device=2245™*‹A6�-�Physical�address�of�the�attached�task's�TCB�(IOS)2246™*:2247™*ƒEXIT:‚RTS�-�PARAMETER�BLOCK�VALIDATION�STATUS�IN�D02248™*2249™*ƒREGISTERS�USED:ƒ012345672250™*”D********2251™*”A**P**PP2252™*/2253™*”A3�=�Initiate�I/O�Command�Packet�address52254™*™(This�is�the�IOCB�of�the�users�request�to�IOS)2255™*”A0,A1�=�Miscellaneous2256™*$2257™*ƒEXEC�ROUTINES�CALLED:‚QEVENTT 2258™*šLOGPHY 2259™*šGETTCB2260™*2261™*ƒCODE�IS�RE-ENTRANT2262™*O2263™**************************************************************************2264™* 2265™DEVUSER:2266™*.2267™*�Convert�logical�PB�address�to�physical.2268™*2269�7�00000046�4285“CLR.L‚D5V2270�7�00000048�2C2A0014�MOVE.L�XIOCPK(A2),D6†Set�up�address�of�command�packet�(IOCB).O2271�7�0000004C�3A2A0018�MOVE.W�XIOXLEN(A2),D5…Set�up�length�of�command�packet.C2272�7�00000050�226D0050�MOVE.L�CCBTASKA(A5),A1„Set�up�TCB�pointer.>2273�7�00000054�61000250�BSR„IOHADRCK‹Call�conversion�routine./2274�7�00000058�6008“BRA.S‚DEVU010ŒGood�return.A2275�7�0000005A�123C0086�MOVE.B�#ISTAIP,D1‰Set�up�IOS�error�code.*2276�7�0000005E�60000226�BRA„NRMEXITŒExit.R2277�7�00000062�2646‰DEVU010ƒMOVE.L�D6,A3ŽSave�physical�address�of�command�packet.2278™*2279™*‚Check�for�HALT�command. MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚47(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• 2280™*@2281�7�00000064�0C530110�CMP.Wƒ#IOHALT,IOSFCT(A3)…HALT�command�?92282�7�00000068�67000142�BEQ…HALT“Branch�if�HALT�command.2283™*2284™*�See�if�channel�is�busy.2285™*E2286�7�0000006C�082D00070071‹BTSTW‚#CCBFGBSY,CCBFG(A5)‚Channel�busy�?02287�7�00000072�6708“BEQ.S‚DEVU020ŽBranch�if�no.N2288�7�00000074�103C0084�MOVE.B�#XSTBSY,D0‹Busy,�set�up�channel�error�code�and-2289�7�00000078�6000022A�BRA„IOHUSRTN�Return. ‘–šž¢¦ª®²¶º¾ÂÆÊÎÒÖÚÞâæêîòö"úþMMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚48(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• 2291™*P2292™***************************************************************************2293™*-2294™*‚Find�the�command�in�the�command�table.2295™*2296™*2297™*2298 2299™DEVU020:T2300�7�0000007C�3B6B0002009C‹MOVE.W�IOSOPT(A3),CCBCOPT(A5)�Save�IOCB�options�in�CCB.R2301�7�00000082�2B6A00100098‹MOVE.L�XIOUID(A2),CCBCID(A5)‚Save�DCB�pointer�in�CCB.@2302�7�00000088�2B4B00% 76�MOVE.L�A3,CCBCCB(A5)†Save�IOCB�pointer.B2303�7�0000008C�286A0010�MOVE.L�XIOUID(A2),A4†Pick�up�DCB�pointer.U2304�7�00000090�2B6D0050007A‹MOVE.L�CCBTASKA(A5),CCBTASKB(A5)‚Set�up�buffer�task�TCB.2305A2306�7�00000096�7003“MOVEQ‚#NUMCMDS-1,D0†Set�up�the�loop�counter.G2307�7�00000098�41FAFF8E�LEA„CMDTBL,A0ŠA0�<--�address�of�command�table.C2308�7�0000009C�3C13“MOVE.W�IOSFCT(A3),D6†Set�up�user�command�code.2309M2310�7�0000009E�BC58‰CMDSRCHƒCMP.W‚(A0)+,D6‹Search�the�table�for�the�command.*2311�7�000000A0�57C8FFFC�DBEQƒD0,CMDSRCH‰*2312G2313�7�000000A4�6608“BNE.S‚CMDERR�If�we�found�the�command�in�the�table,L2314�7�000000A6�5C88“ADD.L‚#JMPOFF-2,A0‡get�the�corresponding�entry�from�theI2315�7�000000A8�3010“MOVE.W�(A0),D0Œjump�table�and�jump�to�the�routine�to:2316�7�000000AA�4EF00000�JMP„(A0,D0.W)Šhandle�the�command.2317X2318�7�000000AE�123C0082…CMDERR„MOVE.B�#ISTAIF,D1‰We�didn't�find�it,�so�exit�with�error.$2319�7�000000B2�600001D2�BRA„NRMEXIT MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚49(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• Q2321™****************************************************************************2322™* 2323™*‰WRITE2324™*2325™*12326™*‚Entry:�A2�=�address�of�CMR�parameter�block2327™*‰A3�=�address�of�IOCB2328™*‰A4�=�address�of�DCB2329™*‰A5�=�address�of�CCB*2330™*‰A6�=�address�of�attached�task's�TCB2331™*2332™*2333™*Q2334™****************************************************************************2335™* 2336™WRITE:M2337�7�000000B6�61000162ŽBSR‡IOSCOMN�Do�the�stuff�common�to�all�I/O�commands.2338I2339�7�000000BA�08ED00070071ŠBSETW…#CCBFGBSY,CCBFG(A5)�Mark�channel�busy.  Q2341™*ƒBefore�initiating�any�I/O,�perform�any�necessary�device�preparation�and/or2342™*�special�bookeeping.  U2344�7�000000C0�206D007AŽMOVE.L„CCBTASKB(A5),A0‡Pick�up�the�TCB�address�of�IOCB�ownerS2345�7�000000C4�52280027ŽADD.B…#1,TCBIOCNT(A0)…and�increment�his�pending�I/O�count.  D2347�7�000000C8�206D0090ŽMOVE.L„CCBPTR(A5),A0‡Set�up�buffer�pointer.  234982350�7�000000CC�610001FCŽBSR‡OUTPUTŽStart�buffer�output.2351)2352�7�000000D0—UNMASK˜Enable�interrupts.E…7�000000D0�46FC2000†MOVE.W�#$2000,SR�Set�processor�priority�to�zero.12353�7�000000D4�600001CCŽBRA‡CMDEXIT�GO�FINISH�UP MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚50(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• R2355™*****************************************************************************2356™*2357™*‰REQUEST�STATUS2358™*)2359™*‰Entry:�A3�=�address�of�user's�IOCB2360™*�A5�=�address�of�my�CCB2361™*2362™*‰Exits�to�NRMEXIT2363™*R2364™*****************************************************************************2365™* 2366™REQSTAT:23672368™*J2369™*‚Get�the�address�of�his�data�block�and�move�our�configuration�there.2370™*J2371�7�000000D8�6100018A�BSR„CNFGADRŒGet�the�physical�address�of�the�users2372™*£configuration�block.  H2374�7�000000DC�611C“BSR.S‚STATYP�Setup�the�device�status,�channel�type,+2375™*£device�type,�and�driver�codes�in�the2376™*£user's�configure�block.  Z2378�7�000000DE�317C00070004‹MOVE.W�#VALATM,IOSATM(A0)„Return�the�supported�attributes�and^2379�7�000000E4�317C00070006‹MOVE.W�#VALPRM,IOSPRM(A0)‚parameters�masks�in�the�users�configure 2380™*¤block.  V2382�7�000000EA�700F“MOVE.L�#(IOSXLN/2)-1,D0ƒD0�<--�loop�control�to�move�entire�block.<2383�7�000000EC�32D8‰REQLOOPƒMOVE.W�(A0)+,(A1)+ˆMove�a�word.M2384�7�000000EE�51C8FFFC�DBRAƒD0,REQLOOP‰Keep�moving�until�whole�block�moved.2385?2386�7�000000F2�123C0000�MOVE.B�#ISTAOK,D1‰Exit�with�OK�status.&2387�7�000000F6�6000018E�BRA„NRMEXITŒ* MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚51(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• Q2389™****************************************************************************2390™*2391™*„RETURN�DEVICE�STATUS2392™*72393™*„This�subroutine�stores�the�current�device�statusJ% 2394™*‚channel�type,�device�type,�and�driver�code�into�the�users�configureQ2395™*‚block.�Note�that�these�values�are�returned�only�on�RETRIEVE�DEVICE�STATUS/P2396™*‚CONFIGURATION,CONFIGURE�DEVICE,�and�CHANGE�DEFAULT�CONFIGURATION�requestsP2397™*‚only�when�no�configuration�error�was�detected.�Note�that�in�this�example,R2398™*‚a�zero�is�returned�in�the�status�byte�to�indicate�that�the�device�is�alwaysO2399™*‚assumed�to�be�ready.�In�general,�however,�the�status�value�returned�by�aP2400™*‚driver�is�application�dependent�and�many�different�values�may�be�returned&2401™*‚depending�on�the�circumstances.2402™*S2403™******************************************************************************2404 2405™STATYP:2406C2407�7�000000FA�4210“CLR.B‚IOSDST(A0)ŽReturn�on-line�device�status.]2408�7�000000FC�116D00180001‹MOVE.B�CCBTYPE(A5),IOSCTP(A0)‚Return�the�channel�type�defined�in2409™*¨the�CCB.N2410�7�00000102�117C00470002‹MOVE.B�#XDSDEV,IOSDTP(A0)†Return�the�device�type.M2411�7�00000108�117C00080003‹MOVE.B�#IODDEV,IOSDRC(A0)†Return�the�driver�type2412�7�0000010E�4E75“RTS MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚52(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• R2414™*****************************************************************************2415™*2416™*‰CONFIGURE2417™*E2418™*‰This�command�changes�the�CCB�configuration,�the�one�from�whichA2419™*‰the�driver�sets�up�the�device�and�under�which�it�performs.2420™*12421™*‰Entry:�A2�=�address�of�CMR�parameter�block"2422™*�A3�=�address�of�user's�IOCB2423™*�A5�=�address�of�my�CCB2424™*2425™*‰Exits�to�NRMEXIT2426™*R2427™*****************************************************************************2428™*2429™CONFIGUR:24302431™*G2432™*‚Get�the�physical�address�of�the�user's�configuration�data�block.2433™*J2434�7�00000110�61000152�BSR„CNFGADRŒGet�the�physical�address�of�the�users 2435™*£configuration�data�block.  I2437�7�00000114�286A0010�MOVE.L�XIOUID(A2),A4†A4�<--�base�address�of�DCB.2438U2439�7�00000118�143C0001�MOVE.B�#CECCDO,D2ŠIf�he's�trying�to�change�the�write�timeout[2440�7�0000011C�082900020007‹BTSTW‚#IOSWTOB,IOSPRM(A1)�value,�return�a�configuration�error."2441�7�00000122�6664“BNE.S‚CNFGERR  `2443�7�00000124�216C00780010‹MOVE.L�DCBDEV+IOSWTO(A4),IOSWTO(A0)�Update�(in�the�CCB)�the�timeoutC2444�7�0000012A�6010“BRA.S‚CMNCNFGŒvalues�from�the�DCB,�so�they�can12445™*£be�copied,�and�do�the�common�configuration2446™*£processing. MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚53(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• R2448™*****************************************************************************2449™*#2450™*‰CHANGE�DEFAULT�CONFIGURATION2451™*;2452™*‰This�command�changes�the�DCB�configuration,�to�which92453™*‰IOS�will�restore�us�(via�a�CONFIGURE�command)�when42454™*‰FHS�closes�the�last�allocation�of�the�device.2455™*)2456™*‰Entry:�A3�=�address�of�user's�IOCB2457™*�A5�=�address�of�my�CCB2458™*2459™*‰Exits�to�NRMEXIT2460™*R2461™*****************************************************************************2462 2463™CHNGDEF:24642465™*M2466™*‚First�get�the�physical�address�of�the�user's�configuration�data�block.2467™*P2468�7�0000012C�6100013A�BSR„CNFGADR2‹Get�the�address�of�the�users�configuration12469™*£data�block.�This�entry�point�preserves�A0.  O2471�7�00000130�206A0010�MOVE.L�XIOUID(A2),A0ˆLoad�the�address�of�the�DCB�in�A4J2472�7�00000134�2848“MOVE.L�A0,A4Žand�the�address�of�the�DCB�configuration:2473�7�00000136�D1FC00000068‹ADD.L‚#DCBDEV,A0‰block�in�A0.2474 MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚54(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• R2476™*****************************************************************************2477™*#2478™*‰COMMON�CONFIGURATION�ROUTINE2479™*<2480™*‰This�routine�does�the�work�common�to�the�two�commands22481™*‰CONFIGURE�and�CHANGE�DEFAULT�CO& NFIGURATION.2482™*<2483™*‰Entry:�A0�=�Address�of�CCB�or�DCB�configuration�block12484™*�A1�=�Address�of�user's�configuration�block2485™*R2486™*****************************************************************************2487 2488™CMNCNFG:2489™*Q2490™*ƒFirst,�both�the�attributes�and�parameters�masks�are�checked�to�see�if�bitsQ2491™*�corresponding�to�unsupported�attributes�or�parameters�are�set.�If�any�such72492™*�bits�are�set,�a�configuration�error�is�returned.2493™*O2494�7�0000013C�343C0002�MOVE.W�#CECUAP,D2‹Set�up�for�an�error�exit�in�case�the+2495™*£user�is�trying�to�change�unsupported 2496™*£attributes�or�parameters.  Q2498�7�00000140�303CFFF8�MOVE.W�#NVALATM,D0ŠZero�the�bits�of�the�users�attributesT2499�7�00000144�C0690004�AND.W‚IOSATM(A1),D0†mask�that�correspond�to�supported�para-I2500�7�00000148�663E“BNE.S‚CNFGERRŒmeters.�If�any�remaining�bits�are�set,2501™*£return�an�error.  Q2503�7�0000014A�303CFFF8�MOVE.W�#NVALPRM,D0ŠZero�the�bits�of�the�users�attributesT2504�7�0000014E�C0690006�AND.W‚IOSPRM(A1),D0†mask�that�correspond�to�supported�para-I2505�7�00000152�6634“BNE.S‚CNFGERRŒmeters.�If�any�remaining�bits�are�set,2506™*£return�an�error. MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚55(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• J2508™*‚Next�we�need�to�see�what�his�proposed�configuration�will�look�like.I2509™*‚Plug�into�his�data�block�the�current�values�for�those�attributes�&D2510™*‚parameters�he�doesn't�want�to�change.‚The�appropriate�currentR2511™*‚configuration�is�at�A0�and�the�users�configure/configure�default�data�block2512™*‚is�at�A1.2513™* 2514£OPT„BRSN2515�7�00000154�30290004�MOVE.W�IOSATM(A1),D0†Set�up�the�users�attribute�mask.S2516�7�00000158�C1690008�AND.W‚D0,IOSATW(A1)†Zero�out�the�attributes�of�his�that�heB2517�7�0000015C�4640“NOT.W‚D0‘doesn't�want�to�change,�zero�out�theT2518�7�0000015E�C0680008�AND.W‚IOSATW(A0),D0†attributes�of�mine�that�he�does�want�toR2519�7�00000162�81690008�OR.WƒD0,IOSATW(A1)†change,�and�combine�them�in�his�space.2520X2521�7�00000166�30290006�MOVE.W�IOSPRM(A1),D0†Get�mask�of�parameters�he�wants�to�change.2522E2523�7�0000016A�E248“LSR.W‚#1,D0ŽIf�he's�not�changing�the�LINE�WIDTH,+2524£IF��THEN�copy�the�current�setting.92525�7�0000016E�3368000A000A‹MOVE.W�IOSREC(A0),IOSREC(A1) 2526£ENDI2527E2528�7�00000174�E248“LSR.W‚#1,D0ŽIf�he's�not�changing�the�LINES/PAGE,+2529£IF��THEN�copy�the�current�setting.92530�7�00000178�2368000C000C‹MOVE.L�IOSRSZ(A0),IOSRSZ(A1) 2531£ENDI2532G2533�7�0000017E�E248“LSR.W‚#1,D0ŽIf�he's�not�changing�the�WRITE�TIMEOUT22534£IF��THENŽvalue,�copy�the�current�setting.92535�7�00000182�236800100010‹MOVE.L�IOSWTO(A0),IOSWTO(A1) 2536£ENDI2537 2538£OPT„BRL2539™*N2540™*ƒNow�that�the�users�configuration�block�contains�the�proposed�attributesL2541™*�and�parameters,�they�will�be�checked�for�validity�before�copying�them2542™*�into�the�DCB�or�CCB.2543™*2544Q2545™*ƒA�configuration�error�should�be�returned�whenever�attributes�or�parametersQ2546™*�specified�by�the�user�are�invalid�or�in�conflict�with�one�another.�If�suchQ2547™*�an�error�occurs,�a�generic�error�code�is�placed�in�the�users�IOS�parameterR2548™*�block�and�a�specific�configuration�error�code�is�placed�in�the�status/errorF2549™*�byte�of�the�users�configure/configure�defaults�parameter�block.2550C2551™*‰MOVE.B�#IOSXXX,D2ŠStore�the�specific�configurtion�error�code 2552™*£in�D2.  Z2554�7�00000188�123C00F5…CNFGERRƒMOVE.B�#ISTACFG,D1‰Return�a�configuration�error�status�inR2555�7�0000018C�1282“MOVE.B�D2,IOSCEC(A1)†the�users�IOS�parameter�block�and�returnL2556�7�0000018E�6018“BRA.S‚CNFGEXIT‹the�specific�configuration�error�code�in%2557™*£the�users�configuration�block. MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚56(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• K2559™*…Set�the�configuration�flag�byte�in�the�device�DCB�to�indicate�that�aP2560™*‚C& ONFIGURE�or�CONFIGURE�DEFAULTS�request�was�processed.�FHS�will�check�theR2561™*‚flag�when�it�closes�the�last�assignment�to�the�device�to�see�if�it�needs�toM2562™*‚tell�IOS�to�issue�a�configure�request.�IOS�will�then�issue�a�CONFIGUREO2563™*‚request�using�the�device�DCB�default�configuration�parameters.�This�willN2564™*‚always�force�the�current�configuration�to�the�default�whenever�the�last2565™*‚assignment�is�closed.2566™*N2567™*…Subroutine�STATYP�is�called�to�store�the�current�device�status,�channelM2568™*‚type,�device�type,�and�driver�code�into�the�users�configuration�block.2569™*U2570�7�00000190�50EC0092…OKCNFG„ST…DCBCAN(A4)‰Flag�the�DCB�that�a�CONFIGURE�was�done.  K2572�7�00000194�6100FF64�BSR„STATYP�Return�the�device�status,�channel�type,02573™*£device�type,�and�driver�code�in�the�users2574™*£configuration�block.  M2576™*„The�proposed�configuration�has�been�validated�so�it�may�be�copied�intoO2577™*‚the�CCB�if�processing�a�CONFIGURE�request,�or�into�the�DCB�if�processingQ2578™*‚a�CONFIGURE�DEFAULTS�request.�All�fields�but�the�attributes�and�parametersR2579™*‚masks�are�copied.�These�fields�must�remain�unchanged�from�boot�time�as�theyR2580™*‚are�needed�by�FHS�and�IOS�to�restore�the�proper�configuration�when�the�lastL2581™*‚assignment�to�the�device�is�closed�following�a�CONFIGURE�or�CONFIGURE2582™*‚DEFAULTS�request.  U2584�7�00000198�700B“MOVE.L�#(IOSXLN-IOSATW)/2-1,D0„Set�up�#�of�words�-�1�to�transferO2585�7�0000019A�5088“ADD.L‚#IOSATW,A0‰and�the�start�addresses�of�the�ATTRIBUTESP2586�7�0000019C�5089“ADD.L‚#IOSATW,A1‰WORD�in�the�users�configuration�block(A0),/2587™*£and�the�CCB/DCB�configuration�block(A1).2588X2589�7�0000019E�30D9‰CNFGLOOP‚MOVE.W�(A1)+,(A0)+ŠCopy�the�users�configuration�data�blockO2590�7�000001A0�51C8FFFC�DBRAƒD0,CNFGLOOPˆinto�the�CCB/DCB�configuration�block.  Q2592�7�000001A4�123C0000�MOVE.B�#ISTAOK,D1‹If�a�configuration�error�has�occurred,V2593�7�000001A8�600000DC…CNFGEXIT‚BRA„NRMEXITŒtransfer�to�the�normal�exit�routine�with-2594™*£a�Configuration�Error($F5)�code�in�D1.*2595™*£else�return�no�error�status�of�$00. MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚57(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• M2597™************************************************************************2598™*2599™*‰HALT�I/O2600™*82601™*‰This�command�stops�the�I/O�currently�in�progress.2602™*"2603™*‰Entry:�A3�=�address�of�IOCB2604™*�A5�=�address�of�CCB2605™*O2606™**************************************************************************2607 2608™HALT:H2609�7�000001AC�082D00070071ŠBTSTW‚#CCBFGBSY,CCBFG(A5)„Any�I/O�pending�?02610�7�000001B2�671A’BEQ.S‚HALTOK‘Branch�if�yes.2611!2612™*¦There�was�nothing�to�halt.B2613�7�000001B4�49ED007EŽLEA‡CCBPKT(A5),A4‡Set�up�queue�work�area.52614�7�000001B8�7006’MOVE.L„#6,D0�Set�up�packet�size.=2615�7�000001BA�123C0071ŽMOVE.B„#XPSHLT,D1ŠSet�up�event�type.;2616�7�000001BE�242A0010ŽMOVE.L„XIOUID(A2),D2‡Set�up�PB�id.@2617�7�000001C2�363C0000ŽMOVE.W„#XSTVABT,D3‰Set�up�status�value.22618�7�000001C6�610001F8ŽBSR‡QEVNT�Go�queue�event.,2619�7�000001CA�600000D6ŽBRA‡CMDEXIT�Return.2620?2621�7�000001CEŽHALTOK:ƒINHIB˜Inhibit�interrupts�at�this�level.A…7�000001CE�46ED0042†MOVE.W�CCBISR(A5),SR�Set�processor�priority.2622O2623�7�000001D2�266D0076�MOVE.L�CCBCCB(A5),A3‰Set�pointer�of�the�original�IOCB.2624I2625�7�000001D6�226D0022�MOVE.L�CCBCHB(A5),A1‰Set�up�device�base�address.<2626�7�000001DA�6100FE68�BSR„DEVINITLŽInitialize�the�device.N2627�7�000001DE�08AD00070071‹BCLRW‚#CCBFGBSY,CCBFG(A5)ƒClear�busy�flag�in�CCB.26282629�7�000001E4˜UNMASKE…7�000001E4�46FC2000†MOVE.W�#$2000,SR�Set�processor�priority�to�zero.2630Z2631�7�000001E8�176D00BF0014‹MOVE.B�CCBRLEN(A5),IOSLEN(A3)�Update�users�IOCB�length�field.*2632' �7�000001EE�42AD00BF�CLR.L‚CCBRLEN(A5)  U2634�7�000001F2�202D007A�MOVE.L�CCBTASKB(A5),D0‡Pick�up�the�TCB�address�of�IOCB�ownerS2635�7�000001F6�53280027�SUB.B‚#1,TCBIOCNT(A0)‡and�decrement�his�pending�I/O�count.  2637™*&2638™*‚Prepare�the�event�and�queue�it.2639™*T2640�7�000001FA�177C00E60004‹MOVE.B‚#ISTATO,IOSSTA(A3)ƒUpdate�the�IOCB�status�field.D2641�7�00000200�363C00E6�MOVE.W‚#ISTATO,D3‹Set�up�event�status�fieldE2642�7�00000204�123C0071�MOVE.B‚#XPSHLT,D1‹Set�up�event�status�value.52643�7�00000208�7006“MOVE.L‚#6,D0�Set�up�info�length.>2644�7�0000020A�242D0098�MOVE.L‚CCBCID(A5),D2ˆSet�up�event�ID.F2645�7�0000020E�49ED007E�LEA…CCBPKT(A5),A4ˆSet�up�event�build�pointer./2646�7�00000212�610001AC�BSR…QEVNT�Queue�event.+2647�7�00000216�6000008A�BRA…CMDEXITŽRETURN2648 MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚58(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• Q2650™****************************************************************************2651™*2652™*H2653™*‰ROUTINE�COMMON�TO�ALL�I/O�COMMANDS�(READ,�WRITE,�OUTPUT�W/�INPUT)2654™*"2655™*‚Entry:�A3�=�address�of�IOCB2656™*‰A5�=�address�of�CCB2657™*2658™*Q2659™****************************************************************************2660™* 2661™IOSCOMN:[2662�7�0000021A�082B00070002‹BTSTW‚#IOPTSKB,IOSOPT(A3)�If�the�buffers�reside�in�a�different62663�7�00000220�6718“BEQ.S‚IOSC005Œtask�from�the�IOCB,2664Q2665�7�00000222�41EB001C�LEA„IOSTSK(A3),A0†Point�to�the�taskname�&�session�of�theF2666�7�00000226˜TR0$.GETTCB‚,Œbuffer�owner�&�call�exec�to�get�address.�00000002….009A�SET�2$…7�00000226�7006ŠMOVE.L�#T0GETTCB,D0…7�00000228�4E40ŠTRAP�#0žOPT�CL62667�7�0000022A�600A“BRA.S‚OKTCBŽIf�it's�good,�branch.%2668�7�0000022C�4E71“NOP—If�it's�bad,N2669�7�0000022E�123C0094�MOVE.B�#XSTADB,D1‰set�status�in�IOCB�to�address�error-2670�7�00000232�4A9F“TST.L‚(A7)+Žadjust�stack32671�7�00000234�6050“BRA.S‚NRMEXITŒand�exit�to�CMR.2672S2673�7�00000236�2B48007A…OKTCB…MOVE.L�A0,CCBTASKB(A5)„Save�physical�address�of�TCB.26742675™*A2676™*‚Validate�the�info�in�the�IOCB�about�the�primary�buffer�and%2677™*‚convert�to�physical�addresses.2678™*[2679�7�0000023A�2C2B000C…IOSC005ƒMOVE.L�IOSSAD(A3),D6†D6�<--�buffer�physical�start�address.C2680�7�0000023E�2A2B0010�MOVE.L�IOSEAD(A3),D5†D5�<--�buffer�length."2681�7�00000242�9A86“SUB.L‚D6,D5Ž*!2682�7�00000244�5245“ADDQƒ#1,D5Ž*  I2684�7�00000246�2F05“MOVE.L�D5,-(A7)‹Save�the�buffer�length�on�the�stack.  V2686�7�00000248�226D007A�MOVE.L�CCBTASKB(A5),A1„A1�<--�address�of�TCB�of�buffer�owner.62687�7�0000024C�6158“BSR.S‚IOHADRCK‹Check�the�address.82688�7�0000024E�6008“BRA.S‚IOSC010ŒIf�it's�good,�branch.M2689�7�00000250�508F“ADDQ.L�#8,A7ŽIf�it's�a�bad�base�address,�remove�saved�D5+2690™*£and�adjust�the�stack�return�address.  L2692�7�00000252�123C0084�MOVE.B�#ISTAADD,D1ˆSet�IOCB�status�to�ADDRESS�ERRORJ2693�7�00000256�602E“BRA.S‚NRMEXITŒand�exit�with�appropriate�error�status.2694Y2695�7�00000258�2B460090…IOSC010ƒMOVE.L�D6,CCBPTR(A5)†Save�physical�start�address�in�CCB.F2696�7�0000025C�DC9F“ADD.L‚(A7)+,D6‹Save�the�physical�end�address�plus>2697�7�0000025E�2B460094�MOVE.L�D6,CCBEAP1(A5)…one�in�the�CCB.2698�7�00000262�4E75“RTS MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚59(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• P2700™***************************************************************************2701™*B2702™*‰VALIDATE�CONFIGURATION�BUFFER�ADDRESS�&�CONVERT�TO�PHYSICAL2703™*)2704™*‰Entry:�D5�=�buffer�length�in�bytes22705™*�D6�=�buffer�logical�start�addr�(to�convert)2706™*�A3�=�address�of�IOCB2707™*�A5�=�address�of�CCB2708™*/2709™*‰Exit:‚D6ƒ=�buffer�physical�start�address2710™*�D5ƒ=�buffer�length2711™*P2712™***************************************************************************2713™*\2714�7' �00000264�41ED009E…CNFGADRƒLEA.L‚CCBCFIG(A5),A0…This�entry�point�loads�the�CCB�config.2715™*£data�block�into�A0.  C2717�7�00000268�2F08‰CNFGADR2‚MOVE.L�A0,-(A7)‹Save�A0�on�the�stack.W2718�7�0000026A�2C2B0008�MOVE.L�IOSDBP(A3),D6†D6�<--�logical�addr�of�user's�data�block.C2719�7�0000026E�7A20“MOVE.L�#IOSXLN,D5‰D5�<--�length�of�data�block.  V2721�7�00000270�226D007A�MOVE.L�CCBTASKB(A5),A1„A1�<--�address�of�TCB�of�buffer�owner.62722�7�00000274�6130“BSR.S‚IOHADRCK‹Check�the�address.92723�7�00000276�6008“BRA.S‚CNFGADR3‹If�it's�good,�branch.  K2725�7�00000278�508F“ADD.L‚#8,A7ŽIf�the�address�or�length�is�bad,�clean�theT2726�7�0000027A�123C0084�MOVE.B�#ISTAADD,D1ˆstack,�set�IOCB�status�to�ADDRESS�ERROR,J2727�7�0000027E�6006“BRA.S‚NRMEXITŒand�exit�with�appropriate�error�status.  R2729�7�00000280�2246‰CNFGADR3‚MOVE.L�D6,A1ŽStore�the�physical�address�of�the�usersM2730�7�00000282�205F“MOVE.L�(A7)+,A0‹data�block�in�A1,�restore�A0�and�return.2731�7�00000284�4E75“RTS MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚60(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• T2733™*******************************************************************************2734™*2735™*ˆNORMAL�EXIT2736™*12737™*‚Entry:�A2�=�address�of�CMR�parameter�block2738™*‰A3�=�address�of�IOCB2739™*‰A4�=�address�of�DCB2740™*‰A5�=�address�of�CCB 2741™*‰A6�=�address�of�users�TCB2742™*‰D1�=�IOS�error�code2743™*N2744™*************************************************************************2745™* 2746™NRMEXIT:B2747�7�00000286�49ED007EŽLEA‡CCBPKT(A5),A4‡Set�up�queue�work�area.52748�7�0000028A�7006’MOVE.L„#6,D0�Set�up�packet�size.;2749�7�0000028C�242A0010ŽMOVE.L„XIOUID(A2),D2‡Set�up�PB�id.;2750�7�00000290�024100FFŽAND.W…#$FF,D1�Mask�for�word�value.62751�7�00000294�3601’MOVE.W„D1,D3�Set�up�status�value.G2752�7�00000296�17410004ŽMOVE.B„D1,IOSSTA(A3)‡Update�IOCB�status�field.=2753�7�0000029A�123C0070ŽMOVE.B„#XPSNRM,D1ŠSet�up�event�type.22754�7�0000029E�61000120ŽBSR‡QEVNT�Go�queue�event.%2755�7�000002A2�4280‰CMDEXIT‚CLR.L…D02756™*=2757™*�User�request�side�of�IOH�always�exits�from�this�point.2758™*2759�7Š000002A4…IOHUSRTN‚EQU„*+2760�7�000002A4�4E75“RTS—RETURN�TO�MAINLINE MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚61(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• P2762™***************************************************************************2763™*G2764™*ƒSubroutine�to�check�address�boundaries�to�see�if�entirely�within#2765™*�calling�tasks�address�space.2766™*+2767™*‚Entry:�D5�-‚number�of�bytes�to�check"2768™*‰D6�-‚68000�address(logical)2769™*‰A1�-‚TCB�address2770™*2771™*2772™*2773™*2774™*�EXEC�ROUTINE(2775™*�REGISTERS�USED:�D0-D1,D3,D6/A0-A12776™*2777™*<2778™*�EXIT:„D6�-�PHYSICAL�ADDRESS�OF�BUFFER�BASE�(IF�LEGAL)$2779™*ŠRETURN�TO�PC„FOR�GOOD�ADDRESS2780™*”PC+2‚FOR�BAD�LENGTH2781™*”PC+4‚FOR�BAD�ADDRESS2782™*K2783™**********************************************************************2784™*2785™IOHADRCK:=2786�7�000002A6�08060000�BTSTƒ#0,D6‘Must�be�on�work�boundary.=2787�7�000002AA�660E“BNE.S‚IOHADR6�Branch�if�bad�buffer�base.32788�7�000002AC�4A85“TST.L‚D5”Length�can't�be�zero.F2789�7�000002AE�670C“BEQ.S‚IOHADR8�Don't�go�to�logphy�with�zero�count.2790�7Š000002B0…IOHADR2ƒEQU„*I2791�7�000002B0�20690036�MOVE.L�TCBTST(A1),A0‰Address�of�task�seg.�table.2792�7�000002B4˜TR0$.LOGPHY�00000002….010A�SET�2$…7�000002B4�7008ŠMOVE.L�#T0LOGPHY,D0…7�000002B6�4E40ŠTRAP�#0žOPT�CLB2793�7�000002B8�6002“BRA.S‚IOHADR8�Branch�for�good�address�return.H2794�7�000002BA�5497‰IOHADR6ƒADD.L‚#2,(A7)�Adjust�PC�for�invalid�return.(2795�7�000002BC�4E75‰IOHADR8ƒRTSšReturn. MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚62(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• N2797™*************************************************************************2798™*2799™*ˆGET�TCB�ROUTINE2800™*.28( 01™*’ENTRY:�A0�=�POINTER�TO�TASK�AND�SESSION2802™*2803™*2804™*’EXEC�ROUTINE"2805™*’REGISTERS�USED:�D0-D1/A0-A12806™*2807™*2808™*’EXIT:�A0�=�TCB�ADRESS/2809™*˜RETURN�TO�PC„FOR�GOOD�TASK�SPECIFICATION&2810™*¢PC+2‚FOR�BAD�TASK�SPECIFICATION2811™*2812™*O2813™**************************************************************************2814™* 2815™GETTCB:2816�7�000002BE˜TR0$.GETTCB�00000002….011A�SET�2$…7�000002BE�7006ŠMOVE.L�#T0GETTCB,D0…7�000002C0�4E40ŠTRAP�#0žOPT�CL:2817�7�000002C2�6004“BRA.S„GETT10ŽGood�task�specification.02818�7�000002C4�4E71“NOPšBad�task�specification.:2819�7�000002C6�5497“ADD.L„#2,(A7)�Bad�task�specification.'2820�7�000002C8�4E75‰GETT10„RTSšReturn. MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚63(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• Q2822™****************************************************************************2823™* 2824™*‚OUTPUT2825™*)2826™*ˆThis�is�the�device‚output�routine.2827™*2828™*$2829™*ˆENTRY:‚A0�=�address�of�buffer"2830™*�A1�=�address�of�device�base2831™*�A3�=�address�of�IOCB2832™*�A4�=�address�of�DCB2833™*�A5�=�address�of�CCB2834™*R2835™*****************************************************************************2836 2837™OUTPUT:2838R2839™*ƒThis�routine�would�control�logical�output�control�and�would�possibly�call�aR2840™*�routine�such�as�DEVOUT�to�handle�the�physical�(i.e.�character�by�character)-2841™*�output�and�hardware�control�functions.2842!2843�7�000002CA�6138“BSR.S‚DEVOUT2844 2845™OUTEND:2846™*72847™*‚Finished�transfer,�now�queue�event�to�requestor.2848™*G2849�7�000002CC�08AD00070071‹BCLRW‚#CCBFGBSY,CCBFG(A5)ƒClear�busy�flag.D2850�7�000002D2�206D007A�MOVE.L�CCBTASKB(A5),A0‡Pick�up�TCB�address.K2851�7�000002D6�53280027�SUB.B‚#1,TCBIOCNT(A0)‡Decrement�I/O�pending�count.2852E2853�7�000002DA�363C0000�MOVE.W�#ISTAOK,D3ŒSet�up�ok�IOS�status�code.*2854�7�000002DE�4A00“TST.B‚D0”Any�faults�?72855�7�000002E0�6704“BEQ.S‚OUTEND1�Branch�if�no�faults.I2856�7�000002E2�363C00E1�MOVE.W�#ISTANR,D3ŒFault,�set�up�IOS�status�code.C2857�7�000002E6�7006‰OUTEND1ƒMOVE.L�#6,D0‘Set�up�event�info�length.B2858�7�000002E8�123C0070�MOVE.B�#XPSNRM,D1ŒSet�up�event�type�code.A2859�7�000002EC�242D0098�MOVE.L�CCBCID(A5),D2‰Set�up�DCB�address.G2860�7�000002F0�17430004�MOVE.B�D3,IOSSTA(A3)‰Update�IOCB�status�field.T2861�7�000002F4�276D00BF0014‹MOVE.L�CCBRLEN(A5),IOSLEN(A3)‚Update�IOCB�length�field.2862B2863�7�000002FA�49ED007E�LEA„CCBPKT(A5),A4‰Set�up�event�data�area.G2864�7�000002FE�610000C0�BSR„QEVNT‘Queue�completion�event�to�requestor.28652866�7�00000302�4E75“RTS MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚64(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• T2868™*******************************************************************************2869™* 2870™*‚DEVOUT2871™*,2872™*ˆThis�routine�will�output�a�data�byte,32873™*ˆand�check�for�busy�and�reprogram�the�device.2874™*2875™*ˆENTRY:„D0‚=�data�byte2876™*’A1‚=�device�base�address2877™*‘(SP)�=�return�address$2878™*�4(SP)�=�DEVOUT�return�address#2879™*�DEVICE�=�Interrupts�disabled2880™*12881™*ˆEXIT:…D0‚-�Device�status�register�contents&2882™*�NORMAL�-�D3.B�=�0ƒNormal�return@2883™*�FAULT�-�D3.B�=�$FF�Clear�device�interrupts,�Normal�return=2884™*�BUSY‚-�Save�stacked�subroutine�return�addresses�in�CCB%2885™*˜Return�to�CMR�if�command�entry62886™*˜Return�to�interrupt�routine�if�interrupt�entry.P2887™***************************************************************************2888™* 2889™DEVOUT:B2890�7�00000304�4203’CLR.BƒD3“Clear�D3�in�preparation�for�a�normal2891™*£return.  D2893™*‚Test�the�device�to�see�if�it�is�busy�or�a�fault�has�occurred.2894Q2895�7�00000306�1B4000BE…DEVBSYƒMOVE.B‚D0,CCBSAVB(A5)ˆYes�-�busy,�save�data�byte.F2896�7�0000030A�2B5F00C3ŽMOVE.L‚(A7)+,CCBIRTN(A5)…Save�return�address.E2897�7�0000030E�59AD00C3ŽS( UB.Lƒ#4,CCBIRTN(A5)ˆAdjust�service�address.  Y2899�7�00000312�2B5F00C7ŽMOVE.L‚(A7)+,CCBISTK(A5)…Save�subroutine�return�address�into�CCB  )2901�7�00000316—INHIB™Disable�interrupts.A…7�00000316�46ED0042†MOVE.W�CCBISR(A5),SR�Set�processor�priority.2902™*Q2903™*ƒReprogram�the�device�as�necessary�to�generate�an�interrupt�when�the�device2904™*�is�no�longer�busy.2905™*2906 2907�7�0000031A�4E75’RTS›Return.2908™*#2909™*ƒA�device�fault�has�occurred.2910™*2911L2912�7�0000031C�20290004…DEVFLTƒMOVE.L‚DEV1BD(A1),D0‰Set�up�status�register.I2913�7�00000320�6100FD22ŽBSR…DEVINITLŽReprogram�device�for�no�interrupts.?2914�7�00000324�50C3’ST†D3”Set�D3�non-zero�to�indicate�an�error82915�7�00000326�6006’BRA.SƒDEVOEX�and�prepare�to�return.2916B2917�7�00000328�1280‰DEV020ƒMOVE.B‚D0,DEV1AD(A1)‰Output�data�byte.29182919™*<2920™*‚Perform�any�necessary�hardware�control�of�the�device.2921™* MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚65(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• 2922H2923�7�0000032A�10290004ŽMOVE.B‚DEV1BD(A1),D0‰Get�status�register�again.  @2925�7�0000032EŽDEVOEXƒENABL™Enable�interrupts�and�return�to�theH…7�0000032E�46ED0040†MOVE.W�CCBSR(A5),SR�Drop�processor�priority�by�one.)2926�7�00000332�4E75’RTS™calling�routine. MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚66(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• ‡• #'+/37;$?%C"G&K(O#S)W-[+_+c)g$k)o%s&w&{('O2928™**************************************************************************2929™*,2930™*ƒTHIS�IS�THE�INTERRUPT�SERVICE�ROUTINE2931™*H2932™*‹When�an�interrupt�occurs,�the�hardware�interrupt�vector�transfersJ2933™*‰control�to�a�location�within�the�first�CCB�in�the�interrupt�pollingI2934™*‰chain�for�the�vector�causing�the�interrupt.�This�location�containsJ2935™*‰a�JSR�to�CMR�thus�giving�CMR�a�pointer�to�the�CCB�on�the�stack.�CMRE2936™*‰then�performs�a�processor�state�save�and�an�interrupt�trace�ifF2937™*‰tracing�is�enabled.�CMR�then�transfers�control�to�the�driver�byI2938™*‰adding�the�driver�origin�relative�offset�in�the�first�long�word�of92939™*‰service�vector�table�to�the�driver�origin�address.2940™*G2941™*‹On�entry�to�the�driver�at�the�interrupt�service�entry�point,�theF2942™*‰processor�interrupt�mask�is�set�to�the�hardware�priority�of�theE2943™*‰interrupt�causing�entry.�The�driver�must�interrogate�the�CCB'sF2944™*‰device�to�determine�if�the�interrupt�was�caused�by�that�device.I2945™*‰If�not,�the�driver�should�return�immediately�to�CMR�with�the�carryI2946™*‰bit�clear�to�indicate�that�the�driver�did�not�claim�the�interrupt.E2947™*‰CMR�then�jumps�to�the�driver�for�the�next�CCB�in�the�interruptF2948™*‰polling�chain�and�the�process�repeates.�If�the�interrupt�is�notH2949™*‰claimed�by�any�driver,�control�is�transfered�to�the�RMS68K�CommonG2950™*‰Interrupt�Handler�to�determine�if�the�interrupt�is�to�be�handledI2951™*‰by�a�user�mode�task.�If�no�task�is�processing�the�interrupt,�it�isF2952™*‰discarded�and�control�is�returned�to�the�point�of�interruption.2953™*F2954™*‹If�the�interrupt�is�claimed�by�the�driver,�the�remainder�of�theG2955™*‰registers�are�saved,�checks�are�made�to�see�if�the�interrupt�wasC2956™*‰spurious,�caused�by�a�fault,�or�caused�by�a�transmit/receiveF2957™*‰completion.�In�the�case�of�a�spurious�interrupt�the�appropriateH2958™*‰action�is�application�dependent.�If�the�interrupt�was�caused�by�aK2959™*‰device�fault�during�I/O,�an�error�code�would�be�written�to�the�usersH2960™*‰IOCB,�an�I/O�Completion�event�would�be�sent�to�IOS,�the�interrupt;2961™*‰would�be�cleared�and�the�driver�would�return�to�CMR.2962™*J2963™*‹If�the�interrupt�was�caus) ed�by�the�completion�of�a�transmit/receiveH2964™*‰operation�on�the�device,�a�wide�variety�of�methods�may�be�used�toJ2965™*‰resume�processing�of�the�user�I/O�request.�However,�in�all�cases�itJ2966™*‰is�essential�that,�as�soon�as�possible,the�processor�interrupt�maskI2967™*‰be�returned�to�the�level�in�effect�prior�to�the�interrupt.�FailureI2968™*‰to�do�this�could�severely�hamper�system�throughput.�When�the�usersH2969™*‰I/O�transaction�is�completed,�a�zero�is�written�in�the�users�IOCBH2970™*‰status�byte�and�a�normal�I/O�completion�event�is�sent�to�IOS.�The*2971™*‰driver�then�returns�control�to�CMR.2972™* MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚67(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• 02974™*ƒENTRY:‚JSR‚FROM�INTERRUPT�HANDLER�ROUTINE2975™*‹A0�-�WORK�REGISTER2976™*‹A1�=�SELF2977™*‹A5�=�ADDRESS�OF�CCB2978™*‹D0�=�WORK�REGISTER2979™*42980™*ƒEXIT:‚RTS�-�BACK�TO�INTERRUPT�HANDLER�ROUTINE2981™*2982™*ƒREGISTERS�USED:ƒ012345672983™*”D********2984™*”A*****P**2985™*$2986™*ƒEXEC�ROUTINES�CALLED:‚QEVENTI2987™*2988™*ƒCODE�IS�RE-ENTRANT2989™*K2990™*---------------------------------------------------------------------2991™*92992™*�If�channel�is�off-line�or�not�attached,�just�exit.2993™* 2994™DEVISR:F2995�7�00000334�226D0022�MOVE.L�CCBCHB(A5),A1‰Get�device�base�address.2996M2997�7�00000338�10290002�MOVE.B�DEV1AC(A1),D0‰Pick�up�A-side�status�register.;2998�7�0000033C�02000081�AND.B‚#$81,D0�Mask�interrupt�bits.:2999�7�00000340�0C000081�CMP.B‚#$81,D0�Interrupt�pending�?13000�7�00000344�6714“BEQ.S‚DEVI010�Branch�if�yes.M3001�7�00000346�10290006�MOVE.B�DEV1BC(A1),D0‰Pick�up�B-side�status�register.;3002�7�0000034A�02000081�AND.B‚#$81,D0�Mask�interrupt�bits.:3003�7�0000034E�0C000081�CMP.B‚#$81,D0�Interrupt�pending�?13004�7�00000352�6706“BEQ.S‚DEVI010�Branch�if�yes.3005J3006�7�00000354�027CFFFE�AND.W‚#$FFFE,SR�No�interrupt�so�set�condition�and 3007�7�00000358�4E75“RTSšreturn.3008J3009�7�0000035A�082D00010049�DEVI010ƒBTSTW‚#CCBFGOFF,CCBSTR(A5)‚Off-line�?13010�7�00000360�6610“BNE.S‚DEVI020�Branch�if�yes.Q3011�7�00000362�082D00070048‹BTSTW‚#CCBFGATH,CCBSTR(A5)‚Is�the�channel�attached�?03012�7�00000368�6708“BEQ.S‚DEVI020�Branch�if�no.D3013�7�0000036A�082D00070071‹BTSTW‚#CCBFGBSY,CCBFG(A5)ƒI/O�pending�?13014�7�00000370�6612“BNE.S‚DEVI100�Branch�if�yes.3015Q3016�7�00000372�226D0022…DEVI020ƒMOVE.L�CCBCHB(A5),A1‰Set�up�device�base�address.@3017�7�00000376�6100FCCC�BSR„DEVINITLŽDisable�device�interrupts.30183019�7�0000037A˜ENABLH…7�0000037A�46ED0040†MOVE.W�CCBSR(A5),SR�Drop�processor�priority�by�one.93020�7�0000037E�007C0001�OR.Wƒ#$0001,SR�Set�condition�and 3021�7�00000382�4E75“RTSšreturn. MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚68(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• S3023™******************************************************************************3024™*!3025™*�INTERRUPT�LEVEL�PROCESSING3026™*53027™*ˆIt�has�been�determined�that�I/O�is�in�progress!3028™*ˆand�the�interrupt�is�ours.3029™*3030™*S3031™******************************************************************************3032™* 3033™DEVI100:U3034�7�00000384�48E77F3A�MOVEM.L�D1-D7/A2-A4/A6,-(A7)�Save�the�rest�of�the�registers.I3035�7�00000388�6100FCBA�BSR…DEVINITL�Reprogram�device�for�no�interrupts.E3036�7�0000038C�206D0090�MOVE.L‚CCBPTR(A5),A0ˆRestore�buffer�pointer.I3037�7�00000390�102D00BE�MOVE.B‚CCBSAVB(A5),D0‡Restore�current�data�byte.M3038�7�00000394�246D00C3�MOVE.L‚CCBIRTN(A5),A2‡Get�interrupt�service�address.?3039�7�00000398�266D0076�MOVE.L‚CCBCCB(A5),A3ˆGet�IOCB�address.>3040�7�0000039C�286D0098�MOVE.L‚CCBCID(A5),A4ˆGet�DCB�address.P3041�7�000003A0�522D00CB�ADD.Bƒ#1,CCBICNT(A5)‡Increment�pending�interrupt�count.R3042�7�000003A4�487A0008�PEA…DEVINRTN(PC)‰Stack�the�interrupt�routine�exit�addressV3043�7�000003A8�2F2D00C7�MOVE.L‚CCBISTK(A5),-(A7)„Restore�subroutine�return�address�on ) 3044™*¦stack.53045�7�000003AC�4ED2“JMP…(A2)‘Jump�to�output�routine.30463047™*33048™*�DEV�interrupt�handler�exits�from�this�point.3049™*3050™DEVINRTN:O3051�7�000003AE�532D00CB�SUB.Bƒ#1,CCBICNT(A5)‡Decrement�pending�interrupt�countH3052�7�000003B2�4CDF5CFE�MOVEM.L�(A7)+,D1-D7/A2-A4/A6�Restore�registers.3053�7�000003B6˜ENABLH…7�000003B6�46ED0040†MOVE.W�CCBSR(A5),SR�Drop�processor�priority�by�one.@3054�7�000003BA�007C0001�OR.Wƒ#$0001,SR�Set�return�condition�and53055�7�000003BE�4E75“RTSšreturn�to�interrupt�handler. MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚69(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• O3057™**************************************************************************3058™* 3059™*�QEVNT3060™*#3061™*„Place�message�on�user's�ASQ.3062™*!3063™*ˆA4�=�address�of�event�area3064™*ˆA5�=�address�of�CCB,3065™*ˆD0�=�event�length�(minus�header�info)3066™*ˆD1�=�event�type3067™*ˆD2�=�4�byte�id�(DCB)"3068™*ˆD3�=�status�value�(2�bytes)#3069™*ˆD4�=�device�status�(2�bytes)"3070™*ˆD5�=�device�number�(1�byte)3071™*O3072™**************************************************************************3073™* 3074™QEVNT:.3075�7�000003C0�2C00“MOVE.L�D0,D6ŽSave�length.I3076�7�000003C2�7E02“MOVE.L�#2,D7ŽOffset�for�staging�(no�service�vector).K3077�7�000003C4�197C00010001‹MOVE.B�#IOEVCD,1(A4)†Code�(no�service�vector).E3078�7�000003CA�296D003C0002‹MOVE.L�CCBSVVC(A5),2(A4)‚Service�vector.?3079�7�000003D0�670A“BEQ.S‚QEVNT10ŒBranch�if�no�service�vector.C3080�7�000003D2�5880“ADD.L‚#4,D0ŽCorrect�length�for�service�vector.K3081�7�000003D4�5887“ADD.L‚#4,D7ŽCorrect�offset�staging�for�service�vector.N3082�7�000003D6�069400800000‹ADD.L‚#$00800000,(A4)„Correct�for�service�vector.3083J3084�7�000003DC�19817000…QEVNT10ƒMOVE.B�D1,0(A4,D7)ˆCompletion�event�type.F3085�7�000003E0�19AD00387001‹MOVE.B�CCBKEY(A5),1(A4,D7)�User's�id�key.A3086�7�000003E6�5880“ADD.L‚#4,D0ŽComplete�length�of�return�event.N3087�7�000003E8�B02D003A�CMP.B‚CCBASQL(A5),D0…User's�maximum�ASQ�entry�length.73088�7�000003EC�6304“BLS.S‚QEVNT20ŒBranch�if�length�ok.H3089�7�000003EE�102D003A�MOVE.B�CCBASQL(A5),D0…User's�length�is�smaller.3090;3091�7�000003F2�1880‰QEVNT20ƒMOVE.B�D0,(A4)ŒCorrect�length.3092H3093�7�000003F4�29827002…QEVNT40ƒMOVE.L�D2,2(A4,D7)ˆSet�up�status�value.<3094�7�000003F8�39837006�MOVE.W�D3,6(A4,D7)ˆSet�up�id�(DCB).23095�7�000003FC�0C060006�CMP.B‚#6,D6Ž6�byte�info�?13096�7�00000400�6712“BEQ.S‚QEVNT50ŒBranch�if�yes.A3097�7�00000402�39847008�MOVE.W�D4,8(A4,D7)ˆSet�up�device�status.23098�7�00000406�0C060008�CMP.B‚#8,D6Ž8�byte�info�?13099�7�0000040A�6708“BEQ.S‚QEVNT50ŒBranch�if�yes.B3100�7�0000040C�1985700A�MOVE.B�D5,10(A4,D7)‡Set�up�device�number.>3101�7�00000410�4234700B�CLR.B‚11(A4,D7)ŠClear�reserved�field.3102™*N3103™*�Now�let's�put�the�completion�into�registers�and�send�event�to�the�task.3104™*3105�7Š00000414…QEVNT50ƒEQU„*+3106�7�00000414�4CD400FC�MOVEM.L�(A4),D2-D7#3107�7�00000418�6102“BSR.S‚IOHQEVNT3108�7�0000041A�4E75“RTS MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚70(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• P3110™***************************************************************************3111™*3112™*>3113™*�ROUTINE�TO�QUEUE�EVENT�(ALREADY�STAGED�IN�REGISTERS)�TO3114™*ƒ-�DRIVING�TASK.%3115™*ƒ-�EVENT�BEGINS�IN�REGISTER�D2.3116™*3117™*3118™*ˆEXEC�ROUTINE43119™*ˆREGISTERS�USED:�D0-D1/A0,A3-A6‚WORK�REGISTERS3120™*˜D2-D7‹STAGING�REGISTERS3121™*3122™*P3123™***************************************************************************3124™*3125™IOHQEVNT:<3126�7�0000041C�48E7001C�MOVEM.L�A3-A5,-(A7)‡Ssve�registers.E3127�7�00000420�206D0034�MOVE.L�CCBRQSTA(A5),A0„Caller's�TCB�address.  J3129�7�00000424�7018“MOVE.L�#T0QEVNTI,D0‰If�this�routine�was�called�duringN3130�7�00000426�4A2D00CB�TST.B‚CCBICNT(A5)ˆinterrupt�processing,�use�the�QEVNTG3131�7�0000042A�66* 02“BNE.S‚IOHQ4Žinterrupt�routine,�else�use�the�normal73132�7�0000042C�7017“MOVE.L�#T0QEVNTT,D0‡QEVNT�routine."3133�7�0000042E�4E40‰IOHQ4…TRAPƒ#073134�7�00000430�600A“BRA.S‚IOHQ5ŽBranch�if�queueing�ok.?3135�7�00000432�4CDF3800�MOVEM.L�(A7)+,A3-A5‡Restore�registers.Q3136�7�00000436�2B570072�MOVE.L�(A7),CCBQVER1(A5)‚Save�callers�address�for�debug."3137�7�0000043A�6008“BRA.S‚IOHQRTN3138E3139�7�0000043C�4CDF3800…IOHQ5…MOVEM.L�(A7)+,A3-A5‡Restore�registers.F3140�7�00000440�42AD0072�CLR.L‚CCBQVER1(A5)‡Clear�queue�error�address.3141'3142�7�00000444�4E75‰IOHQRTNƒRTS—RETURN3143£END ******�TOTAL�ERRORS†0--******�TOTAL�WARNINGS„0-- MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚71(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• SYMBOL TABLE LISTING  .SYMBOL�NAME…SECTƒVALUE‡CROSS-REF�(LINENUMBERS)  .009A‘00000002‚-2666†1ƒ2666.010A‘00000002‚-2792†1ƒ2792.011A‘00000002‚-2816…-1ƒ2816BEL“00000007‚-1976BRKEVT�00000004‚-1370BS”00000008‚-1977CCBALL�00000004ƒ-540CCBASQL�0000003Aƒ-571ƒ3087ƒ3089$CCBCCB�00000076‚-2060ƒ2302ƒ2623ƒ3039CCBCFIG�0000009E‚-2067ƒ2714#CCBCHB�00000022ƒ-553ƒ2625ƒ2995ƒ3016)CCBCID�00000098‚-2065ƒ2301ƒ2644ƒ2859ƒ3040CCBCMCT�00000019ƒ-550CCBCOPT�0000009C‚-2066ƒ2300CCBDDP�00000070ƒ-588ƒ2054CCBEAP1�00000094‚-2064ƒ2697CCBEXTRPŽ00000001‚-2019ƒ21162CCBFG‘00000070‚-2058ƒ2286ƒ2339ƒ2609ƒ2627ƒ2849ƒ3013CCBFGATHŽ0000000Fƒ-616ƒ30115CCBFGBSYŽ00000007‚-2078ƒ2286ƒ2339ƒ2609ƒ2627ƒ2849ƒ3013CCBFGDIRŽ00000008ƒ-617CCBFGOFFŽ00000001ƒ-621ƒ3009CCBFGSUPŽ00000002ƒ-618CCBFGSYSŽ00000000ƒ-622%CCBICNT�000000CB‚-2073ƒ3041ƒ3051ƒ3130CCBIOH�00000050ƒ-579%CCBIRTN�000000C3‚-2070ƒ2896ƒ2897ƒ3038#CCBISR�00000042ƒ-575ƒ2200ƒ2621ƒ2901 CCBISTK�000000C7‚-2071ƒ2899ƒ3043CCBJSR�0000004Aƒ-578CCBKEY�00000038ƒ-564ƒ3085CCBMASK�00000002ƒ-605CCBMCNT�00000004ƒ-595„596CCBMME�00000026ƒ-554CCBMNEM�00000014ƒ-548CCBPBASEŽ00000070ƒ-596CCBPECT�0000002Bƒ-558)CCBPKT�0000007E‚-2062ƒ2613ƒ2645ƒ2747ƒ2863CCBPOFF�00000000ƒ-604CCBPOLL�00000008ƒ-542CCBPPRIOŽ00000029ƒ-556$CCBPTR�00000090‚-2063ƒ2347ƒ2695ƒ3036CCBPTST�00000003ƒ-606!CCBQVER1Ž00000072‚-2059ƒ3136ƒ3140CCBRESO�00000004ƒ-607CCBRESP�00000007ƒ-609CCBRESV�00000006ƒ-608CCBRESV1Ž0000005Cƒ-583CCBRESV2Ž00000060ƒ-584CCBRESV3Ž00000064ƒ-585CCBRESV4Ž00000068ƒ-586CCBRESV5Ž0000006Cƒ-587 MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚72(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• %CCBRLEN�000000BF‚-2069ƒ2631ƒ2632ƒ2861CCBRQST�0000002Cƒ-560CCBRQSTAŽ00000034ƒ-562ƒ3127CCBRSR�00000001ƒ-629CCBRSW�00000000ƒ-628CCBRTN�00000039ƒ-565CCBRTNI�0000001Eƒ-552 CCBSAVB�000000BE‚-2068ƒ2895ƒ3037CCBSPRIOŽ0000002Aƒ-557'CCBSR‘00000040ƒ-574ƒ2202ƒ2925ƒ3019ƒ3053CCBSTR�00000048ƒ-577ƒ3009ƒ3011CCBSUB�00000010ƒ-544CCBSVVC�0000003Cƒ-573ƒ3078CCBTASK�00000054ƒ-581 CCBTASKAŽ00000050ƒ-580ƒ2272ƒ2304:CCBTASKBŽ0000007A‚-2061ƒ2304ƒ2344ƒ2634ƒ2673ƒ2686ƒ2721ƒ2850CCBTLNK�0000000Cƒ-543CCBTYPE�00000018ƒ-549ƒ2408CCBUSER�0000001Aƒ-551CCBVADR�00000044ƒ-576CCBVECT�00000028ƒ-555CDCBLN�00000098‚-1553CDFLUN�00000005ƒ-729CECCDO�00000001ƒ-951ƒ2439CECPLGP�00000042ƒ-969CECPNI�00000040ƒ-967CECPRLZ�00000041ƒ-968CECTBR�00000042ƒ-961CECTIM�00000041ƒ-959CECTTI�00000040ƒ-957CECUAP�00000002ƒ-953ƒ2494CFGEVT�00000008‚-1374CHNGDEF‹7ƒ0000012C‚-2463ƒ2170CMDERRŒ7ƒ000000AE‚-2318ƒ2313'CMDEXIT‹7ƒ000002A2‚-2755ƒ2353ƒ2619ƒ2647CMDSRCH‹7ƒ0000009E‚-2310ƒ2311&CMDTBLŒ7ƒ00000028‚-2159ƒ2165ƒ2172ƒ2307CMNCNFG‹7ƒ0000013C‚-2488ƒ2444"CNFGADR‹7ƒ00000264‚-2714ƒ2371ƒ2434CNFGADR2Š7ƒ00000268‚-2717ƒ2468CNFGADR3Š7ƒ00000280‚-2729ƒ2723'CNFGERR‹7ƒ00000188‚-2554ƒ2441ƒ2500ƒ2505CNFGEXITŠ7ƒ000001A8‚-2593ƒ2556CNFGLOOPŠ7ƒ0000019E‚-2589ƒ2590CONFIGURŠ7ƒ00000110‚-2429ƒ2169CR”0000000D‚-1980DATBIN�00000002‚-1579DATFMK�00000007‚-1584DATHIO�00000005‚-1582DATIMG�00000004‚-1581DATIND�00000008‚-1585DATPOS�00000006‚-1583DATPRT�00000009‚-1586DA* TRAN�00000003‚-1580DATRED�00000000‚-1577DATSPD�0000000C‚-1589DATSPL�0000000A‚-1587DATWRC�0000000B‚-1588 MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚73(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• DATWRT�00000001‚-1578DCBAID�00000004‚-1496DCBATT�00000018‚-1500DCBBCT�0000004F‚-1516DCBBRK�00000050‚-1517DCBCAN�00000092‚-1540ƒ2570DCBCCB�00000024‚-1507DCBCCF�0000004E‚-1513DCBCDV�00000028‚-1508DCBCRN�0000002A‚-1510DCBDAT�0000008E‚-1539DCBDCQ�00000008‚-1497LDCBDEV�00000068‚-1526ƒ1527ƒ1528ƒ1529ƒ1530ƒ1531ƒ1536ƒ1537ƒ1538ƒ1539ƒ1540ƒ1544¡1551ƒ1558ƒ2443ƒ2473DCBDID�0000000C‚-1498DCBDKC�00000068‚-1545DCBFLG�00000022‚-1506DCBHBS�00000086‚-1537DCBIOS�0000002E‚-1511DCBLBA�0000004A‚-1512DCBLEN�00000072‚-1527DCBLUT�00000014‚-1499DCBPRI�00000029‚-1509DCBPTC�00000068‚-1552DCBPTR�00000000‚-1495DCBRCD�0000001B‚-1502DCBRNT�00000020‚-1505DCBRSV�00000058‚-1519DCBSBS�00000082‚-1536DCBSEC�00000074‚-1528DCBSIZ�00000074‚-1529DCBSRV�00000054‚-1518DCBTIM�0000008A‚-1538DCBTMO�0000001C‚-1503DCBTMR�0000007C‚-1531DCBTMW�00000078‚-1530DCBWCD�0000001A‚-1501DCBWNT�0000001E‚-1504DCQDCB�00000008‚-1662DCQLAD�00000014‚-1665DCQLEN�0000001C‚-1670DCQLUE�00000010‚-1664DCQLUT�0000000C‚-1663DCQNXT�00000004‚-1661DCQPLN�0000001A‚-1668DCQPRI�0000001B‚-1669DCQPTR�00000000‚-1660DCQRES�00000019‚-1667DCQTIN�00000018‚-1666DDCBLN�00000096‚-1546DEV020Œ7ƒ00000328‚-2917DEV1AC�00000002‚-1988ƒ2997DEV1AD�00000000‚-1990ƒ2917DEV1BC�00000006‚-1989ƒ3001DEV1BD�00000004‚-1991ƒ2912ƒ2923DEVBSYŒ7ƒ00000306‚-2895'DEVDRVR‹7ƒ00000000‚-2107ƒ2108ƒ2109ƒ2110DEVFLTŒ7ƒ0000031C‚-2912 MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚74(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• "DEVI010‹7ƒ0000035A‚-3009ƒ3000ƒ3004"DEVI020‹7ƒ00000372‚-3016ƒ3010ƒ3012DEVI100‹7ƒ00000384‚-3033ƒ3014DEVINIT‹7ƒ00000038‚-2196ƒ21102DEVINITLŠ7ƒ00000044‚-2215ƒ2201ƒ2626ƒ2913ƒ3017ƒ3035DEVINRTNŠ7ƒ000003AE‚-3050ƒ3042DEVISRŒ7ƒ00000334‚-2994ƒ2108DEVOEXŒ7ƒ0000032E‚-2924ƒ2915DEVOUTŒ7ƒ00000304‚-2889ƒ2843DEVU010‹7ƒ00000062‚-2277ƒ2274DEVU020‹7ƒ0000007C‚-2299ƒ2287DEVUSER‹7ƒ00000046‚-2265ƒ2109DFCˆMACRƒ*�-1332DFLGCF�00000004‚-1570DFLGCT�00000005‚-1571DFLGIN�00000003‚-1569DFLGIT�00000006‚-1572DFLGON�00000000‚-1566DFLGSC�00000002‚-1568DFLGWP�00000001‚-1567DRVEVT�00000001‚-1367DRVHLT�00000000‚-1366DRVORG�00000014‚-1969DSDVIA�0000003E‚-1996DSDVIB�0000003C‚-1997EM_CLSE�00000106ƒ-652EM_NOARGŽ00000102ƒ-648EM_NOMEMŽ00000104ƒ-650EM_NVDEVŽ00000107ƒ-653EM_NVE�00000100ƒ-646EM_NVO�00000103ƒ-649EM_OPTCFŽ00000105ƒ-651EM_SCBO�00000101ƒ-647(ENABL†MACRƒ*�-2035†1ƒ2202ƒ2925ƒ3019ƒ3053EVADEV�00000002‚-1474EVALEN�00000008‚-1476EVASTA�00000006‚-1475EVATNAS�00000001‚-1481EVTCOD�0000000A‚-1385EVTDCB�0000000C‚-1387EVTKOD�0000000A‚-1398EVTLEN�0000002A‚-1411EVTLNG�00000010‚-1388EVTLUE�0000000C‚-1400EVTLUT�00000010‚-1401EVTPRI�00000015‚-1403EVTPST�00000028‚-1409EVTPSZ�00000029‚-1410EVTRA0�00000024‚-1408EVTRD0�00000020‚-1407EVTSES�0000001A‚-1405EVTTIN�00000014‚-1402EVTTSK�00000016‚-1404EVTUNM�0000001E‚-1406EXECPRIOŽ000000F0„-42FAPBIT�00000007ƒ-735FDATT‘00000028ƒ-837FDCLG‘00000002ƒ-827 MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚75(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• FDDAT‘0000002Fƒ-843FDDTEA�00000032ƒ-845FDDTEC�00000030ƒ-844FDEOF‘0000001Eƒ-833FDEOR‘00000022ƒ-834FDEXT‘00000012ƒ-829FDFAB‘0000002Eƒ-842FDFE’0000001Aƒ-832FDFIL‘0000000Aƒ-828FDFS’00000016ƒ-831FDKEY‘0000002Dƒ-841FDLBZ‘00000029ƒ-838FDLEN‘0000003Cƒ-847FDLRL‘0000002Aƒ-839FDRCD‘00000027ƒ-836FDUSN‘00000000ƒ-826FDVDEV�00000000ƒ-852FDVLEN�0000000Aƒ-856FDVSTS�00000009ƒ-855FDVVAL�00000008ƒ-854FDVVOL�00000004ƒ-853FDWCD‘00000026ƒ-835FF”0000000C‚+ -1979FFTBIT�00000700ƒ-760FHALLO�00000080ƒ-706FHALLOB�00000007‚-1416FHASGN�00000040ƒ-707FHASGNB�00000006‚-1417FHCHLU�00000110ƒ-717FHCHLUB�00000004‚-1427FHCHNG�00000020ƒ-708FHCHNGB�00000005‚-1418FHCKPT�00000001ƒ-713FHCKPTB�00000000‚-1423FHCLOS�00000004ƒ-711FHCLOSB�00000002‚-1421FHDELT�00000002ƒ-712FHDELTB�00000001‚-1422FHDVOL�00008001ƒ-725FHDVOLB�00000000‚-1428FHFDEN�00000140ƒ-715FHFDENB�00000006‚-1425FHFDMN�00000120ƒ-716FHFDMNB�00000005‚-1426FHFDV‘00000108ƒ-718FHLEVT�00000006‚-1372FHPROT�00000008ƒ-710FHPROTB�00000003‚-1420FHRATT�00000180ƒ-714FHRATTB�00000007‚-1424FHRENM�00000010ƒ-709FHRENMB�00000004‚-1419FHSˆMACRƒ*�-1270FHSBLN�00000028ƒ-683„698FHSCALL„MACRƒ*�-1190FHSCLG�0000000Cƒ-670FHSCLN�00000010ƒ-691FHSCMD�00000000ƒ-663 MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚76(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• FHSDAT�00000027ƒ-682FHSDLN�0000000Aƒ-668FHSEAD�0000002Cƒ-700FHSEXT�0000001Cƒ-672FHSFAB�00000026ƒ-681FHSFIL�00000014ƒ-671FHSFLN�0000000Eƒ-696FHSGEN�0000001Eƒ-673FHSID‘2E464853‚-1357FHSKEY�00000025ƒ-680FHSLEN�0000000Aƒ-695FHSLRL�00000022ƒ-676FHSLUA�00000005ƒ-686FHSLUB�00000006ƒ-687FHSLUN�00000005ƒ-666„685FHSNLN�00000034ƒ-702FHSOPT�00000002ƒ-664FHSPTR�00000006ƒ-694FHSRCD�00000021ƒ-675FHSRES�00000024ƒ-679FHSSAD�00000028ƒ-699FHSSES�0000000Cƒ-690FHSSIZ�00000024ƒ-677„678FHSSNM�00000030ƒ-701FHSSTA�00000004ƒ-665FHSTIN�00000003‚-1356FHSTSK�00000008ƒ-689FHSUSN�0000000Aƒ-669FHSVOL�00000006ƒ-667„693FHSWCD�00000020ƒ-674FMSID‘2E464D53‚-1358FOPABF�00000020ƒ-752FOPABFB�00000005‚-1435FOPADR�00000800ƒ-766FOPADRB�0000000B‚-1437FOPBEG�00000000ƒ-755FOPBEGB�00000006‚-1436FOPCON�00000000ƒ-761FOPDSP�00000002ƒ-779FOPDSY�00000000ƒ-777FOPDTM�00000001ƒ-778FOPDUS�00000003ƒ-780FOPEND�00000040ƒ-756FOPER‘00000001ƒ-737FOPEREW�00000007ƒ-743FOPERPW�00000006ƒ-742FOPEW‘00000003ƒ-739FOPFIN�00000005ƒ-784FOPFPR�00000006ƒ-785FOPFRA�00000004ƒ-783FOPISD�00000300ƒ-764FOPISK�00000200ƒ-763FOPKEP�00008000ƒ-774FOPKEPB�0000000F‚-1439FOPOVRT�00000008ƒ-746FOPOVRTBŽ00000003‚-1433FOPPR‘00000000ƒ-736FOPPREW�00000005ƒ-741 MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚77(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• FOPPRPW�00000004ƒ-740FOPPW‘00000002ƒ-738FOPRLU�00000001ƒ-773FOPSEQ�00000100ƒ-762FOPSLU�00000000ƒ-772FOPSLUB�00000000‚-1438FOPTRN�00000010ƒ-749FOPTRNB�00000004‚-1434FSTAADD�00000011ƒ-809FSTAAP�0000000Bƒ-803FSTAAS�0000000Dƒ-805FSTABO�0000000Fƒ-807FSTADL�00000015ƒ-813FSTADNM�00000005ƒ-797FSTADS�0000000Aƒ-802FSTADT�0000000Eƒ-806FSTAEOD�00000018ƒ-816FSTAFD�00000006ƒ-798FSTAFL�0000001Aƒ-818FSTAFT�00000012ƒ-810FSTAIE�00000013ƒ-811FSTAIF�00000002ƒ-794FSTAILU�00000003ƒ-795FSTAIP�00000014ƒ-812FSTAIU�0000001Dƒ-821FSTAKY�00000019ƒ-817FSTANDV�0000001Bƒ-819FSTANNM�00000017ƒ-815FSTAOK�00000000ƒ-789FSTAPC�00000007ƒ-799FSTARL�00000008ƒ-800FSTASE�00000009ƒ-801FSTASS�0000000Cƒ-804FSTASZ�00000016ƒ-814FSTATN�00000010ƒ-808FSTAVOL�00000004ƒ-796FSTAWS�0000001Cƒ-820FUSBIT�0000F000ƒ-769GETT10Œ7ƒ000002C8‚-2820ƒ2817GETTCBŒ7ƒ000002BE‚-2815HALTŽ7ƒ000001AC‚-2608ƒ2282HALTOKŒ7ƒ000001CE‚-2620ƒ2610HIBIT‘0000000F„-43#INHIB†MACRƒ*�-2028†1ƒ2200ƒ2621ƒ2901IOABITS�00000002‚-1013IOAECHO�00000006‚-1017IOAHCPY�00000000‚-1011IOALNFD�00000000‚-1046IOAMODM�0000000A‚-1021IOAOFFH�0000000B‚-1022IOAPNUL�00000009‚-1020IOAPRTY�00000005‚-1016IOASNFF�00000001‚-1047IOASTPB�00000003‚-1014IOATAHD�00000007‚-1018IOATFUL�00000008‚-1019IOATPLL�00000002‚-1048IOAUSEP�00000004‚-1015 MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚78(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• IOAXCTL�00000001‚-1012IOBRKS�00000120‚-1081IOCHDC�00008002‚-1086ƒ2163IOCNFG�00000180‚-1083ƒ2162IOCOMN�494F5347‚-1375+ IODDEV�00000008‚-2016ƒ2411IODELR�00000010‚-1073IODID‘2E494F44‚-1360IODIPC�00000020‚-1007IODLPRT�00000002‚-1004IODMPSC�00000001‚-1003IODSASI�00000003‚-1006IOEVCD�00000001‚-2004ƒ3077IOFRMT�00000020‚-1074IOHADR2‹7ƒ000002B0‚-2790IOHADR6‹7ƒ000002BA‚-2794ƒ2787"IOHADR8‹7ƒ000002BC‚-2795ƒ2789ƒ2793(IOHADRCKŠ7ƒ000002A6‚-2785ƒ2273ƒ2687ƒ2722IOHALT�00000110‚-1080ƒ2281IOHQ4�7ƒ0000042E‚-3133ƒ3131IOHQ5�7ƒ0000043C‚-3139ƒ3134IOHQEVNTŠ7ƒ0000041C‚-3125ƒ3107IOHQRTN‹7ƒ00000444‚-3142ƒ3137IOHUSRTNŠ7ƒ000002A4‚-2759ƒ2289IOIID‘2E494F49‚-1363IOLEVT�00000005‚-1371IONBRKS�00000201‚-1084IOOWIN�00000004‚-1071IOPASC�00000000‚-1090IOPASCB�00000000‚-1451IOPBIN�00000001‚-1102IOPBLK�00000040‚-1108IOPBRK�00000010‚-1106IOPBRKB�00000004‚-1455IOPCAD�00000200‚-1111IOPCDO�00001000‚-1116IOPCDOB�0000000C‚-1465IOPCNP�00000000‚-1092IOPCTA�00001000‚-1115IOPCTAB�0000000C‚-1464IOPCUR�00002000‚-1119IOPDSK�00000000‚-1101IOPECH�00000000‚-1094IOPECHB�00000005‚-1456IOPFOR�00000000‚-1093IOPFORB�00000003‚-1454IOPFTRK�0000000C‚-1463IOPIMG�00000008‚-1105IOPINF�00000000‚-1099IOPINFB�0000000A‚-1461IOPINM�00000400‚-1112IOPLRN�00000000‚-1096IOPLRNB�00000007‚-1458IOPNEC�00000020‚-1107IOPNOC�00000000‚-1098IOPNOCB�00000009‚-1460IOPNOK�00000000‚-1097IOPNOKB�00000008‚-1459 MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚79(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• IOPNXT�00000000‚-1118IOPOST�00000101‚-1076IOPPMP�00000000‚-1100IOPPOS�00006000‚-1117IOPPRO�00000002‚-1103IOPPRV�00004000‚-1120IOPRAN�00006000‚-1121IOPREC�00000000‚-1095IOPRECB�00000006‚-1457IOPRRN�00000080‚-1109IOPRTK�00000100‚-1110IOPSMP�00000800‚-1113IOPSMPB�0000000B‚-1462IOPTRK�00001000‚-1114IOPTSK�00008000‚-1122IOPTSKB�0000000F‚-1466ƒ2662IOPUNP�00000004‚-1104IOPUNPB�00000002‚-1453IOPWAT�00000000‚-1091IOPWATB�00000001‚-1452IOREAD�00000001‚-1069IOREWD�00000102‚-1077IOSˆMACRƒ*�-1213#IOSATM�00000004ƒ-895ƒ2378ƒ2499ƒ25152IOSATW�00000008ƒ-897ƒ2516ƒ2518ƒ2519ƒ2584ƒ2585ƒ2586IOSBLN�0000001Cƒ-874ƒ1486ƒ1511IOSBRC�0000001Aƒ-918ƒ1536IOSBRCB�00000005‚-1027IOSBRT�00000026ƒ-924ƒ1539ƒ1540IOSBRTB�0000000B‚-1033IOSC005‹7ƒ0000023A‚-2679ƒ2663IOSC010‹7ƒ00000258‚-2695ƒ2688IOSCAD�00000018ƒ-873IOSCALL„MACRƒ*�-1200IOSCEC�00000000ƒ-890ƒ2555IOSCLC�0000001Dƒ-921IOSCLCB�00000008‚-1030IOSCOMN‹7ƒ0000021A‚-2661ƒ2337IOSCSL�0000000Cƒ-881IOSCTP�00000001ƒ-892ƒ2408IOSDBP�00000008ƒ-880ƒ2718!IOSDDC�00000018ƒ-902„915„934ƒ1058IOSDLN�0000002E‚-1065ƒ1545IOSDOP�0000001Bƒ-919IOSDOPB�00000006‚-1028IOSDRC�00000003ƒ-894ƒ2411IOSDST�00000000ƒ-889„890ƒ2407IOSDTP�00000002ƒ-893ƒ2410IOSEAD�00000010ƒ-871ƒ2680IOSELC�0000001Aƒ-936IOSELCB�00000005‚-1053IOSEOL�00000022ƒ-923ƒ1538IOSEOLB�0000000A‚-1032IOSESS�00000001‚-1365IOSFCM�00000001‚-1445IOSFCT�00000000ƒ-862ƒ2281ƒ2308IOSFIO�00000000‚-1444IOSFPV�00000080‚-1446 MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚80(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• IOSHDS�00000019‚-1060IOSID‘2E494F53‚-1359IOSILV�0000001C‚-1062IOSLEN�00000014ƒ-872ƒ2631ƒ2861IOSLRL�00000018ƒ-935IOSLRLB�00000004‚-1052IOSLUN�00000005ƒ-865IOSNLN�00000024‚-1489IOSNLS�00000027ƒ-925IOSNLSB�0000000C‚-1034IOSOPT�00000002ƒ-863ƒ2300ƒ2662IOSPKL�00000007ƒ-868IOSPLN�0000002Aƒ-938ƒ1559(IOSPRM�00000006ƒ-896ƒ2379ƒ2440ƒ2504ƒ2521IOSREC�0000000Aƒ-898ƒ1527ƒ2525IOSRECB�00000000ƒ-907ƒ2010IOSRLN�0000001Cƒ-920IOSRLNB�00000007‚-1029IOSRRN�00000008ƒ-869„879#IOSRSZ�0000000Cƒ-899ƒ1528ƒ1529ƒ2530IOSRSZB�00000001ƒ-908ƒ2010IOSRTO�00000014ƒ-901ƒ1531IOSRTOB�00000003ƒ-910IOSRTV�0000001Eƒ-922ƒ1537IOSRTVB�00000009‚-1031IOSSAD�0000000Cƒ-870ƒ2679IOSSES�00000020‚-1488IOSSOF�0000001D‚-1063IOSSPT�00000018‚-1059IOSSRV�00000006ƒ-866#IOSSTA�00000004ƒ-864ƒ2640ƒ2752ƒ2860IOSTAT�00000140‚-1082ƒ2161IOSTCD�00000029ƒ-927IOSTCDB�0000000E‚-1036IOSTIN�00000002‚-135, 5IOSTLN�00000030ƒ-929ƒ1552IOSTRC�00000028ƒ-926IOSTRCB�0000000D‚-1035IOSTRK�0000001A‚-1061IOSTSK�0000001C‚-1487ƒ2665#IOSWTO�00000010ƒ-900ƒ1530ƒ2443ƒ2535IOSWTOB�00000002ƒ-909ƒ2010ƒ2440)IOSXLN�00000020‚-2014ƒ2067ƒ2382ƒ2584ƒ2719IOSXOF�00000018ƒ-916IOSXOFB�00000004‚-1026IOSXON�00000019ƒ-917IOTBRK�00000040‚-1075IOTEST�00000104‚-1078IOUCBK�00008001‚-1085IOUPDR�00000008‚-1072IOWAIT�00000108‚-1079IOWRIT�00000002‚-1070ƒ2160 ISTAADD�00000084‚-1130ƒ2692ƒ2726ISTAAL�000000CF‚-1150ISTABDS�000000EF‚-1169ISTABO�000000C1‚-1136ISTABRK�000000C6‚-1141ISTABUS�000000F6‚-1178 MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚81(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• ISTACDN�000000F3‚-1175ISTACFG�000000F5‚-1177ƒ2554ISTACHN�000000F1‚-1173ISTACMP�000000D2‚-1153ISTACNF�00000088‚-1134ISTACNT�000000F4‚-1176ISTACRC�000000E3‚-1157ISTACSM�000000E8‚-1162ISTADB�000000E2‚-1156ISTADDM�000000E5‚-1159ISTADMA�000000F2‚-1174ISTADMC�000000F8‚-1180ISTADME�000000EC‚-1166ISTADO�000000EA‚-1164ISTAEOF�000000C2‚-1137ISTAEOV�000000C3‚-1138ISTAFAB�000000C4‚-1139ISTAFD�000000C8‚-1143ISTAICE�000000F9‚-1181ISTAIDS�000000CD‚-1148ISTAIE�000000C7‚-1142ISTAIF�00000082‚-1128ƒ2318ISTAILU�00000083‚-1129ISTAIP�00000086‚-1132ƒ2275ISTAKY�000000CC‚-1147ISTAMAP�000000F7‚-1179ISTAMRK�000000ED‚-1167ISTANR�000000E1‚-1155ƒ2856$ISTAOK�00000000‚-1126ƒ2386ƒ2592ƒ2853ISTAPC�00000087‚-1133ISTARE�000000CA‚-1145ISTARES�000000E9‚-1163ISTARN�000000C9‚-1144ISTARO�000000CB‚-1146ISTARR�00000085‚-1131ISTASA�000000E7‚-1161ISTASC�000000EB‚-1165ISTASEK�000000EE‚-1168ISTASPE�000000D3‚-1154ISTATM�000000C5‚-1140ISTATO�000000E6‚-1160ƒ2640ƒ2641ISTAUF�000000CE‚-1149ISTAUNR�000000D1‚-1152ISTAWP�000000E4‚-1158JMPOFF�00000008‚-2172ƒ2314JMPTBLŒ7ƒ00000030‚-2167ƒ2172LDFLUN�00000006ƒ-730LEVEL00�00000002„-48LEVEL01�00000003„-49LEVEL02�00000004„-50LEVEL03�00000005„-51LEVEL04�00000006„-52LEVEL05�00000007„-53ƒ2080LF”0000000A‚-1978LUSFAC�00000000‚-1649LUSFAS�00000003‚-1652LUSFCP�00000002‚-1651LUSFCW�00000004‚-1653 MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚82(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• LUSFDV�00000007‚-1654LUSFIO�00000001‚-1650LUTATT�00000002‚-1642LUTBEG�00000010‚-1637LUTCAP�00000000‚-1640LUTCAS�0000000D‚-1635LUTCSF�00000001‚-1641LUTDCB�00000004‚-1643LUTMLU�0000000C‚-1634LUTPTR�00000000‚-1631LUTSEG�00000008‚-1644LUTSES�00000008‚-1633LUTTID�00000004‚-1632LUTUNM�0000000E‚-1636&LVLBASE�00000002„-47…48…49…50…51…52…53MULTPROCŽ00000000„-39;NRMEXIT‹7ƒ00000286‚-2746ƒ2276ƒ2319ƒ2387ƒ2593ƒ2671ƒ2693ƒ2727NUL“00000000‚-1975NUMCMDS�00000004‚-2165ƒ2306NVALATM�0000FFF8‚-2008ƒ2498NVALPRM�0000FFF8‚-2012ƒ2503OKCNFGŒ7ƒ00000190‚-2570OKTCB�7ƒ00000236‚-2673ƒ2667OUTENDŒ7ƒ000002CC‚-2845OUTEND1‹7ƒ000002E6‚-2857ƒ2855OUTPUTŒ7ƒ000002CA‚-2837ƒ2350PDCBLN�00000092‚-1560PRTID‘2E505254‚-1362*QEVNT�7ƒ000003C0‚-3074ƒ2618ƒ2646ƒ2754ƒ2864QEVNT10‹7ƒ000003DC‚-3084ƒ3079QEVNT20‹7ƒ000003F2‚-3091ƒ3088QEVNT40‹7ƒ000003F4‚-3093"QEVNT50‹7ƒ00000414‚-3105ƒ3096ƒ3099REQLOOP‹7ƒ000000EC‚-2383ƒ2384REQSTAT‹7ƒ000000D8‚-2366ƒ2168RTCDADR1Ž0000000C„-81RTCDADR2Ž0000000D„-82RTCDALOWŽ00000009„-78RTCDDIRNŽ00000001„-70RTCDDPRQŽ00000006„-75RTCDENABŽ0000000E„-83RTCDLGCFŽ0000000B„-80RTCDNFNDŽ00000007„-76RTCDNMEMŽ00000008„-77RTCDNTBLŽ00000004„-73RTCDOPT�0000000F„-84RTCDPBLKŽ00000002„-71RTCDPCNTŽ00000010„-85RTCDSTATŽ0000000A„-79RTCDTASKŽ00000003„-72RTCDTFULŽ00000005„-74SHARMEM�00000001„-40SPACE‘00000020‚-1981SPLCANC�00000280ƒ-719SPLCONT�00000240ƒ-720SPLCOPY�00000208ƒ-723ƒ&ˆ)Œ�(”(˜+œ) )¤&¨*¬*°, SPLEVT�00000007‚-1373SPLFORM�00000220ƒ-721 MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚83(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• SPLID‘2E53504C‚-1364SPLPRNT�00000210ƒ-722SPLQUE�00000204ƒ-724SRMODE�0000000D„-38STAEVT�00000003‚-1369!STATYPŒ7ƒ000000FA‚-2405ƒ2374ƒ2572STRBSY�00000004‚-1993STRSEL�00000001‚-1994SVOPFM�00000001‚-1625SVOPMU�00000000‚-1624SVTBRK�0000003C‚-1618SVTBSA�00000044‚-1619SVTDCB�00000024‚-1612SVTDND�00000020‚-1611SVTDST�0000001C‚-1610SVTLND�00000014‚-1608SVTLST�00000010‚-1607SVTLUT�00000018‚-1609SVTQND�00000008‚-1605SVTQST�00000004‚-1604SVTQUE�0000000C‚-1606SVTSDCB�00000028‚-1613SVTSDCQ�0000002A‚-1615SVTSFCB�0000002B‚-1616SVTSID�0000002C‚-1617SVTSLUT�00000029‚-1614SVTSOP�00000000‚-1603T0ADDPA�0000001Eƒ-119T0ASRINTŽ0000000A„-99T0CRTCB�0000001Fƒ-120T0DASQX�00000011ƒ-106T0DIOVX�0000001Dƒ-118T0DMONX�00000014ƒ-109T0DSEGX�00000012ƒ-107T0DSEMX�00000010ƒ-105T0DSRVX�0000000Fƒ-104%T0EXABRTŽ00000015ƒ-110ƒ2666ƒ2792ƒ2816T0EXEQDQŽ00000013ƒ-108$T0FNDGSGŽ00000009„-98ƒ2666ƒ2792ƒ2816$T0FNDSEGŽ00000007„-96ƒ2666ƒ2792ƒ2816%T0FNDSEMŽ0000000Cƒ-101ƒ2666ƒ2792ƒ2816T0FREEPAŽ00000021ƒ-122$T0GETTCBŽ00000006„-95ƒ2666ƒ2792ƒ2816T0GTFRBFŽ00000024ƒ-125T0GTFRIRŽ00000023ƒ-124T0GTFRMLŽ00000025ƒ-126T0GTUSQ�00000029ƒ-130%T0GTXTCBŽ0000000Dƒ-102ƒ2666ƒ2792ƒ2816T0KILLERŽ00000020ƒ-121%T0LOGPHOŽ0000001Aƒ-115ƒ2666ƒ2792ƒ2816$T0LOGPHYŽ00000008„-97ƒ2666ƒ2792ƒ2816T0P“00000001„-90ƒ2666ƒ2792ƒ2816#T0PAGAL�00000004„-93ƒ2666ƒ2792ƒ2816%T0PAGALLŽ0000001Bƒ-116ƒ2666ƒ2792ƒ2816T0PAUSE�0000000Eƒ-103"T0PGFR�00000005„-94ƒ2666ƒ2792ƒ2816T0PTFRBFŽ00000026ƒ-127T0PTFRMLŽ00000027ƒ-128 MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚84(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• T0PTUSQ�0000002Aƒ-131T0PTXMQ�00000028ƒ-129*T0QEVNTIŽ00000018ƒ-113ƒ2666ƒ2792ƒ2816ƒ3129%T0QEVNTNŽ0000000Bƒ-100ƒ2666ƒ2792ƒ2816*T0QEVNTTŽ00000017ƒ-112ƒ2666ƒ2792ƒ2816ƒ3132T0RDTIM�0000001Cƒ-117#T0READY�00000003„-92ƒ2666ƒ2792ƒ2816T0RQPA�00000022ƒ-123T0RYACK�00000003ƒ-140T0RYASR�00000003ƒ-145T0RYCINTŽ00000003ƒ-138T0RYDLAYŽ00000003ƒ-146T0RYEXIRŽ00000003ƒ-137T0RYEXT1Ž00000003ƒ-136T0RYRELQŽ00000003ƒ-141T0RYSTRTŽ00000003ƒ-143T0RYTINTŽ00000003ƒ-139T0RYWAKEŽ00000003ƒ-144T0RYXMONŽ00000003ƒ-142T0UPDATQŽ00000019ƒ-114T0V“00000002„-91ƒ2666ƒ2792ƒ2816%T0WAKEUPŽ00000016ƒ-111ƒ2666ƒ2792ƒ2816TCB“00000000ƒ-404TCBA0‘00000120ƒ-459TCBA1‘00000124ƒ-460TCBA6‘00000138ƒ-461TCBABORTŽ0000002Aƒ-418TCBALL�00000004ƒ-405TCBASES�000000B4ƒ-447TCBASQ�00000040ƒ-424TCBASQSMŽ0000003Aƒ-423TCBATSK�000000B0ƒ-446TCBATTI�00000029ƒ-417TCBATTR�00000028ƒ-416„417TCBBERR�000000B8ƒ-448TCBCC‘000000FBƒ-452TCBCHAN�00000044ƒ-425TCBCPRI�00000024ƒ-412TCBD0‘00000100ƒ-456„457TCBDLAY�00000058ƒ-431TCBECNT�00000158ƒ-472TCBEMMSKŽ00000148ƒ-468TCBENTRYŽ0000006Cƒ-435TCBEVALUŽ00000154ƒ-471TCBEVECTŽ00000048ƒ-426TCBEVLOCŽ00000150ƒ-470TCBEVMSKŽ0000014Cƒ-469TCBEXM�00000140ƒ-466TCBEXMS�00000144ƒ-467TCBGROUPŽ00000008ƒ-406%TCBIOCNTŽ00000027ƒ-415ƒ2345ƒ2635ƒ2851TCBISRS�0000005Eƒ-433TCBLPRI�00000025ƒ-413TCBMON�00000018ƒ-410TCBNAME�00000010ƒ-408TCBNAU�00000054ƒ-430TCBPC‘000000FCƒ-453TCBREADYŽ0000000Cƒ-407 MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚85(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• TCBROOM�00000050ƒ-454TCBRPRI�00000026ƒ-414TCBRTCD�00000102ƒ-457TCBSAFE�000000B0ƒ-445„454TCBSEM�00000020ƒ-411TCBSESSNŽ00000014ƒ-409TCBSR‘000000FAƒ-451„452TCBSSP�00000072ƒ-437TCBSTAT2Ž0000002Dƒ-420TCBSTATEŽ0000002Cƒ-419„420TCBTST�00000036ƒ-422ƒ2791TCBTSTSMŽ00000030ƒ-421TCBTVECTŽ0000004Cƒ-427TCBUPD0�0000005Cƒ-432TCBUSER�00000070ƒ-436TCBUSP�0000013Cƒ-462TCBUTRP�00000073ƒ-438TCBXA0�00000094ƒ-443TCBXREGSŽ00000074ƒ-442TCDX155�00000000‚-1042TEMADDERŽ00000011ƒ-515TEMBUSERŽ00000010ƒ-514- TEMCHK�00000014ƒ-518TEMILLEGŽ00000012ƒ-516TEML1010Ž00000017ƒ-521TEML1111Ž00000018ƒ-522TEMMCNT�0000001Bƒ-524TEMPRIV�00000016ƒ-520TEMTRAC�0000001Cƒ-525TEMTRAP1Ž00000001ƒ-513TEMTRAPVŽ00000015ƒ-519TEMVCHG�0000001Dƒ-527TEMVEQU�0000001Cƒ-526TEMZDIV�00000013ƒ-517TESTIM…MACRƒ*Ž-387TR0ˆMACRƒ*Ž-259!TR0$‡MACRƒ*Ž-152†1ƒ2666ƒ2792ƒ2816TR02X†MACRƒ*Ž-366TRCA0‘00000008„-26TRCA6‘0000000C„-27TRCCODE�00000000„-23TRCD0‘00000010„-28TRCENTRSŽ00000008„-16TRCENTSZŽ0000001A„-31TRCFDSPTŽ0000000A„-62TRCFEXCPŽ0000000B„-61TRCFIO�0000000E„-58TRCFMMU�00000008„-64TRCFSINTŽ00000007„-65TRCFTIMRŽ0000000D„-59TRCFTRAPŽ0000000C„-60TRCFTRP1Ž0000000F„-57TRCFUIO�00000009„-63TRCLNG�00000004„-15TRCPC‘00000004„-25TRCPTR�00000000„-14TRCSR‘00000002„-24TRCTBL�00000000„-13 MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚86(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• TRCTIM2�00000018„-30TRCTIME�00000014„-29TRMEVT�00000002‚-1368TRMODE�0000000F„-37TSK2ACK2Ž00000002ƒ-507TSK2EVWKŽ00000005ƒ-504TSK2NRDYŽ00000004ƒ-505TSK2RTEXŽ00000006ƒ-503TSK2TRMPŽ00000007ƒ-502TSK2WKWTŽ00000003ƒ-506TSKACRITŽ0000000Dƒ-481TSKAMRESŽ0000000Eƒ-480TSKARELOŽ0000000Bƒ-482TSKASYSTŽ0000000Fƒ-479TSKIABRTŽ00000001ƒ-489TSKIEVCTŽ00000004ƒ-486TSKIEXM�00000006ƒ-484TSKIEXMTŽ00000005ƒ-485TSKILASTŽ00000002ƒ-488TSKITVCTŽ00000003ƒ-487TSKIUSEMŽ00000007ƒ-483TSKIUVCTŽ00000000ƒ-490TSKSAKWTŽ0000000Bƒ-498TSKSBLCKŽ0000000Eƒ-495TSKSDORMŽ0000000Fƒ-494TSKSEVWTŽ0000000Cƒ-497TSKSSMWTŽ0000000Dƒ-496TSKSSUSPŽ00000009ƒ-500TSKSWMSKŽ0000FF00ƒ-509TSKSWTEMŽ0000000Aƒ-499TSPACE�00000038‚-1923TSTBEGINŽ00000160ƒ-475TTYID‘2E545459‚-1361UNMASK…MACRƒ*�-2042†1ƒ2352ƒ2629VALATM�00000007‚-2006ƒ2008ƒ2378VALPRM�00000007‚-2010ƒ2012ƒ2379WAITMEM�00000001„-41WRITE�7ƒ000000B6‚-2336ƒ2167XCAIO‘0000003C‚-1895XCCMR‘0000003C‚-1896XCDBAID�00000006‚-1903XCDBOPT�00000004‚-1902XCDBPRM�0000000A‚-1904XCDBPTR�00000000‚-1901XDATCH�00000003‚-1887XDCALL�00000001‚-1885XDDELT�00000002‚-1886XDDTCH�00000004‚-1888XDHALT�00000002‚-1791XDINIT�00000007‚-1891XDOFLN�00000006‚-1890XDONLN�00000005‚-1889XDRESB�00000003‚-1792XDREST�00000001‚-1790XDSACIA�00000003ƒ-997XDSBRK�00000000ƒ-942XDSCMD�00000000‚-1789XDSDEV�00000047‚-2015ƒ2410 MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚87(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• XDSFDK�00000001ƒ-995XDSNRB�00000007ƒ-944XDSPRT�00000004ƒ-998XDSRDK�00000002ƒ-996XDSTAPE�00000005ƒ-999XDSWPB�00000005ƒ-943XIOADD�00000012‚-1704XIOALN�0000001C‚-1710ƒ1904XIOBLN�00000014‚-1762XIOBOF�00000018‚-1763XIOCAD�0000001C‚-1764XIOCHN�00000010‚-1759ƒ1772XIOCID�00000004‚-1693XIOCLN�00000020‚-1765XIOCOD�00000000‚-1689XIOCOF�00000022‚-1766XIOCPK�00000014‚-1774ƒ2270XIOCTP�00000008‚-1699XIOILN�0000002E‚-1770XIOKEY�00000008‚-1735XIOMIC�00000009‚-1700XIOMLN�00000016‚-1705XIOMSK�00000002‚-1716XIONLN�0000001A‚-1776XIOOPT�00000003‚-1692XIOPFC�0000001B‚-1709XIOPLN�00000018‚-1775XIOPOF�00000000‚-1715XIOPPR�00000019‚-1707)XIOPRM�00000008‚-1694ƒ1698ƒ1734ƒ1756ƒ1904XIORET�00000010‚-1739XIOREV�00000006‚-1719XIOROF�00000004‚-1718XIORTN�0000002A‚-1769XIOSAD�00000010‚-1761XIOSCD�00000001‚-1690XIOSES�0000000C‚-1758XIOSLN�00000009‚-1736XIOSPR�0000001A‚-1708XIOSUP�0000000E‚-1702XIOSVA�0000000A‚-1701XIOTAD�00000024‚-1767XIOTLN�00000028‚-1768XIOTOC�0000000E‚-1738XIOTSK�00000008‚-1757XIOTST�00000003‚-17173XIOUID�00000010‚-1773ƒ2301ƒ2303ƒ2437ƒ2471ƒ2616ƒ2749XIOVAD�0000000A‚-1737XIOVNO�00000018‚-1706XIOXLEN�00000018‚-2017ƒ2271XIOXLN�00000008‚-1721XOPALL�00000001‚-1752XOPASQ�00000001‚-1744XOPDCP�00000000‚-1780XOPDIR�00000004‚-1727XOPEXC�00000001‚-1726XOPONE�00000000‚-1751XOPPRO�00000000‚-1745 MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚88(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE•-  XOPRCP�00000001‚-1781XOPSHR�00000000‚-1725XOPSRV�00000003‚-1747XOPSUB�00000008‚-1728XOPSUP�00000010‚-1730XOPWAT�00000002‚-1746XOPWUP�00000000‚-1743XPSHLT�00000071‚-1854ƒ2615ƒ2642XPSNRM�00000070‚-1853ƒ2753ƒ2858XPSUNR�000000FF‚-1856XPSUNS�00000080‚-1855XRP1LEN�0000000E‚-1881XRPDNO�0000000C‚-1879XRPDST�0000000A‚-1871XRPDTP�0000000B‚-1872XRPKEY�00000003‚-1846XRPLEN�0000000C‚-1873ƒ1878XRPPRM�0000000A‚-1849ƒ1870XRPSTA�00000002‚-1845XRPSTV�00000008‚-1848XRPUID�00000004‚-1847XRSKEY�00000003‚-1836XRSLEN�00000006‚-1838XRSPTR�00000004‚-1837XRSSTA�00000002‚-1835XSTAAT�00000082‚-1797XSTADB�00000094‚-1805ƒ2669XSTADS�00000093‚-1804XSTBCM�000000A5‚-1811XSTBLN�000000C8‚-1827XSTBSY�00000084‚-1799ƒ2288XSTBUF�000000C7‚-1826XSTCAD�000000C9‚-1828XSTCME�00000092‚-1803XSTCPS�00000091‚-1802XSTDBA�000000B9‚-1822XSTDDA�000000B8‚-1821XSTDTA�000000BA‚-1823XSTHLT�000000B4‚-1817XSTIBB�000000B2‚-1815XSTINV�00000085‚-1800XSTIOP�000000B3‚-1816XSTMAN�000000A3‚-1809XSTMNO�0000000B‚-1785XSTNAT�00000081‚-1796XSTOFF�00000083‚-1798XSTRNG�000000B1‚-1814XSTSBA�000000B6‚-1819XSTSDA�000000B5‚-1818XSTSES�000000C6‚-1825XSTSHM�000000A7‚-1812XSTSMB�000000A1‚-1807XSTSTA�000000B7‚-1820XSTSYN�000000A4‚-1810XSTUAN�000000A2‚-1808XSTVABT�00000000‚-1860ƒ2617XSTVDST�00000000‚-1861XSTVDWN�000000FF‚-1864 MMOTOROLA�M68000�ASM�VERSION‚1.30IO‚:ƒ0.ˆ.IOHDRV‚.SA�09/16/82�14:02:47žPAGE‚89(VERSADOS�4.0�I/O�DRIVER�PROCESS�EXAMPLE• XSTVNID�00000001‚-1862XSTVRSETŽ00000000‚-1863XTACIA�00000001ƒ-972XTADLC�00000006ƒ-977XTCRTC�00000004ƒ-975XTDIPC�00000010ƒ-978XTDSAS�00000020ƒ-980XTMIPC�00000011ƒ-979XTPEXM�00000050ƒ-982XTPIAA�00000002ƒ-973XTPIAB�00000003ƒ-974XTPRTL�00000052ƒ-984XTPVM1�00000051ƒ-983XTS7A2�00000060ƒ-986XTS7A8�00000062ƒ-988XTS7AR�00000064ƒ-990XTS7B2�00000061ƒ-987XTS7B8�00000063ƒ-989XTS7BR�00000065ƒ-991XTSSDA�00000005ƒ-976ZBAL’00000024‚-1918ZBCNT‘00000010‚-1913ZBPTR‘00000014‚-1914ZBSAD‘00000008‚-1932ZBUF’0000002C‚-1920ZCID’00000000‚-1928ZCRNUL�0000001C‚-1916ZDOPT‘00000008‚-1911ZEOLC‘00000018‚-1915ZKEY’00000006‚-1930ZLEN’00000014‚-1935ZMODE1�00000030‚-1921ZMODE2�00000034‚-1922ZNCNT‘00000028‚-1919ZOPT’00000004‚-1910ZPTR’00000010‚-1934ZRLEN‘0000000C‚-1912ZRSET‘00000007‚-1931ZSBITS�00000020‚-1917ZSTAT‘00000000‚-1909ZSTW’00000004‚-1929ZTSAD‘0000000C‚-1933Z_L1.000Š7ƒ00000174‚-2526ƒ2524Z_L1.003Š7ƒ0000017E‚-2531ƒ2529Z_L1.006Š7ƒ00000188‚-2536ƒ2534 éG*************************************************************************�CLEAR�THE�LOADPOINT�INTERRUPT*5*ˆThe�MVME435�mag�tape�adapter�board�does�not�come�up7*ˆ"quiet".‚If�there�is�a�tape�at�loadpoint�on�the�first6*ˆtransport�on�aƒboard�(MT00,�MT10,�MT20,...),�then�an:*ˆinterrupt�from�that�transport�will�make�it�impossible�to*ˆboot�up�the�system.*:*ˆIt�is�necessary�to�clear�the�interrupt�before�the�driver'*ˆfor�that�board�is�loaded�into�memory.*?*ˆHere�we�insert�code�to�do�that,�assuming�that�we�have�at�most;*ˆtwo�MVME435�boards�in�the�system.�This�is�easily�extended*ˆto�larger�numbers�of�boards.*+‰PEA‡MTA0OUT(PC)ŠIf�bus�error�occurs,�go�to*¦code�for�next�board.)‰MOVE.W„#'BE',-(SP)‰Save�'bus�error'�flag* ‰IFGE†\NOMTA0/MT00STAT�EQU‡\LMTA$00ŒSTAT2�register�on�MVME435‰TST.B…MT00STATŒRead�to�clear‰ENDC* ‰LEA‡6(A7),A7 MTA0OUT‚EQU‡***+‰PEA‡MTA1OUT(PC)‰If�bus�error�occurs,�go�to *¦next�driver)‰MOVE.W„#'BE',-(SP)‰Save�'bus�error'�flag ‰IFG. E†\NOMTA1/MT10STAT�EQU‡\LMTA$01ŒSTAT2�register�on�MVME435‰TST.B…MT10STATŒRead�to�clear‰ENDC* ‰LEA‡6(A7),A7 MTA1OUT‚EQU‡**G***********************************************************************ééé´** XDEF BUFTBL,BEGBUF,ENDBUF*PRTB IDNT 11,7 BUFFERS FOR .PRT SECTION 0TSPACE EQU $38 BSPACE EQU 4 ZLEN EQU $14*9*ˆI/O�BUFFER�AREAS�-�ASSEMBLED�AND�LINKED�AT�SYS�GEN�TIME**�BUFFER�TABLE�STRUCTURE**ˆ(4)�-�CHANNEL�MNEMONIC*ˆ(2)�-�STATE�WORD*ˆ(1)�-�CHANNEL�KEY*ˆ(1)�-�RESERVED*ˆ(4)�-�START�BUFFER�ADDRESS*ˆ(4)�-�TRANSIENT�SPACE�ADDRESS*ˆ(4)�-�POINTER*!*�STATE�WORD:�-1�=�INTERNAL�STATE*š0�=�NOT�ACTIVE *š1�=�I/O**CNT SET \NOLPRT IFEQ CNT CNT SET 1 FORCE AT LEAST 1 ENTRY ENDC7BUFTBLƒDS.BƒCNT*ZLENˆRESERVE�AREA�FOR�SUPPORTED�DEVICESBEGBUFƒEQU…*“START�I/O�BUFFERS‰DS.B„(TSPACE+BSPACE)*CNTENDBUF EQU * END OF BUFFERS‰ENDééééé½#* XDEF BUFTBL,BEGBUF,ENDBUF*TTYB IDNT 11,7 BUFFERS FOR .TTY SECTION 0TSPACE EQU $38 BSPACE EQU 4 ZLEN EQU $14*9*ˆI/O�BUFFER�AREAS‚-�ASSEMBLED�AND�LINKED�AT�SYS�GEN�TIME**�BUFFER�TABLE�STRUCTURE**ˆ(4)�-�CHANNEL�MNEMONIC*ˆ(2)�-�STATE�WORD*ˆ(1)�-�CHANNEL�KEY*ˆ(1)�-�RESET�FLAG*ˆ(4)�-�START�BUFFER�ADDRESS*ˆ(4)�-�TRANSIENT�SPACE�ADDRESS*ˆ(4)�-�POINTER**�STATE�WORD:�-1�=�TERMINATION*š0�=�INITIALIZATION *š1�=�I/O**CNT SET \NOLTERM IFEQ CNT#CNT SET . 1 INSURE AT LEAST ONE ENTRY ENDC7BUFTBLƒDS.BƒCNT*ZLENˆRESERVE�AREA�FOR�SUPPORTED�DEVICESBEGBUFƒEQU…*“START�I/O�BUFFERS‰DS.B„(TSPACE+BSPACE)*CNTENDBUFƒEQU…*“END�OF�BUFFERS ENDéééééÆ#=LINK ,CHID,\LINKLS;IXHMSEGMENT CHID:7 \CHIDRVR INPUT CHPIEND=ENDéééééééÏ/ =LINK ,IPCD,\LINKLS;HAMIXSSEGMENT IPCD:7 \IPCDRVR INPUT IPCDRVEND=ENDéééééééØ=LINK ,MTAD,\LINKLS;HAMIXSSEGMENT MTAD:8 \MTADRVR INPUT MTADRVREND=ENDéééééé/ éá=LINK ,EPCID,\LINKLS;HAMIXSSEGMENT EPCI:0-15 \EPCIDRVR INPUT EPCIDRVEND=ENDéééééééê=LINK ,M315D,\LINKLS;HAMIXSSEGMENT M315:7 \M315DRVR INPUT M315DRVEND=ENDéééé0 éééó=LINK„,WIND,\LINKLS;HAMIXSSEGMENT‚WIND:0-15�\WINDRVR INPUT WINDRVEND=ENDéééééééü=/*I=/*‚MPSCSUP.LF�--�Sysgen�chainfile�to�link�the�NEC�7201�supervisor�driver=/*‚for�the�VM02.=/*<=/*‚Sysgen�parameter�LINKLS�=�\LINKLS�=�file/device�to�which=/*‚to�send�the�linker�listing.=/*J=/*‚Sysgen�parameter�MPSCSUP�=�\MPSCSUP�=�address�at�which�to�link�driver.=/*=LINK ,MPSCSUP,\LINKLS;HAMIXSSEGMENT MPSC:0-15 \MPSCSUP INPUT MPSCSUPEND=ENDé0 ééééé=LINK„,SASIDRV,\LINKLS;HAMIXSSEGMENT‚SASI:0-15�\SASIDRV INPUT SASIDRVEND=ENDééééééé=/*G=/*‚MPSCDRV.LF�--�Sysgen�chainfile�to�link�NEC�7201�subordinate�driver.=/*<=/*‚Sysgen�parameter�LINKLS�=�\LINKLS�=�file/device�to�which=/*‚to�send�the�linker�listing.=/*J=/*‚Sysgen�parameter�MPSCDRV�=�\MPSCDRV�=�address�at�which�to�link1 �driver.=/*=LINK ,MPSCDRV,\LINKLS;HAMIXSSEGMENT MPSC:0-15 \MPSCDRV INPUT MPSCDRVEND=ENDéééééé =/*I=/*‚MPSCSPR.LF�--�Sysgen�chainfile�to�link�the�NEC�7201�supervisor�driver=/*‚for�the�MVME�400.=/*<=/*‚Sysgen�parameter�LINKLS�=�\LINKLS�=�file/device�to�which=/*‚to�send�the�linker�listing.=/*J=/*‚Sysgen�parameter�MPSCSPR�=�\MPSCSPR�=�address�at�which�to�link�driver.=/*=LINK ,MPSCSPR,\LINKLS;HAMIXSSEGMENT MPSC:0-15 \MPSCSPR INPUT MPSCSPREND=ENDéééééé1  =LINK ,PRTD,\LINKLS;HAMIXSSEGMENT PRTD:7 \PRTDRVR INPUT PRTDRVEND=ENDééééééé)=LINK ,TTY,\LINKLS;HAMIXSSEGMENT .TTY:0,1,2,3,4 \TTYSTR INPUT TTYINPUT TCCIINIT INPUT TCCINPMINPUT TCCIREADINPUT TCCIWRIT INPUT TTYBEND=ENDééééé2 éé2 =LINK ,TNT,\LINKLS;IXHMSSEGMENT .TNT:0 \TNTSTRSEGMENT NTS:14DEFINE NNTDCBS,\NOTNTINPUT &.TNTD.ROINPUT NTS.NTSSERV.ROEND=ENDééééééé;=LINK„,VM22DRV,\LINKLS;HAMIXSSEGMENT‚VM22:0-15�\VM22DRV INPUT VM22DRVEND=ENDééé2 ééééD=/*:=/*‚GPIBDRV.LF�--�Sysgen�chainfile�to�link�MVME300�driver.=/*<=/*‚Sysgen�parameter�LINKLS�=�\LINKLS�=�file/device�to�which=/*‚to�send�the�linker�listing.=/*J=/*‚Sysgen�parameter�GPIBDRV�=�\GPIBDRV�=�address�at�which�to�link�driver.=/*=LINK ,GPIBDRV,\LINKLS;HAMIXSSEGMENT GPIB:0-15 \GPIBDRV INPUT GPIBDRV INPUT GPIBXTREND=ENDééééééM81IOH ,ASREL' CHPI SA!G@„VERSADOS 3.02GLVL5PCH â' F3 " Nu*J*gT *g, *g *F3g>TCCINPM ROGGTCCIREADROPPTCCIWRITROYYTNTD RObb TTY ROss VM22DRV RO„„VMPRT RO•• VMTTY RO¦¦C1EPCIDRV ASREL' EPCIDRV SA!PX„SIG2661 TERMINAL DRIVER2 êF3vžV081983 4@F3@€€ÞÀ†Øæ4V0NqNqNqNq+O`-Aúÿìr°WÉÿüg|ù¿|ÿü¦F3NuB­¦QíåFíBB-îB„í¹`Ì+O`+jl|`î,*B…:*"mPaF3&F-¿g+Kd`,< Fg�+Kd+mPhpAúÿR¼XWÈÿüf0( Nð r‚(mdAF3AíÆ¼ |p1Aí¹FíBB„`Fí¹FíBB„`6,+z:"mhaF3˜"F m"a€€m||3|ÿ0<ÿ3@AítCép2ØQÈÿürF3`ÿxAíl(j!lŠ!lŽr a2í¸r`ÿT(jAìzBAa mpAèCì‚F3p2ØQÈÿür`ÿ.,+z:"mhaþ"F+Ip~ÂifÞ~0<ðÀifÐ0<€ÀiF3fÄ0)ÁiF@Àh�i0)// Aè Cé EúýþB�gâHe SAØQÉÿü`F3ÑÁÓÁ`æ"_ _~B~A0<Ài @gl~@)( b)fJ©gR` rðÂéÂF3²fD) g )(c)(g )á˜g$jB`öa€m||F3PìPNu‡rˆ`þ,a¸HípÂa FíB+g;|4p¦`;|8p¦<ÿÿ`^PíàF3PíáQíæB­¬Qíâ+f -uWíâNuadHípÎFíB+gQíæPíáF3+g;|p¦`;|p¦<ÿÿ"mhR)'í¸"m"Pí¾Hz/`ÚQí¾FüF3 p.m`Nu m"a:grá`ý^;kª+gAëpN@`r„`ý@+HhF3B­´,+ *+š†RE"mhaNuHçñüfJ…g/ i6pN@`Nqr„`ý(*Ú†F3S…Lß?�Nua€HípÎ,+*+"mhaºHípÂaþÖFíB+g|¦`|F3¦+g|4§`|8§|p¨<ÿÿ`þöí ¸FíBB„`þô/ m"(F3(ff"|ÿþNu/"H8fV$f2ff‚F3fv`Ê"m"(�Aí¸`t"m"À-½fJ-ägJ-…gœ-tF3gî`R°-†f í¸`>-…fJ-äfr²f J-äfh`°-„fPíäí¸F3`°-‡fJ-áfF-æ`š màôfpê`:2-ò€Smòf;|àòRmô mÚF3ôfí¹í¸`Àí¸`¶Jmüf"@þ;mòü màôfRmü màüF3cBmü`(B(JkÀNu -´fJ-àg -Ê�­Â` -Ö�­ÎNu$�F3Agpè`�gpê`†gÒfæ(�Aí¸``¶(F3gª²fþz` Jíåf˜Fí@­¸f0­¸fˆ­¸f­F3¸fž­¸f`­¸fž­¸fÀ­¸fÊ­¹fÔ­¹fF3 ­¹f P­¹f z­¹f zFíBJm¸fÿpQíå"kt||NuJmìgâJmF3ôgÜ m úcPíè`Î2-ð²müf8 md"-Ê’­Â!AmþAíÆ¼ |pF3B(mþ ata `Œ5Smðf;|àðSmôJ-ãg mÌôbaÊ0-ìNûF3`ÿ\`Nq`† mʱíÆc aDgpaF`6Á+HÊJ-âga2 -Ê-F3tg°­Æc�­Â+@´`´`a`ÿ -Šá˜g²gB`ô-»À°-¼f -Ê�­F3Â+@´í¸BmìNu mÊaÆf ±íÆb�`JJgþÎ c pa°`þ¾g F3ff±íÂc\ +HÊS­¬J-âgL-ug&JíçfpS­¬ < a0`þPJ-çgQíçp>a,²-F3ˆf -Ža +mÂÖB­¬+|8p¦`¨²-‰f0+mÂÊJ-âg-ugp\aF3æ -ŽaÌ`ýì+| 8p¦`p±íÆcpaÄ`DÁ+HÊR­¬J-âg bp^F3a¤R­¬r@Òa–-tg±íÆc ‘íÂ+H´``ýŒJ-âg J-çgp>ahF3 -ŽaNBmìí¸`ýLFíB)ÁA)f@`ý*@Fí@F30-êNû`|`¨`Ø``:`lJ-æg0B-º;|ö;|øBmú -ÒR€F3+@ÖJ-ÀgB-Á`B-ë`€€)ÁA g fm“ºg aÔíF3À`üœJ-èg Qíèí¸`Jmìfa`ü~H瀀 -¦cœá˜+@¦ /bB­°F3@ëí4 ¸`x ?b&Qíç0@í-ªf-ugalí¸`LB­¦ mdF3|!m´)€@)QíàQíá mhS('AíÆ¼ |p1|F3a^LßNu)€@)`èFíB;|àð;|àòBmôBmüFí@J-ãgaF3NuHçÀQíã-ug -…aŽ`FíB)À@Fí@LßNu mÖ±íÒc F3aBmê`þ¾`+HÖ`þLJ-àf -Ö�­Î+@´Nu mÖ±íÒb g+HÖF3 cR­°`þBmêa -°B�2-vg��nüg -Žaè`ý¦J­¬gS­¬ < F3aÐp`ýÖBmê`þ4 mÖ±íÊfBmê`þ"+HÖR­¬ bR­¬@aF3¦<^`ý˜-Àf*-Àf&-Àf,-Àf(-Àf8mÁë`ýF`úbF3­À-„`ýŠ`úPJ-ºf­À`ªpS-º`ý8Jmúf­À`’2-ö5oF3Smöf;|öSmú`ýá˜g a `aBá˜føNua&íÀí¸2-ø€oSmøF3f;|øRmúNuJ-Àf mëÁ|ëNu/ -pïf-fNq`Nq|tïF3í¸`2J-¦c,AíÆ"mdaø‚#@pá@¼ |p1@aLaè"_`ùbF3J-îgdJ-¦k^f(AíÔ¼ |€1|aø&À@ | `$ mdaø!@F3pÆ@AíÆ¼ |p1@FíBaàFí@ax`øô/ AíÆJ-¦f1|F3`&md|æa÷Ì'@aª1|æFí@¼ |qa2&_`ø¬/ a† mpF3AèCítpFíB2ØQÈÿüFí@aÆ"_`ø€J-äg aþ¤íÀ`ølQíä­ÀF3í¸`øXPíã-ugaþvíÀí¸`FíB)€@Fí@`ø"F3Hç€@aüV;|ö;|øBmúBmêB-ÀBmìJ-¦c B­¦"mhS)'QíæQíàQíF3áQíèQíäB-º"m"|7LßNuHçÀð@çAíl"m"p( f@`F3À( g( g ( g` FíB@(&p@F3F×<7(g (gþFíB@(Fß((rðÂA»fpé@¼pÿF3( gp@½LßNuHç?|FíB(@Fí@aýíÀAú¶"|F3,r$ p"N@`p N@Lß>ü`öÈ­Àg(FíB)€€@)Fí@|F3p¦í¸`ö”AíÆa `öŠaþf`ö‚Hç?üm8!mlB(|$-ÿHÿJÿRÿVÿXÿZF3ÿbÿjÿlÿpÿuÿ’ÿxÿ†ÿšÿªÿtÿzÿ~ÿ„ÿ€ÿŒÿœÿ¤ÿ”ÿbÿdÿhþÚþÜþÞÿbÿdF3ÿ ÿÿ ÿ8@€€@F3@@@ @!@0@1@2@3@4@5@6@@@A@B@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S " !F3 c€€€$d$d$DJ"I!$$(( $$$$$”$$ $$($$F3FíB -Jf"m"aa¬fa6g íj|FüF3 Nup@ -(A9A;A=A?-)A1A3A5A7@F3|= |€'|—'|'p@y@x;@j;@PAíè+HH+HL;|7ërAíF3ppB˜QÈÿüAíz+H^Nu"m"| I1 !p2-rA0‰!;Ar@-@+F3| '| 4 '|')/-kg| '+@fR@t@ué1é3éF35aNu2<)f )QÉÿòrÕNurNup@R@ @g$)gì;@vpF3)²fR@)gîrNurÕNu"m"I1€f|ÿþNu-If-HgF3-jg|NuHç:R-x mL±íHf Iíp(l—Ë`(h&hg$gF3öé5 mL±íHgfröa¸`\| ) !0-rÂ@@0‰!;@réF33 mL±íHg*-kg$)%g | ')/` mV f| '?aF3 ,p)á€)á€) mV g fD Sf�†`�‡'@",´g.0< F3g0< AJ°gHçþN°LßþJgrÖaì`a$:JEg†` !ÊmréF31g0mÿüj­kgB-y)%gík`)%gík g@F3"-H²­Lg0 mV f&| 'i/laæ-kfml aš`vaF3 g0-kg"J­fg"S­fg mb+Hbap` ab`vaÒg8íF3k"-H²­Lf(Hç—ËIíp(lAílx* ,. a .Lßðgaö g)%AF3Àpa‚gŠAíp P)- f(( gj|'aÊ;|jpaHF3|'`P f|'`<p `f(‚Aa ò` pgF3 f |€|-|'grAíp P)-„�•�‚"(,)%g"((F3f|'`F|�' -kfrÀÂ-yfík`„By)%gíkF3`)%gíkg pa l|'gaÒBmjpa R|'F3ga¸Bmjpa 8 g -m¿@+g mL±íLgrØaZS-xLß\þF3|Nu-kfrÀÂ-yfík-?y`2-yg(-yg> mL h P@ gF3 P@!f rÂ-y²( ga ¨íyíkp2<ÿÂ-ya œ` íkaNua $F3|ymÿ¼jNuHç?~,mL.f\+mZV mZ+HZ gDAúø^ $nF3¦@ÿã@00Hç¿þ"m"N°LßýJft mV l¦®fžLß~üNu-kF3fÆrp,*?2-P�;AP2.f.græA<pa l-kgNF3Cíp-iBVB®Cíl-I |B®Bn`Hç?~,mL­kíkAú÷:F3+HR-t@u``aàgÿ`,mL.fÿX&n(na˜fÿHa "fÿ@a ¤F3fÿ8`þÌ.fP-lfP-tR fp°-ug2€ÿ@tç€Aíp(pF3 p gÐ-L( gÄ+mRZ`þt­k`ÿfpa Ú"m")'gä-tF3R fp@u`žHç?~,mL­kgþ¦`ÿ*rÛ`êp@a e| ,´g @J¨F3gHçþN¨LßþJf\ta„$Ha�  G|Š'| '2+Ag@*F3g0*"gS@ašJ@g­r2-r‰!ÂBrNuî`ô*F3g0* fÀ`¶p€aúe ,´g @J�gHçþN�LßþJf¦aâ$HaîF34+ Sg G B` F B*6*$JBg*6*&tgj`F3g| ` g| ÂgJCg ¶@lr„`*0a¶|‰'ÂF3­r2-r‰!| 'BrNu2+Af@a2((AínpgüF3 R€gü R€g ÂR€t‘À`þ¦J€fôîrNuaè(0+@F3g(g|'|þ|ÿ t`þtî-kg| 'rNu<_F3` <?`a `ø| 'aþ@`æ+ ``ÖAíp$PF3ê|-<`¼+ a<A``¤<`œ<p`”<F3`Œ<`„<`|<`t< `l<`d<`\<`TaöŠF3HçÿþAú8"|èr-B$ p"N@`p N@Lßÿík|‰'| 'rNuHçF3*A mL±íHg4­kg,(h&h"m"| ')/-kfèB-laF3úÎLß8Ns­kHçÿþAúÿª“É$ -B��€p"N@`p N@LßÿNua0 FF3+Ef+Hb`Š-kf4-kf@y+mVZr`8-yÂg,gv+F3 ÂÆ¶faõ|fB-y­kr<þNurÝ<Nu/F@@àH@ @àˆF3@àˆ@ Nu+|fA/rNuaz(Nu mZP'R­ZrNu|�F3';|j0<–QÈÿþ|'rNu|Ž'0<QÈÿþi- |'rNu+ @+F3@mrNurÞa+ (ÿï€@aÂrNu)'j­k|'rF3NurÙNu)'k­k­kík| 'rNurÙNu)'j­k­k|F3 'rNurÙNu)'k­k­kík|'rNurÙNuax$I"Fa1|F31|ÿpÐh82ØQÈÿürNu$IaN"FAìz`r$Ia@"Fa(±üf^/ EíF3pp,*ç€ m^%ˆ%Œ0,²gR@Eð>+J^$_J,*f(/ aó"_) F3gJ*)j© ` / "Jaþf"_4<0<ÿàÀifR0<ðÀifF0)ÁiF@F3Àh�ip0)HçàAè Cé EúñêrgâHe SAØQÉÿü`ìÑÁÓÁ`æLß4<BF3) bðJ,*f4*)F fA)A)g)k @F3aä©ÿÿÿ(©5 ÿÿÿ,Jl²g"4<C ,´g$@JªgHçþNªLßþJf|J©F3(VÀJ©,VÁtD±fjJ,*f0-rÀJ©(f€;@rŠ!p0,²€HçF3ÀAèCé0ÙQÈÿüLßÃHa*|PJ,*fÃHtA( gJ*)krNu‚rˆNuF3aXpJ,*f*%þ€l{l||JNu/ t(kff€F3Â"m"B-"_Nufæ`ìp,*Aípç€ pNu mL.( ,(z:(xF38(NuHç‚€0<$Aúï¢<r‚¼XWÈÿüf 4<$”@ãBrJLßANuAíH"mL³íHgÓüF3³ÈfCíè+IL³íHNu/ CíH mHBP!L!K!G !F1D1EÑüF3±ÉfAíè±íLg+HHp"_NuAúïb80  ,K|fpÆg¶g±D4BgaF3ÿ6Æh¶f 4BgB0-j ,K|g f f*rÙ`pfö@gF3ggä`  ggÖg, ,K|g-sgÀaþ¬$((f$(,+F3 rÜggrÚAíp hJ¨ grNuHç?~,mL½íHg¨aï aúAíHîF3Ýü±ÎfMíè½íHfæ­k-kfB-y,mL(n&naô–`T,mLF3½íHgNHç?~AøH¹îgÝü±ÎfMíè½íHfæ`.î½íLfaï&naF3ôN-kf-?yLß~ürNu<ÿLß~üNu0AúíŒr$°XgQÉÿúrÛNup$��ã€AúìàF3-kfAúí20gàAð+HR+HZrNuHç?þ<4< * áD-8†ÿ&-aBf< g ,K|grÞ`*gF3rÞAíp P( g g ,J|grÚ`rJNuHç½þfJ…g i6pN@`3Nqr„`rLß½Nu4ééééééd1IOHDRV ASREL' IOHDRV SA"D„VERSAdos 4.0 I/O Driver Process Example V 4.0 - 09/16/822'FF34F8090782 4@€€†¦ÜöFíBaFíF3@NuNuB…,*:*"mPaP`<†`&&F SgB-qg<„`*;kF3œ+j˜+Kv(j+mPzpAúÿŽ<¼XWÈÿüf\ˆ0Nð<‚`ÒabíqF3 mzR(' m�aüFü `ÌaŠa1|1|p2ØQÈÿü<`ŽBmF3|G|NuaR(j<)fd!lŠ`a: j(HÑüz4<F30<ÿøÀif>0<ÿøÀif40)ÁiF@Àh�i0)âHe3h âHe#h âHF3e#h<õ‚`Pì¤aÿdp PˆP‰0ÙQÈÿü<`Ü-qgIí~p<q$*F36<aø`ÖFíB&mv"m"aþh­qFü m¿B­¿ -zS('|æF36<æ<qp$-˜Ií~a¬`Š+gAëpN@` Nq<”JŸ`P+Hz,+ *+F3š†RE/"mzaX5 `P�<„`.+F�ÜŸ+F”NuAíž/,+z "mza0`P�<„`F3"F _NuIí~p$*Aÿ6A<pa B€NufJ…g i6pN@`T—NupF3N@`NqT—Nua8­q mzS('6<Jg6<áp<p$-˜C'm¿Ií~aF3ÀNuB@¾+_ÃY­Ã+_ÇFíBNu )aý"PÃ`€)Fí@Nu"m")�F3 �g)� �g|ÿþNu-If-Hg-qf"m"aüÌFí@|F3NuHç:aüº m�-¾$mÃ&mv(m˜R-ËHz/-ÇNÒS-ËLß\þFí@|NuF3,~|)m<g X€X‡”€�p­8pX€°-:c-:€)‚p9ƒp F3g9„p g…p B4p LÔüaNuHç m4pJ-ËfpN@` Lß8+Wr`Lß8 3B­rNu4éé¥`1IPCDRV ASREL' IPCDRV SA"„VERSAdos IPC I/O Handler Process Ver. 4.3 - 09/14/832'XF3ÞjH091483 4@€€ vØRÄF3Rxþ/ |pN@`p N@*_+HÀp@B˜S€núNu *faÌ`\-qF3g<ó`pB‡-qg<„`:B…,*:*"mPal` Nq<†`@&F(m"F3,gíq<ó`&(j+mPˆpAúÿF<¼XWÈÿüf Ñü0Nð<‚`F3øah,+aZ+FŒ Fan1@1AB†ÆaÂaþ2<0‰| |F3`l -g´a,+a+FŒ Fa"H§À<F@ÀhFAÂh‚@LŸf"F3<6< Æhf<°hf Aÿó²hg ‚<ˆ`NB†Æa6ar2<@‰F3 mŒ,g< <€( É B€( f|` |€À@hF3|`t <€( gÀ( fÀ( gÀ( gÀF3@ (&(gÀ@h'h B€É( g €À@|F3||P` -gþfaÌ,+a¾+FŒAìz"mŒ<aÈF@F3ÀiFAÂi‚@f”0)ÁiF@Àh�i0)âHe3h âHe#h âHe#hF3âHe#h,g äHeh` îHâHeh&&âHeh''äHeh)F3)"�Ba$E PˆP‰ÙQÍÿü|PB�`˜<ˆ‚`Žz. -g z*,fF3z:Nu0<2< -g0<2<',f0<|2<J-×F3g prAúþŒ` Fg+KL+mPPprAúþT¼XWÈÿüfÒpþNðþr‚(mLAF3Aí´¼ |p1Aí¥FíB`¸í¥FíB`ª,+z:"mPa"F mF3ìaª€m||3|¿ÿ0<ÿ -§f€ 3@Aí\Cép2ØF3QÈÿür`ÿpAíT(j!lŠ!lŽ0<€2< a~í¤r`ÿF(jAìzB@BAF3ad mX(g8(Ví×g,,(*z"mPazg~C`P+FŽHzýf!_*!M.F31mB2 mXaâ€AèCì‚p2ØQÈÿür`þÔ,+z:"mPa"F+IX~ÀiF3füÂifô~0<@Àifæ0<€ -§fÀ ÀifÎ0)ÁiF@ÀhF3�i0)// Aè Cé Eúü’B�gâHe SAØQÉÿü`ÑÁÓÁ`æ"_ _~B -§fF3 )&bv~A0<Ài @gf~@)( b)fJ©gL` rðÂé²f>F3) g )(c)(g )á˜gjB`öm||PìPNu‡F3rˆ`ý´a°Híp°aFíB+g;|4p’`;|8p’`ZPíÎPíÏQíÔB­˜QíF3Ð+f -]WíÐNua`Híp¼FíB+gQíÔPíÏ+g;|p’F3`;|p’"mPR)'í¤"m"Pí«Hz/`.Qí«Fü p.mHNu mìaðF3f -ôgrá`üæ;k–+gAëpN@`r„`üÈ+HPB­ ,+ *+F3š†RE"mPaNuagr„`ü¢(Ú†S…NuHçýü?<fJ…g i6pN@BWNqNqF30Lß?¿NuaÿnHíp¼,+*+"mPa®Híp°aþÆFíB+g|’`|F3’+g|4“`|8“|p”`þæí ¤FíB`þæ`.Nq`R`RNq`F3¦`Nq`>`>Nq`’`Î`¾`ºAò"m"¼(¼8J-×g mŽN¨`~F3í¤`ÌAò"m")ÿü¼8J-×gÀ-ª mŽN�`PJ-ôf¼À-ªfJ-ÒF3gJ-mgž-\g*`R°-nf í¤`p-mfJ-Òft²f J-Òfj`þF3Øáé°-lfPíÒí¤`B°-ofJ-ÏfF-Ô`Ö mÈàfpê`Î2-Þ€SmF3Þf;|ÈÞRmà mÂàfí¥í¤`ðí¤`æJ-õf†À-ª F3fQíôí¤`ÆF-öfa(`a4PíõFí@AúP"|…r$ p"N@`Qíõ`>F3/@çFíBQíöp@`/@çFíBPíöpÀ-?ð�-ð¼­ðFß Nu/ *AQíõ*_F3NsJmèf"@ê;mÞè mÈàfRmè mÈècBmè`ÐBrÂ-ógÀJ-ôF3gÀ -§f-ò-fÒJjÀNu - fJ-Îg -¸�­°` -ÄF3�­¼NuAò"m"-óAó³¼¼8J-×g€Àg mŽN¨`BrÂF3gí¥J-ôf.€À-ógí¤`rAò"m"¼¼0¼8rPÂgpèF3`ÿ` r Âgpê`þò`èAòí¤`2Aò-f Ò¨ÿö`¨ÿú|F3pøJk´í¤`NqJíÓf¢Fí@­¤f:­¤f’­¤fì­F3¤f|­¤f>­¤f|­¤fÆ­¤fЭ¥fÚ­¥F3f ¦­¥f à­¥f þ­¥f þ­¥f "FíBJm¤fÿfQíÓ"pF3U@NuJmÚgâJmàgÜ m æcPíÖ`Î2-ܲmèf8 mL"-¸’­°!AmêAíF3´¼ |pB(mê ara ¼`Œ5SmÜf;|ÈÜSmàJ-Ñg m´àF3ba|0-ÚNû`ÿ\`Nq`† m¸±í´c aDgpa`6Á+H¸J-ÐgaF3 -¸-\g°­´c�­°+@ `´`a`ÿ -rá˜g²gB`ô-¨ÀF3°-©f -¸�­°+@ í¤BmÚNu m¸aÆf ±í´b�`JJgþÎ c pF3a„`þ¾g ff±í°c\ +H¸S­˜J-ÐgL-]g&JíÕfpa²-pf -vaÞ+m°ÄB­˜+|8p’`¨²-qf0+m°¸J-ÐgF3-]gp\aº -va `ýì+| 8p’`p±í´cpa˜`DÁ+H¸R­˜J-ÐF3g bp^axR­˜r@Òaj-\g±í´c ‘í°+H ``ýŒJ-Ðg F3J-Õgp>a< -va"BmÚí¤`ýLgýD0-ØNû`rNq`†`¶`F3ú``JJ-Ôg0B-¦;|â;|äBmæ -ÀR€+@ÄJ-­gB-®`B-Ù`¢F3@ÿü g fm{¦g aÔí­`üÈJ-Ög QíÖí¤`JmÚfaF3`üªH瀀 -’c7 †á˜+@’ /bB­œ@Ùí¤`h ?b&QíÕ0@Û-F3–f-]gaJí¤`ü`öB­­gFíB¼­ñF3Fí@|p’í¤`öAí´a>`ö-\gí¤pÀ-óg-\g aýÌF3aó¾Píô`õâaý¼aþ@`õÖHç?üm8!mTB(|$-Eé#kŠ #kŽ`aÿR042<ÿxýJÑg g<F3 2< ÂBfh2<ÿ<ÂBfZÈ@fTÁPF@ÀZ�P0Vé0`ÿâZF3 JBk’± QÈÿôRA;âH€læ(ÿü g g <A`Pp QÈÿüJ(F3 f|J(f|Jf#F2Pé`0jQéQéPëPaþŠ`F3 F Fƒrˆ`>SrÔJ)g2EéT mP5,jAì/ pN@``ú"_JgF3 ,, *,š†R…aÈ#E6*Hâ˜R('@çFíBAíœ0!‰ÞXPJ@fAú2+HvF3 m"aB#i:6 ©6c|NqNqNqNq@FíF3 Ba€až©6atg®|ÿàa„J)"f\ ©6b aš`DF3 g`Ö<ô@a,`na(©6`¸`a fagPFíB|F3 ÿàa"J(ÿøj |%`|%)%J)g B$QéJ)"g®|ÿèF3 i*ÿðaÀf <ã`òS),gFíB|ÿàa¼`þä<ãJ)-gÌaŠF3 f <ã`¼FíB|ÿàaŽalg¦FíBQé"|ÿàatJ)"g|F3 ÿèi*ÿð<Ã(ÿøfrJ)(fjS)-`þh<Ã(ÿøfTJ)(fL<F3 `DHç�&iB&< ÈÿØ ÈÿØ ÈÿØ ÈÿØ ÈÿØ ÈÿØ ÈÿØ ÈF3 ÿ؃ fÈ#KBLß NuHç†*)6&iB,ä�g ÈÿØ…`î gF3 [ÿØ`î@#KBLßaNuJ)/g$J)0g )f ƒ`ÃF3 CÿðNu(ÿøVé.`(ÿøfPé&a$g^FíB|ÿèa0é*iF3 *ÿðQé#|$aøg2FíBaÐ|ÿàaQížJ(ÿøk~|%|)F3 Pé&aÂgüFíB|ÿèaΩ*i*ÿða gÚFíBax|ÿàa¨F3 QížJ(ÿø[é/ )$f ©*`é*i*ÿð` |%Qé/Pé,)F3 2/a÷€ _Pé&a8grFíB|ÿèaD))`\HçàÀp"BA-)$ Aú""|F3 ˆN@` LßQíž` LßPížNu/ *AJ-žg|ÿè*_Nsi+#i6:F3 Qé"Qé#Qé(#i:6#i>Ba®gèFíB@|ÿàQé'a²J)'gF3 f`æav<ô`´až`ÔJ(ÿøj |%`|%J)#g<ÂF3 f (ÿØ`ò`tJ)"fJ)(grÃ`raÒ`TS)+f aÂF3 rã`Baf <ã`2FíB|ÿàa|ÿèi*ÿð`ÿHçü&)6&iBF3 („*ä�4< Bg …gHÿØ&ÀYBS…Yƒ`à Bg,<`F3 gèÿØSƒS`(ÿØR oàYB Bg HÿØYB`ð#C6#KBLß?NuF3 Hç�&)6&iBf$ ƒg èÿØSƒ`æ<ÁRƒ(ÿØgô#KBLß NuF3 |ÿè/(<@S„fü(ÿøgî|ÿè(Nu+_vJ-Ÿg QíŸLß8üNsLßþF3 pUNu<pLé >–€)Ca÷ÀS)'Líþ~HíþzYmœbøüa²Pít`ø<`F3 <`<ä(ÿøVé.f¬(ÿøVégaûðQé"Qé(aRgŒFíBDF3 ÿàaÿbJ(ÿøj |%`|%)%J)g B$Qé<ãJ)"fÿJF3­q mzS('6< g6<áp<p$-˜C'mÎIí~a8Nu-F3¸-§f< aJf < a JgJŸHzÿžNuBB�)$ f8J-×gBF32< )VÉÿøf2@Ì+_ÈU­È+_ÒFíBééNu aûÀB-×JPÃF3`J€©éPí×)Fí@Nu"m")� �g)� �gF3|ÿþNu-If-Hg-qf"m"aûRFí@|NuHç:aû@B-×J mF3�-Ì$mÈ&mv(m˜R-ÖHz/-ÒNÒS-ÖLß\þFí@|Nu,~|)m3p B4p LÔüaNuHç m4pJ-ÖfpN@` Lß8+Wr`Lß8B­rNu4,1SASIDRV ASREL' SASIDRV SA")C„2(F3 Æ‚(022484 4Aú¤+HŒAí¤pVB˜QÈÿü(m"F3 Gì|€pU€°VítFF��-tf|NuîìT@¨€š€Þ F3 +Op,*z:*a²(F&j|+*róJ-tf6Cí¦pNÀÆÓÀ0Aúÿ²r‚4g °XF3 føzNð Eéa üóp0ÚQÈÿüra�.mppNu,,z.aR FJ)WЀF3 ízÊRgzRÅüNuEë‚2<ý `Eé#kŠ #kŽ2<ý zHça®04F3 v@ÂBfZvA2<ýèÂ@fPJÑfpÿtÿÁPF@ÀZ�P(WİX`"ÿâZF3 JBk’± QÈÿöRA;ÜH€lèvC(ÿðSèf®vD0(ÿògHr@å�1AÿÞ‚ÀHA@€AfàF3 HAvEp(ÿì4âcÿ   !!ÿ  !F3  Fÿ +!ÿ\!ÿ   F!ÿ F3  F!ÿ ÿ ;ÿ !ÿ F3!ÿ!ÿ   F!ÿ   F!&ÿ!! F3ÿ 5 ÿ @ÿ C!ÿ\F3ÿ>ÿ   !ÿ ?ÿ F3  !ÿ G � >34ééééH,1TCCIWRIT ASREL' TCCIWRITSA"W%„B2PWRITCL ¨DWRITCS DWRPIF1 \DWRPIF2 ]$¨F3ÿ ÿ  !ÿ!!ÿ PF3!€xH�H‚ƒÿIÿ !@&ÿF3  >!ÿ   2 F3ÿÿ " $ÿ $! F3!ÿ   2! !ÿ   2! !F3 < <ÿ /!ÿ !AØA ¬!l F3!m (þ CìJ!I0<NAg @gdEúÿþ`þÊÔAì!DN¹(`HHçF3ÿþaBR.QaVa²LßÿNuAì (ÿÿgÔ`a`"h¼!|N¹RZc3‚¨€(NuLßÿNwB9* B9* Gù* ”#Û* ŽgköAù* Š0<NA'<ÿÿÿÿ`âNu/ Gù* ” gk °¬J3  gJ›`ð&¬ &_Nu=|ÿÿ#Î* lAù*0<#NAgEúÿþ`ýôNuCú¼B€J® gÀN3H3À* v#î* rBiJ®Rf2 y* üJ¨ , g¼`º f²`n#üÿÿÿÿ* P#üÿÿÿÿ* \ y* ˆ"h ©.TTYF3 fÒKé0J)¤fJioX UgØJ©Šg² )œgª") ²¬nvfL°¬nnF3* KöX0.6X"6X&až&vh J)¤g*Jvhfa*`aP"E|¤#|œ#|H3 `P3|ÿÿ* KöX0a "E|¤#|œ#|  )œg"") ²¹* \bfN3J°¹* Pb #À* P#Á* \"Q fÿ ¹ÿÿÿÿ* Pgža `–J©ŽgÜ`ÿ**, KöX0.6XF3"6X&aÞ&vh JvhgjþV|ó`ZAú|B€-'@B«$B«=¼F3h"-’­ 'A!vx!vx !vh!m !A!vh $1|8(Cë!IB6H3¤XQ$+ & UfR,E#îŽ* Œ�Îa¼2-AfÂ( Ã(!!|(1|  `LH3T‚JÂ(Ã(!|(1|  `0,E#îŠ* Œ�Îaj !|(1|  Â(Ã(,EF3J.¤gB.¤�Îp Çg Èfý"|„Bvh`R3 (B"`$ ¹* ŒgÎ"9* Œ�&\k #ü&\* ŒAù* `0<JNA"9* `,E-A "9* dÒ¹T3€!(D* Œ-Aœ�&\k-Aœ"9* `R�-A J¹* \k>"9* `²¹* \b`". ²¹* \bLf"J¹* Pk 9R3¡ * d°¹* Pb< .œ°¹* Pb(". #Á* \".œ#Á* PAù* F0<NAg�Î`ü<�ÎAúNuaJH3`òB�,až*6h&vh J,füJvhf4 gü,E|¤�Î#üô* ŒaF3þÞ`üR6XQa†aNuKöX0 g4J+/f.,E|¤�Î`Â|Æ2-AF3fR6XQaJaÎaNu"-+kB- g|è`6  g|êF3`& @g|è` g|á` Ug,EJ.¤g|¤�Îa``"9**²¹*&b\") ²¹*&bHf"J¹*k 9*.°¹*b8 )œ°¹*b$") #Á*&M3")œ#Á*Aù*0<NAfüÒAú"_NuaŽ`òEúBü,²*gÕüµü(fì`F3ü¤, *6h&vh J,fü’JvhgüŠKöX0+kB- g|á` I3f|á`JvhlBvh`ýºBvh`aßü , gl`j fb`2#üÿÿÿÿ*¸#üJ3(ÿÿÿÿ*Ä y*ð"h ©.TTY fÒKé0J)¤fJioX UgØJ©Šg² )œgF3ª") ²¬nvfL°¬nn* KöX0.6X"6X&aJ&vh J)¤g*Jvhfaî`aF3"E|¤#|œ#| `P3|ÿÿ* KöX0a¼"E|¤#|œ#|P3€€  )œg"") ²¹*Äbf°¹*¸b #À*¸#Á*Ä"Q fÿ ¹ÿÿÿÿ*¸gNaL`FJ©F3ŽgÜ`ÿ**, KöX0.6X"6X&aŠ&vh JvhgjþV|ó`Aú¨|B€F3-'@B«$B«=¼h"-’­ 'A!vx!vx !vh!m !A!vJ3@h $1|8(Cë!IB6XQ Uf:,E#îŽ*ô�ÎaŒ2-Af!|* ò1|À L3 `,!|* j1|ˆ `,E#îŠ*ô�ÎaR!|*²1|� ,E|¤�Îp"9*Ȳ¹*Äb\") ²¹*ÄbHf"J¹*¸k 9*̰¹*¸b8 )œ°¹*¸b$") #ÁL3Š*Ä")œ#Á*¸Aù*®0<NAfüxAú Ô"_Nua2`òB�,a†*6h&vh J,füPH3€Jvhf8  gü@,E|¤�Î#üF*ôaþà`èR6XQanBvhaNuKöX0F3  g8J+/f2,E|¤�Î`¾|Æ2-AfR6XQa.BvhaÀaæNuF3"-+kB-  g|è`& g|ê` g|è` UF3g Bvhan`8:¼+m +mÓ­S­.6X2-0@AfQ@;@F3Aú ¨B(`ýaßüÿ  Dÿ (!ÿ#!ÿ\!ÿ F3  d!ÿ#!ÿ  d!ÿ ÿ :F3ÿ !ÿ !ÿ!ÿ#!ÿ  d!ÿ#F3!ÿ  d!ÿ#!&ÿ!ÿ"ÿ 4 F3ÿ Aÿ E!ÿ#!ÿ\!ÿ"ÿF3>ÿ   d  !ÿ&!ÿF3 !&8 ! !ÿ#!ÿ F3!ÿ"ÿ _   F3       ÿF3 H!ÿ"!ÿ ?ÿ   !ÿ#!ÿF3!ÿ" f � F3ÿ F3ÿ  !ÿ&!ÿ =!ÿ €8GF3�G‚''ƒÿHÿ !ÿ7!@&ÿ F3 >ÿ   1 ÿÿ F3 " $ÿ $!ÿ'!ÿ  1F3!ÿ'!ÿ  1!ÿ' ; ;F3ÿ .!ÿ ;!ÿ&ÿ ;!ÿ F3!ÿ"?ÿ :!ÿ' 5!ÿ 2F3  !ÿ!ÿ !ÿ2!ÿ!ÿ  FF3ÿ F!ÿ  2!ÿ2 F3J3.IOS*à*èH3*b8.TTY ÿÿÿÿÿÿÿÿ&34ééé' WINDRV ROÃà > ,1WINDRV ASREL' WINDRV SA' „2(úF3 fœ(022484 4Aú@+H| m"g:|F3 fúgVítNu2<ÿAQÉÿú2<ÿ²(fQÉÿø`VítNuAí”pZB˜QÈÿüF3 NuþT@®€ €ð +Op,*z:*a8(F&j|+*róJ-tF3 f6Cí¢pRÀÆÓÀ0Aúÿ²r‚4g °XføzNð Eéa üóp0ÚQÈÿüra.mpF3 pNu,,z.aØ FJ)WЀízÊRgzRÅüNuüNuEë‚2<å `F3 Eé#kŠ#kŽ2<å zHça¨04v@ÂBfZvAràÂ@fRJéfpÿtÿÁPF@ÀZ�PF3 (WİX`"ÿâZJBk’± QÈÿöRA;ÜH€lèvC(ÿðSèF3 fºvD0(ÿògHr@å�1AÿÞ‚ÀHA@€AfàHAvEp(ÿì4âc éééé' VMES10 CRTINIT ROØØEDITMODEROááFEEDER ROêêINCHAR ROóóKEYBOARDROüüOUTCHS ROPAGEMODEROPOUTCHS ROTERMDRV RO88N1CRTINIT ASREL' VMES10 CRTINIT SAC „Configure the virtual display areañ2PCRTCREG ñ #ATOPLINE ALPERSCRN KSCRNINIT KCRTINIT $ARIGHTCOL AB.LINE AC.LINE AE.LINE "AE.SCRN PSCREEN ñpAPB.LINE  &AS.LINE AL.SCRN (AS.SCRN PCRTCADD ñ !e2APAGEFLAG ,ABPERLINE ALEFTCOL ACPERLINE ABOTLINE AFACS *1.+ø43P OñpñO ñpñp DO3%)AI 1üP 1ü!Bx! 1ü!Bx!1üO! Bx!,H瀀B€1üD!*08 ãˆ!À!B€08! R3Q(•U �x!1À!R@ãH!À!B€08 �x!S@ãH1À!&B€08!�x! 1À!( 8!Àø! Ðx!Ðx!L3 ¨ €ñp!À! 8!Àø!Ðx! Ðx! €ñpT€!À!B€üñ !9ñ #áHüñ !C3$T€ 9ñ #ãH @ÑüñpâH€ø H@�x!ãH�À!È!Ðø!Ðø!TH!È!"LßNu4éééé? ÐS1EDITMODE ASREL' VMES10 EDITMODESAU „VME/10 edit mode emulation for TERMDRV.Â2pFEEDER_A pFEEDER_C pCRTCREG @KB_LOCK pFEEDER pC.LINE pE.LINE pE.SCRN pSCREEN pOUTCHS pS.LINE @DUP_CHAR ZpS.SCRN pCRTCADD @EDITMODE \pBPERLINE F3ÝÿÿPÞÿÿHçÀÀ°zÿøg@-…g²gjBA; AúJNðxxxxxxxxttF3t~xxxxxxxxxxxxxxxxxxLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLF3LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL$xxxxxxxxxxxxF3xxxxxxxxxxxxxxxxxxxxttxxxxxxxF3xxxxnnxxxxxttxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxpü(9(R3P áHü(9(ЀNu :BþX°ºBþTgŽa΀(�ºBþD @pÀP`LpÂa¦aBþ2`aš[3 IJ`p aBþ pÕaBþ` a–€(°ºBþ gpaBþp aBýþpaBýøPù(`,Pù(aBýæaW3(”Dÿd€(°ºBýØfpÁaBýÐ`Pù(aBýÄLßNua* :Bý¸°ºBý´f üÙ)`üß)p aP3�€€$Býšp aBý”`~Hç€ÀPù)CúýˆPÙÀaþþ€úBýz ÀH@âH ÀJ9(g.Qù(úý\P3¨ ) zBýN0:BýJrÂXÁQÈÿø0:Bý? ÐÖÕÔÑ×0123456789ABCDEF3,.4éééôR1OUTCHS ASREL' VMES10 OUTCHS SA@ „Output a character to the display RAM.ü2pFEEDER_A pFEEDER_C pTOPLINE KPROMODE $pREL_PAGE pLPERSCRN pSCRNINIT KRABSOLUT xpCRTINIT KEDIT_FLA "pPOUTCHS pRIGHTCOL pKB_LOCK KRESET_SC |pFEEDER pB.LINE pC.LINE pE.LINE pE.SCRN KOUTCHS 0pPB.LINE ™2pS.LINE pL.SCRN pDUP_CHAR pS.SCRN pPAGEFLAG pBPERLINE pLEFTCOL pCPERLINE pREL_ADDR pBOTLINE pREL_FLAG KCLEAR_SC >pFACS + F3€UA Hçÿða ¢Cø ,Eø !,8 *8 &(8 ˜ˆâLSDBƒ68 "M3*’@ tJ8 %fA  Jy) $fA –J9) g4J9( gQù( ÀÂ` f Pù( ` 6Qù) F3 &zÿdNÓ0Ð@0;Nû        .RÆl         F3    x     L L L L L L L L L L L L L L L L L L L L L L LF3 L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L LF3 L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L LF3 L L L L L L L L               „¨       F3                                F3         ²Æì&Œ¸Ìì&<ڰ¾ÞîøF3 P� .ÄÞ   lŒ¬Ììü , J j ˆ ¦      Ô     F3H Ü        Pÿ€ `  Àñ 1Nu±ø !g±ø $f x Uˆ`ÈG3 @ &HTˆ`0Jk±ø f x !·Èfì`ÒUˆ`¤ €ñp€ø!&°x *f`B`‚QH3 % D x !`~aÔÀ`ý4aÈ ÿf 3üÿÿ(#`3Â(#Pù) "`vQù) "`l x $F3P¤ !È !!È ݪ`0‘Å›’›ª±ø $l x !È !�’!È RDãL�Ä` ÑÅÛ’Ûª±øG3•$ m x $!È !!È ݪRDãLš„ÐÅ`àTˆ±ø f x !`Ða&À) arF3ˆ  ²x 'eÚ²x bÒp:ûü °x eÀ°x *b¸ÀÅ€ñpÒAÒ€ Ar28I3‰P 'ÒAÒ€!Á !Ò†!Á `ja”‚ÅHAïI�Ý ÞAúûº �3ü(#È(aB û˜`f1üÿÿO3¢¢ˆ" %Qù) $0<À`B û€Bx %Qù) $`þÚPù) $Bx %0<À`B û`a` ´x *b"1 aI3€ˆ� B ûH`þ¬aD ´x d´x eþ1 *`Úa& ´x bè1 '`ÄaF3"  ´x (dÒ´x 'eÊ1 `¦àHJ@fB€ €ñpâH€ø (Nu>âOžD`BCBGJPkG3© šPÿ€X QÌÿðÐø 88 ±ø o x $QËÿÚ8QÏÿÔ`naœ Ýfö3Ñ) *aŒH3@@" À) a‚r ²x (d@p:újý °x b.#È) ÀÅ€ñpÒAÒ€ Ar28I3‰D! 'ÒAÒ€!Á !Ò†!Á Pù) Gú #Ë) `Ê Þf8 :ú"€ñp€ø!&B@H@’€08 'I3€‚ Ð@Ò€!Á !Ò¸ !Á  zùò1úú ,`ŒPù)  àe ëdJ9) ,f|ÿPù) ,`J3"‚D úbJ9) ,gTˆQù) ,08 ÀÅ€ñp„x ,0°ˆb```4aŠÀ) a€À) avH3D¨B À) alÀ) p |“ÉN@``"Pù(+#È()#È($H#ü(üÝ3ü(0:F3@@ ù&@ ad"H0:ù@ aX"Ò…²ˆf üùRy(Ò…J(f üùRy( (fTˆ`I3ˆ (ÀTˆRy(³Èf¾¼ÞRy(aB ø¼`Š/B†<@ÿ°x (nàŽ¼x nÌÅãHF3 ܆ñp F,Nup rÂPPÿ€�X0QÌÿ@ ò`J0(@�XPÿ€QÌÿðP `0QùF3ˆ  (`&Pù(`aý\�x –@a�` BC`ô x ±ø c"H“Å/08 1!QÈÿü _F3 ‘Å`ä08  € <DQÈÿò`¦ x !"HÓÅ08 ³ø d/0ÙQÈÿü _ÑÅ`äüDF3A € QÈÿò x !`nHçÿð68 " x $88 a`û xÿÿ %fJXkP€XDQÌH3($D ÿê88 Ðø QËÿÞNu&H±ø !f x 0 Jk·Èfì`B¹) &` T¹) & :÷‚°¸ &e BG3 ‚€ gaP`ô`aF68 SC  f"J¹) &fAùñp:8 Êø (XÿQÍÿú`æ zF3 ÷6Ñüñp  gž gèÑÅQËÿö`ЍÑÅQËÿö`ÿ| (fÑ`F3 ¼d¸ ,|`’¸ ,| (f‘`¼,`r (fÑ`F3 ¼L¸ ,|`R¸ ,| (f‘`¼D`2ø‚`F3 "ø‚` (fÑ`¼T¸ ,|`˜¸ ,| (F3 @ f‘`¼,`x (f‘`¼¸ ,|`´¸ ,| (F3A fÑ`¼D`: (fÑ`¼Ä¸ ,|`¸ ,| (f‘J3Q@ `¼D`XHçÿðEø !,8 `3ü) .aB õlAùñp4f@€î^` ž` ¢o+O\-Aúÿôr°WÉÿüg|ùÀ|L3Pÿü¦NuB­¦Qíçp÷aBÿnaBÿjf í¹`|ÿü¦|ÑÀNu+O\+jh,*F3B…:*"mPaD&F-Àg+K``><J-ëg p rAúÿf` Fg°+K`+mPdF3pr Aúÿ2¼XWÈÿüfÒpþNðþr‚(m`AAíȼ |p1Aí¹FíB`F3t,+z:"mdaÂ"FBm||3|ƒÁ0ÀifÊ0<ˆÀif¾0)ÁiF@Àh�i0)// Aè CéF3 Eúý¤B�gâHe SAØQÉÿü`ÑÁÓÁ`æ"_ _~A0<Ài @gh~@)( bF3)fJ©gN` rðÂé²f@) g )(c)(g )á˜g jBF3`öBm||PìPNu‡rˆ`ýøa°HípÄaFíB+g;|4pF3¦`;|8p¦`ZPíâPíãQíèB­¬Qíä+f -qWíäNua`HípÐFíBF3+gQíèPíã+g;|p¦`;|p¦"mdR)'í¸"m"Pí¿HzF3/`,Qí¿Fü p.m\Nu;kª+gAëpN@`r„`ý(+HdB­´,+ F3*+š†RE"mdaNuagr„`ý(Ú†S…NuHçýü?<fJ…g i6pN@BWNqF3Nq0Lß?¿NuaŠHípÐ,+*+"mda°HípÄaþäFíB+g|¦`|I3¦+g|4§`|8§|p¨`ÿí ¸FíB`ÿ/aBûJjJ-ëg F3 m¢N¨`¤í¸`g–J-ëgÀ-¾ m¢N�`‚À-¾fJ-ægJ-�gF3š-pgd`R°-‚f í¸`Ô-�fJ-æfp²f J-æff`8°-€fPíF3æí¸`¦°-ƒfJ-ãfF-è` mÜôfpê`82-ò€Smòf;|ÜòI3Rmô mÖôfaBúrí¸`Xí¸`NJmüf"@þ;mòü mÜôfRmüF3 mÜücBmü`  -´fJ-âg -Ì�­Ä` -Ø�­ÐNuJíçfxFí@­F3¸f­¸fh­¸fð­¸fD­¸f‚­¸f¤­¸fI3®­¹fBù¶­¹f6­¹f6FíBJm¸fŽQíç"|NuJmîgäJmôF3gÞ B 09Am úcPíê`Ð2-ð²müf8 m`"-Ì’­Ä!AmþAíȼ |pB(I3mþ a8aÒ`Ž5Smðf;|ÜðSmôJ-åg mÈôbaBù 0-îNûF3`ÿ^`Nq`† m̱íÈc aDgpa®`6Á+HÌJ-ägaš -Ì-pF3g°­Èc�­Ä+@´`´`a`ÿ -†á˜g²gB`ô-¼À°-½f -Ì�­ÄF3+@´í¸BmîNu mÌaÆf ±íÈb�`JJgþÎ c pa`þ¾g F3ff±íÄc\ +HÌS­¬J-ägL-qg&Jíéfpa”²-„F3f -Šar+mÄØB­¬+|8p¦`¨²-…f0+mÄÌJ-äg-qgp\aNF3 -Ša4`ýì+| 8p¦`p±íÈcpa,`DÁ+HÌR­¬J-äg bp^aF3 R­¬r@Òaþ-pg±íÈc ‘íÄ+H´``ýŒJ-äg J-égp>aÐ -F3Ša¶Bmîí¸`ýN0-ìNû`xNq`F`v`º`Ø` J-èg0B-º;|I3ö;|øBmú -ÔR€+@ØJ-ÁgB-Â`B-í`ªaBö”í¸ g fF3m�ºg ajíÁ`üÌJ-êg Qíêí¸`Jmîfa`ü®H瀀 -¦c†F3á˜+@¦ /bB­°@íí¸`h ?b&Qíé0@ï-ªf-qgaJF3í¸`ASQSENTU�EQU„15†QEVENT�ROUTINE�CALLED�BY�NON-INTERRUPT�ROUTINE**ˆASQ�EVENT�CODES* EVNTOWN‚EQU„1EVNTIOƒEQU„2‡I/O�COMPLETIONEVNTMSG‚EQU„3‰MESSAGEEVNTTIME�EQU„4‰TIMER�EVENTEVNTTASK�EQU„5‰SUB-TASK�EVENTEVNTATTN�EQU„6C ‰ATTENTION�EVENTééc'ŠPAGE1************************************************* *�&.BAB.EQ¦*1*************************************************O********************************************************************************Í*D*‰Equates�relating�to�BAB�=�Background�Activation�Block�for�RMS68K„**Í*O******************************************************************************* *J*‚Interrupt�service�routines�in�supervisor�mode�may�schedule�a�routine�forL*‚execution�in�background�by�preparing�a�BAB�which�points�to�the�routine�andK*‚is�not�currently�in�use,�and�calling�the�exec's�BKG_SCHEDULE�routine�with*‚the�BAB�address�in�A0.*I*‚The�BKG_SCHEDULE�routine�sets�the�IN�USE�flag�in�the�BAB�and�adds�it�toI*‚the�end�of�a�queue�of�BAB's�which�will�be�dispatched�when�the�interruptF*‚level�returns�to�zero.‚You�may�NOT�alter�the�BABLNK�or�BABUSE�fieldsJ*‚while�the�BAB�is�in�use.‚An�attempt�to�schedule�using�a�BAB�whose�IN�USE$*‚flag�is�already�set�has�no�effect.*I*‚When�the�routine�is�dispatched,�A1�will�point�to�the�BAB,�and�all�otherH*‚registers�are�available;�only�the�stack�pointer�must�be�preserved.‚YouJ*‚will�be�at�interrupt�level�0�and�you�must�exit�at�interrupt�level�0�with*‚with�an�RTS.* ŠOFFSET�0 0BABLNK„DS.Lƒ1’Forward�link�to�next�BAB�in�queue.8BABPTR„DS.Lƒ1’Pointer�to�code�to�executed�in�background.0BABUSE„DS.Bƒ1’Flag:‚true�(nonzero)�means�IN�USE."ŠDS.Bƒ3’Reserved�(should�be�zero). BABBLN„EQU„*’Length�of�a�BAB.éél#‰PAGE1************************************************* *�&.CCB.EQ¦*1*************************************************ééD éééééu~7†-* CHANNEL CONTROL BLOCK (CCB)D*ƒCONTAINS�CHANNEL�DESCRIPTION�AND�DATA�AREAS�FOR�DEVICE�INDEPENDENT*ƒCMR�PORTION.**H* CHANNEL MANAGEMENT DATA AREA ****************************************** ‰OFFSET…0*ŠDS.B„4Š'!CCB'�DUMP�EYE�CATCHER-CCBALL„DS.B„4ŒALL�LINK�FOR�CCB�CHAIN�IN�ORDER*¨OF�ALLOCATION/CCBPOLL‚DS.B„4†LINK�TO�NEXT�CCB�FOR�THIS�VECTOR5CCBTLNK‚DS.B„4†LINK�TO�NEXT�CCB�ATTACHED�TO�SAME�TASKACCBSUBƒDS.B„4†LINK�TO�CCB�OF�NEXT�SUBORDINATE�CHANNEL�(MEANINGFUL(*§ONLY�IF�CCBSTR�OPTION�CCBFGSUP�IS�SET)*J* THE FOLLOWING 24 BYTES MUST BE CONTIGUOUS IN THE CCB (LOAD WITH MOVEM.L)(CCBMNEMƒDS.B„4ŒMNEMONIC�FOR�THIS�CHANNELCCBTYPEƒDS.B„1ŒCHANNEL�TYPE&CCBCMCTƒDS.B„1ŒRESERVED�(USED�BY�CHPI)1CCBUSERƒDS.B„4ŒI/O�HANDLER�SERVICE�VECTOR�ADDRESS,CCBRTNIƒDS.B„4ŒINTERRUPT�ENTRY�POINT�ADDRESS-CCBCHB„DS.B„4ŒBASE�OF�MEMORY�MAPPED�I/O�SPACE>CCBMME„DS.B„2Œ0-REL�NUMBER�OF�CONSEC�BYTES�IN�MEM�MAPPED�SPACE&CCBVECTƒDS.B„1ŒINTERRUPT�VECTOR�NUMBER:CCBPPRIO�DS.B„1‰POLLING�PRIORITY�(HARDWARE�INTERRUPT�PRIO)1CCBSPRIO�DS.B„1‰SOFTWARE�PRIO�(POSITION�IN�CHAIN).CCBPECTƒDS.B„1ŒNUMBER�OF�POLLING�TABLE�ENTRIES*>CCBRQST‚DS.B„8†TASK�NAME�AND�SESSION�CODE�THAT�ORIGINALLY�MADE**CCBRQSTA‚DS.B„4ŒADDRESS�OF�REQUESTOR'S�TCB*!CCBKEYƒDS.Bƒ1ˆREQUESTOR'S�I/O�KEY$CCBRTN„DS.B„1ŒRETURN�OPTION�(BIT�0):*§0=PUT�RETURN�STATUS�IN*ªBUFFER,�ISSUE�WAKEUP*§1=PUT�RETURN�STATUS�ON*ªASQ*#CCBASQLƒDS.B„1ŒMAX�ASQ�ENTRY�LENGTHŠDS.B„1ŒRESERVED7CCBSVVCƒDS.B„4ŒSERVICE�VECTOR�FOR�RETURN�FROM�INTERRUPT)CCBSR…DS.B„2ŒUNMASK�STATUS�REGISTER�VALUE(CCBISR„DS.B„2ŒMASK�STATUS�REGISTER�VALUECCBVADRƒDS.B„4ŒVECTOR�ADDRESS!CCBSTR„DS.B„2ŒCCB�STATUS�REGISTER1CCBJSR„DS.B„6ŒHOLDS�JSR�INSTRUCTION�FOR�VECTORING-CCBIOH„EQU…*ŒI/O�HANDLER�PARAMETER�BLOCK�INFO&CCBTASKA‚DS.B„4ŒADDRESS�OF�ATTACHE�TCB4CCBTASKƒDS.B„8ŒATTACHEE�TASK�NAME�AND�SESSION�NUMBER*HCCBRESV1�DS.L†1ƒFUTURE�USE�BUFFER�BETWEEN�CCB�INDEPENDENT/DEPENDENT�DATAHCCBRESV2�DS.L†1ƒFUTURE�USE�BUFFER�BETWEEN�CCB�INDEPENDENT/DEPENDENT�DATAHCCBRESV3�DS.L†1ƒFUTURE�USE�BUFFER�BETWEEN�CCB�INDEPENDENT/DEPENDENT�DATAHCCBRESV4�DS.L†1ƒFUTURE�USE�BUFFER�BETWEEN�CCB�INDEPENDENT/DEPENDENT�DATAHCCBRESV5�DS.L†1ƒFUTURE�USE�BUFFER�BETWEEN�CCB�INDEPENDENT/DEPENDENT�DATA%CCBDDP„EQU…*ŒDEVICE�DEPENDENT�PORTION***-* POLLING TABLE AND POLLING TABLE ENTRY COUNT**žSTART�OF�POLLING�TABLE�IN�CCB5CCBMCNTƒEQU…4ŒMAXIMUM�NUMBER�OF�POLLING�TABLE�ENTRIES6CCBPBASE‚DS.B„CCBMCNT*8„RESERVE�REMAINING�SPACE�IN�CCB**"* POLLING TABLE RESIDES WITHIND  CCB9*ƒCONTAINS�8-BYTE�ENTRIES�TO�ALLOW�HANDLING�MORE�THAN�ONE'*ƒINTERRUPT�TYPE�FROM�A�SINGLE�CHANNEL.* ŠOFFSET‚0"CCBPOFFƒDS.B„2ŒPOLLING�BYTE�OFFSETCCBMASKƒDS.B„1ŒPOLLING�MASK)CCBPTSTƒDS.B„1ŒPOLLING�=�OR�<>�TEST�VALUE CCBRESOƒDS.B„2ŒRESET�BYTE�OFFSETCCBRESVƒDS.B„1ŒRESET�VALUECCBRESPƒDS.B„1ŒRESET�OPTIONS  ** CCBSTR (BIT FLAGS)*�BIT”MEANING�IF�SET-*�---”---------------------------------------#CCBFGATH�EQU…15ŠCHANNEL�IS�ATTACHED"CCBFGDIR�EQU…8‹EXCLUSIVE�VECTORING?CCBFGSUP‚EQU„2‹THIS�IS�A�SUPERVISOR�CHANNEL;�THE�ADDRESS�OF�THE(*§CCB�OF�THE�FIRST�CHANNEL�IN�THE�SUBOR-*§DINATE�CHAIN�IS�IN�CCBSUB."CCBFGOFF�EQU…1‹CHANNEL�IS�OFF-LINE;CCBFGSYS�EQU…0‹ONLY�SYSTEM�TASKS�MAY�ATTACH�TO�THIS�CHANNEL  ** CCBRESP -- RESET OPTIONS*CCBRSWƒEQU…0‹WRITE�RESET�BYTECCBRSRƒEQU…1‹READ�RESET�BYTEéé1**************************************************�&.CONNECT.EQ¢*1*************************************************éééééé鎗0ŸM§;¯O*v*****************************************************************************O*******************************************************************************O**********************************************************************************É***E G***…FILENAME:�CONNECT.EQ�--�EQUATES�FOR�CONNECT'S�COMMON�DATA�AREA.…******É***G***…ENVIRONMENT:�This�is�included�in�the�assembly�of�the�two�halves…***?***‡of�the�VERSAdos�utility�CONNECT:‚CONNECT1�and�CONNECT2.Š******É***,***…EXTERNAL�DATA�STRUCTURES�REFERENCED: ******É***)***…EXTERNAL�ENTRY�POINTS�REFERENCED:£******É***O*******************************************************************************O*******************************************************************************O*^***************************************************************************** *,*‚Revision�history�(add�new�changes�to�top).*…Date†Author‰ChangesI*…--------‚-------------‚------------------------------------------------G*†7/22/83‚Steve�FranckƒChanged�name�from�TMDATA.EQ,�and�added�stuff�for*žsupport�of�option�L.'*†5/31/83‚Steve�FranckƒInitial�writing.*ŠPAGEO*********************************************************************************‰THE�CHARACTER�QUEUES*O******************************************************************************* *&*‚Equates�describing�character�queues.J*‚The�way�the�queues�are�used,�they�are�empty�when�GET�=�PUT,�and�they�areL*‚full�if�adding�another�char�would�make�GET�=�PUT.‚That�is,�there�is�alwaysK*‚a�'dead�space'�of�1�char�to�keep�the�PUT�ptr�from�catching�up�to�GET.‚TheK*‚pointers�into�the�queues�advance�by�decrementing:‚each�pointer�moves�from0*‚Q_MAX�down�to�0�and�then�starts�over�at�Q_MAX.*5Q_MAX…EQU„2047�Highest�index�value�in�the�queue;�size"*§of�queue�will�be�this�value�+�1. ŠOFFSET�0.GET‡DS…1’Index�of�next�char�to�get�from�queue./PUT‡DS…1’Index�where�next�char�goes�into�queue.=QUEUE…DS.BƒQ_MAX+1ŒThe�data�area:�index�ranges�from�0..Q_MAX. #QUEUE_SIZE�EQUƒ*’Size�of�the�queue.ŠPAGEO********************************************************************************(*‰OFFSET�FOR�DATA�SHARED�BY�TM�AND�TMSUP*O******************************************************************************* ŠOFFSET�0 *%*‚Character�queues�for�the�two�ports.*ŠDS…0APORT1_QUEUE�DS.B�QUEUE_SIZE‰Queue�for�char's�coming�in�on�port�1.APORT2_QUEUE�DS.B�QUEUE_SIZE‰Queue�for�char's�coming�in�on�port�2.  *9*‚Area�to�save�data�passed�in�registers�at�task�creation.F*‚These�values�are�in�a�task's�registers�only�if�SCT�created�the�task.*ŠDS…0SCT_REGISTERS: *-------- D0 - D3"SCT_MTSK‚DS.Lƒ1’Monitor�task�name."SCT_MSES‚DS.Lƒ1’Monitor�session�#.#SCT_VOLƒDS.Lƒ1’Default�volume�name.ŠDS.Wƒ1’Unused.SCT_USNƒDS.Wƒ1’Default�user�#. *-------- D4 - D7SCT_CLGƒDS.Lƒ1’Default�catalog. ŠDS.Lƒ1’*$SCT_COML‚DS.Lƒ1’Command�line�length.(SCT_LUMK‚DS.Lƒ1’Logical�unit�usage�mask. *-------- A0 - A3SCT_TASK‚DS.Lƒ1’Task�name.$SCT_TERM‚DS.Lƒ1’Associated�terminal.ŠDS.Wƒ1’Unused.SCT_LUSN‚DS.Wƒ1’Logon�user�#.SCT_SESS‚DS.Lƒ1’Session. *-------- A4 - A5SCT_DATE‚DS.Lƒ1’System�date.SCT_TIME‚DS.Lƒ1’System�time. **‚Flags.*5READY…DS.Bƒ1’Flag�checked�by�the�supervisor�mode�code(*§to�see�whether�or�not�we�are�ready�for%*§it�to�do�its�stuff.‚Initially�it�is'*§false�(we're�not�ready),�but�gets�set%*§true�after�we�have�linked�ourselves*§to�both�drivers. ;EXORTERM‚DS.Bƒ1’This�flag�is�set�if�the�terminal�from�which(*§we�were�invoked�is�an�EXORterm�155,�or%*§emulates�one.‚Actually,�if�option�L*§is�specified,�this�gets�set. BREAK2„EQU„BREAKS+1‹(True�if�a�break�is�being�sent�to�port�2.)  ***************** ŠDS…0;DATA_SIZE�EQU„*’Amount�of�space�required�for�all�this�data.ééééééé*D* Crash macro will generate a conditional long branch to any addressD*ƒwithin�range.‚It�is�normally�used�to�generate�a�conditional�branchC*ƒto�an�odd�address.�(The�assembler�will�not�allow�such�a�branch�toC*ƒbe�coded�directly).‚This�is�a�good�wayF �to�conditionally�crash�theB*ƒsystem�(in�supervisor�mode)�or�force�a�task�abort�(in�user�mode)** Example of usage:**‰CRASH.NE�*+1*E* The above would generate a DC.W $66FF - the equivalent of BNE.S *+1*T‰EQU„0F‰EQU„1HIˆEQU„2LSˆEQU„3CCˆEQU„4 HSˆEQU„CCCSˆEQU„5 LOˆEQU„CSNEˆEQU„6EQˆEQU„7VCˆEQU„8VSˆEQU„9 PLˆEQU„$A MIˆEQU„$B GEˆEQU„$C LTˆEQU„$D GTˆEQU„$E LEˆEQU„$F CRASH…MACROŠNOLIST \@A‡SET„\0\@B‡SET„\1-*-2ŠLIST*ŠDC.Lƒ(((6<<4)!(\@A&$0F))<<24)!(\@B&$FFFF)ŠENDM*8* ILLEGAL macro generates a two-byte illegal instruction* ILLEGALƒMACRO ŠDC.Wƒ$4AFCŠENDMéééé·,*2*‰EQUATES�SPECIFICALLY�FOR�MVM605�DRIVER�(D605.SA)*DACOPENƒEQU„1’OPEN�COMMAND�CODEDACCLS„EQU„2’CLOSE�COMMAND�CODE#DACCNVRT‚EQU„3’CONVERT�COMMAND�CODE7ZEROL…EQU„0’Low�byte�necessary�to�set�converter�to�0�v.7ZEROH…EQU„08‘HI‚byte�necessary�to�set�converter�to�0�v.;DAC1_OFFSET�EQU‚0’Offsets�to�channels�from�the�I/O�address.DAC2_OFFSET�EQU‚4’*DAC3_OFFSET�EQU‚8’*DAC4_OFFSET�EQU‚$C‘*8SAVEREGS„EQU‚13‘Number�of�regs�to�save�for�periodic�act.* *‰DAC�COMMAND�PARAMETERS�OFFSETS* ŠOFFSET�0 CMDSTA„DS.Wƒ1’DCO�command�statusCMDCOD„DS.Wƒ1’DCO�command�codeCMDCHN„DS.Wƒ1’#�of�channels CMDNXT„EQU„**7*ˆDEFINE�THE�OPEN�DEPENDANT�PART�OF�THE�PARAMETER�BLOCK*ŠOFFSET�CMDNXTNUMCHANƒDS.Wƒ1’channel�number4OPNTRY„EQU„*-CMDNXT‹#�of�bytes�for�each�open�channel*9*ˆDEFINE�THE�CONVERT�DEPENDANT�PART�OF�THE�PARMATER�BLOCK*‰OFFSET„CMDNXT'CHANL„DS.W†1�Channel�number�to�convert.4NUMCONV‚DS.W†1�Number�of�conversion�for�this�channel4DATADDR‚DS.L†1�Address�of�delay�information�and�data*£to�be�converted.CNVRTLNG�EQU‡*-OPNTRY+CHNLCONF‚DS.Wƒ1’channel�wake�up�information8CNVRTBLK�EQU‡*-OPNTRY‰Length�of�convert�parameter�block.**‰DACTBL�OFFSETS8*‰header�information�set�up�during�system�initialization9*‰all�DAC�entries�set�to�$FF�during�system�initialization* ŠOFFSET�0DACEYE„DS.Lƒ1’!DAC�eye�catcher!DACLNG„DS.Wƒ1’#�of�bytes�in�table4DACOFSTƒDS.Wƒ1’offset�to�next�available�DAC-ID�entryB*DACIO is an offset which points to a location within DACTBL which<*‡contains�a�value�which�is�the�offset�relative�to�DCACBL�to6*‡the�IO�image�maps�within�DACTBL.‚DACTBL�itself�is�an4*‡absolute�address�set�in�SYSGEN.‚It�is�accessed�by:6*‡MOVE.L‚DACTBL,An‚(moves�address�of�DACTBL�to�address?*‡register�n).‚MOVE‚DACIO(An),Dn‚(DACIO�is�the�offset�to�data).'DACIO„DS.Wƒ1’offset�to�start�of�IO�maps"DACNAL„DS.Bƒ1’#�of�CCB's�allocated*DACNMAXƒDS.Bƒ1’max�#�of�CCB's�can�allocate"DACNTRYƒEQU„*’table�entries�followŠOFFSET�DACNTRYDACID…DS.Lƒ1’DAC�module�IDF À;É;Ñ76*‚---ƒ---ƒStart�of�channel�configuration�table‚---ƒ---8*ˆEach�channel�configuration�entry�consists�of�2�fields;/*ˆ(1)�User�ID�(the�user's�TCB�address)�4�bytes.'*ˆThere�is�space�reserved�for�4�entries*)ŠDS.Lƒ1’user�task�TCB�address�-�channel�0&ŠDS.Wƒ1’Offset�to�channel�in�IO�space.0ŠDS.Bƒ3*6�rest�of�channels�(6�bytes�per�channel)3DACIDLNG‚EQU„*-DACNTRYŠlength�of�1�DAC�module�entry* ŠOFFSET�0*/*‚Offsets�to�fields�within�configuration�table:*#DACTCB„DS.Lƒ1’user�task�TCB�address+IOADR…DS.Wƒ1’Offset�to�channel�in�IO�space.'CHANLNGƒEQU„*’length�of�1�channel�entry**‰IO�address�for�this�DAC.**F*ƒBegin�IO�image�map�------------------------------------------------- ŠOFFSET�0&IODDR„DS.Lƒ1’memory�mapped�I/O�address$IOLNG„EQU„*’length�of�1�IO�map�entryF*‚End�IO�image�map�--------------------------------------------------- PAGE**ˆDAC�DRIVER�ERROR�CODES*DACDVB„EQU„$F0�device�badDACBSY„EQU„$F1�device�busy,DACICU„EQU„$F2�invalid�command�for�this�user1DACCNM„EQU„$F3�invalid�channel�#�for�this�command$DACINVDƒEQU„$F4�invalid�command�code-DACMEM„EQU„$F5�no�memory�space�left�in�DACTBL+DACICNSƒEQU„$F6�illegal�channel�#�specified.DACINC„EQU„$F7�invalid�#�of�channels�specified/DACCNFGƒEQU„$F8�invalid�configuration�specified/DACICC„EQU„$F9�invalid�command�for�this�channel:DACMAX„EQU„$FA�exceeded�SYSGEN�specified�number�of�devicesDACIINTƒEQU„$FB�(not�used)#DACNTBLƒEQU„$FC�no�DAC�table�exists'DACNID„EQU„$FD�DAC�module�not�allocated%DACPND„EQU„$FE�channel�already�opened PAGE*!*†---†---…STANDARDƒMACROS…---…---*H*Allocate macro allocates local storage as long words on the stack,(A7).,*Up to 6 variables may be allocated by name.C*These variables may then be referred to by name offset to stack orH*they may be stored to (by macro STORE) and loaded from (by macro LOAD).*3*Prior to exit, the variables must be de-allocated.*ALLOCATE MACRO*B*Allocate reserves storage on the stack for local named variables,8*‚which�are�referred�to�as�an�offset�from�stack�pointer.\1 SET 2‰IFGT�(NARG-1)\2 SET 6‰ENDC‰IFGT�(NARG-2) \3 SET 10‰ENDC‰IFGT�(NARG-3) \4 SET 14‰ENDC‰IFGT�(NARG-4) \5 SET 18‰ENDC‰IFGT�(NARG-5) \6 SET 22‰ENDC*ƒSUB.Lƒ#(NARG*4)+4,A7NUM_RESERVED SET (NARG*4)+4*ƒENDM*I*LOAD macro allows loading a register from local storage named variables. *The�syntax�is:‚LOAD�Rn,VARNAME.9*The storage is DYNAMICALLY ALLOCATED by macro 'ALLOCATE'* LOAD‚MACRO‰MOVE.L„\2(A7),\1‰ENDM*H*STORE macro allows storing a register to local storage named variables.!*The�syntax�is:‚STORE�Rn,VARNAME.?*The local storage is DYNAMICALLY ALLOCATED by macro 'ALLOCATE'* STORE MACRO‰MOVE.L„\1,\2(A7)‰ENDM**PUSHPOINTŠMACRO‰MOVEM.LƒA0-A6,-(A7)‰ENDM*POP_POINTŠMACRO‰MOVEM.Lƒ(A7)+,A0-A6‰ENDM* PUSHALLŒMACRO‰MOVEM.LƒA0-A6/D0-D7,-(A7)‰ENDM* POPALLƒMACRO‰MOVEM.Lƒ(A7)+,A0-A6/D0-D7‰ENDMéééG éŠPAGE*ˆINCLUDE‚D610CCB.EQ ‰NOFORMAT L*****************************************************************************8*‰Input�Module�(VME�610/620)�Driver�CCB�Device�Dependent*šData�Structures*H*ƒThe�following�equates�define�the�controlling�data�structures�stored�inF* each input module CCB allocated at system initialization time. TheseJ* structures reside in the device dependent portion of the CCB. The device8* independent CCB data structures are defined in CCB.EQ.*N******************************************************************************ŠPAGE*-*‚Interrupt�Input�Channel�Control�Table�Entry*L*ƒThese�equates�define�the�channel�control�information�stored�in�the�CCB�forN* each interrupt channel (0-3) of an input module. If the attached TCB addressJ* field is zero, the channel is not assigned by any task so all other data$* fields are treated as Don't Cares. ŠOFFSET�0 6ICCBAB„DS.BƒBABBLN�This�Background�Activation�Block�is)*£used�by�the�Debounce�Timeout�Handler�to-*£schedule�a�background�process�for�execution**£that�will�handle�interrupt�notificiation%*£and�reenabling�of�interrupts�on�the-*£channel.�This�BAB�is�placed�at�the�front�of)*£each�interrupt�channel�control�entry�so**£that,�when�the�background�process�begins(*£executing,�A1�points�to�the�apropriate)*£Interrupt�Channel�Control�entry�for�the*£channel�that�timed-out.ŠSPC„25ICCTCB„DS.Lƒ1”This�field�contains�zero�if�the�channel)*£is�not�attached�to�any�task�or�contains+*£the�TCB�address�of�the�owning�task�if�the*£channel�is�allocated.ŠSPC„22ICCB†DS.Lƒ1”This�field�contains�the�CCB�address�in'*£which�the�input�channel�control�entry'*£resides.�This�information�is�supplied,*£here�to�allow�the�Debounce�Timeout�Handler**£to�easily�determine�the�CCB�address�from)*£interrupt�channel�control�entry�address)*£without�performing�offset�calculations.ŠSPC„23ICCBKGST‚DS.Lƒ1”This�field�contains�the�entry�point-*£address�of�the�RMS68K�Background�SchedulingÙ5â:ê6ò2ú &*£routine.�This�address�is�used�by�the**£interrupt�level�Debounce�Timeout�Handler**£to�schedule�activation�of�the�Background*£Debounce�Timeout�Handler.ŠSPC„23ICCNUM„DS.Bƒ1”This�field�contains�the�input�channel**£number�(0-3)�associated�with�the�channel)*£control�entry.�This�information�is�also**£supplied�for�the�benefit�of�the�Debounce*£Timeout�Handler.ŠPAGE6ICCENABL‚DS.Bƒ1”This�flag�is�set�($FF)�when�interrupts-*£are�enabled�on�the�channel�and�is�clear�(0)%*£when�interrupts�are�disabled�on�the(*£channel.�This�flag�is�not�changed�when+*£interrupts�on�the�channel�are�disabled�by,*£the�driver�for�software�debounce�handling.ŠSPC„25ICCEDGEƒDS.Bƒ1”This�flag�is�set�($FF)�when�interrupts,*£are�to�occur�on�a�deenergized�to�energized(*£input�transition�and�is�clear�(0)�when+*£interrupts�are�to�occur�on�a�energized�to*£to�deenergized�transition.ŠSPC„25ICCDBINT‚DS.Wƒ1”This�field�contains�the�length�of�the+*£Debounce�Interval�in�milliseconds.�A�zero**£in�this�field�indicates�that�no�software-*£debounce�is�to�be�performed�on�the�channel.ŠSPC„29ICCQEVNT‚DS.Bƒ1”This�flag�is�set�($FF)�if�the�task�owning-*£the�channel�is�to�be�notified�of�interrupts**£via�an�event�in�its�ASQ�and�is�clear�(0)+*£if�a�Wakeup�is�to�be�issued�for�the�task.ŠSPC„22ICCDBACT‚DS.Bƒ1”This�flag�is�set�by�the�Background'*£Interrupt�Handler�at�the�start�of�the+*£debounce�timeout�period�and�is�cleared�by**£the�Background�Debounce�Timeout�Handler.-*£This�flag�is�used�by�the�Close�Channels�and-G *£Disable�Interrupts�Commands�to�determine�if+*£there�is�a�pending�debouce�operation�on�a *£channel�that�must�be�canceled.ŠSPC„24ICCDBSTƒDS.Lƒ1”This�field�contains�the�starting�time,*£(in�mS�past�midnight)�of�the�last�software+*£debounce�interval�or�that�of�the�interval*£in�progress.ŠSPC„23ICCENTLN‚EQU„*”This�equate�defines�the�length�of�an'*£Interrupt�Input�Channel�Control�Table*£entry.ŠPAGE*%*‚CCB�Device�Dependent�Data�Strucures* ŠOFFSET�CCBDDP 6CCBBAB„DS.BƒBABBLN�This�Background�Activation�Block�is)*£used�by�the�Foregrond�Interrupt�Handler&*£to�Schedule�execution�of�the�Channel**£Shutdown�Handler�in�background.�On�entry,*£to�the�background�process,�the�CCB�address!*£may�be�obtained�as�-CCBDDP(A1).ŠSPC„26CCBQCTAD‚DS.Lƒ1”This�field�contains�the�address�of�the**£Interrupt�Queue�Control�Table�within�the*£Global�Variable�Area.ŠSPC„2**ƒMiscellaneous�Data�Fields*ŠSPC„24CCBCMDST‚DS.Lƒ1”This�field�contains�the�value�of�the,*£the�supervisor�stack�pointer�(A7)�on�entry,*£to�the�drivers�command�processing�routine.-*£This�value�is�saved�so�that�the�entry�state(*£of�the�stack�can�be�easily�restored�if(*£an�error�exit�must�be�performed�from�a*£nested�subroutine.ŠSPC„24CCBINTCR‚DS.Bƒ1”This�field�contains�the�image�of�the%*£last�value�written�to�the�Interrupt**£Mask/Sense�Register�of�the�input�module.(*£Any�changes�to�be�made�to�the�hardware+*£register�are�first�made�to�this�image�via+*£a�Read-Modify-Write�class�instruction�and)*£the�image�is�then�moved�to�the�hardware,*£register�via�a�memory�to�memory�move.�This,*£allows�the�background�interrupt�handler�to&*£update�the�hardware�register�without)*£masking�interrupts.�Use�of�Read-Only�or**£Write-Only�instructions�to�modify�either(*£the�image�byte�or�the�hardware�control*£register�is�prohibited.ŠPAGE7CCBIQENA‚DS.Bƒ1”This�bit�mask�is�used�by�the�Foreground&*£Interrupt�Handler�to�block�Interrupt%*£Processing�Queue�entries�from�being%*£generated�as�a�result�of�interrupts&*£occuring�on�selected�channels.�If�an$*£Interrupt�Queue�Enable�bit�is�set,**£interrupts�for�the�corresponding�channel,*£will�be�placed�in�the�Interrupt�Processing,*£Queue�as�they�occur.�If�an�Interrupt�Queue,*£Enable�bit�is�clear,�interrupts�that�occur&*£on�the�corresponding�channel�will�be *£discarded.ŠSPC„22CCBCHTYP‚DS.Bƒ1”This�bit�mask�tells�the�Foreground&*£Interrupt�Handler�which�of�the�input&*£channels�are�configured�for�software+*£debounce.�Bits�0-4�of�the�mask�correspond(*£to�channel�numbers�0-4�respectively.�A+*£clear�mask�bit�indicates�that�no�debounce,*£is�to�be�performed�(i.e.�task�notification'*£is�made�on�all�interrupts).�A�set�bit+*£indicates�that�software�debounce�is�to�be*£performed�on�the�channel.ŠSPC„25CCBSHTDN‚DS.Bƒ1”When�the�Foreground�Interrupt�Handler**£disables�interrupts�on�one�or�more�input)*£channels�as�a�result�of�Interrupt�Queue,*£overflow,�it�sets�the�shutdown�flag�bit(s)+*£corresponding�to�the�channel�number(s)�of**£the�interrupt(s)�that�were�lost�due�to�a**£full�Interrupt�Processing�Queue.�Each�of$*£these�flag�bits�are�cleared�by�the,*£Background�Interrupt�Handler�when�the�task'*£owning�the�channel�is�notified�of�the *£shutdown.ŠPAGE*M*ƒThe�following�tables�contain�information�pertaining�to�the�individual�inputN* channels of a single input module. The first table pertains to non-interruptJ* channels 4-7 and contains only channel ownership information. The secondM* table pertains to interrupt channels 0-3 with each entry containing channel.* ownership and interrupt control information.*ŠSPC„28CCBNICCT‚DS.Lƒ4”This�table�contains�one�32-bit�entry�for+*£each�non-interrupt�channel�4-7.�The�entry)*£for�each�channel�is�zero�if�no�task�has**£the�channel�assigned�or�contains�the�TCB**£address�of�the�of�the�owning�task�if�the*£channel�is�assigned.ŠSPC„29CCBNICCE‚EQU„*-1’This�is�the�offset�within�the�CCB�of�the(*£last�byte�of�the�Non-Interrupt�Channel*£ContH rol�Table.ŠSPC„2=CCBICCTƒDS.BƒICCENTLN*4‹This�table�input�channel�control�data,*£for�each�interrupt�channel�0-3.�Each�table**£entry�contains�multiple�fields�for�which*£equates�were�defined�earlier.ŠSPC„28CCBICCTE‚EQU„*-1’This�equate�specifies�the�offset�of�the,*£last�byte�of�the�Interrupt�Channel�Control*£Table�within�the�CCB.ŠSPC„2J*ƒThe�following�fields�contain�the�entry�point�addresses�of�various�RMS68KL* routines that are normally accessed via a TRAP 0 call. These addresses areO* obtained by the driver initialization routine so that low time overhead JSR'sI* may be used in place of much higher overhead TRAP 0 calls. The order ofM* these entries may not be changed without also changing the Trap 0 Directive* number table (TRAP0TBL).ŠSPC„23CCBGUARD‚DS.Lƒ1”This�field�contains�the�entry�point**£address�of�the�RMS68K�Guarded�Subroutine*£Call�routine.ŠSPC„23CCBBKGST‚DS.Lƒ1”This�field�contains�the�entry�point-*£address�of�the�RMS68K�Background�Scheduling *£routine.ŠSPC„23CCBLOGPY‚DS.Lƒ1”This�field�contains�the�entry�point+*£address�if�the�RMS68K�logical�to�physical*£address�translation�routine.ŠSPC„22CCBRQPAƒDS.Lƒ1”This�field�contains�the�entry�point**£address�of�the�RMS68K�Executive�Periodic*£Activation�Request�routine.ŠSPC„23CCBQEVNT‚DS.Lƒ1”This�field�contains�the�entry�point,*£address�of�the�RMS68K�Queue�Event�routine.ŠSPC„23CCBWAKUP‚DS.Lƒ1”This�field�contains�the�entry�point'*£address�of�the�RMS68K�Wakeup�routine.ŠSPC„23CCBLEN„EQU„*”This�is�the�length�of�a�complete�input&*£module�CCB�including�both�the�device,*£independent�and�device�dependent�portions.ŠSPC„2 éééŠPAGE*‰INCLUDE�D610CMD.EQ )*‰Input�Module�Driver�Command�Error�Codes K*ƒThe�following�equates�specify�the�single�byte�error�codes�returned�by�theN* driver command handler in D0 and in the Input Driver Command Parameter BlockL* (IPB) when an error is detected during preliminary processing of a command:* passed to the driver via an Initiate I/O command to CMR. =INPPBLKƒEQU„RTCDPBLK�The�address�boundaries�specified�for�the,*£IPB�do�not�lie�entirely�within�the�address*£space�of�the�requesting�task.ŠSPC„26INPBAWBƒEQU„$86’The�base�address�specified�for�the�IPB"*£does�not�lie�on�a�word�boundary.ŠSPC„28INPISC„EQU„XSTINV�The�function�sub-code�specified�in�the)*£Initiate�I/O�Parameter�Block�is�invalid*£for�this�driver.ŠSPC„23INPPBLNƒEQU„$10’The�length�specified�for�the�IPB�is*£invalid�for�this�command.ŠSPC„25INPICMDƒEQU„$F4’The�command�code�specified�in�the�IPB$*£does�not�match�any�of�the�commands*£supported�by�this�driver.ŠSPC„25INPOWNRƒEQU„$F2’One�or�more�of�the�channels�specified&*£in�this�command�are�not�owned�by�the'*£requesting�task.�All�channels�must�be-*£assigned�by�an�Open�Channels�command�before*£they�may�be�accessed.ŠSPC„22INPUNKWN‚EQU„$F6’One�or�more�channels�numbers�were)*£specified�that�are�non-existant�for�VME-*£610/620�modules(i.e.�not�in�the�range�0-7). ŠSPC„26INPICHNƒEQU„$F3’A�channel�number�was�specified�that�is'*£invalid�for�the�given�command�(i.e�an'*£Enable/Disable�Interrupts�command�was)*£specified�for�a�non-interrupH t�channel).ŠSPC„28INPMAXCH‚EQU„$F7’On�an�Open�Channels�command,�the�number,*£of�channels�specified�was�not�in�the�range*£1-8.ŠPAGE8INPINTRƒEQU„$FF’An�Enable/Disable�interrupts�command�was+*£issued�for�one�or�more�channels�that�were+*£already�in�the�requested�state.�This�code&*£is�only�one�where�command�processing-*£continues�after�the�error�is�detected.�Thus-*£this�code�may�be�interpreted�as�an�error�or$*£warning�at�the�option�of�the�user.ŠSPC„2 8 6 9 9INPAOPNƒEQU„$FE’One�or�more�channels�specified�in�an�Open**£Channels�command�are�already�assigned�to+*£requesting�task.�A�channel�must�be�closed**£before�a�new�open�command�can�be�issued.ŠSPC„28INPDUPLƒEQU„$FD’Duplicate�channel�numbers�were�specified+*£in�an�Open�Channels�command.�Each�channel+*£number�may�only�be�specified�once�in�each*£command�parameter�block.ŠSPC„2G*ƒThe�following�equates�define�the�command�codes�that�are�placed�in�theF* CMDCOD field of the IPB. The command mnemonics are restricted to sixH* characters in length to maintain compatibility with the variable names * used in ANSI Standard FORTRAN.ŠSPC„26INOPEN„EQU„$01’This�is�the�Open�Channels�Command�code.ŠSPC„26INCLOS„EQU„$02’This�is�the�Close�All�Channels�or�Close!*£Selected�Channels�Command�code.ŠSPC„24INSTAT„EQU„$05’This�is�the�Read�Input�Status�Command*£codeŠSPC„24INENAB„EQU„$06’This�is�the�Enable�Interrupts�Command*£code.ŠSPC„25INDSAB„EQU„$07’This�is�the�Disable�Interrupts�Command*£code.ŠPAGEF*ƒThe�following�offsets�define�the�format�of�the�Standard�Input�DriverL* Parameter Block used for the following commands: Close All Channels, CloseF* Selected Channels, Read Input Status, Enable Interrupts, and Disable * Interrupts.ŠSPC„2 ŠOFFSET�06CMDSTA„DS.Wƒ1”This�field�contains�an�8-bit�status�code(*£that�is�returned�by�the�driver�command+*£handler�upon�completion�of�the�command�or,*£when�an�error�condition�has�been�detected.+*£With�the�execption�of�status�code�INPINTR)*£($FF)�described�above,�a�non-zero�value+*£returned�in�this�field�means�an�error�was%*£detected�in�the�IPB�and�none�of�the#*£requested�command�operations�were *£performed.ŠSPC„22CMDCOD„DS.Wƒ1”This�field�contains�one�of�the�Input'*£Module�Driver�Command�codes�described *£earlier.ŠSPC„21CMDCHM„DS.Wƒ1”This�field�contains�a�bit�mask�that+*£identifies�the�channels�to�be�affected�by%*£the�command.�Bits�0-7�correspond�to'*£channels�0-7�of�the�input�module.�All)*£channels�corresponding�to�set�mask�bits,*£will�be�affected�by�the�command.�Mask�bits**£8-16�are�reserved�and�must�all�be�clear.ŠSPC„21CMDLEN„EQU„*”This�is�the�standard�IPB�length�that%*£applies�to�all�commands�except�Open"*£Channels�and�Close�All�Channels.ŠPAGEG*ƒThe�following�offsets�define�the�format�of�the�Open�Channels�command.K* The IPB for this command specifies the number of channels to be opened byM* the command to a maximum of 8. Following the number of channels is a seriesO* of 4 byte data blocks. Each data block specifies the number of the channel toL*�be�opened.‚When�an�interrupt�channel�(0-3)�is�being�opened,�the�data�blockK* also contains a channel configuration word. The IPB may contain more data@* blocks than necessary for the number of channels to be opened.ŠSPC„22ŠOFFSET�CMDCHM�The�Command�Status�and�Command�Code-*£fields�of�the�Open�Channels�Command�are�the'*£same�as�specified�in�the�standard�IPB *£format.ŠSPC„25CMDNCO„DS.Wƒ1”This�field�contains�the�number�of�input+*£channels�to�be�open�by�this�command.�This$*£value�must�be�in�the�range�of�1-8.ŠSPC„24CMDCHL„EQU„*”This�is�the�starting�offset�of�the�list+*£of�data�blocks�specifying�the�channels�to *£be�opened.ŠPAGEK*‚The�following�offsets�I define�the�format�of�each�data�block�in�the�list�of* channels to open.ŠSPC„2 ŠOFFSET�02OPNCHN„DS.Wƒ1”This�field�contains�the�number�of�an)*£input�channel�to�be�opened.�This�number*£must�be�in�the�range�1-8.ŠSPC„24OPNCFG„DS.Wƒ1”This�field�specifies�how�the�interrupt+*£channel�being�opened�is�to�be�configured.)*£This�field�is�ignored�for�non-interrupt-*£channels.�This�field�is�broken�into�several*£sub-fields�as�follows:**¦Bit(s)‚Function**§0†Reserved�(must�be�zero)**§1�=�1‚Disable�Interrupts*«0‚Enable�Interrupts*#*§2�=�1‚Interrupt�on�deenergized�to*°energized�transition*«0‚Interrupt�on�energized�to*°deenergized�transition*(*§3�=�1‚WAKEUP�task�on�channel�interrupt!*«0‚Queue�an�event�to�the�task�on*®channel�interrupt**§5-7„Reserved�(must�be�zero)*&*§8-14ƒLength�of�the�software�debounce*®interval�in�units�of�4�milli-!*®seconds.�Zero�if�no�debounce�is *®desired.* *§15�=�1�Use�the�default�channel*®configuration�specified�below"*¬0�Use�the�user�specified�channel*®configurationŠSPC„24OPNCDB„EQU„*”This�is�the�length�of�a�data�block�that#*£specifies�a�channel�to�be�opened.ŠSPC„23DEFLTCFG‚EQU„0”The�default�channel�configuration�is*£defined�as�follows:**¨Interrupts�Enabled'*¨Interrupt�on�energized�to�deenergized *ªtransition*¨Queue�event�on�interrupt*¨No�software�debounce ééééé‰PAGE*ˆINCLUDEƒD610INTQ.EQ * Interrupt Queue Control Table*G*ƒThese�equates�define�the�offsets�of�fields�within�the�Interrupt�QueueI* Control Table. This table resides in the Global Variable Area allocatedH* by the system initialization routine. It is used by the Foreground andJ* Background Interrupt handlers to control the Interrupt Processing Queue.L* The queue length in bytes must be an power of two. This restriction speedsG* up queue processing by minimizing the time necessary to perform queue* pointer wraparound.* ŠOFFSET‚03QID‡DS.Lƒ1”This�field�is�initialized�to�contain�the'*£ASCII�string�'IQCT'�allow�easy�visual(*£location�of�the�queue�control�table�in*£memory�dumps.ŠSPC„21QBAB†DS.BƒBABBLN�This�BAB�is�used�to�activate�the'*£background�interrupt�handler�when�the)*£queue�contains�an�interrupt�entry�to�be *£processed. /QPTR†DS.Lƒ1”This�field�contains�the�base�memory(*£address�of�the�interrupt�queue�itself. J*ƒThe�queue�input�and�output�offset�fields�must�be�adjacent�in�memory�withK* the input offset at the lower address and the output offset at the higherG*�address.‚This�is�required�because�a�CMPM.W�(Ax)+,(Ax)+�instruction�isM* used to check for an empty queue without requiring interrupts I to be masked. 4QINOFSTƒDS.Wƒ1”This�field�contains�the�offset�of�the$*£first�free�queue�location�where�an *£interrupt�entry�can�be�placed. 5QOUTOFST‚DS.Wƒ1”This�field�contains�the�offset�of�the)*£next�interrupt�entry�to�be�removed�from *£the�queue. 6QWAMSK„DS.Wƒ1”This�field�contains�the�queue�length�-�1%*£and�is�ANDed�to�either�the�input�or)*£output�offset�field�to�force�wraparound+*£from�the�high�address�end�of�the�queue�to*£the�low�address�end. 4QMAXIL„DS.Wƒ1”This�upper�byte�of�this�field�contains%*£the�hardware�interrupt�level�of�the**£highest�priority�input�module�controlled,*£by�this�driver�and�the�lower�byte�is�zero.&*£This�field�is�used�by�the�Foreground**£Interrupt�Handler�to�raise�the�processor #5 ,2,*£interrupt�mask�while�a�new�entry�is�placed$*£in�the�Interrupt�Processing�Queue. 0IQCTLN„EQU„*”This�is�the�length�of�the�Interrupt*£Queue�Control�Table.ŠPAGE*"* Interrupt Processing Queue Entry*I*ƒThese�equates�define�the�format�of�an�interrupt�entry�within�the�queue.L* the entry length in bytes must be a power of 2 so the entry is padded withM* several reserved bytes to make a total of 16 bytes per entry. The order andM* offsets of the interrupt queue entry sub-fields must be maintained since anK* instruction of the form MOVEM.L Dx/Dx/Ax, or MOVEM.L ,Dx/Dx/Ax isN* use to place interrupt entries into the queue and to remove entries from the* queue respectively. ŠOFFSET�02IQETIMEƒDS.Lƒ1”This�field�contains�the�approximate,*£time�at�which�the�interrupt�occurred.�This,*£time�is�obtained�from�the�TIMEOD�parameter**£in�SYSPAR�and�is�accurate�to�the�nearest+*£millisecond�subject�to�the�granularity�of$*£the�RMS68K�real-time�clock�source. ,ŠDS.Bƒ3”This�field�acts�as�a�place�holder�so+*£the�status�byte�below�will�be�loaded�into,*£the�low-order�byte�of�a�data�register�even'*£though�all�queue�entries�are�read�and(*£written�via�a�MOVEM.L�instruction.‚The)*£content�of�these�three�bytes�is�assumed *£to�be�UNDEFINED�by�the�driver. 8IQESTATƒDS.Bƒ1”This�field�contains�a�bit�mask�specifying%*£the�input�channel�or�channels�which*£generated�the�interrupt(s). 4IQECCB„DS.Lƒ1”This�field�contains�the�CCB�address�of%*£the�input�module�that�generated�the *£interrupt. -ŠDS.Bƒ4”These�reserved�bytes�are�necessary�to**£pad�the�queue�entry�length�in�bytes�to�a*£power�of�two. 0IQENTLNƒEQU„*”This�is�the�length�of�an�interrupt*£processing�queue�entry.   é*2*‰EQUATES�SPECIFICALLY�FOR�MVM615�DRIVER�(D615.SA)*ACOPEN„EQU„1’OPEN�COMMAND�CODEACOCLS„EQU„2’CLOSE�COMMAND�CODE"ACOUT…EQU„3’OUTPUT�ON�COMMAND�CODE$ACOOFF„EQU„4’OUTPUT�OFF�COMMAND�CODE"ACOSTA„EQU„5’OUTPUT�STATUS�COMMANDX1ˆEQU„6’(not�used)X2ˆEQU„7’(not�used)"ACOPLS„EQU„8’PULSED�OUTPUT�COMMAND* *‰ACO�COMMAND�PARAMETERS�OFFSETS* ŠOFFSET�0 CMDSTA„DS.Wƒ1’ACO�command�statusCMDCOD„DS.Wƒ1’ACO�command�codeCMDCHN„DS.Wƒ1’#�of�channels CMDNXT„EQU„*ŠOFFSET�CMDNXTNUMCHANƒDS.Wƒ1’channel�number$CHNCNFGƒDS.Wƒ1’channel�configuration4OPNTRY„EQU„*-CMDNXT‹#�of�bytes�for�each�open�channel**‰ACOTBL�OFFSETS8*‰header�information�set�up�during�system�initialization9*‰all�ACO�entries�set�to�$FF�during�system�initialization* ŠOFFSET�0ACOEYE„DS.Lƒ1’!ACO�eye�catcher!ACOLNG„DS.Wƒ1’#�of�bytes�in�table4ACOOFSTƒDS.Wƒ1’offset�to�next�available�ACO-ID�entryB*ACOIO is an offset which points to a location within ACOTBL which<*‡contains�a�value�which�is�the�offset�relative�to�ACOTBJ L�to6*‡the�IO�image�maps�within�ACOTBL.‚ACOTBL�itself�is�an4*‡absolute�address�set�in�SYSGEN.‚It�is�accessed�by:6*‡MOVE.L‚ACOTBL,An‚(moves�address�of�ACOTBL�to�address?*‡register�n).‚MOVE‚ACOIO(An),Dn‚(ACOIO�is�the�offset�to�data).'ACOIO…DS.Wƒ1’offset�to�start�of�IO�maps"ACONAL„DS.Bƒ1’#�of�CCB's�allocated*ACONMAXƒDS.Bƒ1’max�#�of�CCB's�can�allocate"ACONTRYƒEQU„*’table�entries�followŠOFFSET�ACONTRYACOID…DS.Lƒ1’ACO�module�ID6*‚---ƒ---ƒStart�of�channel�configuration�table‚---ƒ---8*ˆEach�channel�configuration�entry�consists�of�2�fields;/*ˆ(1)�User�ID�(the�user's�TCB�address)�4�bytes.%*ˆ(2)�Channel�configuration,�2�bytes.5*ˆThere�is�space�reserved�for�8�configuration�entries*)ŠDS.Lƒ1’user�task�TCB�address�-�channel�0)ŠDS.Wƒ1’channel�configuration�-�channel�00ŠDS.Bƒ7*6�rest�of�channels�(6�bytes�per�channel)3ACOIDLNG‚EQU„*-ACONTRYŠlength�of�1�ACO�module�entry*‰PAGE ŠOFFSET�0/*‚Offsets�to�fields�within�configuration�table:#ACOTCB„DS.Lƒ1’user�task�TCB�address 4; =H E $ACOCNIFƒDS.Wƒ1’channel�configuration'CHANLNGƒEQU„*’length�of�1�channel�entry*$*‰IO�offsets�within�IO�map�in�ACOTBL*‰one�set�for�each�ACO�module*>*ƒThe�IO�image�map�contains�a�copy�of�the�data�in�the�data�reg*F*ƒBegin�IO�image�map�------------------------------------------------- ŠOFFSET�0&IODDR„DS.Lƒ1’memory�mapped�I/O�address'DODR07ƒDS.Wƒ1’data�output�reg.�chan�0-7$IOLNG„EQU„*’length�of�1�IO�map�entryF*‚End�IO�image�map�---------------------------------------------------*+*‰IO�OFFSETS�within�memory�mapped�I/O�space* ŠOFFSET�0IOADRƒDS.Wƒ1’data�register**ˆDCO�DRIVER�ERROR�CODES*ACODVB„EQU„$F0�device�badACOBSY„EQU„$F1�device�busy,ACOICU„EQU„$F2�invalid�command�for�this�user1ACOCNM„EQU„$F3�invalid�channel�#�for�this�command$ACOINVDƒEQU„$F4�invalid�command�code-ACOMEM„EQU„$F5�no�memory�space�left�in�ACOTBL+ACOICNSƒEQU„$F6�illegal�channel�#�specified.ACOINC„EQU„$F7�invalid�#�of�channels�specified/ACOCNFGƒEQU„$F8�invalid�configuration�specified/ACOICC„EQU„$F9�invalid�command�for�this�channel:ACOMAX„EQU„$FA�exceeded�SYSGEN�specified�number�of�devicesACOIINTƒEQU„$FB�(not�used)#ACONTBLƒEQU„$FC�no�ACO�table�exists'ACONID„EQU„$FD�ACO�module�not�allocated%ACOPND„EQU„$FE�channel�already�opened*!*†---†---…STANDARDƒMACROS…---…---*H*Allocate macro allocates local storage as long words on the stack,(A7).,*Up to 6 variables may be allocated by name.C*These variables may then be referred to by name offset to stack orH*they may be stored to (by macro STORE) and loaded from (by macro LOAD).*3*Prior to exit, the variables must be de-allocated.*ALLOCATE MACRO*B*Allocate reserves storage on the stack for local named variables,8*‚which�are�referred�to�as�an�offset�from�stack�pointer.\1 SET 2‰IFGT�(NARG-1)\2 SET 6‰ENDC‰IFGT�(NARG-2) \3 SET 10‰ENDC‰IFGT�(NARG-3) \4 SET 14‰ENDC‰IFGT�(NARG-4) \5 SET 18‰ENDC‰IFGT�(NARG-5) \6 SET 22‰ENDC*ƒSUB.Lƒ#(NARG*4)+4,A7*ƒENDM*I*LOAD macro allows loading a register from local storage named variables. *The�syntax�is:‚LOAD�Rn,VARNAME.9*The storage is DYNAMICALLY ALLOCATED by macro 'ALLOCATE'* LOAD‚MACRO‰MOVE.L„\2(A7),\1‰ENDM*H*STORE macro allows storing a register to local storage named variables.!*The�syntax�is:‚STORE�Rn,VARNAME.?*The local storage is DYNAMICALLY ALLOCATED by macro 'ALLOCATE'* STORE MACRO‰MOVE.L„\1,\2(A7)‰ENDM**PUSHPOINTŠMACRO‰MOVEM.LƒA0-A6,-(A7)‰ENDM*POP_POINTŠMACRO‰MOVEM.Lƒ(A7)+,A0-A6‰ENDM* PUSHALLŒMACRO‰MOVEM.LƒA0-A6/D0-D7,-(A7)‰ENDM* POPALLƒMACRO‰MOVEM.Lƒ(A7)+,A0-A6/D0-D7‰ENDMJ ééééé*2*‰EQUATES�SPECIFICALLY�FOR�MVM625�DRIVER�(D625.SA)*DCOPEN„EQU„1’OPEN�COMMAND�CODEDCOCLS„EQU„2’CLOSE�COMMAND�CODE"DCOUT…EQU„3’OUTPUT�ON�COMMAND�CODE$DCOOFF„EQU„4’OUTPUT�OFF�COMMAND�CODE"DCOSTA„EQU„5’OUTPUT�STATUS�COMMANDX1ˆEQU„6’(not�used)X2ˆEQU„7’(not�used)"DCOPLS„EQU„8’PULSED�OUTPUT�COMMAND* *‰DCO�COMMAND�PARAMETERS�OFFSETS* ŠOFFSET�0 CMDSTA„DS.Wƒ1’DCO�command�statusCMDCOD„DS.Wƒ1’DCO�command�codeCMDCHN„DS.Wƒ1’#�of�channels CMDNXT„EQU„*ŠOFFSET�CMDNXTNUMCHANƒDS.Wƒ1’channel�number$CHNCNFGƒDS.Wƒ1’channel�configuration4OPNTRY„EQU„*-CMDNXT‹#�of�bytes�for�each�open�channel**‰DCOTBL�OFFSETS8*‰header�information�set�up�during�system�initialization9*‰all�DCO�entries�set�to�$FF�during�system�initialization* ŠOFFSET�0DCOEYE„DS.Lƒ1’!DCO�eye�catcher!DCOLNG„DS.Wƒ1’#�of�bytes�in�table4DCOOFSTƒDS.Wƒ1’offset�to�next�available�DCO-ID�entryB*DCOIO is an offset which points to a location within DCOTBL which<*‡contains�a�value�which�is�the�offset�relative�to�DCOTBL�to6*‡the�IO�image�maps�within�DCOTBL.‚DCOTBL�itself�is�an4*‡absolute�address�set�in�SYSGEN.‚It�is�accessed�by:6*‡MOVE.L‚DCOTBL,An‚(moves�address�of�DCOTBL�to�address?*‡register�n).‚MOVE‚DCOIO(An),Dn‚(DCOIO�is�the�offset�to�data).'DCOIO„DS.Wƒ1’offset�to�start�of�IO�maps"DCONAL„DS.Bƒ1’#�of�CCB's�allocated*DCONMAXƒDS.Bƒ1’max�#�of�CCB's�can�allocate"DCONTRYƒEQU„*’table�entries�followŠOFFSET�DCONTRYDCOID…DS.Lƒ1’DCO�module�ID6*‚---ƒ---ƒStart�of�channel�configuration�table‚---ƒ---8*ˆEach�channel�configuration�entry�consists�of�2�fields;/*ˆ(1)�User�ID�(the�user's�TCB�address)�4�bytes.%*ˆ(2)�Channel�configuration,�2�bytes.5*ˆThere�is�space�reserved�for�8�configuration�entries*)ŠDS.Lƒ1’user�task�TCB�address�-�channel�0)ŠDS.Wƒ1’channel�configuration�-�channel�0 M4 V' ^H0ŠDS.Bƒ7*6�rest�of�channels�(6�bytes�per�channel)3DCOIDLNG‚EQU„*-DCONTRYŠlength�of�1�DCO�module�entry*‰PAGE ŠOFFSET�0/*‚Offsets�to�fields�within�configuration�table:#DCOTCB„DS.Lƒ1’user�task�TCB�address$DCOCNIFƒDS.Wƒ1’channel�configuration'CHANLNGƒEQU„*’length�of�1�channel�entry*$*‰IO�offsets�within�IO�map�in�DCOTBL*‰one�set�for�each�DCO�module*J*ƒThe�IO�image�map�contains�a�copy�of�the�data�in�the�IO�control�&�ddr�rgs*F*ƒBegin�IO�image�map�-----------------------------------K -------------- ŠOFFSET�0&IODDR„DS.Lƒ1’memory�mapped�I/O�address'DODR07ƒDS.Wƒ1’data�output�reg.�chan�0-7$IOLNG„EQU„*’length�of�1�IO�map�entryF*‚End�IO�image�map�---------------------------------------------------*+*‰IO�OFFSETS�within�memory�mapped�I/O�space* ŠOFFSET�0IOADRƒDS.Wƒ1’data�register**ˆDCO�DRIVER�ERROR�CODES*DCODVB„EQU„$F0�device�badDCOBSY„EQU„$F1�device�busy,DCOICU„EQU„$F2�invalid�command�for�this�user1DCOCNM„EQU„$F3�invalid�channel�#�for�this�command$DCOINVDƒEQU„$F4�invalid�command�code-DCOMEM„EQU„$F5�no�memory�space�left�in�DCOTBL+DCOICNSƒEQU„$F6�illegal�channel�#�specified.DCOINC„EQU„$F7�invalid�#�of�channels�specified/DCOCNFGƒEQU„$F8�invalid�configuration�specified/DCOICC„EQU„$F9�invalid�command�for�this�channeléé:DCOMAX„EQU„$FA�exceeded�SYSGEN�specified�number�of�devicesDCOIINTƒEQU„$FB�(not�used)#DCONTBLƒEQU„$FC�no�DCO�table�exists'DCONID„EQU„$FD�DCO�module�not�allocated%DCOPND„EQU„$FE�channel�already�opened*!*†---†---…STANDARDƒMACROS…---…---*H*Allocate macro allocates local storage as long words on the stack,(A7).,*Up to 6 variables may be allocated by name.C*These variables may then be referred to by name offset to stack orH*they may be stored to (by macro STORE) and loaded from (by macro LOAD).*3*Prior to exit, the variables must be de-allocated.*ALLOCATE MACRO*B*Allocate reserves storage on the stack for local named variables,8*‚which�are�referred�to�as�an�offset�from�stack�pointer.\1 SET 2‰IFGT�(NARG-1)\2 SET 6‰ENDC‰IFGT�(NARG-2) \3 SET 10‰ENDC‰IFGT�(NARG-3) \4 SET 14‰ENDC‰IFGT�(NARG-4) \5 SET 18‰ENDC‰IFGT�(NARG-5) \6 SET 22‰ENDC*ƒSUB.Lƒ#(NARG*4)+4,A7*ƒENDM*I*LOAD macro allows loading a register from local storage named variables. *The�syntax�is:‚LOAD�Rn,VARNAME.9*The storage is DYNAMICALLY ALLOCATED by macro 'ALLOCATE'* LOAD‚MACRO‰MOVE.L„\2(A7),\1‰ENDM*H*STORE macro allows storing a register to local storage named variables.!*The�syntax�is:‚STORE�Rn,VARNAME.?*The local storage is DYNAMICALLY ALLOCATED by macro 'ALLOCATE'* STORE MACRO‰MOVE.L„\1,\2(A7)‰ENDM**PUSHPOINTŠMACRO‰MOVEM.LƒA0-A6,-(A7)‰ENDM*POP_POINTŠMACRO‰MOVEM.Lƒ(A7)+,A0-A6‰ENDM* PUSHALLŒMACRO‰MOVEM.LƒA0-A6/D0-D7,-(A7)‰ENDM* POPALLƒMACRO‰MOVEM.Lƒ(A7)+,A0-A6/D0-D7‰ENDMé‰PAGE1************************************************* *�&.ENV.EQ¦*1************************************************* ‰LLEN�120**ˆChip-oriented�equates*‰IFEQ‚CHIPTYPE-680000USERSRƒEQU‡-6ˆDistance�from�stack-top�to�user�SRVORLNGTH�EQU‡0‰Length�of�VOR:INTSTATE�EQU‡8‰Length�of�Bus�error�and�address�error�state‰ENDC‰IFEQ‚CHIPTYPE-680100USERSRƒEQU‡-8ˆDistance�from�stack-top�to�user�SRVORLNGTH�EQU‡2‰Length�of�VOR;INTSTATE�EQU‡50ˆLength�of�Bus�error�and�address�error�state‰ENDK Cééééé f�PAGEÃ1************************************************* *�&.EXE.EQ¦*1*************************************************ééééééé o xN €O ˆA �UL  ‰LLEN�120*Ç*‘**************¨*‘*‚03/28/82‚**Ç*Ç-*ˆDATA�STRUCTURES�AND�EQUATES�FOR�EXEC�CALLS•*Ç*�INTERRUPT�EVENT�(CODE�1)¢*Ç!‰OFFSET�0�START�WITH�ZERO�OFFSET£EVLENGƒDS.B�1�EVENT�LENGTH¬EVCODEƒDS.B�1�EVENT�CODE®EVDATA„EQU�*�VARIABLE�DATA«*Ç/*…INTERRUPT�STRUCTURE�DEFINED�IN�$.XIOEQU.DATA–*Ç*�I/O�COMPLETE�EVENT�(CODE�2)Ÿ*Ç%‰OFFSET�EVDATA�START�OF�VARIABLE�DATAEVIOCBƒDS.L�1�ADDRESS�OF�IOCB©EVIONDƒEQU�*�EVENT�LENGTH­*Ç*�QUEUE�EVENT�(CODE�3)¦*Ç%‰OFFSET�EVDATA�START�OF�VARIABLE�DATAEVQTSKƒDS.L�1�SENDER�TASK�NAME¨$EVQSESƒDS.L�1�SENDER�SESSION�NUMBER£EVQTXTƒEQU�*�MESSAGE�TEXT­*Ç*�TIMER�EVENT�(CODE�4)¦*Ç%‰OFFSET�EVDATA�START�OF�VARIABLE�DATAEVTDATƒDS.L�1�DATE�OF�EVENT«EVTTIMƒDS.L�1�TIME�OF�EVENT=EVTPRMƒEQU�*�EVENT�PARAMETER�LENGTH�IF�NO�UNIQUE�ID�SPECIFIED"EVTUIDƒDS.L†1‰UNIQUE�ACTIVATION�ID EVTTACƒDS.W†1‰ACTIVATION�COUNTER6EVTIDLƒEQU‡*‰EVENT�PARAMETER�BLOCK�LENGTH�IF�UNIQUE�ID *œSPECIFIED*Ç*�SUB�TASK�EVENT�(CODE�5)£*Ç%‰OFFSET�EVDATA�START�OF�VARIABLE�DATAEVSTSKƒDS.L�1�SUB�TASK�NAME«&EVSSESƒDS.L�1�SUB�TASK�SESSION�NUMBER¡ EVSCTNƒDS.L�1�CALLING�TASK�NAME§*EVSCTSƒDS.L�1�CALLING�TASK�SESSION�NUMBER�EVSCODƒDS.B�1�EVENT�SUB�CODEª‰DS.B�1�RESERVED°EVSACDƒDS.W�1�ABORT�CODE®*Ç *ˆEQUATES�FOR�'EVSCOD'�(8�BITS)¢*Ç SEVCNTƒEQU�1�NORMAL�TERMINATION§SEVCABƒEQU�2�ABORTED²SEVCSPƒEQU�3�SUSPENDED°SEVCSTƒEQU�4�STOPPED²5SEVCSRƒEQU�5�STARTED�BY�TASK�OTHER�THAN�MONITOR�TASK’SEVCDLƒEQU�6�DELETED²‰PAGE»*Ç*�ATTENTION�EVENT�(CODE�6)¢*Ç%‰OFFSET�EVDATA�START�OF�VARIABLE�DATA#EVAPRMƒEQU�*�PARAMETER�INFORMATION¤*Ç*�USER/SERVER�EVENT�(CODE�7) *Ç%‰OFFSET�EVDATA�START�OF�VARIABLE�DATA&EVUTINƒDS.B�1�TRAP�INSTRUCTION�NUMBER¡#EVUPRIƒDS.B�1�REQUESTOR'S�PRIORITY¤$EVUTSKƒDS.L�1�REQUESTOR'S�TASK�NAME£)EVUSESƒDS.L�1�REQUESTOR'S�SESSION�NUMBERž&EVUUNMƒDS.W�1�REQUESTOR'S�USER�NUMBER¡&EVURD0ƒDS.L�1�REQUESTOR'S�REGISTER�D0¡&EVURA0ƒDS.L�1�REQUESTOR'S�REGISTER�A0¡!EVUPSTƒDS.B�1�PARAM�BLOCK�STATUS¦ EVUPSZƒDS.B�1�PARAM�BBLOCK�SIZE§EVULENƒEQU�*�LENGTH�OF�MESSAGE¨*Ç *ˆEQUATES�FOR�'EVUTIN'�(8�BITS)¢*Ç'EVTNOSƒEQU‡7‰REQUESTOR�IS�AN�O.S.�TASK’EVTNEOT‚EQU‡6‰EOT�NOTIFICATION›*EVTNEOS‚EQU‡5‰END�OF�SESSION�NOTIFICATION�*Ç *ˆEQUATES�FOR�'EVUPST'�(8�BITS)¢*ÇEVPSTOK‚EQU�0�OK·EVPSTPM‚EQU�1�PART�OF�PB�MOVED©EVPSTBA‚EQU�2�BAD�PB�ADDRESS«EVPSTNR‚EQU�3�PB�NOT�REQUESTED©*Ç *ˆEQUATES�FOR�'EVCODE'�(8�BITS)¢*Ç(EVCIOIƒEQU�1�EVENT�CODE�-�I/O�INTERRUPTŸ'EVCIOCƒEQU�2�EVENT�CODE�-�I/O�COMPLETE &EVCQUEƒEQU�3�EVENT�CODE�-�QUEUE�EVENT¡&EVCTIMƒEQU�4�EVENT�CODE�-�TIMER�EVENT¡)EVCSUBƒEQU�5�EVENT�CODE�-�SUB�TASK�EVENTž*EVCATNƒEQU�6�EVENT�CODE�-�ATTENTION�EVENT�,EVCSRVƒEQU�7�EVENT�CODE�-�USER/SERVER�EVENT›ŠPAGEº*Ç*ŽQUEUE�EVENT�PARAMETER�BLOCKž*Ç!‰OFFSET�0�START�WITH�ZERO�OFFSET£$QEVTSKƒDS.L�1�TASK�TO�RECEIVE�EVENT£"QEVSESƒDS.L�1�TASK�SESSION�NUMBER¥ QEVOPTƒDS.W�1�DIRECTIVE�OPTIONS§&QEVPKTƒDS.L�1�POINTER�TO�EVENT�PACKET¡ QEVIADƒDS.L�1�INTERRUPT�ADDRESS§*Ç!*ˆEQUATES�FOR�'QEVOPT'�(16�BITS)¡*Ç"QVOPASƒEQU�$8000�ADDRESS�SUPPLIED¥*Ç(*ˆEQUATES�FOR�RETURN�FROM�EVENT�OPTIONSš*ÇRVOPENƒEQU�1�ENABLE�ASQ¯*Ç*�CREATE�TCB�PARAMETER�BLOCK *Ç!‰OFFSET�0�START�WITH�ZERO�OFFSET£CRTTSKƒDS.L�1�TASK�NAME¯"CRTSESƒDS.L�1�TASK�SESSION�NUMBER¥CRTOPTƒDS.W�1�OPTIONS±CRTMONƒDS.L�2�MONITOR�TASK¬CRTIPRƒDS.B�1�INITIAL�PRIORITY¨CRTLPRƒDS.B�1�LIMIT�PRIORITYªCRTATTƒDS.W�1�TASK�ATTRIBUTES©CRTENTƒDS.L�1�TASK�ENTRY�POINT¨"CRTUIDƒDS.W�1�USER�ID�OF�NEW�TASK¥*Ç!*ˆEQUATES�FOR�'CRTOPT'�(16�BITS)¡*Ç#CTOPMSƒEQU�$8000�MONITOR�SPECIFIED¤$CTOPMPƒEQU�$4000�MONITOR�PROPAGATED£*Ç!*ˆEQUATES�FOR�'CRTATT'�(16�BITS)¡*ÇCTATSTƒEQU�$8000�SYSTEM�TASKª!CTATMRƒEQU�$4000�MEMORY�RESIDENT¦*Ç*‹START�TASK�PARAMETER�BLOCK¢*Ç!‰OFFSET�0�START�WITH�ZERO�OFFSET£STRTSKƒDS.L�1�TASK�NAME¯"STRSESƒDS.L�1�TASK�SESSION�NUMBER¥STROPTƒDS.W�1�OPTIONS±STRMONƒDS.L�2�MONITOR�TASK¬STRREGƒDS.L�15�REGISTERS®*Ç!*ˆEQUATES�FOR�'STROPT'�(16�BITS)¡*Ç#STOPMSƒEQU�$8000�MONITOR�SPECIFIED¤L $STOPMPƒEQU�$4000�MONITOR�PROPAGATED£$STOPRGƒEQU�$2000�REGISTERS�SUPPLIED£‰PAGE»*Ç#*ŒSEGMENT�DIRECTOR�PARAMETER�BLOCK›*Ç!‰OFFSET�0�START�WITH�ZERO�OFFSET£&SEGTCBƒDS.L�1�TASK�TO�RECEIVE�SEGMENT¡"SEGSESƒDS.L�1�TASK�SESSION�NUMBER¥SEGOPTƒDS.W�1�OPTIONS±SEGATT�DS.W�1�ATTRIBUTES°SEGNAMƒDS.L�1�SEGMENT�NAME¬)SEGLADƒDS.L�1�LOGICAL�ADDRESS�OF�SEGMENTž+SEGLENƒDS.L�1�LENGTH�(IN�BYTES)�OF�SEGMENTœ*SEGPTRƒDS.L�1�POINTER�TO�RECEIVING�BUFFER�*Ç'*ˆRECEIVING�BUFFER�FOR�'REC.SEG.ATTR.'›*Ç ‰OFFSET‚0SRENAMƒDS.L�1�SEGMENT�NAME¬SREATTƒDS.W�1�ATTRIUBTES®$SRELSAƒDS.L�1�LOGICAL�START�ADDRESS£"SRELEAƒDS.L�1�LOGICAL�END�ADDRESS¥SREPADƒDS.L�1�PHYSICAL�ADDRESS¨SRELENƒEQU�*�LENGTH³*Ç!*ˆEQUATES�FOR�'SEGATT'�(16�BITS)¡*ÇSGATROƒEQU�$4000�READ�ONLY¬SGATRWƒEQU�0�READ�/�WRITE­"SGATSSƒEQU�$2000�SESSION�SHARABLE¥"SGATNSƒEQU�0�NOT�SESSION�SHARABLE¥#SGATGSƒEQU�$1000�GLOBALLY�SHARABLE¤#SGATNGƒEQU�0�NOT�GLOBALLY�SHARABLE¤&SGATDPƒEQU�$800�SEGMENT�IS�DUPLICATED¡'SGATNDƒEQU�0�SEGMENT�IS�NOT�DUPLICATED /SGATSDƒEQU�$400�SEGMENT�SHARABLE�IF�DUPLICATED˜0SGATNNƒEQU�0�SEGMENT�NOT�SHARABLE�IF�DUPLICATED—*Ç!*ˆEQUATES�FOR�'SEGOPT'�(16�BITS)¡*Ç9SGOPAT�EQU�$8000�15�ATTRIBUTES�GIVEN:�TRSEG,DCLSHR,SETSA�BSGOPLA�EQU�$4000�14�LOGICAL�ADDRESS�(NOT�NAME):�TRSEG,SETSA,RCVSA‡ESGOPPA�EQU�$2000�13�SET�LOGICAL�ADDR.=PHYSICAL�ADDR.(RET�ADR�IN�A0):„"*¡GTSEG,TRSEG,ATTSEG,SHRSEG,SETSA‡1SGOPSP�EQU�$1000�12�MAKE�PERMANENT:�DCLSHR,SETSA˜9SGOPRP�EQU�$0800�11�REMOVE�PERMANENT�STATUS:�DESEG,SETSA�2SGOPSL�EQU�$0400�10�SEGMENT�LENGTH:�SHRSEG,ATTSEG—‰PAGE»*Ç**�MOVE�LOGICAL�TO�LOGICAL�PARAMETER�BLOCK“*Ç!ŠOFFSET�0�START�WITH�ZERO�OFFSET¢MVSTSKƒDS.L�1�SOURCE�TASK­%MVSSESƒDS.L�1�SOURCE�SESSION�NUUMBER¢%MVSADDƒDS.L�1�SOURCE�LOGICAL�ADDRESS¢MVDTSKƒDS.L�1�DESTINATION�TASK¨)MVDSESƒDS.L�1�DESTINATION�SESSION�NUMBERž*MVDADDƒDS.L�1�DESTINATION�LIGICAL�ADDRESS�MVLENGƒDS.L�1�LENGTH²*Ç*�ALLOCATE�ASQ�PARAMETER�BLOCKž*Ç!‰OFFSET�0�START�WITH�ZERO�OFFSET£ASQTSKƒDS.L�1�TASK�NAME¯"ASQSESƒDS.L�1�TASK�SESSION�NUMBER¥$ASQSTAƒDS.B�1�INITIAL�STATUS�OF�ASQ£%ASQMMLƒDS.B�1�MAXIMUM�MESSAGE�LENGTH¢&ASQQLNƒDS.L�1�QUEUE�LENGTH�(IN�BYTES)¡ASQASRƒDS.L�1�ADDRESS�OF�ASRª*Ç *ˆEQUATES�FOR�'ASQSTA'�(8�BITS)¢*ÇAQSTQDƒEQU�0�ASQ�DISABLED­AQSTQEƒEQU�1�ASQ�ENABLED®AQSTMDƒEQU�0�MESSAGE�DISABLED©AQSTMEƒEQU�2�MESSAGE�ENABLEDªAQSTRDƒEQU�0�ASR�DISABLED­AQSTREƒEQU�4�ASR�ENABLED®*Ç&*�REQUEST�TASK�ATTRIBUTES�PARAM�BLOCK—*Ç!ŠOFFSET�0�START�WITH�ZERO�OFFSET¢TATTIDƒDS.L�1�TASK�ID±TATSESƒDS.L�1�TASK�SESSION¬*Ç*ˆSET�PRIORITY³*Ç ‰OFFSET�0ºSPRTSKƒDS.L�1�TASK´SPRSESƒDS.L�1�SESSION±SPRPRIƒDS.B�1�PRIORITY°‰DS.B�1�RESERVED°*Ç*DATE�AND�TIME�ROUTINES±*Ç �OFFSET�0ÂGTDATE�DS.L�1�DATE¶GTTIME�DS.L�1�TIME¶‰PAGE»*Ç#*�ESTABLISH�SERVER�PARAMETER�BLOCKš*Ç!‰OFFSET�0�START�WITH�ZERO�OFFSET£*Ç&SRVADRƒDS.L�1�REQUEST�SERVICE�ADDRESS¡*SRVTRPƒDS.B�1�TRAP�INSTRUCTION�IDENTIFIER�!SRVPLNƒDS.B�1�PARAM�BLOCK�LENGTH¦*Ç*ˆEQUATES�FOR�SRVTRP�(8�BITS)¤*Ç)SRTREOT‚EQU�$40�END�OF�TASK�NOTIFICATIONŸ%SRTRPRM‚EQU�$20�MOVE�PARAMETER�BLOCK£*Ç.*�ACKNOWLEDGE�SERVICE�REQUEST�PARAMETER�BLOCK�*Ç!‰OFFSET�0�START�WITH�ZERO�OFFSET£ACKTSKƒDS.L�1�TASK�NAME¯"ACKSESƒDS.L�1�TASK�SESSION�NUMBER¥ACKOPTƒDS.W�1�OPTIONS±ACKTINƒDS.B�1�TRAP�NUMBER­ACKCCDƒDS.B�1�CONDITION�CODEªACKRD0ƒDS.L�1�REGISTER�D0­ACKRA0ƒDS.L�1�REGISTER�A0­*Ç!*‰EQUATES�FOR�'ACKOPT'�(16�BITS) *ÇAKOPSCƒEQU�$4000�SET�CC¯AKOPLCƒEQU�0�LEAVE�CC±AKOPSDƒEQU�$2000�SET�D0¯AKOPLDƒEQU�0�LEAVE�D0±AKOPSAƒEQU�$1000�SET�A0¯AKOPLAƒEQU�0�LEAVE�A0±%AKOPRTƒEQU�$800�REACTIVATTE�THE�TASK¢AKOPWTƒEQU�$400�WAIT�THE�TASK©!AKOPSTƒEQU�$200�SUSPEND�THE�TASK¦"AKOPAAƒEQU�$100�ACK.�ALL�REQUESTS¥*Ç-*ˆEQUATES�FOR�SET�USER/SERVER�REQUEST�STATUS•*ÇAKRSERƒEQU�$80�ENABLE�REQUEST©‰PAGE»*Ç%*ŽSEMAPHORE�DIRECTOR�PARAMETER�BLOCK—*Ç!‰OFFSET�0�START�WITH�ZERO�OFFSET£SEMNAMƒDS.L�1�SEMAPHORE�NAMEªSEMKEYƒDS.L�1�SEMAPHORE�KEY«SEMCNTƒDS.B�1�INITIAL�COUNT«SEMTYPƒDS.B�1�SEMAPHORE�TYPEªM �PAGEÃ1************************************************* *�&.FME.EQ¦*1*************************************************ééééééé ˜ ¡E ©@ ± ‰LLEN�120·**ˆFILE:�FME.SA*"FABMAX�EQU�20�MAXIMUM�SIZE�OF�FAB§(DATMIN�EQU�4�MIMIMUM�SIZE�OF�DATA�BLOCK¡"MACSCDE1�EQU�'EXOR'�MACSS�DISK�ID§MACSCDE2�EQU�'MACS'µSECSZEƒEQU‡256‡SECTOR�SIZE**"*…DATA�STRUCTURES�EQUATES�FOR�FMS£ *Š01/28/80µ*Ç***Ç*DIRECTORY�BLOCK�EQUATES°*Ç �OFFSET�0Â2DIRFPT�DS.L�1�POINTER�TO�NEXT�DIRECTORY�BLOCK�STA—+DIRUSN�DS.W�1�USER�NO.�FOR�THIS�DIR.�BLOCKž/DIRCLG�DS.L�2�CATALOG�NAME�FOR�THIS�DIR.�BLOCKš�DS.B�2�RESERVED¸ DIRSTR�EQU�*�START�OF�1ST�ENTRY©!DBSZE�EQU�4�DIRECTORY�BLOCK�SIZE¨** '*�DIRECTORY�ENTRY�(DIR)�DATA�STRUCTURE–*Ç!‰OFFSET�0�START�WITH�ZERO�OFFSET£DIRFILƒDS.L�2�FILENAME°FILLENƒEQU�*-DIRFIL³DIREXTƒDS.W�1�EXTENSION¯EXTLENƒEQU�*-DIREXT³5DIRRS1ƒDS.W�1�RESERVED�(2�BYTE�GENERATION�DATA�SET?)’2DIRFS�DS.L�1�FILE�STARTING�PSN�OR�1ST�FAB�POINTER—@DIRFE�DS.L�1�PHYSICAL�END�OF�FILE�LSN�OR�LAST�FAB�POINTER�(PSN)‰7*ˆTHE�FOLLOWING�TWO�FIELDS�MUST�BE�IN�GIVEN�ORDER�ELSE‹*ˆCODE�HAS�TO�BE�CHANGED©&DIREOFƒDS.L�1�LOGICAL�END�OF�FILE�LSN¡0DIREORƒDS.L�1�END�OF�FILE�LOGICAL�RECORD�NUMBER— DIRWCDƒDS.B�1�WRITE�ACCESS�CODE§DIRRCDƒDS.B�1�READ�ACCESS�CODE¨DIRATTƒDS.B�1�ATTRIBUTES®;DIRLBZ�DS.B�1�LAST�DATA�BLOCK�SIZE�(TRUCATED�IF�<>�DIRDSZ)Ž%DIRLRLƒDS.W�1�RECORD�SIZE�(0�IF�VRL)¢DIRRS2�DS.B�1�RESERVED²'DIRKEYƒDS.B�1�KEY�SIZE�(0�IF�NON-ISAM) DIRFABƒDS.B�1�FAB�SIZE°DIRDATƒDS.B�1�DATA�BLOCK�SIZE©(DIRDTEC DS.W 1 DATA FILE CREATED/UPDATED'DIRDTEA�DS.W�1�LAST�DATE�FILE�ASSIGNED¢=DIRRS3ƒDS.L�2�RESERVED�(4�BYTE�DATA�BLOCK�PSN�LIST�POINTER?)ŠDIRLENƒEQU�*�DIR.�ENTRY�LENGTH¨ADIRENT�EQU�(DBSZE*SECSZE-DIRSTR)/DIRLEN�NO.�OF�DIR�ENTRIES/BLOCKˆ*Ç*DIRATT�EQUATES¹*FILE�TYPE�FIELD�(BITS�0-2)­ DFTBIT�EQU�7�BITS�FOR�FILE�TYPE©DATCON�EQU�0�CONTIGUOUS±"DATSEQ�EQU�1M �SEQUENTIAL�(VRL/FRL)§,DATISK�EQU�2�KEYED�ISAM,�NO�DUPLICATE�KEYES�)DATISD�EQU�3�KEYED�ISAM,�DUPLICATE�KEYES *Ç$*USER�DEFINED�ATTRIBUTES�(BITS�7-4)¥0DUSBIT�EQU�$F0�BITS�FOR�USER�DEFINED�ATTRIBUTES™�PAGEÃ*Ç#*SECONDARY�DIRECTORY�BLOCK�EQUATES¦*Ç �OFFSET�0Â/SDBFPT�DS.L�1�POINTER�TO�NEXT�SDB�(=0�IF�NONE)š�DS.B�12�RESERVED· SDBSTR�EQU�*�START�OF�1ST�ENTRY©,SDBSZE�EQU�1�SECONDARY�DIRECTORY�BLOCK�SIZE�*Ç0*SECONDARY�DIRECTORY�ENTRY�(SDB)�DATA�STRUCTURE™*Ç�OFFSET�0�START�WITH�0�OFFSET®SDBUSN�DS.W�1�USER�NUMBER¯USNLEN�EQU�*-SDBUSNµSDBCLG�DS.L�2�CATALOG�NAME®CLGLEN�EQU�*-SDBCLGµ+SDBFLN�EQU�*�LENGTH�OF�INFORMATION�FOR�FCBžDSDBPDP�DS.L�1�PSN�OF�1ST�PDB�FOR�CATALOG�(=0�IF�EMPTY�ENTRY�IN�SDB)…%SDBACT�DS.B�1�SDB�ENTRY�ACCESS�COUNT¤SDBRS1�DS.B�1�RESERVED²!SDBLEN�EQU�*�LENGTH�OF�SDB�ENTRY¨HSDBENT EQU (SDBSZE*SECSZE-SDBSTR)/SDBLEN NO. OF SEC. DIR. ENTRIES/BLOCK ‰PAGE»*Ç3*�VOLUME�IDENTIFICATION�BLOCK�(VID)�DATA�STRUCTUREŠ*Ç!‰OFFSET�0�START�WITH�ZERO�OFFSET£VIDVOLƒDS.L�1�VOLUME�ID¯VOLLEN�EQU�*-VIDVOLµVIDUSNƒDS.W�1�USER�NUMBER­/VIDSAT�DS.L�1�START�OF�SECTOR�ALLOCATION�TABLEš0VIDSALƒDS.W�1�LENGTH�OF�SECTOR�ALLOCATION�TABLE—#VIDSDS�DS.L�1�SECONDARY�DIR.�START¦/VIDPDL�DS.L�1�PRIMARY�DIRECTORY�PSN�LIST�STARTš(VIDEOD EQU * LENGTH OF FMS REQUIRED DATAVIDOSSƒDS.L�1�OS�OR�BOOT�STARTVIDOSLƒDS.W�1�OS�OR�BOOT�LENGTH!VIDOSE�DS.L�1�OS�EXECUTION�ADDR.¨VIDOSA DS.L 1 OS LOAD ADDR.VIDDTE DS.L 1 GENERATION DATEVIDVD DS.L 5 VOLUME DESCRIPTOR$VIDVNO DS.L 1 INIT. VERSION/REVISIONVIDCHK DS.W 1 VID CHECKSUM&VIDDTP DS.B 64 DIAGNOSTIC TEST PATTERN"VIDDTA DS.L 1 DIAG. TEST AREA DIR. VIDDAS DS.L 1 START OF DUMP AREA!VIDDAL DS.W 1 LENGTH OF DUMP AREA+VIDSLT DS.L 1 START OF SECTOR LOCKOUT TABLE,VIDSLL DS.W 1 LENGTH OF SECTOR LOCKOUT TABLE)VIDCAS DS.L 1 START OF CONFIGURATION AREA*VIDCAL DS.B 1 LENGTH OF CONFIGURATION AREA,VIDIPC DS.B 1 IPC INITIALIZED DISK TYPE CODEVIDRS1L EQU 98VIDRS1 DS.B VIDRS1L RESERVED1VIDMAC DS.L 2 SPECIAL CODE TO INDICATE MACSS DISK VIDLEN�EQU�*¼*Ç*Ç VIDDA�EQU�0�DISK�ADDRESS�OF�VID©‰PAGE»*Ç)*‚FILE�ACCESS�BLOCK�(FAB)�DATA�STRUCTUREŸ*Ç‚OFFSET�0�FAB�HEADER¶@FABFLK�DS.L�1�FORWARD�LINK�(PSN)�TO�NEXT�FAB,�0�=>�END�OF�CHAIN‰BFABBLK�DS.L�1�BACKWARD�LINK�(PSN)�TO�PREVIOUS�FAB,�0�=>�FIRST�FAB‡HFABUSE DS.B 1 FRACTIONS OF FAB IN USE: 0 THRU 16 16THS IN USE (0=>EMPTY);FABPKY�DS.B�1�BCT�OF�NEXT�FIELD:�0�=�NULL�FIELD,�OTHERWISEŽ7*…LAST�KEY�OF�PREVIOUS�FAB�IF�ANY�(ZERO�FOR�FISRT�FAB)ŽHFABSEG EQU * OFFSET TO FIRST SEGMENT DESCRIPTOR (SD) FOR NON-ISAM FILES #*‚A�SEGMENT�DESCRIPTOR�LOOKS�LIKE:¥�OFFSET�0�FAB�ENTRY�EQUATES°*‚BITS�31-28�USED�FOR�FLAGS:«;FABPSN‚DS.L�1�PSN�OF�FIRST�SECTOR�ALLOCATED�TO�THE�SEGMENT�"FABMSK�EQU�$0FFFFFFF�MASK�FOR�PSN§#FABBIT EQU $F0000000 BIT FIELD MASK8FABDAT�EQU�0�BITS�31-28�=�0�=>�PSN�POINTS�TO�DATA�BLOCK‘@FABFAB EQU $80000000 BITS 31-28 = 8 => PSN POINTS TO ANOTHER FAB.FABREC�DS.W�1�NUMBER�OF�RECORDS�IN�DATA�BLOCK›1FABSGS�DS.B�1�#�OF�SECTORS�IN�USE�IN�THE�SEGMENT˜EFABKEY�DS.B�1�LENGTH�OF�NEXT�FIELD,�0�IF�NULL�FIELD,�ELSE�AT�LEAST�4„,FABSSL�EQU�*�SD�LENGTH�FOR�SEQUENTIAL�FILES�A*�SD�LENGTH�IS�VARIABLE�FOR�ISAM�FILES,�KEY�FOLLOWS�FABKEY�FIELDˆ*ÇéééN é‰PAGE»1************************************************* *�&.FMI.EQ¦*1*************************************************ééééééé ¹ Â= Ê2 Ò6 ÚJ â ***…INTERNAL�FMS�EQUATES® *Š5/21/80¶*Ç*Ç*GENERAL�EQUATES¸*Ç4NL�EQU�$FFFFFF00�NEGATIVE�LONG�WORD�FOR�ERROR�CODES•8FEVTLN EQU EVTLEN+FHSNLN LENGTH OF MAXIMUM FMS ASQ ENTRY KEYMIN�EQU�4�MINIMUM�KEY�LENGTH©6KEYMAX�EQU�100�MAXIMUM�KEY�LENGTH�(2�MUST�FIT�IN�FAB)“(BCTFLD�EQU�2�LENGTH�OF�BYTE�COUNT�FIELD¡+SATSZE�EQU�1�NO.�OF�MEMORY�BUFFERS�FOR�SATž.SPOOLF�EQU�$40�'@'-1ST�CHAR.�FOR�SPOOLER�FILE›+TEMPF�EQU�$26�'&'-1ST�CHAR.�FOR�TEMP.�FILEž&FMSD�EQU�'FMSD'�FMS�DATA�SEMGNET�NAME£@*FILE�ATTRIBUTES-ALL�BUF�INTERACTIVE�AND�HALT�I/O�AND�FILE�MARK‰FILEATT�EQU�$5F¹"STKSZE�EQU�256�SIZE�OF�STACK�AREA§�PAGEÃ*Ç/*�VOLUME�DESCRIPTOR�TABLE�(VDT)�DATA�STRUCTUREŽ*Ç!‰OFFSET�0�START�WITH�ZERO�OFFSET£VDTDCB�DS.L�1�DCB�ADDRESS¯$VDTVID�DS.B�VIDEOD�VID�DEFINED�DATA¥!VDTSMA�DS.L�1�SAT�MEMERY�ADDRESS¨,VDTSME�DS.L�1�SAT�MEMORY�BLOCK�PHYSICAL�END�(VDTSMD�DS.L�1�SAT�MEMORY�BLOCK�DATA�END¡)VDTSMB�DS.L�1�PSN�OF�SAT�BLOCK�IN�MEMORY -VDTDMA�DS.L�1�PRIM�DIRECTORY�MEMTORY�ADDRESSœ*VDTDME�DS.L�1�PRIM.�DIR.�MEMORY�BLOCK�ENDŸ5VDTDMB�DS.L�1�PSN�OF�PRIM.�DIRECTORY�BLOCK�IN�MEMORY”'VDTSDA�DS.L�1�SEC.�DIR.�MEMORY�ADDRESS¢)VDTSDE�DS.L�1�SEC.�DIR.�MEMORY�BLOCK�END 4VDTSDB�DS.L�1�PSN�OF�SEC.�DIRECTORY�BLOCK�IN�MEMOYR•(VDTTMA�DS.L�1�START�OF�TEMPORARY�BUFFER¡&VDTTME�DS.L�1�END�OF�TEMPORARY�BUFFER£!VDTWCT�DS.W�1�VOLUME�WRITE�COUNT¨ VDTRCT�DS.W�1�VOLUME�READ�COUNT©VDTFLG�DS.W�1�FLAG¶'VDTIOS�DS.B�IOSNLN�IOS�PARAMETER�BLOCK¢"VDTSSP�DS.L�1�SAVED�STACK�POINTER§�DS.B�STKSZE�STACK�AREA±VDTSTK�EQU�*-4N �START�OF�STACK«VDTLEN�EQU�*�LENGTH�OF�VDT®*Ç *VDTFLG�BITS¼*Ç.VDFLSB�EQU�0�BIT�0=1�->�SAT�IN�MEMORY�CHANGED›3VDFLDB�EQU�1�BIT�1=1�->�PRIM.�DB�IN�MEMORY�CHANGED–2VDFLCB�EQU�2�BIT�2=1�->�SEC.�DB�IN�MEMORY�CHANGED—0VDFLBB�EQU�3�BIT�3=1�->�DEVICE�IS�BUSY�WITH�I/O™,VDFLTB EQU 4 BIT 4=1 -> TEMP. BUFFER ALTERED)VDFLNW EQU 5 BIT 5=1 -> DISK NOT WRITABLE‰PAGE»*Ç**�FILE�CONTROL�BLOCK�(FCB)�DATA�STRUCTURE“*Ç!‰OFFSET�0�START�WITH�ZERO�OFFSET£#FCBVDT�DS.L�1�ADDRESS�OF�VDT�ENTRY¦<*KEEIP�FCBDCQ�AND�FCBFLG�AT�BEGINNING�SINCE�USED�BY�IOS�FOR�*…CONNECTION�WAIT³FCBDCQ�DS.L�1�POINTER�TO�DCQ¬FCBFLG�DS.W�1�FLAG�WORD±3FCBSDB�DS.B�SDBFLN�USER�NO./CATALOG�FROM�SDB�ENTRY–)FCBDIR�DS.B�DIRLEN�DIRECTORY�ENTRY�IMAGE "FCBDBP�DS.L�1�DIRECTORY�BLOCK�PSN§%FCBDBO�DS.W�1�DIRECTORY�BLOCK�OFFSET¤(FCBSDBP�DS.L�1�SECONDARY�DIR.�BLOCK�PSN¡*FCBSDBO�DS.W�1�SECONARY�DIR.�BLOCK�OFFSETŸ3*MUST KEEP FCBWCT AND FCBRCT TOGETHER IN THAT ORDERFCBWCT�DS.W�1�FILE�WRITE�COUNTªFCBRCT�DS.W�1�FILE�READ�COUNT«FCBLEN�EQU�*�FCB�LENGTH±*Ç *FCBFLG�BITS¼*Ç@FCFLDB�EQU�0�BIT�0=1�->�DIR.�INFO.�CHANGED�IN�FCB�(CALL�UPTDIR)‰DFCFLWB�EQU�1�BIT�1=1�->�VOLUME�WRITE�OCCURRED�(CAN'T�DO�FETCH�DIR.)…AFCFLCB�EQU�2�BIT�2=1�->�DEVICE�STATUS�CHANGE-FILE�MUST�BE�CLOSEDˆ@FCFLUB�EQU�3�BIT�3=1�->�UNRECOVERABLE�ERROR-FILE�MUST�BE�CLOSED‰.FCFLBB�EQU�4�BIT�4=1�->�FILE�IS�BUSY�WITH�I/O›4FCFLOB�EQU�5�BIT�5=1�->�FILE�OVERWRITE�HAS�OCCURRED•‰PAGE»*Ç-*�FILE�ASSIGNMENT�TABLE�(FAT)�DATA�STRUCTURE�*Ç!‰OFFSET�0�START�WITH�ZERO�OFFSET£FATFCB�DS.L�1�FCB�POINTER¯FATTSK�DS.L�1�CALLER�TASK�ID¬FATSES�DS.L�1�CALLER�SESSION¬FATLUE�DS.L�1�LUN�ENTRY±%FATLUT�DS.L�1�START�OF�LUT�THIS�TASK¤,FATIOS�DS.B�IOSBLN�COPY�OF�USER�I/O�REQUEST�(FATUPB�DS.L�1�USER�PARAMETER�BLOCK�ADDR¡,FATCLR�DS.L�1�CURRENT�LOGICAL�RECORDS'S�LRN�HFATCLS DS.L 1 CURRENT LOGICAL SECTOR (1ST SECTOR OF CURRENT DATA BLOCK) (FATBCT�DS.L�1�NO.�OF�BLOCKS�TRANSFERRED¡:*ˆTHE�NEXT�5�FIELDS�MUST�BE�IN�THE�GIVEN�ORDER,�ELSE�CODEˆ*ˆHAS�TO�BE�CHANGED®0FATFAA�DS.L�1�FAB�MEMORY�BLOCK�STARTING�ADDRESS™#FATFAE�DS.L�1�FAB�MEMORY�BLOCK�END¦#FATFAB�DS.L�1�PSN�OF�FAB�IN�MEMORY¦FFATCFP�DS.L�1�CURRENT�FAB�ENTRY�POINTER�(->�CURRENT�DATA�BLOCK�INFO.)ƒ4FATKEY�DS.L�1�POINTER�TO�LAST�FAB�ENTRY'S�KEY�FIELD•6*ˆTHE�NEXT�6�FIELDS�MUST�BE�IN�GIVEN�ORDER,�ELSE�CODEŒ*ˆHAS�TO�BE�CHANGED®%FATFLS�DS.L�1�1ST�LSN�OF�CURRENT�FAB¤8FATFLR�DS.L�1�1ST�LOGICAL�RECORD�NUMBER�FOR�CURRENT�FAB‘.FATSLS�DS.L�1�STARTING�LSN�OF�CURRENT�SEGMENT›9FATSLR�DS.L�1�STARTING�LOGICAL�RECORD�OF�CURRENT�SEGMENT�&FATLLS�DS.L�1�LAST�LSN�OF�CURRENT�FAB£&FATLLR�DS.L�1�LAST�LRN�OF�CURRENT�FAB£*Ç%FATBSN DS.L 1 SEGMENT NAME FOR BUFFER3FATSLA�DS.L�1�USER'S�BUFFER�STARTING�LOGICAL�ADDR.–>*ˆTHE�NEXT�3�FIELDS�MUST�BE�IN�THE�GIVEN�ORDER,�ELSE�CODE�HAS„*ˆHAS�TO�BE�CHANGED®+FATSBS�DS.L�1�SECTOR�BUFFER�STARTING�ADDR.ž(FATSBL�DS.L�1�SECTOR�BUFFER�LOGICAL�END¡(FATSBE�DS.L�1�SECTOR�BUFFER�ENDING�ADDR¡*Ç(FATDBP�DS.L�1�FETCH�NEXT�DIR.�BLOCK�PSN¡+FATDBO�DS.W�1�FETCH�NEXT�DIR.�BLOCK�OFFSETž-FATSDBP�DS.L�1�FETCH�NEXT�DIR.�ENTRY�SDB�PSNœ0FATSDBO�DS.W�1�FETCH�NEXT�DIR.�ENTRY�SDB�OFFSET™6FATASN�DS.W�1�ASSGN.�OPTION�(OVERWRITE/SHARED�BUFFER)“FATFLG�DS.W�1�FLAG�WORD±FATLEN�EQU�*�FAT�LENGTH±*Ç *FATFLG�BITS¼*Ç2FAFLSB�EQU�0�BIT�0=1�->�FMS�SECTOR�BUFFER�CREATED—(FAFLSBV�EQU�1�VALUE�ASSOCIATED�WITH�BIT¡3FAFLBB�EQU�1�BIT�1=1�->�1ST�I/O�WAS�BLOCK�TRANSFER–FAFLBBV�EQU�2»4FAFLRB�EQU�2�BIT�2=1�->�1ST�I/O�WAS�RECORD�TRANSFER•FAFLRBV�EQU�4»>FAFLFB�EQU�3�BIT�3=1�->�FAB�IN�MEMORY�CHANGED�-‚TO�BE�UPDATEDŠFAFLFBV�EQU�8»5FAFLDB�EQU�4�BIT�4=1�->�DATA�BLOCK�IN�MEMORY�CHANGED”FAFLDBV�EQU�$10¹DFAFLUB�EQU�5�BIT�5=0/1�->�DON'T�UPDATE/UPDATE�FAB�ENTRY�ON�WRITE�DB…FAFLUBV�EQU�$20¹BFAFLCB�EQU�6�BIT�6=0/1�->�DON'T�CHECK/CHECK�FAB�ENTRY�ON�WRITE�DB‡FAFLCBV�EQU�$40¹-FAFLKB�EQU�7�BIT�7=1�->�LAST�FAB�KEY�CHANGEDœFAFLKBV�EQU�$80¹0FAFLLB�EQU�8�BIT�8=1�->�LAST�I/O�WAS�FOR�DELETE™FAFLLBV�EQU�$100¸HFAFLIB EQU 9 BIT 9=1 -> INPUT FAB DURING GETFDB, TRY TO MERGO E W/NEXT FABFAFLIBV�EQU�$200¸5FAFLMB�EQU�10�BIT�10=1�->�NEXT�FAB�TOO�BIG�FOR�MERGE”FAFLMBV�EQU�$400¸'*�DATA�BLOCK�AND�FAB�MERGE�PARAMETERS:¢/DATFRC�EQU�3�CURRENT�DB�.LE.�1/3�FULL�TO�MERGEš?DATFRN�EQU�2�NEXT�DATA�BLOCK�1/2�FULL�FOR�MERGE,�IF�MORE�DON'TŠEFABFRC�EQU�3�CURRENT�FAB�FRACTION�IN�USE�-1/3�=>�MERGE,�MORE�=�DON'T„?FABFRN�EQU�8�NEXT�FAB�8/16TH�FULL�OR�LESS�=>�MERGE,�ELSE�DON'TŠ�PAGEÃ*Ç*PDB�PSN�LIST�BLOCK�EQUATES­*Ç �OFFSET�0Â9PDLFPT�DS.L�1�POINTER�TO�NEXT�PDB�PSN�BLOCK�(=0�IF�NONE)�"PDLSTR�EQU�*�PSN�FOR�A�DIR.�BLOCK§1PDLSZE�EQU�1�SIZE�OF�PDB�LIST�BLOCK�(IN�SECTORS)˜"PDLLEN�EQU�4�LENGTH�OF�EACH�ENTRY§;PDLENT EQU (PDLSZE*SECSZE-PDLSTR)/PDLLEN NO. OF PSN'S/BLOCK‚PAGEÂ*Ç*Ç7*‚FILE�ALLOCATION/DEALLOCATION�(FBALLC/FBDEAL)�EQUATES‘*Ç*Ç*‚GETFDB�DIRECTIVES�IN�D1.L:«(*‚(�USED�TO�GET�OFFSET�INTO�JUMP�TABLE) *Ç*…DIRECTIVE�IN�BITS�0-5­.LSNFDB�EQU�0�FAB�CORRESPONDING�TO�LSN�IN�D0.L›.LRNFDB�EQU�1�FAB�CORRESPONDING�TO�LRN�IN�D0.L›GKEYFDB�EQU�2�FAB�CORRESPONDING�TO�KEY�POINTED�TO�BY�D0.L�(BCT�IN�D2.B)‚PGTFDB�EQU�3�PARTIAL�KEY�(>)¬PGETDB�EQU�4�PARTIAL�KEY�(>=)«PLTFDB�EQU�5�PARTIAL�KEY�(<)¬6*…BIT�7�USED�TO�INDICATE�IF�DATA�BLOCK�SHOULD�BE�READ�)RDBFLGB�EQU�7�BIT�7=1�->�READ�DATA�BLOCK RDBFLG�EQU�$80º%*…BIT�6�USED�TO�INHIBIT�LSN/EOF�TEST ;EOFFLGB�EQU�6�BIT�6=1�->�DON'T�COMPARE�GIVEN�LSN�TO�DIREOFŽEOFFLG�EQU�$40º�PAGEÃ*Ç*DEFAULT�VOLUME�EQUATES±*Ç �OFFSET�0ÂDEFVOL�DS.L�1�DEFAULT�VOLUME¬%DEFTYP�DS.L�1�TYPE�OF�DEFAULT�VOLUME¤!DVLEN�EQU�*�LENGTH�OF�EACH�ENTRY¨*Ç*VALUES�FOR�DEFAULT�TYPE°*Ç SYSDEF�EQU�'SYST'�SYSTEM�VOLUME©TMPDEF�EQU�'TEMP'�TEMP.�VOLUMEª"SPLDEF�EQU�'SPOL'�SPOOLER�VOLUME'§�PAGEÃ*Ç7*MACRO�TO�SET�IOS�PARAMETER�BLOCK�FUNCTION�AND�OPTIONS’*…PARAMETERS:·*…1�-�FUNCTION¶*…2�-�OPTIONS·-*…3�-�EFFECTIVE�ADDR.�OF�IOS�PARAMETER�BLOCK˜ SETFO�MACRO½! MOVE.L #(\1*$10000)+\2,IOSFCT+\3�ENDMÃ<*‚SETRFO�SAME�AS�SETFO�EXCEPT�FIRST�PARAMETER�IN�A�REGISTERŒ SETRFO�MACRO¼�SWAP�\1�FUNCTION�HIGH�WORD­�MOVE.W�#\2,\1�OPTIONS²�MOVE.L�\1,IOSFCT+\3‚SET�BOTHª�ENDMÃ*ÇC*‚SETSBA�SETS�RANDOM�SECTOR�NUMBER�AND�BUFFER�ADDRESS�IN�IOS�BLOCK… SETSBA�MACRO¼8�MOVEM.L�\1/\2/\3,IOSRRN+\4�IOSRRN,�IOSSAD,IOSEAD�SETUP‘�ENDMÃ*Ç:*‚THE�FOLLOWING�MACROS�ARE�USED�TO�SET�OR�GET�VALUES�FROMŽ-*‚FIELDS�IN�FAT�WHICH�MUST�BE�IN�GIVEN�ORDER› GET2�MACRO¾‚MOVEM.L�\1,\2/\3¶�ENDMà GET3�MACRO¾�MOVEM.L�\1,\2/\3/\4´�ENDMà GET4�MACRO¾�MOVEM.L�\1,\2/\3/\4/\5±�ENDMà SAVE2�MACRO½�MOVEM.L�\1/\2,\3·�ENDMà SAVE4�MACRO½�MOVEM.L�\1/\2/\3/\4,\5±�ENDMÃ*DCNT MACRO NEED FOR MASK3 DCNT MACRO SUB.W #1,\1 BNE.S \2 ENDMéééééO éé‰TTL�GPIB�DRIVER�-�GPIB�EQUATES‰PAGEE********************************************************************* *�EQUGPIBŸ*E**********************************************************************>*…THIS�EQUATE�TABLE�CONTAINS�ALL�INFORMATION�PERTAINING�TO�THE?*ƒGPIB�I/O�DRIVER�FOR�THE�VERSADOS�4.0�AND�ABOVE�I/O�SCHEME.�IT>*ƒCONTAINS�INTERNAL�HARDWARE�EQUATES,�CCB�STORAGE�ALLOCATIONS,>*ƒAND�ENTRIES�SPECIFIC�TO�THE�OPERATION�AND�MAINTENANCE�OF�THE*ƒIEEE-488�BUS.*E********************************************************************* *žHISTORYž*E**********************************************************************(*…24�JAN�83…STEVE�FEITELSON/CHRIS�MARRINC*ƒINITIAL�EQUATE�FILE.�EQUATES�ARE�BROKEN�OUT�FROM�THE�MAIN�SOURCE.@*ƒALL�GENERAL�SYSTEM�EQUATES�FOR�THE�DRIVER�DEFINED�THUS�FAR�ARE *ƒPRESENT.* PAGEE**********************************************************************E**********************************************************************@*‚THE�FOLLOWING�DEFINES�THE�QUEUING�STRUCTURE�AND�THE�ASSOCIATED;*‚POINTERS�FOR�HANDLING�COMMAND�FLOW�FOR�THIS�CHANNEL.�ONLYB*‚ONE�QUEUE�ENTRY�PER�DEVICE�CONNECTED�TO�THIS�CHANNEL�IS�ALLOWED.?*‚THEREFORE�THE�MAXIMUM�NUMBER�OF�QUEUED�ENTRIES�IS�15�(ONE�FORD*‚EACH�DEVICE).�THE�QHEAD�POINTER�IS�A�POINTER�TO�THE�NEXT�AVAILABLE<*‚QUEUE�ENTRY�LOCATION�AND�QTAIL�IS�A�POINTER�TO�THE�CURRENT*‚OPERATION�BEING�EXECUTED.*%*ˆEACH�ENTRY�CONSISTS�OF�SEVEN�ITEMS:**Œ(1)�COMMAND�STATUS*Œ(2)�DCB�POINTER*Œ(3)�IOSPB�POINTER%*Œ(4)�PRIMARY�BUFFER�PHYSICAL�ADDRESS5*Œ(5)�SECONDARY/CONFIGURATION�BUFFER‚PHYSICAL�ADDRESS*Œ(6)�PRIMARY�BUFFER�LENGTH*Œ(7)�SECONDARY�BUFFER�LENGTH*3*ˆIF�QTAIL�AND�QHEAD�ARE�EQUAL,�THE�QUEUE�IS�EMPTY.*E********************************************************************* * *‚OFFSETS�WITHIN�A�'GPIBQ'�ENTRY* OFFSET 06CSTQOFST�DS.W�1‡FIRST‚ENTRY�IS�COMMAND�STATUS�OF�ENTRY+DCBQOFST�DS.L�1‡SECOND�ENTRY�IS�DCB�POINTER,IPBQOFST�DS.L�1‡THIRD‚ENTRY�IS�IOSPB�POINTER ê7ééééé