IMD 1.17: 11/11/2014 13:03:43 82VKXBVERDOS B* VERSADOS/RMS68K OBJECT 4.3 SN=39358 10 OF 11  BT1082VKXBVERDOS 0420¾y-*g>*g RjÇaÞ* f@* g­,fí-`­ ,g` B­X­,AÕa žfÿfa|`ÿ`HçAP$8 >&68 @HC(HD4<  g 4<8***HB* g2Hçz,* m6a€`NqLß8`Lßp&*HC6‚€4*AÕa8NqLß ‚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 4`tNs@ç9 4gaFî HçÿþNi/ /9 b oF,hHV/(@À@ÿ?"h 0P*n6` f€\,_( „!TCBgaÄJ@gÿZ @f AÖa7``ÿJ @fÿBJf&HC4<HBAÖa ÀNq`ÿ(HBHA(&64< ‚HB4`àâˆ&T(,_" !TCBga`Cð=C^AÖa7J®@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Öa¤Hzþˆ`>®ú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 ĪTKú`ª^Laaaaaaa a aNqNqa Nq`"`6`>?/_gL/ fX—Ns?/_g0/ gNa"/ fÈ?/ _g/ g&aaýr8 4g @ça $ªTKú`  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ßTNuJAkô&)fT¯`è&C#SFïB«'@ '@'H'BB«BkgëáIAA 7Aa”Ó«Fü'&© #K LßTNuHøÿÿ@ø!×Ni!ÉH!øL"x :3|•3|µ3| 3|°|`Þ@ç|»ø bgLíÿ !Í b*x HÕÿ8 4ga ÒÝNsNu|ð%a|`øNHøÿÿ1×!ï|LøÿÿNs@ç|JÐkü0ãHâ@S@0€kFßNua>T.raFß.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 NBB8 Z 0àIDAÒx XäIÒ¸ BJ8 Zfà _Nu@çè-f0Hç`Cø |(&$I"j ³üg°)&cì!I %H LßNs(&Ue°($e @&`°Jhfæh%&`¢($ð@&`”`’J¸ 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(( B28 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ûhüü¦ý&|P”˜,`ÀBûÖˆÞ~ ®öä÷"+v˜èœxüâ ~òf&ÆûhòNú¼ÿäð¦ñ?_fóKøIøB§$I"x fFJQk$¶1@f&i OJg·Øg`öHSAëaùla”Cé QÿÿfÎB„ g| g4´¬o  g($,aœ‚)aØ®- K gT¯Lß88Nu g@î-|ð&Aí-H”|0ãHâ@S@lü0€aù(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ø 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÷2&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÷&`îCé QÿÿfÜAía÷Lß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 gJg` 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úêp&È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`LuP$!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-@ fB2- 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†.8 vΆެÞ¸ vθ zà"FffAø 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€PP&ðP$R(-K gá-G$TNu., 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áˆB25P’uPR @aö<`aí$aíŠ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€05PuP$R@*áa÷(` `J…f aêîn `ªJ0Pfò"( à‰ÔA1P1‚P’u@DAÒu@1P!µ@ 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ê0&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êxNu 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†PP…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 l2JkL"Az, m6añ`Nq`8)I,- &\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ÞTNu$, 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Öxß®<&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ÚvNu^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Ï.J‡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 RPFßm-ÿ,|ð&­ ,gí-@ç|­-g <  @ ( g °fô!m AÕaØ2FßNuî)=H*fî*.(g . (gaÖf.-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Ñb"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 Jg` .".+@+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ÓT`þÔ@ç FJf8".*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ÒnNu-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Ð0Gø "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ˆ/<Hª? *(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#|NP*géI*géH`R*fbB€*&x fJ3g:(iD &TGëÿ¶*` &lJ¬g +*²n(K`ê¹Àg #K)I`#K&iD3|N¹J#|OLIé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)|OLIìJ&kD&Œ` )k`B)(&iD&¼¾&x fB3Iø  &TJ”fa˦°‹gIë`ì(«Aø ŠaÌÌ IraÔš`8aË€paz&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îDJg"P°©gAé `îF€NuBAø Š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ß#`¿b |PpNAg`B DATAb ,H <BXS€fú=| ä=|\ æ-| èOî Aî&"HB™B™2ü2ü"üSHRS"üþà"¼pNAf´Aî&"HB™B™ü ü4"ü"üTfB‘pNAfŽAî&"H"üRÖü"¼"Hp3NAfrX‰üBp3NAfdAî&"HB™B™BY2ü‹"üUØ"Žp=NAfFAÖ Mp üPIA üþà üÿÿüB˜ üÅ üTÀ üÅB˜B˜üÿÿBBX*H&|þà B@@¼ÿ@<@@+|.|<*|ÿÿÿÿCîBp éAÓüBS€fðp$NAp! | NAf¸p CîB)Ag $i8J*%g ÓüBS€fä`Ê)@g@Aî&!i$!i,g. ¼!|!i4!i !ipNAg"|„`)@g©@Aî&!i `°a¢B)@B)AR®èéAB©4Bª B*%S*#fB*$B€)a¬`ÿ0B€)ažCîBp )Agµé8gÓüBS€fèB*$B*#`Ê|$|%©AéAB€) fS€S€åˆ$i8(r%I &jB)@N”gþº@B*%B©,`þàCîBp )AfÓüBS€fî`P Ip"NAfHS®è)€ gr$iB©Aî&p ¼!|!I¨!i !i!JX¨!|NAfäB)@B)AéAR®èB€a†p! | NAfÈNw) g g g <‚`¬S€)vEÖ²*g²* gÕü&Sƒfê <ƒ`‚#J8S€åˆ(r €Åf`hR*#B)@B)AJ*$géA`*|%éA|$&j%I N”g @B©,B*%J®èop! | NAf p5 |‚NAfüNw@B©,#@a` )a”`ÂAî&p"NAfÒ"h$i8B))@g j$|$)@f)@f)@g U© ¼!UDRáŠ]‚„ü 1BB¸ 0$:Žg2 BpN@`aê!È 0aEè ŠáŠQ‚„üÄüÔŠ!B1ú` 4!ü –aÀJ¸ fœB¸ GúœCë <€pN@`ad4+;B,g +x  !Í EëpBJjgREê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é2A022€@02€Nua&a°‹fa†a|°faÿ|Cí!É aÂazNuB€Aú$°Pgaÿ^B‡EЇ Eê Rÿÿfð‡#à*(B(:¢º„c*„ÿBKúûû" B*AMú,Bœ°ºrf†` (< B*DB†º„baþöNu hÿÿ g,a2 ÿfaN`aðJga$`a@°‹ga¾a`Ì3|ÿÿ Nu~Aè Cé ((„ÿB*(B*DB†º„baþNu•ÊBB‚BƒIÕKõhHz ?þàB9þà ü>þà9þà è àÁþàü6þàOïNuNu]] P þ þ þà@ þˆÿÿ ‘'EXORMACSREPL CD••ÏREPLGEN CF®®¯FAKEMMU AFÇÇFAKEMMU SAÐÐ;FAKEMMU ROÙÙLOADMMU AFââLOADMMU SAëë@LOADMMU ROôôVECTORS AFýýVECTORS SAVECTTBL AG“INITIO AG((VECTORS ROAAINT LGJJ READY AFSSREADY SA\\’READY ROmmRMS CDvv,RMS LG fVECTTBL RO‚*EXORMACS.REPL.CDA‚*REPLsysgencommandfilewillgenerateaREPLdemonstrationto;‚*ƒrunonanEXORmacssystem.‚Fourdifferentconfigurations‚*ƒarepossible.‚*:‚*THREE-STEPPROCESSTOPUTTOGETHERREPLDEMONSTRATION8‚*-----ƒ-----------------------------------------‚*A‚*1.‚AssembleREPLforyourparticularconfiguragionbyinvoking$‚*‡oneofthefollowingchainfiles:‚*,‚*‡VERSADOS.REPL.AFƒ-TorununderVERSAdos.‚*9‚*‡BIOS.REPL.AF‡-TorunwithoutVERSAdosbutwithRMS68K(‚*žandusingBIOSasanI/Oservertask.‚*9‚*‡INT.REPL.AFˆ-TorunwithoutVERSAdosorBIOSbutwith+‚*žRMS68KandhandleI/Ousinganinterrupt‚*žserviceroutine.‚*:‚*‡POLL.REPL.AF‡-TorunwithoutVERSAdosorBIOSbutwith,‚*žRMS68KandhandleI/ObypollingtheACIA‚*žserialport.‚*D‚*2.‚AssembleBIOStosuityourconfiguration.‚ToassembleBIOSforB‚*‡yourconfiguration,settheappropriateequateswitch(s)inthe?‚*‡BIOS.SAsource.‚ExplanationsfortheswitchesappearinthisA‚*‡source.‚Asshipped,BIOSisconfiguredtorunonanMMUsystem"‚*‡withACIAsastheserialports.‚*F‚*3.‚Performtheappropriatesysgen.‚Selectfromoneofthefollowing‚*‡fourcommandlines:.‚*‡=EXORMACS.REPLGEN.CF,,L1.LS,VERSADOS,L2.LS*‚*‡=EXORMACS.REPLGEN.CF,,L1.LS,BIOS,L2.LS)‚*‡=EXORMACS.REPLGEN.CF,,L1.LS,INT,L2.LS*‚*‡=EXORMACS.REPLGEN.CF,,L1.LS,POLL,L1.LS‚*A‚*…Inalloftheabovecases,‚twolistingswillbegenerated,‚one=‚*…inL1.LSandtheotherinL2.LS.‚IftheVERSADOSoptionisA‚*…selectedthentheoutputfromthesysgenwillbeREPL.LOwhich@‚*…canbetakentoanEXORmacssystemrunningunderVERSAdosand@‚*…invokedlikeanormalutility.‚Inallothercases,theoutput?‚*…createdwillbeabootfilecalledREPL.SY.‚ThisfilecanbeD‚*…putontoanbootabledisketteandbootedintoanEXORmacssystem.‚*?‚*ThefollowingfilesarerequiredtoperformtheREPLsysgen.C‚*ƒTheymustbepresentintheaccountinwhichthesysgenisdone.‚*0–\žD"‚*ˆFILE•ACCOUNTWHEREFILERESIDES"‚*ˆ----•-----------------------‚*‚*ˆ&.BIOS.LG99997‚*ˆ&.BIOS.RO9999(Assembletosuityourconfiguration)‚*ˆ&.REPL.LG99997‚*ˆ&.REPL.RO9999(Assembletosuityourconfiguration)‚*ˆC4O9.SYSPAR.ROˆ9999‚*ˆEXORMACS.INITIO.AG„9999‚*ˆEXORMACS.INT.LG‡9999‚*ˆEXORMACS.REPL.CD†9999‚*ˆEXORMACS.REPLGEN.CFƒ9999‚*ˆM6840.M6840.EQˆ9999‚*ˆEXORMACS.RMS.LO‡9999‚*ˆM68XXX.INIT.ROˆ9999‚*ˆM68XXX.INITDAT.AG…9999‚*‚*3‚MSG†Therearefoursysgenoptions forthissystem.5‚MSGˆTheappropriateswitchvalueispassedtoSYSGEN:‚MSGˆfromtheEXORMACS.REPLGEN.CFchainfile.‚Thepossible‚MSGˆvaluesare:$‚MSG‹"VERSADOS"-I/OwithVERSAdos.(‚MSG‹"BIOS"…-I/OwithBIOSservertask.)‚MSG‹"INT"†-I/Owithinterrupthandling.'‚MSG‹"POLL"…-I/Owithstatuschecking.‚MSG(‚MSG‚Youhaveselectedoption"\CONFIG". *‚ASMLSW„=\2‹*ASSEMBLYLISTINGFILESWITCH‚*”0=ASMLSISAFILE‚*”1=ASMLSISADEVICE'‚LINKLSWƒ=\2‹*LINKLISTINGFILESWITCH‚*”0=LINKLSISAFILE‚*”1=LINKLSISADEVICE ‚IFEQˆ\ASMLSW!…ASMLS…="\4"‰*ASMLISTINGDEVICE‚ENDC ‚IFNEˆ\ASMLSW$…ASMLS…="\1"‰*ASMLISTINGWORKFILE‚ENDC ‚IFEQˆ\LINKLSW#…LINKLS„="\4"‰*LINKLISTINGDEVICE‚ENDC‚IFNEˆ\LINKLSW!…LINKLS„="\1"‰*LINKLISTINGFILE‚ENDC +‚WORKLS„="\1"‰*OVERALLLISTINGFILE/DEVICE ‚&SESS…=1‚CONFIG„="\3"‚MEMEND1ƒ=$180000 ‚MEMEND2ƒ=$0 ‚MEMEND3ƒ=$0‚PAGESIZE‚=256‚ASN‡=0‚GST‡=4‚UST‡=1 ‚TRACE…=5‚IOV‡=1‚PAT‡=1‚UDR‡=0‚MMU‡=$FE2000‚TIMER…=$FEE040‚CLOCKFRQ‚=1000‚BUGTRACƒ=$FE8808‚TRCFLAGƒ=$0000 ‚TIMINTVƒ=10 ‚TIMSLICƒ=2 ‚WHERLOAD‚=0 ‚STACK…=$900‚STARTRMS‚=$C00‚IFNEˆ"\CONFIG","VERSADOS"…PROCESS…EXORMACS.RMS.LO…END‰RMS‚ENDC-‚=COPY‡9999.EXORMACS.RMS.LL,EXORMACS.RMS.LL;Y‚IFEQˆ\LINKLSW …=COPY‡EXORMACS.RMS.LL,\WORKLS;A‚ENDC ‚MEMBEG„=* ‚&SESS…=1 ‚IFEQˆ"\CONFIG","BIOS" …TASKˆBIOS …BIOSSTRT‚=* …SUBSˆBIOS.LG …LINKˆBIOS.LG…IFEQˆ\LINKLSWˆ=COPY‡BIOS.LL,\WORKLS;A…ENDC…SESSIONƒ=\&SESS…&SESS…=\&SESS+1…PRIORITY‚=200 …END‰BIOS‚ENDC ‚IFEQˆ"\CONFIG","VERSADOS" …REPLSTRT‚=* …SUBSˆREPL.LG …LINKˆREPL.LG…IFEQˆ\LINKLSWˆ=COPY‡\LINKLS,\WORKLS;A…ENDC‚ENDC ‚IFNEˆ"\CONFIG","VERSADOS" …TASKˆREPL …REPLSTRT‚=* …SUBSˆREPL.LG …LINKˆREPL.LG…IFEQˆ\LINKLSWˆ=COPY‡\LINKLS,\WORKLS;A…ENDC…SESSIONƒ=\&SESS…PRIORITY‚=100…ATTRIB„='USER' …END‰REPLB …PROCESS…INIT…MEMEND„=$20000…PANEL…=$FE0000…SUBSˆM68XXX.INITDAT.AG/…ASM‰M68XXX.INITDAT.AG,M68XXX.INITDAT.RO,\ASMLS …IFEQˆ\ASMLSWˆ=COPY‡\ASMLS,\WORKLS;A…ENDC…SUBSˆEXORMACS.INITIO.AG1…ASM‰EXORMACS.INITIO.AG,EXORMACS.INITIO.RO,\ASMLS …IFEQˆ\ASMLSWˆ=COPY‡\ASMLS,\WORKLS;A…ENDC …INTSTR„=*…SUBSˆEXORMACS.INT.LG…LINKˆEXORMACS.INT.LG…IFEQˆ\LINKLSWˆ=COPY‡\LINKLS,\WORKLS;A…ENDC …END‰INIT‚ENDC‚IFEQˆ"\CONFIG","VERSADOS"<…MSG‰*******************************************************5…MSG‰REPLsysgencomplete.‚Younowhaveafilecalled9…MSG‰REPL.LOwhichcanberunonanEXORmacssystemunder5…MSG‰VERSAdos.‚Torunthedemonstration,justexecute(…MSG‰REPLasyouwouldanormalutility.<…MSG‰*******************************************************‚ENDC‚IFNEˆ"\CONFIG","VERSADOS"<…MSG‰*******************************************************5…MSG‰REPLsysgencomplete.‚Younowhaveafilecalled8…MSG‰REPL.SYwhichincludesRMS68KandtheREPLtask.‚To:…MSG‰runthedemonstration,boottheREPL.SYfiledirectly…MSG‰intoanEXORmacs.<…MSG‰*******************************************************‚ENDC ‚END‰SYSGENé=/***********************=/* EXORMACS.REPLGEN.CF *=/***********************=OPT K,NM=/***************************************************************************"=/*Chainfiletoperformsysgen¬*=/*É*=/*Callingsequence:·*=/*É*)=/*ƒ=SYSGEN.CFarg1,arg2,arg3,arg4,arg5£*=/*É*7=/*„Notalloftheargumentsneedtobeenteredsince”*$=/*†theyeachhaveadefaultvalue¥*=/*É*==/*„arg1-commandfilename(defaultstoEXORMACS.REPL.CD)Ž*=/*É*,=/*„arg2-Tempvolandusern o./BootfileŸ*9=/*Temp.vol.anduserno.defaultstovolumenameand‰*)=/*usernumberofcommandfile(arg1).—*&=/*Bootfiledefaultsto'REPL.SY'.œ*=/*É*=/*É*9=/*„arg3-Listdeviceorfilenameforsysgenmessages’*=/*(defaultstoSYSLIST.LS)¤*;=/*‹Iffilename-sysgenuses'.LS'asdefaultextension‰*=/*É*9=/*‡NOTE:Thefirstthreeargumentsarethesameasthe*4=/*threecommandlinefieldsusedininvokingtheŽ*=/*sysgenutilitydirectly.¤*=/*É*B=/*„arg4-Typeofsystemconfiguration(defaultsto'VERSADOS')‰*&=/*'VERSADOS'†ForusewithVERSAdos—**=/*'BIOS'ŠForusewithBIOSservertask*5=/*'INT'‹ForusewithoutBIOSorVERSAdosandwithƒ*$=/*ŸinterruptserviceroutineI/O.Œ*6=/*'POLL'ŠForusewithoutBIOSorVERSAdosandwithƒ*=/*ŸI/OpollingtypeI/O.•*=/*É*5=/*„arg5-Listingdeviceorfile(Defaultsto#PR)–*A=/*Legaldevicesare#,#PR,#PR1,#PR2,#PR3,#NULLorafilename.*:=/*Allassemblylistingsandlinkmapswillbedirectedˆ*<=/*Tothespecifieddeviceorfileusingthecopyutility†*>=/*withappendoption.‚SYSGEN.TFisusedasanintermediateƒ*7=/*filetocontaintheassemblyorlinklistoutput.‹*@=/*Duetorestrictionsinsysgenliteralsubstitutionprocess‚*8=/*thisfieldcannotcontainmorethan10characters.Š*M=/***************************************************************************=/*'=/* Force the definition of 5 arguments=/*=/RX=\0 =/IF RX=07ƒ=ARGEXORMACS.REPL.CD,/REPL.SY,SYSLIST.LS,VERSADOS,#PR¦5¯a·=/ENDIF =/IF RX=1)ƒ=ARG\1,/REPL.SY,SYSLIST.LS,VERSADOS,#PR=/ENDIF =/IF RX=2#ƒ=ARG\1,\2,SYSLIST.LS,VERSADOS,#PR=/ENDIF =/IF RX=3ƒ=ARG\1,\2,\3,VERSADOS,#PR=/ENDIF =/IF RX=4ƒ=ARG\1,\2,\3,\4,#PR=/ENDIF=/*8=/* We have 5 arguments - now default any null arguments=/*=/IFC \1"ƒ=ARGEXORMACS.REPL.CD,\2,\3,\4,\5=/ENDIF=/IFC \2ƒ=ARG\1,/REPL.SY,\3,\4,\5=/ENDIF=/IFC \3ƒ=ARG\1,\2,SYSLIST.LS,\4,\5=/ENDIF=/IFC \4ƒ=ARG\1,\2,\3,VERSADOS,\5=/ENDIF=/IFC \5ƒ=ARG\1,\2,\3,\4,#PR=/ENDIF=/*N=/* If arg5 is not #PR,#PR1,#PR2,#PR3,# or #NULL then treat as file and delete:=/*ƒsetswitch(arg6)to1forprinterdevice,0forfile.=/*0=ARG \1,\2,\3,\4,\5,0,#PR,#PR1,#PR2,#PR3,#,#NULL =/FOR 7,\0ƒ=/IFEQ"\5"\(RX)1†=ARG\1,\2,\3,\4,\5,1,#PR,#PR1,#PR2,#PR3,#,#NULLƒ=/ENDIF=/ENDFOR=/RX=\6 =/IF RX=0ƒ=DEL\5=/ENDIF=/*=/* Set switch (arg7) TO:=/*„00--‚VERSADOS=/*„01--‚BIOS =/*„02--‚INT=/*„03--‚POLL=/*=/RX = 0=ARG \1,\2,\3,\4,\5,\6,10=/IFEQ "\4"VERSADOS ƒ=/RX=1=/ENDIF=/IFEQ "\4"BIOS ƒ=/RX=1=/ENDIF=/IFEQ "\4"INT ƒ=/RX=1=/ENDIF=/IFEQ "\4"POLL ƒ=/RX=1=/ENDIF=/*9=/* Abort chain if an invalid configuration was requested=/* =/IF RX=05ƒ=/ABT\4isaninvalidconfiguration-(argument#4)=/ENDIF#=ARG \1,\2,\3,\4,\5,\6,\4,SYSGEN.TF=/*3=/* The argument list now looks like the following:=/* =/*ƒarg1ƒ-ƒNameofcommandfile.=/*0=/*ƒarg2ƒ-ƒTemporaryvolume/bootfile(ornull).=/*3=/*ƒarg3ƒ-ƒListdeviceorfileforsysgenmessages.=/*(=/*ƒarg4ƒ-ƒSystemconfigurationmnemonic$=/*'VERSADOS,'BIOS','INT','POLL'=/*(seearg7)=/*@=/*ƒarg5ƒ-ƒListingfileordeviceforassembliesandlink-edits.4=/*SYSGEN.TFisthetemporaryfilewhichisusedin1=/*conjunctionwith=COPY;Atoproduceasingle=/*listingfile.=/*(seearg6)=/*=/*ƒarg6ƒ-ƒSwitch-"=/*0=‚arg5specifiesafilename=/*1=‚arg5specifiesadevice=/*(seearg5)=/*=/*ƒarg7ƒ-ƒSameasarg4=/*8=/*ƒarg8ƒ-ƒSYSGEN.TFtemporaryfileforusewithcopyin+=/*creatinglistingfilespecifiedbyarg3=/*=/*9=/* Justify argument positions and invoke sysgen utility.=/*=ARG \5,\6,\7,\8,\1,\2,\3,\4=/*)=/*  Turn off echo of sysgen command lines=OPT J=SYSGEN \5,\6,\7;T=200 =OPT -J,-NM=/***************************************************************************M=/***************************************************************************=/**=/**‚SysgenCompleted--=/**6=/**„Assemblyandlinklistingshavebeenoutputto\1=/**1=/**„Sysgencommandlistinghasbeenoutputto\7M=/***************************************************************************M=/***************************************************************************=OPT -K=ENDéééé=/*†EXORMACS.FAKEMMU.AF=/*=/*=/*@=/*†IFNOOUTPUTARGUMENTFORTHELISTINGISSPECIFIEDTHECHAIN,=/*†FILEWILLDEFAULTTOEXORMACS.FAKEMMU.LS=/*=/IFC \1=ARG EXORMACS.FAKEMMU.LS=/ENDIF=/*6=ASM EXORMACS.FAKEMMU.SA,EXORMACS.FAKEMMU.RO,\1;RZ=050=/*{ Included files are:=/*ƒ9995.&.STR.EQ=/*ƒ9995.&.TST.EQ=/*}=/*=ENDéééééé¿ ‰PAGE**ˆINCLUDEFILES**ˆINCLUDEƒ9995.&.STR.EQ*ˆINCLUDEƒ9995.&.TST.EQ*‰NOLIST‰INCLUDEƒ9995.&.STR.EQ‰INCLUDEƒ9995.&.TST.EQ‰LIST‰PAGELOADMMU‚IDNT‚2,0„LOADMMU*$*ˆCOPYRIGHTED1980BYMOTOROLA,INC.**ˆ*********************ˆ*LOADMMU‚2.00„**ˆ*HLD6ƒ09/18/80‚**ˆ*HLD6ƒ03/30/81‚**ˆ**********************…LOADMMUSUBROUTINE**…REGISTERUSAGE:ƒ01234567 *–D*********–A*ƒ**…ENTRY:„A5POINTSTOTST*‰SECTIONLEVEL00*‰XDEFƒLOADMMU,LOADMMUI"ŠXDEFƒCRASN,DEASN,UNLDMMU,MMUFAULT‰XREF.SMMUHERE,MMULOAD*,LOADMMU‚MOVE.W‚SR,-(A7)ŠSAVESTATUSREGISTER)LOADMMUIOR.W„#$700,SRŠINHIBITINTERRUPTS!‰MOVE.L‚MMUHERE,A5ˆADDRESSOFMMU/‰MOVEM.LMMUFAKE,D0-D7…GETENTIREADDRESSRANGE‰MOVEM.LD0-D7,(A5)ˆLOADMMU ‰RTE—RETURN MMUFAKE‚DC.Lƒ$0000FFFF,$00000001‰DC.Lƒ0,0,0,0,0,0ŠPAGE*I*‚Dummyentrypoints--we'repretendingnottohaveanMMU,butotherexecH*‚routinesaregoingtobecallingusattheseentrypointsbecausethey+*‚don'tknowwhetherwehaveanMMUornot.*CRASN:DEASN:UNLDMMU: MMUFAULT: &ŠRTS—Justreturn--he'llneverknow....   ‰ENDéééÈ<41LOADMMU ASYST'EXORMACSFAKEMMU SA!ƒLOAD MMUv2BLOADMMU BLOADMMUI BMMUFAULT 8pMMULOAD BUNLDMMU 8BCRASN 8BDEASN 8pMMUHERE ":?3 @ç|*x Lùÿ)HÕÿNsÿÿNu4éééééé éÑ=/*†EXORMACS.LOADMMU.AF=/*=/*=/*@=/*†IFNOOUTPUTARGUMENTFORTHELISTINGISSPECIFIEDTHECHAIN,=/*†FILEWILLDEFAULTTOEXORMACS.LOADMMU.LS=/*=/IFC \1=ARG EXORMACS.LOADMMU.LS=/ENDIF=/*6=ASM EXORMACS.LOADMMU.SA,EXORMACS.LOADMMU.RO,\1;RZ=050=/*{ Included files are:=/*ƒ9995.&.STR.EQ=/*ƒ9995.&.TST.EQ=/*}=/*=ENDééééééÚ‰PAGE**ˆINCLUDEFILES**ˆINCLUDEƒ9995.&.STR.EQ*ˆINCLUDEƒ9995.&.TST.EQ*‰NOLIST‰INCLUDEƒ9995.&.STR.EQ‰INCLUDEƒ9995.&.TST.EQ‰LIST‰PAGELOADMMU‚IDNT‚2,0„LOADMMU*$*ˆCOPYRIGHTED1980BYMOTOROLA,INC.**ˆ*********************ˆ*LOADMMU‚2.00„**ˆ*HLD6ƒ09/18/80‚**ˆ*HLD6ƒ03/30/81‚**ˆ**********************…LOADMMUSUBROUTINE**…REGISTERUSAGE:ƒ01234567 *–D*********–A*ƒ**…ENTRY:„A5POINTSTOTST*‰SECTIONLEVEL00*‰XDEFƒLOADMMU,LOADMMUI"ŠXDEFƒCRASN,DEASN,UNLDMMU,MMUFAULT‰XREF.SMMUHERE,MMULOAD‰XREF.STRACER,TRACFLAG*,LOADMMU‚MOVE.W‚SR,-(A7)ŠSAVESTATUSREGISTER)LOADMMUIOR.W„#$700,SRŠINHIBITINTERRUPTS(‰CMP.LƒMMULOAD,A5ˆISMMUALREADYLOADED?‰BEQ.SƒLOADMMURŠBRANCHIFYES.‰MOVEM.LTSTMMU(A5),D0-D7‚SEGMENTDESCRIPTIONS/‰MOVE.L‚A5,MMULOADˆSAVEADDRESSOFCURRENTLOAD!‰MOVE.L‚MMUHERE,A5ˆADDRESSOFMMU‰MOVEM.LD0-D7,(A5)ˆLOADMMU7LOADMMURBTST„#TRCFMMU,TRACFLAGSHOULDENTRYBETRACED?‰BEQ.SƒLOADMMUZŠBRANCHIFNO‰BSR…TRACERŒBUILDTRACEENTRY‰DC.W„$DD08TRACECODELOADMMUZRTE—RETURNŠPAGE*J*‚Dummyentrypoints--ourMMUisn'tanM68451,butotherexecroutinesareK*‚goingtobecallingusattheseentrypointsbecausetheydon'tknowwhat *‚wehave.* CRASN:DEASN:UNLDMMU: MMUFAULT: &ŠRTS—Justreturn--he'llneverknow....   ‰ENDééãA41LOADMMU ASYST'EXORMACSLOADMMU SA'!ƒLOAD MMUŒ2BLOADMMU BLOADMMUI BMMUFAULT .pMMULOAD BUNLDMMU .BCRASN .BDEASN .pTRACER pTRACFLAG pMMUHERE "083(H@ç|»ø gLíÿ !Í *x HÕÿ8 gaAØÝNsNu4éééééééì=/*†VECTORS.AF=/*=/*=/*@=/*†IFNOOUTPUTARGUMENTFORTHELISTINGISSPECIFIEDTHECHAIN,=/*†FILEWILLDEFAULTTOEXORMACS.VECTORS.LS=/*=/IFC \1=ARG EXORMACS.VECTORS.LS=/ENDIF=/*4=ASM :.EXORMACS.VECTORS,:.EXORMACS.VECTORS,\1;MRZ=46=/*{ Included files are:=/*ƒ--none--=/*}=/*=ENDé éééééõ‰PAGE"VECTORS‚IDNTƒ1,0†INTERRUPTVECTORS*ˆVECTORTABLEINLOWMEMORY*‰ORG03ILLINSTREQU‡0‰SETFORILLEGALINSTRUCTIONVECTOR4%*œ0=RMSWILLLEAVETHEVECTORALONE'*œ1=RMSWILLTAKECONTROLOFVECTOR4**INITSTRTEQU‚$0* ‰XREFSYSPAR#‰DC.LSYSPAR„STACKPOINTERONRESET‰DC.LINITSTRT‰DC.L0‰DC.L0‰XREFPROGINT4&‰DC.LPROGINT4‚SV4‚ILLEGALINSTRUCTION‰DC.L0‰DC.L0‰DC.L0‰DC.L0‰DC.L$FE8808ƒTRACETRAP‰ENDééééééþ5VECTTBLƒIDNTƒ5,1RMS68KvectortablefortheEXORMACSO*v*****************************************************************************O*******************************************************************************O********************************** ************************************************É***@***…ROUTINE:‚VECTTBL--RMS68KVECTORTABLEFORTHEEXORMACS‹******É***J***…ENVIRONMENT:‚PartoftheRMS68KexecfortheMotorola68000family.***@***‡Copyright1983byMotorola,Inc.‚Thisversionisforthe‰******‡EXORMACSmicrocomputer.«******É***E***…FUNCTION:‚ThistablegetslinkedwithRMS68K.‚Whenthesystem…***C***‡boots,theexecinitializerfindsthistableandusesitto‡***:***‡takeovervectorsintheprocessor'svectortable.******É***O*******************************************************************************O*******************************************************************************O*^***************************************************************************** *,*‚Revisionhistory(addnewchangestotop).*…Date†Author‰ChangesG*…--------‚-------------‚----------------------------------------------/*…10/21/83‚DICKVANDERLINRevisionforEXORMACS(*…10/4/83‚SteveFranckƒInitialwriting.*  *E*‚XREF's.‚NotethattherearemanymoreXREF'screatedbyinvocations8*‚oftheVECTORmacro;thoseXREF'sarenotlistedhere.*.ŠXREFƒCOMINTCommoninterrupthandlerroutine.   **‚Includedfiles:*5*‰9995.&.STR.EQThesectionnumbertouseisinhere.*ŠNOLISTŠINCLUDE9995.&.STR.EQŠLISTŠPAGE*E*‚TheVECTORmacrodefinesentriesinthevectortable.‚Theformatis%*‰VECTOR‚,5*‚Therearetwospecialvaluesfor:,*‰0=COMINT(thecommoninterrupthandler).(*‰1=don'ttakeoverthevectoratall.E*‚Entriesinthevectortablemustbeassignedinorder--thatis,theB*‚vector#'sintheVECTORinvocationsmustbeinascendingorder.59&H*‚InthecasewheretwocontiguousVECTORinvocationsleaveagapintheK*‚vector#'s,thosevector#'sinthegapwillbeassignedthesamehandler9*‚asthatofthelowervector#ofthepair.‚Forexample,+*‰VECTOR$23,0ŽPoints$23to$27toCOMINT.-*‰VECTOR$28,1ŽLeaves$28to$2Fastheyare.-*‰VECTOR$30,ROUTINE1‡Points$30toROUTINE1.G*‚Ifthegaptobefilledhasasecondparameterotherthan0or1,theJ*‚addressassignedtothevectorwillbeincrementedby2foreachvector:7*‰VECTOR$23,XŽPoints$23toX,$24toX+2,$25toX+4.$*‰VECTOR$26,0ŽPoints$26toCOMINT.'*‚Theendofthelistissignifiedbya*‰DC.Lƒ0F*‚andthesecondparameterofthelastpriorVECTORinvocationwillbeK*‚appliedtoallfurthervectors,upto$FF.‚Again,ifthesecondparameterK*‚wasnota0or1,theaddressassignedtothevectorswillbeincremented#*‚by2foreachvectorinsequence.* VECTOR„MACROŒIFLEƒ\1-VECT_NUM0ŽFAILƒ499ŒVector#'smustbeinascendingorder!ŽMEXITŒENDCŒIFNCƒ'\2','0'ŽIFNCƒ'\2','1'XREFƒ\2ŽENDCŒENDCVECT_NUM„SET„\1ŒDC.Lƒ\1<<24+\2ŠENDM  * *‚Firstsetupthetableheader.*ŠSECTIONLEVEL00  0ŠDC.Lƒ'!VCT'Dumpeyecatcherfor'VeCtorTable.'2ŠDC.LƒCOMINTPuttheaddressofCOMINTheresothe"*§execinitializercanfindit;he#*§isn'tlinkedwiththeexec,sohe*§wouldn'tknowotherwise.ŠPAGE*)*‚Herearetheactualvectorassignments.I*‚NoticethatwhetherornottheillegalinstructionvectoristakenoverE*‚byRMS68Kiscontrolledbyansysgenparameter.‚DuringRMSGEN,this$*‚parameterissubstitutedsuchthatA*„0=theexecshouldleavetheillegalinstructionvectoralone.?*„1=theexecshouldtakeovertheillegalinstructionvector.J*‚YoumightwanttheexectoleavetheillegalinstructionvectoraloneifI*‚youwanttousetheROMdebugger,sinceitusesillegalinstructionsas*‚breakpoints.* 8VECT_NUM‚SET„1’Initializethevectornumberto1sothat  &*§thelowestvectornumberthatcanbe*§setafterwardsis2.7*‰VECTOR$00,CALLKILLŠSHOULDNEVERGETHEREthiswasin>*‰VECTOR$01,CALLKILLŠSHOULDNEVERGETHERE4.2exormacsvectt*ŠVECTOR$02,PROGINT2‡Buserror.#ŠVECTOR$03,PROGINT3‡Addresserror.$*§Ifwe'renotsupposedtotakeover/ŠIFEQƒ\ILLINSTRŠtheillegalinstructionvector,9ŠVECTOR$04,1Žleavetheillegalinstructionvectoralone.ŠENDC–*!*§Ifwearesupposedtotakeover/ŠIFNEƒ\ILLINSTRŠtheillegalinstructionvector,>ŠVECTOR$04,PROGINT4‡takeovertheillegalinstructionvector.ŠENDC–*#ŠVECTOR$05,PROGINT5‡Divisionby0.+*‚insequence„$06,PROGINT6ŠCHKinstruction.-*‚insequence„$07,PROGINT7ŠTRAPVinstruction./*‚insequence„$08,PROGINT8ŠPrivilegeviolation.'ŠVECTOR$09,PROGINT9‡Instructiontrace.8ŠVECTOR$0A,PROGINTA‡Reservedinstructionopcodes$AXXX.>*‚insequence„$0B,PROGINTBŠReservedinstructionopcodes$FXXX.'ŠVECTOR$0C,0Ž($0C-$17gotoCOMINT.)'ŠVECTOR$18,SPURINTˆSpuriousinterrupt.'ŠVECTOR$19,0Ž($19-$1CgotoCOMINT.)'ŠVECTOR$1D,0Ž($1D-$1FgotoCOMINT.)ŠVECTOR$20,TRAP0ŠTRAP#0.ŠVECTOR$21,TRAP1ŠTRAP#1.#ŠVECTOR$22,TRPVCT2ˆTRAP#2to#15.'ŠVECTOR$30,0Ž($30-$8BgotoCOMINT.))ŠVECTOR$8C,TIMEINTˆM6840timeinterrupt.!ŠVECTOR$8D,0Ž($8Dgotocomint.)8ŠVECTOR$8E,1ŽSoftwareabortvector(leaveitpointingto*¦BUG) ŠVECTOR$8F,0'ŠVECTOR$95,0Ž($95-$FFgotoCOMINT.)!ŠDC.Lƒ0’(Endoftableindicator.)ŠENDéé‰INCLUDE9999.M6840.M6840.EQ ‰SECTIONƒ8‰PAGE*J*‚ThiscodeisneededtosatisfyINIT,whichisboard-independentandmust/*‚calluponustodotheboard-dependentstuff.**„InitializetheMMU.*/ŠXDEFƒINITMMUŒEXORmacsMMUcomesupinitialized ŠXREFƒMMUŠXREF.SMMUHERE INITMMU‚EQU‡*2ŠMOVE.LMMU(PC),MMUHERE„SaveMMUaddressinsysparŠRTS—nothingtodohere. **„Startthetimerrunning.*+ŠXREF.SCRASHSAV‹ThesearefoundinSYSPAR.ŠXREF.SEXCSTACKŠXREF.SPTMADDRŠXREF.STIMESLICŠXREF.STIMINTVŠXREF.STIMINTV4 &ŠXREFƒCLOCKFRQ‹ThesearefoundinIND. ŠXREFƒTIMERAŠXREFƒTIMINTVA ŠXREFƒTIMSLIC 1ŠXDEFƒTIMERSTŒEntrypointtoSTARTTIMERroutine.* TIMERST‚EQU‡*;‰MOVE.LTIMSLIC(PC),TIMESLIC†Setthesysgenparameterwhich'*¦dictatesthe#oftimerticspertime*¦slice'‰MOVE.LTIMERA(PC),A1‡GETTIMERADDRESS#‰MOVE.LA1,PTMADDRŠSAVEITFOREXEC$‰BEQ.S‚TIMER_EXITŠBRANCHIFNOTIMER)‰PEA„TIMERBE(PC)‰WHERETOGOONBUSERROR$‰MOVE.W#'BE',-(A7)‰SETBUSERRFLAG3‰MOVE.B#$01,CR2SR(A1)†ALLOWWRITETOCONTROLREG1&‰MOVE.B#$01,CR13(A1)‡ALLTIMERSRESET$‰MOVE.L#CLOCKFRQ,D0ˆCLOCKFREQUENCY‰DIVUƒ#4,D0DIVIDEBY4#‰SUB.W‚#1,D0CLOCKINTERRUPTSAT-1*‰MOVE.WTIMINTVA(PC),D1…INTERRUPTINTERVAL ‰MOVE.WD1,TIMINTVŠSAVEFOREXEC‰MULUƒ#4,D1MULTIPLYBY4*‰SUB.W‚#1,D1SUBTRACT1-TIMERGOESTO-1!‰MOVE.WD1,TIMINTV4‰SAVEFOREXEC‰LSL.W‚#8,D1PUTINHIGHBYTE)‰ADD.W‚D1,D0VALUEFORTIMER3(2HALVES)‰MOVEP‚D0,MSBT3(A1)ˆSETTIMER34‰MOVE.W#256,D0VALUEFORTIMER1(OVERFLOWCOUNTER)‰MOVEP‚D0,MSBT1(A1)ˆSETTIMER18‰MOVE.B#$00,CR2SR(A1)†ALLOWWRITETOCONTROLREGISTER3;‰MOVE.B#$C6,CR13(A1)‡T3--INTERNALCLOCK,INTERRUPTENABLED,*£OUTPUTENABLED,8-BITMODE8‰MOVE.B#$01,CR2SR(A1)†ALLOWWRITETOCONTROLREGISTER1;‰MOVE.B#$00,CR13(A1)‡T1--EXTERNALCLOCK,ENABLEALLTIMERS/‰ADDQ.L#6,SP’EverythingwentOK;justgetthat'*¦buserrorjunkoffthestackandexit‰BRA.S‚TIMER_EXIT*   B)A1 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>•NOTICEš<<<<<<<*‚>>>>>>>µ<<<<<<<>*‚>>>>>>>…WhenincorporatinganydriversduringSYSGEN„<<<<<<<?*‚>>>>>>>…thatrequirememoryallocatedforthemasperƒ<<<<<<<?*‚>>>>>>>…thedriverpackageinstructions-thisistheƒ<<<<<<<,*‚>>>>>>>…spotthefile(s)gointo!!–<<<<<<<*‚>>>>>>>µ<<<<<<<=*‚>>>>>>>…Thisisalsothespotforcodeforadriver…<<<<<<<>*‚>>>>>>>…that‚requiresothertypesofinitialization,ƒ<<<<<<<0*‚>>>>>>>…such‚asclearinganinterrupt.‘<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>‘MERGEITHERE—<<<<<<<*<*ˆWhenyouwritethecodethatistobemergedhere,wrapit*ˆaroundwiththefollowing:*:*ˆAtthebeginning,withDRVRxOUTreferringtoyourunique*ˆlabel,putthiscode:*'*‹PEA„DRVRxOUT(PC)„IFBUSERROROCCURS,*¢RETURNORGOONTONEXT*¢DRIVER'SINITIALIZATION**‹MOVE.W#'BE',-(A7)…SAVE'BUSERROR'FLAG*9*ˆTheninsertthecodetodowhatyouneedtodoforthis*ˆparticulardriver.**ˆAttheend,putthis:***‹LEA„6(A7),A7ˆREMOVEBUSERRORFROMSTACK*DRVRxOUTƒEQU„**=*ˆInthisway,ifthecodeforonedrivercausesabuserror,.*ˆthecodeforotherdriverswillbeexecuted.*E*‚>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<G*********************************************************************** ŠRTS‰ENDééééé  é=1VECTORS ASYST'EXORMACSVECTORS SA !ƒINTERRUPT VECTORS 2pPROGINT4 pSYSPAR (*3((þˆ4ééééééé9=/*=/*†Importantnote:5=/*†TheorderoftheINPUTmodulesforthisLINKmust=/*†beasspecifiedbelow.=/*=LINK ,INIT,\LINKLS;IXHMSEGMENT .INT:8 \INTSTRINPUT M68XXX.INIT.ROINPUT EXORMACS.INITIO.ROINPUT M68XXX.INITDAT.ROINPUT C4O9.SYSPAR.ROEND=ENDéééé  ééB =/*†EXORMACS.READY.AF=/*=/*@=/*†IFNOOUTPUTARGUMENTFORTHELISTINGISSPECIFIEDTHECHAIN*=/*†FILEWILLDEFAULTTOEXORMACS.READY.LS=/*=/IFC \1=ARG :.EXORMACS.READY=/ENDIF=/*0=ASM :.EXORMACS.READY,:.EXORMACS.READY,\1;RZ=045=/*{ Included files are:=/*ƒ9995.&.STR.EQ=/*ƒ9995.&.TCB.EQ=/*}=/*=ENDééééééK‰PAGE**ˆINCLUDEFILES**ˆINCLUDEƒ9995.&.STR.EQ*ˆINCLUDEƒ9995.&.TCB.EQ*‰NOLIST‰INCLUDEƒ9995.&.STR.EQ‰INCLUDEƒ9995.&.TCB.EQ‰LIST‰PAGE.READY„IDNT„2,0ƒTRAP0-PUTTASKONREADYLIST*$*ˆCOPYRIGHTED1980BYMOTOROLA,INC.**ˆ*********************ˆ*READY‡2.00**ˆ*GGC303/06/79„**ˆ*761605/18/79„**ˆ*HLD602/08/81„**ˆ*********************9*„READY‚EXECROUTINE„PUTSTASKINREADYQUEUEBYPRIORITY>*‰ENTRY:A0POINTSTOTASKCONTROLBLOCKOFTASKTOMAKEREADY *A6ISADDRESSOFREQUESTORTCB*‰EXIT:RTEWITHNOPARAMETERS *’01234567* USES REGISTERS D **AP*‰SECTIONLEVEL00*‰XDEFƒREADY,SBREADY‰XREF.SREADYHD*(SBREADY‚MOVE.WSR,-(A7)ŒSUBROUTINEENTRY=READY„BSETƒ#TSK2NRDY,TCBSTAT2(A0)†IS'ONREADYLIST'BITSET?-‰BNE.S‚READYRŠBRANCHIFYES-ALREADYONLIST'‰MOVEM.LA1-A2,-(A7)„SAVEREGSONSTACK8‰LEA„READYHD-TCBREADY,A1…ADDRESSOFPOINTERTOFIRSTTCB"‰OR.Wƒ#$700,SRˆTURNOFFINTERRUPTS4‰MOVE.BTCBRPRI(A0),D0ƒGETPRIORIT  YOFTASKTOREADY*%READY2ƒMOVE.L‚A1,A2ŠSAVEBACKPOINTER'‰MOVE.L‚TCBREADY(A2),A1‚PTRTONEXTTCB+‰CMP.Lƒ#0,A1‹ISTHEREANOTHERTCBINCHAIN?&‰BEQ.SƒREADY4‰NO-ADDTOENDOFCHAIN$‰CMP.BƒTCBRPRI(A1),D0†CHECKPRIORITY'‰BLS.SƒREADY2ŠGOBACKTOCKECKNEXTONE1READY4ƒMOVE.L‚A1,TCBREADY(A0)‚ADDEDONE'SFWDPTR*‰MOVE.L‚A0,TCBREADY(A2)†BACK'SNEWFWDPTR,READY5ƒMOVEM.L(A7)+,A1-A2ƒRESTOREREGISTERSREADYRƒRTE“DONE‰PAGE*?* THE FOLLOWING ARE ALTERNATE ENTRY POINTS TO THE READY ROUTINE*8*‚THESEENTRIESAREPROVIDEDSOTHATTASKREADYPRIORITY9*‚CANBEADJUSTEDBEFOREATASKISPUTONTHEREADYLIST.*B*„THESEENTRIESAREINTERNALSUBROUTINEENTRIES-NOCORRESPONDING1*•TRAP#0ENTRIESAREPROVIDEDFOREXTERNALCALLS*E**********************************************************************6*…SBRYEXT1‚-CALLEDFROMEXIT2(TRAP#1EXITROUTINE)*‰XDEFƒSBRYEXT1SBRYEXT1EQU„**?*…SBRYEXIR‚-CALLEDFROMEXITR(EXITFROMEXCEPTIONPROCESSING)*‰XDEFƒSBRYEXIRTJ]ISBRYEXIREQU„**:*…SBRYTINT‚-CALLEDFROMTIMERINTERRUPTROUTINE(TIMEINT)*‰XDEFƒSBRYTINTSBRYTINTEQU„**.*…SBRYXMON‚-CALLEDFROMEXMONRETURN(REXMON)*‰XDEFƒSBRYXMONSBRYXMONEQU„**5*…SBRYDLAY‚-CALLEDFROMRETURNAFTERDELAY(CKDELAY)*‰XDEFƒSBRYDLAYSBRYDLAYEQU„*I**************************************************************************?*…DECREMENTREADYPRIORITY‚-IFLESSTHANCURRENT,SETTOLIMIT*1PRIODECRMOVE.BTCBRPRI(A0),D0ˆGETREADYPRIORITY‰SUB.B‚#2,D0‘DECREMENTBY2"‰BCS.S‚PRIOLIMTŽBRANCHIFNEGATIVE.‰CMP.B‚TCBCPRI(A0),D0ˆISITLESSTHANCURRENT?‰BCS.S‚PRIOLIMTŽBRANCHIFYES)‰MOVE.BD0,TCBRPRI(A0)ˆSETREADYPRIORITY+‰BRA„SBREADYBRANCHTONORMALREADYROUTINEI**************************************************************************3*„SBRYACK‚-CALLEDFROMSERVERACKNOWLEDGE(AKRQST)* ‰XDEFƒSBRYACK2SBRYACK‚TST.W‚TCBRTCD(A0)‹ISTHISANERRORRETURN?,‰BNE„PRIODECRŽBRANCHIFYESTODECRPRIORITY*.*„SBRYSTRT-CALLEDFROMTASKSTART(TSKSTART)*‰XDEFƒSBRYSTRTSBRYSTRTEQU„**(*„SBRYWAKE-CALLEDFROMWAKEUPANDWAIT*‰XDEFƒSBRYWAKESBRYWAKEEQU„****„SBRYASR‚-CALLEDFROMASRINTANDWTEVENT* ‰XDEFƒSBRYASR SBRYASR‚EQU„**H**************************************************************************†SETPRIORITYTOLIMIT*1PRIOLIMTMOVE.BTCBLPRI(A0),TCBRPRI(A0)‚SETLIMIT+‰BRA„SBREADY’BRANCHTONORMALREADYROUTINEH*************************************************************************4*„SBRYRELQ-CALLEDFROMRELINQUISHROUTINE(RELINQ)*‰XDEFƒSBRYRELQ3SBRYRELQMOVE.BTCBCPRI(A0),D0‹GETCURRENTPRIORITY"‰AND.B‚#$F0,D0’SETTOLOWESTLEVEL)‰MOVE.BD0,TCBRPRI(A0)‹SETREADYPRIORITY+‰BRA„SBREADY’BRANCHTONORMALREADYROUTINEG************************************************************************:*ƒSBRYCINT-CALLEDFROMCOMMONINTERRUPTHANDLER(COMINT)*‰XDEF‚SBRYCINTSBRYCINTEQUƒ*+‰BRA„SBREADY’BRANCHTONORMALREADYROUTINE‰ENDK1READY ASYST'EXORMACSREADY SAI!ƒTRAP 0 - PUT TASK ON READY LISTÔ2pREADYHD BSBRYACK PBSBRYEXIR þàB9þà ü>þà9þà è àÁþ3 àü6þàOïNuNu4é  ééééé•'INT REPL AFªªREPL SA³³REPL SY´_=/*†INT.REPL.AF=/*=/*=/*@=/*†IFNOOUTPUTARGUMENTFORTHELISTINGISSPECIFIEDTHECHAIN$=/*†FILEWILLDEFAULTTOINT.REPL.LS=/*=/IFC \1=ARG INT.REPL.LS=/ENDIF=/*)=ASM INT.REPL.SA/&.REPL.SA,REPL,\1;MRZ=66=/*{ Included files are:=/*ƒ--none--=/*}=/*=ENDéééé  éé¢**‰ASSEMBLYOPTIONSFORREPLB* Assemble for I/O with task interrupt handling not under VERSADOS*6VERSADOS‚EQU„0’1=ASSEMBLEFORRUNNINGUNDERVERSADOS-BIOS†EQU„0’1=ASSEMBLEFORRUNNINGWITHBIOS2INT‡EQU„1’1=ASSEMBLEFORTASKINTERRUPTHANDLING4MMU‡EQU„1’1=ASSEMBLEIFHAVEANMMUANDASSEMBLING)*§FOREITHERINTERRUPTORSTATUSCHECKINGéééééé« REPLUREP0_ÿÿÿÿ^ÿÿ UÂþˆ NùúBo=|NuN¹4!VCT¾¾ÀÂÄ Ô Ì € !"`0ŒÞŽ•/ @ç|Jèf B"x "ˆ!È Fß"_NuJø f@HçÿþAø @ç| g$"@ ‘f!È |øÿ$iQéN’Aø | fÜQø FßLßÿNuPø NQø 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 žfÿfa|`ÿ`HçAP$8 >&68 @HC(HD4<  g 4<8***HB* g2Hçz,* m6a€`NqLß8`Lßp&*HC6‚€4*AÕa8NqLß ‚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 4`tNs@ç9 4gaFî HçÿþNi/ /9 b oF,hHV/(@À@ÿ?"h 0P*n6` f€\,_( „!TCBgaÄJ@gÿZ @f AÖa7``ÿJ @fÿBJf&HC4<HBAÖa ÀNq`ÿ(HBHA(&64< ‚HB4`àâˆ&T(,_" !TCBga`Cð=C^AÖa7J®@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Öa¤Hzþˆ`>®ú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 ĪTKú`ª^Laaaaaaa a aNqNqa Nq`"`6`>?/_gL/ fX—Ns?/_g0/ gNa"/ fÈ?/ _g/ g&aaýr8 4g @ça $ªTKú`  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ßTNuJAkô&)fT¯`è&C#SFïB«'@ '@'H'BB«BkgëáIAA 7Aa”Ó«Fü'&© #K LßTNuHøÿÿ@ø!×Ni!ÉH!øL"x :3|•3|µ3| 3|°|`Þ@ç|»ø bgLíÿ !Í b*x HÕÿ8 4ga ÒÝNsNu|ð%a|`øNHøÿÿ1×!ï|LøÿÿNs@ç|JÐkü0ãHâ@S@0€kFßNua>T.raFß.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 NBB8 Z 0àIDAÒx XäIÒ¸ BJ8 Zfà _Nu@çè-f0Hç`Cø |(&$I"j ³üg°)&cì!I %H LßNs(&Ue°($e @&`°Jhfæh%&`¢($ð@&`”`’J¸ 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(( B28 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ûhüü¦ý&|P”˜,`ÀBûÖˆÞ~ ®öä÷"+v˜èœxüâ ~òf&ÆûhòNú¼ÿäð¦ñ?_fóKøIøB§$I"x fFJQk$¶1@f&i OJg·Øg`öHSAëaùla”Cé QÿÿfÎB„ g| g4´¬o  g($,aœ‚)aØ®- K gT¯Lß88Nu g@î-|ð&Aí-H”|0ãHâ@S@lü0€aù(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ø 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÷2&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÷&`îCé QÿÿfÜAía÷Lß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 gJg` 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úêp&È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`LuP$!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-@ fB2- 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†.8 vΆެÞ¸ vθ zà"FffAø 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€PP&ðP$R(-K gá-G$TNu., 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áˆB25P’uPR @aö<`aí$aíŠ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€05PuP$R@*áa÷(` `J…f aêîn `ªJ0Pfò"( à‰ÔA1P1‚P’u@DAÒu@1P!µ@ 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ê0&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êxNu 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†PP…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 l2JkL"Az, m6añ`Nq`8)I,- &\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ÞTNu$, 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Öxß®<&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ÚvNu^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Ï.J‡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 RPFßm-ÿ,|ð&­ ,gí-@ç|­-g <  @ ( g °fô!m AÕaØ2FßNuî)=H*fî*.(g . (gaÖf.-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Ñb"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 Jg` .".+@+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ÓT`þÔ@ç FJf8".*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ÒnNu-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Ð0Gø "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ˆ/<Hª? *(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#|NP*géI*géH`R*fbB€*&x fJ3g:(iD &TGëÿ¶*` &lJ¬g +*²n(K`ê¹Àg #K)I`#K&iD3|N¹J#|OLIé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)|OLIìJ&kD&Œ` )k`B)(&iD&¼¾&x fB3Iø  &TJ”fa˦°‹gIë`ì(«Aø ŠaÌÌ IraÔš`8aË€paz&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îDJg"P°©gAé `îF€NuBAø Š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ß#`¿bAùPpNAg` DATAÜ,HpnU€BXS€fú-ApAÖ"HB™B™BY2ü $I&I"üREP0"üPB‘NAfÄ$üDATA$ŽpNAf´-|nCî<"üTASK"ü NUM"üBER "ü S"üTART2ü "üTASK"ü NUM"üBER "ü T"üERMI"üNATE2¼ =| lOîÜ..na:Cî ¼!UDRáŠ]‚„ü 1BB¸ 0$:Žg2 BpN@`aê!È 0aEè ŠáŠQ‚„üÄüÔŠ!B1ú` 4!ü –aÀJ¸ fœB¸ GúœCë <€pN@`ad4+;B,g +x  !Í EëpBJjgREê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é2A022€@02€Nua&a°‹fa†a|°faÿ|Cí!É aÂazNuB€Aú$°Pgaÿ^B‡EЇ Eê Rÿÿfð‡#à*(B(:¢º„c*„ÿBKúûû" B*AMú,Bœ°ºrf†` (< B*DB†º„baþöNu hÿÿ g,a2 ÿfaN`aðJga$`a@°‹ga¾a`Ì3|ÿÿ Nu~Aè Cé ((„ÿB*(B*DB†º„baþNu•ÊBB‚BƒIÕKõhHz ?þàB9þà ü>þà9þà è àÁþàü6þàOïNuNuSS P þ þ þà@ þˆÿÿ'M146818 RDTIMER AF  RDTIMER SA))&RDTIMER RO22TIMEINT AF;;TIMEINT SADD qTIMEINT ROUUSTDTIM RO^^TRACER ROgg /=/*†RDTIMER.AFŠFORM146818REALTIMECLOCKCHIP=/*=/*=/*@=/*†IFNOOUTPUTARGUMENTFORTHELISTINGISSPECIFIEDTHECHAIN+=/*†FILEWILLDEFAULTTOM146818.RDTIMER.LS=/*=/IFC \1=ARG M146818.RDTIMER.LS=/ENDIF=/*4=ASM M146818.RDTIMER.SA,M146818.RDTIMER.RO,\1;RZ=040=/*{ Included files are:=/*ƒ9995.&.STR.EQ=/*}=/*=ENDéééééé‰PAGE**ˆINCLUDEFILES**ˆEQUSTR‰NOLIST‰INCLUDE9995.&.STR.EQ‰LIST‰PAGE@RDTIMER‚IDNTƒ5,0…READTIMERroutineforM146818realtimeclock.*$*ˆCOPYRIGHTED1980BYMOTOROLA,INC.**ˆ*********************ˆ*RDTIMER‚1.00„**ˆ*’**ˆ*HLD6ƒ09/30/80‚**ˆ*SFF5ƒ01/18/83‚**ˆ*********************,*…READTIMER-RETURNTIMERVALUE(MS)IND1*™TIMERVALUE(US)IND0*‰SECTIONLEVEL00*‰XDEFƒRDTIMER,SBRDTIM ‰XREF.STINTFLAG,TIMEOD,TIMINTV4*SBRDTIM‚DS.W„0ŒSUBROUTINEENTRYRDTIMERRDTIM1$‰CLR.BƒTINTFLAG…CLEARINTERRUPTFLAG'‰MOVE.L‚TIMEOD,D1„TIMEOD=MILLISECONDS/‰MOVE.L‚#1000,D0…1000-TIMINTV4=MICROSECONDS‰SUB.WƒTIMINTV4,D0‚MICROSECONDS$‰TST.BƒTINTFLAG…DIDINTERRUPTOCCUR? ‰BNE…RDTIM1‡IFYES-DOITAGAIN‰RTS‰ENDééé é!'[1RDTIMER ASYST'M146818 RDTIMER SA!ƒREAD TIMER routine for M146818 real time clock.E2BRDTIMER pTIMINTV4 BSBRDTIM pTIMEOD pTINTFLAG " 3P B8 "8  <èx J8 fèNu4ééééééé*=/*†M146818.TIMEINT.AF=/*=/*=/*@=/*†IFNOOUTPUTARGUMENTFORTHELISTINGISSPECIFIEDTHECHAIN#=/*†FILEWILLDEFAULTTOTIMEINT.LS=/*=/IFC \1=ARG M146818.TIMEINT.LS=/ENDIF=/*5=ASM M146818.TIMEINT.SA,M146818.TIMEINT.RO,\1;MRZ=040=/*{ Included files are:=/*ƒ9995.&.STR.EQ=/*ƒ9999.M146818.M146818.EQ=/*ƒ9995.&.PAT.EQ=/*}=/*=ENDééé ééé3‰PAGE**ˆINCLUDEFILES**ˆINCLUDE9995.&.STR.EQ!*ˆINCLUDE9999.M146818.M146818.EQ*ˆINCLUDE9995.&.PAT.EQ*‰INCLUDE9995.&.STR.EQ ‰INCLUDE9999.M146818.M146818.EQ‰INCLUDE9995.&.PAT.EQ‰PAGE?TIMEINT‚IDNTƒ5,1…TIMERINTERRUPTHANDLERFORM146818CLOCKCHIP*$*‰COPYRIGHTED1983BYMOTOROLA,INC.*.*†TIMERINTERRUPT-OCCURSONCEEACH15.625MS**•01/18/83‚(SFF5)*•04/07/83‚(7616)*:*•08/15/83‚SteveFranck--ChangedtoexitthroughCOMINT.*‰SECTIONLEVEL00* ‰XDEF„TIMEINT4‰XREF.S‚TINTFLAG,PTMADDR,TIMEOD,DATE,SVSTATE,COMINTZ9‰XREF.S‚TIMESLIC,TIMEOUT,TMSGFLAG,PATBEG,TIMINTV,TIMINTV4‰XREF.S‚TRACER,TRACFLAG,CKEXPA**0TIMEINT‚MOVEM.LD0-D1/A0-A1,-(A7)‡SAVEREGISTERS ‰MOVE.L‚PTMADDR,A0ˆTIMERADDRESS3ŠST…TINTFLAG‹Setflagtoindicatethatthetimehas$*§changed.‚Ifweinterruptedsomeone&*§whoisreadingthetime,hecantell%*§thathe'sgotgarbagebylookingat *§thisflag.6‰MOVE.B‚REGC(A0),D0…READREGCTOCLEARTIMERINTERRUPTTIMEIA)‰ADD.Lƒ#15,TIMEOD†TIMEOD=TIMEOD+15MS.‰SUB.Wƒ#625,TIMINTV4ƒ625usecHAVEALSOPASSED'‰BGT.SƒTIMEIBŠBRANCHIFNOEXTRAMSYET&‰ADD.Lƒ#1,TIMEOD‡ELSEADDTHEEXTRAMS(‰ADD.Wƒ#1000,TIMINTV4‚ANDRESETUSCOUNTTIMEIB!‰MOVE.L‚TIMEOD,D0ˆGETTIMEOFDAY-‰SUB.Lƒ#24*60*60*1000,D0‚ISITPASTMIDNIGHT?‰BMI.SƒTIMEI4‹BRANCHIFNO**…MIDNIGHTADJUSTMENTS*‰ADD.Lƒ#1,DATEŽINCREMENTDATE‰MOVE.L‚D0,TIMEODŒSAVETOD"‰MOVE.L‚#24*60*60*1000,D0„24HOURS4‰MOVE.L‚PATBEG,A1ŒSTARTOFPERIODICACTIVATIONTABLE%‰MOVE.W‚SR,-(A7)SAVESTATUSREGISTER!‰OR.W„#$700,SRINHIBITINTERRUPTS)‰MOVE.L‚PATEHDR(A1),A0‡STARTOFEXECLIST%TIMEI1ƒMOVE.L‚A0,D1TESTFORNOENTRY+‰BEQ.SƒTIMEI2BRANCHIFALLENTRIESCHANGED+‰SUB.LƒD0,PATTIME(A0)‡ADJUSTFORDAYCHANGE,‰MOVE.L‚PATNEXT(A0),A0‡GETNEXTENTRYINPAT"‰BRA…TIMEI1GOBACKFORNEXTENTRY'TIMEI2ƒMOVE.W‚(A7)+,SRALLOWINTERRUPTS)‰MOVE.L‚PATTHDR(A1),A0‡STARTOFTASKLIST%TIMEI3ƒMOVE.L‚A0,D1TESTFORNOENTRY+‰BEQ.SƒTIMEI4BRANCHIFALLENTRIESCHANGED<DE.+‰SUB.LƒD0,PATTIME(A0)‡ADJUSTFORDAYCHANGE,‰MOVE.L‚PATNEXT(A0),A0‡GETNEXTENTRYINPAT!‰BRA…TIMEI3GOBACKFORNEXTTASK*6*ˆCHECKFORANYEXECPROCEDURESWAITINGFORACTIVATION*:TIMEI4ƒMOVE.L„PATBEG,A1‹STARTOFPERIODICACTIVATIONTABLE*‰TST.L…PATEHDR(A1)‰ANYPROCEDURESWAITING?‰BEQ.S…TIMEI12BRANCHIFNO%‰MOVE.W„16(A7),D0‹GETSRATINTERRUPT&‰AND.W…#$27FF,D0‹GETRIDOFEXTRABITS#‰OR.W†#$2000,D0‹BESURESUPRISSET‰MOVE.L„TIMEOD,D1‹GETTOD.‰MOVE.W„#$0084,-(A7)ˆPUSHVORFOREVENTUALRTE(‰BSR‡CKEXPAŽGOTESTALLPATEXECENTRIES***†RESTOREREGISTERSANDTRACEIFREQUESTED*3TIMEI12‚MOVEM.L‚(A7)+,D0-D1/A0-A1„RESTOREREGISTERS&‰BTST„#TRCFTIMR,TRACFLAG„TRACEWANTED?ŠIF…THEN.SŠBSR„TRACERCALLTRACEROUTINE ŠDC.Wƒ$F F13ŠENDI *G*‚Checktoseewhetherthisticrepresentstheendofthetimeslicefor*‚therunningtask,andexit.*7ŠTST„TIMESLIC‹Ifwe'resupposedtobedoingtimeslicing9ŠIF…THEN.Sˆ(i.e.,iftics/timesliceparameter<>0), .ŠSUB„#1,TIMEOUT‰decrementthetimeoutcounter.'ŠIF…THEN.SˆIfitis0ornegative,5ŠST…TMSGFLAG‹settheflagthatwillcauseadispatch.ŠENDI–* ŠENDI–* 2ŠBRA.L‚COMINTZŒEitherway,exitthroughthecommon*§interrupthandler.    ‰ENDééZ1TIMEINT ASYST'M146818 TIMEINT SA !ƒTIMER INTERRUPT HANDLER FOR M146818 CLOCK CHIPº2pPTMADDR pCOMINTZ pDATE pTIMESLIC BTIMEINT pTIMEOUT pTIMINTV pTIMINTV4 pCKEXPA pTRACER pPATBEG pTIMEOD pTRACFLAG pTINTFLAG pSVSTATE pTMSGFLAG "¸F3J HçÀÀ x Pø (¸ xq n R¸ xè  8 €&\k:R¸ !À  3" !TCBgaBþêCð=C^AÖaBþÜJ®@gþæ$< ÿÿHCHD6`¤4ééééé‡<1DISPATCH ASREL'M68XXX DISPATCHSA3R „68000 DISPATCHERù2pLOADMMU pREADYHD pSBRYEXIR pTIMESLIC pSBRYEXT1 BEXIT0 ZBEXIT1 jpTIMEOUT BEXIT2 ppTERM BEXITI ŒBEXITIR †pTRACER pRUNNER pBKG_HEAD BDISPATCH BEXITABLE PpTRACFLAG pEXCSTACK pBKG_DISP A2pCKDELAY pMMUHERE BSVSTATE °pSBLOGPHY pTMSGFLAG "ÒI3E.x Fü aAöMø!ô"NJ© gì|,i 0.,@ÿfæ#n ®-!Î Kî.H30Br?%2 °føB8 !|øÿ1ø  ®-fd.-fh®-fhJ¸ g*n6aA„ nO3 ®ú`þðJngAÖaBþŒHzþˆ`>®úI3 HzþÖ`AÖaBþvHzþr`JnfB®@ÁAû-oü|úrNuHV,x Hî?ÿ-_83Ni-I<"x =iÿúúNu4éééé Q1EXCEPT ASREL'M68XXX EXCEPT SA4A „68000 USER TRAP AND EXCEPTION HANDLERú2pMMUFAULT pTIAT BPROGINT2 bBPROGINT3 dBPROGINT4 fBPROGINT5 hBPROGINT6 jBPROGINT7 lBPROGINT8 nBPROGINT9 xBPROGINTA pBPROGINTB rpSVXSTAK pSBQEVNTN pEXITI pEXITIR pTRACER pKILLER pRUNNER ÷2pISRERR BTRPVCT2 BTRPVCT3 pDISPATCH BTRPVCT4 pTRACFLAG BTRPVCT5 BTRPVCT6 BTRPVCT7 pEXCSTACK BTRPVCT8 BTRPVCT9 BCKEXMON àpMACSTRC BTRPVCTA BTRPVCTB BTRPVCTC pSBEXABRT T2BTRPVCTD pSVSTATE BTRPVCTE BTRPVCTF pEQDQ pSBLOGPHY "*J3 a aaaaaaaaaa a aaaaNq?/_g/ gºaAÈaA Ä8I3D g @çaA¶ªTKú`ª)Laaaaaaa a aNqNqa Nq`"`6I3 `>?/_gL/ fX—Ns?/_g0/ gNaBÿJ/ fÈP3ˆ ?/ _g/ g&aBÿ(aB ÿ$8 g @çaBÿªTKú` )DH.ž•I3€â n2-4.(g^2-,6"’må‰Üz n6aB"þÌ`Nq`<"FJ‘g6*8I3€€€ š,.<œ… n6aB"þ¬`Nq`(F-C<&8 8ß¿Ãfú/?,ÿú<<`B† m L3$ n-_¸-_¼.)g".Hg a@ nBþXJfBþR n,Cø  1pfHzX3 H Bþ<`B!þ8=@=|çGB.û`Bþ JFfBþAÖaBþ HzþŸ`Bþ P` €M3  )D`Býö~$.HffdfLLîÿ`®z,.P n6aB"ýÆ`Nq`&~ FO3 &(.T·„f È®Lg-CT`"R‡È®LggBý’RnX .X°nXbBý‚~HzBý|I3`X oBEgaBýnßüNu./,x ½üg*/ f".)g.H8gL3îH,_"—Ns,_"/8 NuaBý$< 4.&.(.8áL<Aî@aBüü-3@`®)Lîÿt®-@&Nuî ,`BüØ4é™K1PVSEM ASREL'M68XXX PVSEM SA5F „68000 TRAP 0--SEMAPHORE ROUTINEŒ2pSBREADY BSBP BSVXSTAK ZBPSEM4 BSBV ¦BVSEM4 ¦pKILLER BPSWAIT 6pDISPATCH pEXCSTACK "âJ3 @ç|JÐkü0ãHâ@S@0€kFßNua>T.raFß.x AÖaAÐ`AÌî ,B® F3 (f!NNu*@ - fø+N Nu.&|ð&î-HîÿtHç 8 Kï €I3PoaBÿx. ‡ÿIöpGr8ÝU@núLß0€Nu@ç|JÐkü0ãHâ@R@o0€FßNu(3/ "h!i €0€B© © ,"_FßNu4éééé éé¢V1SINT ASREL'M68XXX SINT SA6! „68000 DIRECTIVE--SIMULATE INTERRUPT TO ISR62pVCTUBGN ESINT pTRACER pTRACFLAG %bF3B‚,"x J1 n=|NuBƒ,g Co=| Nuá‹à Hz@çåŠ B/.3?8!gaA´îNs8!gaA¤ÝNu4éééééé«W1SUPER ASREL'M68XXX SUPER SA6R „M68000 DIRECTIVE--SWITCH TO SUPERVISOR MODEL2pMMULOAD pRUNNER pPANEL FSUPER pEXCSTACK pSBLOGPHY &XH3=| . €Kª{ûfDJnpg x (f2 x ‘ü, z n6aAÈ```3 *FB®LîÿN•B¸ ,x Nu4éé éééé´N1TRAP1 ASREL'M68XXX TRAP1 SA8  „68000 INVOKE RMS TRAP 1 DIRECTIVESØ2pSBGETTCB BT1NULLR  pT1PARBLK pT1TRGTSK pEXIT2 BTRAP1 BTRAP1B HpTRACER pENDTAB1 pTABLE1 pRUNNER pUDRBEG pISRRTE pEXITABLE pTRACFLAG pCKEXMON pSVSTATE pSBLOGPHY "N3 ?_fAøaAô=n\8 gaAâÿ.)g".Hg~aAÈ=@|J3Bn€ÿÿJ@kZåˆ €Iün¦Eù(ÕÀ4*? g0B…, n6aA‚`NqK3@HTn`d(F gAÔaBÿj`Vn`N*HÔÒHy*îNÒ$x $ gND@°jnFS€Àü EòH3€@Jªg6*f"²®f&?*$jHy*î@çNÒ0€ãˆAù(Nð=|`3€Bþö=|Ns4ééééé½'M68010 M68010 SAÒÒTRAP0 AFÛÛTRAP0 ROääCOMINT ROííDISPATCHROööEXCEPT ROÿÿPVSEM ROSINT ROSUPER ROTRAP1 RO##  ‰LLEN120* *ˆTypeof68000-familyprocessor*$CHIPTYPE‚EQU68010‚TypeofprocessoréééééééÊ=/*†TRAP0.AFŒFORM68010=/*=/*=/*@=/*†IFNOOUTPUTARGUMENTFORTHELISTINGISSPECIFIEDTHECHAIN!=/*†FILEWILLDEFAULTTOTRAP0.LS=/*=/IFC \1=ARG :.M68010.TRAP0.LS=/ENDIF=/*<=ASM :.M68010.M68010/:.M68XXX.TRAP0,:.M68010.TRAP0,\1;RZ=046=/*{ Included files are:=/*ƒ9995.&.UTILITY.MC=/*ƒ9995.&.ENV.EQ=/*ƒ9995.&.STR.EQ=/*}=/*=ENDééé éééÓL1TRAP0 ASYST'M68XXX TRAP0 SAR!ƒ68010 TRAP #0 handler and table.ÿ2pKILLERT0 pEXQEVNTI pEXQEVNTN pEXQEVNTT pCALL_GUA pRDTIMER BTRAP0 pADDPA pPSEM4 PHI_DIR_N %pWAKEUPX pEXEQDQ pVSEM4 pEXABRT pFREEPA pLOGPHY BTABLE0 BpGETTCB pASRINT pDSEGX pDSEMX pGTXTCB Á2pEXRQPA pTCBCR pPAUSE pDIOVX pDMONX pREADY pDSRVX pDASQX pPAGEFREE pBKG_SCHE pFNDGSEG pFNDTSEG pPAGEALLE pPAGEALOC pFNDUSEM pLOGPHYO pUPDTASQ "ŽH3fNsT?o>Ÿ €%bAæÐ€0;"Nû %cT—Nu/Ò2; Aû"„3ÿÿÿNuA¾A¾A¾A)¾A1¾A,¾A¾A/¾A¾A.¾A ¾A¾A2¾A#¾A&¾A*¾A"¾A+¾A!¾A¾A(¾A¾A¾A¾A¾A4¾A3¾A0¾A¾A'¾A¾ 3öA%¾A¾A¾A$¾ÿäA-¾A¾4ééééÜK1COMINT ASREL'M68XXX COMINT SA8P „68010 common interrupt handler.ü2pLOADMMU pLOADMMUI pPTMADDR pMMULOAD pSBRYCINT BCOMINTZ "pIOVCTBGN pVCTUBGN pSBWAKEUP pSBQEVNTI pEXITI pTRACER pKILLER BCOMINT pRUNNER BISRERR BISRRTE  pBKG_HEAD pTRACFLAG pBKG_DISP BCOMNISR X2pSVSTATE pTMSGFLAG "DL3$ „9(gaAôî`*_aAê _N`Lßÿ\?_f,J¹(gaA ÌfJ9("g|N3% øÿaA!¶AÖaA°`A¬Ns@ç9 (gaAšî HçÿþNi/ /9( oF,hHV?<„/(L3 @À@ÿ?"h 0P*n6`Bÿb fÿ|P,_( „!TCBgaBÿHJ@gÿT @f AÖaL3€€Bÿ6`ÿD @fÿ®ú`þðJngAÖaBþˆHzþ„`I3>®úHzþÖ`AÖaBþrHzþn`JnfB®@ÁAû-oü|úrNuHV,x Hî?ÿ3-_8Ni-I<"x =iÿøúNu4ééééîQ1EXCEPT ASREL'M68XXX EXCEPT SA@3 „68010 USER TRAP AND EXCEPTION HANDLERú2pMMUFAULT pTIAT BPROGINT2 bBPROGINT3 dBPROGINT4 fBPROGINT5 hBPROGINT6 jBPROGINT7 lBPROGINT8 nBPROGINT9 xBPROGINTA pBPROGINTB r pSVXSTAK pSBQEVNTN pEXITI pEXITIR pTRACER pKILLER pRUNNER ÷2pISRERR BTRPVCT2 BTRPVCT3 pDISPATCH BTRPVCT4 pTRACFLAG BTRPVCT5 BTRPVCT6 BTRPVCT7 pEXCSTACK BTRPVCT8 BTRPVCT9 BCKEXMON HpMACSTRC BTRPVCTA BTRPVCTB BTRPVCTC pSBEXABRT T2BTRPVCTD pSVSTATE BTRPVCTE BTRPVCTF pEQDQ pSBLOGPHY "’J3 a aaaaaaaaaa a aaaaNq?/_g/ g"aAÈaA Ä8I3D g @çaA¶ªTKú`)LaaTaaaaa a aNqNqanNq`†/I3faBÿv?o ?/_gL/ f X—O3Ns?/_g0/ gRaBþæ/ fÌ?/ _g/ g*aBþÄaB þÀJ3"8 g @çaBþ²ªTKú` )DH.ž•â n2-4.(gb2-,6L3 "’må‰Üz n6aB"þh`Nq`@"FJ‘g:*8 U…š,.<œ… n6aB"þF`Nq`(FF3-C<&8 Uƒ8ß¿Ãfú/?,ÿú<<`B† m n-_¸-_¼.)g".HR3B g a@ nBýðJfBýê n,Cø  1pfHzBýÔ`B!ýÐ=@=|çGB.V3$‚ û`Bý¸JFfBý²AÖaBý¬ Hzý¨Ÿ`Bý  P` €)D`BýŽ~$.HffdI3fLLîÿ`®z,.P n6aB"ý^`Nq`&~ F&(.T·„f È®Lg-CTR3€ `"R‡È®LggBý*RnX .X°nXbBý~HzBý`X oBEgaBýßüNu.F3 /,x ½üg*/ f".)g.H8gîH,_"—Ns,_"/8 L3 NuaBü¶$< 4.&.(.8áL<Aî@aBü”`®)Lîÿt®-@&3Nuî ,`Büp4é÷K1PVSEM ASREL'M68XXX PVSEM SAA9 „68010 TRAP 0--SEMAPHORE ROUTINEŒ2pSBREADY BSBP BSVXSTAK ZBPSEM4 BSBV ªBVSEM4 ªpKILLER BPSWAIT 6pDISPATCH pEXCSTACK "æJ3 @ç|JÐkü0ãHâ@S@0€kFßNua>T.raFß.x AÖaAÐ`AÌî ,B® F3 (f!NNu*@ - fø+N Nu.&|ð&î-HîÿtHç 8 U€KïI3 €PoaBÿv. T‡‡ÿIöpGr8ÝU@núLß0€Nu@ç|JÐkü0ãHâ@R@o0€,3FßNu/ "h!i €0€B© © ,"_FßNu4éééééé V1SINT ASREL'M68XXX SINT SAB „68010 DIRECTIVE--SIMULATE INTERRUPT TO ISR62pVCTUBGN ESINT pTRACER pTRACFLAG %jF3B‚,"x J1 n=|NuBƒ,g Co=| Nuá‹à ?<„Hz @ç?<63! „åŠ B/?8!gaA¬îNs8!gaAœÝNu4éééééé W1SUPER ASREL'M68XXX SUPER SABD „M68010 DIRECTIVE--SWITCH TO SUPERVISOR MODEL2pMMULOAD pRUNNER pPANEL FSUPER pEXCSTACK pSBLOGPHY &TH3 =| . €Kª{ûf@Jnpg x (f. x Uˆ, z n6aAÌ```*FB®3€LîÿN•B¸ ,x Nu4éééé ééN1TRAP1 ASREL'M68XXX TRAP1 SAD „68010 INVOKE RMS TRAP 1 DIRECTIVESØ2pSBGETTCB BT1NULLR pT1PARBLK pT1TRGTSK pEXIT2 BTRAP1 BTRAP1B HpTRACER pENDTAB1 pTABLE1 pRUNNER pUDRBEG pISRRTE pEXITABLE pTRACFLAG pCKEXMON pSVSTATE pSBLOGPHY "N3 ?_fAøaAô=n\8 gaAâÿ.)g".Hg~aAÈ=@|J3Bn€ÿÿJ@kZåˆ €IünªEù(ÕÀ4*? g0B…, n6aA‚`NqK3@HTn`h(F gAÔaBÿj`Vn`R*HÔÒHy*òNÒ$x $ gRD@°jnJS€Àü EòH3 Jªg:*f"²®f*?*$j?<„Hy*ò@çNÒ0€ãˆAù(Nð=|3 `Bþò=|Ns4ééééé'M6840 RDTIMER AF00RDTIMER SA991RDTIMER ROBBTIMEINT AFKKTIMEINT SATT wTIMEINT ROee =/*†M6840.RDTIMER.AF=/*=/*=/*@=/*†IFNOOUTPUTARGUMENTFORTHELISTINGISSPECIFIEDTHECHAIN)=/*†FILEWILLDEFAULTTOM6840.RDTIMER.LS=/*=/IFC \1=ARG M6840.RDTIMER.LS=/ENDIF=/*/=ASM M6840.RDTIMER.SA,M6840.RDTIMER.RO,\1;RZ=46=/*{ Included files are:=/*ƒ9995.&.STR.EQ=/*ƒ9995.&.TR1RTCD.EQ=/*ƒ9999.M6840.M6840.EQ=/*}=/*=ENDéééééé(‰PAGE**ˆINCLUDEFILES**ˆINCLUDEƒ9995.&.STR.EQ*ˆINCLUDEƒ9995.&.TR1RTCD.EQ*ˆINCLUDEƒ9999.M6840.M6840.EQ*‰NOLIST‰INCLUDEƒ9995.&.STR.EQ‰INCLUDEƒ9995.&.TR1RTCD.EQ‰INCLUDEƒ9999.M6840.M6840.EQ‰LIST‰PAGE=RDTIMER‚IDNTƒ1,0…READTIMERroutinefortheM6840timerchip.*$*ˆCOPYRIGHTED1980BYMOTOROLA,INC.**ˆ*********************ˆ*RDTIMER‚1.00„**ˆ*’**ˆ*HLD6ƒ09/30/80‚**ˆ*********************'*…READTIMER-RETURNTIMEOFDAYIND1*™TIMERVALUEIND0*‰SECTIONLEVEL00*‰XDEFƒRDTIMER,SBRDTIM‰XREF.STINTFLAG,TIMINTV4‰XREF.SPTMADDR,TIMEOD*SBRDTIM‚EQU…*ŒSUBROUTINEENTRYRDTIMER‚MOVE.L‚A0,-(A7)#‰MOVE.L‚PTMADDR,A0ƒADDRESSOFTIMERRDTIM1ƒCLR.LƒD1$‰CLR.BƒTINTFLAG…CLEARINTERRUPTFLAG ‰MOVEPƒMSBT3(A0),D1‚READTIMER3‰MOVE.W‚D1,D0ˆSAVETIMERVALUE‰LSR.Wƒ#8,D1ˆGETMSBYTEONLY ‰NEG.WƒD1.‰ADD.WƒTIMINTV4,D1‚#TIMESCOUNTERDECREMENTED‰LSR.Wƒ#2,D1ˆWANTTIMEINTVONLY ‰ADD.LƒTIMEOD,D1…ADDTIMEOFDAY$‰TST.BƒTINTFLAG…DIDINTERRUPTOCCUR? ‰BNE…RDTIM1‡IFYES-DOITAGAIN‰MOVE.L‚(A7)+,A0‰RTS‰ENDéé é12X1RDTIMER ASYST'M6840 RDTIMER SAB!ƒREAD TIMER routine for the M6840 timer chip.P2pPTMADDR BRDTIMER pTIMINTV4 BSBRDTIM pTIMEOD pTINTFLAG "*03$ @/ x BB8  0àIDAÒx äIÒ¸ J8 fà _Nu4ééééééé:=/*†M6840.TIMEINT.AF=/*=/*=/*@=/*†IFNOOUTPUTARGUMENTFORTHELISTINGISSPECIFIEDTHECHAIN)=/*†FILEWILLDEFAULTTOM6840.TIMEINT.LS=/*=/IFC \1=ARG M6840.TIMEINT.LS=/ENDIF=/*0=ASM M6840.TIMEINT.SA,M6840.TIMEINT.RO,\1;MRZ=46=/*{ Included files are:=/*ƒ9995.&.STR.EQ=/*ƒ9995.&.TCB.EQ=/*ƒ9999.M6840.M6840.EQ=/*ƒ9995.&.PAT.EQ=/*ƒ9995.&.PANEL.EQ=/*}=/*=ENDééé éééC‰PAGE**ˆINCLUDEFILES**ˆINCLUDEƒ9995.&.STR.EQ*ˆINCLUDEƒ9995.&.TCB.EQ*ˆINCLUDEƒ9999.M6840.M6840.EQ*ˆINCLUDEƒ9995.&.PAT.EQ*ˆINCLUDEƒ9995.&.PANEL.EQ*‰NOLIST‰INCLUDEƒ9995.&.STR.EQ‰INCLUDEƒ9995.&.TCB.EQ‰INCLUDEƒ9999.M6840.M6840.EQ‰INCLUDEƒ9995.&.PAT.EQ‰INCLUDEƒ9995.&.PANEL.EQ‰LIST‰PAGEBTIMEINT‚IDNTƒ3,1…TIMERINTERRUPTHANDLERFORTHEM6840TIMERCHIP.*$*‰COPYRIGHTED1980BYMOTOROLA,INC.*,*†TIMERINTERRUPT-OCCURSONCEEACHTIMINTV**ˆREV‚2.00„02/08/81‚(HLD6)*ˆREV‚3.00„11/06/81‚(HLD6)*ˆREV‚3.10„02/09/82‚(HLD6)*.*•09/83‚SJF--ChangedtoexitthroughCOMINT;*£eliminatedVM01FLAGstuff.*‰SECTIONLEVEL00* ‰XDEF„TIMEINT4‰XREF.S‚TINTFLAG,PTMADDR,TIMEOD,DATE,SVSTATE,COMINTZ0‰XREF.S‚TIMESLIC,TIMEOUT,TMSGFLAG,PATBEG,TIMINTV$‰XREF.S‚TRACER,PANEL,TRACFLAG,CKEXPA*0TIMEINT‚MOVEM.LD0-D1/A0-A1,-(A7)‡SAVEREGISTERS!‰MOVE.L‚PANEL,A0†ADDRESSOFPANEL(‰MOVE.B‚#0,FPTTO(A0)‚KEEPREADYLIGHTON ‰MOVE.L‚PTMADDR,A0ˆTIMERADDRESS3ŠST…TINTFLAG‹Setflagtoindicatethatthetimehas$*§changed.‚Ifweinterruptedsomeone&*§whoisreadingthetime,hecantell%*§thathe'sgotgarbagebylookingat *§thisflag.!‰MOVE.B‚CR2SR(A0),D0„CLEARSTATUS'‰MOVE.B‚MSBT3(A0),D0…CLEART3INTERRUPT 1ŠCLR.L‚D1‘D1.L<--timeintervalcorrespondingto'ŠMOVE.WTIMINTV,D1‰atickofthetimer. #‰ADD.LƒD1,TIMEODˆADDTOTIMEOFDAY!‰MOVE.L‚TIMEOD,D0ˆGETTIMEOFDAY-‰SUB.Lƒ#24*60*60*1000,D0‚ISITPASTMIDNIGHT?‰BMI.SƒTIMEI4‹BRANCHIFNO**…MIDNIGHTADJUSTMENTS*‰ADD.Lƒ#1,DATEŽINCREMENTDATE‰MOVE.L‚D0,TIMEODŒSAVETOD"‰MOVE.L‚#24*60*60*1000,D0„24HOURS4‰MOVE.L‚PATBEG,A1ŒSTARTOFPERIODICACTIVATIONTABLE%‰MOVE.W‚SR,-(A7)SAVESTATUSREGISTER!‰OR.W„#$700,SRINHIBITINTERRUPTS)‰MOVE.L‚PATEHDR(A1),A0‡STARTOFEXECLIST%TIMEI1ƒMOVE.L‚A0,D1TESTFORNOENTRY+‰BEQ.SƒTIMEI2BRANCHIFALLENTRIESCHANGED+‰SUB.LƒD0,PATTIME(A0)‡ADJUSTFORDAYCHANGE,‰MOVE.L‚PATNEXT(A0),A0‡GETNEXTENTRYINPAT"‰BRA…TIMEI1GOBACKFORNEXTENTRYLHU0'TIMEI2ƒMOVE.W‚(A7)+,SRALLOWINTERRUPTS)‰MOVE.L‚PATTHDR(A1),A0‡STARTOFTASKLIST%TIMEI3ƒMOVE.L‚A0,D1TESTFORNOENTRY+‰BEQ.SƒTIMEI4BRANCHIFALLENTRIESCHANGED+‰SUB.LƒD0,PATTIME(A0)‡ADJUSTFORDAYCHANGE,‰MOVE.L‚PATNEXT(A0),A0‡GETNEXTENTRYINPAT!‰BRA…TIMEI3GOBACKFORNEXTTASK*6*ˆCHECKFORANYEXECPROCEDURESWAITINGFORACTIVATION*:TIMEI4ƒMOVE.L„PATBEG,A1‹STARTOFPERIODICACTIVATIONTABLE*‰TST.L…PATEHDR(A1)‰ANYPROCEDURESWAITING?‰BEQ.S…TIMEI12BRANCHIFNO%‰MOVE.W„16(A7),D0‹GETSRATINTERRUPT&‰AND.W…#$27FF,D0‹GETRIDOFEXTRABITS#‰OR.W†#$2000,D0‹BESURESUPRISSET‰MOVE.L„TIMEOD,D1‹GETTOD(‰BSR‡CKEXPAŽGOTESTALLPATEXECENTRIES***†RESTOREREGISTERSANDTRACEIFREQUESTED*3TIMEI12‚MOVEM.L‚(A7)+,D0-D1/ A0-A1„RESTOREREGISTERS&‰BTST„#TRCFTIMR,TRACFLAG„TRACEWANTED?ŠIF…THEN.SŠBSR„TRACERCALLTRACEROUTINE ŠDC.Wƒ$FF13ŠENDI *G*‚Checktoseewhetherthisticrepresentstheendofthetimeslicefor*‚therunningtask,andexit.*7ŠTST„TIMESLIC‹Ifwe'resupposedtobedoingtimeslicing9ŠIF…THEN.Sˆ(i.e.,iftics/timesliceparameter<>0), .ŠSUB„#1,TIMEOUT‰decrementthetimeoutcounter.+ŠIF…THEN.SˆIfitisnow0ornegative,5ŠST…TMSGFLAG‹settheflagthatwillcauseadispatch.ŠENDI–* ŠENDI–* 2ŠBRA.L‚COMINTZŒEitherway,exitthroughthecommon*§interrupthandler.   ‰ENDéé]1TIMEINT ASYST'M6840 TIMEINT SA!ƒTIMER INTERRUPT HANDLER FOR THE M6840 TIMER CHIP.º2pPTMADDR pCOMINTZ pDATE pTIMESLIC BTIMEINT pTIMEOUT pTIMINTV pCKEXPA pTRACER pPATBEG pPANEL pTIMEOD pTRACFLAG pTINTFLAG pSVSTATE pTMSGFLAG "²F3 THçÀÀ x | x Pø (( B28 Ó¸  8 €&\k:R¸ !À  <&F3 €\"x @ç| i "g‘¨ P`ôFß i"g‘¨ P`ô"x J© g0/@'ÿA3$’€@ "8 aBÿvLß8 gaBÿfÿJx g Sx nPø `BÿP4éééééé]'M68451 LOADMMU AFrrLOADMMU SA{{'oLOADMMU RO¬¬ =/*†M68451.LOADMMU.AF=/*=/*=/*@=/*†IFNOOUTPUTARGUMENTFORTHELISTINGISSPECIFIEDTHECHAIN*=/*†FILEWILLDEFAULTTOM68451.LOADMMU.LS=/*=/IFC \1=ARG M68451.LOADMMU.LS=/ENDIF=/*3=ASM M68451.LOADMMU.SA,M68451.LOADMMU.RO,\1;MRZ=050=/*{ Included files are:=/*ƒ9995.&.STR.EQ=/*ƒ9995.&.TCB.EQ=/*ƒ9995.&.TST.EQ=/*ƒM68451.M68451.EQ=/*ƒM68010.BUSERRFT.EQ=/*}=/*=ENDééééééj**‰INCLUDEFILES**‰INCLUDE„9995.&.STR.EQ*‰INCLUDE„9995.&.TCB.EQ*‰INCLUDE„9995.&.TST.EQ*‰INCLUDE„M68451.M68451.EQ*‰INCLUDE„M68010.BUSERRFT.EQ*ŠNOLISTŠINCLUDE„9995.&.STR.EQŠINCLUDE„9995.&.TCB.EQŠINCLUDE„9995.&.TST.EQŠINCLUDE„M68451.M68451.EQŠINCLUDE„M68010.BUSERRFT.EQŠLISTŠPAGE:LOADMMU‚IDNTˆ5,1‚68451MMUHANDLERFOR68010-BASEDSYSTEMS*#*‰COPYRIGHTED1983BYMOTOROLA,INC.**‰*********************‰*LOADMMU…5.00**‰*’**‰*761602/28/83„**‰*********************6*‰TASKSWITHADDRESSSPACE0GETUNMAPPEDENTIRESPACE*?*‰TASKSWITHOTHERADDRESSSPACESGETONLYTHEIRASSIGNEDSPACE*0*‰PAGEFAULTISUSEDTOSWAPSEGMENTDESCRIPTORS*ŠSECTIONLEVEL00ŠXDEF„LOADMMU,LOADMMUI'ŠXREF.S‚MMUHERE,MMULOAD,TRACER,TRACFLAG*LOADMMU%ŠMOVE.W‚SR,-(A7)ŠSaveinterruptlevel!ŠOR.W„#$700,SRŠInhibitinterrupts.ŠMOVE.B‚TSTASN(A5),D0…Getaddressspacenumber/ŠMOVE.L‚A5,MMULOADˆSaveaddressofcurrentloadŠMOVE.L‚MMUHERE,A5ˆPointtoMMUŠMOVE.B‚D0,AST1(A5)‡Userdata ŠMOVE.B‚D0,AST2(A5)‡Userprogram /ŠBTST„#TRCFMMU,TRACFLAGShouldentrybetraced? ŠIF…THENŠBSR…TRACERŒBuildtraceentryŠDC.W„$DD08TracecodeŠENDI 1ŠMOVE.W‚(A7)+,SRŠRestorepreviousinterruptlevel ŠR TS—ReturnŠPAGELOADMMUI!ŠOR.W„#$700,SRŠInhibitinterrupts.ŠMOVE.B‚TSTASN(A5),D0…Getaddressspacenumber/ŠMOVE.L‚A5,MMULOADˆSaveaddressofcurrentloadŠMOVE.L‚MMUHERE,A5ˆPointtoMMUŠMOVE.B‚D0,AST1(A5)‡Userdata ŠMOVE.B‚D0,AST2(A5)‡Userprogram /ŠBTST„#TRCFMMU,TRACFLAGShouldentrybetraced? ŠIF…THENŠBSR…TRACERŒBuildtraceentryŠDC.W„$DD08TracecodeŠENDI ŠRTEŠPAGE**ˆMakeentryin!ASN**:*‰CreateanewAddressSpaceNumberandinsertitintoTCB**,*‰ENTRY:„A5‚PointstoTCBtoreceivenewASN**‰EXIT:…ReturnPCifsuccessful(*“ReturnPC+2ifnonewASNisavailable* *›01234567*‰USESREGISTERS‚D**™A*„P** ŠXDEF†CRASN*ŠXREF.S„ASNTBL,KILLER*CRASNs]|M„"Œ”Mœ8"‰MOVE.LASNTBL,D0ŽIstherea!ASN?‰BEQ.S‚CRASN13Branchifnone‰MOVE.LD0,A0’A0--->!ASN‰CMP.L‚#'!ASN',(A0)‹Isit!ASN?‰BEQ.S‚CRASN11Branchifyes2‰BSR„KILLER‘Mu!!Itisthere,butitisnotthere.CRASN11"‰LEA„4(A0),A0Pointtofirstentry$‰MOVE.W#127-1,D0Ž127entriesinallCRASN12‚TST.L‚(A0)+’Freeentry?(‰DBEQƒD0,CRASN12Branchbackifnotfree,‰BEQ.S‚CRASN12ABranchifanentrywasfound"ŠADD.L‚#2,(A7)Error--tablefullŠRTSšTakeerrorreturn"CRASN12AMOVE.LA5,-(A0)Useentry‰NEG.B‚D0•ComputeASN‰ADD.B‚#127,D0#‰MOVE.LTCBTST(A5),A0ŠPointto!TST"‰MOVE.BD0,TSTSTAT(A0)‰DropinASNCRASN13ŠRTSšReturntocallerŠPAGE**‡Deletetaskfrom!ASN**%*‰ENTRY:ƒA4‚PointstoTCBtoloseASN* *›01234567*‰USESREGISTERS‚D**™A*‚** ŠXDEF…DEASNŠXREF.SƒASNTBL,KILLER*DEASN#ˆMOVE.L‚ASNTBL,D0„Istherean!ASN?ˆBEQ.SƒDEASN7‡BranchifnoneˆMOVE.L‚D0,A0ˆA0--->!ASNˆCMP.Lƒ#'!ASN',(A0)Isit!ASN?ˆBEQ.SƒDEASN5‡Branchifyes1ˆBSR…KILLER‡Mu!!Itisthere,butitisnotthereDEASN5#ˆMOVE.L‚TCBTST(A4),A1Pointto!TST ˆCLR.WƒD0‹Prepareforshortload4ˆMOVE.B‚TSTASN(A1),D0GetAddressSpaceNumber(ASN)!ˆBEQ.SƒDEASN7‡ASN#0notrelevant&ˆCMP.Wƒ#128,D0†Shouldbelessthan128ˆBLT.SƒDEASN6‡BranchifokˆBSR…KILLER‡ElsecrashDEASN6ˆLSL.Wƒ#2,D0ˆIndexinto!ASNˆCLR.Lƒ(A0,D0.W)„RemoveentryDEASN7ŠRTSReturntocallerŠPAGE*"*‰Unloadasegmentfrom68451MMUs*(*‰ENTRY:‚(A5,D5)-->Segmentinformation* ŠXDEF„UNLDMMU&ŠXREF.S‚FRST451,LAST451,CURR451,CURRSD*UNLDMMU*ŠTST.B‚TSTASN(A5)ŠIsthisaddressspace0?ŠBEQ.S‚UNLDEXITŒBranchifyes'ŠMOVE.LFRST451,A1ŠPointtofirst68451$ŠMOVE.B#1,D0Segmentdescriptor#1UNLD10%ŠMOVE.BD0,DP(A1)‹Pointtodescriptor"ŠMOVE.BSSR(A1),D1ŠReaddescriptor+ŠBTSTƒ#SSREN,D1‹Isthisdescriptorenabled?ŠBEQ.S‚UNLDNEXTŒBranchifno'ŠMOVE.BAC6(A1),D1ŠGetdescriptor'sASN8ŠCMP.B‚TSTASN(A5),D1‡Isthistheaddressspacewe'rein?ŠBNE.S‚UNLDNEXTŒBranchifno'ŠMOVE.WAC0(A1),D1ŠGetdescriptor'sLBA!ŠCMP.W‚TSTLB(A5,D5),D1†LBALE?ŠBGT.S‚UNLDNEXTŒBranchifyes-ŠMOVE.B#0,SSR(A1)ŠElseclearthisdescriptor5ŠMOVE.LA1,CURR451ŠGivethisdescriptortonextfault5ŠMOVE.BD0,CURRSD+3‰RestofdescriptorinfoforfaultUNLDNEXTŠADDQ.B#1,D0NextdescriptorŠCMP.B‚#$20,D0EndofthisMMU?ŠBNE.S‚UNLD10ŽBranchifno#ŠLEA„$40(A1),A1ŠMoveontonextMMUŠCLR.B‚D0’Descriptor#0)ŠCMP.L‚LAST451,A1ŠArewebeyondallMMUs?ŠBLE.S‚UNLD10ŽBranchifnoUNLDEXITŠRTS˜ElsereturnŠPAGE*>*‰Diagnosebuserrorandattempt68451segmentdescriptorswap*"*‰Savesandrestoresallregisters*ŠXDEF„MMUFAULTŠXREF.S‚MMUHERE,RUNNER&ŠXREF.S‚FRST451,LAST451,CURR451,CURRSDMMUFAULT)ŠMOVEM.LD0-D7/A0-A6,-(A7)‚SaveregistersŠTST.LƒMMUHEREŒIsthereanmmu?ŠBEQ…MMUFRTSŒBranchifno<ŠMOVE.L‚MMULOAD,A0‰A0<--ptrtoTSToftaskthat'srunning;'*§notethatthisisnotnecessarilyth e*§RUNNER(wemaybeinanISR).ééé/ŠTST.BƒTSTASN(A0)‰Isthistaskaddressspace0?ŠBEQ…MMUFRTSŒBranchifyes8ŠTR0.LOGPHY,<15*4+8+AOB(A7)>,#2Checkforvalidaddress/ŠBRA.SƒMMUF10BranchifAOBisinlogicalspace ŠNOP˜Else,+ŠBRA…MMUFRTSŒBranchifnotinlogicalspaceMMUF10(ŠBSR…CRSDCreatelba,lam,pbainD0,D1,D2ŠMOVE.W‚TSTASN(A0),D3†ASNtoD3$ŠMOVE.B‚TSTCTL+1(A0,D5),D3DSTtoD3:ŠBSET„#SSRUSED,D3ˆSettousedsoitwon'tgetswappedsoonŠPAGE**‰Selectadescriptortoswap**‰1.‚Disableddescriptor.*‰2.‚Firstdescriptorcheckedandfoundunused*‰3.‚Firstdescriptorchecked*-ŠMOVE.W‚SR,-(A7)ŠSavecurrentinterruptlevel!ŠOR.W„#$700,SRŠInhibitinterrupts2ŠMOVEM.LFRST451,A0-A3…Get68451SYSPARparameters'ŠMOVE.L‚A2,A4A4-->MMUbeingexamined&ŠMOVE.L‚A3,D7D7hasdescriptornumberFSD20%ŠMOVE.B‚D7,DP(A4)‰Pointtodescriptor"ŠMOVE.B‚SSR(A4),D6ˆReaddescriptor+ŠBTST„#SSREN,D6‰Isthisdescriptorenabled?ŠBEQ.SƒFSDEMPTYŠBranchifno0ŠBCLRƒ#SSRUSED,D6‡Hasthisdescriptorbeenused?ŠBEQ.S‚FSDNOUSEŠBranchifnoééé/ŠMOVE.BD6,SSR(A4)ˆEraseusedbitindescriptorŠADDQ.B#1,D7NextdescriptorŠCMP.B‚#$20,D7‹EndofthisMMU?ŠBNE.S‚FSD40Branchifno#ŠLEA„$40(A4),A4ˆMoveontonextMMU#ŠCLR.B‚D7Beginwithdescriptor#0$ŠCMP.L‚A1,A4ArewebeyondallMMUs?ŠBLE.S‚FSD40Branchifno"ŠMOVE.LA0,A4GobacktofirstMMUŠADDQ.B#1,D7Descriptor#1FSD40+ŠCMP.W‚A3,D7Samedescriptorwestartedon?ŠBNE.S‚FSD20Branchbackifno$ŠCMP.L‚A2,A4SameMMUwestartedon?ŠBNE.S‚FSD20BranchbackifnoŠPAGE**‰Usefirstdescriptorchecked*FSDFIRST*(*‰Usefirstdescriptorfoundtobeempty*FSDEMPTY*(*‰Usefirstdescriptornotrecentlyused*FSDNOUSE**‰Loadthisdescriptor*/ŠMOVEM.WD0-D3,AC0(A4)„LoadmostofaccumulatorŠMOVE.B‚#$FF,AC8(A4)…ASM#ŠMOVE.B‚D7,DP(A4)ˆDescriptornumber"ŠMOVE.B‚LDO(A4),D6‡Loaddescriptor(ŠBNE.SƒMMUFRTSR‰Branchifitdidn'twork"ŠMOVE.B‚AC6(A4),AST1(A0)Userdata%ŠMOVE.B‚AC6(A4),AST2(A0)Userprogram**‰FixupSYSPARparameters*2 ŠADDQ.B‚#1,D7ŒStartnexttimewithnextdescriptorŠCMP.Bƒ#$20,D7ŠEndofthisMMU?ŠBNE.SƒFSD100‹Branchifno#ŠLEA…$40(A4),A4‡MoveontonextMMU#ŠCLR.BƒD7Startwithdescriptor#0$ŠCMP.LƒA1,A4ŒArewebeyondallMMUs?ŠBLE.SƒFSD100‹Branchifno"ŠMOVE.L‚A0,A4ŒGobacktofirstMMUŠADDQ.B‚#1,D7ŒDescriptor#1FSD100#ŠMOVE.L‚A4,CURR451‡SavecurrentMMU+ŠMOVE.B‚D7,CURRSD+3†Savecurrentdescriptor**‰Returntofaultedtask*!ŠADD.Lƒ#2,A7ŒRemoveSRfromstack5ŠMOVEM.L(A7)+,D0-D7/A0-A6Restoreoriginalregisters+ŠADD.Lƒ#8,A7ŒRemoveunusedreturnaddressesŠRTE–Continuetask*%*‰Returntonormalexceptionhandling*MMUFRTSR1ŠMOVE.W‚(A7)+,SR‰RestorepreviousinterruptlevelMMUFRTS,ŠMOVEM.L(A7)+,D0-D7/A0-A6RestoreregistersŠRTS–ContinuenormalhandlingŠPAGE* *‰Computeonesegmentdescriptor**‰ENTRY:‚D6=Physicaladdress*‘D3=Logicaladdress*‘(A0,D5)-->TSTMMUentry**‰EXIT:ƒD0=lba *‘D1=lam *‘D2=pba*‘(A0,D5)UNDISTURBED*CRSDŠMOVE.L‚D3,D0D0=la ŠLSR.Lƒ#8,D0LOSELOWBYTEOFla ŠLSR.Lƒ#8,D6LOSELOWBYTEOFpa,ŠMOVE.L‚#-1,D1ŒONESTOSTOPlamFORMINGLOOPŠMOVE.W‚D1,D3D3=lamŠCLR.BƒD2D2=nŠMOVE.W‚D6,D1D1=paŠEOR.WƒD0,D1D1=paEORla**‰FORMLARGESTPOSSIBLElam*CRSDAŠBTST„D2,D1la=paINBITn?ŠBNE.SƒCRSDCBRANCHIFNOŠBCLR„D2,D3CLEARTHISlamBITŠADD.Bƒ#1,D2BUMPnŠBRA.SƒCRSDATRYNEXTBIT**‰ADJUSTlamFORLOWERBOUNDARY*CRSDCŠMOVE.W‚D0,D1D1=laŠAND.WƒD3,D1D1=lamANDla(ŠCMP.WƒTSTLB(A0,D5),D1ƒlamANDla>=lb?ŠBHS.SƒCRSDDBRANCHIFYESŠSUB.Bƒ#1,D2DECREMENTnŠBSETƒD2,D3HALVETHElamRANGEŠBRA.S‚CRSDCTRYAGAIN**‰ADJUSTlamFORUPPERBOUNDARY*CRSDDŠMOVE.W‚D3,D4ŒD4=lamŠNOT.WƒD4D4=NOTlamCRSDD10ŠMOVE.W‚D0,D1ŒD1=laŠAND.WƒD3,D1ŒD1=lamANDla'ŠADD.WƒD4,D1ŒD1=(lamANDla)+NOTlam2ŠCMP.WƒTSTLE(A0,D5),D1‚(lamANDla)+NOTlam<=leŠBLS.SƒCRSDEŒBRANCHIFYESŠSUB.Bƒ#1,D2ŒDECREMENTnŠBSET„D2,D3ŒHALVETHElamRANGE"ŠBCLR„D2,D4ŒHALVETHENOTlamRANGEŠBRA.SƒCRSDD10ŠTRYAGAINCRSDEŠAND.WƒD3,D0ŒD0=lba,ŠMOVE.W‚TSTPO(A0,D5),D2‚D2=PHYSICALOFFSETŠADD.WƒD0,D2ŒD2=paŠMOVE.W‚D3,D1ŒD1=lam ŠRTS–RETURNŠENDééU1LOADMMU ASYST'M68451 LOADMMU SA@!ƒ68451 MMU HANDLER FOR 68010-BASED SYSTEMSä2BLOADMMU BLOADMMUI .BMMUFAULT pMMULOAD BUNLDMMU ÄpASNTBL BCRASN XBDEASN ’pCURR451 pTRACER pKILLER pFRST451 pLAST451 pRUNNER pCURRSD pTRACFLAG pMMUHERE pSBLOGPHY ">H3 @ç|- !Í *x @@8 gaAÚÝFßNu|- !Í *x @J3D@8 gaA®ÝNs 8 g2 @ !ASNgaA–Aè0<~J˜WÈÿügT—NuL3 ! D m6@ Nu 8 g* @ !ASNgaBÿ\"l6B@) g @€maBÿFåHB°F3NuJ- gR"x <@))1g()&²- f2) ²uPm²uPn|1J3P"!É À!R fÂCé@B³ø o¶NuHçÿþJ¸ g x J( g¶z,/NaBþÂF3@`Nq`¤a¦6( 0PÃ@ç|Lø (J. G),1g(†g"F1F3R  fIì@B¹Éo(HR¾KfιÊfÊH¬ |ÿ(G),?f4l&l&G3 R  fIì@B¹Éo(HR!Ì Ç!TLßÿPNsFßLßÿNu àˆàŽrÿ6B2±AD3fƒR`ö2ÂC²pPdSÃ`ð8FD2ÂCÒD²pPcSÄ`ìÀC40PÔ@2Nu4 ééé餿'M68XXX TRAP0 SA¹¹(7INIT AFêêINIT SAóäD ÂINIT RO== KILLER AFNNKILLER SAWW&KILLER RO``POWRFAILAFiiPOWRFAILSArr,POWRFAILRO{{READY AF„„READY SA±READY RO¦¦RMS AF¯¯RMS SA¸¸)RMS ROÁÁSELFTESTAFÊÊSELFTESTSAÓÓ1SELFTESTROÜÜTABLE1 AFåå‰IFEQ„CHIPTYPE-68000/TRAP0…IDNTƒ5,1‡68000TRAP#0handlerandtable.‰ENDC‰IFEQ„CHIPTYPE-68010/TRAP0…IDNTƒ5,1‡68010TRAP#0handlerandtable.‰ENDCO*v*****************************************************************************O*******************************************************************************O**********************************************************************************É***H***…FILE:‚TRAP0--ALLTHESTUFFDEALINGWITHTHETRAP#0MECHANISM.ƒ******É***J***…ENVIRONMENT:‚PartoftheRMS68KexecfortheMotorola68000family.***(***‡Copyright1983byMotorola,Inc.¢******É***I***…FUNCTION:‚Inthisfileare(1)theTRAP#0handler,(2)thetable‚***E***‡containingoffsetstotheTRAP#0routines,and(3)aTRAP#0…***I***‡routinewhichreturnstheentrypointaddressforagivenTRAP#0******‡directive.¸******É***O*******************************************************************************O*******************************************************************************O*^***************************************************************************** *,*‚Revisionhistory(addnewchangestotop).*…Date†Author‰ChangesG*…--------‚-------------‚----------------------------------------------C*†8/12/83‚SteveFranckƒRemovedrestrictionthatTRAP#0routinesbe-*žinlow32Kofaddressspace,andchangedto**žword-wide,position-independentoffsets..*žTRAP0andTABLE0werecombinedatthistime,"*žandtheENTRYroutinewasadded.*  **‚Includedfiles:*8*‰UTILITY.MCMacrosofgeneralutility(e.g.PUSH,POP).2*‰ENV.EQ”Equatesdependentonprocessorchiptype.2*‰STR.EQ”EquatesforsupervisorcodeunderRMS68K.*ŠNOLISTŠINCLUDE9995.&.UTILITY.MCŠINCLUDE9995.&.ENV. EQŠINCLUDE9995.&.STR.EQŠLIST  * *‚XDEF's.*0ŠXDEFƒTRAP0ŽEntrypointfortheTRAP#0handler. 0ŠXDEFƒTABLE0StartaddressoftheTRAP#0table.2ŠXDEFƒHI_DIR_NUM‰HighestTRAP#0directivenumber.  *±<º:Â3ÊCÒIÚ6*‚XREF's.‚TABLE0'sroutinenamesareXREFedinTABLE0.*+ŠXREFƒKILLERT0‹Routinetocrashthesystem.  ŠSECTIONLEVEL00ŠOPT„BRSŠPAGEO*v*****************************************************************************O**********************************************************************************É***1***…ROUTINE:‚TRAP0--CALLATRAP#0ROUTINE.š******É***J***…FUNCTION:‚Whenanentityrunninginsupervisormodebutnotlinked***D***‡withRMS68Kwantstoinvokesomeexecfunction,hemovesthe†***D***‡directivenumberofthefunctionintoD0anddoesaTRAP#0.†***E***‡ThempuvectorshereandweusetheTRAP#0table,TABLE0,to…***#***‡JMPtothedesiredroutine.§******É***8***…NOTES:‚TRAP#0callsfromusermodeareignored.“******É***E***…REGISTERUSAGE:‚(A)rgument‚(D)estroyed‚(P)reserved‚(R)eturnedƒ***)***Œ0ƒ1ƒ2ƒ3ƒ4ƒ5ƒ6ƒ7‡SRhi„SRlo(CCR)…******‡D:ƒAD‚.ƒ.ƒ.ƒ.ƒ.ƒ.ƒ.‡.ˆD******‡A:ƒ.ƒ.ƒ.ƒ.ƒ.ƒ.ƒ.ƒP ******É******…ENTRYCONDITIONS:³***7***‡D0ƒ=directive#oftheroutinetobeexecuted.‘***F***‡PC&SR(&maybeVOR)ofcallerarestacked,aswithanyTRAP.„******É***O*******************************************************************************O*^***************************************************************************** TRAP0: ***‚Ensureweweren'tcalledfromusermode.*9ŠBTSTƒ#5,(SP)ŒChecktheSRonthestacktoseeifwewere)ŠIF…THENŠinsupervisormode.‚Ifnot,,ŠRTE—justreturntowhoeverdidtheTRAP#0.ŠENDI–* *K*‚CleanupthestacktomakeitlooklikehejustdidaJSRtotheroutine.*+ŠADDQ.L#2,SPŽRemovetheSRfromthestack.‰IFEQ‚CHIPTYPE-680102ŠMOVE.W2(SP),4(SP)ˆLowerhalfofPCreplacesVOR.8ŠMOVE.W(SP)+,(SP)‰UpperhalfofPCreplaceslowerhalf.‰ENDC *5*‚Validatethedirectivenumberandcalltheroutine.*>ŠCMP.L‚#HI_DIR_NUM,D0…Ifthedirectivenumberisoutofrange,ŠBHI.L‚KILLERT0‹callKILLER.1ŠADD.L‚D0,D0ŽD0<--directive#*2foruseasan*§indexintoatableofwords.>ŠMOVEƒTABLE0(PC,D0.L),D0D0<--offsetfromstartofTABLE0to*§theroutinehewants.5ŠJMP„TABLE0(PC,D0)†Jumptotheroutine;theaddress= *§*ƒbaseaddrofTABLE0+offset*§*ƒfromTABLE0totheroutine.ŠPAGEO*v*****************************************************************************O**********************************************************************************É***G***…ROUTINE:‚ENTRY--GETENTRYPOINTFORANEXECROUTINE(TRAP#0)„******É***F***…FUNCTION:‚Returnstheentrypointaddressforanexecroutine.…***B***‡DoingaJSRtothereturnedaddressisfasterthandoingaˆ***A***‡TRAP#0,whichisusefulfordrivers.‚Itcanalsobeusedˆ***=***‡tovalidatethataroutinewithsuchanumberexists.******É***E***…REGISTERUSAGE:‚(A)rgument‚(D)estroyed‚(P)reserved‚(R)eturnedƒ***)***Œ0ƒ1ƒ2ƒ3ƒ4ƒ5ƒ6ƒ7‡SRhi„SRlo(CCR)…******‡D:ƒ.ƒAP‚.ƒ.ƒ.ƒ.ƒ.ƒ.‡.ˆD******‡A:ƒRƒ.ƒ.ƒ.ƒ.ƒ.ƒ.ƒP ******É******…ENTRYCONDITIONS:³***G***‡D1ƒ=numberoftheroutineforwhichtheentrypointisdesired.******É***-***…EXITCONDITIONSDIFFERENTFROMENTRY:Ÿ******‡Iftheroutineexists:¬***;***‰A0ƒ=entrypointaddressforthespecifiedroutine.‹***2***‰ReturntocalleratthePCafterhiscall.–***&***‡Iftheroutinedoesnotexist:¤***6***‰ReturntocalleratthePCafterhiscall+2.’******É***O*******************************************************************************O*^******************************************************** ********************* ENTRY: ***‚Ensurethedirectivenumberisinrange.*<ŠIF.LD1#HI_DIR_NUMTHEN‚Iftheroutine#istoohigh,6ŠADDQ.L#2,(SP)Œreturntothecaller2bytesafterthe-ŠRTS—normalreturnpoint,tosignalanerror.ŠENDI–* *=* It's in range, so calculate the routine address and return.* ŠPUSH.LD1‘Savethecaller'sD1.5ŠADD.L‚D1,D1ŽD1<--2*routine#(touseasanindex*§intoatableofwords).BŠMOVEƒTABLE0(PC,D1.L),D1D1<--offsettotheroutinefromTABLE0.=ŠLEA„TABLE0(PC,D1),A0ƒA0<--addressoftheTRAP#0routine=%*§addrofTABLE0+offsetfromTABLE0*§totheroutine."ŠPOP.L‚D1‘Restorethecaller'sD1. 'ŠRTS—Returntothecallersuccessfully.ŠPAGEO**********************************************************************************É***G***…DATASTRUCTURE:‚TABLE0--TABLEOFOFFSETSTOTRAP#0ROUTINES.„******É***F***…FUNCTION:‚ThistableisusedtocalculateaddressesofTRAP#0…***C***‡routines.‚ThereisanentryforeachTRAP#0directive,and†***E***‡theyareinorderbydirectivenumber.‚Eachentryistheword„***D***‡displacementfromthebeginningofthistabletotheTRAP#0†***D***‡routine.‚ThistechniquehelpsmakeRMSposition-independent.…******É***O******************************************************************************* *L*‚UsetheSETUPmacrotodefinetableentries.‚YougivethemacrotheequateN*‚forthedirectivenumberandthelabeloftheroutineyouwanttogotowhen1*‚thatdirectiveiscalled,anditdoestherest.*0*‚SETUP[.L],*I*‚Usethe.LiftheroutineisLocaltothismoduleratherthanexternal.* SETUP…MACRODIR_NUMƒSET„(*-TABLE0)/2ŠIFEQƒDIR_NUM-\1ŒNOLISTŒIFNCƒ'\0','L'ŽXREFƒ\2ŒENDC ŒDC…\2-TABLE0ŒLISTŒMEXITŠENDCSHOULD_BESET„\10ŠFAILƒ499Thisdirectiveisinthewrongplace!!ŠENDM  ŠOPT„MEX,NOCL  TABLE0: *§Whatitdoes(*§-------------------------------------- *ŠSETUP‚0,KILLERT0‰Unassigned;callKILLER. 1ŠSETUP‚T0P,PSEM4ŠPoperation(wait)onsemaphore. 3ŠSETUP‚T0V,VSEM4ŠVoperation(signal)onsemaphore. 0ŠSETUP‚T0READY,READY†Puttaskonthereadylist. :ŠSETUP‚T0PAGAL,PAGEALOCƒAllocatepagesofphysicalmemory. :ŠSETUP‚T0PGFR,PAGEFREE„Free(return)pagesofphysmemory. <ŠSETUP‚T0GETTCB,GETTCB„GetTCBaddrgiventaskname,session. 3ŠSETUP‚T0FNDSEG,FNDTSEGƒFindsegmentnameinaTST. BŠSETUP‚T0LOGPHY,LOGPHY„Validatelogicaladdr,converttophysical. 1ŠSETUP‚T0FNDGSG,FNDGSEGƒFindsegmentnameinGST. -ŠSETUP‚T0ASRINT,ASRINT„Interrupttargettask. /ŠSETUP‚T0QEVNTN,EXQEVNTN‚PlaceeventinanASQ. ;ŠSETUP‚T0FNDSEM,FNDUSEMƒFindentryinusersemaphoretable. 8ŠSETUP‚T0GTXTCB,GTXTCB„GetTCBusingsessionprovidedin =ŠSETUP‚T0PAUSE,PAUSE†PausewhilewaitingforI/Otocomplete. @ŠSETUP‚T0DSRVX,DSRVX†Deallocateserverfunctionwhentaskstops. @ŠSETUP‚T0DSEMX,DSEMX†Deallocateusersemaphoreswhentaskstops. 4ŠSETUP‚T0DASQX,DASQX†DeallocateASQwhentaskstops. @ŠSETUP‚T0DSEGX,DSEGX†Deallocatememorysegmentswhentaskstops. >ŠSETUP‚T0EXEQDQ,EXEQDQ„Sendmessagetoserverwhentaskstops. )*§Detachtaskfromexceptionmonitorwhen ŠSETUP‚T0DMONX,DMONX†taskstops. 'ŠSETUP‚T0EXABRT,EXABRT„Abortusertask. &ŠSETUP‚T0WAKEUP,WAKEUPXƒWakeupatask. (*§PlaceeventinASQwhileNOTservicing&ŠSETUP‚T0QEVNTT,EXQEVNTT‚aninterrupt. $*§PlaceeventinASQwhileservicing&ŠSETUP‚T0QEVNTI,EXQEVNTI‚aninterrupt. #ŠSETUP‚T0UPDATQ,UPDTASQƒUpdateASQ. "*§ValidateODDlogicaladdressand,ŠSETUP‚T0LOGPHO,LOGPHYOƒconverttophysical. 2ŠSETUP‚T0PAGALL,PAGEALLE‚Allocatepagesofmemory. 7ŠSETUP‚T0RDTIM,RDTIMER„Gettimeofdayinmilliseconds. '*§Disconnecttaskfromuservectorwhen ŠSETUP‚T0DIOVX,DIOVX†taskstops. *ŠSETUP‚T0ADDPA,ADDPA†AddentrytothePAT.  "ŠSETUP‚T0CRTCB,TCBCR†CreateaTCB. *ŠSETUP‚T0KILLER,KILLERT0‚Crashthesystem. 5ŠSETUP‚T0FREEPA,FREEPA„ReturnPATentrytofreelist. 1ŠSETUP‚T0RQPA,EXRQPA†Requestperiodicactivation. =ŠSETUP.LT0ENTRY,ENTRY…Getentrypointforatrap#0routine. #*§Scheduleroutineforexecutionin'ŠSETUP‚T0SCHED,BKG_SCHEDULEƒbackground. <ŠSETUP‚T0GUARD,CALL_GUARDED‚Callsubroutineinguardedmode.    DHI_DIR_NUMEQU(*-TABLE0)/2-1‡Highestdirective#forTRAP#0calls.   ‰ENDééééééé =/*†INIT.AF=/*=/*=/*@=/*†IFNOOUTPUTARGUMENTFORTHELISTINGISSPECIFIEDTHECHAIN =/*†FILEWILLDEFAULTTOINIT.LS=/*=/IFC \1=ARG :.M68XXX.INIT.LS=/ENDIF=/*)=ASM :.M68XXX.INIT,:.M68XXX.INIT,\1;RZ=75=/*{ Included files are:=/*ƒ9995.&.STR.EQ=/*ƒ9995.&.TCB.EQ=/*ƒ9995.&.TST.EQ=/*ƒ9995.&.PANEL.EQ=/*ƒ9995.&.GST.EQ=/*ƒ9995.&.UST.EQ=/*ƒ9995.&.TRACE.EQ=/*ƒ9995.&.MAP.EQ=/*ƒ9995.&.IOV.EQ=/*ƒ9995.&.PAT.EQ=/*ƒ9995.&.UDR.EQ=/*}=/*=ENDéééé ééâ**ˆINCLUDEFILES**ˆINCLUDEƒ9995.&.STR.EQ*ˆINCLUDEƒ9995.&.TCB.EQ*ˆINCLUDEƒ9995.&.TST.EQ*ˆINCLUDEƒ9995.&.PANEL.EQ*ˆINCLUDEƒ9995.&.GST.EQ*ˆINCLUDEƒ9995.&.UST.EQ*ˆINCLUDEƒ9995.&.TRACE.EQ*ˆINCLUDEƒ9995.&.MAP.EQ*ˆINCLUDEƒ9995.&.IOV.EQ*ˆINCLUDEƒ9995.&.PAT.EQ*ˆINCLUDEƒ9995.&.UDR.EQ*‰NOLIST‰INCLUDEƒ9995.&.STR.EQ‰INCLUDEƒ9995.&.TCB.EQ‰INCLUDEƒ9995.&.TST.EQ‰INCLUDEƒ9995.&.PANEL.EQ‰INCLUDEƒ9995.&.GST.EQ‰INCLUDEƒ9995.&.UST.EQ‰INCLUDEƒ9995.&.TRACE.EQ‰INCLUDEƒ9995.&.MAP.EQ‰INCLUDEƒ9995.&.IOV.EQ‰INCLUDEƒ9995.&.PAT.EQ‰INCLUDEƒ9995.&.UDR.EQ‰LIST‰PAGE INIT…IDNTƒ5,1„SYSTEMINITIALIZER*$*ˆCOPYRIGHTED1980BYMOTOROLA,INC.**ˆSYSTEMINITIALIZER**ˆEXECUTESWHENIPLCHUNKISIN**,*‚Revisionhistory(addnewchangestotop).*…Date†Author‰ChangesH*…________‚_____________‚_______________________________________________C*†12/23/83MarkLanus…Re-wrotememoryinitializationroutinetofix.*žbugin"hole"processing(andseveralmore).** ‰XREF.S„PANEL‰XREF.S„MACSTRC‰XREF.S„MAPBEG‰XREF.S„EXCSTACK ‰XREF.S„TCBHD‰XREF.S„READYHD‰XREF.S„SEMLIST‰XREF.S„SEMEND‰XREF.S„GSTBEG‰XREF.S„USTBEG‰XREF.S„PATBEG‰XREF.S„UDRBEG‰XREF.S„TRACEBEG‰XREF.S„TRACFLAG ‰XREF.S„TIAT ‰XREF.S„CCBHD‰XREF†CRASHSAV‰XREF.S„VCTUBGN‰XREF.S„IOVCTBGN‰XREF.S„ADEFTYP‰XREF.S„TDEFTYP‰XREF.S„SDEFTYP‰XREF.S„UDEFTYP‰XREF.S„ASNTBL‰XREF.S„NOTLAM ‰XREF.S„LAM‰XREF.S„ENDSYSPŠXREF.SBKG_HEADŠXREF.SBKG_TAILŠXREF.SBKG_ACTIVE* ‰XDEF†KILLER*‰PAGE* *„REFERENCESTOINITDATASEGMENT* ‰SECTION8‰XREF„MEMTABL,ENDMEMT‰XREF„TCBHEAD,RDYHEAD'‰XREF„ESTART,EEND,ESTACK,PANELA,TRCFLAG*‰XREF„SMEMLO,SMEMHI,DISPATCH,GSTSIZ,UDRSIZ!‰XREF„USTSIZ,TRCSIZ,IOVSIZ,PATSIZ%‰XREF„MEMTYPA,MEMTYPT,MEMTYPS,MEMTYPU ‰XREF„BUGTRAC‰XREF„WHERLOAD,PAGESIZE,ASN**(*ˆEXPECTTHEFIRST16BYTESTODISAPPEAR*(START„MOVE.L#$400,A7‚LOADSTACKPOINTER.‰MOVE.LD0,$3FCƒBESUREMEMORYCANBEACCESSED*äëbôAüBB 67<$@,=4$<6DML;T-\UdSl'th|?„LŒ ”jœ%¤e¬<´K¼LÄ9ÌQÔ;$*ˆCLEARMEMORYTHROUGHENDOFSYSPAR*2‰LEA„CRASHSAV,A0„STARTWHEREUSEABLEMEMORYSTARTS(‰MOVE.L#ENDSYSP,D6„ENDATENDOFSYSPAR$‰SUB.L‚A0,D6ŠCOUNTOFBYTESTOCLEAR#‰ADD.L‚#255,D6ˆCLEARTOENDOFPAGE‰CLR.B‚D6EVENPAGEBOUNDRY‰BSR„TBLCLRBˆCLEARMEMORY*'‰MOVE.LESTACK(PC),A7‚LOADSYSTEMSTACK/‰MOVE.LA7,EXCSTACK„SAVESTACKPOINTERFOREXEC,‰MOVE.LBUGTRAC(PC),MACSTRC‚SETMACSTRACNOW*,*‡FINDOUTIFPANELEXISTS-PUT'BF'INLED*)‰MOVE.LPANELA(PC),A1„PANELADDRESSTOA1!‰MOVE.LA1,PANEL‰SAVEITFOREXEC ‰BEQ.S‚PANELBEŠGOONIFNOPANEL(‰LEA„PANELBE(PC),A0ƒGOHEREONBUSERROR"‰MOVE.LA0,$8ŒSETBUSERRORVECTOR+‰MOVE.W#$80,FPLEDST(A1)TESTFORBUSERROR ‰MOVE.W#$BF,D1ŠWANT'BF'INLED‰BSR„PANELEDD‰GOLIGHTITUP ‰BRA.S‚MOVE2LOŠGOTOMOVEMEMORY*1PANELBE‚MOVE.L#CRASHSAV,PANEL‚SETPANELTODUMMY'‰MOVE.LEXCSTACK,A7†RESETSTACKPOINTER‰PAGE*/*†MOVEALLOFOSTOLOWERMEMORYIFAPPROPRIATE*3MOVE2LO‚MOVE.L‚WHERLOAD(PC),D1ƒWHEREAREWELOADED?‰B  EQ.SƒVECTINITŠBRANCHIFAT0'‰MOVE.L‚ESTART(PC),A3…'MOVETO'ADDRESS!‰MOVE.L‚D1,A2'MOVEFROM'ADDRESS'‰LEA…ENDMEMT(PC),A4„ENDOFMEMORYTABLE#‰ADD.Lƒ#$800,A4ŠEXTRAFORMINI-TCBS&‰LEA…VECTINIT(PC),A0ƒWHERETOGOLATER%‰SUB.LƒA2,A0SUBTRACTSTARTOF'FROM'‰ADD.LƒA3,A0ADDSTARTOF'TO'(‰LEA…MOVDONE(PC),A1„GOHEREONBUSERROR‰MOVE.L‚A1,$8BUSERRORVECTOR*#MOVEALL‚MOVE.L‚(A2)+,(A3)+‡MOVEALL‰CMP.LƒA2,A4FINISHED?‰BGT…MOVEALL‹BRANCHIFNO ‰ADD.Lƒ#6,A7*'MOVDONEJMP†(A0)ŽCONTINUEINOTHERCOPY‰PAGE**ˆSETUPVECTORS*;VECTINITMOVE.LESTART(PC),A2ƒSTARTSEARCHATSTARTOFEXEC&‰MOVE.L#'!VCT',D0†D0=!VCTFORCOMPARE&‰LEA„$200(A2),A0…ENDOFSEARCHADDRESS-VECTSRCHCMP.L‚(A2)+,D0ˆISTHISVECTORTABLE?‰BEQ.S‚VECTSET‰BRANCHIFFOUND%‰SUB.L‚#2,A2‹WANTTOCHECKEVERYWORD$‰CMP.L‚A0,A2‹SHOULDSEARCHCONTINUE?‰BNE„VECTSRCHˆBRANCHIFYES#‰BSR„KILLERŠNOVECTORTABLE--QUIT*&VECTSET‚LEA„0,A3ŒADDRESSOFVECTOR#0*‰MOVE.L(A2)+,A4ˆADDRESSOFCOMINTROUTINE;‰MOVE.LA4,VCTUBGN†SAVECOMINTADDRESSFORVECTORUSETABLE‰CLR.L‚D6ŽSET1STVECTOR#‰CLR.L‚D5ŽCLEARFORSHORTLOAD+‰MOVE.LD5,A5‹INITIALIZEVECTORSETADDRESS+‰TST.B‚(A2)ŒSHOULDVECTOR0BEINITIALIZED?‰BEQ.S‚VECTENT‰BRANCHIFYES‰MOVE.W#2,D6‹1STVECTORTOSET‰LEA„8,A3ŒADDRESSOFVECTOR#2*,VECTENT‚MOVE.L(A2)+,D0ˆGETNEXTTABLEENTRY,‰BNE.S‚VECTENT2ˆBRANCHIFNOTENDOFENTRIES+‰MOVE.W#300,D5‰USEHI#FORVECTORCOMPARE ‰BRA.S‚VECTCMP‰BRANCHTOCOMPARE-VECTENT2ROL.L‚#8,D0‹PUTVECTOR#INBITS0-7‰MOVE.BD0,D5‹SAVEVECTOR#‰LSR.L‚#8,D0‹RESTOREADDRESS+‰CMP.L‚#1,D0‹SHOULDTHISVECTORBESKIPPED?‰BNE.S‚VECTCMP‰BRANCHIFNO‰NEG.L‚D0ŽNEGATIVE=SKIPFLAG*&VECTCMP‚CMP.W‚D6,D5‹COMPAREVECTOR#'S$‰BMI„VECTENT‰BRANCHTOGETNEWENTRY*‰BNE.S‚VECTSTORˆBRANCHIFNOTATENTRYYET ‰MOVE.LD0,A5‹NEWVECTORADDRESS*"VECTSTORMOVE.LA5,D1‹TESTADDRESS+‰BMI.S‚VECTINC2ˆIFNEG-SKIPVECTORCHANGE$‰BNE.S‚VECTINC1ˆBRANCHIFADDRESSOK+‰MOVE.LA4,(A3)+ˆUSECOMINTROUTINEADDRESS%‰BRA.S‚VECTINC3ˆBRANCHTOINCRVECTOR*0VECTINC1MOVE.LA5,(A3)+ˆSTOREADDRESSINVECTOR%‰ADD.L‚#2,A5‹INCREMENTVECTORADDRESS‰BRA.S‚VECTINC3*6VECTINC2LEA„4(A3),A3ˆDONOTSETVECTOR-INCRADDRESS'VECTINC3ADD.L‚#1,D6‹INCREMENTVECTOR#‰CMP.L‚#$400,A3ˆENDOFVECTORS?‰BNE„VECTCMP‰BRANCHIFNO*/*‡SETBUSERROR--INCASEERROROCCURSININIT*)‰PEA„KILLER(PC)†PUTERRORRETURNONSTACK)‰MOVE.W#'BE',-(A7)„BUSERRORRETURNFLAG‰PAGE*J*‚InitializeSYSPARparametersforbackgroundandCALL_GUARDEDprocessing.*>ŠMOVE.L#0,BKG_HEADˆInitializebackgroundqueuetoempty:‚headDŠMOVE.L#BKG_HEAD,BKG_TAILptris0andtailptrpointstoheadptr.8ŠSF…BKG_ACTIVE‰InitializeACTIVEflagtofalsesincethe*§backgroundisn'trunning.   *+*‡STARTPROCESSINGMEMORYPARTITIONENTRIES* ‰BSR‡IMEM ‰PAGE**†SETDEFAULTMEMORYTYPES*1‰MOVE.B‚MEMTYPA(PC),ADEFTYPƒDEFAULTTYPEFORASQS1‰MOVE.B‚MEMTYPT(PC),TDEFTYPƒDEFAULTTYPEFORTCBS9‰MOVE.W‚MEMTYPS(PC),SDEFTYPƒDEFAULTTYPEFORSYSTEMTASKS7‰MOVE.W‚MEMTYPU(PC),UDEFTYPƒDEFAULTTYPEFORUSERTASKS**ˆPUTTASKSONLISTS*,‰MOVE.LTCBHEAD(PC),TCBHDƒPOINTTOFIRSTTCB0‰MOVE.LRDYHEAD(PC),READYHDPOINTTOFIRSTREADY**ˆMISCSYSPARS*/‰MOVE.LBUGTRAC(PC),MACSTRCƒMACSBUGTRACEENTRY* *ˆSEMAPHORES*,SEMS…LEA„SEMLIST,A1STARTOFEXECSEMAPHORES+INITSEM‚MOVE.W#1,(A1)SETCOUNTFIELDTO1 ‰CLR.L‚2(A1)’CLEARADDRESSFIELD(‰ADD.L‚#6,A1’INCREMENTTONEXTSEMAPHORE$‰CMP.L‚#SEMEND,A1ENDOFSEMAPHORES? ‰BLT.S‚INITSEMBRANCHBACKIFNO**ˆINITIALIZEMMU* ‰XREF„INITMMU3‰BSR…INITMMUˆINVOKECONFIGURATION-DEPENDENTROUTINE**‰ADDRESSSPACEPARAMETERS*$ŠMOVE.LPAGESIZE(PC),D0‡GETPAGESIZE:ŠIF…THEN.SˆIfthepagesizespecifiedbytheSysgenis%ŠMOVE.L#256,D0Œzero,defaultto256.ŠENDI–* ŠSUB.L‚#1,D0‘NOTLAM=PAGESIZE-1$ŠMOVE.LD0,NOTLAMNOTLAMINTOSYSPAR-ŠMOVE.L#$FFFFFFFF,LAMˆPREPARETOCOMPUTELAM$ŠSUB.L‚D0,LAMLAM=$FFFFFFFF-NOTLAM*  ŠCLR.L‚ASNTBLSETFORNOASNTBLŠMOVE.LASN,D2ASNTBLDESIRED?ŠBEQ.S‚ASN99‘BRANCHIFNO.ŠMOVE.L#2,A0‘512BYTESFOR127ADDRESSSPACES(ŠMOVE.L#T0PAGAL,D0‹PAGEALOCDIRECTIVE#ŠTRAPƒ#0”EXECCALL"ŠBRA.S‚ASN10‘BRANCHIFGOODRETURN!ŠBSR„KILLERCRASHIFERRORRETURN4ASN10…MOVE.LA0,ASNTBLSAVEASNTBLADDRESSINSYSPAR/ŠBSR„TBLCLRCLEARADDRESSSPACETABLETOZEROESŠMOVE.L#'!ASN',(A0)ŠEYECATCHERASN99**ˆBUILDGLOBALSEGMENTTABLE*ABLDGSTƒCLR.L‚GSTBEGˆSETSYSPARADDRESSTO0INCASENOGSTNEEDED‰MOVE.LGSTSIZ(PC),D2NEEDGST?‰BEQ.S‚BLDUSTˆBRANCHIFNO)‰MOVE.LD2,A0‰PUTSIZEINA0FORPAGEALOC(‰MOVE.L#T0PAGAL,D0ƒPAGEALOC‚DIRECTIVE#‰TRAPƒ#0ŒEXECCALL%‰BRA.S‚BLDGST01†BRANCHIFGOODRETURN!‰BSR„KILLERˆCRASHIFERRORRETURN3BLDGST01MOVE.LA0,GSTBEG…SAVEGSTADDRESSFOREXEC‰BSR„TBLCLRˆCLEARGSTTOZEROES‰MOVE.L#'!GST',(A0)‚EYECATCHER-‰MOVE.W#1,GSTNSEG(A0)‚NUMBEROFGSTSEGMENTS)‰MOVE.WD2,GSTNPAGE(A0)GSTLENGTHTOGST‰LSL.L‚#8,D2‰LENGTHINBYTES2‰SUB.L‚#GSTENTRY,D2‚SUBTRACTLENGTHOFHEADERINFO&‰DIVUƒ#GSTEL,D2…DIVIDEBYENTRYLENGTH-‰MOVE.WD2,GSTMENT(A0)SAVEMAXIMUM#ENTRIES)‰LEA„GSTENTRY(A0),A2ƒADDRESSOF1STENTRY%‰MOVE.L‚A2,GSTFENT(A0)ƒSAVEINHEADER**ˆBUILDUSERSEMAPHORETABLE*9BLDUSTƒCLR.L‚USTBEG†CLEARUSTADDRESSINCASENONENEEDED‰MOVE.LUSTSIZ(PC),D2‚NEEDUST?‰BEQ.S‚BLDVTU†BRANCHIFNO(‰MOVE.LD2,A0‡PUTSIZEINA0FORPAGALOC,‰MOVE.L#T0PAGAL,D0DIRECTIVE#FORPAGEALOC‰TRAPƒ#0ŠEXECCALL%‰BRA.S‚BLDUST01„BRANCHIFGOODRETURN‰BSR„KILLER†CRASHIFNOMEMORY3BLDUST01MOVE.LA0,USTBEGƒSAVEUSTADDRESSFOREXEC‰BSR„TBLCLR†CLEARUSTTOZEROES*‰MOVE.L#'!UST',UST(A0)ƒEYECATCHERTOUST)‰MOVE.W#1,USTNSEG(A0)„ONLY1USTSEGMENT(‰MOVE.WD2,USTNPAGE(A0)ƒ#PAGESINTABLE#‰LSL.L‚#8,D2CONVERTPAGESTOBYTES(‰SUB.L‚#USTENTRY,D2„SUBRTACTHEADERSIZE&‰DIVUƒ#USTEL,D2‡DIVIDEBYENTRYLENGTH-‰MOVE.WD2,USTMENT(A0)‚SAVEMAXIMUM#ENTRIES(‰LEA„USTENTRY(A0),A2FIRSTENTRYADDRESS(‰MOVE.LA2,USTFENT(A0)‚SAVEITINHEADER**ˆBUILDVECTORUSETABLE*+BLDVTUƒMOVE.L#1,A0ŠSIZEISALWAYSONEPAGE,‰MOVE.L#T0PAGAL,D0ŠDIRECTIVE#FORPAGEALOC‰TRAPƒ#0EXECCALL%‰BRA.S‚BLDVTU01‡BRANCHIFGOODRETURN$‰BSR„KILLER‰CRASHIFNOMEMORYFOUNDBLDTIAT‚MOVE.L#$01010000,TIATƒSETTRAP0AND1'USEDBYEXEC'‰PAGE*0*…INITIALIZECONFIGURATION-DEPENDENTI/ODEVICES* ‰XREFƒINITIO)‰BSR„INITIO‰SUBROUTINEWILLINITIALIZEIO*1*ˆCREATETASKCONTROLBLOCKSFORROMBASEDSYSTEM**LOOKTCB‚TST.L‚TCBHD‹DOTCBSALREADYEXIST?%‰BNE„BLDTCB99ˆBRANCHIFYES-NOTROM'‰CLR.L‚READYHD‰BESUREREADYHDISCLEAR4‰LEA„ENDMEMT(PC),A3‚STARTSEARCHATENDOFMEMTABLE‰LEA„$200(A3),A1…ENDOFSEARCH,‰MOVE.L#'!TCB',D0†INITIALIZED0FORCOMPARE'LOOKT2ƒCMP.L‚(A3),D0‰LOOKFORMINITCBS‰BEQ.S‚BLDTCBS‰BRANCHIFFOUND!‰ADD.L‚#2,A3‹CHECKALLEVENBYTES‰CMP.L‚A3,A1‹ENDOFSEARCH?‰BNE„LOOKT2ŠLOOPBACK‰BSR„KILLERŠQUITIFNOTCBS*)BLDTCBS‚LEA„4(A3),A3ˆSTARTOFTABLEENTRY!‰MOVE.B18(A3),D4‡TASKPRIORITIES‰LSL.W‚#8,D4‹USEPRIORITYTWICE)‰MOVE.B18(A3),D4‡FORBOTHCURRANDLIMIT ‰SWAPƒD4ŽPRIORITIESTOUPPER1/2!‰MOVE.W22(A3),D4‡TASKATTRIBUTES‰MOVE.L24(A3),D5‡ENTRYADDRESS ‰CLR.L‚D6‰MOVE.W16(A3),D6‡USERNUMBER,‰MOVE.W#$8000,D7‡OPTIONS-MONITORSUPPLIED1‰MOVE.L#T0CRTCB,D0…DIRECTIVENUMBER-CREATETCB‰TRAPƒ#0ŽEXECDIRECTIVE$‰BRA.S‚BLDTCB2‰BRANCHIFGOODRETURN&‰BSR.S‚KILLERŠQUITIFREQUESTREJECTED*#BLDTCB2‚MOVE.W20(A3),D2‡STATEWORD#‰MOVE.WD2,TCBSTATE(A5)SAVEINTCB!‰BTSTƒ#TSK2NRDY,D2„ONREADYLIST?‰BEQ.S‚BLDTCB3‰BRANCHIFNO3‰MOVE.LREADYHD,TCBREADY(A5)‚LINKTOPREVIOUSENTRY ‰MOVE.LA5,READYHD†ADDNEWENTRY**ˆPUTTSTINFOINTOTCB*+BLDTCB3‚LEA„28(A3),A2‡STARTOFTSTMMUINFO)‰MOVE.L#SEGMENTS-1,D0‚MAX#SEGMENTS-1‰CLR.L‚D1ŽCLEARFORCOUNT%BLDTCB4‚TST.W‚6(A2)‹TESTSEGMENTTYPE#‰BEQ.S‚BLDTCB6‰BRANCHIFNOSEGMENT$‰ADD.L‚#1,D1‹COUNTSEGMENTSEXISTING.BLDTCB6‚LEA„8(A2),A2ˆINCREMENTTONEXTSEGMENT*‰DBRAƒD0,BLDTCB4†DECREMENTANDBRANCHBACK*$‰LEA„28(A3),A3‡STARTOFTSTMMUINFO(‰MOVE.LTCBTST(A5),A4ƒADDRESSOFNEWTST.‰MOVE.BD1,TSTCSEGS(A4)SAVEACTUAL#SEGMENTS,‰LEA„TSTMMU(A4),! A4ƒADDRESSOFMMUWITHINTST-‰MOVE.L#4*SEGMENTS-1,D0‚#LONGWORDSTOMOVE2BLDTCB8‚MOVE.L(A3)+,(A4)+…MOVEMMUANDATTRIBUTES(‰DBRAƒD0,BLDTCB8†CONTINUETILLALLMOVED‰CMP.L‚#'!TCB',(A3)„MORETCB'S?‰BEQ„BLDTCBS‰BRANCHIFYESBLDTCB99* *ˆSTARTTIMER* ‰XREFƒTIMERST3‰BSR„TIMERST‰INVOKECONFIGURATION-DEPENDENTROUTINE*(*ˆINDICATESYSTEMRUNNINGONFRONTPANEL*-FPGO†MOVE.LEXCSTACK,A7„RESTORESTACKPOINTER)ŠMOVE.W#$C0,D1ˆWANT'C0'INPANELLIGHTS4ŠBSR.S‚PANELEDE‡SETLIGHTS-ENABLEREADY/FAILLIGHT**‰GOTOEXEC-INITCOMPLETE*:INITEND‚MOVE.LDISPATCH(PC),-(A7)‚ADDRESSOFSTARTOFEXEC‰RTS˜GOTOEXEC*%*ƒKILLERROUTINE--ERRORDURINGINIT*KILLERƒPEA…(A6)ŽSAVEREGISTER6 ‰LEA…CRASHSAV,A6ƒCRASHSAVEAREA'‰MOVE.L‚4(A7),(A6)ˆSAVEPROGRAMCOUNTER%‰MOVE.W‚SR,4(A6)ŠSAVESTATUSREGISTER.‰MOVE.W‚#$2700,SR‰BESUREINTERRUPTSINHIBITED ‰LEA…8(A6),A6ŠREGISTERSAVEAREA-‰MOVEM.LD0-D7/A0-A5,(A6)‚SAVEMOSTREGISTERS$‰MOVE.L‚(A7)+,56(A6)†SAVEREGISTER6$‰MOVE.L‚A7,60(A6)‰SAVESTACKPOINTER'KILLOOP‚MOVE.W‚#$A2,D1‹WANT'A2'INLED/‰BSR.SƒPANELEDEŠPUTITTHERE-ALLOWFAILLIGHT4‰BRA…KILLOOP‹LOOP-WAITFORSOMEONETODOSOMETHING‰PAGE* *ˆTABLECLEAR*'TBLCLRƒMOVE.LD2,D6„GETLENGTHINPAGES‰LSL.L‚#8,D6„LENGTHINBYTES!TBLCLRB‚MOVE.LD6,A6„LENGTHINA6‰ADD.L‚A0,A6„END+1INA6$‰CLR.L‚D6‡THEZEROTHATGET'SSTORED&TBLCLRL‚MOVE.LD6,-(A6)STOREONEWORD‰CMP.L‚A0,A6„DONE?&‰BGT.S‚TBLCLRL‚BRANCHBACKIFNOTDONE‰RTSGOBACKWHENDONE*#*ƒPANELEDE--ENABLE‚TTO--SETLED$*ƒPANELEDD--DISABLETTO--SETLED*-PANELEDEMOVE.W#$10,D0‰CLEARDISABLETTOBIT&‰BRA.S‚PANELD2‰SKIPAROUNDOTHERENTRY+PANELEDDMOVE.W#$90,D0‰SETƒDISABLETTOBIT*PANELD2‚NOT.B‚D1ŽUSECOMPLEMENTTOSETLED‰ROR.L‚#4,D1‹SEPARATEDIGITS‰OR.BƒD1,D0‹PUTMSDIND0‰MOVE.W#$02,D1‰'SETLSD'FLAG‰ROL.L‚#4,D1‹LSDIND1!‰MOVE.LPANEL,A1ˆADDRESSOFPANEL'‰LEA„FPLEDST(A1),A1‚LEDSTATUSREGISTER+‰MOVE.WD1,(A1)‰SETLEASTSIGNIFICANTDIGIT‰OR.Wƒ#$30,D1‰SETLATCHBITS‰MOVE.WD1,(A1)‰LATCHIT*‰MOVE.WD0,(A1)‰SETMOSTSIGNIFICANTDIGIT‰OR.Wƒ#$30,D0‰SETLATCHBITS‰MOVE.WD0,(A1)‰LATCHIT‰RTS +ŠTTL‡INITMEMORYPARTITIONS-DOCUMENTATIONŠPAGEN*********************************************************************************.***‚Name:‚IMEM(initialize_memory_partitions).*** ***‚Function:A***ŠChecksallmemorylocationsdescribedintheSYSGENedMEMTBL.F***…Mapsoutany"holes"inmemory.‚SetsupFML(freememorylist)andC***…FML_HEADER(freememorylistheader)ineachpartition.‚SetsupE***…MEMTBL(memorymappingtable)immediatelyaftertheFML_HEADERin***…partitionzero.*** ***‚Inputs:H***…1.)‚Src_memtbl(createdbySYSGEN)locatedataddressMEMTABLwithin***ŠINITDATdataarea.*** ***‚Outputs:I***…1.)‚Dest_memtbllocatedimmediatelyaftertheFML_HEADERinpartition ***Šzero.G***…2.)‚MAPBEGlongwordinSYSPARdataarea.‚Pointstothedest_memtbl.***Š(Item#1above.)E***…3.)‚FML_HEADERsforallRAMmemorypartitions.‚(Pointedtobythe***Šdest_memtbl.)@***…4.)‚FMLsforallRAMmemorypartitions.‚(Pointedtobytheir***ŠFML_HEADERs.)******‚Sideeffects:C***…1.)‚Allregistersdestroyed,exceptforthestackpointer(A7).)***…2.)‚Mightneverreturn(callKILLER).***H***‚Explanation:‚ThisroutineisbasicallyadriverforinitializingtheB***…memorypartitions.‚ItisprimarilyconcernedwithinitializingI***…partitionzero.‚Thelastsubroutinecall(callinit_next_partitions),H***…handlestheinitializationofallmemorypartitionsexceptpartitionI***…zero.‚ThisuniquehandlingofpartitionzeroisneccessaryduetotheI***…factthattheINITmoduleresidesinaportionofpartitionzerothatD***…willlaterbeusedbythesystem.‚Weobviouslycannotclearthis ***…memory.***D***ŠThefirstcallsetsuptheneccessarypointerstothesrc_memtblF***…andtopartitionzero.‚ThenextcallwillbuildtheFML(clearanyE***…memorynotinthe" INITmodule,mapoutany"holes"inmemory,andA***…setuptheFMLlinkedlistdescribingtheavailablememoryinG***…partitionzero).‚Ifthefirst_node_ptrisreturnedaszero,thenweF***…didnotfindevenone256byteblockofavailablememory.‚SinceweE***…needatleastoneblockinpartitionzerofortheMEMTBL,thisis3***…obviouslyafatalerror,andsowecallKILLER.***F***ŠNextwecallbuild_fml_headertobuildtheFML_HEADERinpartitionE***…zero.‚Ifthefml_header_ptrisreturnedaszero,thenwecouldn'tC***…findenoughmemoryinpartitionzerofortheFML_HEADERandtheG***…dest_memtbl,sowecannotcontinue,andthereforemustcallKILLER.***@***ŠOtherwise,wesetourdest_memtbl_ptrtopointtothememory@***…immediatelyaftertheFML_HEADERforpartitionzero,andsetF***…theMAPBEGvariableinSYSPARequaltothisvalue.‚FinallywecallF***…build_ram_memtbl_entrytorecordthisrampartitionintheMEMTBL,D***…andcallinit_next_partitionstoinitializeallpartitionsafter***…partitionzero.***L****************************************************************************2‰TTL‡INITMEMORYPARTITIONS-REGISTERASSIGNMENTS‰PAGEL**********************************************************************************…A0=src_memtbl_ptr;7***ŠPointstothe"source"MEMTBLinINITDATdataarea.******…A1=dest_memtbl_ptr;<***ŠPointstothe"destination"MEMTBLimmediatelyafterthe!***ŠFML_HEADERinpartitionzero.***+***…A2=temp_memtbl_ptr/previous_node_ptr;?***ŠSharedregister.‚Duringcheck_memmap_conflictitisusedtoB***Šstepthroughthedest_memtbllookingforconflictsbetweentheB***Š"current"RAMpartition(pointedtobythesrc_memtbl_ptr)andB***Šanypreviously-definedRAMpartitions(pointedtobythetemp_***Šmemtbl_ptr.)C***ŠDuringbuild_fml(anditssubroutinebuild_fml_node)A2isused;***Štopointtothe"previous"nodeintheFMLlinkedlist.******…A3=first_node_ptr;0***ŠPointstothefirstnodeinthecurrentFML.******…A4=last_node_ptr;/***ŠPointstothelastnodeinthecurrentFML.***&***…A5=clear_mem_ptr/fml_header_ptr;@***ŠSharedregister.‚Duringbuild_fml(andbuild_fml_node)itis<***Šusedtopointtothenextmemorylocationtobecleared.<***ŠDuringalltheotherroutinesitisusedtopointtothe***ŠFML_HEADERblock.***…A6=scratch;****** ***…D0=0;B***ŠUsedforzeroingoutmemory,andcheckingifaddressregisters***Šareequaltozero.******…D1-D3=scratch;******…D4=start_of_part_ptr;:***ŠPointstothestartofthe"current"memorypartition.******…D5=end_of_part_ptr;8***ŠPointstotheendofthe"current"memorypartition.******…D6=bytes_cleared;>***ŠContainsacountofthenumberofthebytesclearedinthe?***Š"current"memorypartition.‚Whenwefinda"hole"inmemory@***Š(takeabus_error),thenwestopincrementingbytes_cleared.C***ŠThusbytes_clearedwillcontainacountofthenumberof"good"?***Šbytesinthecurrentblockofthecurrentmemorypartition.D***ŠThisvaluewillbeusedtodescribetheammountof"free"memory***Šinthecurrentblock.******…D7=fml_header_len;C***ŠContainsacountofthenumberof256byteblocksneccessarytoA***Šdescribethe"current"FML_HEADER.‚Thisvalueisusuallyone.@***ŠItwasmadeintoavariableinordertoaccommodatethecaseA***ŠwheretheFML_HEADER(26bytes)andthedest_memtbl("n"*10>***Šbytes)requiredmorethanone256byteblock.‚Thisaddeda<***Šcertainammountofcomplexitytothealgorityhms,butitA***Šremovedtheratherarbitraryrestrictionthatthedest_memtblB***Šmustbelimitedto(256-26)/10or23entries.‚(Dest_memtbl2***Šcouldonlydescribe23RAMorROMpartitions.)***L****************************************************************************'‰TTL‡INITMEMORYPARTITIONS-ALGORITHM‰PAGE#*init_memory_partitions: procedure;"     *ˆcallinit_pointers;*ˆcallbuild_fml;*ˆif(first_node_ptr=0)*ˆthencallKILLER;*ˆcallbuild_fml_header;*ˆif(fml_header_ptr=0)*ˆthencallKILLER;;*ˆdest_memtbl_ptr<==fml_header_ptr+length(fml_header);&*ˆSYSPAR(MAPBEG)<==dest_memtbl_ptr;*ˆcallbuild_ram_memtbl_entry;*ˆcallinit_next_partitions;  *end init_memory_partitions;ŠPAGE"ŠTTL„INITMEMORYPARTITIONS-CODE*#*init_memory_partitions: procedure;*IMEM:**ˆcallinit_pointers;*ˆcallbuild_fml;*ˆif(first_node_ptr=0)*ˆthencallKILLER;* ŠBSR.S‚IPTRS ŠBSR„BFML ŠIF.LA3D0THEN.S ŠBSR„KILLERŠENDI **ˆcallbuild_fml_header;*ˆif(fml_header_ptr=0)*ˆthencallKILLER;;*ˆdest_memtbl_ptr<==fml_header_ptr+length(fml_header);&*ˆSYSPAR(MAPBEG)<==dest_memtbl_ptr;* ŠBSR„BFMLHEAD ŠIF.LA5D0THEN.S ŠBSR„KILLERŠENDI ŠLEA„FMLHDSZ(A5),A1 ŠMOVE.LA1,MAPBEG **ˆcallbuild_ram_memtbl_entry;*ˆcallinit_next_partitions;* ŠBSR„BRAMNODE ŠBSR.S‚INEXTMEM **end init_memory_partitions;*ŠRTS "ŠTTL‡INITPOINTERS-DOCUMENTATIONŠPAGEN********************************************************************************* ***…Name:‚IPTRS(init_pointers):*** ***…Function:A***ŠInitializesallpointersandcountersforinitializingmemory***„partitionzero.*** ***…Inputs:1***ˆ1.)‚Src_memtblinINITDATataddressMEMTABL.*** ***…Outputs:***ˆ1.)‚A0=src_memtbl_ptr;***ˆ2.)‚A5=clear_mem_ptr;***ˆ3.)‚D0=0;***ˆ4.)‚D4=start_of_part_ptr;***ˆ5.)‚D5=end_of_part_ptr;***ˆ6.)‚D6=bytes_cleared;***ˆ7.)‚D7=fml_header_len;******…Sideeffects:****ˆ1.)‚A2(temp_memtbl_ptr)isdestroyed.$***ˆ2.)‚D1(scratch)getsdestroyed.)***ˆ3.)‚Mightneverreturn(callKILLER).******…Explanation:***?***ŠFirstweinitializeD0andthesrc_memtbl_ptr.‚IfthefirstI***…entryinthesrc_memtblisnotaRAMpartitionwhosepartitionnumber<***…iszero,thenwecannotcontinue,andsowecallKILLER.***E***ŠNextweinitializefml_header_lentoequalthenumberof256byteG***…blocksneccessarytocontaintheFML_HEADERforpartitionzero,andB***…oneentryinthedest_memtblforeveryentryinthesrc_memtbl9***…(includingthelastentrydelimitingthesrc_memtbl).***D***ŠNowweinitializetheend_of_part_ptrtopointtothe"floor"ofB***…theMAPENDAfieldofthefirstentryinthesrc_memtbl.‚(Note:H***…throughoutthesealgorithmswewillalwaystakethe"ceiling"oftheH***…startofthepartition,andthe"floor"oftheendofthepartition.K***…Thisinsuresthatallpartitionsstartandendona256byteblock,andG***…alsothatweonlygrabthesameammountofmemory,orless,thatis%***…describedwithinthesrc_memtbl.)***E***ŠNow,iftheexecisinpartitionzero,thenthestart_of_part_ptrD***…pointstothenext256byteblockaftertheendoftheexec,theJ***…clear_mem_ptrpointstothenext256byteblockafterthestartoftheH***…INITmodule,andbytes_clearedgetssettothedisplacementfromtheI***…startoftheINITmoduletotheendoftheINITDATdataarea(alsoonH***…a256byteboundary).‚Theclear_mem_ptrandbytes_clearedaresetupF***…inthiswayinordertotellthebuild_fmlsubroutinethatwehaveG***…startedclearingmemoryatthelocationpointedtobyclear_mem_ptr@***…andwehavealreadyclearedbytes_clearedlocations.‚ThisisI***…neccessarybecausewewishtoreclaimthememoryoccupiedbytheINITD***…moduleasfreememoryinpartitionzero,butweobviouslycannotG***…clearitoutatthispointintime.‚Thuswemustfakeoutbuild_fmlB***…intothinkingthatwehavealreadyclearedtheINITportionofI***…partitionzero.‚Finally,ifTCBHEAD=0,(wehaveminiTCBsfollowingF***…thesrc_memtbl),thenweincrementbytes_clearedby$800toinsure)***…thatwedon'tzeroouttheminiTCBs.***D***ŠIftheexecisnoti# npartitionzero,thenwesetbothstart_of_G***…part_ptrandclear_mem_ptrtopointtothenext256bytepageafter8***…theSYSPARdataarea,andsetbytes_clearedtozero.***B***ŠFinally,ifthestart_of_part_ptrandend_of_part_ptrdescribeF***…apartitionthatdoesnotcontainsomepositiveammountofmemory,=***…thenweobviouslycannotcontinue,andsowecallKILLER.***L**************************************************************************** ‰TTL‡INITPOINTERS-ALGORITHM‰PAGE*init_pointers: procedure;   *ˆDO<==0;.*ˆsrc_memtbl_ptr<==addr(INITDAT(MEMTABL));0*ˆif(MAPMTYP.MAPPART(src_memtbl_ptr)<>$0000)*ˆthencallKILLER; *ˆfml_header_len<==0;%*ˆtemp_memtbl_ptr<==src_memtbl_ptr;7*ˆdountil(MAPMTYP.MAPPART(temp_memtbl_ptr)=$FFFF);%*’fml_header_len<==fml_header_len+*¥length(dest_memtbl_entry);'*’temp_memtbl_ptr<==temp_memtbl_ptr+*¦length(src_memtbl_entry); *ˆend;C*ˆfml_header_len<==(length(fml_header)+length(memtbl_entry)+,*œ(temp_memtbl_ptr-src_memtbl_ptr))/256; 7*ˆend_of_part_ptr<==floor(MAPENDA(src_memtbl_ptr));)*ˆif(execisinpartitionxero)thendo;.*’start_of_part_ptr<==ceil(INITDAT(EEND));(*’clear_mem_ptr<==ceil(addr(START));5*’bytes_cleared<==ceil(addr(INITDAT(ENDMEMT)))-*¤clear_mem_ptr;*’if(INITDAT(TCBHEAD)=0).*’thenbytes_cleared<==bytes_cleared+$800;*ˆend; *ˆelsedo;7*’start_of_part_ptr<==ceil(addr(SYSPAR(ENDSYSP)));&*’clear_mem_ptr<==start_of_part_ptr;*’bytes_cleared<==0;*ˆend; +*ˆif(start_of_part_ptr>=end_of_part_ptr)*ˆthencallKILLER;  *end init_pointers; ŠTTL„INITPOINTERS-CODEŠPAGE**init_pointers: procedure;* IPTRS:* *ˆD0<==0;.*ˆsrc_memtbl_ptr<==addr(INITDAT(MEMTABL));,*ˆif(MAPMTYP.MAPPART(src_memtbl_ptr)<>0)*ˆthencallKILLER;* ŠCLR.L‚D0 ŠLEA„MEMTABL(PC),A0 ŠIF.W(A0)D0THEN.S ŠBSR„KILLERŠENDI **ˆfml_header_len<==0;%*ˆtemp_memtbl_ptr<==src_memtbl_ptr;7*ˆdountil(MAPMTYP.MAPPART(temp_memtbl_ptr)=$FFFF);%*’fml_header_len<==fml_header_len+*¥length(dest_memtbl_entry);'*’temp_memtbl_ptr<==temp_memtbl_ptr+*¦length(src_memtbl_entry);*ˆend;* ŠCLR.L‚D7 ŠLEA„(A0),A2 ŠREPEATŠADD.L‚#MAPENTSZ,D7ŠLEA„12(A2),A2ŠUNTIL.W(A2)#$FFFF *5*ˆfml_header_len<==ceil(length(fml_header_node)+*¡fml_header_len+$*¡length(dest_memtbl_entry))/256;7*ˆend_of_part_ptr<==floor(MAPENDA(src_memtbl_ptr));*!ŠADD.L‚#(FMLHDSZ+MAPENTSZ+255),D7 ŠLSR.L‚#8,D7 ŠMOVE.LMAPENDA(A0),D5 ŠCLR.B‚D5 *)*ˆif(execisinpartitionzerothendo);.*’start_of_part_ptr<==ceil(INITDAT(EEND));(*’clear_mem_ptr<==ceil(addr(START));5*’bytes_cleared<==ceil(addr(INITDAT(ENDMEMT)))-*¤clear_mem_ptr;*’if(INITDAT(TCBHEAD)=0).*’thenbytes_cleared<==bytes_cleared+$800;*ˆend;**ŠMOVE.LEEND(PC),D4ˆD4<==INITDAT(EEND).8ŠIF.LD4D5THEN.S†If(exec_endD0THEN.SŠADD.L‚#$800,D6ŠENDI * *ˆelsedo;7*’start_of_part_ptr<==ceil(addr(SYSPAR(ENDSYSP)));&*’clear_mem_ptr<==start_of_part_ptr;*’bytes_cleared<==0;*ˆend;*ŠELSE.SŠMOVE.L#ENDSYSP+255,D4 ŠCLR.B‚D4 ŠMOVE.LD4,A5 ŠCLR.L‚D6ŠENDI *+*ˆif(start_of_part_ptr>=end_of_part_ptr)*ˆthencallKILLER;*ŠIF.LD4D5THEN.S ŠBSR„KILLERŠENDI **end init_pointers;*ŠRTS )ŠTTL„INIT_NEXT_PARTITIONS-DOCUMENTATIONŠPAGEN*************************************************************************************…Name:‚INEXTMEM(init_next_partitions):*** ***…Function:=***ŠInitializesallpartit# ionsexceptpartitionzero.‚ForROMH***„partitions,wemakeanentryinthedest_memtbl.‚ForRAMpartitions,A***„weinsurethatnoconflictexistswithapreviously-describedH***„partition,buildtheFML,buildtheFML_HEADER,andmakeanentryin***„thedest_memtbl.*** ***…Inputs:***ˆ1.)‚A0=src_memtbl_ptr;2***(Pointstothefirstentryinthesrc_memtbl.)***ˆ2.)‚A1=dest_memtbl_ptr;3***(Pointstothefirstentryinthedest_memtbl.)*** ***…Outputs:***ˆ1.)‚Dest_memtbl.#***ˆ2.)‚FMLforallRAMpartitions.+***ˆ3.)‚FML_HEADERsforallRAMpartitions.******…Sideeffects:B***ˆ1.)‚Mostregistersaredestroyed,exceptforthestackpointer ***(A7).******…Explanation:D***ŠWekeeploopinguntiltheMAPMTYPandMAPPARTfieldsofthenextH***…entryinthesrc_memtblbothcontain$FF.‚(ThisindicatestheendofH***…thememtbl.)‚Whenweseetheendofthesrc_memtbl,thenwewritean.***…endentryforthedest_memtbl,andreturn.***E***ŠForeverygoodentryinthesrc_memtblwecallinit_next_pointersG***…tosetupourpointersandcountersforthismemorypartition.‚ThenE***…iftheMAPMTYPfieldofthesrc_memtblentry=$FF,wehaveaROM4***…partitionandsowecallbuild_rom_memtbl_entry.***8***ŠForeveryRAMentryinthesrc_memtbl,wefirstcallG***…check_memmap_conflicttoinsurethatthecurrentRAMpartitiondoesH***…notconflictinanywaywithapreviously-describedpartition.‚ThereG***…arethreepossiblereturnconditionsfromthecheck_memmap_conflict***…subroutine:'***Š1.)‚Afatalconflictwasdetected-;***Executionwillneverreturn(check_memmap_conflictwill***callKILLER).@***Š2.)‚Thispartitionisanaliasofapreviouspartition(both+***partitionsstartatthesameaddress)-;***Executionwillreturn,andthegot_alias_partition_flag***willbeset.+***Š3.)‚Thispartitionisanewpartition-;***Executionwillreturn,andthegot_alias_partition_flag***willbereset.H***…Therefore,ifexecutionreturns,andthegot_alias_partition_flagis@***…set,wecallbuild_ram_memmap_entrytobuildanentryinthe(***…dest_memtblforthealiaspartition.***C***ŠIfexecutionreturnsandthegot_alias_partition_flagisreset,H***…thenwecallbuild_fmltobuildthefreememorylistforthenewRAMI***…partition.‚Thenifthefirst_node_ptrisnotequaltozero,build_fmlH***…foundatleastone256bytepageofmemoryinthenewpartition,andG***…sowecallbuild_fml_headertobuildtheFML_HEADERforthecurrentG***…partition.‚Now,sincethisisnotpartitionzero,andthereforeallG***…FML_HEADERsrequireonlyone256byteblockofmemory,weknowthatI***…build_fml_headersuccessfullyfoundroomfortheFML_HEADERandsoweE***…cancallbuild_ram_memtbl_entrytobuildanentryforthecurrent!***…partitioninthedest_memtbl.***N****************************************************************************** %ŠTTL„INITNEXTPARTITIONS-ALGORITHMŠPAGE!*init_next_partitions: procedure;    >*ˆdowhile(MAPMTYP.MAPPART(next(src_memtbl_ptr))<>$FFFF);*’callinit_next_pointers;%*’if(MAPMTYP(src_memtbl_ptr)=$FF)#*’thencallbuild_rom_memtbl_entry; *’elsedo;*œcallcheck_memmap_conflict;%*œif(got_alias_partition_flag=set)#*œthencallbuild_ram_memmap_entry; *œelsedo;*¦callbuild_fml;#*¦if(first_node_ptr<>0)thendo;*°callbuild_fml_header;*°callbuild_ram_memtbl_entry;*¦end;*œend;*’end;*ˆend;4*ˆMAPTYP.MAPPART(next(dest_memtbl_ptr))<==$FFFF;  *end init_next_partitions; 'ŠTTL„INITNEXTMEMORYPARTITIONS-CODEŠPAGE*!*init_next_partitions: procedure;* INEXTMEM:*>*ˆdowhile(MAPMTYP.MAPPART(next(src_memtbl_ptr))<>$FFFF);*’callinit_next_pointers;%*’if(MAPMTYP(src_memtbl_ptr)=$FF)#*’thencallbuild_rom_memtbl_entry;* ŠWHILE.W12(A0)#$FFFFDO.S ŠBSR.S‚INEXTPTRS ŠIF.B(A0)#$FFTHEN.S ŠBSR„BROMNODE * *’elsedo;*œcallcheck_m$ emmap_conflict;%*œif(got_alias_partition_flag=set)#*œthencallbuild_ram_memtbl_entry;*ŠELSE.S ŠBSR„CMEMCONF ŠTST.B‚D2ŠIFTHEN.S ŠBSR„BRAMNODE * *›elsedo;*¦callbuild_fml;#*¦if(first_node_ptr<>0)thendo;*°callbuild_fml_header;*°callbuild_ram_memtbl_entry;*¦end;*œend;*’end;*ˆend;*ŠELSE.S ŠBSR.S‚BFML ŠIF.LA3D0THEN.S ŠBSR„BFMLHEAD ŠBSR„BRAMNODEŠENDIŠENDIŠENDIŠENDW *5*ˆMAPMTYP.MAPPART(next(dest_memtbl_ptr))<==$FFFF;*#ŠMOVE.W#$FFFF,MAPMTYP+MAPENTSZ(A1) **end init_next_partitions;*ŠRTS 'ŠTTL„INITNEXTPOINTERS-DOCUMENTATIONŠPAGEM********************************************************************************)***…Name:‚INEXTPTRS(init_next_pointers):*** ***…Function:C***ŠInitializesallpointersandcountersforallmemorypartitions***…exceptpartitionzero.*** ***…Inputs:'***ˆ1.)‚A0=previous(src_memtbl_ptr).(***ˆ2.)‚A1=previous(dest_memtbl_ptr).*** ***…Outputs:&***ˆ1.)‚A0=current(src_memtbl_ptr).'***ˆ2.)‚A1=current(dest_memtbl_ptr).***ˆ3.)‚A5=clear_mem_ptr.***ˆ4.)‚D4=start_of_part_ptr.***ˆ5.)‚D5=end_of_part_ptr.***ˆ6.)‚D6=bytes_cleared.***ˆ7.)‚D7=fml_header_len.******…Sideeffects:1***ˆ1.)‚Executionmightnotreturn(callKILLER).******…Explanation:@***ŠFirstwesetthefml_header_lentoone(anypartitionexceptG***…partitionzerorequiresonlyone256bytepageforitsFML_HEADER),@***…andadvanceboththesrc_memtbl_ptrandthedest_memtbl_ptr.***C***ŠNextwesetthestart_of_part_ptrtotheceilingoftheMAPSTRAH***…fieldinthesrc_memtbl,andtheend_of_part_ptrtotheflooroftheH***…MAPENDAfield.‚(Notethatwealwaysalignourpartitionson256byteI***…pageboundaries,andthatwealwaysroundtothesameammountorless+***…memoryasdescribedinthesrc_memtbl).***D***ŠWethensetclear_mem_ptrtothevalueofstart_of_part_ptr,andE***…setbytes_clearedtozero.‚(ThuswewillstartclearingmemoryatG***…thestartofthecurrentpartition.)‚Finally,wecallKILLERiftheG***…currentpartitiondescribedbythesrc_memtbldoesnotcontainsome'***…positivenumberofpagesofmemory.***L**************************************************************************** #ŠTTL„INITNEXTPOINTERS-ALGORITHMŠPAGE*init_next_pointers: procedure;    *ˆfml_header_len<==1;@*ˆsrc_memtbl_ptr<==src_memtbl_ptr+length(src_memtbl_entry);C*ˆdest_memtbl_ptr<==dest_memtbl_ptr+length(dest_memtbl_entry); 8*ˆstart_of_part_ptr<==ceil(MAPSTRA(src_memtbl_ptr));7*ˆend_of_part_ptr<==floor(MAPENDA(src_memtbl_ptr));&*ˆclear_mem_ptr<==start_of_part_ptr;*ˆbytes_cleared<==0; +*ˆif(start_of_part_ptr>=end_of_part_ptr)*ˆthencallKILLER;  *end init_next_pointers; ŠTTL„INITNEXTPOINTERS-CODEŠPAGE**init_next_pointers: procedure* INEXTPTRS: **ˆfml_header_len<==1;@*ˆsrc_memtbl_ptr<==src_memtbl_ptr+length(src_memtbl_entry);C*ˆdest_memtbl_ptr<==dest_memtbl_ptr+length(dest_memtbl_entry);* ŠMOVE.L#1,D7 ŠLEA„12(A0),A0 ŠLEA„MAPENTSZ(A1),A1 *8*ˆstart_of_part_ptr<==ceil(MAPSTRA(src_memtbl_ptr));7*ˆend_of_part_ptr<==floor(MAPENDA(src_memtbl_ptr));&*ˆclear_mem_ptr<==start_of_part_ptr;*ˆbytes_cleared<==0;*ŠMOVE.LMAPSTRA(A0),D4ŠADD.L‚#255,D4 ŠCLR.B‚D4 ŠMOVE.LMAPENDA(A0),D5 ŠCLR.B‚D5 ŠMOVE.LD4,A5 ŠCLR.L‚D6 *+*ˆif(start_of_part_ptr>=end_of_part_ptr)*ˆthencallKILLER;*ŠIF.LD4D5THEN.S ŠBSR„KILLERŠENDI **end init_next_pointers;*ŠRTS ŠPAGEŠTTL„BUILDFML-DOCUMENTATIONL**********************************************************************************…Name:‚BFML(build_fml):*** ***…Function:>***ŠBuild_fmlwillzerooutmemorystartingatclear_mem_ptr+A***…bytes_cleared,andbuildthefreememorylisttodescribetheF***…partition.‚I$ talsodetects"holes"inthepartition,anddescribes3***…themas"used"memorywithinthecurrentblock.*** ***…Inputs:***ˆ1.)‚A5=clear_mem_ptr.***ˆ2.)‚D4=end_of_part_ptr.***ˆ3.)‚D6=bytes_cleared.*** ***…Outputs:=***ˆ1.)‚A3=first_node_ptr(fromsubroutinebuild_fml_node).***ˆ2.)‚A4=last_node_ptr."***ˆ3.)‚FMLforcurrentpartition.******…Sideeffects:,***ˆ1.)‚A2(previous_node_ptr)isdestroyed.2***ˆ2.)‚A5(clear_mem_ptr)=D5(end_of_part_ptr)./***ˆ3.)‚D1,D2,andD3(scratch)aredestroyed.(***ˆ4.)‚D6(bytes_cleared)isdestroyed.-***ˆ5.)‚Mightnotreturn(mightcallKILLER).******…Explanation:B***ŠFirstweinitializethefirst_node_ptrtozero.‚ThistellstheH***…build_fml_nodesubroutinethatweareworkingwiththefirstnodein ***…theFML.***C**ŠNotethattheclear_next_nodeandbuild_last_fml_nodelabelscanI***…bothbejumpedtobythecodeforhandlingbuserrors(build_fml_be).***B***ŠAtclear_next_nodeweupdatelast_node_ptrtothevalueoftheC***…clear_mem_ptr.‚(Last_node_ptrisaninputtothebuild_fml_nodeG***…subroutinetellinghimwherethe"last"orcurrentnodeislocated,H***…andisalsoanoutputfromthisroutinetellingthecallerwheretheH***…lastnodeintheFMLislocated.)‚Wealsoincrementclear_mem_ptrbyE***…thevalueofbytes_cleared.‚(Thisisneccessaryinorderto"skipD***…over"andnotinitializetheINITcodewhenbuildingtheFMLfor***…partitionzero.***B***ŠNextwesetupthestacksothatanybuserrorwillsendustoI***…build_fml_be.‚Thisisthecodethatwillbeusedformappingoverany$***…"holes"inthememorypartition.***D***ŠNowweloopuntilweeithercleartherestofthecurrentmemoryF***…partition(fallthroughtheloop),orfindaholeinmemory(goto***…build_fml_be).***D***ŠIfwedoclearmemorytotheendofthecurrentpartitionwithinG***…thisloop,wemustpopthebuserrorvectorjunkoffthestack,andI***…calculatethevalueofbytes_cleared(clear_mem_ptr-last_node_ptr).F***…ThiscalculationisneccessaryatthispointinordertomakethisE***…case(foundablockofallgoodmemory)lookthesameasthecaseE***…wherewefoundsomegoodmemoryandthenfounda"hole"inmemoryF***…(tookabuserror,andwenttobuild_fml_be).‚InthatcasewewillH***…"freeze"bytes_clearedtothevalueofclear_mem_ptr-last_node_ptrH***…inordertorememberthenumberof"good"bytesofmemorywithintheI***…currentblock,andincrementclear_mem_ptr(bypages)untilweeitherG***…reachtheendofthepartition,orwefindsomemore"good"memory.I***…Thusatthatpointourcurrentblockwillbeframedbythelast_node_E***…ptr(pointstothestartofthecurrentblock),theclear_mem_ptrJ***…(pointtotheendofthecurrentblock),andthebytes_clearedcounterG***…whichholdsthenumberof"good"bytesinthecurrentblock(ortheD***…numberofbytesoffreememory).‚Thisismostoftheinformation&***…neededtobuildanodeintheFML.***C***ŠFinally,thebuild_last_fml_nodelabelwillbuildanodeinthe;***…FMLifthevalueofbytes_clearedisgreaterthanzero.***M***************************************************************************** ŠTTL„BUILDFML-ALGORITHMŠPAGE*build_fml: procedure;    *ˆprevious_node_ptr<==0; *clear_next_node:*ˆD1,D2,D3<==0;"*ˆlast_node_ptr<==clear_mem_ptr;2*ˆclear_mem_ptr<==clear_mem_ptr+bytes_cleared;*ˆpushaddr(build_fml_be); *ˆpush'BE';-*ˆdountil(clear_mem_ptr=end_of_part_ptr);'*’four_longwords(clear_mem_ptr)<==0;'*’clear_mem_ptr<==clear_mem_ptr+16;*ˆend;*ˆpopbus_errorjunkoffstack;2*ˆbytes_cleared<==clear_mem_ptr-last_node_ptr; *build_last_fml_node:*ˆif(bytes_cleared>0)*ˆthencallbuild_fml_entry;  *end build_fml; "ŠTTL‡BUILDFREEMEMORYLIST-CODEŠPAGE**build_fml: proc% edure;*BFML: **ˆprevious_node_ptr<==0;* ŠSUB.L‚A2,A2 **clear_next_node:*ˆD1,D2,D3<==0;!*ˆlast_node_ptr<==clear_mem_ptr2*ˆclear_mem_ptr<==clear_mem_ptr+bytes_cleared;*ˆpushaddr(build_fml_be); *ˆpush'BE';* CNEXTNODE: ŠCLR.L‚D1 ŠCLR.L‚D2 ŠCLR.L‚D3 ŠLEA„(A5),A4 ŠLEA„(A5,D6.L),A5 ŠPEA„BFMLBE(PC) ŠMOVE.W#'BE',-(A7) *-*ˆdountil(clear_mem_ptr=end_of_part_ptr);'*’four_longwords(clear_mem_ptr)<==0;'*’clear_mem_ptr<==clear_mem_ptr+16;*ˆend;*ŠREPEATŠMOVEM.LD0-D3,(A5)ŠLEA„16(A5),A5ŠUNTIL.LA5D5**ˆpopbus_errorjunkoffstack;2*ˆbytes_cleared<==clear_mem_ptr-last_node_ptr;* ŠADD.L‚#6,A7 ŠMOVE.LA5,D6 ŠSUB.L‚A4,D6 **build_last_fml_node:*ˆif(bytes_cleared>0)*ˆthencallbuild_fml_entry;* BLASTNODE:ŠIF.LD6D0THEN.SŠBSR.S‚BFMLNODEŠENDI **end build_fml;*ŠRTS 4ŠTTL„BUSERRORWHILECLEARINGMEMORY-DOCUMENTATIONŠPAGEN************************************************************************************…Explanation:?***ŠThiscodeisexecutedifweencounteraholewhileclearing@***…memory.‚Notethetwolabelsbuild_fml_beandbuild_fml_be_x.G***…Executionwill"goto"thebuild_fml_belabelifabuserroroccursB***…whenclearingmemoryviatheloopinthebuild_fmlsubroutine.F***…Likewise,executionwill"goto"thebuild_fml_be_xlabelifabusH***…erroroccurswhilelookingatthetopofeachpageofmemoryfortheF***…next"good"page.‚(i.e.,Thisblockofcodecontainsa"buserror"G***…loop.‚Wekeepgoingtobuild_fml_be_xuntilweeitherreachtheend:***…ofthecurrentpartition,orfindsome"good"memory.)***A***ŠFirstwecalculatebytes_clearedtobethedifferencebetweenG***…theclear_mem_ptrandthelast_node_ptr.‚ThenwecallKILLERiftheJ***…buserroroccurredinthemiddleofapage.‚(Bytes_clearedisnotona***…pageboundary.)***E***ŠOtherwise,weupdatetheclear_mem_ptrtopointtothetopoftheG***…nextpageinmemory.‚Ifweareattheendofthecurrentpartition,@***…thenwegotothebuild_last_fml_nodelabelinthebuild_fml***…subroutine.***B***ŠIfwearenotattheendofthepartition,wesetthestackupF***…sothatabuserrorwillsendusbacktothebuild_fml_be_xlabel.G***…ThenweattempttowriteintothememorylocationpointedtobytheF***…clear_mem_ptr.‚(Ifabuserroroccurs,thenexecutionwill"goto"I***…build_fml_be_x,andwewill"loop"untilwerunoutofmemoryinthis+***…partition,orfindsome"good"memory.)***D***ŠIfwe"fallthrough"tothenextinstruction(findagoodmemoryI***…location),thenwegetridofthebuserrorinformationonthestack.J***…Ifwefoundsomegoodmemoryinthecurrentblock(bytes_cleared>0),E***…thenwecallbuild_fml_nodetobuildanodeintheFML,andresetI***…bytes_clearedtozero.‚Ineithercasewegotoclear_next_nodeinthe***…build_fmlsubroutine.***N****************************************************************************** 0ŠTTL„BUSERRORWHILECLEARINGMEMORY-ALGORITHMŠPAGE*build_fml_be:2*ˆbytes_cleared<==clear_mem_ptr-last_node_ptr;$*ˆif(mod(bytes_cleared,256)<>0)*ˆthencallKILLER; *build_fml_be_x:(*ˆclear_mem_ptr<==clear_mem_ptr+256;&*ˆif(clear_mem_ptr=end_of_part_ptr)!*ˆthengotobuild_last_fml_node;*ˆpushaddr(build_fml_be_x); *ˆpush'BE';*ˆword(clear_mem_ptr)<==0;*ˆpopbus_errorjunkoffstack;!*ˆif(bytes_cleared>0)thendo;*’callbuild_fml_node;*’bytes_cleared<==0;*ˆend;*ˆgotoclear_next_node;  *end build_fml_be; +ŠTTL„BUSERRORWHILECLEARINGMEMORY-CODEŠPAGE**build_fml_be:*BFMLBE: *2*ˆbytes_cleared<==clear_mem_ptr-last_node_ptr;$*ˆif(mod(bytes_cleared,256)<>0)*ˆthencallKILLER;* ŠMOVE.LA5,D6 ŠSUB.L‚A4,D6 ŠIF.BD6D0THEN.S ŠBSR„KILLERŠENDI **build_fml_be_x:*BFMLBEX: *(*ˆclear_% mem_ptr<==clear_mem_ptr+256;&*ˆif(clear_mem_ptr=end_of_part_ptr)!*ˆthengotobuild_last_fml_node;*ŠLEA„256(A5),A5 ŠIF.LA5D5THEN.SŠBRA„BLASTNODEŠENDI**ˆpushaddr(build_fml_be_x); *ˆpush'BE';*ˆword(clear_mem_ptr)<==0;*ŠPEA„BFMLBEX(PC)ŠMOVE.W#'BE',-(A7) ŠMOVE.WD0,(A5) **ˆpopbus_errorjunkoffstack;!*ˆif(bytes_cleared>0)thendo;*’callbuild_fml_node;*’bytes_cleared<==0;*ˆend;*ˆgotoclear_next_node;* ŠADD.L‚#6,A7 ŠIF.LD6D0THEN.SŠBSR.S‚BFMLNODE ŠCLR.L‚D6ŠENDI  ŠBRA„CNEXTNODE #ŠTTL„BUILDFMLNODE-DOCUMENTATIONŠPAGEL*******************************************************************************$***…Name:‚BFMLNODE(build_fml_node):*** ***…Function:E***ŠBuildsanodeinthefreememorylist(fillsinthefmlfp,fmlbp,E***…fmlfree,andfmlusedfields),andlinksthisnodetoanyprevious***…nodesintheFML.*** ***…Inputs:***ˆ1.)‚A2=previous_node_ptr.***ˆ2.)‚A4=last_node_ptr.***ˆ3.)‚A5=clear_mem_ptr.***ˆ4.)‚D6=bytes_cleared.*** ***…Outputs:8***ˆ1.)‚FMLnode(pointedtobypreviouslast_node_ptr).D***ˆ2.)‚FmlfpofpreviousnodeinFML(ifthisisnotthefirstnode***intheFML).C***ˆ3.)‚A3=first_node_ptr(ifthisisthefirstnodeintheFML).***ˆ4.)‚A4=previous_node_ptr.******…Sideeffects:"***ˆ1.)‚D1(scratch)isdestroyed.******…Explanation:B***ŠFirstwesetupthefmlfpandfmlbplinksinthecurrentnode.E***…NextwesetupfmlusedtocontainthenumberofpagesbetweentheA***…last_node_ptrandtheclear_mem_ptrminusthenumberofpagesE***…describedbythebytes_clearedcounter.‚ThenwesetfmlfreeequalG***…tothenumberofpagesdescribedbythebytes_clearedcounter.‚ThusJ***…thesumoffmlusedandfmlfreeisequaltothenumberofpagesbetween-***…thelast_node_ptr,andtheclear_mem_ptr.***E***ŠNow,ifthisisthefirstnodeintheFML(previous_node_ptr=0)K***…thensetfirst_node_ptrequaltolast_node_ptrandthus"remember"thatG***…thisisthefirstnode.‚Otherwise,updatethefmlfpofthepreviousF***…nodetopointtothisnode.‚Finallysetprevious_node_ptrequalto>***…last_node_ptr(andthus"remember"thisnode),andreturn.***M***************************************************************************** ŠTTL„BUILDFMLNODE-ALGORITHMŠPAGE*build_fml_node: procedure;    *ˆfmlfp(last_node_ptr)<==0;.*ˆfmlbp(last_node_ptr)<==previous_node_ptr;@*ˆfmlused(last_node_ptr)<==((clear_mem_ptr-last_node_ptr)-*¥(bytes_cleared))/256;2*ˆfmlfree(last_node_ptr)<==bytes_cleared/256;*ˆif(previous_node_ptr=0)(*ˆthenfirst_node_ptr<==last_node_ptr;3*ˆelsefmlfp(previous_node_ptr)<==last_node_ptr;&*ˆprevious_node_ptr<==last_node_ptr;  *end build_fml_node; ŠTTL„BUILDFMLNODE-CODEŠPAGE**build_fml_node:* BFMLNODE: **ˆfmlfp(last_node_ptr)<==0;.*ˆfmlbp(last_node_ptr)<==previous_node_ptr;*ŠCLR.L‚FMLFP(A4)ŠMOVE.LA2,FMLBP(A4) **ˆfmlused(last_node_ptr)<==8*’(clear_mem_ptr-last_node_ptr-bytes_cleared)/256;2*ˆfmlfree(last_node_ptr)<==bytes_cleared/256;* ŠMOVE.LA5,D1 ŠSUB.L‚A4,D1 ŠSUB.L‚D6,D1 ŠLSR.L‚#8,D1ŠMOVE.LD1,FMLUSED(A4) ŠMOVE.LD6,D1 ŠLSR.L‚#8,D1ŠMOVE.LD1,FMLFREE(A4) *ˆif(previous_node_ptr=0)(*ˆthenfirst_node_ptr<==last_node_ptr;3*ˆelsefmlfp(previous_node_ptr)<==last_node_ptr;*ŠIF.LA2D0THEN.S ŠLEA„(A4),A3 ŠELSE.SŠMOVE.LA4,FMLFP(A2)ŠENDI *&*ˆprevious_node_ptr<==last_node_ptr;* ŠLEA„(A4),A2 **end build_fml_node;*ŠRTS %ŠTTL„BUILDFMLHEADER-DOCUMENTATIONŠPAGEM********************************************************************************&***…Name:‚BFMLHEAD‚(build_fml_header):*** ***…Function:E***ŠFindsablockofmemorytocontaintheFML_HEADERnode(ineitherF***…highorlowmemory),andbuilds& anFML_HEADERnodetodescribethe***…currentpartition.*** ***…Inputs:D***ˆ1.)‚Src_memtbl_node(tellswhethertheFML_HEADERbelongsinlow***highmemory).***ˆ2.)‚A0=src_memtbl_ptr.***ˆ3.)‚D4=start_of_part_ptr.***ˆ4.)‚D5=end_of_part_ptr.*** ***…Outputs:9***ˆ1.)‚FML_HEADERnodedescribingthecurrentpartition.E***ˆ2.)‚Fml_header_ptr(Ifthefml_header_ptr=0uponreturningfrom<***thisroutine,thenwecouldn'tfindenoughmemoryintheA***currentpartitionfortheFML_HEADER.‚Thisismeaningfulonly***forpartitionzero.)******…Sideeffects:‚None.******…Explanation:D***ŠFirstwedeterminewhethertheFML_HEADERbelongsinloworhighB***…memoryandcalltheappropriatesubroutinetoreturntoustheI***…correspondingpointer.‚Ifthesubroutinereturnedanon-zeropointer,G***…thenitfoundenoughmemoryinthecurrentpartitiontocontaintheF***…FML_HEADER(itfoundatleastfml_header_lenpages),andsowemay%***…continuetobuildtheFML_HEADER.***?***ŠWesetlowfree,stravail,andendavailtothevaluesoftheH***…first_node_ptr,start_of_part_ptr,andend_of_part_ptrrespectively.E***…WemovetheMAPMTYPandMAPPARTfieldsfromthesrc_memtbltothe7***…FML_HEADERnode,andsetupthesemaphorecounters.***M***************************************************************************** !ŠTTL„BUILDFMLHEADER-ALGORITHMŠPAGE*build_fml_header: procedure;    '*ˆif(fml_headerbelongsinlowmemory)#*ˆthencallget_fml_header_ptr_low;$*ˆelsecallget_fml_header_ptr_high; #*ˆif(fml_header_ptr<>0)thendo;.*’lowfree(fml_header_ptr)<==first_node_ptr;2*’stravail(fml_header_ptr)<==start_of_part_ptr;0*’endavail(fml_header_ptr)<==end_of_part_ptr; 8*’memtype(fml_header_ptr)<==MAPMTYP(src_memtbl_ptr);8*’mempart(fml_header_ptr)<==MAPPART(src_memtbl_ptr); "*’semfrmem(fml_header_ptr)<==1;$*’semfrmem+2(fml_header_ptr)<==0;"*’semwtmem(fml_header_ptr)<==0;$*’semwtmem+2(fml_header_ptr)<==0;*ˆend;  *end build_fml_header; ŠTTL„BUILDFMLHEADER-CODEŠPAGE**build_fml_header: procedure;* BFMLHEAD: *'*ˆif(fml_headerbelongsinlowmemory)#*ˆthencallget_fml_header_ptr_low;$*ˆelsecallget_fml_header_ptr_high;*:ŠBTSTƒ#0,10(A0)ŠIf(src_memtbl_node(byte_10(bit_0))=0)7ŠIFTHEN.SŠthenfml_headerbelongsinHIGHmemory; 6ŠBSR.S‚GFMLPTRH‹elsefml_headerbelongsinLOWmemory; ŠELSE.SŠBSR.S‚GFMLPTRLŠENDI *#*ˆif(fml_header_ptr<>0)thendo;.*’lowfree(fml_header_ptr)<==first_node_ptr;2*’stravail(fml_header_ptr)<==start_of_part_ptr;0*’endavail(fml_header_ptr)<==end_of_part_ptr;*ŠIF.LA5D0THEN.SŠMOVE.LA3,LOWFREE(A5)ŠMOVE.LD4,STRAVAIL(A5)ŠMOVE.LD5,ENDAVAIL(A5) *8*’memtype(fml_header_ptr)<==mapmtyp(src_memtbl_ptr);8*’mempart(fml_header_ptr)<==mappart(src_memtbl_ptr);*ŠMOVE.WMAPMTYP(A0),MEMTYPE(A5) *"*’semfrmem(fml_header_ptr)<==1;$*’semfrmem+2(fml_header_ptr)<==0;"*’semwtmem(fml_header_ptr)<==0;$*’semwtmem+2(fml_header_ptr)<==0;*ˆend;*ŠMOVE.W#1,SEMFRMEM(A5)ŠCLR.L‚SEMFRMEM+2(A5)ŠCLR.W‚SEMWTMEM(A5)ŠCLR.L‚SEMWTMEM+2(A5)ŠENDI **end build_fml_header;*ŠRTS 0ŠTTL„GETFMLHEADERPOINTERHIGH-DOCUMENTATIONŠPAGEN*********************************************************************************-***…Name:‚GFMLPTRH(get_fml_header_ptr_high):*** ***…Function::***ŠThissubroutinereturnsapointertoablockofmemoryI***…fml_header_lenpageslonginthecurrentpartition.‚ThisblockistheE***…highestaddressedblockinthecurrentpartitionthatisatleastI***…fml_header_lenpageslong.‚ThissubroutinehandlesallaccountingforE***…theblockit"steals"fromthepartition.‚(IteithercountsitasE***…beinga"usedpageinthecurrentblock,or,ifthecurrentblockH***…consistsofonlyfml_header_lenpages,thenit"unlinks"thecurre& ntH***…block,andcountsitasa"used"portionofthepreviousblock,ifa***…previousblockexists.)*** ***…Inputs:***ˆ1.)‚A4=last_node_ptr.***ˆ2.)‚D7=fml_header_len.*** ***…Outputs:***ˆ1.)‚A5=fml_header_ptr.;***ˆ2.)‚Ifwecan'tfindanyblockinthecurrentpartition'***atleastfml_header_lenpageslong:+***A.)‚A3(first_node_ptr)issettozero.****B.)‚A4(last_node_ptr)issettozero.******…Sideeffects:&***ˆ1.)‚D1(scratch)maybedestroyed.******…Explanation:E***ŠFirstwesetfml_header_ptrequaltothelast_node_ptrandsearchJ***…backwardthroughtheFMLuntilwefindablockatleastfml_header_lenI***…pageslong.‚IfwereachthebeginningoftheFML(fml_header_pty=0)H***…withoutfindingablockofmemoryfml_header_lenpageslong,thenweG***…zerooutthefirstandlast_node_ptrandreturn.‚(Fml_header_ptris***…alsozero.)***E***ŠOtherwise,wechecktoseeiftheblockisexactlyfml_header_lenG***…pageslong.‚Ifitis,thenwecallunlink_fml_header_nodetounlinkI***…thenodefromtheFMLlinkedlist,andcountitsmemoryasbeingpart.***…oftheusedportionofthepreviousblock.***>***ŠIftheblockisgreaterthanfml_header_lenpages,wethenH***…decrementfmlfreeandincrementfmlusedbyfml_header_lenpages,and@***…incrementfml_header_ptrbyfml_header_len*256bytessothatI***…fml_header_ptrnowpointstothefirst"used"pagewithinthecurrent***…blockandreturn.***N****************************************************************************** ,ŠTTL„GETFMLHEADERPOINTERHIGH-ALGORITHMŠPAGE$*get_fml_header_ptr_high: procedure;    #*ˆfml_header_ptr<==last_node_ptr;7*ˆdowhile(fmlfree(fml_header_ptr)D7DO.S ŠMOVE.LFMLBP(A5),A5 *"*’if(fml_header_ptr=0)thendo;*œfirst_node_ptr<==0;*œlast_node_ptr<==0; *œreturn;*’end;*ˆend;ŠIF.LA5D0THEN.S ŠSUB.L‚A3,A3 ŠSUB.L‚A4,A4ŠRTSŠENDIŠENDW *0*ˆif(fmlfree(fml_header_ptr)=fml_header_len)#*ˆthencallunlink_fml_header_node;* ŠIF.LFMLFREE(A5)D7THEN.SŠBSR.S‚UFMLHEAD * *ˆelsedo;9*’fmlfree(fml_header_ptr)<==fmlfree(fml_header_ptr)-*¯fml_header_len;9*’fmlused(fml_header_ptr)<==fmlused(fml_header_ptr)+*¯fml_header_len;%*’fml_header_ptr<==fml_header_ptr+!*¥fmlfree(fml_header_ptr)*256;*ˆend*ŠELSE.SŠSUB.L‚D7,FMLFREE(A5) ŠADD.L‚D7,FMLUSED(A5) ŠMOVE.LFMLFREE(A5),D1 ŠLSL.L‚#8,D1ŠLEA„(A5,D1.L),A5ŠENDI**end get_fml_header_ptr_high;*ŠRTS /ŠTTL„GETFMLHEADERPOINTERLOW-DOCUMENTATIONŠPAGEN*********************************************************************************,***…Name:‚GFMLPTRL(get_fml_header_ptr_low):*** ***…Function::***ŠThissubroutinereturnsapointertoablockofmemoryI***…fml_header_lenpageslonginthecurrentpartition.‚ThisblockistheD***…lowestaddressedblockinthecurrentpartitionthatisatleastI***…fml_header_lenpageslong.‚ThissubroutinehandlesalltheaccountingI***…fortheblockit"steals"fromthepartition.‚(ItcountstheblockasI***…parto' fthe"used"portionofthepreviousblock,ifapreviousblockH***…exists.)‚Also,sincethissubroutine"steals"ablockofmemoryfromE***…lowmemory,itmayhvaetomovethepointersandcounters(fmlfp,J***…fmlbp,fmlfree,fmlused)fromtheirpositiontoalocationfml_header_'***…lenpagesfurther"down"inmemory.*** ***…Inputs:***ˆ1.)‚A3=first_node_ptr.***ˆ2.)‚D7=fml_header_len.*** ***…Outputs:***ˆ1.)‚A5=fml_header_ptr.;***ˆ2.)‚Ifwecan'tfindanyblockinthecurrentpartition'***atleastfml_header_lenpageslong:+***A.)‚A3(first_node_ptr)issettozero.****B.)‚A4(last_node_ptr)issettozero.******…Sideeffects:‚None:******…Explanation:F***ŠFirstwesetfml_header_ptrequaltothefirst_node_ptrandsearchI***…forwardthroughtheFMLuntilwefindablockatleastfml_header_lenC***…pageslong.‚IfwereachtheendoftheFML(fml_header_pty=0)H***…withoutfindingablockofmemoryfml_header_lenpageslong,thenweG***…zerooutthefirstandlast_node_ptrandreturn.‚(Fml_header_ptris***…alsozero.)***E***ŠOtherwise,wechecktoseeiftheblockisexactlyfml_header_lenG***…pageslong.‚Ifitis,thenwecallunlink_fml_header_nodetounlinkI***…thenodefromtheFMLlinkedlist,andcountitsmemoryasbeingpart.***…oftheusedportionofthepreviousblock.***>***ŠIftheblockisgreaterthanfml_header_lenpages,wecallG***…move_fml_nodetomovethepointersandcountersofthecurrentnodeJ***…(fmlfp,fmlbp,fmlfree,fmlused)fml_header_lenpages"down"inmemory;***…inordertomakeroomfortheFML_HEADERinlowmemory.***N****************************************************************************** +ŠTTL„GETFMLHEADERPOINTERLOW-ALGORITHMŠPAGE#*get_fml_header_ptr_low: procedure;    $*ˆfml_header_ptr<==first_node_ptr;7*ˆdowhile(fmlfree(fml_header_ptr)D7DO.S ŠMOVE.LFMLFP(A5),A5 *"*’if(fml_header_ptr=0)thendo;*œfirst_node_ptr<==0;*œlast_node_ptr<==0; *œreturn;*’end;*ˆend;*ŠIF.LA5D0THEN.S ŠSUB.L‚A3,A3 ŠSUB.L‚A4,A4ŠRTSŠENDIŠENDW *0*ˆif(fmlfree(fml_header_ptr)=fml_header_len)#*ˆthencallunlink_fml_header_node;*ˆelsecallmove_fml_node;* ŠIF.LFMLFREE(A5)D7THEN.SŠBSR.S‚UFMLHEADŠELSE.SŠBSR.S‚MFMLNODEŠENDI *óÜRå0í2õhý*W AGS%M-4*end get_fml_header_ptr_low;*ŠRTS +ŠTTL„UNLINKFMLHEADERNODE-DOCUMENTATIONŠPAGEN*********************************************************************************,***…Name:‚UFMLHEAD(unlink_fml_header_node):*** ***…Function:E***ŠThissubroutinehandlestheunlinkingofthefml_header_nodefromI***…theFML.‚Ittakescareoflinkingtheprevious_node(ifthereisone)I***…tothenext_node(ifthereisone)andviceversa.‚ItalsotakescareJ***…ofaccountingforthefml_header_nodeaspartofthe"used"portionof(***…theprevious_node(ifthereisone).*** ***…Inputs:***ˆ1.)‚A3=first_node_ptr.***ˆ2.)‚A4=last_node_ptr.***ˆ3.)‚A5=fml_header_ptr.*** ***…Outputs:E***ˆ1.)‚UpdatedFMLwiththefml_header_no' de"unlinked"fromtheFML,?***andcountedaspartofthe"used"partofitsprevious_node***(ifthereisone).******…Sideeffects:.***ˆ1.)‚A3(first_node_ptr)couldgetchanged.-***ˆ2.)‚A4(last_node_ptr)couldgetchanged.3***ˆ3.)‚A2(previous_node_ptr)couldgetdestroyed.)***ˆ4.)‚A6(scratch)couldgetdestroyed.&***ˆ5.)‚D1(scratch)maybedestroyed.******…Explanation:C***ŠThefirstdoblockhandlesthecasewherethefml_header_ptrisA***…equaltothefirst_node_ptr.‚InthiscasewemustadvancetheG***…first_node_ptrtopointtothenextnodeintheFML.‚IfthereisnoJ***…nextnode(newfirst_node_ptr=0),thenwezerooutthelast_node_ptrD***…toindicateanemptyFML,andreturn.‚Otherwise,wezeroouttheD***…fmlbpofthenewfirst_node_ptrtoindicatethatthisisnowthe%***…beginningoftheFML,andreturn.***>***ŠThenextlargedoblockofcodehandlesthecasewheretheI***…fml_header_ptrisequaltothelast_node_ptr.‚InthiscaseweattemptJ***…tobackupthelast_node_ptrtopointtothepreviousnodeintheFML.F***…Ifthereisnopreviousnode(newlast_node_ptr=0),thenwezero@***…outthefirst_node_ptrtoindicateanemptyFML,andreturn.J***…Otherwise,wezerooutthefmlfpofthenewlast_nodetoindicatethatG***…thisisnowtheendoftheFML,updatethefmlusedfieldofthenew@***…last_nodetoequalitscurrentvalue,plusthelengthofthe9***…previouslast_node(fmlfreeandfmlused),andreturn.***@***ŠIfneitherofthesecasesoccurred,thenthefml_header_nodeI***…existssomewhereinthemiddleoftheFML.‚InthiscasewemustfirstD***…getapointertothenodebeforethefml_header_nodeintheFML.G***…Nowthefmlfpofthispreviousnodemustbesettothevalueofthe:***…fmlfpofthefml_header_node,andthus"skipover"theG***…fml_header_node.‚Havingdonethis,weupdatethefmlusedportionofI***…thisprevious_nodetoincludeitsoldfmlusedvalueandthelengthof?***…thefml_header_node(fmlfreeandfmlused).‚(ThisinessenceG***…countstheentirefml_header_node,usedandfreememory,aspartofH***…theusedportionofthepreviousnode.)‚Finally,weupdatethefmlbpI***…ofthenodeafterthefml_header_nodeintheFMLtopointbacktothe;***…previousnode,andthuscompletethe"unlinking"ofthe***…fml_header_node.***M***************************************************************************** 'ŠTTL„UNLINKFMLHEADERNODE-ALGORITHMŠPAGE#*unlink_fml_header_node: procedure;    /*ˆif(fml_header_ptr=first_node_ptr)thendo;,*’first_node_ptr<==fmlfp(first_node_ptr);*’if(first_node_ptr=0)*’thenlast_node_ptr<==0;%*’elsefmlbp(first_node_ptr)<==0);*ˆend;3*ˆelseif(fml_header_ptr=last_node_ptr)thendo;**’last_node_ptr<==fmlbp(last_node_ptr);*’if(last_node_ptr=0)*’thenfirst_node_ptr<==0; *’elsedo;*œfmlfp(last_node_ptr<==0);*œfmlused(last_node_ptr)<==*¦fmlused(last_node_ptr)+*¦fmlfree(fml_header_ptr)+*¦fmlused(fml_header_ptr);*’end;*ˆend; *ˆelsedo;/*’previous_node_ptr<==fmlbp(fml_header_ptr);7*’fmlfp(previous_node_ptr)<==fmlfp(fml_header_ptr);!*’fmlused(previous_node_ptr)<==*œfmlused(previous_node_ptr)+*œfmlfree(fml_header_len)+*œfmlused(fml_header_ptr);+*’next_node_ptr<==fmlfp(fml_header_ptr);.*’fmlbp(next_node_ptr)<==previous_node_ptr;*ˆend;  *end unlink_fml_header_node; "ŠTTL„UNLINKFMLHEADERNODE-CODEŠPAGE#*unlink_fml_header_node: procedure;* UFMLHEAD: */*ˆif(fml_header_ptr=first_node_ptr)thendo;,*’first_node_ptr<==fmlfp(first_node_ptr);*’if(first_node_ptr=0)*’thenlast_node_ptr<==0);$*’elsefmlbp(first_node_ptr)<==0;*ˆend*ŠIF.LA5A3THEN.S ŠMOVE.LFMLFP(A3),A3 ŠIF.LA3D0THEN.S ŠSUB.L‚A4,A4 ŠELSE.SŠCLR.L‚FMLBP(A3)ŠENDI *3*ˆelseif(fml_header_ptr=last_node_ptr)thendo;**’last_node_ptr( <==fmlbp(last_node_ptr);*’if(last_node_ptr=0)*’thenfirst_node_ptr<==0);*ŠELSE.SŠIF.LA5A4THEN.S ŠMOVE.LFMLBP(A4),A4 ŠIF.LA4D0THEN.S ŠSUB.L‚A3,A3 * *’elsedo;*œfmlfp(last_node_ptr)<==0;*œfmlused(last_node_ptr)<==*¦fmlused(last_node_ptr)+*¦fmlfree(fml_header_ptr)+*¦fmlused(fml_header_ptr);*’end;*ˆend;*ŠELSE.SŠCLR.L‚FMLFP(A4) ŠMOVE.LFMLFREE(A5),D1ŠADD.L‚FMLUSED(A5),D1ŠADD.L‚D1,FMLUSED(A4)ŠENDI * *ˆelsedo;/*’previous_node_ptr<==fmlbp(fml_header_ptr);7*’fmlfp(previous_node_ptr)<==fmlfp(fml_header_ptr);!*’fmlused(previous_node_ptr)<==*œfmlused(previous_node_ptr)+*œfmlfree(fml_header_ptr)+*œfmlused(fml_header_ptr);+*’next_node_ptr<==fmlfp(fml_header_ptr);.*’fmlbp(next_node_ptr)<==previous_node_ptr;*ˆend;*ŠELSE.SŠMOVE.LFMLBP(A5),A2 ŠMOVE.LFMLFP(A5),FMLFP(A2) ŠMOVE.LFMLFREE(A5),D1ŠADD.L‚FMLUSED(A5),D1ŠADD.L‚D1,FMLUSED(A2) ŠMOVE.LFMLFP(A5),A6 ŠMOVE.LA2,FMLBP(A6)ŠENDIŠENDI**end unlink_fml_header_node;*ŠRTS "ŠTTL„MOVEFMLNODE-DOCUMENTATIONŠPAGEN*********************************************************************************#***…Name:‚MFMLNODE(move_fml_node):*** ***…Function:D***ŠThissubroutine"moves"thepointersandcounters(fmlfp,fmlbp,C***…fmlfree,fmlused)ofanFMLnodefml_header_lenpages"down"inG***…memory.‚ItalsohandlesallaccountingforthechangeinthestatusH***…ofthemovedmemory(fmlfreeofthecurrentnodegetsdecrementedbyH***…fml_header_lenpages,andfmlusedforthepreviousnode(ifthereisB***…one)getsincrementedbythesamevalue).‚ThissubroutinealsoG***…accountsforanychangeinthestatusofthefirst_node_ptr(iftheH***…fml_header_ptrwaspointingtothefirstnode),orthelast_node_ptrF***…(ifthefml_header_ptrwaspointingtothelastnode)asrequired.*** ***…Inputs:***ˆ1.)‚A3=first_node_ptr.***ˆ2.)‚A4=last_node_ptr.***ˆ3.)‚A5=fml_header_ptr.***ˆ4.)‚D7=fml_header_len.*** ***…Outputs:C***ˆ1.)‚AnewFMLnodemoveddowninmemorybyfml_header_lenpage.A***ˆ2.)‚Allnewpointerstoreflectthedisplacementofthenode.******…Sideeffects:***ˆ1.)‚A2getsdestroyed.+***ˆ2.)‚A3(first_node_ptr)maybeupdated.****ˆ3.)‚A4(last_node_ptr)maybeupdated.$***ˆ4.)‚A6(scratch)getsdestroyed.******…Explanation:D***ŠFirstwecomputetheaddressofthemovednodetobetheaddressH***…ofthefml_header_ptrplustheoffset,inbytes,thatthenodeistoH***…bemoved(fml_header_len*256).‚ThenwegetapointertothepreviousE***…nodeintheFML.‚Ifthereisnopreviousnode,thenweupdatetheG***…first_node_ptrtopointtothemovednode.‚Otherwise,weupdatetheH***…fmlfpfieldofthepreviousnodetopointtothemovednode,andaddH***…thefml_header_lenpagestothe"used"portionofthepreviousnode.***D***ŠNextwedecrementthe"free"fieldofthefml_header_nodebytheJ***…valueofthefml_header_lentoreflectthefactthatthismemoryisnoI***…longeravailabletothatnode.‚ThenwegetapointertothenextnodeD***…intheFML,andifitiszero(nonextnode),thenweupdatetheF***…last_node_ptrtopointtothemovednode.‚Otherwise,weupdatethe;***…fmlbpofthenextnodetopointbacktothemovednode.***C***ŠFinally,weactuallymovethepointersandcountersofthenodeJ***…fromthememorypointedtobythefml_header_ptrtothememorypointed)***…tobythemoved_node_ptr,andreturn.***M***************************************************************************** ŠTTL„MOVEFMLNODE-ALGORITHMŠPAGE*move_fml_node: procedure;    9*ˆmoved_node_ptr<==fml_header_ptr+fml_header_len*256; /*ˆprevious_node_ptr<==fmlbp(fml_header_ptr);*ˆif(previous_node_ptr=0))*ˆthenfirst_node_ptr<==moved_node_ptr; *ˆelsedo;/*’fmlfp(previous_node_ptr)<==moved_node_ptr;!*’fmlused(p( revious_node_ptr)<==*œfmlused(previous_node_ptr)+*œfml_header_len;*ˆend; *ˆfmlfree(fml_header_ptr)<==*œfmlfree(fml_header_ptr)-*œfml_header_len; +*ˆnext_node_ptr<==fmlfp(fml_header_ptr);*ˆif(next_node_ptr=0)(*ˆthenlast_node_ptr<==moved_node_ptr;0*ˆelsefmlbp(next_node_ptr)<==moved_node_ptr; 2*ˆfmlfp.fmlbp.fmlused.fmlfree(moved_node_ptr)<==/*’fmlfp.fmlbp.fmlused.fmlfree(fml_header_ptr);  *end move_fml_node; ŠTTL„MOVEFMLNODE-CODEŠPAGE*move_fml_node: proc;* MFMLNODE: *9*ˆmoved_node_ptr<==fml_header_ptr+fml_header_len*256;* ŠLSL.L‚#8,D7ŠLEA„(A5,D7.L),A6 ŠLSR.L‚#8,D7 */*ˆprevious_node_ptr<==fmlbp(fml_header_ptr);*ˆif(previous_node_ptr=0))*ˆthenfirst_node_ptr<==moved_node_ptr;*ŠMOVE.LFMLBP(A5),A2 ŠIF.LA2D0THEN.S ŠLEA„(A6),A3 * *ˆelsedo;/*’fmlfp(previous_node_ptr)<==moved_node_ptr;!*’fmlused(previous_node_ptr)<==*œfmlused(previous_node_ptr)+*œfml_header_len;*ˆend;*ŠELSE.SŠMOVE.L‚A6,FMLFP(A2) ŠADD.L‚D7,FMLUSED(A2)ŠENDI *ˆfmlfree(fml_header_ptr)<==*œfmlfree(fml_header_ptr)-*œfml_header_len;*ŠSUB.L‚D7,FMLFREE(A5) *+*ˆnext_node_ptr<==fmlfp(fml_header_ptr);*ˆif(next_node_ptr=0)(*ˆthenlast_node_ptr<==moved_node_ptr;0*ˆelsefmlbp(next_node_ptr)<==moved_node_ptr;*ŠMOVE.LFMLFP(A5),A2 ŠIF.LA2D0THEN.S ŠLEA„(A6),A4 ŠELSE.SŠMOVE.L‚A6,FMLBP(A2)ŠENDI *2*ˆfmlfp.fmlbp.fmlused.fmlfree(moved_node_ptr)<==/*’fmlfp.fmlbp.fmlused.fmlfree(fml_header_ptr);*ŠMOVE.LFMLFP(A5),FMLFP(A6)ŠMOVE.LFMLBP(A5),FMLBP(A6)ŠMOVE.LFMLUSED(A5),FMLUSED(A6)ŠMOVE.LFMLFREE(A5),FMLFREE(A6) **end move_fml_node;*ŠRTS *ŠTTL„CHECKMEMMAPCONFLICT-DOCUMENTATIONŠPAGEM********************************************************************************+***…Name:‚CMEMCONF(check_memmap_conflict):*** ***…Function:C***ŠThissubroutinecheckstheRAMpartitiondescribedbytheentryB***…inthesrc_memtblpointedtobythesrc_memtbl_ptragainstallE***…previously-describedRAMpartitions.‚IfthissubroutinedetectsaD***…fatalconflictitwillnotreturnexecutiontothecaller.‚IfitC***…detectsanaliaspartition(samestartingaddressassomeotherK***…partition),itreturnsexecutionwiththegot_alias_partition_flagset.9***…Otherwise,itreturnsexecutionwiththatflagreset.*** ***…Inputs:***ˆ1.)‚A0=src_memtbl_ptr.***ˆ2.)‚A1=dest_memtbl_ptr.***ˆ3.)‚D4=start_of_part_ptr.***ˆ4.)‚SYSPAR(MAPBEG).*** ***…Outputs:&***ˆ1.)‚D2=got_alias_partition_flag.@***ˆ2.)‚A5=fml_header_ptr(ifgot_alias_partition_flag=set).******…Sideeffects:,***ˆ1.)‚A2(temp_memtbl_ptr)getsdestroyed.$***ˆ2.)‚D1(scratch)getsdestroyed.3***ˆ3.)‚Executionmaynotreturn(maycallKILLER).******…Explanation:@***ŠFirstweinitializefortheloopbyresettingthegot_alias_I***…partition_flag,settingthecurrent_partition_number,andsettingtheF***…temp_memtbl_ptrtopointtothebeginningofthedest_memtbl.‚Then***…webegintheloop.***B***ŠIfwedetectaduplicatepartitionnumber,thenwecallKILLERC***…anddie.‚Ifwedetectaduplicatestart_of_part_ptr,wesettheI***…got_alias_partition_flag,setthefml_header_ptrequaltotheMAPFMLPB***…fieldofthealiaspartitionandreturn.‚IfwedetectthatourD***…currentstart_of_part_ptrisatalowermemorylocationthantheF***…ENDAVAILfieldofsomepreviouspartition,thenwecallKILLERandC***…die.‚Otherwise,wekeeploopinguntilwehavelookedatallthe>***…previously-definedentriesinthedest_memtbl,andreturn.***L**************************************************************************** &ŠTTL„CHECKMEMMAPCONFLICT-ALGORITHMŠPAGE"*check_memmap_conflict: procedure;    !*ˆresetgot_alias_partition_flag;B*ˆcurrent_partition_number<==MAPMTYP(src_memtbl_p) tr).AND.$0F;&*ˆtemp_memtbl_ptr<==SYSPAR(MAPBEG);/*ˆdountil(temp_memtbl_ptr=dest_memtbl_ptr);;*’if(MAPPART(temp_memtbl_ptr)=current_partition_number)*’thencallKILLER;=*’if(MAPSTRA(temp_memtbl_ptr)=start_of_part_ptr)thendo;*œsetgot_alias_partition_flag;/*œfml_header_ptr<==MAPFMLP(temp_memtbl_ptr); *œreturn;*’end;=*’if(start_of_part_ptrD1THEN.S ŠBSR„KILLERŠENDI *=*’if(mapstra(temp_memtbl_ptr)=start_of_part_ptr)thendo;*›setgot_alias_partition_flag;/*›fml_header_ptr<==mapfmlp(temp_memtbl_ptr); *›return;*’end;* ŠIF.LMAPSTRA(A2)D4THEN.SŠST…D2ŠMOVE.LMAPFMLP(A2),A5ŠRTSŠENDI *>*’if(start_of_part_ptrENDAVAIL(A6)THEN.S ŠBSR„KILLERŠENDI **’temp_memtbl_ptr<==*œtemp_memtbl_ptr+*œlength(dest_memtbl_entry);*ŠLEA„MAPENTSZ(A2),A2 **ˆend;*ŠUNTIL.LA2A1 **end check_memmap_conflict;*ŠRTS +ŠTTL„BUILDRAMMEMTBLENTRY-DOCUMENTATIONŠPAGEN*********************************************************************************,***…Name:‚BRAMNODE(build_ram_memtbl_entry):*** ***…Function:D***ŠThissubroutinewritesinallpointersanddescriptorsforaRAM'***…partitionentryinthedest_memtbl.*** ***…Inputs:***ˆ1.)‚A0=src_memtbl_ptr.***ˆ2.)‚A1=dest_memtbl_ptr.***ˆ3.)‚A5=fml_header_ptr.***ˆ4.)‚D4=start_of_part_ptr.*** ***…Outputs:7***ˆ1.)‚Dest_memtbl_entry(RAMentry)pointedtobythe***dest_memtbl_ptr.******…Sideeffects:+***ˆ1.)‚D1,andD2(scratch)getdestroyed.******…Explanation:D***ŠTheMAPMTYPfieldofthedest_memtbl_entrygetssetequaltotheF***…mostsignificantfourbitsoftheMAPPARTfieldofthesrc_memtbl_H***…entry,andtheMAPPARTfieldofthedest_memtbl_entrygetssetequalI***…tothefourleastsignificantbitsofthesamefield.‚Finally,wesetJ***…theMAPSTRAfieldofthedest_memtbl_entryequaltothestart_of_part_G***…ptr,andtheMAPFMLPfieldequaltothefml_header_ptr,andreturn.***M***************************************************************************** 'ŠTTL„BUILDRAMMEMTBLENTRY-ALGORITHMŠPAGE#*build_ram_memtbl_entry: procedure;    *ˆMAPMTYP(dest_memtbl_ptr)<==%*’MAPPART(src_memtbl_ptr).AND.$70;*ˆMAPPART(dest_memtbl_ptr)<==%*’MAPPART(src_memtbl_ptr).AND.$0F;2*ˆMAPSTRA(dest_memtbl_ptr)<==start_of_part_ptr;/*ˆMAPFMLP(dest_memtbl_ptr)<==fml_header_ptr;  *end build_ram_memtbl_entry; "ŠTTL„BUILDRAMMEMTBLENTRY-CODEŠPAGE#*build_ram_memtbl_entry: procedure;* BRAMNODE: **ˆMAPMTYP(dest_memtbl_ptr)<==%*’MAPMTYP(src_memtbl_ptr).AND.$70;*‰MOVE.B„MAPMTYP(A0),D1 ‰MOVE.B„D1,D2‰AND.B…#$70,D1‰MOVE.B„D1,MAPMTYP(A1) **ˆmappart(dest_memtbl_ptr)<==&*’mapmtyp(dest_memtbl_ptr).AND.$0F;*‰AND.B…#$0F,D2‰MOVE.B„D2,MAPPART(A1) *2*ˆmapstra(dest_memtbl_ptr)<==start_of_part_ptr;*‰MOVE.L„D4,MAPSTRA(A1) */*ˆmapfmlp(dest_memtbl_ptr)<==fml_header_ptr;*‰MOVE.L„A5,MAPFMLP(A1) **end build_ram_memtbl_entry;*ŠRTS +ŠTTL„BUILDROMMEMTBLENTRY-DOCUMENTATIONŠPAGEM**************************************************************) ******************,***…Name:‚BROMNODE(build_rom_memtbl_entry):*** ***…Function:E***ŠThissubroutinedoessomeprimitivecheckingonthelegalityofaB***…ROMpartitiondescribedinthesrc_memtbl,andthenwritestheH***…descriptorsandpointerstodescribethatnodeintothedest_memtbl.*** ***…Inputs:***ˆ1.)‚A0=src_memtbl_ptr.***ˆ2.)‚A1=dest_memtbl_ptr.***ˆ3.)‚D4=start_of_part_ptr.***ˆ4.)‚D5=end_of_part_ptr.*** ***…Outputs:7***ˆ1.)‚Dest_memtbl_entry(ROMentry)pointedtobythe***dest_memtbl_ptr.******…Sideeffects:$***ˆ1.)‚A6(scratch)getsdestroyed./***ˆ2.)‚Executionmaynotreturn(callKILLER).******…Explanation:D***ŠFirstweverifythatthecurrentROMpartitiondoesnotstartatH***…alowermemorylocationthantheendingofthelastpartitionintheH***…dest_memtbl.‚Ifitdoes,wehaveafatalconfigurationerror,andso***…wecallKILLER.***>***ŠOtherwise,wemovetheMAPMTYPandMAPPARTfieldsfromtheH***…src_memtbltothedest_memtbl,settheMAPSTRAandMAPENDAfieldsofF***…thedest_memtblequaltothestart_of_part_ptrandend_of_part_ptr***…respectively,andreturn.***N****************************************************************************** 'ŠTTL„BUILDROMMEMTBLENTRY-ALGORITHMŠPAGE#*build_rom_memtbl_entry: procedure;   *ˆif(start_of_part_ptr<1*’ENDAVAIL(MAPFMLP(previous(dest_memtbl_ptr)))*ˆthencallKILLER; '*ˆMAPMTYP.MAPPART(dest_memtbl_ptr)<==#*’MAPMTYP.MAPPART(src_memtbl_ptr);3*ˆMAPSTRA(dest_memtbl_ptr)<==start_of_part_ptr);0*ˆMAPENDA(dest_memtbl_ptr)<==end_of_part_ptr;  *end build_rom_memtbl_entry; "ŠTTL„BUILDROMMEMTBLENTRY-CODEŠPAGE#*build_rom_memtbl_entry: procedure;* BROMNODE: **ˆif(start_of_part_ptr<1*’endavail(mapfmlp(previous(dest_memtbl_ptr)))*ˆthencallKILLER;*ŠMOVE.LMAPFMLP-MAPENTSZ(A1),A6!ŠIF.LD4ENDAVAIL(A6)THEN.S ŠBSR„KILLERŠENDI *'*ˆmapmtyp.mappart(dest_memtbl_ptr)<==#*’mapmtyp.mappart(src_memtbl_ptr);2*ˆmapstra(dest_memtbl_ptr)<==start_of_part_ptr;0*ˆmapenda(dest_memtbl_ptr)<==end_of_part_ptr;*ŠMOVE.WMAPMTYP(A0),MAPMTYP(A1) ŠMOVE.LD4,MAPSTRA(A1) ŠMOVE.LD5,MAPENDA(A1)**end build_rom_memtbl_entry;*ŠRTS  ŠENDééé>1INIT ASYST'M68XXX INIT SA7!ƒSYSTEM INITIALIZERþ2pREADYHD pENDSYSP pASN pINITMMU pMEMTYPA pRDYHEAD pEEND pIOVCTBGN pTIAT pVCTUBGN pSDEFTYP pSEMLIST pTDEFTYP pLAM pUDEFTYP pPAGESIZE pMEMTYPS pMEMTYPT pTIMERST pMEMTYPU pCCBHD pASNTBL pTCBHD ÷2pINITIO pESTACK HKILLER ,pGSTBEG pSMEMHI pTRCSIZ pMAPBEG pNOTLAM pGSTSIZ pSMEMLO pIOVSIZ pPATBEG pPANEL pPANELA pESTART pUDRBEG pCRASHSAV pPATSIZ pSEMEND pUSTBEG pUDRSIZ pBKG_HEAD «2pUSTSIZ pDISPATCH pTRACFLAG pBKG_ACTI pBUGTRAC pEXCSTACK pTCBHEAD pTRACEBEG pENDMEMT pBKG_TAIL pMACSTRC pMEMTABL pWHERLOAD pADEFTYP pTRCFLAG (´L3€V  .|!ÀüAù(7,<(œˆ†* ÿBa:.zA) Ú!Ï B!úAA Ò G"zA4 Ì!É 3gAú!ÈL3jH 3|€2<¿a ` !ü(7 3.x B":AI žg*&zA5 ˜$AIúAE ’ÙüAú‘ÊÑËCú!ÉI3 &Ú¹Ênú\NÐ$zB5 ÿn ¼!UDRáŠ]‚„ü 1BB¸ D$:B, üÌg2 BpN@`aê!È DaEèO3 TP  ŠáŠQ‚„üÄüÔŠ!B1úBK üš ?!ü aB( üŒJ¸ 'fœB¸ GúBE ü|Cë <€pN@`ad4+;BF3€ ,g +x  !Í EëpBJjgREêQÈÿòGë(m6AIì p(ÛQÈL3„@ ÿü “!TCBg†aB# ûæ.x B2<ÀaD/:B> ûØNuHVMù(7,¯@îFü'MîHÖ?ÿ-_8-OÈnúNu0<`0<F虀2<é™"x 3Cé2A02I3 2€@02€Nua&a°‹fa†a|°faÿ|Cí!É -aÂazNuB€AúBH û:°Pgaÿ^L3  B‡EЇ Eê Rÿÿfð‡#à*(B(:B û º„c*„ÿBKúûû" B*AMúBE ûñK3 ,Bœ°ºBC úèf†` (<*ÿB*DB†º„baþöNu hÿÿ g,a2 ÿfaN`aF3 ðJga$`a@°‹ga¾a`Ì3|ÿÿ Nu~Aè Cé ((„ÿB*(BF3 *DB†º„baþNu•ÊBB‚BƒIÕKõhHz ?H3%Høÿÿ!@ø!!× Ni!É!H!ø!L"x 3|•3|µ3| 3|°|`Þ4éééééééX=/*†POWRFAIL.AF=/*=/*=/*@=/*†IFNOOUTPUTARGUMENTFORTHELISTINGISSPECIFIEDTHECHAIN$=/*†FILEWILLDEFAULTTOPOWRFAIL.LS=/*=/IFC \1=ARG :.M68XXX.POWRFAIL.LS=/ENDIF=/*3=ASM :.M68XXX.POWRFAIL,:.M68XXX.POWRFAIL,\1;MRZ=040=/*{ Included files are:=/*ƒ9995.&.STR.EQ=/*}=/*=ENDééééé+ éa‰PAGE**ˆINCLUDEFILES**ˆINCLUDEƒ9995.&.STR.EQ*‰NOLIST‰INCLUDEƒ9995.&.STR.EQ‰LIST‰PAGE4POWRFAILIDNTƒ5,1ƒ68xxxPOWERFAILINTERRUPTHANDLER*ˆ*********************ˆ*POWRFAIL1.00„**ˆ*’**ˆ*HLD6ƒ06/24/81‚**ˆ**********************…POWERFAILINTERRUPTROUTINE*@*…THISROUTINEISUSEDONLYTORESPONDTOAPOWERFAILINTERRUPT-*…ONAVERSAMODULE01(AUTOVECTOR-LEVEL7)*%*…REGISTERUSAGE:ALLREGISTERSSAVED*‰SECTIONLEVEL00**‰XDEFƒPOWRFAIL‰XREF.SCRASHSAV*:POWRFAILMOVEM.LD0-D7/A0-A7,CRASHSAV+8ƒSAVEALLREGISTERS'‰MOVE.W‚(A7),CRASHSAV+6ŠSAVESTATUSREG+‰MOVE.L‚2(A7),CRASHSAV‹SAVEPROGRAMCOUNTERD*********************************************************************7*„CODETOCALLAPOWERFAILROUTINECANBEENTEREDHERE*D***********************************************************************„IFTHEREISARETURN‚--RELOADREGISTERS*!‰OR.W„#$700,SR†INHIBITINTERRUPTS5‰MOVEM.LCRASHSAV+8,D0-D7/A0-A7ƒRESTOREALLREGISTERS ‰RTE“GOBACK‰ENDéééj-N1POWRFAIL ASYST'M68XXX POWRFAILSA!ƒ68xxx POWER FAIL INTERRUPT HANDLER 2BPOWRFAIL pCRASHSAV "%3)Høÿÿ!1×!!ï |Løÿÿ!Ns4éééé, ééés=/*†M68XXX.READY.AF=/*=/*@=/*†IFNOOUTPUTARGUMENTFORTHELISTINGISSPECIFIEDTHECHAIN(=/*†FILEWILLDEFAULTTOM68XXX.READY.LS=/*=/IFC \1=ARG :.M68XXX.READY=/ENDIF=/*,=ASM :.M68XXX.READY,:.M68XXX.READY,\1;RZ=045=/*{ Included files are:=/*ƒ9995.&.UTILITY.MC=/*ƒ9995.&.INTERRUP.MC=/*ƒ9995.&.STR.EQ=/*ƒ9995.&.TCB.EQ=/*}=/*=ENDéééééé|8READY…IDNTƒ5,1M68xxxRMSTRAP0Puttaskonreadylist.O*v*****************************************************************************O*******************************************************************************O**********************************************************************************É***4***…FILE:‚READY--PUTATASKONTHEREADYLIST.—******É***D***…ENVIRONMENT:‚PartoftheRMS68KexecfortheMotorola68000.‡***(***‡Copyright1983byMotorola,Inc.¢******É***H***…FUNCTION:‚TakestheTCBforataskandputsitonthereadylistƒ***E***‡accordingtoitsrunpriority.‚Therearevariousentrypoints„***D***‡tothismodulewhichprovideminorvariationsonthistheme.†******É******…NOTES:¾******É***E***…REGISTERU, SAGE:‚(A)rgument‚(D)estroyed‚(P)reserved‚(R)eturnedƒ***)***Œ0ƒ1ƒ2ƒ3ƒ4ƒ5ƒ6ƒ7‡SRhi„SRlo(CCR)…******‡D:ƒDƒPƒ.ƒ.ƒ.ƒ.ƒ.ƒ.‡.ˆD******‡A:ƒAƒ.ƒPƒ.ƒ.ƒ.ƒ.ƒP ******É******É******…ENTRYCONDITIONS:³***>***‡A0ƒ=ptrtoTCBofthetasktobeaddedtoreadylist.Š******É***-***…EXITCONDITIONSDIFFERENTFROMENTRY:Ÿ******É***O*******************************************************************************O*******************************************************************************O*^***************************************************************************** *,*‚Revisionhistory(addnewchangestotop).*…Date†Author‰ChangesG*…--------‚-------------‚----------------------------------------------G*†8/15/83‚SteveFranckƒMadeCOMINTentrypointsettherunningpriority1*žlikemostoftheotherroutinesdo.‚Rewrotethe2*žTCBsearchroutinetoexecutefaster(interrupts*žaremaskedduringsearch).*†2/08/81‚HLD6*†5/18/79‚7616*†3/06/79‚GGC3* * *‚XDEF's.*8ŠXDEFƒREADY,SBREADY†Normalentrypointstothisroutine. 'ŠXDEFƒSBRYRELQ‹EntrypointfromRELINQ.5ŠXDEFƒSBRYEXT1‹EntrypointfromEXIT2(TRAP#1exit).:ŠXDEFƒSBRYEXIR‹EntrypointfromEXITR(exitfromexception*§processing).…5ŽT–)6ŠXDEFƒSBRYXMON‹EntrypointfromEXMONreturn(REXMON).(ŠXDEFƒSBRYDLAY‹EntrypointfromCKDELAY.&ŠXDEFƒSBRYACKŒEntrypointfromAKRQST.)ŠXDEFƒSBRYSTRT‹EntrypointfromTSTSTART.0ŠXDEFƒSBRYWAKE‹EntrypointfromWAKEUPandWAIT.2ŠXDEFƒSBRYASRŒEntrypointfromASRINTandWTEVENT.'ŠXDEFƒSBRYCINT‹EntrypointfromCOMINT. * *‚XREF's.*;ŠXREF.SREADYHDŒSYSPARpointertoheadentryinreadylist.  **‚Includedfiles:*8*‰UTILITY.MCMacrosofgeneralutility(e.g.PUSH,POP).7*‰INTERRUP.MCMacrosusefulindealingwithinterrupts.2*‰STR.EQ”EquatesforsupervisorcodeunderRMS68K.4*‰TCB.EQ”EquatesrelatingtotheTaskControlBlock.*ŠNOLISTŠINCLUDE9995.&.UTILITY.MCŠINCLUDE9995.&.INTERRUP.MCŠINCLUDE9995.&.STR.EQŠINCLUDE9995.&.TCB.EQŠLIST  ŠSECTIONLEVEL00ŠOPT„BRSŠPAGE*J*‚ThesearethespecializedentrypointsforallthevariousroutinesthatL*‚wanttoputataskonthereadylist,butwanttofiddlewiththepriority*‚first.* SBRYRELQ: 2ŠMOVEQI$F0,D0Settherunpriorityofthetaskto>ŠAND.B‚TCBCPRI(A0),D0…thecurrentprioritywiththelow4bits#ŠMOVE.BD0,TCBRPRI(A0)…settozero.6ŠBRA„SBREADYŒThenjustgotothenormalREADYroutine.  SBRYEXT1: SBRYEXIR: SBRYXMON: SBRYDLAY:SBRYACK: SBRYSTRT: SBRYWAKE:SBRYASR: SBRYCINT: CŠMOVE.BTCBCPRI(A0),TCBRPRI(A0)ƒResettherunpriorityforthetask*§toitscurrentpriority.  *,*…FALLTHROUGHtothemainREADYroutine!!!!*ŠPAGE*>*…NOTE--Otherroutinesfallintothisroutinefromabove!!!!* READY:SBREADY: *(*‚Seeifhe'salreadyonthereadylist.**ŠPUSHƒSR‘SavetheSRwewereenteredwith.>ŠBSETƒ#TSK2NRDY,TCBSTAT2(A0)‚Setthebitthatsaysthisguyis6ŠIF…THENŠonthereadylist.‚Ifhewasn'talready, *.*‚He'snot;getsetuptoputhimonthelist.*+ŠSAVEƒD1/A2ŽSaveregisterswe'llblowaway.>ŠLEA„READYHD-TCBREADY,A2‚A2<--addresssuchthatTCBREADY(A2)(*§referstothereadylistheadpointer.9ŠDISABLE_INTERRUPTSˆDisableinterruptswhileweworkwith*§thevolatileTCBchain.@ŠMOVE.BTCBRPRI(A0),D0…D0.B<--priorityoftasktoputonlist. *>*‚SearchthelistforaTCBoflowerprioritythanthisguy's.*ŠREPEAT <ŠMOVE.LTCBREADY(A2),D1„D1<--ptrtonextTCBinthechain.6ŠBEQ„ADD_HIMŒIfwehittheendofthelist,justexit. 4ŠEXG.L‚D1,A2ŽA2<--ptrtotheTCBwe'relookingat.#*§D1<--ptrtoTCBjustbeforeit.BŠUNTIL.BD0TCBRPRI(A2)‚Keeploopinguntilwef- indaTCBwith'*§aprioritylowerthanourguytoadd. 5ŠEXG.L‚D1,A2ŽD1<--ptrtotheTCBoflowerpriority.#*§A2<--ptrtoTCBjustbeforeit. *M*‚Eitherwefoundsomebodyoflowerprioritythantheguywe'retryingtoaddK*‚orwehittheendofthechain.‚Eitherway,wewanttoaddthenewguyto5*‚thelistbetweentheTCB'spointedtobyA2andD1.*JADD_HIMƒMOVE.LD1,TCBREADY(A0)„Setourforwardlinktopointtotheguywe'*§foundtobeoflowerpriority(or0).AŠMOVE.LA0,TCBREADY(A2)„Setforwardlinkoftheguywewanttobe *§aftersothatitpointstous. !ŠRESTORED1/A2Restoreregisters. ŠENDI 2ŠPOP„SR‘RestoretheSRwesavedonentry&return.ŠRTS—*    ŠENDéééU1READY ASYST'M68XXX READY SA!!ƒM68xxx RMS TRAP 0 Put task on ready list.Å2pREADYHD BSBRYACK BSBRYEXIR BSBRYCINT BSBRYASR BSBRYEXT1 BSBREADY BSBRYRELQ BSBRYWAKE BSBRYSTRT BSBRYXMON BREADY  BSBRYDLAY "LG3@pðÀ($@&`h$&@çè-f,Hç@ Eø!ô|(&"* g ʰ*&còÊ!A 3%H LßFßNu4ééééééž =/*†RMS.AF=/*=/*=/*@=/*†IFNOOUTPUTARGUMENTFORTHELISTINGISSPECIFIEDTHECHAIN=/*†FILEWILLDEFAULTTORMS.LS=/*=/IFC \1=ARG :.M68XXX.RMS.LS=/ENDIF=/*)=ASM :.M68XXX.RMS,:.M68XXX.RMS,\1;MRZ=040=/*{ Included files are:- =/*ƒ9995.&.STR.EQ=/*ƒ9995.&.TR1RTCD.EQ=/*ƒ9995.&.TCB.EQ=/*}=/*=ENDééééé駉PAGE**ˆINCLUDEFILES**ˆINCLUDEƒ9995.&.STR.EQ*ˆINCLUDEƒ9995.&.TR1RTCD.EQ*ˆINCLUDEƒ9995.&.TCB.EQ*‰NOLIST‰INCLUDEƒ9995.&.STR.EQ‰INCLUDEƒ9995.&.TR1RTCD.EQ‰INCLUDEƒ9995.&.TCB.EQ‰LIST‰PAGE*RMS†IDNT„5,1‡68xxxRMSINITIALENTRYPOINT*$*ˆCOPYRIGHTED1980BYMOTOROLA,INC.**ˆRMS‚ISENTEREDHERE*‰SECTIONLEVEL00* ‰XDEF„RMS‰XREF.L‚PROGINT9,DISPATCH*RMS†JMP„DISPATCH*(*…NULLRETURNSFORTRAPSANDSUBROUTINES*‰XDEFƒT1NULL,T0NULL,SBNULL*T1NULLƒCLR.W‚4(A7)†BESUREWEGOTOEXIT0.‰MOVE.W#RTCDDIRN,TCBRTCD(A6)‚SETERRORRETURNT0NULL* SBNULLƒRTS**„JUMPHERETOCALLKILLER*‰XDEFƒCALLKILL‰XREF.LKILLERCALLKILLJSR„KILLER‰ENDééééé. °*I1RMS ASYST'M68XXX RMS SAX!ƒ68xxx RMS INITIAL ENTRY POINTr2pPROGINT9 BRMS pKILLER BSBNULL BT0NULL BT1NULL pDISPATCH BCALLKILL "3@@Nù(Bo=|NuN¹(4ééééééé¹=/*†SELFTEST.AF=/*=/*=/*@=/*†IFNOOUTPUTARGUMENTFORTHELISTINGISSPECIFIEDTHECHAIN$=/*†FILEWILLDEFAULTTOSELFTEST.LS=/*=/IFC \1=ARG :.M68XXX.SELFTEST.LS=/ENDIF=/*3=ASM :.M68XXX.SELFTEST,:.M68XXX.SELFTEST,\1;MRZ=040=/*{ Included files are:=/*ƒ9995.&.STR.EQ=/*}=/*=ENDéééé. éé‰PAGE**ˆINCLUDEFILES**ˆINCLUDEƒ9995.&.STR.EQ*‰NOLIST‰INCLUDEƒ9995.&.STR.EQ‰LIST‰PAGE9SELFTESTIDNTƒ5,1ƒ68xxxSYSTEMSELFTESTINTERRUPTHANDLER*ˆ*********************ˆ*SELFTEST1.00„**ˆ*’**ˆ*HLD6ƒ06/24/81‚**ˆ**********************…SELFTESTINTERRUPTROUTINE*>*…THISROUTINEISUSEDONLYTORESPONDTOASELFTESTINTERRUPT-*…ONAVERSAMODULE01(AUTOVECTOR-LEVEL2)*%*…REGISTERUSAGE:ALLREGISTERSSAVED*‰SECTIONLEVEL00*3CONTREG‚EQU„$F70030‡VERSAMODULE01CONTROLREGISTER*‰XDEFƒSELFTEST‰XREF.SSLFTSTA7*7SELFTESTTST.L‚SLFTSTA7‡ISTHISFIRSTENTRYTOROUTINE?‰BNE.S‚SELFT4‰BRANCHIFNO!‰OR.Wƒ#$700,SR‡INHIBITINTERRUPTS-‰MOVEM.LD0-D7/A0-A6,-(A7)‚SAVEALLREGISTERS&‰MOVE.L‚A7,SLFTSTA7ƒSAVESTACKPOINTER)‰MOVE.W‚60(A7),SR…RESTOREINTERRUPTLEVELBSELFT4ƒMOVE.L‚SLFTSTA7,A7ƒRESTOREA7INCASETHISISNOT1STENTRY*6*„CODETOCALLASELFTESTROUTINECANBEENTEREDHERE*!‰OR.W„#$700,SR†INHIBITINTERRUPTS'‰MOVE.B‚CONTREG,D0„GETCONTROLREGISTER%‰OR.B„#$20,D0‡SETBITTOTURNOFFLED/‰MOVE.B‚D0,CONTREG„PUTITINTOCONTROLREGISTER4‰MOVE.L‚SLFTSTA7,A7ƒRELOADA7(MAYBEITWASCHANGED)0‰MOVEM.L(A7)+,D0-D7/A0-A7ƒRESTOREALLREGISTERS%‰CLR.LƒSLFTSTA7†CLEARENTRYFLAGWORD ‰RTE“GOBACK‰ENDééË2S1SELFTEST ASYST'M68XXX SELFTESTSA%!ƒ68xxx SYSTEM SELFTEST INTERRUPT HANDLER 2BSELFTEST pSLFTSTA7 "EX1†EQU‚1„NUMBERFOREXIT1-GOTODISPATCH,DONOTREADYTASKBEX2†EQU‚2„NUMBERFOREXIT2-PUTTASKONREADYLIST,THENDISPATCH%EX3†EQU‚3„NUMBERFOREXITTODISPATCHFEX4†EQU‚4„NUMBERFOREXIT4-DONOTALTERTASK'SSRONRETURN(RTEVNT)*"TABLE1ƒEQU*ŽSTARTOFTRAPTABLE1*T1NONEƒEQU„0NODIRECTIVE‰DC.WƒT1NULLR-*,00*256+EX0T1GTSEG‚EQU„1ALLOCATESEGMENT‰XREF.SSEGALOC ‰DC.WƒSEGALOC-*,24*256+EX0+PB+TT T1DESEG‚EQU‚2DEALLOCATESEGMENT‰XREF.SSEGDEAL ‰DC.WSEGDEAL-*,24*256+EX0+PB+TTT1TRSEG‚EQU‚3TRANSFERSEGMENT‰XREF.STFRSEG‰DC.WTFRSEG-*,24*256+EX0+PB+TT'T1ATTSEGEQU‚4ATTACHSHAREABLESEGMENT‰XREF.SATTSEGŠDC.WATTSEG-*,24*256+EX0+PB*T1SHRSEGEQU‚5GRANTSHAREDSEGMENTACCESS‰XREF.SSEGSHAR ‰DC.WSEGSHAR-*,24*256+EX0+PB+TT'T1MOVELLEQU‚6MOVEDATABETWEENSPACES‰XREF.SMOVELL‰DC.WMOVELL-*,28*256+EX0+PB+TT(T1DCLSHREQU‚7DECLARESEGMENTSHAREABLE‰XREF.SDCLSHAR‰DC.WDCLSHAR-*,24*256+EX0+PB(T1SNPTRAC…EQU‚8ŒMOVETRACETABLETOUSER‰XREF.SSNAPTRACŠDC.WSNAPTRAC-*,00*256+EX0(T1RCVSA‚EQU‚9‹RECEIVESEGMENTATTRIBUTES ‰XREF.SRCVSA‰DC.WRCVSA-*,28*256+EX0+PB+TT T1R10„EQU‚10‰DC.WT1NULLR-*,00*256+EX0T1CRTCB‚EQU‚11ŽCREATETCB ‰XREF.SCRTCB‰DC.WCRTCB-*,28*256+EX0+PB T112…EQU‚12‰DC.WT1NULLR-*,00*256+EX0T1START‚EQU‚13ŽSTARTTASK‰XREF.STSKSTARTŠDC.WTSKSTART-*,10*256+EX2+PBêHóGûO T1ABORT‚EQU‚14ŠABORTTASK(SELF) ‰XREF.SABORT‰DC.WABORT-*,00*256+EX3‰XDEFT1TERMŠFOREXABRT#T1TERMƒEQU‚15ŽTERMINATETASK(SELF) ‰XREF.STERM‰DC.WTERM-*,00*256+EX3(T1TERMT‚EQU‚16ŽTERMINATETASK(NOTSELF) ‰XREF.STERMT‰DC.WTERMT-*,10*256+EX2+PB#T1SUSPNDEQU‚17ŽSUSPENDTASK(SELF)‰XREF.SSUSPEND‰DC.WSUSPEND-*,00*256+EX1%T1RESUMEEQU‚18ŽRESUMESUSPENDEDTASK‰XREF.SRESUME‰DC.WRESUME-*,08*256+EX2+PB+TT‰XDEFT1WAITŠNEEDEDFORWAKEUP)T1WAITƒEQU‚19ŽTASKBECOMESBLOCKED(SELF)‰XREF.STSKWAIT‰DC.WTSKWAIT-*,00*256+EX1%T1WAKEUPEQU‚20ŽWAKEUPAWAITINGTASK‰XREF.SWAKEUP‰DC.WWAKEUP-*,08*256+EX2+PB+TT0T1DELAY‚EQU‚21‹DELAYSOMENUMBEROFMILLISECONDS ‰XREF.SDELAY‰DC.WDELAY-*,00*256+EX1$T1RELINQEQU‚22‹RELINQUISHEXECUTION‰XREF.SRELINQ‰DC.WRELINQ-*,00*256+EX1&T1TSKATREQU‚23‹RETURNTASKATTRIBUTES‰XREF.STSKATTR ‰DC.WTSKATTR-*,08*256+EX0+PB+TT$T1SETPRIEQU‚24†SETCURRENTPRIORITY‰XREF.SSETPRI‰DC.WSETPRI-*,09*256+EX2+PB+TTT1STOPƒEQU‚25†STOPRUNNINGTASK ‰XREF.SSTOPT‰DC.WSTOPT-*,08*256+EX0+PB4T1EXPVCTEQU‚26ŠSAVETASK'SEXCEPTIONVECTORADDRESS‰XREF.SEXPVCT‹DC.WEXPVCT-*,36*256+EX0+PB/T1TRPVCT‚EQU‚27ŠSAVETASK'STRAPVECTORADDRESS‰XREF.STRPVCTŠDC.WTRPVCT-*,56*256+EX0 0+PB(T1TSKINF‚EQU‚28MOVETASKINFOTOCALLERŠXREF.STSKINFO ŠDC.WTSKINFO-*,14*256+EX0+PB+TT+T1RQSTPA‚EQU‚29REQUESTPERIODICACTIVATIONŠXREF.SRQSTPAŠDC.WRQSTPA-*,26*256+EX0+PB+TT'T1DELAYW‚EQU‚30DELAYWITHWAITOPTIONSŠXREF.SDELAYWŠDC.WDELAYW-*,00*256+EX1T1GTASQƒEQU‚31ŽALLOCATEANASQ‰XREF.SASQALOC ŠDC.WASQALOC-*,22*256+EX2+PB+TTT1DEASQƒEQU‚32DEALLOCATEASQ‰XREF.SASQFREEŠDC.WASQFREE-*,00*256+EX0T1SETASQ‚EQU‚33SETASQSTATUS‰XREF.SASQSTATSŠDC.WASQSTATS-*,00*256+EX0#T1RDEVNT‚EQU‚34ŽREADEVENTFROMASQ‰XREF.SASQREADŠDC.WASQREAD-*,00*256+EX0T1QEVNTƒEQU…35ŠXREF.SASQEVENT!ŠDC.W„ASQEVENT-*,18*256+EX2+PB+TTT1WTEVNT‚EQU…36ŒWAITFOREVENTŠXREF.SWTEVENTŠDC.W„WTEVENT-*,00*256+EX1!T1RTEVNT‚EQU…37ŒRETURNFROMEVENTŠXREF.SRTEVENTŠDC.W„RTEVENT-*,00*256+EX4 T1R38…EQU…38ŠDC.W„T1NULLR-*,00*256+EX0 T1R39…EQU…39ŠDC.W„T1NULLR-*,00*256+EX0 T1R40…EQU…40ŠDC.W„T1NULLR-*,00*256+EX0"T1ATSEMƒEQU…41ŒATTACHTOSEMAPHORE ŠXREF.S‚ATSEMŠDC.W„ATSEM-*,10*256+EX0+PB T1WTSEMƒEQU…42ŒWAITONSEMAPHORE ŠXREF.S‚WTSEMŠDC.W„WTSEM-*,10*256+EX0+PBT1SGSEMƒEQU…43ŒSIGNALSEMAPHORE ŠXREF.S‚SGSEMŠDC.W„SGSEM-*,10*256+EX0+PBT1DESEMƒEQU…44ŒDETACHSEMAPHORE ŠXREF.S‚DESEMŠDC.W„DESEM-*,10*256+EX0+PBT1CRSEMƒEQU…45ŒCREATESEMAPHORE ŠXREF.S‚CRSEMŠDC.W„CRSEM-*,10*256+EX0+PB3T1DESEMA‚EQU…46DETACHALLSEMAPHORESFORTHISTASKŠXREF.S‚DESEMAŠDC.W„DESEMA-*,00*256+EX0 T147†EQU…47ŠDC.W„T1NULLR-*,00*256+EX0 T148†EQU…48ŠDC.W„T1NULLR-*,00*256+EX0 T149†EQU…49ŠDC.W„T1NULLR-*,00*256+EX0 T150†EQU…50ŠDC.W„T1NULLR-*,00*256+EX0.T1SERVER‚EQU…51ŽESTABLISHSERVERFORUSERTRAPŠXREF.S‚SERVERŠDC.W„SERVER-*,06*256+EX0+PB+T1DSERVE‚EQU…52DETACHFROMSERVERFUNCTIONŠXREF.S‚DSERVEŠDC.W„DSERVE-*,00*256+EX0.T1DERQST‚EQU…53ŽSETUSER/SERVERREQUESTSTATUSŠXREF.S‚DERQSTŠDC.W„DERQST-*,00*256+EX0+T1AKRQST‚EQU…54ŽACKNOWLEDGESERVICEREQUESTŠXREF.S‚AKRQSTŠDC.W„AKRQST-*,20*256+EX0+PB+TT T155†EQU…55ŠDC.W„T1NULLR-*,00*256+EX0 T156†EQU…56ŠDC.W„T1NULLR-*,00*256+EX0 T157†EQU…57ŠDC.W„T1NULLR-*,00*256+EX0 T1CDIR„EQU…58 ŠXREF.S‚CDIRŠDC.W„CDIR-*,08*256+EX0+PB T159†EQU…59 ŠXREF.S‚SUPERŠDC.W„SUPER-*,00*256+EX0T1CMR…EQU…60CHANNELREQUEST ŠXREF.S‚CMRŠDC.W„CMR-*,00*256+EX0 ŠXREF.S‚CISR1T1CISR„EQU…61ŽCLAIMVECTOR-INTRRUPTSERVICERTNŠDC.W„CISR-*,20*256+EX0+PB+TT ŠXREF.S‚SINT)T1SINT„EQU…62‰SIMULATEUSERI/OINTERRUPTŠDC.W„SINT-*,04*256+EX0+PB T163†EQU…63ŠDC.W„T1NULLR-*,00*256+EX0 ŠXDEF„T1EXMON*T1EXMONƒEQU…64ˆATTACHTOEXCEPTIONMONITOR ŠXREF.S‚EXMONŠDC.W„EXMON-*,16*256+EX1+PB+TT,T1DEMONƒEQU…65ˆDETACHFROMEXCEPTIONMONITOR ŠXREF.S‚DEMONŠDC.W„DEMON-*,16*256+EX0+PB+TT*T1EXMMSK‚EQU…66ˆSETEXCEPTIONMONITORMASKŠXREF.S‚EXMMSKŠDC.W„EXMMSK-*,12*256+EX0+PB+TT"T1RSTATE‚EQU…67ˆRECEIVETASKSTATEŠXREF.S‚RSTATEŠDC.W„RSTATE-*,12*256+EX0+PB+TTT1PSTATE‚EQU…68ˆPUTTASKSTATEŠXREF.S‚PSTATEŠDC.W„PSTATE-*,12*256+EX0+PB+TT0T1REXMON‚EQU…69ˆEXECUTETASKUNDEREXMONCONTROLŠXREF.S‚REXMONŠDC.W„REXMON-*,12*256+EX0+PB+TT T170†EQU…70ŠDC.W„T1NULLR-*,00*256+EX0 T171†EQU…71ŠDC.W„T1NULLR-*,00*256+EX0T1MOVEPL‚EQU…72 ŠXREF„MOVEPLŠDC.W„MOVEPL-*,28*256+EX0+PB!T1STDTIM‚EQU…73‰SETDATEANDTIMEŠXREF.S‚STDTIMŠDC.W„STDTIM-*,08*256+EX0+PB!T1GTDTIM‚EQU…74‰GETDATEANDTIMEŠXREF.S‚GTDTIMŠDC.W„GTDTIM-*,08*256+EX0+PB!ENDTAB1ƒEQU*ŽENDOFTRAPTABLE1ŠENDéé0 éééJ1TABLE1 ASYST'M68XXX TABLE1 SA !ƒM68xxx TABLE OF TRAP 1 MODULESÿ2pSUSPEND pRTEVENT pCDIR pSEGSHAR PT1EXMON @pTSKWAIT pWTEVENT pASQEVENT pASQSTATS pCMR pCISR pTSKINFO pT1NULLR PT1PARBLK PT1TRGTSK pTSKATTR pTSKSTART pSINT pTERM pGTDTIM pEXPVCT pCRTCB û2pATTSEG BENDTAB1 ,BTABLE1 pDEMON pDSERVE pEXMON pSTDTIM pATSEM pCRSEM pABORT pDESEM pDESEMA pEXMMSK pAKRQST pTRPVCT pDELAY pDELAYW pDERQST pRCVSA pSERVER pTFRSEG pRELINQ ø2pMOVELL pRESUME pMOVEPL pSGSEM PT1WAIT PPB €pRQSTPA pSUPER pSTOPT pWAKEUP pWTSEM pPSTATE pREXMON pSETPRI PTT @pRSTATE PT1TERM pTERMT pASQREAD pASQALOC pASQFREE 22pSEGALOC pSNAPTRAC pDCLSHAR pSEGDEAL ",e3ªªªª@AIüÀALøÀA6ôÀA$ð€AìÀA8èÀAKä€AJàA4ÜÀAØA#Ô€AÐAÌ ‚A+ÈA Äf3ªªªªAEÀ ‚A¼A9¸ÂA´A?°ÂA1¬A7¨A¤ÀAC  ÂA>œ€A"˜$€A0”8€AÀA<ŒÀA2ˆAG„Âu3ªªªªAH€Bÿ|BFÿxBÿtÂBÿpBÿlBÿhBÿdBÿ`B)ÿ\ €B@ÿX €B;ÿT €B,ÿP €B*ÿL €B-ÿHBÿDv3ªªªªBÿ@Bÿ<Bÿ8B5ÿ4€B&ÿ0B3ÿ,B/ÿ(ÀBÿ$Bÿ BÿBÿ€B=ÿBÿBÿ ÀBÿ€BÿS3ªª¨B'ÿÁB%þüÀB.þø ÀBDþô ÀBAþð ÀBBþì ÀBþèBþäB:þà€B(þÜ€B!þØ€4éé -INITDAT‚IDNT†3,1SystemInitializerDATAArea*-*„THEFOLLOWINGEQUATESAREUSEDFORBUILDING%*„AMEMORYTABLEFORTHEINITROUTINE*MTYP0‚EQU0‰RAMMEMORYTYPE0 MTYP1‚EQU1*16†RAMMEMORYTYPE1 MTYP2‚EQU2*16†RAMMEMORYTYPE2 MTYP3‚EQU3*16†RAMMEMORYTYPE3 MTYP4‚EQU4*16†RAMMEMORYTYPE4 MTYP5‚EQU5*16†RAMMEMORYTYPE5 MTYP6‚EQU6*16†RAMMEMORYTYPE6 MTYP7‚EQU7*16†RAMMEMORYTYPE7*PART0‚EQU0‰PARTITIONNUMBER0PART1‚EQU1‰PARTITIONNUMBER1PART2‚EQU2‰PARTITIONNUMBER2PART3‚EQU3‰PARTITIONNUMBER3PART4‚EQU4‰PARTITIONNUMBER4PART5‚EQU5‰PARTITIONNUMBER5PART6‚EQU6‰PARTITIONNUMBER6PART7‚EQU7‰PARTITIONNUMBER7PART8‚EQU8‰PARTITIONNUMBER8PART9‚EQU9‰PARTITIONNUMBER9!PART10EQU10ˆPARTITIONNUMBER10!PART11EQU11ˆPARTITIONNUMBER11!PART12EQU12ˆPARTITIONNUMBER12!PART13EQU13ˆPARTITIONNUMBER13!PART14EQU14ˆPARTITIONNUMBER14!PART15EQU15ˆPARTITIONNUMBER15‡PAGE*#*†MACROTOBUILDMEMORYTABLEENTRY* MTENTRY MACRO1  \@A„SET„0‡IFC„'\1','RAM' ‡DC.Bƒ\4+\5,0 ‡DC.Lƒ\2,\3‡DC.B„\6‡DC.B„0 \@A„SET„1‡ENDC‡IFC„'\1','ROM' ‡DC.Bƒ$FF,0 ‡DC.Lƒ\2,\3‡DC.Wƒ0 \@A„SET„1‡ENDC ‡IFEQƒ\@A ‡FAILƒ2000‡ENDC‡ENDM* MTENDƒMACRO ˆDC.Wƒ$FFFFˆENDM ‰PAGE ‰SECTION8*%*ˆDATAREQUIREDBYSYSTEMINITIALIZER* ‰XDEFƒTCBHEADTCBHEAD‚DC.Lƒ\$TCBLSTˆTCBHD ‰XDEFƒRDYHEADRDYHEAD‚DC.Lƒ\$TCBRDYˆREADYHD ‰XDEFƒESTART#ESTARTƒDC.Lƒ\STARTRMS‡STARTOFEXEC ‰XDEFƒEENDEEND…DC.Lƒ\MEMBEG‰ENDOFEXEC ‰XDEFƒESTACK%ESTACKƒDC.Lƒ\STACKŠEXECSTACKADDRESS ‰XDEFƒMMUMMU†DC.Lƒ\MMUŒMMUADDRESS ‰XDEFƒPANELA&PANELAƒDC.Lƒ\PANELŠFRONTPANELADDRESS ‰XDEFƒSMEMLOSMEMLOƒDC.Lƒ0SECMEMLO ‰XDEFƒSMEMHISMEMHIƒDC.Lƒ0SECMEMHI‰XDEFƒDISPATCH"DISPATCHDC.Lƒ\STARTRMS‡DISPATCHER ‰XDEFƒGSTSIZGSTSIZƒDC.Lƒ\GSTŒGST#OFPAGES ‰XDEFƒUSTSIZUSTSIZƒDC.Lƒ\USTŒUST#OFPAGES ‰XDEFƒUDRSIZUDRSIZƒDC.Lƒ\UDRŒUDR#OFPAGES ‰XDEFƒPATSIZPATSIZƒDC.Lƒ\PATŒPAT#OFPAGES ‰XDEFƒTRCSIZ\4)TRCSIZƒDC.Lƒ\TRACE‹TRACETABLE#OFPAGES ‰XDEFƒTRCFLAGTRCFLAG‚DC.Wƒ\TRCFLAG ‰XDEFƒTIMERA#TIMERAƒDC.Lƒ\TIMER‹ADDRESSOFTIMER‰XDEFƒTIMINTVA;TIMINTVADC.Wƒ\TIMINTVˆ#MILLISECSBETWEENTIMERINTERRUPTS ‰XDEFƒTIMSLIC?TIMSLIC‚DC.Wƒ\TIMSLICˆ#TIMERINTERRUPTSBEFORETASKRELINQUISH‰XDEFƒCLOCKFRQ1CLOCKFRQEQU„\CLOCKFRQ‡#CLOCKTICKSPERMILLISEC ‰XDEFƒIOVSIZ$IOVSIZƒDC.Lƒ\IOVSIZEOFIOVCTTABLE ‰XDEFƒMEMTYPA0MEMTYPA‚DC.BƒMTYP0ŒDEFAULTMEMORYTYPEFORASQ'S ‰XDEFƒMEMTYPT0MEMTYPT‚DC.BƒMTYP0ŒDEFAULTMEMORYTYPEFORTCB'S ‰XDEFƒMEMTYPSEMEMTYPS‚DC.BƒMTYP0,MTYP0†DEFAULTMEMORYTYPEFORSYSTEMTASKS(RO,RW) ‰XDEFƒMEMTYPUCMEMTYPU‚DC.BƒMTYP0,MTYP0†DEFAULTMEMORYTYPEFORUSERTASKS(RO,RW) ‰XDEFƒBUGTRAC8BUGTRAC‚DC.Lƒ\BUGTRAC‰ADDRESSOFMACSBUG'STRACEROUTINE‰XDEFƒDUMMYPTRADUMMYPTREQU„$A00‰USEASDUMMYPOINTERFORNON-EXISTANTADDRESSES‰XDEFƒWHERLOAD/WHERLOADDC.Lƒ\WHERLOAD…WHEREMACSBUGWILLLOADŠXDEF†PAGESIZE7PAGESIZE‚DC.L…\PAGESIZE„PAGESIZEFORSEGMENTALLOCATION ŠXDEF…ASN;ASN‡DC.L…\ASN‰NUMBEROFADDRESSSPACES(CURRENTLY0OR127)‹PAGE*9*‚MEMORYTABLE-USEDBYINITTOSETUPFREEMEMORYLISTS* ‹SECTIONƒ8 ‹OPT‡NOCL*‹XDEF†MEMTABL,ENDMEMT* TOPˆSET†0 BOTTOM…SET†1* MEMTABL„EQU†*,‹MTENTRY‚RAM,$00000,\MEMEND1,MTYP0,PART0,TOP‹IFNE…\MEMEND21‹MTENTRY‚RAM,\MEMEND2,\MEMEND3,MTYP0,PART1,BOTTOM‹ENDC‹MTEND‹DS.L…10 ENDMEMT„EQU†*‹ENDééX1AKRQST ASREL'M68XXX AKRQST SAF# „68xxx DIRECTIVE--ACKNOWLEDGE SERVICE REQUEST62pSBRYACK pTIOT pSBV FAKRQST &ðF3 - ,f--fn Nu, A²-sg--gâÂüGø $3´®gF3^nNu>,--gGÿg­-g- ,gSs­-f­ ,SsI33g³ gAóaBÿhgl û g+l  g+l 93€ g- ,fAÕaBÿ0Nu gí,Nu gÜí ,Nu4é1 ééééé%I1ASQALOC ASREL'M68XXX ASQALOC SAG „68xxx DIRECTIVE--ALLOCATE ASQ+2pSBPAGAL FASQALOC pADEFTYP &vH3 J­@g\n`h&, ƒÿà‹HC8 HC CaAÜ`Pn`F&H&¼!ASQl«<3l 'l'l Aë('H'H'H"áŠÔ‹'BBk&+K@Nu4ééééééé.H1ASQEVENT ASREL'M68XXX ASQEVENTSAG8 „68xxx DIRECTIVE--QUEUE EVENT62pSBASRINT FASQEVENT pSBUPDATQ pSBLOGPHY &H3&L(m@ fXn`Þ,fn`ìz,+ n6aAÒ` Nqn `Ò"FBF3,+ ÜàŽ¼pPbä c6B…,B‡ fY‡+2 gX ‡fP†I3PP…B€,¼€cn`X($KaBÿd`Zn`H(m@ JÄ(gÇÇtU„I3a0(g tEèaY„J…g $EîaQ„$I$gaaBÿNu6Ú·ìe&lUBnð3Nu4éééééé7K1ASQFREE ASREL'M68XXX ASQFREE SAH$ „68xxx DIRECTIVE--DEALLOCATE ASQI2FSBDASQX pKILLER pSBPGFR FDASQX FASQFREE &0:3(N¬-J¬@g l@B¬@"(’ˆÿàaAÚ`aAÔNu4ééééééé2 @G1ASQREAD ASREL'M68XXX ASQREAD SAHU „68xxx DIRECTIVE--READ EVENT 2FASQREAD pSBLOGPHY &LH3(n@ fXnNuJl&f~`*lB‡-gY‡*, n6aAÊ` Nqn F3Nu&F GfBSNuT‚gX»ìe›ìÛìÇÂn`6Ý»ìe*lUGnðF3. R‡‡¾¬e.,@ç|)GSl&Fß&F f$k'jJ+g+F3g7|NuB€00PR@ÐpPሀ‹B‡+°‡l.oÔ|G*,+I3@g7|Nu j6aBþî`"``êàŽÜpPáŽÜ>0PR‡ážƒ|GB‡+*F3Gë6ÝU‡núNu4ééééééIK1ASQSTATS ASREL'M68XXX ASQSTATSSAIC „68xxx DIRECTIVE--SET ASQ STATUS 2pSBASRINT FASQSTATS &4<3€(n@ fXn`$ . ?,ø€_@Jl&gKÖaAÐNu4ééééé3 ééRQ1ASRINT ASREL'M68XXX ASRINT SAP „68xxx TRAP 0--PROVIDE EVENT INTERRUPTX2FSBASRINT pSBRYASR FSBUPDATQ ºFASRINT FUPDTASQ ¼pSBLOGPHY &F3--f°, g˜", l(gTˆ±ìe l2HA±ìe lJ3@2JkL"Az, m6aA®`Nq`8)I,-*g>*g RjÇaÞ* f@* g­I3 ,fí-`­ ,g` B­X­,AÕaBÿ\fÿfa|`ÿ`HçAP$8 &68J3€!HC(HD4<  g 4<8***HB* g2Hçz,* m6aBÿ`NqLßI38`Lßp&*HC6‚€4*AÕaBþâNqLß ‚R`ÿ|@ç|$©%|ÿÿÿÿ#J*3FßNuIé L g(@´¬lò%B$€ ŠNu4éééééˆV1CKEXPAT ASREL'M68XXX CKEXPAT SAT1 „68xxx CHECK PAT FOR EXEC ENTRY TO ACTIVATEA2pDATE pTIMINTV BCKEXPA pPATBEG pTIMEOD "pF3@"x Aé ?Fü'"HJ‘fNs Q²¨mð°hlê/(?(Bh (RhШ ²€lô63!@B€0("((f""x  ©#H!|ÿÿÿÿFßNu4ééééé5 é‘T1CMR ASREL'M68XXX CMR SAU „68xxx RMS68K CHANNEL MANAGEMENT ROUTINES³2pSBPAGAL pCOMINTZ GCMR pVCTUBGN pSBP pCCBHD pSBV pTRACER pKILLER pCOMINT pSEMCCB pSBPGFR pTRACFLAG GCMRSFAIL ÞpSBLOGPHY 'J3@T,fz. n6aAî`NqpaX$F"*fp aJAø Aø aAÊGø "SJ“H3g²©gÒGé`ì f¸, n6B…*çEaA”`Nq`¢B€* F3e c @dpËa„r Âj A fp ar"x J1gj°*f¦ *ÿF3g Jª fpÇaH *b *dpÌa4GêB…*g0 opÎaS…ç2*H3²sPdpÏa ²sPd pÏaR`NQ…lâp Àjf$ * @fRˆ/<*F? *(SJ“fp a¤Gì°¬fì*,F3Ig°,(gp a„ ¬g(l`ð"SJ“gGé`ô j p(R@ @Hç€8aI3€Bþ>` LßpaÿHLß"HíˆB˜S€nú*g)I&‰"¼!CCB*giHLêF3?Hé?))àáˆ3@B@3@@GêIép)+g(Û(ÛS`öB€*åˆ#@H3D&j ×Ó#K )ÿf#|*ì*géI*géH`R*fbF3B€*&x J3g:(iD &TGëÿ¶*` &lJ¬g +*²n(K`ê¹Àg #KH3)I`#K&iD3|N¹J#|* LIéJ&ŒB€* x ¼ÿ iÑè*I/N,_F3`t`Zp aøp aôpað g@o opÁaÜ n6B€S&@B… f )I3e2 )c )€e" )b;°g,aBü”` Nq`¢×ËGû°ÖÓNÓF3ÿþ Ì¢Úð *a²f´ © ©HfX")D(A&TGëÿ¶ `&lJ¬fK3@ aBü8°‹g(K`ê¹Áf&J«g((k)|N¹J)|* LIìJ&kD&Œ` )k`B)O3 €Q(&iD&¼(&x B3Iø  &TJ”faBûÖ°‹gIë`ì(«Aø aBûÀ IraBû¸I3`8aBû°paz&Iaî"Kfpal)Hgp‚a`)IgpƒaT)Ig .(F3gþ†)Igp a6 )c )c )€e )c*g< * d I3pÆa˜`”j :#j +HPš£Aø aBùÎ mÑè/N,_J@g>a, )L3P(AîDJg"P°©gAé `îF€NuBAø aBù X=@`Aø aBù~B€B®F3Nu,m4B€-9f NpN@`F|q|ptAíp!­< g ­€pX‚€F3 ­8 T‚´-:cm:pLí<pažNuHç`CípB€ m"-+g|00J)F3fFÄ)fCéS`â0))gJ0`(©0-&ЈfS€ˆ$J0F3U@løB0 UBlø@À@FÀ-Hg Hç:aÿ Lß\øLß|NuLß|ÿþNuHçI3@ m4pN@`Lßx`LßxNu8 g @çaBøTîFßHç€Ä*oKíÿ°"m/ N‘*_e M3I -g*@`êLß#X`Bø$8!gaBøîHç€Ä 8 g*@ m ( g / @çN°3€Fß*_ -`àLß#`B÷æ4éé5 éééU1DCLSHAR ASREL'M68XXX DCLSHAR SAWD „68xxx DIRECTIVE--DECLARE SEGMENT SHARABLE+2pSBFNDGSG pSBFNDSEG EDCLSHAR %êH3*n6., AÕaAô`^n`Ò<5P$0@0f22, A0g ŒA g& f.F3(fn `œn`¾\n`¸,g†, gÆ"$. uI3 P aBÿ|`±üf Zn`R\n`LuP$!uP  ‚1A1| Bƒ65PÖuPá‹!C03 65P–uPRC1C3@1| , gè Nu4éééééé«B1DELAY ASREL'M68XXX DELAY SAX) „68xxx DIRECTIVE--DELAYq2pSBASRINT pSBRYASR pSBRDTIM pSBRYWAKE FDELAY FDELAYW pPATBEG pSBADDPA pSBFREEPA &ðH3 ~`B‡$ ‚&\c$<&\aAèÔ"x Eé&J g$@Jªg ½êfìJªfæ&’J3@aA¾`à@ç .@gF(@|JGg ìì .-g¬ F×AÖaAˆ`f, L3€gJl&gF×KÖaBÿp`à|JGgî,®-g®,F×AÖaBÿJ`( )g&93€$@#RF×%NBj%|!DLY-JXF×aBÿ FßNuF×=|`ò4éé6 éééé´U1DEMON ASREL'M68XXX DEMON SAY& „68xxx DIRECTIVE--DETACH EXCEPTION MONITORI2FSBDMONX pSBREADY pSBQEVNTN FDEMON FDMONX &`H3$Lª ,`$H*)fn Nu$< 4*&*(*8<Aê@aAÈNq(Jª(3)ªúBªHª ,fNuAÒaA¤Nu4éééééé½~'M68XXX DERQST ROÒÒDESEM ROÛÛDSEGX ROääDSERVE ROííDSRVX ROööEQDQ ROÿÿEXABRT ROEXMMSK ROEXMON ROEXMONVR RO##6 EXQEVENTRO,,EXRQPA RO55FNDGSEG RO>>FNDTSEG ROGGFNDUSEM ROPPGETTCB ROYYGTDTIM RObbLOGPHY ROkkPAGEALOCROttPAGEFREERO}}[1DERQST ASREL'M68XXX DERQST SA „68xxx DIRECTIVE--SET USER/SERVER REQUEST STATUS62pTIAT pTIOT pSBV FDERQST &lF3" Cø  1fÂüCø $1´®g^nNuf Jñkú±431fBq±Nuñ± gAñaA˜Nu4ééééééÊR1DESEM ASREL'M68XXX DESEM SA6 „68xxx DIRECTIVE--DETACH FROM SEMAPHOREr2FSBDSEMX .pSBV FDSEMX .FDESEM FDESEM4 FDESEMA ,pSEMUST pSBFNDSEM &JJ3*F(N UaAø`^n`&"Jq l&1 1fJ1gAñ0aAÊJq jB±F3Bq B10 Sq0 `ÚB10 10gzSq0 f$ 10fº10°10g®3¼0 F3B±0`¤.10,10B„4)pJq l.¾±f(¼±f"JDg#„`(3±0 3±0I3#±0Bq0 €SBfÂ`NJ10j*q0^mAñ0aBÿ`è.10,104)pJqI3 j¾±f¼±fBq B±€SBfÜBq0 B±0Nu(N,)g AøaBþÄ`3Nua`ð`þÌ4éé7 éééÓQ1DSEGX ASREL'M68XXX DSEGX SA( „68xxx TRAP 0--DEALLOCATE ALL SEGMENTSP2ESBDSEGX pKILLER pGSTBEG EDSEGX pSBPGFR pSEGDAL5 %ŽF3J¬6g*l6B…:-5P$gabQ… E lî,)gP"x Ké>)gB,,Jm J3 g.¼•f*­ Jm f0-@ fB2- m aA˜`aA’ÛüSGfÂNuB„,3)gÄ `Bÿt4ééééééÜW1DSERVE ASREL'M68XXX DSERVE SA „68xxx DIRECTIVE--DEALLOCATE SERVER FUNCTION[2pTIAT pSBREADY pTIOT pSBV pTCBHD FDSERV3 *FDSERVE &ŽF3$‚Eø  2 f"ÂüCø ½ñg^n`b&x + ,g,´+sf&«H3€-« ,'|çJBB+ûæJAÓaA &k fÄB2 B±B±Bq13g AñaBÿx`îNu4é7 éééééåT1DSRVX ASREL'M68XXX DSRVX SAE „68xxx TRAP 0--DEALLOCATE SERVER FUNCTIONP2pTIAT pSEMTIOT FSBDSRVX pTIOT pDSERV3 FDSRVX &2:3P€Eø Cø t 2 f "Âü¹ñg R‚ ‚mâNua`Ü`AÐ4éééééééîI1EQDQ ASREL'M68XXX EQDQ SA „68xxx TRAP 0--ENQUEUE/DEQUEUEj2pSBP pTIOT pSBQEVNTT pSBV BEXEQDQ pEXITIR BSBEXEQDQ BEQDQ " F3@ Eø Çìs,)gÇ`"ÂüEø (NGs*r»Îg°$<‡42F38 &26,(gÃáK,$( *,,,p<,.,>, ,"0<2 gB@F32g<,*.,(>,°H@0,²H@"@J²f -@g4&@4+HC6+HCAòaR3€Bÿ@J²gHç@(AÕaBÿ0`0Lß raBÿ",sf-|çOGB.ûAúBÿ&3.ˆNuLß,sò Rrì ,Nu4ééééé÷D1EXABRT ASREL'M68XXX EXABRT SA „68xxx TRAP 0--ABORT TASKE2pSBREADY pTRAP1B BEXABRT pT1TERM BSBEXABRT "pF3Ç1G*Bh\è)!|EXEC°!| ´<(,Æ1F.½Èg$F-ÿ† g†83A1F,|ð& faA®Nu1F,X <(1Wú!oü`A’4éééééé8 W1EXMMSK ASREL'M68XXX EXMMSK SA3 „68xxx DIRECTIVE--SET EXCEPTION MONITOR MASK2FEXMMSK & 3(H!lH8(H(HNu4ééééééé X1EXMON ASREL'M68XXX EXMON SAX „68xxx DIRECTIVE--ATTACH TO EXCEPTION MONITOR+2pSBGTXTCB pSBQEVNTT FEXMON &°H3$M l", aAô`^nNu*H*)g\nNu»Êg.½Êg*,g".(f*H3(f m±êg-(fn Nu$< 4*&*(*8<AÕaA†`Zn63Nuí)ê)ê ,%m@%mD½ÊfNu?|Nu4éééé9 ééT1EXMONVR ASREL'M68XXX EXMONVR SA5 „68xxx SUBROUTINE--VALIDATE EXMON REQUEST 2FEXMONVR pSBLOGPHY &@H3-)g. -@°®f$ -D°®f*,+ n6aAØNuNqn `n XNu4éééééééE1EXQEVENT ASREL'M68XXX EXQEVENTSA „68xxx TRAP 0--QUEUE EVENTŒ2pSBASRINT pSBGTXTCB CEXQEVNTI 8CEXQEVNTN CEXQEVNTT pSBUPDATQ CSBQEVNTI 8CSBQEVNTN CSBQEVNTT pTMSGFLAG #ÆH3*I"H Q")aAô`T—Nu"M !TCBfò*H(m@ ”!ASQfì`T—`n !TCBfH3*H(m@ gÆPø ,fT—`B"á™ÿaAš``êHç<ta4gßüHç`I3@ta$ßüJ€g/aBÿn`T¯(¬fNuNuAï6Ø·ìe&lUBgUfì 3NuUANu4éé9 éééé$`1EXRQPA ASREL'M68XXX EXRQPA SAI „68xxx TRAP 0--REQUEST PERIODIC ACTIVATION OF PROCESS:2pSBRDTIM BEXRQPA pPATBEG BSBRQPA "¬F3@çHçp "x Gé Fü'$K&g&&C´«fò$“JAj.&©#K'|ÿÿÿÿLßTNuF3JAkô&)fT¯`è&C#SFïB«'@ '@'H'BB«Bkgë53@áIAA 7AaBÿnÓ«Fü'&© #K LßTNu4éééééé-Z1FNDGSEG ASREL'M68XXX FNDGSEG SA „68xxx TRAP 0--FIND SEGMENT IN GLOBAL SEG TABLE/2DSBFNDGSG pGSTBEG DFNDGSEG $~F3BƒB€"x  gbEé0)gP—ËJj f ·üf$&J` ±êf´’gB* g D3f4 f& ÕüS@fÄJƒf"0) K·üf J°i m‘ÈR€T—Nu JNu CNu4: éééééé6\1FNDTSEG ASREL'M68XXX FNDTSEG SAP „68xxx TRAP 0--FIND SEGMENT IN TASK SEGMENT TABLE$2DSBFNDSEG DFNDTSEG $,23B€*g B…:(0P$f `¾°P g Q… E læ*T—Nu4ééééééé?: T1FNDUSEM ASREL'M68XXX FNDUSEM SA „68xxx TRAP 0--FIND USER SEMAPHORE IN UST:2pKILLER pUSTBEG DSBFNDSEM DFNDUSEM $‚F3B‚BƒB"x ( gd4)´i gRB(pJq fJƒf:& „g04)`*±ügF3±ñf$lµñf$lµñg"Jq k"€SDf²T—JƒfB€B‚Nu Nu q3Nu4ééééééHX1GETTCB ASREL'M68XXX GETTCB SAI „68xxx TRAP 0--GET TASK CONTROL BLOCK ADDRESSX2DSBGETTCB DSBGTXTCB pTCBHD DGETTCB DGTXTCB pSEMTCB $TF3@ gJg` NNu gø"(g.(f".°®f²®gÚ"x ³üg°©3f²©g"i`æT— INu4ééééé; éQN1GTDTIM ASREL'M68XXX GTDTIM SA  „68xxx DIRECTIVE--GET DATE AND TIME+2pDATE pSBRDTIM FGTDTIM &&3PaAþ 8  &\e&\R€HÔNu4éééééééZ]1LOGPHY ASREL'M68XXX LOGPHY SA „68xxx TRAP 0--CONVERT LOGICAL ADDRESS TO PHYSICALB2DLOGPHY DLOGPHYO DSBLOGPHO DSBLOGPHY $XF3`††ÿÿÿB€&àŽ(o8؃S„àŒB…:(J0Pg¼pPe¼pPb¸pPbÜpPáŽ3ÜNu Q… E lÔ*T—T—,Nu4ééé; ééécR1PAGEALOC ASREL'M68XXX PAGEALOCSAC „68xxx TRAP 0--ALLOCATE PHYSICAL MEMORY‹2CSBPAGAL pSBREADY pSBP pSVXSTAK pSBV pKILLER pMAPBEG pPSWAIT pDISPATCH CPAGEALLE RCPAGEALOC #VF3Hç&B‚4fx`–HC2xƒf6ƒpx ga>KøIøB§$IH3@"x fFJQk$¶1@f&i OJg·Øg`öHSAëaA’a”Cé QÿÿfÎB„F3 g| g4´¬o  g($,aœ‚)aØ®- K gT¯Lß88Nu O3g@î-|ð&Aí-H”|0ãHâ@S@lü0€aBÿFü AÖaBÿ a‚`BÿF3R„R„`œ g*$@ g**º‚m´¬nº¬m` º¬o(J*K fÖNu•¬Õ¬ *,I3@áGôXf*, $T ,g"@Û© "Šg%INu*ŠgúBªNuaBþŽnw&Nu"_ I3g @AèaBþv`ðNÑ g  iµèl”µém˜fÿNJQk’*iHUI3AíaBþ: gþðáŠ&J×ÂàŠ(@°Šnþà ,áˆÐŒ°Šn fè`þ̰‹gþˆn gF3þ¼Šàˆ$`þt&”g"T#K(‹'L'l B¬ ‹àˆ'@‘¬`þJCé Qÿÿf3 ÿPgþ¸&JB„`þLaBý¬4éééélN1PAGEFREE ASREL'M68XXX PAGEFREESAA „68xxx TRAP 0--FREE PHYSICAL MEMORYE2pSBP pSBV pMAPBEG CSBPGFR CPAGEFREE #$F3 Hç $nLß0T—Nu$H"x  ÿÿg *iµílµémÜJQkÞá‰Òв­bÎ` Cé H3@ QÿÿfÐ`ÀCøAíaA®&g C±Ál"H&fô g )áˆÐ‰µÀm¬%B f -F3àˆ%@ $ƒ%If*Š`$"Š ‰àˆ©#@ f *Ñ©#j "’$IJƒg$"CF3#JJª f )Ѫ%i $‘g"R#J- ð"x ²f(i,g Aì03 aBþü`îCé QÿÿfÜAíaBþèLß0NuT—`î4é< éééééu6'M68XXX PAUSE ROŠŠPSTATE RO““RCVSA ROœœRELINQ RO¥¥RESUME RO®®REXMON RO··RMSPATCHROÀÀRQSTPA ROÉÉRSTATE ROÒÒRTEVENT ROÛÛSEGALOC ROääSEGDEAL ROííSEGSHAR ROööSERVE ROÿÿSETPRI ROSGSEM ROSNAPTRACROSPURINT RO##STDTIM RO,,SUSPEND RO55P1PAUSE ASREL'M68XXX PAUSE SA „68xxx TRAP 0--PAUSE DURING EXEC TOUR:2BSBPAUSE pSVXSTAK BPAUSE pDISPATCH "3 |ð%aAø`Aô4ééééé< éé‚W1PSTATE ASREL'M68XXX PSTATE SA „68xxx DIRECTIVE--SET STATE OF EXMON'ED TASK 2pEXMONVR FPSTATE &VH3&F- ,fm NuzNaAê(FCí0<"ÜS@fú+mt+m ”+\ü0-H+\3H-Hø-H@ûNu4ééééééé‹W1RCVSA ASREL'M68XXX RCVSA SA2 „68xxx DIRECTIVE--RECEIVE SEGMENT ATTRIBUTES+2ERCVSA pSBFNDSEG pSBLOGPHY %®J3>, fz,, n6aAê` Nqn Nu$F,g"z,, m6aAÆ`"` H3JEgJ0Ðf^nNu., m6aA¦``êB€00P, f8ÐpPáˆ%@B€$°P 5p43P$ª00Páˆ%@B€00Páˆÿ%@ Nuáˆ-@ Nu4éé= éééé”Q1RELINQ ASREL'M68XXX RELINQ SAR „68xxx DIRECTIVE--RELINQUISH EXECUTION 2pSBRYRELQ FRELINQ &3 AÖaAüNu4éééééééT1RESUME ASREL'M68XXX RESUME SA! „68xxx DIRECTIVE--RESUME A SUSPENDED TASK 2pSBREADY FRESUME &3@¨ ,fn NuaAîNu4é= éééééé¦]1REXMON ASREL'M68XXX REXMON SAR „68xxx DIRECTIVE--EXECUTE TASK UNDER EXMON CONTROL62pEXMONVR pSBRYXMON FREXMON pSBLOGPHY &¢H3&L- ,fm NuzaAê(F­ú+lP+lT+l L+lXBmX-H3H8-HJg:íú.-Hg*z,-P m6aA”` NqnNs†(F+3f+TT­ ,0-,@ÿfAÕaBÿbNu4éééééé¯> B1RMSPATCH ASREL'M68XXX RMSPATCHSAW „Patch area for RMS68K.2ORMSPATCH /@3€@4ééééééé¸X1RQSTPA ASREL'M68XXX RQSTPA SA „68xxx DIRECTIVE--REQUEST PERIODIC ACTIVATIONA2pSBRDTIM pPATBEG FRQSTPA pSBADDPA pSBFREEPA &:H3 $, 6,|B„g(,n=|NuB… g *,fÆaAÌCÀg*B†6,F3€ gƒg´lJ„gÔ„`ô‚&\`6,$Ô„"x Eé&J$S gŒI3Jªf&’aBÿv`ê»êfâ*fÚJ†kºªfÐ&’J†f$%M%D %lBj%EL3 Ã5CaBÿ4NuRFCf* gêªêaBÿ J†kÿ~NuaC3€BÿJ†kÿrNuJ†f @ç| )g $@#RFß`ˆ=|FßNuSFn=|Nu4éééé> éÁX1RSTATE ASREL'M68XXX RSTATE SA  „68xxx DIRECTIVE--READ STATE OF EXMON'ED TASK 2pEXMONVR FRSTATE &LH3&Fz`aAú(FCí0<(ÙS@fú(íü8íú -H€ÿÿÿ(À(í,0-H@ø8À(íP(í3T(íL(íXNu4éééééééÊV1RTEVENT ASREL'M68XXX RTEVENT SA 6 „68xxx DIRECTIVE--RETURN FROM EVENT SERVICE62FRTEVENT pSBASRINT pSBEXABRT pSBLOGPHY &ŽJ3*H(n@zB, gz.,.< n6aAâ` Nq><€™AÖaAÔß®<&F, fLÛÿF3HîÿLÛHî 2Aÿ/gÁ=Aú/[(n@ g gì 3Jl&gKÖaBÿvNu4ééé? éééÓV1SEGALOC ASREL'M68XXX SEGALOC SA! „68xxx DIRECTIVE--ALLOCATE A MEMORY SEGMENTx2pMMULOAD pSBPAGAL pSDEFTYP pLAM pKILLER pNOTLAM pSBPGFR pSBFNDSEG ESEGALOC pSBLOGPHY %ŽH3@»Îg -,fn NuZn`r\n`jB¸ ., m6aAÎ`æJ…gÚ0, 2,F3A'ÿg f  gÁÁÁ B‡,,g  F3 gB†.8 ΆެÞ¸ θ à"FffAø fRˆ-(fTˆHGO3 >G‡ÿ?HG GaBÿ2`.S€g^n`®Pn`ön /fè"AÓaBÿ`ÞaBÿI3&H.*ág, "F m6aBþè`È`ÆJ0PfÀ!¬ P 0, @Oÿ gÀ1€P$F31¼Pg1¼P àˆ1€PЇS€1€P ‰àˆ1€PP&ðP$R(-K 3gá-G$TNu4éééééÜV1SEGDEAL ASREL'M68XXX SEGDEAL SA" „68xxx DIRECTIVE--DEALLOCATE MEMORY SEGMENTf2pSBFNDGSG pMMULOAD pUNLDMMU pKILLER pSBPGFR ESEGDAL5 XpSBFNDSEG ESEGDEAL %êH3„., 8,(M¹Îg,,f n NuB¸ *l6AÕaAÖ`^n`´J¬@g ,,.(f‡J”gz, n6aAâ` Nqn NuJ®@fXnNu,‚F3 Eø J2 g\n`:¼ Eø @ Äü%Ž %® 5¼ B² %” Br 5‡ 32` ò Nu4éééééé÷S1SETPRI ASREL'M68XXX SETPRI SA$H „68xxx DIRECTIVE--CHANGE TASK'S PRIORITY2FSETPRI &>D3.(f((gn Nu,°(%cB® h%#n Nu@$@&Nu4ééééééé@ W1SGSEM ASREL'M68XXX SGSEM SA% „68xxx DIRECTIVES--SIGNAL AND WAIT SEMAPHOREE2pSBP pSBV pUSTBEG FSGSEM FWTSEM &jF3BG`><&,"x 0àH°i lB(¸±0f:Jq0 g4 10f ¾10g,‡0Jq0 j43&10JGg Añ0aA²NuAñ0aA¨Nu^nNun Nu4éééééé W1SNAPTRAC ASREL'M68XXX SNAPTRACSA%U „68xxx DIRECTIVE--GIVE TRACE TABLE TO CALLER+2pTRACEBEG FSNAPTRAC pSBLOGPHY &PH3,*H"y( g i‘É*$ n6aAâ` Nqn Nu$F&äŠ$ÙS‚fú$F(M"y(&Q3—ÉÙË$ÌÛÃ$ÍNu4éééééA ééL1SPURINT ASREL'M68XXX SPURINT SA&0 „68xxx SPURIOUS INTERRUPT HANDLERA2pSPURCNT BSPURINT pSPURTIME pPANEL pTIMEOD "283H€Rx  xd k$/ "x 3|3|53|.3|>"_Bx Ns4éééééééN1STDTIM ASREL'M68XXX STDTIM SA&P „68xxx DIRECTIVE--SET DATE AND TIMEW2pDATE FSTDTIM pPATBEG pTIMEOD pSBADDPA pDATBASE pTIMBASE &°F3ª.(fn NuLÜ.<&\²‡e’‡R€`ö&(@ç|–¸ ˜¸ !À !Á ׸F3¢ Ù¸ FßB§"x Eé&J$S g@*g2&’$—.Š*fä * gÞ²ªn ‘ª93²ªgÎmôѪ²ªnö`Àת`¸.g$G$*.aBÿXJ‡fðNu4ééA éééé$D1SUSPEND ASREL'M68XXX SUSPEND SA'( „68xxx DIRECTIVE--SUSPEND2FSUSPEND &3î ,Nu4ééééééé-'M68XXX TERM ROBBTFRSEG ROKKTRACER ROTTTSKATTR RO]]TSKBORN ROffTSKINFO ROooTSKMOVE ROxxTSKSTARTROTSKWAIT ROŠŠUSERVECTRO““B WAKEUP ROœœWTEVENT RO¥¥INITDAT RO®®c1TERM ASREL'M68XXX TERM SA() „68xxx DIRECTIVES--TERMINATE SELF, TERMINATE TASK, ABORTû2pREADYHD pSBGETTCB pSBDSEGX pSBDSEMX pT1EXMON pTIAT pSBPAUSE pSBDIOVX pSBDMONX pSBREADY pSBDSRVX pSBDASQX pTIOT FTERM npSBQEVNTN pDEASN pNWDQHD pTCBHD pKILLER pSEMTCB FABORT >pRUNNER L2pPATBEG pSBPGFR FTERMT pSBEXEQDQ pSBEXABRT pSBFREEPA &F3J”f@",g.(f".*y(!»üg(²­f-(f ½Ígí-gD*mH3`ØAÔaA¸` B® VnNu*H½Íg-(g.(fn Nuí-g\nNuF30,gÀí);@*;m,.-m +n°+n´­ ,­-­ ,g2F3 m”@ç|JÐküCèÿâJ© g»é g"i `î#m RPFßm-ÿ,|ð&­J3  ,gí-@ç|­-g <)ô @ ( g °fô!m AÕaBþÈFßNuî)I3=H*fî*.(g . (gaB"þž.-g`$.)fÚ=H*=n,.îL3@--n°-n´(N"x %Eé&J g$@¹êfò&’aB)þR`ì,)gaBþD ,TgF3 € @B¨!x !È &,(,ì)"x !)-f2¸©f¬),)g)O3$  ,g¶©@f¸©Df >< AÑaB(ýâ"i f¾,)gaBýÎNqaBýÈ,)gaO3” Bý¼~Cø Eø "Âü 1pf2g/aB'ý–., ,gaBýˆR‡ ‡oÄL3PaBýzaBývJ¬gH4<HB4,&,8,HD8,°*,²<,¶HF<<.,*>,\,P3ˆ¢)g<<$LAìaBý,Nq(JCø!!ü )g¹Àg"@`ò#laBý B¸ $rAÔaB&ýNu 3@aB"üú4éé:]1TFRSEG ASREL'M68XXX TFRSEG SA0 „68xxx DIRECTIVE--TRANSFER SEGMENT TO ANOTHER TASKW2pSBFNDGSG pMMULOAD pUNLDMMU pKILLER ETFRSEG pSBFNDSEG pSBLOGPHY %xH3 @&MB¸ *n6., AÕaAî`^n`ZJ®@g .<àH°uPe°uPbn `ÜVnH3`Ö·Îgö"E$F.* k6aAª` J…fZn`\n`ö* ,**fB†<5PL3A* gÜuPáŽB€05PuP$R@*áaBÿ^` `J…f aBÿRn `ªJ0Pfò"F3( à‰ÔA1P1‚P’u@DAÒu@1P!µ@ P 1µ@&P&65@$*gƒ* gF3ÃÃ1ƒP$1¼Pg1¼PBµ@ Bµ@$Bµ@Bµ@S-R(20PÒpPá‰G3-A ÉEaBþ¸ËD g$$.´«g pP "(KaBþš`aBþ”&L$+ ‚Nu4ééB éééC?1TRACER ASREL'M68XXX TRACER SA1 „TRACE EXEC ACTIVITY+2pSBRDTIM CTRACER pTRACEBEG #vF3HçÀ@ç&x |*S»ëfKëIí&ŒFß+@+H+N (o:”T¯;o+o>3@ Uïÿb+o aA®+A2<ù’àHF@@ÀüúÒ@;ALß8Nu4éééééééLT1TSKATTR ASREL'M68XXX TSKATTR SA12 „68xxx DIRECTIVE--RECEIVE TASK ATTRIBUTES2FTSKATTR &"3(-gn -hp =h("Nu4ééC éééééUL1TSKBORN ASREL'M68XXX TSKBORN SA2 „68xxx DIRECTIVE--CREATE NEW TASK€2pSBGETTCB pSBPAGAL pTDEFTYP pCRASN FCRTCB pTCBHD pSEMTCB FTCBCR pSBPGFR FASGNMON j&ªH3@ Iëÿþ6<€`&LLìpHF>,6.(BAÓaAÞ``0<`,B€8 H@0< @aH3€AÀ`0<`*H4<B˜QÊÿü+S +fgJ€f `<.p .;Fp+@F3aæBfDÿ;D(+El+EüHD0àHgfJg¸.%c.%D%°F3c@$@&*¼!TCB|€,;|:|úr;|0$MÕü`+J6$¼!TST|I3€5|$5|D x  -"-±üg °¨f²¨g h`ærAÕaBþÆ0<I3 `aBþ¼`0<` +x !Í Nuf=@NuT—Nufg2 .".` 03", , g.(g Jg` .".+@+ANu4ééééé^]1TSKINFO ASREL'M68XXX TSKINFO SA2P „68xxx DIRECTIVE--MOVE TARGET TASK'S TCB TO BUFFER 2FTSKINFO pSBLOGPHY &JH3€.(fn Nu*<,, n6aAà` Nqn Nu,fnNu&F3p&ÝQÈÿüNu4C ééééééég\1TSKMOVE ASREL'M68XXX TSKMOVE SA3# „68xxx DIRECTIVES--MOVE LOGICAL AND MOVE PHYSICAL:2pSBGETTCB EMOVELL EMOVEPL pSBLOGPHO %ÎJ3,,`*"-6g*,,, AaAè`` J…gJ0Pfn Nu.Aì aAÈ`^nH3Nu.(f((gn Nu"(6g*,,, AaA”`` J…gJ0Pfn F3NuHzÿ¢?,aBÿD+mlI3ü|úr- (gDz,-ü m6aBÿ"` Nqn `ÿ@+Fü:(0P$g00PF3ÑpPÑpPBpPQ… E làBm., gGìLÛÿHíÿLÛHí |­I3@,0-,@ßfF×AÕaBþ¬`þÔ@ç FJf8".*x »üg.²­f-(f½ÍI3g--fí,gL*m`ÐaBþd` B® VnFßNu*H--fê½Íg-(gG3.(fn `Öí,g\n`È;m,.-m |­-gCø!ô I"h 3³üg ³Ífî!i `’4ééééyA1TSKWAIT ASREL'M68XXX TSKWAIT SA5  „68xxx DIRECTIVE--WAIT 2FTSKWAIT pSBRYWAKE &(03 î,®-fNu®,=n^Bn^AÖaAÜNu4éééééD éé‚]1USERVECT ASREL'M68XXX USERVECTSA59 „68xxx DIRECTIVES--USER EXCEPTION AND TRAP VECTORS$2FEXPVCT FTRPVCT &"3-n Hî)Nu-n Lî)Nu4ééééééé‹S1WAKEUP ASREL'M68XXX WAKEUP SA6 „68xxx DIRECTIVE--WAKE UP A WAITING TASKT2pSBRYWAKE FSBWAKEUP FWAKEUPX pT1WAIT FWAKEUP pTMSGFLAG &BJ3»Î`ø ¨,g( (Xg "@B©B¨X1h^g 1|"Bh^aAÊNuè-3Nu4ééE éééé”K1WTEVENT ASREL'M68XXX WTEVENT SA69 „68xxx DIRECTIVE--WAIT FOR EVENT+2pSBASRINT FWTEVENT pSBRYASR &DH3(n@ fXn`4î ,.-g® ,AÖaAÚ`ìì Jl&gKÖa 3€AÀNu4éééééééH1INITDAT ASYST'M68XXX XINITDATAG4 !ƒSystem Initializer DATA Areañ2PCLOCKFRQ èHTIMSLIC DHASN \HMEMTYPA JHRDYHEAD HEEND PDUMMYPTR HPAGESIZE XHTIMINTVA BHMEMTYPS LHMEMTYPT KHMMU HMEMTYPU NHESTACK HSMEMHI HTRCSIZ 8ö2HGSTSIZ (HSMEMLO HIOVSIZ FHPANELA HESTART HPATSIZ 4HUDRSIZ 0HUSTSIZ ,HTIMERA >HDISPATCH $HBUGTRAC PHTCBHEAD HENDMEMT –E HMEMTABL `HWHERLOAD THTRCFLAG <(–F3 SS P þ þ þ63 à@ þˆÿÿ(4ééééé¦'NOMMU LOADMMU AF»»LOADMMU SAÄÄdLOADMMU ROÕÕ=/*†NOMMU.LOADMMU.AF=/*=/*=/*@=/*†IFNOOUTPUTARGUMENTFORTHELISTINGISSPECIFIEDTHECHAIN)=/*†FILEWILLDEFAULTTONOMMU.LOADMMU.LS=/*=/IFC \1=ARG NOMMU.LOADMMU.LS=/ENDIF=/*0=ASM NOMMU.LOADMMU.SA,NOMMU.LOADMMU.RO,\1;MRZ=46=/*{ Included files are:=/*ƒ9995.&.STR.EQ=/*ƒ9995.&.TST.EQ=/*}=/*=ENDéééF éé鳉PAGE6LOADMMUƒIDNTƒ5,1DummyLOADMMUforboardswithnoMMU.**ˆINCLUDEFILES**ˆINCLUDEƒ9995.&.STR.EQ*ˆINCLUDEƒ9995.&.TST.EQ*‰NOLIST‰INCLUDEƒ9995.&.STR.EQ‰INCLUDEƒ9995.&.TST.EQ‰LIST‰PAGE*$*ˆCOPYRIGHTED1980BYMOTOROLA,INC.**ˆ*********************ˆ*LOADMMU‚2.00„**ˆ*HLD6ƒ09/18/80‚**ˆ*HLD6ƒ03/30/81‚**ˆ**********************,*‚Revisionhistory(addnewchangestotop).*…Date†Author‚ChangesG*…--------‚------‚-----------------------------------------------------A*†1/25/84‚MSL…Splitroutineintotworoutinesinordertosupport*—boththeRTEandRTSexits.***…LOADMMUSUBROUTINE**…REGISTERUSAGE:ƒ01234567 *–D*********–A*ƒ**…ENTRY:„A5POINTSTOTST*‰SECTIONLEVEL00*‰XDEFƒLOADMMU,LOADMMUI"‰XDEFƒCRASN,DEASN,UNLDMMU,MMUFAULT‰XREF.SMMUHERE,MMULOAD‰XREF.STRACER,TRACFLAG*$*ˆCOPYRIGHTED1980BYMOTOROLA,INC.*LOADMMU%‰MOVE.W‚SR,-(A7)ŠSAVESTATUSREGISTER!‰OR.W„#$700,SRŠINHIBITINTERRUPTS 6*ˆCMP.LƒMMULOAD,A5ˆIFMMUISNOTLOADED,THENLOADIT.*ˆIF†THEN.S/*ˆMOVEM.LTSTMMU(A5),D0-D7‚SEGMENTDESCRIPTIONS0*ˆMOVE.L‚A5,MMULOADˆSAVEADDRESSOFCURRENTLOAD"*ˆMOVE.L‚MMUHERE,A5ˆADDRESSOFMMU*ˆMOVEM.LD0-D7,(A5)ˆLOADMMU*ˆENDI /‰BTST„#TRCFMMU,TRACFLAGSHOULDENTRYBETRACED? ‰IF†THEN‰BSR…TRACERŒBUILDTRACEENTRY‰DC.W„$DD08TRACECODE‰ENDI ‰MOVE.W‚(A7)+,SR ‰RTS—RETURN‰PAGELOADMMUI!‰OR.W„#$700,SRŠINHIBITINTERRUPTS 6*ˆCMP.LƒMMULOAD,A5ˆIFMMUISNOTLOADED,THENLOADIT.*ˆIF†THEN.S/*ˆMOVEM.LTSTMMU(A5),D0-D7‚SEGMENTDESCRIPTIONS0*ˆMOVE.L‚A5,MMULOADˆSAVEADDRESSOFCURRENTLOAD"*ˆMOVE.L‚MMUHERE,A5ˆADDRESSOFMMU*ˆMOVEM.LD0-D7,(A5)ˆLOADMMU*ˆENDI é¼NÅ/‰BTST„#TRCFMMU,TRACFLAGSHOULDENTRYBETRACED? ‰IF†THEN‰BSR…TRACERŒBUILDTRACEENTRY‰DC.W„$DD08TRACECODE‰ENDI ‰RTE—RETURN‰PAGE*N*‚Dummyentrypoints--wedon'treallyhaveanMMU,butotherexecroutinesareN*‚goingtobecallingusattheseentrypointsbecausetheydon'tknowthere's *‚noMMU.*CRASN:DEASN:UNLDMMU: MMUFAULT: &ŠRTS—Justreturn--he'llneverknow....   ‰ENDéF éééééQ1LOADMMU ASYST'NOMMU LOADMMU SA E!ƒDummy LOADMMU for boards with no MMU.Œ2BLOADMMU BLOADMMUI BMMUFAULT 0pMMULOAD BUNLDMMU 0BCRASN 0BDEASN 0pTRACER pTRACFLAG pMMUHERE "2<3@D@ç|8 gaAîÝFßNu|8 gaAÖÝNsNu4ééééééÍ'POLL REPL AFââREPL SAëëREPL SYì_G =/*†POLL.REPL.AF=/*=/*=/*@=/*†IFNOOUTPUTARGUMENTFORTHELISTINGISSPECIFIEDTHECHAIN%=/*†FILEWILLDEFAULTTOPOLL.REPL.LS=/*=/IFC \1=ARG POLL.REPL.LS=/ENDIF=/**=ASM POLL.REPL.SA/&.REPL.SA,REPL,\1;MRZ=66=/*{ Included files are:=/*ƒ--none--=/*}=/*=ENDééééééÚ**‰ASSEMBLYOPTIONSFORREPL:* Assemble for I/O with status checking not under VERSADOS*6VERSADOS‚EQU„0’1=ASSEMBLEFORRUNNINGUNDERVERSADOS-BIOS†EQU„0’1=ASSEMBLEFORRUNNINGWITHBIOS2INT‡EQU„0’1=ASSEMBLEFORTASKINTERRUPTHANDLING4MMU‡EQU„1’1=ASSEMBLEIFHAVEANMMUANDASSEMBLING)*§FOREITHERINTERRUPTORSTATUSCHECKINGéééG éééã REPLUREP0_ÿÿÿÿ^ÿÿ UÂþˆH NùúBo=|NuN¹4!VCT¾¾ÀÂÄ Ô Ì € !"`0ŒÞŽ•/ @ç|Jèf B"x "ˆ!È Fß"_NuJø f@HçÿþAø @ç| g$"@ ‘f!È |øÿ$iQéN’Aø | fÜQø FßLßÿNuPø NQø 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 žfÿfa|`ÿ`HçAP$8 >&68 @HC(HD4<  g 4<8***HB* g2Hçz,* m6a€`NqLß8`Lßp&*HC6‚€4*AÕa8NqLß ‚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 4`tNs@ç9 4gaFî HçÿþNi/ /9 b oF,hHV/(@À@ÿ?"h 0P*n6` f€\,_( „!TCBgaÄJ@gÿZ @f AÖa7``ÿJ @fÿBJf&HC4<HBAÖa ÀNq`ÿ(HBHA(&64< ‚HB4`àâˆ&T(,_" !TCBga`Cð=C^AÖa7J®@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Öa¤Hzþˆ`>®ú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 ĪTKú`ª^Laaaaaaa a aNqNqa Nq`"`6`>?/_gL/ fX—Ns?/_g0/ gNa"/ fÈ?/ _g/ g&aaýr8 4g @ça $ªTKú`  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ßTNuJAkô&)fT¯`è&C#SFïB«'@ '@'H'BB«BkgëáIAA 7Aa”Ó«Fü'&© #K LßTNuHøÿÿ@ø!×Ni!ÉH!øL"x :3|•3|µ3| 3|°|`Þ@ç|»ø bgLíÿ !Í b*x HÕÿ8 4ga ÒÝNsNu|ð%a|`øNHøÿÿ1×!ï|LøÿÿNs@ç|JÐkü0ãHâ@S@0€kFßNua>T.raFß.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 NBB8 Z 0àIDAÒx XäIÒ¸ BJ8 Zfà _Nu@çè-f0Hç`Cø |(&$I"j ³üg°)&cì!I %H LßNs(&Ue°($e @&`°Jhfæh%&`¢($ð@&`”`’J¸ 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(( B28H  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ûhüü¦ý&|P”˜,`ÀBûÖˆÞ~ ®öä÷"+v˜èœxüâ ~òf&ÆûhòNú¼ÿäð¦ñ?_fóKøIøB§$I"x fFJQk$¶1@f&i OJg·Øg`öHSAëaùla”Cé QÿÿfÎB„ g| g4´¬o  g($,aœ‚)aØ®- K gT¯Lß88Nu g@î-|ð&Aí-H”|0ãHâ@S@lü0€aù(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ø 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÷2&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÷&`îCé QÿÿfÜAía÷Lß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 gJg` 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úêp&È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`LuP$!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-@ fB2- 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†.8 vΆެÞ¸ vθ zà"FffAø 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€PP&ðP$R(-K gá-G$TNu., 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áˆB25P’uPR @aö<`aí$aíŠ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€Ð« I àˆ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€05PuP$R@*áa÷(` `J…f aêîn `ªJ0Pfò"( à‰ÔA1P1‚P’u@DAÒu@1P!µ@ 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ê0&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êxNu 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†PP…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 l2JkL"Az, m6añ`Nq`8)I,- &\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ÞTNu$, 6,|B„g(,n=|NuB… g *,fÆaݶCÀg*B†I 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Öxß®<&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ÚvNu^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Ï.J‡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 RPFßm-ÿ,|ð&­ ,gí-@ç|­-g <  @ ( g °fô!m AÕaØ2FßNuî)=H*fî*.(g . (gaÖf.-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Ñb"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 Jg` .".+@+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ÓT`þÔ@ç FJf8".*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ÒnNu-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Ð0Gø "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ˆ/<Hª? *(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#|NP*géI*géH`R*fbB€*&x fJ3g:(iD &TGëÿ¶*` &lJ¬g +*²n(K`ê¹Àg #K)I`#K&iD3|N¹J#|OLIé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²J f´ © ©HfX")D(A&TGëÿ¶ `&lJ¬fa̰‹g(K`ê¹Áf&J«g((k)|N¹J)|OLIìJ&kD&Œ` )k`B)(&iD&¼¾&x fB3Iø  &TJ”fa˦°‹gIë`ì(«Aø ŠaÌÌ IraÔš`8aË€paz&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îDJg"P°©gAé `îF€NuBAø Š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ß#`¿bAùPpNAg` DATAÜ,HpnU€BXS€fú-ApAÖ"HB™B™BY2ü $I&I"üREP0"üPB‘NAfÄ$üDATA$ŽpNAf´-|nCî<"üTASK"ü NUM"üBER "ü S"üTART2ü "üTASK"ü NUM"üBER "ü T"üERMI"üNATE2¼ =| lOîÜ..na:Cî ¼!UDRáŠ]‚„ü 1BB¸ 0$:Žg2 BpN@`aê!È 0aEè ŠáŠQ‚„üÄüÔŠ!B1ú` 4!ü –aÀJ¸ fœB¸ GúœCë <€pN@`ad4+;B,g +x  !Í EëpBJjgREê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é2A022€@02€Nua&a°‹fa†a|°faÿ|Cí!É aÂazNuB€Aú$°Pgaÿ^B‡EЇ Eê Rÿÿfð‡#à*(B(:¢º„c*„ÿBKúûû" B*AMú,Bœ°ºrf†` (< B*DB†º„baþöNu hÿÿ g,a2 ÿfaN`aðJga$`a@°‹ga¾a`Ì3|ÿÿ Nu~Aè Cé ((„ÿB*(B*DB†º„baþNu•ÊBB‚BƒIÕKõhHz ?þàB9þà ü>þà9þà è àÁþàü6þàOïNuNuSS P þ þ þà@ þˆÿÿ'VERSADOSREPL AF X XREPL SA a aREPL LO b=/*†VERSADOS.REPL.AF=/*=/*=/*@=/*†IFNOOUTPUTARGUMENTFORTHELISTINGISSPECIFIEDTHECHAIN)=/*†FILEWILLDEFAULTTOVERSADOS.REPL.LS=/*=/IFC \1=ARG VERSADOS.REPL.LS=/ENDIF=/*.=ASM VERSADOS.REPL.SA/&.REPL.SA,REPL,\1;MRZ=66=/*{ Included files are:=/*ƒ--none--=/*}=/*=ENDééééééK  P**‰ASSEMBLYOPTIONSFORREPL%* Assemble for running under VERSAdos*6VERSADOS‚EQU„1’1=ASSEMBLEFORRUNNINGUNDERVERSADOS-BIOS†EQU„0’1=ASSEMBLEFORRUNNINGWITHBIOS2INT‡EQU„0’1=ASSEMBLEFORTASKINTERRUPTHANDLING4MMU‡EQU„0’1=ASSEMBLEIFHAVEANMMUANDASSEMBLING)*§FOREITHERINTERRUPTORSTATUSCHECKINGéééééé Y REPLÿÿÿÿÿ€REP0ÿÿÿÿÿÿAùpNAg` DATAÜ,HpnU€BXS€fú-ApAÖ"HB™B™BY2ü $I&I"üREP0"üB‘NAfÄ$üDATA$ŽpNAf´-|nCî<"üTASK"ü NUM"üBER "ü S"üTART2ü "üTASK"ü NUM"üBER "ü T"üERMI"üNATE2¼ =| lOîÜ..na:Cî ž +ŠXREF.SPTMADDRŒAddroftimerchip(M6840). *„Others:.ŠXREFƒCRASHSAV‹PlacetoSAVEinfoifweCRASH.   **‚Includedfiles:**‰9999.M6840.M6840.EQ*ŠNOLISTŠINCLUDE9999.M6840.M6840.EQ*ŠLIST ŠSECTION8ŠPAGE*J*‚ThiscodeisneededtosatisfyINIT,whichisboard-independentandmust/*‚calluponustodotheboard-dependentstuff.**„InitializetheMMU.*3INITMMUƒRTS—It'seasyforustoinitializetheMMU,*§sincewedon'thaveone. **„Startthetimerrunning.*TIMERSTDŠMOVE.LTIMSLIC(PC),TIMESLIC‚Setthesysgenparameterwhichdictates%*§the#oftimerticspertimeslice.'‰MOVE.LTIMERA(PC),A1‡GETTIMERADDRESS#‰MOVE.LA1,PTMADDRŠSAVEITFOREXEC$‰BEQ.S‚TIMER_EXITŠBRANCHIFNOTIMER)‰PEA„TIMERBE(PC)‰WHERETOGOONBUSERROR$‰MOVE.W#'BE',-(A7)‰SETBUSERRFLAG3‰MOVE.B#$01,CR2SR(A1)†ALLOWWRITETOCONTROLREG1&‰MOVE.B#$01,CR13(A1)‡ALLTIMERSRESET$‰MOVE.L#CLOCKFRQ,D0ˆCLOCKFREQUENCY‰DIVUƒ#4,D0DIVIDEBY4#‰SUB.W‚#1,D0CLOCKINTERRUPTSAT-1*‰MOVE.WTIMINTVA(PC),D1…INTERRUPTINTERVAL ‰MOVE.WD1,TIMINTVŠSAVEFOREXEC‰MULUƒ#4,D1MULTIPLYBY4*‰SUB.W‚#1,D1SUBTRACT1-TIMERGOESTO-1!‰MOVE.WD1,TIMINTV4‰SAVEFOREXEC‰LSL.W‚#8,D1PUTINHIGHBYTE)‰ADD.W‚D1,D0VALUEFORTIMER3(2HALVES)‰MOVEP‚D0,MSBT3(A1)ˆSETTIMER34‰MOVE.W#256,D0VALUEFORTIMER1(OVERFLOWCOUNTER)‰MOVEP‚D0,MSBT1(A1)ˆSETTIMER18‰MOVE.B#$00,CR2SR(A1)†ALLOWWRITETOCONTROLREGISTER3;‰MOVE.B#$C6,CR13(A1)‡T3--INTERNALCLOCK,INTERRUPTENABLED,*£OUTPUTENABLED,8-BITMODE8‰MOVE.B#$01,CR2SR(A1)†ALLOWWRITETOCONTROLREGISTER1;‰MOVE.B#$00,CR13(A1)‡T1--EXTERNALCLOCK,ENABLEALLTIMERS3‰ADDQ.L#6,SPEverythingwentOK;justgetthatbus4‰BRA.S‚TIMER_EXITŠerrorjunkoffthestackandexit.*;TIMERBE‚MOVE.L‚#CRASHSAV,PTMADDR‚USEDUMPPOINTERFORTIMER TIMER_EXITRTS–ReturntoINIT. ŠPAGE ‰SECTIONƒ80************************************************,*ƒValuetoputinVME101controlregister.ƒ*0*************************************************7CTRL†SET„%1101ŽStatusdisplaybitpattern.Alsousedto-*£asserttheSYSFAIL*signalontheVMEbusby,*£settingthemallto1.Statusdisplayhere*£issetupfor"D".*ª0000‚=‚display"0"*ª0001‚=‚display"1"*¶:*ª1110‚=‚display"E"*ª1111‚=‚display"F",CTRL†SET„1<<4+CTRLŠStatusdisplay(enabled).9CTRL†SET„0<<5+CTRLŠBusblocktransferrequest(disabled).;CTRL†SET„0<<6+CTRLŠBusrequesttime-outcounter(disabled).>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>•NOTICEš<<<<<<<*‚>>>>>>>µ<<<<<<<>*‚>>>>>>>…WhenincorporatinganydriversduringSYSGEN„<<<<<<<?*‚>>>>>>>…thatrequirememoryallocatedforthemasperƒ<<<<<<<?*‚>>>>>>>…thedriverpackageinstructions-thisistheƒ<<<<<<<,*‚>>>>>>>…spotthefile(s)gointo!!–<<<<<<<*‚>>>>>>>µ<<<<<<<=*‚>>>>>>>…Thisisalsothespotforcodeforadriver…<<<<<<<>*‚>>>>>>>…that‚requiresothertypesofinitialization,ƒ<<<<<<<0*‚>>>>>>>…such‚asclearinganinterrupt.‘<<<<<<<*‚>>>>>>>µ<<<<<<<*‚>>>>>>>‘MERGEITHERE—<<<<<<<*<*ˆWhenyouwritethecodethatistobemergedhere,wrapit*ˆaroundwiththefollowing:*:*ˆAtthebeginning,withDRVRxOUTreferringtoyourunique*ˆlabel,putthiscode:*'*‹PEA„DRVRxOUT(PC)„IFBUSERROROCCURS,*¢RETURNORGOONTONEXT*¢DRIVER'SINITIALIZATION**‹MOVE.W#'BE',-(A7)…SAVE'BUSERROR'FLAG*9*ˆTheninsertthecodetodowhatyouneedtodoforthis*ˆparticulardriver.**ˆAttheend,putthis:***‹LEA„6(A7),A7ˆREMOVEBUSERRORFROMSTACK*DRVRxOUTƒEQU„**=*ˆInthisway,ifthecodeforonedrivercausesabuserror,.*ˆthecodeforotherdriverswillbeexecuted.*E*‚>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<G*********************************************************************** INITIORƒRTS  ŠENDéééééé4VECTTBLƒIDNTƒ5,1RMS68KvectortablefortheVME101.O*******************************************************************************O*******************************************************************************O**********************************************************************************É***?***…ROUTINE:‚VECTTBL--RMS68KVECTORTABLEFORTHEVME101.Œ******É***J***…ENVIRONMENT:‚PartoftheRMS68KexecfortheMotorola68000family.***G***‡Copyright1983byMotorola,Inc.‚ThisversioM nisfortheVME101‚*** ***‡monoboardmicrocomputer.ª******É***E***…FUNCTION:‚ThistablegetslinkedwithRMS68K.‚Whenthesystem…***C***‡boots,theexecinitializerfindsthistableandusesitto‡***:***‡takeovervectorsintheprocessor'svectortable.******É***O*******************************************************************************O*******************************************************************************O******************************************************************************* *,*‚Revisionhistory(addnewchangestotop).*…Date†Author‚Changes@*…--------‚------‚----------------------------------------------*…10/25/83ƒSJF„Initialwriting.*  *E*‚XREF's.‚NotethattherearemanymoreXREF'screatedbyinvocations8*‚oftheVECTORmacro;thoseXREF'sarenotlistedhere.*.ŠXREFƒCOMINTCommoninterrupthandlerroutine.   **‚Includedfiles:*5*‰9995.&.STR.EQThesectionnumbertouseisinhere.*ŠNOLISTŠINCLUDE9995.&.STR.EQŠLISTŠPAGE*E*‚TheVECTORmacrodefinesentriesinthevectortable.‚Theformatis%*‰VECTOR‚,5*‚Therearetwospecialvaluesfor:,*‰0=COMINT(thecommoninterrupthandler).(*‰1=don'ttakeoverthevectoratall.E*‚Entriesinthevectortablemustbeassignedinorder--thatis,theB*‚vector#'sintheVECTORinvocationsmustbeinascendingorder.H*‚InthecasewheretwocontiguousVECTORinvocationsleaveagapinthe ¦5 ¯< ·'K*‚vector#'s,thosevector#'sinthegapwillbeassignedthesamehandler9*‚asthatofthelowervector#ofthepair.‚Forexample,+*‰VECTOR$23,0ŽPoints$23to$27toCOMINT.-*‰VECTOR$28,1ŽLeaves$28to$2Fastheyare.-*‰VECTOR$30,ROUTINE1‡Points$30toROUTINE1.G*‚Ifthegaptobefilledhasasecondparameterotherthan0or1,theJ*‚addressassignedtothevectorwillbeincrementedby2foreachvector:7*‰VECTOR$23,XŽPoints$23toX,$24toX+2,$25toX+4.$*‰VECTOR$26,0ŽPoints$26toCOMINT.'*‚Theendofthelistissignifiedbya*‰DC.Lƒ0F*‚andthesecondparameterofthelastpriorVECTORinvocationwillbeK*‚appliedtoallfurthervectors,upto$FF.‚Again,ifthesecondparameterK*‚wasnota0or1,theaddressassignedtothevectorswillbeincremented#*‚by2foreachvectorinsequence.* VECTOR„MACROŒIFLEƒ\1-VECT_NUM0ŽFAILƒ499ŒVector#'smustbeinascendingorder!ŽMEXITŒENDCŒIFNCƒ'\2','0'ŽIFNCƒ'\2','1'XREFƒ\2ŽENDCŒENDCVECT_NUM„SET„\1ŒDC.Lƒ\1<<24+\2ŠENDM  * *‚Firstsetupthetableheader.*ŠSECTIONLEVEL00  0ŠDC.Lƒ'!VCT'Dumpeyecatcherfor'VeCtorTable.'2ŠDC.LƒCOMINTPuttheaddressofCOMINTheresothe"*§execinitializercanfindit;he#*§isn'tlinkedwiththeexec,sohe*§wouldn'tknowotherwise.ŠPAGE*)*‚Herearetheactualvectorassignments.I*‚NoticethatwhetherornottheillegalinstructionvectoristakenoverE*‚byRMS68Kiscontrolledbyansysgenparameter.‚DuringRMSGEN,this$*‚parameterissubstitutedsuchthatA*„0=theexecshouldleavetheillegalinstructionvectoralone.?*„1=theexecshouldtakeovertheillegalinstructionvector.J*‚YoumightwanttheexectoleavetheillegalinstructionvectoraloneifI*‚youwanttousetheROMdebugger,sinceitusesillegalinstructionsas*‚breakpoints.* 8VECT_NUM‚SET„1’Initializethevectornumberto1sothat&*§thelowestvectornumberthatcanbe*§setafterwardsis2. ŠVECTOR$02,PROGINT2‡Buserror.#ŠVECTOR$03,PROGINT3‡Addresserror.$*§Ifwe'renotsupposedtotakeover/ŠIFEQƒ\ILLINSTRŠtheillegalinstructionvector,9ŠVECTOR$04,1Žleavetheillegalinstructionvectoralone.ŠENDC–*!*§Ifwearesupposedtotakeover/ŠIFNEƒ\ILLINSTRŠtheilN legalinstructionvector,>ŠVECTOR$04,PROGINT4‡takeovertheillegalinstructionvector.ŠENDC–*#ŠVECTOR$05,PROGINT5‡Divisionby0.+*‚insequence„$06,PROGINT6ŠCHKinstruction.-*‚insequence„$07,PROGINT7ŠTRAPVinstruction./*‚insequence„$08,PROGINT8ŠPrivilegeviolation.'ŠVECTOR$09,PROGINT9‡Instructiontrace.8ŠVECTOR$0A,PROGINTA‡Reservedinstructionopcodes$AXXX.>*‚insequence„$0B,PROGINTBŠReservedinstructionopcodes$FXXX.'ŠVECTOR$0C,0Ž($0C-$17gotoCOMINT.)'ŠVECTOR$18,SPURINTˆSpuriousinterrupt..ŠVECTOR$19,CMRSFAIL‡SYSFAIL*fromtheVMEbus.*ŠVECTOR$1A,TIMEINTˆM6840timerinterrupt.%ŠVECTOR$1B,0Ž($1B-$1DgotoCOMINT.)'ŠVECTOR$1E,KILLER‰BusClearinterrupt.$*¦Sincewedon'tusethatbusaccess(*¦mode,weshouldn'tgetthisinterrupt.2ŠVECTOR$1F,1ŽSoftwareabortand/orVMEbusACFAIL. *§WeessentiallyignoreACFAIL*,'*§andleavethisvectorpointingtothe*§bug'ssoftwareabortroutine.ŠVECTOR$20,TRAP0ŠTRAP#0.ŠVECTOR$21,TRAP1ŠTRAP#1.#ŠVECTOR$22,TRPVCT2ˆTRAP#2to#15.'ŠVECTOR$30,0Ž($30-$FFgotoCOMINT.)  !ŠDC.Lƒ0’(Endoftableindicator.)   ŠENDéé=/*=/*†Importantnote:5=/*†TheorderoftheINPUTmodulesforthisLINKmust=/*†beasspecifiedbelow.=/*=LINK ,INIT,\LINKLS;HAMIXSSEGMENT .INT:8 \INTSTRINPUT M68XXX.INIT.ROINPUT VME101.INITIO.ROINPUT M68XXX.INITDAT.ROINPUT C8OC.SYSPAR.ROEND=ENDéééééé ¿ N C‚******************************************************************&‚*SysgencommandfileVME101.RMS.CD *C‚******************************************************************‚*‚INCLUDE…C8OC.SYSPAR.CI‚**‰RMS†=$10000AddresswhereRMS68Kstarts.‚*D‚*‚NowindicatewhetherornottheexecshouldtakeovertheillegalD‚*‚instructionvector.‚IfyouaregoingtobeusingtheROMdebuggerF‚*‚tosetbreakpoints,thenyou'llwanttheillegalinstructionvectorC‚*‚leftasthedebuggerhasitset.‚InanenvironmentwheretheROMC‚*‚debuggerwillnotbeused,youwillwantRMS68Ktofieldillegal‚*‚instructionsasexceptions.‚*.‰ILLINSTR=1’Illegalinstructionvectorflag:#‚*¨0=RMSshouldnottakeitover.‚*¨1=RMSshould…takeitover.N‚*****************************************************************************‚**‚*ˆNowwegeneratetheRMS68Kloadmodule.‚*N‚*****************************************************************************‚*‚*‚*‚*(‚*‚NowcreateaVECTTBLforthissystem.‚*‰SUBS†VME101.VECTTBL.AG:‰ASM‡VME101.VECTTBL.AG,VME101.VECTTBL.RO,VME101.VECTTBL.TF‚*‚*‚Nowlinkitalltogether.‚*‰RMS0LO‚=\RMS‰RMS0HI‚=\RMS+$FF‰RMS2LO‚=\RMS+$100‰SUBS†VME101.RMS.LG‚LINKˆVME101.RMS.LG‚=DEL.&.SYSPAR.RO(‚=COPY‡VME101.VECTTBL.TF,VME101.RMS.LL;A ‚=COPY‡SYSGEN.TF,VME101.RMS.LL;A‚=DELƒ*.*.TF;Y‚*‚END‰ éé È.=/*7=/*†VME101.RMS.LG--RMSGENlinkchainfileforRMS68K.=/*=/*2=LINK ,VME101.RMS.LO,VME101.RMS.LL;H,M,I,X,-U,Z=40SEGRMS0:0\RMS0LO,\RMS0HISEGRMS2:2,3,4,5,6,7,15‚\RMS2LOINPUTˆ&.SYSPAR.ROINPUTƒM68XXX.RMS.ROINPUTƒVME101.VECTTBL.ROIN†M68XXX.AKRQST.ROIN†M68XXX.ASQALOC.ROIN†M68XXX.ASQEVENT.ROIN†M68XXX.ASQFREE.ROIN†M68XXX.ASQREAD.ROIN†M68XXX.ASQSTATS.ROIN†M68XXX.ASRINT.ROIN†M68XXX.ATSEM.ROIN†M68XXX.BKG.ROIN†M68XXX.CDIR.ROIN†M68XXX.CISR.ROIN†M68XXX.CKDELAY.ROIN†M68XXX.CKEXPAT.ROIN†M68XXX.CMR.ROIN†M68000.COMINT.ROIN†M68XXX.DCLSHAR.ROIN†M68XXX.DELAY.ROIN†M68XXX.DEMON.ROIN†M68XXX.DERQST.ROIN†M68XXX.DESEM.ROIN†M68000.DISPATCH.ROIN†M68XXX.DSEGX.ROIN†M68XXX.DSERVE.ROIN†M68XXX.DSRVX.ROIN†M68XXX.EQDQ.ROIN†M68XXX.EXABRT.ROIN†M68000.EXCEPT.ROIN†M68XXX.EXMMSK.ROIN†M68XXX.EXMON.ROIN†M68XXX.EXMONVR.ROIN†M68XXX.EXQEVENT.ROIN†M68XXX.EXRQPA.ROIN†M68XXX.FNDGSEG.ROIN†M68XXX.FNDTSEG.ROIN†M68XXX.FNDUSEM.ROIN†M68XXX.GETTCB.ROIN†M68XXX.GTDTIM.ROIN†VME101.KILLER.ROIN‡NOMMU.LOADMMU.ROIN†M68XXX.LOGPHY.ROIN†M68XXX.PAGEALOC.ROIN†M68XXX.PAGEFREE.ROIN†M68XXX.PAUSE.ROIN†M68XXX.PSTATE.ROIN†M68000.PVSEM.ROIN†M68XXX.RCVSA.ROIN‡M6840.RDTIMER.ROIN†M68XXX.READY.ROIN†M68XXX.RELINQ.ROIN†M68XXX.RESUME.ROIN†M68XXX.REXMON.ROIN†M68XXX.RQSTPA.ROIN†M68XXX.RSTATE.ROIN†M68XXX.RTEVENT.ROIN†M68XXX.SEGALOC.ROIN†M68XXX.SEGDEAL.ROIN†M68XXX.SEGSHAR.ROIN†M68XXX.SELFTEST.ROIN†M68XXX.SERVE.ROIN†M68XXX.SETPRI.ROIN†M68XXX.SGSEM.ROIN†M68000.SINT.ROIN†M68XXX.SNAPTRAC.ROIN†M68XXX.SPURINT.ROIN†M68XXX.STDTIM.ROIN†M68000.SUPER.ROIN†M68XXX.SUSPEND.ROIN†M68XXX.TABLE1.ROIN†M68XXX.TERM.ROIN†M68XXX.TFRSEG.ROIN‡M6840.TIMEINT.ROO IN†M68XXX.TRACER.ROIN†M68000.TRAP0.ROIN†M68000.TRAP1.ROIN†M68XXX.TSKATTR.ROIN†M68XXX.TSKBORN.ROIN†M68XXX.TSKINFO.ROIN†M68XXX.TSKMOVE.ROIN†M68XXX.TSKSTART.ROIN†M68XXX.TSKWAIT.ROIN†M68XXX.USERVECT.ROIN†M68XXX.WAKEUP.RO Ñ\ ÚIN†M68XXX.WTEVENT.ROINPUTƒM68XXX.RMSPATCH.ROEND=ENDéééééééO1VECTTBL ASYST'VME101 XVECTTBLAG!ƒRMS68K vector table for the VME101. 2pPROGINT2 pPROGINT3 pPROGINT4 pPROGINT5 pPROGINT9 pPROGINTA pTIMEINT pSPURINT pTRAP0 pTRAP1 pKILLER pCOMINT pTRPVCT2 pCMRSFAIL "Pn3?œœ!VCT(,,,,, , ,,,,, ,!,"04ééééO éé â'VME110 KILLER AF ÷ ÷ILLER SAÿÿÿÿÿÿÿÿ=/*†VME110.KILLER.AF=/*=/*=/*@=/*†IFNOOUTPUTARGUMENTFORTHELISTINGISSPECIFIEDTHECHAIN)=/*†FILEWILLDEFAULTTOVME110.KILLER.LS=/*=/IFC \1=ARG :.VME110.KILLER.LS=/ENDIF=/*/=ASM :.VME110.KILLER,:.VME110.KILLER,\1;MRZ=040=/*{ Included files are:=/*ƒ9995.&.STR.EQ=/*}=/*=ENDéééééé ï