IMD 1.16: 31/08/2008 10:47:05 84-93928-02 a100 f92802 bus monitor diag nm4  ž ž @0‚|†ø)€€ªv1½®u¦o) ˆ " ž}‚jÿA ¢cœžùž¼žõ–èì Mˆ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’IOS4 €MÁúD7791019092100D2791019092100 791019092100#F92802 VOLBUS MONITOR DIAGNOSTC   ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’Ižùž¼žõ–èì Mˆ@†jæjg€ÿígÿèÂg@ †o G€ÿò`úkžŽ¾òž½¢_„C# b# ž}€BŸ€ žuÒ[¾ä žüž]e‡ †JÂR¾¬æîi¾ðÀˆÆCp@€„†=€…†<€††;€ƒ †GÂ9P@ G€ÿÂÆ<à‰¾•NÆéP¾èâÖèCHùC €ˆC ˜GÈTºà€qEžæ‚â¢(ŸÈž¤ *Ž¦Â C¦ ¦ÎŸxÆžë @0DAJ÷LÆ)À€ªè1½" ¦ † i¾¦€„œ+â  fžG¾øÞóžC)3žÝ `joBˆB¾ I,Ÿv ¾ °¾ €B¾ I,ŸmžÈ ž @¬E°E¨F¤F)¤D¾^ÄE‚‚„Fž& †ÈæjHÿÆÂÆÂ@pÆO¾ÂŸv g€ÿ9gÿ6ò]X¾] P¢hâV+ì„s=è„胾cž‹Æ_†N‚¡ ž…žòªGž’†›¾ÁžØ¾ø ¦•“@AúLèSÃ)"$ C ž‰žmžøª3žïŠ1žjŠ/ž žhÿöÿÿ ‚ p ž…âv¾R†Ÿw ÞpÞpžwâ‚p¾ Þkâižº† ’ŸÂ¢œ€15 !¦^æ\žd ²X‚ žˆò %€À'+ò²NŸs愾Qâ‚)žs ‡EÞDŸ|Ÿ{ @ž$ ož¶ Ož¯ mž­ Jž« Kž© iž¸ gž¶†. žV tž²žì„sFè„n`" FàEžD)ž ¾E`¾CnrgŸy ¾w"¾NÞž{žR¾q1¾HÞ ž}žL¾2`¾0t¾žG¾- ²B¾c ¾(Þ>Þ=Þ<žy¦:ž;¾!ž9¾ü¾/ž5OS:: SYSž¦ž%iüþŒþ‹Âxþ‹þŠÂwc Bc A@6<# þIc B# ÞhIþjHÀc r‡c ·š‡™Þ˜T¶# @0‚X†ß)P €€ªU1½®R¦‹pI þP@6Þ8žeŸVƒµ¿²žh B ‡ –2 ¿­‚­‡ƒ¬‡W… ¿©W…¿¦ý»¥ž‹Ÿ¤¾ ƒ¢  žž‰ƒŸ Ÿ›žŠ ‡›¿›Ÿ–žg  ‡–¿–Ÿ‘žb ‡‘¿‘ŸŒž]D7 b&žŒÇkx‰11fJ  EWŸöU´)‚é†é †å‚ç ±‚沂峂䴰€€.1½% €€'‡Ñ‚Èa‚ɨ‚Æb b…ÞËžo±ü†Í†¹ŸS‚Âÿ†À ‚¼a‚³bb…†­¿ÁŸE   ‡'ÿ†±^ Ÿ6 '‚}†—þ†¨±ž­WŸ, 'ý†Ÿ±Ÿ%Þ”žPžv 'AŸ˜Ÿ˜fgp[ÿÿîîQQÿÿÿrstuvwxyz{ JŸÿ‡œžP ^žV  ††††Ÿy ‚ˆ†‚‡†‚††‚…†Ÿva¨bb  ‘0  #$%&rr (  @ €     @ €    oÿ g j!" i#$%&rr(  @‡êWßíƒì»ìžƒ ‡ç‡è  ‡ç¿çE…¢å¦Ùè†ÈÞÇžŸà¢Ó €€†<€—†Â¾µ†5€—¾²†3€—¾¯†1 ‚¹„—€®†¹ÞÂß ¾7‚¾†* ‚¬†¿»¿º¿ºþº!ž † ¿ žW‡ƒ­ ÿ‡« ð‚¦ ÿ†¤žO ƒ¯º—žžG ‡¡¿ žCžk †‹+„—‚ˆ–ˆŠ †ƒŸvýÿþÿr@ÿE   CÇéf¡ýnm_1s !"BA11bbQrr r‚‚ÂAœŸ 55XX1¦v£ Žc01±ñÎ p(ÿ ((ÿÿ@@ÿ@@@( r@(ÿr X‡+W —û¶ì‚â‡ê‚á‡é‚à‡è‚߇ç¿ñ ‚‡å‚ ‡ä ‡ì…¿¿¿ƒÞ ŸÜ ž ‡¿Øžžq Y‡ —×¶È ‚Á‡È ‡Ò…¿Ê¿É¿Ï ƒÄ ž ‡Ã¿Àž—žsƒÆº± žžc ‡¹¿¶ž_žOƒ¼º¨žž‡ ‡¯¿¬žƒž_ Z‡©—©¶š ‚”‡š ‡¤¿ƒ™ Ÿ— ‡˜¿•Ÿ“žv…Ÿ•pQQp(HpQQ€ stuvzqx‰JfC üŒpé1s @‡wE…ßùƒø ‡ò ‡ñ¿ñ †ëƒò‡cÿ‡cƒï‡\ ƒî‡[ƒí‡Z‚c‡Z¿ã¿]ß^  ‚Ø ž¼†Ó¿Þ¿×Djž| ¿L¿Ký»Fž“°°(ñ§Ð¢Ð*ÿ +¸€žžŒßÈžy ‡9¿6žYž“ ‡4¿1žTžŽ ‹»º­žžMº†ž‚ ‡&¿#žF  ‚¡ †Ÿƒ ÿ‡ ðž; †–¾Æ¿šDjŸ $ #i"!j gÿo \] nm…®¤ Z _ ` aŒ k L CHANGE SKIP SWITCH ( SW1-6,7,8) FOR SKIP € HIT RETURN WHEN READY  ƒþ ƒý ƒü‹ü†jŸv @‡è E… ‡Bßôƒó‡>¿?ƒà‡à‚à‡à ¿;ƒì‡Þƒë‡Ýƒê‡Üƒé‡Û ‡Ú‡æ ¾Å ßË¿+Cžx¾“ †¿Ë¾¡¾ †ƒÒ»Ðž ž¨‡Á¿Áž¥ƒÉžg ƒ}†¬Þ{ƒz †ªÞx£wÞvƒ¥‡¥ƒ½‡¢Þ¡Þ¡*ÿ1¸ Ÿm )€€»³ž„,ÿž…+žx §ªŸsƒª‡§Ÿpƒ¤ U ÿŸ¥ž9 Uƒ¢ ªƒ¡‹”†¶Ÿxÿ C #qzvstupf J n o p q£ [ b c d l m s t‰ u † CHANGE INT ERRUPT VECTOR SWITCH (SW2) TO 4 HIT RETURN WHEN READY  A‡>E…ßȃǻǞƒ ‡Â‡¸ ‡·¿·—¶ ƒ»‡0ƒº‡/ƒ¹ ‡.ƒ®‡-ƒ%‡%¿«‚$‡$ ‡' ‡# ‡#¿#³–ÀI ž„‡¿žžv ƒ ‡ B‡ — ¿³–­ I ž“‡Š¿Šžžunmü  g…©fJ¢ý \ e f —p 0ƒn‡ C‡Ž¿Ž³–‰ I ž…‡g¿gž‚žvŸ„à uC‰ A‡{E…ßùƒø‡O  ‡N¿N ¿M‚ç‡çƒî‡æƒí‡å ƒì‡äƒë‡d‚Û‡á ‡à¿æˆÝž| ¿\¿[¿Z¿Yý»ÖžžxƒÓ‡1 ¿1ŸQžr HIT RETURN WHEN  READY TO MONITOR SYNC  OUTPUTS  HIT CONSOLE  INT. TO EXIT SENSE SWIT CH ON =>DEBUG SENSE S WITCH OFF =>TEST START ÿþÿý zvstqpx¥ ] h i j® A‡ÆE…ßăûÞƒ  ‡¾‡¿ ‡¾¿¾ ‚‡a‚œ‡` ‚›‡¶‚Y‡Y¿´ ‡[‚އU‚Q‡V¿®ƒV‡¬¿¬Ÿ¬žyss@€€€@ l m n0001Þ11 ° ± C¦ýnmu…fJ‰ † COPY COM3B2,A COPY A,COM2 COPY COM3B3,A COPY A,COM3 COPY =NORTC,A COPY A,RTC JST NODMA COPY =0,A COPY A,WRFLAG COPY MODE3E,A MODE FOR COMPARE AND RESET ON COMPARE COPY A,MODE COPY SMALL,A COPY A,CNTA ENDING JST MONITR COPY JDBG4:CNTDBG4:LP XDBUG4 LDEBUG4 O0SEGMENTBLANK DEBUG: o  gMG:Z G:Y G:X MG:W G:V G:U MG:T G:S G:R MG:Q G:P G:O MG:N G:M G:L MG:K G:J G:I MG:H G:G G:F  MG:E G:D G:C MG:B G:A G:9 MG:8 G:7 G:6 MG:5 G:4 G:3 MG:2 G:1 G:0  im*** DEBUGX.OBJ - REV D0m ***ihg ¾¾ô ±Þ}¾Øžº´EÕ¾ áã¦Â 4”Å {y–­Fzrk\±Ö Aw“¯‹õ´ñÙßå  ÷^kE_Ô¦Ä` àßá­ T…û¾Ê (½Ô :½Ô ‚9Š’½Õ -½Ô :½Ô‚" ÿЉ½Õ )½Ô ½Ô Š‚…÷Çÿþ g ¿ †ÈæÊ¦ÈÆÆp†ÇP†Æ0†Å @0 †ÂB ž †¾¢` Ÿh †  ‚}’¾cÅøžD «¢«â«‚®‚­ ‚§p‚¦P‚¥0O‚œŸo ½Ò X½Ô D½Ô B½Ô U½Ô G½Ô 4½Ô ½Ô D½Ô 0½Ô ½ÔŸi ¾7Ÿ} u#u"u!u uuuuuuuuuuuuuuuuuuu u u u u uuuuuuuuu  ½Ò ½Ô‚z½Ô¾¶¾µ P¾«÷ ½Û A¾§‚C½Ü Q¾£‚@½Ü X¾Ÿ‚= ½Ü Y¾›‚:½Õ½Ò¾Ÿ¾ž¾ K¾“‚3 ½Ü L¾‚0½Ü S¾‹‚-½Ü D¾‡‚* ½Ü C¾ƒ‚'½ÕŸK ½Ô =½ÔŸ{  ¾Ÿ} ½ÔŸ|‚Ê"„ †Å½Ò *½Ú½Ó†À Yž¤ Qž¢ žè Až½ TÞ Gžž„½Ó½Ù†¯ž‘ Ržž† ½Ó ž£½ØÆ¦žˆ Mì Dé Vé Wê½×ƚ›LBžùLCÑLFÏLL ÎLSÐLJžÁLIËLGÊLRÉLZ èÆ …ö½Èž8 ¾+ Ÿ}½Ó†{½Ó†u½Ó žÆ‚t Pž” LžÆ‚j Tž‹ Pžƒ BžÆý …ú P…û ½Ô‚\…ûž …ü‚W H ž„ TžÆ…üž½Ó Åž|ÁîQE ‚I…÷ò ,ž§ò ,ž˜½Ò `‚šÿ –›†— 6Á‚“†‡‚“‡‹‚’‡ˆ÷†… ½Ö†áŸ€—– _½Úž­ž"°¿€U ?ÿ ¾#Ÿ}ª¸¦¸ `ù JžŒ Bž† Á÷ YK QJÿžˆ‚¨fÁׂ¤ ž^Þ¡ @‚²€ÞŸ‡žÞ§œ `ò @E ;ž‚ž†žà½×RA@EN@AÞÇŽ QÁÞŠ‡‰ò ,ž^ž$žAÆú ½ž o±¾)‚{ ÿ…÷ †w‚_Ä D `…öžž†n÷¢X*ü ¸‚ž›€ƒQ€„†c À ‚Ѐª^ Ѐ Ä„‚ÂY@AĄ܃žS B ` …ö½Èö DÝ÷ž„*üÞKž_žU‚2 `Å¢0*ü¦.€ ‚„€‚( ÿ†&žr  o±¿‚{…÷†5 M…öƒˆ¶ˆ‡†ƒ‡ì‡… `žXd¯»  ¿zŸ}½Ó žô Tžž„½Ó žè Æ Cžž‚Þôžé Ižž‚Þðžä U žž‚Þìžß Nžž‚ÞèžÚ Sžž‚ ßóžÕ AžžÚßïžÐ ‚ØÂ›PQI ƒå“¢†£À`@"ÓŸÆ  †þ-L Œ…þŸlQÅ‚•‡’‚”‡‘Þ„þM…þ Ÿb ¾5‚}â¼¢»…÷ †x CŸÆ ”• ‚¬Â“KQG‚æ“æ†ç Àa@"ÓãÆä †ˆŸqQłއÛÂÝÇÚ ÞŸj ¾ýƒª…÷ IžêÞÞÞÞ Þ³Þ³ž’½Ó ž ,žž‚½Óž ¾à Æ ¿Ÿ}¾¾I¾ž¾è¿‹¿‹¾ÐætÅ.WH„j›   ‚W¨KQG‚“”†•Àb @"Ó‘Æ’ †ŸqQÅ‚Œ‡‰Â‹ÇˆÞ– Ÿj¿€†‡Š‹š› žŸª« ¾’  ƒñ…÷ U…ö½ÈÇ ¾'Ÿ} † ††††A†AŸw ¾r‚} þ†{  ‡yÞxÞw¢âŸt ‚ “KQG‚E “M†NÀc@"ÓJÆK †ˆŸqQÅ‚E‡B ‚DÇAÞŸj ¾\ƒ¼…÷ NžI ‚ “KQG‚)“5†6Àd@"Ó2Æ3 †ˆ ŸqQÅ‚-‡*Â,Ç)ÞŸj ¾@ƒ¡…÷ Sž- ƒÂ“KQG‚ “†Àe@" ÓÆ †ˆŸqQÅ‚‡ÂÇÞŸj  ¾$ƒ‡…÷ Ažˆ˜œ ¨½Ì ¦Áõ"B†œî ƽ҃˜½Ü½×½ÌîCð‡‘Åñ Å /ž† XžÆƒ‡ž‚ƒ„  ½Ò½Üži °ž]½Ò@½Ûƒ¨ ½Ü½×îB…ôÇ¢ò ,žœÂžñ[ +ž‰ -žˆ *žŠ Xž‹ /žŒÆK JÿÆŽÅïž^ƒ‹…ïž[ƒˆž{ƒ…  žxÞ‚žZÅ ,ÆŸ|¾Û ž† ½×½ÌL žÆÆÎû Pžž„ý…ú ½ç½Òï†à½Ûø†Á†¾ƒÛ½Ü½æ Þºž{‚¹ ¾ƒ‚Ó½Òžq ‚±†´Ž± k†¬ŠÉ†È‚­Gû†©½ÍÞ§ž} Þ¦žyý†¢½ÍÞ ž}ƒ¹y E  à ž .½Ôƒ®ÿ E  à  ž .½ÔÞ£ÞƒžfŸN  ,žÆ½×†s@ ÁïFž…C ’kŸqÁùLLžÆ ¾ (žwž{žu Â^Þ|JÿQBÆZ Ÿyù Lžˆ Sžžû TžŠ½Òžˆ ÞN‚M ¾ †Ižsž‰…ôï ¾Ë†_‚”‡]¾]Š’ž| IÆŽ¾> , žÆ½×Ƈ ,žžƒ†·½×Æ‚Ÿp Iư¾k ,ž“ ’« ,žƒHÿÆt ž’‚r žŽHÿÆmñ -žÆ†› ž†½×ñ -žÆ†”ï†(ƒ'š\–\ ÂFžƒ‚Š -ž‚¾žt½Ò‚½Û ƒ½Õžx Â’@"Fž‚Ÿzž‡@  ÎŒ‰ó ÿFž„ …ôÆó Ÿl d¾#…ô† ‚.¾b†žÁó ƃ™‡šÞ™Þ–JÿQº‚”†’‚!†’Â’ ƒŽ»ž…ÞŠÞ‹JÿQ¸Å½Ò %½Ô ‚‚½Õžu †U ½Ô  ½Ô ’‰B *ž ½Ô ½Ô‚GŸo  †h½Õ †fÿ†e °"†cI ƒaM K ÿ¢Y&žž†¢V&žƒ †RÆR `ÞQKL$žžk‚K N =½Ô‚DŽD½Õ G½Ô‚A öÁ  : ½Ôž€ ½ÔŸL ¾ƒ ¾ÇŸ{ †’ ¹¾‡y¾…9¾ƒ¾‚Ÿu  ö Á  :¾´‚Ÿw ® 0¦”‡ ¢‚C C 96¼C C " ¢…0 `Ÿj† •…𢒠C "C ¢tC I6žŒ :žŠ¾í ’M1ŠK†JÝîIÆEžVÝî ž†@ ’@Â@ -@A@Š9†8@ †8‚6 + žE -žC *ž“ /ž‘ XžŸ3½Ó¾· ª–€€ `žY½Ó¾“ Bª€€ `žR †½Ó† Ÿ Æ +†½Ó žNÆ °¦ †›ªI€€º—žž…+ KL žƒžv `Ÿp `ÆŒPAQ XYKLSDC ZžÆ A ž„ ž‡ 9žÆ 0Æ Ÿn ÆC FÆ ó= »  Ÿt ,žžˆ½×Æ ,žžƒ½×Æ™½Ì ½Ò•ƒ‘½ÜÞJÿQ»‚ŒŽŒŠŒ €€ `…ï¯û Tž½ÒÅ  ƽ×p@ †ü¾¶ʽ҂õ½Ü‚ð ½ÜÂóTB‚ñ½Üž§@L@ž|LOžÛ LmžÙLož×¾š ¦á `LžpJñRb C žŽžŸžßžÝž žžž¦ž¥ž¤ž™ž– ž•ž”žž“¾ë¾êž[ ¾çŸ} ¾Þ Ÿ} ¾Ñÿ½†»¾Æ@ƹŸwžûžõ žïr·Q†²†´†­žBLùžƒ¾ÍLø re¾ˆ‡¤Þ£žžîÞ¤žsgž3  P@™‚—b@ ž‚ž†`@ žƒ `žÚ @P `Ÿl¾¦†„¾£Þ‚ ž}ž e ž.r†yž  ¾…q†v¾‚¶tŸy  ¾½’j 6Á €šfÿ’dŸv ¾– ¾sÞ`Ÿz ¾¾fÞZÞYŸy¾a Ž[ľÁ럄½Ò C½ÔÅ ‚I †O‚H0Ÿzr(ÿ¦E `žÿ¾ ‡< Þ;žC½Ò T½ÔK@½ÕÅ½Ò M½Ô ƒ/½ÕÅ ¾½¢·‚·ûùû6I 6;û6D6Âúž†ù66 6´ø"û"ù¾¨Ÿd ¾¡ü¢œ"ý ¢˜ý96=ý96½"ý¾™Ÿq ¾’ ¢"ùø¢‰ùI6=ùI6½"ù¾Š Ÿq†‚p† 0¦|Ÿ| ¢y 0 `Ÿ{ ¾6Ÿ} †ö†÷†õªû¦ù `½× ž’ÞôÇóÅï½ÝÁóÞïÇîÞç ÂæLžƒ ž‰žo ,žž…½×ÆÛÆÜ ,Æªß¦Ý `‚ÕAƆæ†Ðù Vž †ÍIP¾÷Þ΃͆àÞ˃ʅó ÿÂÃQÁ¾Ú°‰óJ ‘ó@žˆ  ¾Ÿ} ¾ Ÿ}…óIPNÆÃ‚ÁAK óÁ¾¡K †»¾Õ‚·F ¾ý¾º IƱ¾Í ¾÷¾´Â²¾È ¾ò¾¯Â¨ N ¾Â‚¥†‘çަ¾¼ž| ¾ Ÿ}  ‚… ÁKŸzq  žž# †hÆ¿ÂcQH ¾UÂbQÃŽaA¾Í¶ŸsÂnQB¾žz ¾žx ¾¶Ÿ} @y¾§¾dÞK @ÿ¾¢¾_ÞFŸsóÕÞ?ž“ ¾™ ¾V‚;Â8ÁHÿ¾gÂK¾eI ¾˜Â3QÄ ÿ¾IIZ¾’ÅÂ@¾ZI ¾óAž= ž; ’7 6Á €š3ÿ’1Ÿw ‚ BÆK ¾. ÿIJÿQ¶ÆŸs  ½Ò %½Ô‚" ÿ½ÕŸx½Ó MŸä Lž CŸáÆÿÿM †yIPÆvÆw°ÁÆrŽÌ JÿÁÆpŠÈR7ƒÃï6ÁÆhÂiÎfQF  ÆfIPï6AÎ`Æ_½× ž…Æ\½×  ž…ÆLøžƒQÁÂSÆT‚QŽR·†Q‚O ŽM ²†MÂKR˱Jÿž|ûžž… Pý‡š ½ç‚?†>½Ò²DŽ’ ÃŽ‘Až³³6PO6P6Pž”ÿû» Š ³³â g Fžƒ Iž D½Ò½Ôû †lÞkž„½Ò ½Ôžx ½Ô²½Û³ @9¿—@¿•@? R6A W½Ô ½Ô ±ÞžCËˋJ°R>JÿKSB±ž|½ÒÅŒùø ƒB–ö†{½Ó ž–ž½Ó†v½Ó Ât’rLD¶ëLE¶êLI¶éLR¶èLW¶ç ÁÆ–å’d ,žk‚a‡%´ƒ#ü‡! ž§žœƒÅ†yƒÄ †xƒÃ†wƒ–ÌÃÀÆpQAlýÆkL= \L>ŒL:|öÆbL<ŒL=L‡± ´‚^±‚]²‚\³žQÿü  HÿÇž½í ž®’w‡˜‡œ‡š‡—‡—’q ’q†n’ožƒ žŠ½í =žÀ <žÔ >žÚ :žàÆÞbŸaÆðòôóñï» yð€‚„€€ÿþ ½Ò C½Ô 1½Ô =½Ô‚½Ü C½Ô 2½Ô =½Ô‚½Ü C½Ô 3½Ô =½Ô ‚ ½Ü M½Ô =½ÔƒT–·½Ü½ÒžHÞ& žÆ½×† =“FF“EF“C“CE ÆÇ=žƒÇ:žÇ7‚ž&ÞžÆ “5½½×Ç-žÞžÆ“,µ½×Ç& žޞƓ$½ÓQ»ß‡žÆ½×LJž?ÿ Ø66 6´ø"û"ù¾¨Ÿd ¾¡ü¢œ"ý ¢˜ý96=ý96½"ý¾™Ÿq ¾’ ¢"ùø¢‰ùI6=ùI6½"ù¾Š Ÿq†‚p† 0¦|Ÿ| ¢y 0 `Ÿ{ ¾6Ÿ} †ö†÷†õªû¦ù `½× ž’ÞôÇóÅï½ÝÁóÞïÇîÞç ÂæLžƒ ž‰žo ,žž…½×ÆÛÆÜ ,Æªß¦Ý `‚ÕAƆæ†Ðù Vž †ÍIP¾÷ÞÎ TITL BUS MONITOR DIAGNOSTIC 84-93928 * BUS MONITOR DIAGNOSTIC REV A1 * * THIS DIAGNOSTIC IS USED TO VERIFY THE PROPER OPERATION *OF THE 53718 BUS MONITOR CIRCUIT BOARD. * * ABS :80 POWER UP INT LOC. JMP *$+1 WORD DEBUG GOTO DEBUG ABS :92 RTCVEC JST *$+1 REAL-TIME CLOCK INT. VECTOR WORD RTCDON ABS  :91 RTCCNT RES 1,:FFFF ABS :8C PFLVEC JST *$+1 POWER FAIL INT. VECTOR WORD POWRDN ABS :94 CONINT JST *$+1 CONSOLE INT. VECTOR WORD CONVEC ABS :62 DMAINT JST *$+1 I/O TEST CARD DMA DONE INT. VECTOR WORD DMVEC1 ABS :AA CINVEC JST *$+1 BUS MONITOR ASSIGNED INT. VECTOR WORD COMPAR ABS :100 RBIT 5,S DISABLE RTC START JST CONFIG SEE HOW SYSTEM IS SET UP JST MCHTY SYSTEM TYPE JST DEVADD GO AND INPUT DEVICE ADDRESS JST INTST GO AND INPUT THE DESIRED TESTS  JST ERCTRL GO AND INPUT THE RESPONSE TO ERROR JMP RNDIAG LPOOL TITL * * * TABLE OF I/O INSTRUCTION WHICH REQUIRE MODIFICATION * WHEN DEVICE ADDRESS IS CHANGED * * SPACE 2 DAFRST EQU $ START OF DEVICE ADDRESS TABLE WORD DA00 WORD DA01 WORD DA02 WORD DA03 WORD DA04 WORD DA05 WORD DA06 WORD DA10 WORD DA11 WORD DA12 WORD DA13  WORD NORTC WORD DA21 WORD DA22 WORD DA23 WORD DA24 DALAST EQU $ END OF TABLE SPACE 2 * * ASK FOR DEVICE ADDRESS * SPACE 2 DEVADD ENT ASK FOR DEVICE ADDRESS IF C/R DEVICE ADDRESS IS :16 JST PROMPT PRINT DEVICE ADDRESS WORD 25 # OF BYTES OF QUERY WORD DEVICE QUERY TO PRINTED JMP DEVADD+1 UP ARROW JMP *DEVADD C/R OR # COPY INCURA,A GET CHAR. POINTER  SUB =2,A SET OPINTER TO LAST TWO VALUES COPY A,INCUR COPY =0,A SET FLAG FOR TWO COPY  A,FLGDEV CHAR. ONLY GETIT2 JST GETCHR GET A CHAR. COPY A,STDEV IS THE CHAR. IN 1-9 OR A-F AND =: F0,A CLSN =:30,A JMP HEXVAL CHAR IS 1-9 CLSN =:40,A JMP HEXVAL1 CHAR IS A-F  JMP DEVADD+1 HEXVAL EQU $ COPY STDEV,A DETERMINE IF THE CHAR IS 1-9 CSK A,=:3A JMP $+3 NOP JMP DEVADD+1 AND =:F,A YES - SAVE VALUE 1-9 IN A-REG. JMP HVAL GO DETERMINE TRUE VALUE LPOOL HEXVAL1 EQU $ COPY STDEV,A DETERMINE IS THE CHAR IS A-F CLSN =:40,A JMP  DEVADD+1 NO - TRY AGAIN CSK A,=:47 JMP $+3 NOP JMP DEVADD+1 NO - TRY AGAIN AND =:F,A YES - SET CORRECT VALUE AND STORE IN A-REG. ADD =:9,A HVAL EQU $ COPY A,DEVAD1 DETERMINE TRUE VALUE COPY FLGDEV,A OF THE HEX INPUT. JNE A,HEXVAL2 IS IT THE FIRST CHAR. RBIT 1,S YES - MOVE THE CHAR. TO THE SECOND BYTE COPY DEVAD1,A SHIFT A,LO,4 VALUE MOVED COPY A,DEVAD  STORE FIRST CHAR. COPY =1,A COPY A,FLGDEV SET FLAG FOR SECOND CHAR. JMP GETIT2 HEXVAL2 EQU $ COPY DEVAD1,A FOR SECOND CHAR PLACE IT IN THE FIRST BYTE. OR DEVAD,A CSK A,=:1F  JMP $+2 JMP DEVADD+1 * * SET UP DEVICE ADDRESS * RBIT 1,S SHIFT A,LO,3 COPY A,TEMP1 COPY =-DALAST+DAFRST,A GET NO. OF I/O'S COPY A,TEMP2 COPY DATBL,A GET TABLE ADDRESS COPY A,TEMP5 DAADO COPY *TEMP5,X GET AN I/O INSTRUCTION ADDRESS COPY =-:F9,A "AND" OUT OLD DEVICE ADDRESS AND 0(X),A OR TEMP1,A "OR" IN THE NEW DEVICE ADDRESS COPY A,0(X) REPLACE THE INSTRUCTION IMS TEMP5 BUMP PTR IMS TEMP2 AND COUNT JMP DAADO JMP *DEVADD  SPACE 2 DEVAD RES 1 DEVAD1 RES 1 DATBL WORD DAFRST PR TO DEVICE AD TABLE TEMP1 WORD 0 TEMP2 WORD 0 TEMP5 WORD 0 FLGDEV WORD 0 STDEV WORD 0 SPACE 2 INTST ENT INPUT TEST NUMBER(S) DESIRED COPY  =-40,A COPY A,CLRCNT COPY =0,A CLEAR TEST COPY =INBUF,X CLEAR COPY A,:0(X) CLEAR A BUFFER AREA ADD =1,X IMS CLRCNT JMP CLEAR COPY =RUNTBL,A COPY A,TSTPTR JST PROMPT WORD 42 WORD TNUMQY TEST NUMBER QUERY JMP START+1 JMP STATST TO STORE ALL TESTS  COPY INSTT,A GET POINTER COPY A,INCUR GETIT JST GETCHR GET THE CHARACTER THAT WAS INPUT CLSN  =:0D,A IS IT A C. RET. JMP LASTST PUT LAST ADDRESS IN TABLE CSK A,ATE IS IT > OR = TEST 8 ?  JMP BELOW SMALLER THAN ASCII 8 NOP JMP INTST+1 TRY OVER AGAIN BELOW CSK A,BEZO JMP INTST+1 TOO SMALL TRY AGAIN JMP $+2 JMP DEBUG AND EF,A AND WITH HEX :F SUB =1,A  ADD =TSTTBL,A ADD START OF TEST TABLE COPY A,TSTCNT COPY *TSTCNT,A GET TEST ADDRESS COPY A,*TSTPTR PUT ADDRESS IN WORKING TABLE IMS TSTPTR BUMP ADDRESS POINTER JMP GETIT GO BACK AND DO IT AGAIN LA STST COPY =RDIAG,A PUT ADDRESS OF RUN START COPY A,*TSTPTR JMP *INTST STATST COPY =TSTTBL,A STORE ALL TESTS COPY A,TSTCNT TEST ADDRESSES INTO THE TEST TABLE LOOPST COPY *TSTCNT,A COPY A,*TSTPTR CSK A,=RDIAG IS THE SAME ADDRESS AS START OF DIAGNOSTIC? NOP JMP $+2 SKIP OVER JMP *INTST IMS  TSTPTR IMS TSTCNT JMP LOOPST RUNTBL EQU $ RES LOCATION FOR TEST TABLE DURING RUN RES 25 TSTTBL EQU $ TEST TABLE FOLLOWS WORD TEST1A WORD TEST2A WORD TEST3 WORD TEST4 WORD TEST5 WORD TEST6 WORD TEST7 WORD RDIAG TBL VALUE TO POINT TO DIAGNOSTIC REPEAT RUNCNT RES 1 RUN TEST COUNT TSTPTR RES 1 TEST POINTER TSTCNT RES 1 TEST COUNT BEZO RES 1,:30 ATE RES 1,:38 EF RES 1,:F CLRCNT RES 1 CONFIG ENT CHECKS FOR I/O TEST CARD INSTALLED OR RTC INSTA JST ASCOUT WORD 43 WORD INTRO COPY =NORTC,A COPY A,RTC NO RTC NOW JST YESDMA SET MONITR LOOP FOR I/O TEST CARD COPY FFFF,A COPY A,CNTA COPY =0,A COPY A,WRFLAG CLEAR DMA FLAG COPY A,MODE  JST MONITR COPY EXIT,A HOW DID WE EXIT? NEG A,A GET POSITIVE VALUE CLSN =:3,A WAS IT A DMA INTERRUPT OF THE I/O TEST CARD? JMP *CONFIG JST ASCOUT SAY NO I/O TEST CARD INSTALLED WORD 30 WORD MSG0 JMP *CONFIG OPTIONS +:20 MSG0 WORD CRLF BYTE 'NO I/O TEST CARD INSTALLED' WORD CRLF OPTIONS -:20 LPOOL TITL ERCTRL ENT JST PROMPT DISPLAY ERROR RESPONSE QUERY INPUT DESIRED RESP WORD 162 WORD ERORQY JMP ERCTRL+1 GO AND REPEAT PROMPT JMP SET0 DEFAULT ENTRY COPY INSTT,A COPY A,INCUR JST GETCHR CLSN =:31,A WAS IT 1? JMP ONE CLSN =:32,A 2? JMP TWO JMP ERCTRL IF NONE OF THESE MUST BE ERROR SO ASK AGAIN ONE COPY  =ER1,A ADDRESS OF ER1 ROUTINE COPY A,ERR JMP *ERCTRL TWO COPY =ER2,A ADDRESS OF ER2 ROUTINE  COPY A,ERR JMP *ERCTRL SET0 COPY =ER0,A ADDRESS OF (CR) ROUTINE COPY A,ERR JMP *ERCTRL  LPOOL TITL CRLF EQU :0D0A OPTIONS +:20 SPACE 2 INTRO WORD CRLF WORD :0A0A SPACE A LITTLE WORD :0A0A WORD :0A0A WORD :0A0A WORD :0A0A BYTE 'BUS MONITOR DIAGNOSTIC REV A1'  WORD CRLF SPACE 2 DEVICE WORD CRLF BYTE ' DEVICE ADDRESS (:16)? ' SPACE 2 TNUMQY WORD CRLF BYTE ' TEST(S) DESIRED (1234567)? OR DEBUG(0)?' SPACE 2 ERORQY WORD CRLF BYTE 'SELECT RESPONSE ON ERROR' WORD CRLF BYTE '(CR)-RUN ALL TESTS SELECTED,CONTINUE ON ERROR' WORD CRLF BYTE '1-LOOP ON ERROR' WORD CRLF BYTE '2-JUMP TO DEBUG ON ERROR' WORD CRLF BYTE ' ENTER DESIRED RESPONSE (SELECT ONLY ONE)' SPACE 2 ERMES WORD CRLF BYTE '*** ERROR' SPACE 2 ERTEST BYTE ' TEST #' SPACE 2 ERSECT BYTE ' SECTION #'  SPACE 2 MSG410 WORD CRLF WORD CRLF BYTE 'TEST 3 WILL NOT RUN WITH A 4/10' WORD CRLF SPACE 2 OPTIONS -:20 SECT RES 1 BIT15 RES 1,:F000 ERPASS BYTE ' PASS #' ERROR ENT IN 4,A OR BIT15,A SELP A,4 JMP *ERR BRANCH TO THE ERROR HANDLING ROUTINE SELECTED ERR RES 1 ER0 NOP  (CR) ERROR ROUTINE JST PERROR GO PRINT THE ERROR JMP *ERROR ER2 JST PERROR GO TO DEBUG ON ERROR JMP DEBUG ER1 IMS ERROR GO BACK TO CALLER+2 AND LOOP FOREVER JST PERROR JMP *ERROR PERROR ENT PROGRAM PRINTS THE ERROR ON THE CRT/TTY JT SS,PERTN IF SENSE SWITCH IS SET,DONT PRINT OUT COPY =12,A COPY =ERMES,X PUT THE ADDRESS OF THE ERROR MESSAGE IN X JST OUTSHT OUTPUT ERROR MESSAGE COPY CODE,A JST HEXOUT COPY =9,A COPY =ERTEST,X PUT ADDRESS OF THE WORD TEST# IN X  JST OUTSHT PRINT"TEST NUMBER" COPY TESTNU,A JST DECOUT OUTPUT CURRENT TEST NUMBER COPY =14,A COPY =ERSECT,X PRINT"SECTION #" AND CURRENT SECTION LETTER JST OUTSHT COPY =9,A COPY =ERPASS,X PRINT "PASS #" JST OUTSHT COPY CPASS,A OUTPUT CURRENT PASS # JST DECOUT PERTN JMP *PERROR TESTNU RES 1 CURRENT TEST NUMBER CPASS RES 1 CURENT PASS NUMBER LPOOL RNDIAG NOP RBIT 5,S DISABLE RTC COPY =0,A COPY A,TP1 COPY A,TP2 COPY A,TP3 COPY A,TP4 COPY A,TP5  COPY A,TP6 COPY A,TP7 RDIAG COPY =RUNTBL,A COPY A,RUNCNT COPY A,RNCNT1 RND1 COPY *RNCNT1,A PUT NEXT ADDRESS IN POINTER COPY A,TSTPTR COPY A,TSTPR1 JMP *TSTPR1 EARTN IMS RUNCNT RTN HERE AFTER TEST RUN IMS RNCNT1 RBIT 5,S DISABLE RTC JMP RND1 PTEST ENT THIS ROUTINE PRINTS THE TEST # AND PASS # COPY TESTNU,A SELP A,4 CLEAR AND PUT TEST NUMBER TO CONSOLE  JT SS,PTRTN IF SENSE SWITCH IS SET THEN DONT PRINT OUT COPY =2,A COPY =ERMES,X USE CRLF ONLY  JST OUTSHT COPY =9,A COPY =ERTEST,X JST OUTSHT PRINT TEST# COPY TESTNU,A JST  DECOUT COPY =9,A COPY =ERPASS,X JST OUTSHT PRINT PASS COPY CPASS,A JST DECOUT GIVE PASS NUMBER PTRTN JMP *PTEST DEBUG JMP :2000 TP1 RES 1,0 PASS # FOR TEST 1 TP2 RES 1,0 PASS # FOR TEST 2 TP3 RES 1,0 PASS #FOR TEST 3 TP4 RES 1 TP5 RES 1 TP6 RES 1 TP7 RES 1 TIS3 RES 1,:03 BACK EQU :5F UP EQU :5E RNCNT1 RES 1 TSTPR1 RES 1 LPOOL * SUBROUTINE PROMPT * OUTPUTS PROMPT,THEN TAKES RESPONSE,EDITS IT AND * TAKES APPROPRIATE RETURN * CALLING SEQUENCE:JST PROMPT *  DATA WORD LENGTH IN BYTES * MESSAGE ADDRESS IN WORD * RETURN HERE FOR UP ARROW * HERE FOR CR OR # * NORMAL RETURN * * PROMPT ENT COPY =0, A JEQ A,NODFT COPY =3,A YES SET UP FOR DEFAULT ADD PROMPT,A COPY A,PROMPT JMP  *PROMPT RETURN CALL+4 NODFT COPY PROMPT,X COPY :0(X),A GET MESSAGE LENGTH COPY :1(X),X GET END MESSAGE BYTE ADDRESS JST OUTSHT OUTPUT PROMPT COPY =INBUF,A SHIFT A,LO,1 COPY A,INSTT  COPY A,INCUR COPY A,INCURA COPY A,INSFG INNXT JST IKB GET CHARACTER FROM TTY/CRT SBIT 2,S COPYB A,*INCUR RBIT 2,S CLSN =:0D,A COMPARE WITH CR JMP INDNE END OF INPUT COPY A,INSFG STORE LAST TYPED CHARACTER CLSN =BACK,A CHECK IF BACK ARROW JMP INNXT1 IMS INCUR IMS INCURA JMP INNXT JMP INNXT1 GET NEXT CHARACTER INNXT1 COPY INCUR,A DON'T BACKSPACE PAST START CSK A,INSTT JMP NODFT JMP INNXT2 JMP NODFT INNXT2 SUB =1,A COPY A,INCUR JMP INNXT INDNE COPY INSTT,A SET CURRENT PTR TO BEGINNING COPY A,INCUR COPY PROMPT,X PREPARE FOR RETURN COPY INSFG,A LOAD LAST TYPED CHARACTER CLSN =BACK,A JMP NODFT SBIT 2,S  COPYB *INCUR,A GET 1ST CHARACTER OF INPUT RBIT 2,S CLSN =UP,A UP ARROW? JMP :2(X) RETURN TO CALL+3 CLSN =:0D,A IS CR? JMP :3(X) CR RETURN CLSN ='#',A CHECK FOR MASTER DEFAULT  JMP MDEFLT JMP :4(X) MDEFLT COPY =:1,A SET MASTER DEFAULT FLAG COPY A,DEFALT JMP 3(X) DEFALT RES 1 INCUR RES 1 BYTE POINTER TO THE CURRENT BYTE IN TEXT INCURA RES 1 BYTE POINTER TO THE CURRENT BYTE INSTT RES 1 BYTE POINTER TO THE START OF INPUT TEXT INSFG RES 1 LPOOL OUTSHT ENT THIS SUB ROUTINE OUTPUTS ASCII STRINGS COPY A,OUTSH1 COPY X,OUTSH2 COPY =:0D,A JST OTT COPY =:0A,A LINE FEED JST OTT JST ASCOUT OUTSH1 RES 1 OUTSH2 RES 1 JMP *OUTSHT GETCHR ENT SBIT 2,S COPYB *INCUR,A RBIT 2,S CLSN =:0D,A JMP $+2 IMS INCUR JMP *GETCHR INBUF RES 40 * HEXOUT PRINTS A 16 BIT INTEGER AS A 4 CHARACTER * HEXADECIMAL FIELD. * LDA HEXNUM * JST HEXOUT * * HEXOUT ENT COPY =4,X HEXOT1 COPY A,TEMPHE SHIFT A,RO,8 SHIFT A,RO,4 SUB =:A,A JGE A,$+3 ADD =:BA,A JMP $+2 ADD =:41,A JST OTT COPY TEMPHE,A SHIFT A,LO,4 SUB =1,X JNE X,HEXOT1 JMP *HEXOUT TEMPHE WORD 0 * ASCOUT SUBROUTINE PRINTS ASCII CHARACTERS * CALLING SEQUENCE :JST ASCOUT * DATA LENGTH OF DATA IN BYTES * WORD ADDRESS ASCOUT ENT COPY *ASCOUT,A NEG A,A COPY A,TEMPAS IMS ASCOUT COPY *ASCOUT,X IMS ASCOUT SHIFT X,LO,1 ASCOT1 SBIT 2,S COPYB :0(X),A GET BYTE RBIT 2,S JST OTT OUTPUT ADD =1,X MOVE TO NEXT BYTE IMS TEMPAS JMP ASCOT1 JMP *ASCOUT RETURN TO CAL  LER TEMPAS WORD 0 *DECOUT PRINTS A 16 BIT INTEGER AS A 4 CHARACTER UNSIGNED DECIMAL FIELD *LDA VALUE THEN :JST DECOUT DECOUT ENT COPY A,DECVAL COPY =DECTBL,A COPY A,DECPTR COPY =-4,A COPY A,DECCNT DECOT1 COPY  DECVAL,A COPY ='0'-1,X DECOT2 SUB *DECPTR,A ADD =1,X JGE A,DECOT2 ADD *DECPTR,A  COPY A,DECVAL COPY X,A JST OTT IMS DECPTR IMS DECCNT JMP DECOT1 JMP *DECOUT DECVAL RES 1 DECCNT RES 1 DECPTR RES 1 DECTBL WORD 1000,100,10,1 OTT ENT JST SAVEX COPY  =:8612,X OUT X,DTTYDA%1;1 OUT A,DTTYDA%1 COPY =:100,X RESET CODE IN DTTYDA%1;1,A  SHIFT A,RO,5 JT OV,$-2 IN DTTYDA%1;1,A SHIFT A,RO,5 JF OV,$-2 OUT X,DTTYDA%1;1 JST RSTORX JMP *OTT LPOOL SAVEX ENT SIN 6 COPY A,SVS COPY S,A  EXCH SVS,A RBIT 8,S DISABLE INTS COPY X,SVX PUT X AWAY JMP *SAVEX RSTORX ENT  SIN 6 EXCH SVS,A SHIFT A,RO,STSHFT-1 SHIFT A,RO,1 SHIFT ONE RIGHT JF OV,$+2 SBIT 8,S ENABLE INT EXCH SVS,A GET STATUS COPY SVX,X GET X JMP *RSTORX SVS RES 1 SVX  RES 1 DTTYDA EQU :7C STSHFT EQU 9 TYLACH RES 1,0 LPOOL MODE1A RES 1,0 COM1A1 RES 1,:1111 COM1A2 RES  1,:1111 COM1A3 RES 1,:1111 CNT1A RES 1,:FFFF BLANK RES 1,:2020 AAAA RES 1,:2A2A MODE1B RES 1,0 TITL *  TEST NUMBER 1 * * THIS TEST CHECKS THE FIFO IN THE BUS MONITOR FOR PROPER * OPERATION.IF THERE IS ANY DESCREPANCY IN THE FIFO, IT WILL * OUTPUT THE FIFO TO THE CRT/TTY AND AN ASTERISK WILL APPEAR * TO THE LEFT OF THE FIFO LOCATION(S) THAT DO NOT MATCH * THE TABLE VALUES.SKIP CNT MUST BE SET TO 1,THE DEVICE * ADDRESS MUST BE SET TO :16,AND INTERUPT VECTOR TO :AA. TEST1A COPY MODE1A,A COPY A,MODE SET MODE RBIT 5,S DISABLE RTC IMS TP1 INC. PASS COPY TP1,A CSK A,PASMAX JMP CNPS1 NOP COPY =0,A COPY A,TP1 CNPS1 COPY A,CPASS SET CURRENT PASS COPY =1,A COPY A,TESTNU SET CURRENT TEST NUMBER TO "1" JST PTEST PRINT OUT TEST NUMBER,PASS NUMBER COPY COM1A1,A GET FIRST COMPARE VALUE,NOT VALID HOWEVER. COPY A,COM1 COPY COM1A2,A 2ND COMPARE VAL.(ALL TESTS STRUCTURED IN THIS M COPY A,COM2 COPY COM1A3,A 3RD COMPARE VALUE COPY A,COM3 COPY =0,A COPY A,WRFLAG CLEAR DMA WRITE FLAG SBIT 4,S COPY =:41,A LETTER A TO SECTION  COPY A,SECT IN 4,A AND F00F,A ADD =:10,A PUT 01 IN SECTION NUMBER ON CONSOLE SELP A,4 SBIT 8,S JST NODMA SET UP MONITR LOOP FOR NO IO TEST CARD DMA COPY =NORTC,A DON'T WANT RTC INT. TO OCCUR COPY A,RTC COPY CNT1A,A LOAD (-1) INTO MONITR LOOP COUNTER COPY A,CNTA ELP1A JST MONITR JST MONITR MONITOR TWICE TO MAKE SURE BUFFER IS FULL COPY EXIT,A HOW DID WE EXIT? (SEE MON  ITR SUB. FOR EXPLANATI NEG A,A CLSN =4,A JMP COREXT JMP TO CORRECT EXIT COPY =1,A  COPY A,CODE JST ERROR ERROR CODE 1 JMP EARTN TEST OVER RTN JMP ELP1A ENDLESS LOOP FOR PROGRAM 1 SECTION A COREXT JST CFIFOS GO SEE WHATS IN FIFO JST FIFOK PRINT THE BUFFER STARTING AT MEM1  JMP DMAMTR GO TO NEXT PART OF PROGRAM LPOOL CFIFOS ENT THIS SUB. OUTPUTS FIFO TO BUFFER IN MEMORY.MEM= COPY MEM1,X COPY X,MEM PUT THE COUNT INTO MEMORY COPY =-80,X COPY X,CNT DA00 IN :16*8+3,A INPUT UPPER 8 CONTROL BITS COPY A,*MEM PUT DATA IN FIRST BUFFER LOCATION IMS MEM BUMP BUFFER ADDRESS BY ONE DA01 IN :16*8+0,A COPY A,*MEM IMS MEM IMS CNT JMP $-7  JMP *CFIFOS MEM RES 1 PTR TO LOC OF FIFO STORAGE MEM1 RES 1,12500 CNT RES 1 FIFO1 RES 1,12300 TEMPX RES 1 F00F RES 1,:F00F PASMAX RES 1,10000 UPCNT RES 1 FIFOK ENT COPY MEM1,Q COPY Q,UPCNT  COPY =-160,X SEE IF BUFFER IS SAME AS FIFO COPY X,CNT COPY MEM1,X COPY X,MEM COPY FIFO1,X PUT IN X LOOPFI COPY :0(X),A LOAD WHAT SHOULD BE CSK A,*UPCNT NOP JMP ERFIF1 FINISH IMS CNT JMP RETURN JMP *FIFOK RETURN ADD =1,X IMS UPCNT JMP LOOPFI ERFIF1 JF SS,ERFIFO TOEROR COPY =2,A COPY A,CODE ERROR CODE 2 JST ERROR JMP *FIFOK DONE JMP ELP1A ERFIFO JST PFIFO JMP TOEROR PFIFO ENT PFIFO PRINTS OUT THE CONTENTS OF THE MEMORY LOC IN  4,A OR BIT15,A SELP A,4 JST ASCOUT STARTING AT MEM1.ASTERISKS APPEAR TO THE LEFT O WORD 2 NOT CORRESPONDING TO THE TABLE VALUE AT FIFO1 WORD ERMES JUST CRLF COPY =-80,X COPY X,CNT  COPY MEM1,X MEM1 MUST BE EVEN COPY X,MEM COPY MEM1,Q COPY Q,UPCNT COPY FIFO1,X FIFO1 MUST BE EVEN LOOERF COPY :0(X),A LOAD WHAT IT SHOULD BE NOP CSK A,*UPCNT NOP JMP OUTPUT BLANKY COPY BLANK,A OUTPUT BLANK JST OTT CHROUT COPY *UPCNT,A COPY X,TEMPX SAVE X REGISTER  JST HEXOUT COPY TEMPX,X RESTORE X REG. COPY X,A ROTATE A,RO,1 JT OV,NEXT1 JUMP IF OV SET WHICH MEANS ODD ADD =1,X IMS UPCNT IMS MEM USED IF MEM HAS STORED BUFFER COPY  :0(X),A CSK A,*UPCNT IS THE WORD IN THE FIFO THE SAME AS IN THE TABL NOP JMP OUTPUT IF NOT,PUT AN ASTERISK BEFORE IT IS PRINTED JMP BLANKY IF THE SAME THEN JUST BUT A BLANK NEXT1 IMS MEM ADD =1,X  IMS UPCNT IMS CNT JMP LOOERF JMP *PFIFO OUTPUT COPY AAAA,A :AA IS ASTERISK JST OTT JMP CHROUT DMAMTR COPY =:42,A TEST1 SECTION B (I/O TEST CARD ONLY) COPY A,SECT IN 4,A AND F00F,A ADD =:20,A ADD 2 TO CONSOLE SECTION # SELP A,4 JST YESDMA SET UP BU  S MONITR LOOP FOR I/O TEST CARD DMA COPY =ENINTS,A COPY A,RTC COPY FFFF,A COPY A,CNTA ELP1B  RBIT 5,S DISABLE RTC SBIT 8,S ENABLE INTS. JST MONITR RBIT 5,S DISABLE RTC SBIT 8,S ENABLE INTS JST MONITR COPY =-3,A CSK A,EXIT JMP ERDMT2 EXIT 1,2 ERROR CODE 1 JMP EARTN EXIT 4 NOP JST CFIFOS JST SURCH ERDMT2 COPY =1,A ERROR CODE 1  COPY A,CODE JST ERROR JMP EARTN JMP ELP1B LOOP ERDMT3 COPY =2,A COPY A,CODE  JST ERROR WITH ERROR CODE 2 JMP EARTN GO HOME JMP ELP1B LOOP ERDMT4 COPY =3,A ERROR CODE 3 COPY A,CODE JST ERROR JMP EARTN JMP ELP1B LOOP LPOOL ABS  :500 MONITR ENT MONITOR LOOP FOR ALL TESTS SBIT 4,S RBIT 5,S DISABLE RTC JMP *RTC YESRTC SBIT 5,S ENABLE RTC NORTC SELP A,:16*8+4 :16,4 INITIALIZE BUS MONITOR COPY =:10,X COPY CNTA,A LOAD LOOP COUNT COPY A,TEMCNT COPY =0,A COPY A,WRFLAG CLEAR DMA WRITE FLAG COPY COM1,A DA10 OUT A,:16*8+1 SET COMPARE REG 1 COPY COM2,A DA11 OUT A,:16*8+2 SET COMPARE REG 2 COPY COM3,A DA12 OUT A,:16*8+3 SET COMPARE REG 3 COPY MODE,A DA13 OUT A,:16*8+4 SET MODE REG DA21 SELP A,:16*8+0 :16,0 START TO MONITOR COPY :0(X),A SHIFT X,LO,1 WALK ADDRESS BITS JNE X,$-2 LOOP TO CHECK ALL ADDRESS BITS INLOOP SBIT 2,S WORD :8012 BYTE INSTRUCTION NOP NOP WORD :8013 SLB RBIT 2,S COPY A,*ADDPTR COPY DMADDW,A LOAD DMA WRITE ADDRESS DMA1 OUT A,:C*8+1 OUTPUT TO I/O TEST CARD COPY DATDMA,A LD DMA DATA DMA2 OUT A,:15*8+0 OUTPUT TO I/O TEST CARD COPY CTRLW,A LOAD CONTROL WORD DMA3 OUT A,:C*8+2 STORE CONTROL WORD DMA4 SELP A,:C*8+2 :C,2 DO DMA WRITE SBIT 8,S ENABLE INTS AFTER FIRST TIME THROUGH IMS TEMCNT DECREMENT CNTA IN BUFFER TEMCNT JMP INLOOP DA22 SELP A,:16*8+1 :16,1 STOP MONITORING COPY =-4,A EXIT 4 IS FALL THROUGH COPY A,EXIT COPY A,ADDRES PUT INTO COMPARE ADDRESS JMP *MONITR GO BACK TO CALLING CODE DMARD COPY WRFLAG,A CHECK AND CHANGE TO SAY BEEN HERE COPY =-1,A SET TO MINUS ONE COPY A,WRFLAG PUT BACK TO WRITE FLAG COPY DMADDR,A LD DMA ADDRESS OUT A,:C*8+1  NOP NOP COPY CTRLR,A LD CONTROL WD (READ) OUT A,:C*8+2 OUTPUT SELP A,:C*8+2 :C,2 DO DMA READ SBIT 8,S ENABLE INTERUPTS COPY A,CODE JST ERROR PUT :FFFF INTO ERROR CODE AND GOTO ERROR ROUTIN JMP *MONITR GO HOME HLT NOP NOP NOP NOP NOP NOP COMPAR ENT ENTER WHEN BUS MON. COMPARE RBIT 8,S RBIT 2,S COPY =-1,A COPY A,EXIT EXIT 1 IS COMPARE OCCURED SELP A,:B*8+6 DISABLE I/O TEST CARD INTERRUPT NOP JMP *MONITR RTCDON ENT   WHEN RTC OCCURS RBIT 2,S COPY RTCDON,A LD ADDRES WHERE RTC CAME COPY A,ADDRES COPY =-2,A COPY A,EXIT DA23 SELP A,:16*8+1 STOP MONITORING JMP CLEAN CLEAN1 RBIT 5,S DISABLE RTC JMP *MONITR GO BACK HOME IOTSTR RBIT 2,S NOP NOP COPY =-3,A COPY A,EXIT DA24 SELP A,:16*8+1 :16,1 STOP MONITOR JMP *MONITR DMAVEC IMS WRFLAG JMP DMARD JMP IOTSTR IF ALREADY DONE DMA WRITE THEN GO TO IOTSTR CONVEC ENT CONSOLE INT. ROUTINE RBIT 2,S NOP OUT A,1 JT SS,$+2 IF SENSE SET GOTO DEBUG JMP START IF NOT START PROGRAM OVER JMP DEBUG ADDRES RES 1 RTC,BUS MON.,COMPARE ADDRESS CODE RES 1 ERROR CODE # DMADDW RES 1,:7000 DMA WRITE ADDRESS CTRLR RES 1,5 CONTROL WORD READ CTRLW RES 1,1 WRITE CONTROL WORD DATDMA RES 1,:55B DMA DATA FFFF RES 1,:FFFF EEEE RES 1,:EEEE DMADDR RES 1,:5151 BYTE RES 1,:FFFF ADDPTR RES 1,:7FFF WRFLAG RES 1,0 CNTA RES 1 MONITOR LOOP COUNT TEMCNT RES  1 TEMPORARY COUNTER COM1 RES 1 COMPARE REG. 1 COM2 RES 1 2 COM3 RES 1 3 MODE RES 1 MODE VALUE DMAERR RES  1 * EXIT FROM MONITR LOOP * -1 BUS MONITOR COMPARE AND INTERRUPT * -2 RTC INT. * -3 I/O TEST CARD DMA DONE INTERRUPT * -4 NO INTERRUPTS,MONITR TIMED OUT EXIT RES 1 DMA RES 1 RTC RES 1 LPOOL CLEAN COPY =-1,A  COPY A,RTCCNT JMP CLEAN1 GO BACK INTO ROUTINE DMVEC1 ENT SELP A,:B*8+6 RESET I/O TEST CARD INTERRUPT JMP DMAVEC NODMA ENT COPY =0,A COPY A,DMA1 COPY A,DMA2 COPY A,DMA3 COPY A,DMA4 PUT NOPS IN DMA INSTRUCTIONS JMP *NODMA YESDMA ENT PUT I/O TST CRD INST. IN MONITR LOOP  COPY TBLA,A COPY A,DMA1 COPY TBLB,A COPY A,DMA2 COPY TBLC,A COPY A,DMA3  COPY TBLD,A COPY A,DMA4 JMP *YESDMA TBLA RES 1,:0261 TBLB RES 1,:02A8 TBLC RES 1,:0262 TBLD RES 1,:0462 POWRDN ENT SIN 1 HLT POWER DOWN ROUTINE TITL SPACE 1 SURCH ENT  COPY =12500,X SCHR COPY 0(X),A CLSN =1,A LOOK FOR STOP BIT IN 160 ADDRESS LOCATIONS JMP INTUR IF STOP BIT FOUND GO LOOK FOR INTERRUP BIT ADD =2,X CSM X,=12660 JMP SCHR NOP  JMP ERDMT3 INTUR EQU $ ADD =2,X CSM X,=12660 JMP $+2 JMP ERDMT4 COPY 0(X),A CLSN =:18,A JMP EARTN JMP INTUR SPACE 2 MCHTY ENT FMT A  CLSN =3,A JMP P410 CLSN =0,A IS IT A 4/10 SYSTEM JMP P410 JMP *MCHTY  NO TEST SYSTEM AS A 4/30, 4/90 . P410 EQU $ COPY =1,A COPY A,FL410 SET 4/10 FLAG COPY  =12130,A COPY A,FIFO1 SET TABLE PTR TO 4/10 TABLE COPY =P1410,X COPY =:7FFF,A COPY A,3(X)  JMP *MCHTY SPACE 2 FL410 WORD 0 LPOOL OPTIONS +:20 TITL ABS :2F62 TABLE IN  MEM OF WHAT FIFO SHOULD BE (4/10) WORD :8,:524,:8,:525,:8,:526,:8,:572 WORD :0,:572,:8,:528,:8,:10,:8,:515 WORD :8,:516,:8,:514,:8,:20,:8,:515 WORD :8,:516,:8,:514,:8,:40,:8,:515 WORD :8,:516,:8,:514,:8,:80,:8,:515 WORD :8,:516,:8,:514,:8,:100,:8,:515 WORD :8,:516,:8,:514,:8,:200,:8,:515 WORD :8,:516,:8,:514,:8,:400,:8,:515 WORD :8,:516,:8,:514,:8,:800,:8,:515 WORD :8,:516,:8,:514,:8,:1000,:8,:515  WORD :8,:516,:8,:514,:8,:2000,:8,:515 WORD :8,:516,:8,:514,:8,:4000,:8,:515 WORD :8,:516,:8,:514,:8,:8000,:8,:515 WORD :8,:516,:8,:517,:8,:518,:C,:009 WORD :8,:519,:8,:51A,:8,:51B,:E,:009 WORD  :8,:51C,:8,:51D,:8,:56F,:8,:7FFF WORD :0,:7FFF,:8,:51E,:8,:567,:8,:51F WORD :8,:520,:8,:56A,:8,:521,:8,:522 WORD :8,:569,:8,:523,:8,:524,:8,:525 WORD :8,:526,:8,:572,:0,:572,:8,:528 TITL ABS :300C TABLE IN MEM OF WHAT FIFO SHOULD BE (4-30 & 4-90) WORD :8,:523,:8,:524,:8,:525,:8,:526 WORD :8,:572,:0,:572,:8,:528,:8,:10 WORD :8,:515,:8,:516,:8,:514,:8,:20 WORD :8,:515,:8,:516,:8,:514,:8,:40 WORD :8,:515,:8,:516,:8,:514,:8,:80 WORD :8,:515,:8,:516,:8,:514,:8,:100 WORD :8,:515,:8,:516,:8,:514,:8,:200 WORD  :8,:515,:8,:516,:8,:514,:8,:400 WORD :8,:515,:8,:516,:8,:514,:8,:800 WORD :8,:515,:8,:516,:8,:514,:8,:1000  WORD :8,:515,:8,:516,:8,:514,:8,:2000 WORD :8,:515,:8,:516,:8,:514,:8,:4000 WORD :8,:515,:8,:516,:8,:514,:8,:8000 WORD :8,:515,:8,:516,:8,:517,:8,:518 WORD :C,:009,:8,:519,:8,:51A,:8,:51B WORD :E,:9,:8,:51C,:8,:51D,:8,:56F WORD :0,:7FFF,:8,:51E,:8,:567,:8,:51F WORD :8,:520,:8,:56A,:8,:521,:8,:522 WORD :8,:569,:8,:523,:8,:524,:8,:525 WORD :8,:526,:8,:572,:0,:572,:8,:528 OPTIONS -:20 TITL ABS :5F0 * * IKB,INPUT A CHARACTER FROM THE TELETYPE * IKB ENT JST SAVEX COPY =:8618,A START ECHO NO INT. OUT A,DTTYDA%1;1 COPY =:100,X RESET CODE IN DTTYDA%1;1,A SHIFT A,RO,4 DATA READY TO OV JF OV,$-2 IN DTTYDA%1,A AND =:7F,A OUT X,DTTYDA%1;1 JST RSTORX JMP *IKB  LPOOL * TEST 2 * * THIS TEST IS USED TO TEST THE BUS MONITOR FOR * PROPER OPERATION FOR ALL MODE SETTINGS.THIS * CHECKS FOR PROPER INT. OPERATION,COMPARE ON * C1,C2,C3 AND BOUNDARIES INSIDE AND OUTSIDE * THEIR VALUES.SECTIONS A-W CHECK FOR ALL * NON DMA READ AND WRITE,WHILE SECTIONS X-Z * CHECK PROPER OPERATION FOR DMA READ AND * WRITE OPERATIONS.THESE LAST THREE SECTIONS * (X,Y,Z) DO NOT RUN IF AN I/O TEST CARD IS * NOT INSTALLED. NO ERRORS WILL RESULT,THESE * SECTIONS JUST WILL NOT RUN. * TEST2A COPY =:40,A HEX C0=ASCII A - 1 COPY A,SECT RBIT 5,S DISABLE RTC IMS TP2 COPY TP2,A CSK A,PASMAX JMP CNPS2 NOP COPY =0,A COPY A,TP2 CNPS2 COPY A,CPASS COPY  =2,A COPY A,TESTNU JST PTEST SBIT 4,S ENABLE CONSOLE INTERUPTS SBIT 8,S ENABL E ALL INTERUPTS COPY =MODEST,X POINTER TO START OF MODE TABLE COPY X,MODETB STORE AS TABLE PTR COPY =-24,A 24-1 FOR 23 SECTIONS COPY A,CNT2 LOOP2A IMS CNT2 JMP LOOP2B JMP TEST2X LOOP2B COPY MODETB,X COPY 0(X),A COPY A,MODE COPY 23(X),A COPY A,HOLDIT TEMP STORAGE FOR CURRENT TABLE VALUE JST GETCOM GET CODED COMPARE REG. VALUES COPY A,COM1 COPY 23(X),A JST GETCOM  COPY A,COM2 COPY 23(X),A JST GETCOM COPY A,COM3 COPY HOLDIT,A RETURN VALUE COPY A,23(X) COPY 46(X),A COPY A,CADDRS SAVE WHERE SHOULD COMPARE IMS MODETB IMS SECT  BUMP SECTION LETTER IN 4,A GET TEST DISPLAY ON CONSOLE ADD =:10,A ADD 1 TO SECTION NUMBER SELP A,4 PUT NEW VALUE BACK TO DISPLAY JST NODMA NO DMA COPY =ENINTS,A PUT INTERRUPTS ENABLED  COPY A,RTC COPY CNT2A,A COPY A,CNTA JST MONITR JST MONITR JST CFIFOS  COPY =-2,A CSK A,EXIT NOP JMP CONTIN COPY =1,A ERROR CODE 1 COPY A,CODE  JST ERROR JMP LOOP2A ENDLESS LOOP RESTOR RBIT 8,S RESTORE AS BEFORE LAST SECTION RUN COPY SECT,A SUB =1,A PUT BACK TO OLD SECTION NUMBER COPY A,SECT RETURN SECTION NUMBER IN 4,A  GET SECTION FROM CONSOLE SUB =:10,A PUT BACK TO OLD VALUE SELP A,4 RESTORE CONSOLE DATA REG.  COPY MODETB,A SUB =1,A DECREMENT TO OLD VALUE COPY A,MODETB RESTORE CONTENTS JMP LOOP2B GO BACK AND LOOP ENDLESSLY CONTIN COPY :3173,A GET ADDRESS WHERE COMPARE OCCURED CSK A,CADDRS COMPARE WITH TABLE VALUE NOP JMP ERROR2 JMP LOOP2A ERROR2 COPY =2,A ERROR CODE 2 COPY A,CODE ERROR CODE 2 JST ERROR JMP LOOP2A JMP RESTOR GOTO ENDLESS LOOP GETCOM ENT COPY A,HOLD2A  ROTATE A,RO,3 THIS ROUTINE FINDS THE COMPARE LOCATION COPY A,23(X) FROM AN ENCODED TABLE PTR COPY HOLD2A,A AND SEVEN,A AND :7 ADD =COMST,A ADD TABLE START COPY A,COMPST COPY *COMPST,A GET VALUE JMP *GETCOM RTN WITH VALUE IN A CNT2 RES 1 CNT2A RES 1,:FFFE HOLDIT RES 1 HOLD2A RES 1 SEVEN RES 1,:7 CADDRS RES 1 COMPARE ADDRESS * THE FOLLOWING IS A TABLE OF COMPARE ADDRESES * THE VALUE AT COMST IS CODED IN THE COMPARE * REGISTERS WORD AS 0 AND THE LAST VALUE IS * CODED AS 7 (111).THE 3 BIT REPRESENTATION * OF THESE VALUES ARE CODED INTO THREE (3) * THREE BIT FIELDS (LSB) INTO ONE * WORD ./XXXX/XXXC/CCBB/BAAA * AAA = 0 TO 7 REPRESENTING COMPARE REG. 1 * BBB = 0 TO 7 " " " 2 * CCC = 0 TO 7 " " " 3 * XXX = DON'T CARE * THIS WORD THAT IS CODED IS FOUND IN THE * ENCODED COMPARE ADDRESS TABLE,AND THERE IS * ONE VALUE FOR EACH OF THE 23 SECTIONS IN * TEST 2 (A-W) (X-Z DO NOT USE THIS SCHEME). * FOR EACH TEST SECTION THIS WORD IS DECODED * AND THE APPROPRIATE ADDRESS VALUE IS OBTAINED * BY THE  SUBROUTINE GETCOM. COMST RES 1,:515 WORD :572,:40,:100,:400,:1000,:7FFF,:4511 COMPST RES 1 MODETB RES 1  LPOOL OPTIONS +:20 MODEST RES 1,:412 WORD :412,:421,:422,:442,:441,:431,:431,:462,:462 WORD :451,:472,:472,:472,:481,:482,:481,:482,:4C2 WORD :501,:502,:501,:541 SPACE 2 * ENCODED COMPARE ADDRESS TABLE * XXXX/XXXC/CCBB/BAAA WORD :9C,:9F,:135,:135,:158,:158,:31,:E WORD :116,:A6,:76,:11A,:113,:A3,:8E,:163 WORD  :30,:31,:B1,:1F1,:1CE,:10D,:70 SPACE 2 * COMPARE ADDRESSES * * THE FOLLOWING TABLE IS THE RESULTING COMPARE * ADDRESS FOR TEST2 SECTIONS A-W BASED ON THE * PREASSIGNED COMPARE REGISTER VALUES AND MODES. P1410 WORD :400,:528,:7FFF,:528,:1000,:528 WORD :7FFF,:7FFF,:40,:40,:7FFF,:40,:40,:40 WORD :528,:200,:572,:800,:40,:528,:10 WORD :7FFF,:572 SPACE 2 OPTIONS -:20 TEST2X COPY =:58,A COPY A,SECT PUT "X" IN SECTION # RBIT 5,S DISABLE RTC IN 4,A AND F00F,A OR ONE8,A SELP A,4 COPY COM2X1,A LOAD COMPARE REG. VALUES COPY A,COM1 COPY COM2X2,A COPY A,COM2 COPY COM2X3,A COPY A,COM3 COPY MODE1X,A COPY A,MODE JST YESDMA DO DMA TRANSFER COPY =ENINTS,A COPY A,RTC COPY CNT2A,A COPY A,CNTA COPY =0,A COPY A,WRFLAG CLEAR DMA WRITE FLAG RTN2X SBIT 8,S ENABLE INTS JST MONITR JST MONITR JST CFIFOS COPY EXIT,A NEG A,A CLSN =4,A  IS IT EXIT 4? JMP EARTN IF NO DMA THEN SKIP REST OF TEST CLSN =1,A DID IT ACHEIVE A COMPARE?  JMP CHECKX IF IT DID THEN SEE IF AT RIGHT PLACE COPY =1,A COPY A,CODE JST ERROR IF NO COMPARE THEN ERROR JMP TEST2Y GO TO NEXT TEST JMP RTN2X GOTO ENDLESS LOOP TEST2Y COPY =:59,A COPY A,SECT IN 4,A AND F00F,A OR ONE8,A ADD =:10,A ADD ONE TO SECTION ON CONSOLE  SELP A,4 COPY MODE1Y,A COPY A,MODE COPY =0,A COPY A,WRFLAG CLEAR DMA WRITE FLAG RTN2Y SBIT 8,S ENABLE INTS. JST MONITR JST MONITR JST CFIFOS COPY EXIT,A NEG  A,A CLSN =1,A JMP CHECKY COPY =1,A IF NO COMPARE THEN ERROR CODE 1 COPY A,CODE  JST ERROR JMP TEST2Z JMP RTN2Y LOOP IN ENDLESS LOOP CHECKX COPY :3173,A LDA WITH ADDRESS AT COMPARE CSK A,CADRSX IS THE SAME? NOP JMP ERRX1 JMP TEST2Y ERRX1 COPY =2,A IF NOT THE SAME THEN ERROR CODE 2 COPY A,CODE JST ERROR JMP TEST2Y JMP RTN2X ENDLESS LOOP AGAIN CHECKY COPY :3173,A LDA WITH ADDRESS AT COMPARE CSK A,CADRSY IS THE SAME? NOP JMP ERRY1 NOT SAME SO ERROR JMP TEST2Z OK SO NEXT SECTION ERRY1 COPY =2,A IF NOT SAME THEN ERROR CODE 2 COPY A,CODE JST ERROR JMP TEST2Z JMP RTN2Y ENDLESS LOOP NOP NOP TEST2Z COPY =:5A,A   COPY A,SECT IN 4,A AND F00F,A OR ONE8,A ADD =:20,A SELP A,4 COPY MODE1Z,A COPY A,MODE COPY =0,A COPY A,WRFLAG CLEAR DMA WRITE FLAG RTN2Z JST MONITR COPY EXIT,A NEG A,A CLSN =3,A IS IT A DMA EXIT JMP EARTN TEST OK BACK TO START COPY =1,A COPY A,CODE JST ERROR JMP EARTN JMP RTN2Z ENDLESS LOOP ENINTS SBIT 8,S  JMP NORTC COM2X1 RES 1,:7000 COM2X2 RES 1,:5151 COM2X3 RES 1,:570 MODE1X RES 1,:418 MODE1Y RES 1,:428 MODE1Z RES 1,:448 CADRSX RES 1,:7000 CADRSY RES 1,:5151 ONE8 RES 1,:0180 LPOOL TEST5 COPY =:40,A TEST 5 CHECKS SKIP COUNT OPERATION COPY A,SECT SBIT 4,S SBIT 8,S IMS TP5 BUMP PASS # COPY TP5,A LD CURRENT PASS # COPY A,CPASS COPY =5,A GET TEST NUMBER COPY A,TESTNU JST PTEST PRINT TEST NUMBER 5 COPY =1,A COPY A,SKPCNT PUT 1 IN SKIP COUNTER COPY MODE3A,A  COPY A,MODE SET MODE VALUE COPY =-1,A COPY A,CNTA COPY COM3A1,A SET COMPARE REGISTER VALUES  COPY A,COM1 COPY COM3A2,A COPY A,COM2 COPY COM3A3,A COPY A,COM3 COPY =NORTC,A COPY A,RTC JST NODMA NO DMA TRANSFER JST MONITR LOOP3A IMS SECT IN 4,A ADD =:10,A BUMP SECTION NUMBER ON CONSOLE SELP A,4 COPY SKPCNT,A SBIT 1,S ROTATE A,LO,1  ADD 1 BIT AND SHIFT LEFT (1,3,7,15) CLSN =:1F,A 1F MEANS TEST DONE JMP RESKP HAVE OPERATOR RESET SKIP COUNT TO 1 COPY A,SKPCNT SKPCNT IS LOCATED IN BETWEEN MESSAGES IN PROMPT JST SASCNT OVER3A JST PROMPT  PRINT MESSAGE ABOUT SKIP COUNT WORD 68 WORD SCMSG WHERE PROMPT MESSAGE IS JMP OVER3A NOP  JST MONITR JST MONITR DO TWICE TO MAKE SURE FIFO FULL FACTSC COPY =-3,A THIS FINDS THE ACTUAL SKIP COUNT CSK A,EXIT JMP ERR3A NOP DA02 IN :16*8+0,A BUMP THE FIFO ADDRESS 1 DA03 IN :16*8+0,A GET REAL RESULTS COPY FL410,X JEQ X,P430 COPY =-14,X COPY X,CNT3A COPY =SKPTBL1,X JMP LOOPSC-1 P430 COPY =-15,X COPY X,CNT3A COPY =SKPTBL,X LDX WITH ADDRES OF TABLE -1 SUB =1,X LOOPSC ADD =1,X LOOP SKIP COUNT CSK A,0(X) NOP JMP CONT3A DID NOT FIND SKP CNT THIS TIME JMP DONE3A FOUND SKIP COUNT CONT3A IMS CNT3A JMP LOOPSC COPY =20,A SKIP COUNT NOT FOUND AT ALL COPY A,CODE ERROR CODE 20 JST ERROR JMP LOOP3A JMP RTN3 ERR3A COPY =21,A INCORRECT EXIT FROM MONITR LOOP COPY A,CODE ERROR CODE 21 JST ERROR JMP LOOP3A JMP RTN3 DONE3A COPY =16,A SEE IF SKIP COUNT IS CORRECT ADD CNT3A,A CSK A,SKPCNT NOP JMP NOTEQL JMP LOOP3A NOTEQL CSK A,EQMX JMP NOTEQ1 NOP ADD =:6,A NOTEQ1 COP Y A,CODE JST ERROR ERROR CODE DETERMINED BY VALUE JMP LOOP3A GO AGAIN EQMX RES 1,:A RTN3 COPY SKPCNT,A RESTORE FOR LOOP ON ERROR SHIFT A,RO,1 COPY A,SKPCNT COPY SECT,A SUB =1,A  COPY A,SECT IN 4,A SUB =:10,A SELP A,4 RESTORE TO PREVIOUS VALUE AND LOOP JMP  LOOP3A RESKP COPY =1,A RESTORE SKIP CNT TO 1 COPY A,SKPCNT JST SASCNT JST PROMPT PRINT REQUEST WORD 68 WORD SCMSG NOP NOP JMP EARTN LPOOL TITL * TABLE OF SKIP ADDRESSES * THIS TABLE CONSISTS OF VALUES WHICH ARE * TO BE FOUND IN A UNIQUE SPOT IN THE FIFO * THE VALUE DEPENDING ON THE SETTING OF THE SKIP * SWITCH ON THE BUS MONITOR.ALTHOUGH * EVEN SKIP COUNTS ARE NOT SUPPORTED,THEY ARE * IN THE LIST FOR REFERENCE. * THE FIRST VALUE :524 AT SKPTBL IS * THE VALUE CORRESPONDING TO SKIP 1,THE NEXT TO * SKIP 2,3,4,5,6,7,8,9,10,11,12,13,14,AND15. SKPTBL RES 1,:524 WORD :523 WORD :569 WORD :522 WORD :521 WORD :56A WORD :520 WORD :51F WORD :567 WORD :51E WORD :7FFF WORD :56F WORD :51D WORD :51C WORD :9 TITL * TABLE OF SKIP ADDRESSES FOR 4/10 * SKPTBL1 RES 1,:524 WORD :523 WORD :569 WORD :522 WORD :521 WORD :56A WORD :520 WORD :51F WORD :567  WORD :51E WORD :7FFF WORD :7FFF WORD :56F WORD :51D WORD :51C TITL SKPCNT RES 1 ADD3 RES 1 LPOOL OPTIONS +:20 SCMSG WORD CRLF BYTE 'CHANGE SKIP SWITCH (SW1-6,7,8) FOR SKIP' ASCNUM RES 1 WORD CRLF BYTE ' HIT RETURN WHEN READY' OPTIONS -:20 SASCNT ENT  STORES ASCII SKIP CNT,A MUST EQU SKIP CNT IN HE CLSN =:B,A (11)? COPY B101,A CLSN =:D,A (13)? COPY B103,A CLSN =:F,A (15)? COPY B105,A ADD B0B0,A MAKE ASCII COPY A,ASCNUM STORE INTO VALUE JMP *SASCNT TITL * TEST 4 * * THIS TEST CHECKS THE PROPER OPERATION OF THE * INTERRUPT CIRCUITRY TO IDENTIFY THE CORRECT * VECTOR LOCATION.THE OPERATOR IS INSTRUCTED TO * CHANGE THE VECTOR SWITCH TO :00,:55,AND THEN * BACK TO :AA.IF INCORRECT INT VECTOR,WILL BE * RETURNED IN THE ERROR CODE (IN DECIMAL FORM) * THE ACTUAL LOCATION OF THE INT VECTOR. TEST4 COPY =:40,A SECTION A COPY A,SECT SBIT 4,S SBIT 8,S COPY =4,A COPY A,TESTNU PUT 4 IN TEST NUMBER IMS TP4 COPY TP4,A COPY A,CPASS UPDATE CURRENT PASS JST PTEST PRINT TEST AND PASS NUMBER COPY SMALL,A SMALL IS SMALL VAL FOR COUNT COPY A,CNTA COPY =NORTC,A COPY A,RTC JST NODMA NO DMA COPY MODE3B,A SET MODE COPY A,MODE COPY COM3B1,A SET COMPARE VALUE COPY A,COM1 COPY COM3B2,A COPY A,COM2 COPY COM3B3,A COPY A,COM3 COPY =0,A COPY A,WRFLAG CLEAR DMA WRITE FLAG CONT3B COPY A,INVEC START INTERUPT AT INVEC JST   CINVTA CONVERT VECTOR ADDRESS TO ASCII OVER3B IN 4,A ADD =:10,A SELP A,4 IMS SECT LOOP4A JST PROMPT WORD 67 WORD T3BMSG TEST 3B MESSAGE JMP OVER3B NOP JST TFRMTM PUT IMS INST. IN PAGE 0 WORD 0 AND SAVE PAGE 0 IN RAM BUFFER WORD BPAGE0 WORD 256 JST MONITR  JST FINTVC FIND WHERE INTERUPT OCCURED,RETURN,LOC IN A JST TFRMTM RESTORE PAGE 0 WORD BPAGE0  WORD 0 WORD 256 COPY INTVEC,A CSK A,INVEC NOP JMP $+2 JMP TST55  COPY A,CODE PUT VALUE OF VECTOR IN ERROR CODE JST ERROR JMP TST55 COPY INVEC,A JMP LOOP4A TFRMTM ENT TRANSFER MEMORY PUT IMS INSTRUCTIO IN SOURCE NOP COPY *TFRMTM,A COPY  A,SOURCE PTR IMS TFRMTM COPY *TFRMTM,A COPY A,DESTIN PTR IMS TFRMTM COPY *TFRMTM,X X =WD COUNT IMS TFRMTM LOOP3B COPY *SOURCE,A LOAD SOURCE COPY A,*DESTIN COPY DE00,A COPY A,*SOURCE IMS INSTRUCTION AT EACH MEM LOC IMS SOURCE IMS DESTIN SUB =1,X JNE X,LOOP3B JMP *TFRMTM FINTVC ENT FIND INTERRUPT VECTOR COPY =:0,X THIS ROUTINE SCANS PAGE0 LOOKING FOR LOOP3 COPY 0(X),A FOR IMS INSTRUCTION +1 CSK A,DE00 NOP JMP FNDVEC CLSN =:FF,X  IS AT TOP OF PAGE ZERO? JMP INTNFD GOTO INTERRUPT NOT FOUND ADD =1,X JMP LOOP3 FNDVEC NOP  FOUND INT. VECTOR COPY X,INTVEC A HAS ADDRESS WHERE THINGS OCCURED JMP *FINTVC INTNFD COPY FFF,A INTERRUPT NOT FOUND COPY A,INTVEC JMP *FINTVC TST55 COPY INVEC,A ADD =:55,A CLSN =:FF,A JMP EARTN JMP CONT3B CINVTA ENT CONVER INTERUPT VECTOR TO ASCII CLSN =:55,A FOR PRINTING COPY B505,A CLSN =:AA,A COPY B111,A ADD B0B0,A COPY A,VECNUM JMP *CINVTA SOURCE RES 1 DESTIN RES 1 LPOOL OPTIONS +:20 T3BMSG WORD CRLF BYTE 'CHANGE INTERRUPT VECTOR SWITCH (SW2) TO ' VECNUM RES 1 WORD CRLF BYTE 'HIT RETURN WHEN READY' OPTIONS -:20 TITL * TEST 3 * * THIS TEST CHECKS TO SEE IF THE EXTERNAL INPUTS * EX0,EX1,EX2 ARE FUNCTIONING PROPERLY. THIS IS * DONE BY CONNECTING THE SYNC OUTPUTS DIRECTLY * BACK INTO THE EXTERNAL INPUTS.WHEN A VALID * COMPARE OCCURS,AT ADDRESS LOCATION 0,THE SYNC * OUTPUT CAUSES A ONE TO BE RECORDED ON THE EXTERNAL * INPUTS.THESE ARE CHECKED ONE AT A TIME ,IN * SECTIONS A,B AND C. * ** NOTE : TEST 3 WILL NOT RUN WITH A 4/10 SPACE 2 TEST3 COPY FL410,A JEQ A,TEST3A JST ASCOUT DOES SYSTEM HAVE A 4/10 WORD 37 WORD MSG410 JMP EARTN YES PRINT MESSAGE AND EXIT TEST TEST3A COPY =:41,A NO RUN TEST COPY A,SECT SBIT 4,S SBIT 8,S IMS TP3 BUMP SECTION COPY TP3,A CSK A,PASMAX  JMP CNPS3 NOP COPY =0,A COPY A,TP3 CNPS3 COPY A,CPASS COPY =3,A SET CURRENT TE ST NUMBER TO 3 COPY A,TESTNU JST PTEST IN 4,A AND F00F,A ADD =:10,A SELP A,4 COPY MODE3C,A COPY A,MODE COPY COM3C1,A COPY A,COM1 COPY COM3C2,A COPY A,COM2 COPY COM3C3,A COPY A,COM3 COPY SMALL,A COPY A,CNTA JST NODMA NO DMA COPY =NORTC,A COPY A,RTC COPY =0,A COPY A,WRFLAG CLEAR DMA WRITE FLAG COPY =1,A  1 IN COMPARE VAL,NOCOMPARE,NO SYNC COPY A,COM2 COPY A,COM3 NOP FRST JST MONITR DA04 IN :16*8+3,A AND EZERO,A SHIFT A,RO,5 CLSN =1,A JMP NEXT3C COPY A,CODE JST ERROR JMP NEXT3C JMP FRST NEXT3C COPY COM3C2,A MAKE A 0 COPY A,COM2 MAKE WAY FOR ANOTHER BIT NOP COPY =:42,A COPY A,SECT IN 4,A AND F00F,A ADD =:20,A SELP A,4 SECND JST MONITR LOOK FOR EX 1 DA05 IN :16*8+3,A AND EZERO,A SHIFT A,RO,5 NOP  CLSN =3,A JMP CONT3C COPY A,CODE JST ERROR JMP CONT3C JMP SECND LPOOL CONT3C NOP NOP IN 4,A AND F00F,A ADD =:30,A SELP A,4 COPY COM3C3,A  COPY A,COM3 NOW ALL SHOULD BE 1'S(111) COPY =:43,A COPY A,SECT THRD JST MONITR DA06 IN :16*8+3,A AND EZERO,A SHIFT A,RO,5 CLSN =:7,A JMP FRTH COPY A,CODE JST ERROR JMP FRTH JMP THRD NOP FRTH JMP EARTN DO DIAGNOSTIC OVER EZERO RES 1,:E0 LPOOL * TEST 6 * * THIS TEST RUNS IN A LOOP SO THE * OPERATOR CAN CHECK THE SYNC OUTPUT * WITH AN OSCILOSCOPE,VERIFYING CORRECT * 100NS PULSES AT J-2 PINS 4,5,6,7. TEST6 COPY =:41,A COPY A,SECT SBIT 4,S SBIT 8,S IMS TP6  COPY TP6,A COPY A,CPASS COPY =6,A COPY A,TESTNU JST PTEST PRINT TEST NUMBER AND PASS IN 4,A ADD =:10,A SELP A,4 JST NODMA NO DMA WITH I/O TEST CARD COPY =NORTC,A NO RTC INT. COPY A,RTC COPY MODE3D,A SET MODE VALUE COPY A,MODE COPY COM3D1,A SET COMPARE REGISTERS COPY A,COM1 COPY COM3D2,A COPY A,COM2 COPY COM3D3,A COPY A,COM3  COPY LARGE,A COPY A,CNTA COPY =0,A COPY A,WRFLAG CLEAR WRITE FLAG OVER3D JST PROMPT  WORD 136 WORD MSG3D JMP OVER3D NOP LASTT JST MONITR JST MONITR JST MONITR  JST MONITR COPY =-3,A CSK A,EXIT JMP $+2 JMP LASTT LOOP FOREVER TILL CONS. INT. COPY EXIT,A NEG A,A COPY A,CODE EXIT TYPE = ERROR CODE JST ERROR JMP EARTN JMP LASTT LOOP FOREVER ON ERROR TOO OPTIONS +:20 MSG3D WORD CRLF BYTE 'HIT RETURN WHEN READY' WORD CRLF BYTE 'TO MONITOR SYNC OUTPUTS' WORD CRLF WORD CRLF BYTE 'HIT CONSOLE I NT. TO EXIT' WORD CRLF BYTE 'SENSE SWITCH ON =>DEBUG' WORD CRLF BYTE ' SENSE SWITCH OFF =>TEST START' WORD :0A0A OPTIONS -:20 LARGE RES 1,:FFFE SMALL RES 1,:FFFD LPOOL * TEST 7 * THIS TEST CHECKS THAT THE RESET CAPABILITY * IS IN WORKING ORDER.UPON ENTRY INTO THE * PROGRAM TEST,THE RUN LIGHT SHOULD GO OUT. TEST7 COPY =:41,A COPY A,SECT SBIT 4,S SBIT 8,S IMS TP7 COPY TP7,A CSK A,PASMAX JMP CNPS7 NOP COPY =0,A COPY A,TP7 CNPS7 COPY A,CPASS COPY =7,A COPY A,TESTNU JST PTEST IN 4,A ADD =:10,A SELP A,4 COPY COM3B1,A COPY A,COM1 COPY COM3B2,A COPY A,COM2 COPY COM3B3,A COPY A,COM3 COPY =NORTC,A COPY A,RTC JST NODMA COPY =0,A COPY A,WRFLAG COPY MODE3E,A MODE FOR COMPARE AND RESET ON COMPARE COPY A,MODE COPY SMALL,A COPY A,CNTA ENDING JST MONITR COPY EXIT,A NEG A,A COPY A,CODE JST ERROR JMP EARTN JMP ENDING MODE3A RES 1,0 NO COMPARE MODE3B RES 1,:412 MODE3C RES 1,0 MODE3D RES 1,:73 MODE3E RES 1,:273 RESET ON ALL COM3A1 RES 1,0 COM3A2 RES 1,0 COM3A3 RES  1,0 COM3B1 RES 1,:40 COM3B2 RES 1,:100 COM3B3 RES 1,:400 COM3C1 RES 1,:8000 COM3C2 RES 1,:8000 COM3C3 RES 1,:8000 COM3D1 RES 1,:40 COM3D2 RES 1,:100 COM3D3 RES 1,:400 CNT3A RES 1 INVEC RES 1 INTVEC RES 1 B101 RES  1,:0101 B103 RES 1,:0103 B105 RES 1,:0105 B0B0 RES 1,:3030 B0B1 RES 1,:3031 DE00 RES 1,:DE7F FFF RES 1,:100 B505 RES 1,:0505 B616 RES 1,:1616 B1B1 RES 1,:3131 A0B0 RES 1,:A0B0 A0B1 RES 1,:A0B1  LPOOL BPAGE0 RES 256 B111 RES 1,:1111 LPOOL END START MODE3E,A MODE FOR COMPARE AND RESET ON COMO0SEGMENTBLANK oii€Ÿ€%’¿€J‘ÿÿŒ¿€™”¿€^b¿€ª¿€B W¿…¿…¾™¾ê¿ƒŸƒÊ°þþ jmyzìÿ *  (PY ¿˜2ž|Ÿzƒ˜ þ‡’ †Å¿‘†Äð 0žƒ @žžn ‚½ :ž‚žiž‘4nmn o‚® @ž\ Gž‚žX  †Ÿ‚£Ç‚›1†˜ †œžV‚•¶“ žžG!†ð†‚Œ†Ž£”€¶ˆ„€ÞˆÞ†žxŸ6hi   Ø†× ¢û„€ +ÞÒž|‚÷†Ê¿<*?žž˜ƒî‡7 ¿8 žºÂž‚žhº½žfžŸå–» ÿŠã†µƒ´‡²Þ±žm‚Þ‡®ŸX‚Ú†¬ ƒ«‡©º×žŸPÞ¤Þ¤žw»¿I 9 ¹ÄÅÆ08Ê  ¿¨+‚¦‡¦¿¦ƒ¦‡¦ ‡¥‡¥ ¿¥ƒ¥ Ÿo¿˜ߟk NO I /O TEST CARD INSTALLED  p‡¢%»Àz‹kq pvx ¿•¢Tž|žŽƒi‡ ¿ 1žƒ 2ž„žr‚‹‡‹Ÿo‚ЇˆŸl ‚ˆ‡…Ÿi4nÛÕÙÖ  BUS MONITOR DIAG NOSTIC REV A1 DEVIC E ADDRESS (:16)? TES T(S) DESIRED (1234567)?  OR DEBUG(0)? SELECT RES PONSE ON ERROR (CR)-RUN ALL TESTS SELECTED,CONT INUE ON ERROR 1-LOOP O N ERROR 2-JUMP TO DEBU G ON ERROR ENTER DESIR ED RESPONSE (SELECT ONLY ONE) *** ERROR TES T # SECTION # TEST 3 WILL NOT RUN WITH A 4/10 Êð PASS #  ¶wŸ€Ö ¾†Ÿw¾„žÊÞt¾Ÿr R ¢“ ¿“ƒ–¿– ¢¿Ž‚Š¿Ž ¢¿‰ ¢Š¿†‚ƒ¿†Ÿkôõ ¥t«ÑËf¯°W  †¤†¤†¤†¤†¤†¤†¤‚§‡§†£ƒ¢‡¥ †¡Ÿ ß¡ÞWžx ‚^ M ¢\ ¾Ú ¢[¾×‚U¿Y ¢X¾Ò‚Q¿TŸnŸ*+,-/0 ¢ÃÄ  D Š{†zŸy¢x €€ ¾µ‚²†®†«†«†¬¿­%‡¦ ' ž†¥ _ž„ÞŸÞŸžtž€‚›ºœ žfžžd ÿ†•žk‚•†’¢W‚“ _ž[ %ƒŒ' ^œ‚ œƒ #žœ„ †œƒnopqr ‡ð ††¦† ¾ò ¾ð¾Ä}~ Ÿu %ƒl' žÞhŸx¯  )†y9 öB ºž A¾±‚„ 1*ÿ1³Ÿp ƒ~†ŒÞ{£zÞy .%€€'¾Ÿ+Þ‚žyŸp †‘ ‚¦†‘ü†Ž‚Œ)/Œ+=‹‰†† ¾‹Þ…ÞƒžtŸmåæç èd  ¾’¢"ùø¢‹ùI 6=ùI6½"ù¾ŽŸqç†  _†0’‡¦ŒŸx _’‡y 6Á…’‚¢‚Ÿvÿÿ ** ‚w‡´Wß³ƒ²º×žƒ ‡­‡­  ‡¬¿¬‚j‡«‚i‡ª‚h‡© ‡¨E A ‡˜–Á …¿ ‚ ‡‘‚Z‡¿ ¿œƒœ ž… ‡‰¿‰Ÿ–žu¾š¾¯ žõÉzqfÐv&ôós tup„x  ¢¦‹(°¦‹³‡‡Þ†°‡„ÞƒÞ„žxŸrt0Ôv0 xð'{  ÂwÆ|(`¦u¢s¦q¢s€€»už† ÞmžŸq+ÞnžvÅ ‡@¿@Ÿiž, ¾žy ·Ô¿Ó¥(°¦W¢U ¦SÂSÆX¢S€€»Tž—ƒſŃO ¦K¿Ã¢I  6H+ÞGÞ?€€»D ž‡žoÞ9+Þ>Þ8žeŸVƒ±¿®žh B ‡ –2 ¿©‚©‡ƒ¨‡W… ¾°W…¾­ý»”ž„Ÿž¾ ¿œ  ‡Ž¿ŽŸ—žn ‡‰¿‰Ÿ’ži ‡„¿„ ŸždxfÐÊÀ믋1kœ  EWŸöU´)‚é†é †å‚ç ±‚沂峂䴰€€.1½% €€'‡Ñ‚Èa‚ɨ‚Æb b…ÞËžo±ü†Í†¹ŸS‚Âÿ†À ‚¼a‚³bb…†­¿1ŸE   ‡'ÿ†±^ Ÿ6 '‚}†—þ†¨±ž¬WŸ, 'ý†Ÿ±Ÿ%Þ”žPžv 'AŸ—Ÿ—fgp[ÿÿîîQQÿÿÿrstuvwxyz{ %ÿ‡ÀžQ ^žW † †††Ÿy ‚ˆ†‚‡†‚††‚…†Ÿva¨bb    ¢£€€ ž†+'žy Ÿœ+'žŸ˜€€ Ÿ–žw   žƒ žŸy ††‚Œ‡Œ¢Œ‚Œ „ƒŸq‘0Ô1tßä/bv²ÿ/b $%&rr(   @ €     @ €    oÿÿ g j!" i#$%&rr(0  #$%&rr (  @ €     @ €    oÿ g j!" i#$%&rr(ð  ¿‹‚‹ù¢Šù96½ø"ù¿„ Ÿsÿ† @‡êWßõƒô»ôžƒ ‡ï‡ð ‡ï¿ïE…¢í¦Ùè †ÈÞÇžŸè¢Ó€€‡Ó€—†Â¾µ‡Ð€— ¾²‡Î€—¾¯‡Ì‚¹„—€®†¹ÞÂß ¿Ò‚‡‚¬‡Á¿Á¿À¿Àþ»¿ ž ‡¼¿¼žW‡ƒ­ ÿ‡« 𠂦 ÿ†¤žOƒ¸º—žžG ‡¨ ¿¨žCžk †‹+„—‚ˆ–ˆŠ©†ƒŸv^ÿþ`acr@ÿElm Évstu1zqexf Ð'yôó„É„1sc !"BA11bbQrr r‚‚ÂAœŸ 55XX1¦v£ Žc01±ñÎ p(ÿ ((ÿÿ@@ÿ@@@( r@(ÿr X‡"W —ö¶ì‚â‡‚á‡‚à‡‚߇¿ì ‚‡‚‡ ‡ç…¿¿¿ƒ ŸÕ ž ‡ ¿ žžq Y‡Í —Ò¶È ‚Á‡Ç ‡Í…¿Ä¿Ã¿Ê ƒÂ ž ‡¾¿¾ž—žsƒÁº± žžc ‡´¿´ž_žOƒ·º¨žž‡ ‡ª¿ªžƒž_ Z‡Ÿ—¤¶š ‚”‡™ ‡Ÿ¿—ƒ— Ÿ ‡“¿“ŸŒžv…ŸpQQp(HpQQ€ ÉvxfÐx‹pe 1s @‡rE…ßòƒñ‡ç ‡æ¿æ  ‡ìƒì‡gÿ‡áƒé‡àƒè‡ßƒç‡Þ‚c ‡Ý¿Ý¿\ßY ƒÙ žÂ †þ¿Ø¿ØDíž|¿K¿Jý»Iž™ °°£Ì1D(ò§Ê¢Êžƒ(ñ§Æ¢Ç *ÿ+¸€žžŒß¾žy ‡3¿3žS ž“ ‡.¿.žNžŽ ‹±ºÒž žGº†ž‚ ‡ ¿ ž@  ‚Æ †Äƒ ÿ‡ ðž5 †» ¾Þ¿•DíŸôóqs tuz„*ë á æ ç è4¿ òÜÍ$ #i"!j gÿo $ #i"!j gÿÿoìí CHANGE SKIP SWITCH (SW 1-6,7,8) FOR SKIP   HIT RETURN WHEN READY  ƒú ƒù ƒø‹ø†jŸv @‡è E… ‡ßðƒï‡¿ƒà‡‚߇ ¿ƒè‡Üƒç‡ƒæ‡ƒå‡ ‡Õ‡â ¾Å ßË¿ÝCžx¾“ ¿Æ¾¡¾ ƒÏ»Ìž ž¨‡¼¿¼ž¥ƒÅžg ƒ}†¬Þ{ƒz †ªÞx£wÞvƒ¥‡¥ƒº‡¢Þ¡Þ¡*ÿ1¸ Ÿm )€€»°ž„,ÿž…+žx §§Ÿsƒ§‡¤Ÿpƒ  U ÿŸ“ž9 Uƒž ªƒ‹†²Ÿx‚ƒ É ®vpfÐ õ ö ÷ ø) â é ê ë ó4 ô ú û ü  CHANGE INTERRUPT V ECTOR SWITCH (SW2) TO ³ HIT RETURN WHEN READY  ƒ×D¿Ö%¶ŸF A‡<E…ßσÎ »Îžƒ ‡É‡¸ ‡·¿·—¶  ƒÂ‡,ƒÁ‡±ƒÀ‡°ƒ°‡°ƒ#‡¯¿¯ ‚!‡® ‡ ‡¥‡¦¿³–ÇI ž„‡¿žžvƒ§‡— B‡  — ¿ ³–´I žš‡¿ ž—žuôóxst îuq„ z 5fпÀ(y ã ì í —i 0ƒi‡i C‡¿³ –‰I ž…‡e¿ež‚žvŸƒà É A‡{E…ßõƒô‡I ‡H ¿H ¿K‚ç‡Jƒê‡åƒé‡@ƒè ‡?ƒç‡?‚Û‡> ‡Ü¿âˆ hž| ¿\¿[¿Z¿Yý»ÒžžxƒÏ‡0¿0 ŸQžr HIT RETURN WHEN RE ADY TO MONITOR SYNC OU TPUTS HIT CONSOLE IN T. TO EXIT SENSE SWITCH ON =>DEBUG SENSE SWI TCH OFF =>TEST START ÿþÿý vpx+ ä ï ð ñ4 A‡Æ E…ßăûÞƒ ‡¾‡¿ ‡¾ ¿¾ ‚‡º‚œ‡¹‚›‡¸‚]‡· ¿· ‡[‚އX‚U‡²¿²ƒV‡°¿°Ÿ°žyss@€€€@ ó ô õ0001Þ11 ° ± É,yôóstuz„qfÐ ƒž ªƒ‹†²Ÿx‚ƒ É ®vpfÐ õ ö ÷ ø) â é ê ë ó4 ô ú û ü  CHANGE INTERRUPT V ECTOR SWITCH (SW2) TO ³ HIT RETURN WHEN READY  ƒ×D¿Ö%¶ŸF A‡<E…ßσÎ »Îžƒ ‡É‡¸ ‡·¿·—¶  ƒÂ‡,ƒÁ‡±ƒÀ‡°ƒ°‡°ƒ#‡¯¿¯ ‚!‡® ‡ ‡¥‡¦¿³–ÇI ž„‡¿žžvƒ§‡— B‡  — ¿ ³–´I žš‡¿ ž—žuôóxst îuq„ z 5fпÀ(y ã ì í —i 0ƒi‡i C‡¿³ –‰I ž…‡e¿ež‚žvŸƒà É A‡{E…ßõƒô‡I ‡H ¿H ¿K‚ç‡Jƒê‡åƒé‡@ƒè ‡?ƒç‡?‚Û‡> ‡Ü¿âOVicEdDano*g ½¾¾ô ±Þ}¾Øžº´EÕ¾áã¦Â 4”Å{y–­Fzrk\±ÖAw“¯‹õ´ñÙßå ÷^kE_Ô¦Ä`àßá­ T…û¾Ê (½Ô :½Ô‚9Š’½Õ -½Ô :½Ô‚" ÿЉ½Õ )½Ô ½Ô Š‚…÷Çÿþ g ¿†ÈæÊ¦ÈÆÆp†ÇP†Æ0†Å @0†ÂB ž †¾¢` Ÿh † ‚}’¾cÅøžD «¢«â«‚®‚­‚§p‚¦P‚¥0O‚œŸo ½Ò X½Ô D½Ô B½Ô U½Ô G½Ô 4½Ô ½Ô D½Ô 0½Ô ½ÔŸi ¾7Ÿ} ½Ò ½Ô‚z½Ô¾¶¾µ P¾«÷½Û A¾§‚C½Ü Q¾£‚@½Ü X¾Ÿ‚=½Ü Y¾›‚:½Õ½Ò¾Ÿ¾ž¾ K¾“‚3½Ü L¾‚0½Ü S¾‹‚-½Ü D¾‡‚*½Ü C¾ƒ‚'½ÕŸK ½Ô =½ÔŸ{ ¾Ÿ} ½ÔŸ|‚Ê"„ †Å½Ò *½Ú½Ó†À Yž¤ Qž¢ žè Až½ TÞ Gžž„½Ó½Ù†¯ž‘ Ržž†½Ó ž£½ØÆ¦žˆ Mì Dé Vé Wê½×ƚ›LBžùLCÑLFÏLLÎLSÐLJžÁLIËLGÊLRÉLZèÆ …ö½Èž8 ¾+Ÿ}½Ó†{½Ó†u½Ó žÆ‚t Pž” LžÆ‚j Tž‹ Pžƒ BžÆý…ú P…û ½Ô‚\…ûž …ü‚W Hž„ TžÆ…üž½Ó Åž|ÁîQE‚I…÷ò ,ž§ò ,ž˜½Ò `‚šÿ–›†— 6Á‚“†‡‚“‡‹‚’‡ˆ÷†…½Ö†áŸ€—– _½Úž­ž"°¿€"U??ÿ ¾#Ÿ}ª¸¦¸ `ù JžŒ Bž†Á÷ YK QJÿžˆ‚¨fÁׂ¤ ž^Þ¡ @‚²€ÞŸ‡žÞ§œ `ò@E ;ž‚ž†žà½×RA@EN@AÞÇŽ QÁÞŠ‡‰ò ,ž^ž$žAÆúY½ž o±¾)‚{ ÿ…÷†w‚_Ä D `…öžž†n÷¢X*ü¸‚ž›€ƒQ€„†c À ‚Ѐª^Ѐ Ä„‚ÂY@AĄ܃žS B `…ö½Èö DÝ÷ž„*üÞKž_žU‚2 `Å¢0*ü¦.€ ‚„€‚( ÿ†&žr o±¿‚{…÷†5 M…öƒˆ¶ˆ‡†ƒ‡ì‡… `žX!d ¯!»– ¿zŸ}½Ó žô Tžž„½Ó žèÆ  Cžž‚Þôžé Ižž‚Þðžä Užž‚Þìžß Nžž‚ÞèžÚ Sžž‚ßóžÕ AžžÚßïžÐ ‚ØÂ›PQIƒå“¢†£À`@"ÓŸÆ  †þ-LŒ…þŸlQÅ‚•‡’‚”‡‘Þ„þM…þŸb ¾5‚}â¼¢»…÷ †x CŸÆ”• ‚¬Â“KQG‚æ“æ†çÀa@"ÓãÆä †ˆŸqQłއÛÂÝÇÚÞŸj ¾ýƒª…÷ IžêÞÞÞÞÞ³Þ³ž’½Ó ž ,žž‚½Óž ¾àÆ ¿Ÿ}¾¾I¾ž¾è¿‹¿‹¾ÐætÅ#.#W###H„"j##›± ‚W¨KQG‚“”†•Àb@"Ó‘Æ’ †ŸqQÅ‚Œ‡‰Â‹ÇˆÞ–Ÿj¿€†‡Š‹š›žŸª« ¾’ƒñ…÷ U…ö½ÈÇ ¾'Ÿ} †††††A†AŸw ¾r‚} þ†{ ‡yÞxÞw¢âŸt ‚ “KQG‚E“M†NÀc@"ÓJÆK †ˆŸqQÅ‚E‡B‚DÇAÞŸj ¾\ƒ¼…÷ NžI ‚“KQG‚)“5†6Àd@"Ó2Æ3 †ˆŸqQÅ‚-‡*Â,Ç)ÞŸj ¾@ƒ¡…÷ Sž- ƒÂ“KQG‚ “†Àe@"ÓÆ †ˆŸqQÅ‚‡ÂÇÞŸj ¾$ƒ‡…÷ Ažˆ˜œ#¹¨½Ì ¦Áõ"B†œîƽ҃˜½Ü½×½ÌîCð‡‘Åñ Å /ž† XžÆƒ‡ž‚ƒ„ ½Ò½Üži °ž]½Ò@½Ûƒ¨½Ü½×îB…ôÇ¢ò ,žœÂžñ[ +ž‰ -žˆ *žŠ Xž‹ /žŒÆKJÿÆŽÅïž^ƒ‹…ïž[ƒˆž{ƒ… žxÞ‚žZÅ ,ÆŸ|¾Û ž†½×½ÌL žÆÆÎû Pžž„ý…ú ½ç½Òï†à½Ûø†Á†¾ƒÛ½Ü½æÞºž{‚¹ ¾ƒ‚Ó½Òžq ‚±†´Ž±k†¬ŠÉ†È‚­Gû†©½ÍÞ§ž}Þ¦žyý†¢½ÍÞ ž}ƒ¹y E  à ž .½Ôƒ®ÿ E  à ž .½ÔÞ£ÞƒžfŸN ,žÆ½×†s@ÁïFž…C ’kŸqÁùLLžÆ¾ (žwž{žu Â^Þ|JÿQBÆZŸyù Lžˆ Sžžû TžŠ½ÒžˆÞN‚M ¾ †Ižsž‰…ôï¾Ë†_‚”‡]¾]Š’ž| IÆŽ¾> ,žÆ½×Ƈ ,žžƒ†·½×Æ‚ŸpIư¾k ,ž“ ’« ,žƒHÿÆtž’‚r žŽHÿÆmñ -žÆ†›ž†½×ñ -žÆ†”ï†(ƒ'š\–\ÂFžƒ‚Š -ž‚¾žt½Ò‚½Ûƒ½Õžx Â’@"Fž‚Ÿzž‡@ ÎŒ‰ó ÿFž„ …ôÆó Ÿl d¾#…ô† ‚.¾b†žÁóÆƒ™‡šÞ™Þ–JÿQº‚”†’‚!†’Â’ƒŽ»ž…ÞŠÞ‹JÿQ¸Å½Ò %½Ô‚‚½Õžu †U ½Ô ½Ô ’‰B *ž ½Ô ½Ô‚GŸo †h½Õ †fÿ†e °"†cIƒaM K ÿ¢Y&žž†¢V&žƒ†RÆR `ÞQKL$žžk‚K N =½Ô‚DŽD½Õ G½Ô‚A öÁ  :½Ôž€ ½ÔŸL ¾ƒ ¾ÇŸ{ †’¹¾‡y¾…9¾ƒ¾‚Ÿu  öÁ  :¾´‚Ÿw ® 0¦”‡¢‚C C 96¼C C "¢…0 `Ÿj† •…ð¢’C "C ¢tC I6½Ò²DŽ’ÃŽ‘Až³³6PO6P6Pž”ÿû!»)Š)³!³%â 2 g Fžƒ Iž D½Ò½Ôû†lÞkž„½Ò ½Ôžx ½Ô²½Û³@9¿—@¿•@? R6A W½Ô ½Ô±ÞžCËˋJ°R>JÿKSB±ž|½ÒÅ%Œ(ù(øsƒB–ö†{½Ó ž–ž½Ó†v½ÓÂt’rLD¶ëLE¶êLI¶éLR¶èLW¶çÁÆ–å’d ,žk‚a‡%´ƒ#ü‡!ž§žœƒÅ†yƒÄ†xƒÃ†wƒ–ÌÃÀÆpQAlýÆkL=\L>ŒL:|öÆbL<ŒL=L‡±´‚^±‚]²‚\³žQÿü HÿÇž½í ž®’w‡˜‡œ‡š‡—‡—’q’q†n’ožƒ žŠ½í =žÀ <žÔ >žÚ :žàÆÞbŸaÆ(ð(ò(ô(ó(ñ(ï!»dyð€‚„€€ÿþ½Ò C½Ô 1½Ô =½Ô‚½Ü C½Ô 2½Ô =½Ô‚½Ü C½Ô 3½Ô =½Ô‚ ½Ü M½Ô =½ÔƒT–·½Ü½ÒžHÞ&žÆ½×† =“FF“EF“C“CEÆÇ=žƒÇ:žÇ7‚ž&ޞƓ5½½×Ç-žÞžÆ“,µ½×Ç&žޞƓ$½ÓQ»ß‡žÆ½×LJž?ÿ)Ø€Ÿ€%’¿€J‘ÿÿŒ¿€™”¿€^b¿€ª¿€BgW¿…¿…¾™¾ê¿ƒŸƒÊ°þþjmyzìÿ * (PY ¿˜2ž|Ÿzƒ˜ þ‡’ †Å¿‘†Äð 0žƒ @žžn‚½ :ž‚žiž‘4nmno‚® @ž\ Gž‚žX †Ÿ‚£Ç‚›1†˜ †œžV‚•¶“ žžG!†ð†‚Œ†Ž£”€¶ˆ„€ÞˆÞ†žxŸ6i9  Ø†× ¢û„€+ÞÒž|‚÷†Ê¿<*?žž˜ƒî‡7¿8 žºÂž‚žhº½žfžŸå–» ÿŠã†µƒ´‡²Þ±žm‚Þ‡®ŸX‚Ú†¬ƒ«‡©º×žŸPÞ¤Þ¤žw»¿I 9 ¹Æ08Êÿ ¿¨+‚¦‡¦¿¦ƒ¦‡¦ ‡¥‡¥¿¥ƒ¥ Ÿo¿˜ߟk NO I/O TEST CARD INSTALLED p‡¢%»Àz‹kqpvx ¿•¢Tž|žŽƒi‡¿ 1žƒ 2ž„žr‚‹‡‹Ÿo‚ЇˆŸl‚ˆ‡…Ÿi4nÛÕÙÖ BUS MONITOR DIAGNOSTIC REV A1 DEVICE ADDRESS (:16)? TEST(S) DESIRED (1234567)? OR DEBUG(0)? SELECT RESPONSE ON ERROR (CR)-RUN ALL TESTS SELECTED,CONTINUE ON ERROR 1-LOOP ON ERROR 2-JUMP TO DEBUG ON ERROR ENTER DESIRED RESPONSE (SELECT ONLY ONE) *** ERROR TEST # SECTION # TEST 3 WILL NOT RUN WITH A 4/10 Êð PASS #  ¶wŸ€Ö¾†Ÿw¾„žÊÞt¾Ÿr R ¢“¿“ƒ–¿– ¢¿Ž‚Š¿Ž ¢¿‰ ¢Š¿†‚ƒ¿†Ÿkõ1¥t«ÑËf¯°W †¤†¤†¤†¤†¤†¤†¤‚§‡§†£ƒ¢‡¥†¡Ÿ ß¡ÞWžx ‚^M ¢\¾Ú ¢[¾×‚U¿Y ¢X¾Ò‚Q¿TŸnŸ-0=¢ÃÄ  D Š{†zŸy¢x€€ ¾µ‚²†®†«†«†¬¿­%‡¦' ž†¥ _ž„ÞŸÞŸžtž€‚›ºœžfžžd ÿ†•žk‚•†’¢W‚“ _ž[%ƒŒ' ^œ‚ œƒ #žœ„ †œƒr ‡ð ††¦† ¾ò ¾ð¾Ä~ Ÿu %ƒl' žÞhŸx¯5 )†y9 öB ºž A¾±‚„1*ÿ1³Ÿp ƒ~†ŒÞ{£zÞy.%€€'¾Ÿ+Þ‚žyŸp †‘‚¦†‘ü†Ž‚Œ)/Œ+=‹‰†† ¾‹Þ…ÞƒžtŸmç*èd  ¾’¢"ùø¢‹ùI6=ùI6½"ù¾ŽŸqç† _†0’‡¦ŒŸx _’‡y 6Á…’‚¢‚Ÿvÿÿ **W‚w‡´Wß³ƒ²º×žƒ ‡­‡­ ‡¬¿¬‚j‡«‚i‡ª‚h‡© ‡¨E A‡˜–Á …¿ ‚ ‡‘‚Z‡¿¿œƒœ ž… ‡‰¿‰Ÿ–žu¾š¾¯žõÉzqfÐv&ôóstup„x ¢¦‹(°¦‹³‡‡Þ†°‡„ÞƒÞ„žxŸrt0Ôv0 xð'{} ÂwÆ|(`¦u¢s¦q¢s€€»už†ÞmžŸq+ÞnžvÅ ‡@¿@Ÿiž,¾žy ·Ô¿Ó¥(°¦W¢U¦SÂSÆX¢S€€»Tž—ƒÅ¿ÅƒO¦K¿Ã¢I  6H+ÞGÞ?€€»Dž‡žoÞ9+Þ>Þ8žeŸVƒ±¿®žh B‡ –2 ¿©‚©‡ƒ¨‡W…¾°W…¾­ý»”ž„Ÿž¾ ¿œ ‡Ž¿ŽŸ—žn ‡‰¿‰Ÿ’ži ‡„¿„ŸždxfÐÊÀ믋1kœe EWŸöU´)‚é†é †å‚籂沂峂䴰€€.1½%€€'‡Ñ‚Èa‚ɨ‚Æbb…ÞËžo±ü†Í†¹ŸS‚Âÿ†À‚¼a‚³bb…†­¿1ŸE  ‡'ÿ†±^Ÿ6 '‚}†—þ†¨±ž¬WŸ,'ý†Ÿ±Ÿ%Þ”žPžv 'AŸ—Ÿ—gp[ÿÿîîQQÿÿÿ{%ÿ‡ÀžQ ^žW ††††Ÿy ‚ˆ†‚‡†‚††‚…†Ÿva¨bb1   ¢£€€ ž†+'žyŸœ+'žŸ˜€€ Ÿ–žw  žƒ žŸy ††‚Œ‡Œ¢Œ‚Œ„ƒŸq‘0Ô1tßä/bv²ÿ/b $%&rr( @€  @€  oÿÿg j!"i#$%&rr(0  #$%&rr( @€ @€  oÿg j!"i#$%&rr(ðm ¿‹‚‹ù¢Šù96½ø"ù¿„Ÿsÿ† @‡êWßõƒô»ôžƒ ‡ï‡ð ‡ï¿ïE…¢í¦Ùè†ÈÞÇžŸè¢Ó€€‡Ó€—†Â¾µ‡Ð€—¾²‡Î€—¾¯‡Ì‚¹„—€®†¹ÞÂß ¿Ò‚‡‚¬‡Á¿Á¿À¿Àþ»¿ž ‡¼¿¼žW‡ƒ­ ÿ‡« ð‚¦ ÿ†¤žOƒ¸º—žžG ‡¨¿¨žCžk †‹+„—‚ˆ–ˆŠ©†ƒŸv^ÿþacr@ÿEmÉvstu1zqexfÐ'yôó„É„1sc®!"BA11bbQrrr‚‚ÂAœŸ55XX1¦v£Žc01±ñÎ p(ÿ((ÿÿ@@ÿ@@@(r@(ÿr X‡"W—ö¶ì‚â‡‚á‡‚à‡‚߇¿ì‚‡‚‡ ‡ç…¿¿¿ƒ ŸÕ ž ‡ ¿ žžq Y‡Í—Ò¶È ‚Á‡Ç ‡Í…¿Ä¿Ã¿ÊƒÂ ž ‡¾¿¾ž—žsƒÁº±žžc ‡´¿´ž_žOƒ·º¨žž‡ ‡ª¿ªžƒž_ Z‡Ÿ—¤¶š ‚”‡™ ‡Ÿ¿—ƒ— Ÿ ‡“¿“ŸŒžv…ŸpQQp(HpQQ€gÉvxfÐx‹pe1s @‡rE…ßòƒñ‡ç ‡æ¿æ ‡ìƒì‡gÿ‡áƒé‡àƒè‡ßƒç‡Þ‚c‡Ý¿Ý¿\ßY ƒÙ žÂ†þ¿Ø¿ØDíž|¿K¿Jý»Iž™°°£Ì1D(ò§Ê¢Êžƒ(ñ§Æ¢Ç*ÿ+¸€žžŒß¾žy ‡3¿3žSž“ ‡.¿.žNžŽ ‹±ºÒžžGº†ž‚ ‡ ¿ ž@ )‚Æ †Äƒ ÿ‡ ðž5 †»¾Þ¿•DíŸôóqstuz„*ë á æ ç è4¿ òÜÍ$#i"!j gÿo $#i"!j gÿÿoí CHANGE SKIP SWITCH (SW1-6,7,8) FOR SKIP ~ HIT RETURN WHEN READY ƒú ƒù ƒø‹ø†jŸv @‡èE… ‡ßðƒï‡¿ƒà‡‚߇¿ƒè‡Üƒç‡ƒæ‡ƒå‡ ‡Õ‡â¾Å ßË¿ÝCžx¾“ ¿Æ¾¡¾ ƒÏ»Ìžž¨‡¼¿¼ž¥ƒÅžg ƒ}†¬Þ{ƒz†ªÞx£wÞvƒ¥‡¥ƒº‡¢Þ¡Þ¡*ÿ1¸Ÿm )€€»°ž„,ÿž…+žx§§Ÿsƒ§‡¤Ÿpƒ  U ÿŸ“ž9 Uƒž ªƒ‹†²Ÿxƒ/É ®vpfÐ õ ö ÷ ø) â é ê ë ó4 ô ú û ü  CHANGE INTERRUPT VECTOR SWITCH (SW2) TO ³‚ HIT RETURN WHEN READY ƒ×D¿Ö%¶ŸF A‡<E…ßσλΞƒ ‡É‡¸ ‡·¿·—¶ ƒÂ‡,ƒÁ‡±ƒÀ‡°ƒ°‡°ƒ#‡¯¿¯‚!‡® ‡ ‡¥‡¦¿³–ÇI ž„‡¿žžvƒ§‡— B‡ — ¿ ³–´I žš‡¿ž—žuôóxst îuq„z 5fпÀ(y ã ì í—i 0ƒi‡i C‡¿³–‰I ž…‡e¿ež‚žvŸƒàwÉ A‡{E…ßõƒô‡I ‡H¿H ¿K‚ç‡Jƒê‡åƒé‡@ƒè‡?ƒç‡?‚Û‡> ‡Ü¿âˆ hž|¿\¿[¿Z¿Yý»ÒžžxƒÏ‡0¿0ŸQžr HIT RETURN WHEN READY TO MONITOR SYNC OUTPUTS HIT CONSOLE INT. TO EXIT SENSE SWITCH ON =>DEBUG SENSE SWITCH OFF =>TEST START ÿþÿý2vpx+ ä ï ð ñ4 A‡ÆE…ßăûÞƒ ‡¾‡¿ ‡¾¿¾ ‚‡º‚œ‡¹‚›‡¸‚]‡·¿· ‡[‚އX‚U‡²¿²ƒV‡°¿°Ÿ°žyss@€@ õ0001Þ11 ° ±É,yôóstuz„qfÐ mE7E3E5E3--E2E0ž¨‡¼¿¼ž¥ƒÅžg ƒ}†¬Þ{ƒz†ªÞx£wÞvƒ¥‡¥ƒº‡¢Þ¡Þ¡*ÿ1¸Ÿm )€€»°ž„,ÿž…+žx§§Ÿsƒ§‡¤Ÿpƒ  U ÿŸ“ž9 Uƒž ªƒ‹†²Ÿxƒ/É ®vpfÐ õ ö ÷ ø) â é ê ë ó4 ô ú û ü  CHANGE INTERRUPT VECTOR SWITCH (SW2) TO ³‚ HIT RETURN WHEN READY ƒ×D¿Ö%¶ŸF A‡<E…ßσλΞƒ ‡É‡¸ ‡·¿·—¶ ƒÂ‡,ƒÁ‡±ƒÀ‡°ƒ°‡°ƒ#‡¯¿¯‚!‡® ‡ ‡¥‡¦¿³–ÇI ž„‡¿žžvƒ§‡— B‡ — ¿ ³–´I žš‡¿ž—žuôóxst îuq„z 5fпÀ(y ã ì í—i 0ƒi‡i C‡¿ NG COPY =-4,A EXIT 4 IS FALL THROUGH COPY A,EXIT COPY A,ADDRES PUT INTO COMPARE ADDRESS JMP *MONITR GO BACK TO CALLING CODE DMARD COPY WRFLAG,A CHECK AND CHANGE TO SAY BEEN HERE COPY =-1,A SET TO MINUS ONE COPY A,WRFLAG PUT BACK TO WRITE FLAG COPY DMADDR,A LD DMA ADDRESS OUT A,:C*8+1  NOP NOP COPY CTRLR,A LD CONTROL WD (READ) OUT A,:C*8+2 OUTPUT SELP A,:C*8+2 :C,2 DO DMA READ SBIT 8,S ENABLE INTERUPTS COPY A,CODE JST ERROR PUT :FFFF INTO ERROR CODE AND GOTO ERROR ROUTIN JMP *MONITR GO HOME HLT NOP NOP NOP NOP NOP NOP COMPAR ENT ENTER WHEN BUS MON. COMPARE RBIT 8,S RBIT 2,S COPY =-1,A COPY A,EXIT EXIT 1 IS COMPARE OCCURED SELP A,:B*8+6 DISABLE I/O TEST CARD INTERRUPT NOP JMP *MONITR RTCDON ENT  WHEN RTC OCCURS RBIT 2,S COPY RTCDON,A LD ADDRES WHERE RTC CAME COPY A,ADDRES COPY =-2,A COPY A,EXIT DA23 SELP A,:16*8+1 STOP MONITORING JMP CLEAN CLEAN1 RBIT 5,S DISABLE RTC JMP *MONITR GO BACK HOME IOTSTR RBIT 2,S NOP NOP COPY =-3,A COPY A,EXIT DA24 SELP A,:16*8+1 :16,1 STOP MONITOR JMP *MONITR DMAVEC IMS WRFLAG JMP DMARD JMP IOTSTR IF ALREADY DONE DMA WRITE THEN GO TO IOTSTR CONVEC ENT CONSOLE INT. ROUTINE RBIT 2,S NOP OUT A,1 JT SS,$+2 IF SENSE SET GOTO DEBUG JMP START IF NOT START PROGRAM OVER JMP DEBUG ADDRES RES 1 RTC,BUS MON.,COMPARE ADDRESS CODE RES 1 ERROR CODE # DMADDW RES 1,:7000 DMA WRITE ADDRESS CTRLR RES 1,5 CONTROL WORD READ CTRLW RES 1,1 WRITE CONTROL WORD DATDMA RES 1,:55B DMA DATA FFFF RES 1,:FFFF EEEE RES 1,:EEEE DMADDR RES 1,:5151 BYTE RES 1,:FFFF ADDPTR RES 1,:7FFF WRFLAG RES 1,0 CNTA RES 1 MONITOR LOOP COUNT TEMCNT RES  1 TEMPORARY COUNTER COM1 RES 1 COMPARE REG. 1 COM2 RES 1 2 COM3 RES 1 3 MODE RES 1 MODE VALUE DMAERR RES  1 * EXIT FROM MONITR LOOP * -1 BUS MONITOR COMPARE AND INTERRUPT * -2 RTC INT. * -3 I/O TEST CARD DMA DONE INTERRUPT * -4 NO INTERRUPTS,MONITR TIMED OUT EXIT RES 1 DMA RES 1 RTC RES 1 LPOOL CLEAN COPY =-1,A  COPY A,RTCCNT JMP CLEAN1 GO BACK INTO ROUTINE DMVEC1 ENT SELP A,:B*8+6 RESET I/O TEST CARD INTERRUPT JMP DMAVEC NODMA ENT COPY =0,A COPY A,DMA1 COPY A,DMA2 COPY A,DMA3 COPY A,DMA4 PUT NOPS IN DMA INSTRUCTIONS JMP *NODMA YESDMA ENT PUT I/O TST CRD INST. IN MONITR LOOP  COPY TBLA,A COPY A,DMA1 COPY TBLB,A COPY A,DMA2 COPY TBLC,A COPY A,DMA3  COPY TBLD,A COPY A,DMA4 JMP *YESDMA TBLA RES 1,:0261 TBLB RES 1,:02A8 TBLC RES 1,:0262 TBLD RES 1,:0462 POWRDN ENT SIN 1 HLT POWER DOWN ROUTINE TITL SPACE 1 SURCH ENT   COPY =12500,X SCHR COPY 0(X),A CLSN =1,A LOOK FOR STOP BIT IN 160 ADDRESS LOCATIONS JMP INTUR IF STOP BIT FOUND GO LOOK FOR INTERRUP BIT ADD =2,X CSM X,=12660 JMP SCHR NOP  JMP ERDMT3 INTUR EQU $ ADD =2,X CSM X,=12660 JMP $+2 JMP ERDMT4 COPY 0(X),A CLSN =:18,A JMP EARTN JMP INTUR SPACE 2 MCHTY ENT FMT A  CLSN =3,A JMP P410 CLSN =0,A IS IT A 4/10 SYSTEM JMP P410 JMP *MCHTY  NO TEST SYSTEM AS A 4/30, 4/90 . P410 EQU $ COPY =1,A COPY A,FL410 SET 4/10 FLAG COPY  =12130,A COPY A,FIFO1 SET TABLE PTR TO 4/10 TABLE COPY =P1410,X COPY =:7FFF,A COPY A,3(X)  JMP *MCHTY SPACE 2 FL410 WORD 0 LPOOL OPTIONS +:20 TITL ABS :2F62 TABLE IN MEM OF WHAT FIFO SHOULD BE (4/10) WORD :8,:524,:8,:525,:8,:526,:8,:572 WORD :0,:572,:8,:528,:8,:10,:8,:515 WORD :8,:516,:8,:514,:8,:20,:8,:515 WORD :8,:516,:8,:514,:8,:40,:8,:515 WORD :8,:516,:8,:514,:8,:80,:8,:515 WORD :8,:516,:8,:514,:8,:100,:8,:515 WORD :8,:516,:8,:514,:8,:200,:8,:515 WORD :8,:516,:8,:514,:8,:400,:8,:515 WORD :8,:516,:8,:514,:8,:800,:8,:515 WORD :8,:516,:8,:514,:8,:1000,:8,:515  WORD :8,:516,:8,:514,:8,:2000,:8,:515 WORD :8,:516,:8,:514,:8,:4000,:8,:515 WORD :8,:516,:8,:514,:8,:8000,:8,:515 WORD :8,:516,:8,:517,:8,:518,:C,:009 WORD :8,:519,:8,:51A,:8,:51B,:E,:009 WORD  :8,:51C,:8,:51D,:8,:56F,:8,:7FFF WORD :0,:7FFF,:8,:51E,:8,:567,:8,:51F WORD :8,:520,:8,:56A,:8,:521,:8,:522 WORD :8,:569,:8,:523,:8,:524,:8,:525 WORD :8,:526,:8,:572,:0,:572,:8,:528 TITL ABS :300C TABLE IN MEM OF WHAT FIFO SHOULD BE (4-30 & 4-90) WORD :8,:523,:8,:524,:8,:525,:8,:526 WORD :8,:572,:0,:572,:8,:528,:8,:10 WORD :8,:515,:8,:516,:8,:514,:8,:20 WORD :8,:515,:8,:516,:8,:514,:8,:40 WORD :8,:515,:8,:516,:8,:514,:8,:80 WORD :8,:515,:8,:516,:8,:514,:8,:100 WORD :8,:515,:8,:516,:8,:514,:8,:200 WORD  :8,:515,:8,:516,:8,:514,:8,:400 WORD :8,:515,:8,:516,:8,:514,:8,:800 WORD :8,:515,:8,:516,:8,:514,:8,:1000  WORD :8,:515,:8,:516,:8,:514,:8,:2000 WORD :8,:515,:8,:516,:8,:514,:8,:4000 WORD :8,:515,:8,:516,:8,:514,:8,:8000 WORD :8,:515,:8,:516,:8,:517,:8,:518 WORD :C,:009,:8,:519,:8,:51A,:8,:51B WORD :E,:9,:8,:51C,:8,:51D,:8,:56F WORD :0,:7FFF,:8,:51E,:8,:567,:8,:51F WORD :8,:520,:8,:56A,:8,:521,:8,:522 WORD :8,:569,:8,:523,:8,:524,:8,:525 WORD :8,:526,:8,:572,:0,:572,:8,:528 OPTIONS -:20 TITL ABS :5F0 * * IKB,INPUT A CHARACTER FROM THE TELETYPE * IKB ENT JST SAVEX COPY =:8618,A START ECHO NO INT. OUT A,DTTYDA%1;1 COPY =:100,X RESET CODE IN DTTYDA%1;1,A SHIFT A,RO,4 DATA READY TO OV  JF OV,$-2 IN DTTYDA%1,A AND =:7F,A OUT X,DTTYDA%1;1 JST RSTORX JMP *IKB  LPOOL * TEST 2 * * THIS TEST IS USED TO TEST THE BUS MONITOR FOR * PROPER OPERATION FOR ALL MODE SETTINGS.THIS * CHECKS FOR PROPER INT. OPERATION,COMPARE ON * C1,C2,C3 AND BOUNDARIES INSIDE AND OUTSIDE * THEIR VALUES.SECTIONS A-W CHECK FOR ALL * NON DMA READ AND WRITE,WHILE SECTIONS X-Z * CHECK PROPER OPERATION FOR DMA READ AND * WRITE OPERATIONS.THESE LAST THREE SECTIONS * (X,Y,Z) DO NOT RUN IF AN I/O TEST CARD IS * NOT INSTALLED. NO ERRORS WILL RESULT,THESE * SECTIONS JUST WILL NOT RUN. * TEST2A COPY =:40,A HEX C0=ASCII A - 1 COPY A,SECT RBIT 5,S DISABLE RTC IMS TP2 COPY TP2,A CSK A,PASMAX JMP CNPS2 NOP COPY =0,A COPY A,TP2 CNPS2 COPY A,CPASS COPY  =2,A COPY A,TESTNU JST PTEST SBIT 4,S ENABLE CONSOLE INTERUPTS SBIT 8,S ENABLE ALL INTERUPTS COPY =MODEST,X POINTER TO START OF MODE TABLE COPY X,MODETB STORE AS TABLE PTR COPY =-24,A 24-1 FOR 23 SECTIONS COPY A,CNT2 LOOP2A IMS CNT2 JMP LOOP2B JMP TEST2X LOOP2B COPY MODETB,X COPY 0(X),A COPY A,MODE COPY 23(X),A COPY A,HOLDIT TEMP STORAGE FOR CURRENT TABLE VALUE JST GETCOM GET CODED COMPARE REG. VALUES COPY A,COM1 COPY 23(X),A JST GETCOM  COPY A,COM2 COPY 23(X),A JST GETCOM COPY A,COM3 COPY HOLDIT,A RETURN VALUE COPY A,23(X) COPY 46(X),A COPY A,CADDRS SAVE WHERE SHOULD COMPARE IMS MODETB IMS SECT  BUMP SECTION LETTER IN 4,A GET TEST DISPLAY ON CONSOLE ADD =:10,A ADD 1 TO SECTION NUMBER SELP A,4 PUT NEW VALUE BACK TO DISPLAY JST NODMA NO DMA COPY =ENINTS,A PUT INTERRUPTS ENABLED  COPY A,RTC COPY CNT2A,A COPY A,CNTA JST MONITR JST MONITR JST CFIFOS  COPY =-2,A CSK A,EXIT NOP JMP CONTIN COPY =1,A ERROR CODE 1 COPY A,CODE  JST ERROR JMP LOOP2A ENDLESS LOOP RESTOR RBIT 8,S RESTORE AS BEFORE LAST SECTION RUN COPY SECT,A SUB =1,A PUT BACK TO OLD SECTION NUMBER COPY A,SECT RETURN SECTION NUMBER IN 4,A  GET SECTION FROM CONSOLE SUB =:10,A PUT BACK TO OLD VALUE SELP A,4 RESTORE CONSOLE DATA REG.  COPY MODETB,A SUB =1,A DECREMENT TO OLD VALUE COPY A,MODETB RESTORE CONTENTS JMP LOOP2B GO BACK AND LOOP ENDLESSLY CONTIN COPY :3173,A GET ADDRESS WHERE COMPARE OCCURED CSK A,CADDRS COMPARE WITH TABLE VALUE NOP JMP ERROR2 JMP LOOP2A ERROR2 COPY =2,A ERROR CODE 2 COPY A,CODE ERROR CODE 2 JST ERROR JMP LOOP2A JMP RESTOR GOTO ENDLESS LOOP GETCOM ENT COPY A,HOLD2A  ROTATE A,RO,3 THIS ROUTINE FINDS THE COMPARE LOCATION COPY A,23(X) FROM AN ENCODED TABLE PTR COPY HO LD2A,A AND SEVEN,A AND :7 ADD =COMST,A ADD TABLE START COPY A,COMPST COPY *COMPST,A GET VALUE JMP *GETCOM RTN WITH VALUE IN A CNT2 RES 1 CNT2A RES 1,:FFFE HOLDIT RES 1 HOLD2A RES 1 SEVEN RES 1,:7 CADDRS RES 1 COMPARE ADDRESS * THE FOLLOWING IS A TABLE OF COMPARE ADDRESES * THE VALUE AT COMST IS CODED IN THE COMPARE * REGISTERS WORD AS 0 AND THE LAST VALUE IS * CODED AS 7 (111).THE 3 BIT REPRESENTATION * OF THESE VALUES ARE CODED INTO THREE (3) * THREE BIT FIELDS (LSB) INTO ONE * WORD ./XXXX/XXXC/CCBB/BAAA * AAA = 0 TO 7 REPRESENTING COMPARE REG. 1 * BBB = 0 TO 7 " " " 2 * CCC = 0 TO 7 " " " 3 * XXX = DON'T CARE * THIS WORD THAT IS CODED IS FOUND IN THE * ENCODED COMPARE ADDRESS TABLE,AND THERE IS * ONE VALUE FOR EACH OF THE 23 SECTIONS IN * TEST 2 (A-W) (X-Z DO NOT USE THIS SCHEME). * FOR EACH TEST SECTION THIS WORD IS DECODED * AND THE APPROPRIATE ADDRESS VALUE IS OBTAINED * BY THE SUBROUTINE GETCOM. COMST RES 1,:515 WORD :572,:40,:100,:400,:1000,:7FFF,:4511 COMPST RES 1 MODETB RES 1  LPOOL OPTIONS +:20 MODEST RES 1,:412 WORD :412,:421,:422,:442,:441,:431,:431,:462,:462 WORD :451,:472,:472,:472,:481,:482,:481,:482,:4C2 WORD :501,:502,:501,:541 SPACE 2 * ENCODED COMPARE ADDRESS TABLE * XXXX/XXXC/CCBB/BAAA WORD :9C,:9F,:135,:135,:158,:158,:31,:E WORD :116,:A6,:76,:11A,:113,:A3,:8E,:163 WORD  :30,:31,:B1,:1F1,:1CE,:10D,:70 SPACE 2 * COMPARE ADDRESSES * * THE FOLLOWING TABLE IS THE RESULTING COMPARE * ADDRESS FOR TEST2 SECTIONS A-W BASED ON THE * PREASSIGNED COMPARE REGISTER VALUES AND MODES. P1410 WORD :400,:528,:7FFF,:528,:1000,:528 WORD :7FFF,:7FFF,:40,:40,:7FFF,:40,:40,:40 WORD :528,:200,:572,:800,:40,:528,:10 WORD :7FFF,:572 SPACE 2 OPTIONS -:20 TEST2X COPY =:58,A COPY A,SECT PUT "X" IN SECTION # RBIT 5,S DISABLE RTC IN 4,A AND F00F,A OR ONE8,A SELP A,4 COPY COM2X1,A LOAD COMPARE REG. VALUES COPY A,COM1 COPY COM2X2,A COPY A,COM2 COPY COM2X3,A COPY A,COM3 COPY MODE1X,A COPY A,MODE JST YESDMA DO DMA TRANSFER COPY =ENINTS,A COPY A,RTC COPY CNT2A,A COPY A,CNTA COPY =0,A COPY A,WRFLAG CLEAR DMA WRITE FLAG RTN2X SBIT 8,S ENABLE INTS JST MONITR JST MONITR JST CFIFOS COPY EXIT,A NEG A,A CLSN =4,A  IS IT EXIT 4? JMP EARTN IF NO DMA THEN SKIP REST OF TEST CLSN =1,A DID IT ACHEIVE A COMPARE?  JMP CHECKX IF IT DID THEN SEE IF AT RIGHT PLACE COPY =1,A COPY A,CODE JST ERROR IF NO COMPARE THEN ERROR JMP TEST2Y GO TO NEXT TEST JMP RTN2X GOTO ENDLESS LOOP TEST2Y COPY =:59,A COPY A,SECT IN 4,A AND F00F,A OR ONE8,A ADD =:10,A ADD ONE TO SECTION ON CONSOLE  SELP A,4 COPY MODE1Y,A COPY A,MODE COPY =0,A COPY A,WRFLAG CLEAR DMA WRITE FLAG RTN 2Y SBIT 8,S ENABLE INTS. JST MONITR JST MONITR JST CFIFOS COPY EXIT,A NEG  A,A CLSN =1,A JMP CHECKY COPY =1,A IF NO COMPARE THEN ERROR CODE 1 COPY A,CODE  JST ERROR JMP TEST2Z JMP RTN2Y LOOP IN ENDLESS LOOP CHECKX COPY :3173,A LDA WITH ADDRESS AT COMPARE CSK A,CADRSX IS THE SAME? NOP JMP ERRX1 JMP TEST2Y ERRX1 COPY =2,A IF NOT THE SAME THEN ERROR CODE 2 COPY A,CODE JST ERROR JMP TEST2Y JMP RTN2X ENDLESS LOOP AGAIN CHECKY COPY :3173,A LDA WITH ADDRESS AT COMPARE CSK A,CADRSY IS THE SAME? NOP JMP ERRY1 NOT SAME SO ERROR JMP TEST2Z OK SO NEXT SECTION ERRY1 COPY =2,A IF NOT SAME THEN ERROR CODE 2 COPY A,CODE JST ERROR JMP TEST2Z JMP RTN2Y ENDLESS LOOP NOP NOP TEST2Z COPY =:5A,A  COPY A,SECT IN 4,A AND F00F,A OR ONE8,A ADD =:20,A SELP A,4 COPY MODE1Z,A COPY A,MODE COPY =0,A COPY A,WRFLAG CLEAR DMA WRITE FLAG RTN2Z JST MONITR COPY EXIT,A NEG A,A CLSN =3,A IS IT A DMA EXIT JMP EARTN TEST OK BACK TO START COPY =1,A COPY A,CODE JST ERROR JMP EARTN JMP RTN2Z ENDLESS LOOP ENINTS SBIT 8,S  JMP NORTC COM2X1 RES 1,:7000 COM2X2 RES 1,:5151 COM2X3 RES 1,:570 MODE1X RES 1,:418 MODE1Y RES 1,:428 MODE1Z RES 1,:448 CADRSX RES 1,:7000 CADRSY RES 1,:5151 ONE8 RES 1,:0180 LPOOL TEST5 COPY =:40,A TEST 5 CHECKS SKIP COUNT OPERATION COPY A,SECT SBIT 4,S SBIT 8,S IMS TP5 BUMP PASS # COPY TP5,A LD CURRENT PASS # COPY A,CPASS COPY =5,A GET TEST NUMBER COPY A,TESTNU JST PTEST PRINT TEST NUMBER 5 COPY =1,A COPY A,SKPCNT PUT 1 IN SKIP COUNTER COPY MODE3A,A  COPY A,MODE SET MODE VALUE COPY =-1,A COPY A,CNTA COPY COM3A1,A SET COMPARE REGISTER VALUES  COPY A,COM1 COPY COM3A2,A COPY A,COM2 COPY COM3A3,A COPY A,COM3 COPY =NORTC,A COPY A,RTC JST NODMA NO DMA TRANSFER JST MONITR LOOP3A IMS SECT IN 4,A ADD =:10,A BUMP SECTION NUMBER ON CONSOLE SELP A,4 COPY SKPCNT,A SBIT 1,S ROTATE A,LO,1  ADD 1 BIT AND SHIFT LEFT (1,3,7,15) CLSN =:1F,A 1F MEANS TEST DONE JMP RESKP HAVE OPERATOR RESET SKIP COUNT TO 1 COPY A,SKPCNT SKPCNT IS LOCATED IN BETWEEN MESSAGES IN PROMPT JST SASCNT OVER3A JST PROMPT  PRINT MESSAGE ABOUT SKIP COUNT WORD 68 WORD SCMSG WHERE PROMPT MESSAGE IS JMP OVER3A NOP  JST MONITR JST MONITR DO TWICE TO MAKE SURE FIFO FULL FACTSC COPY =-3,A THIS FINDS THE ACTUAL SKIP COUNT CSK A,EXIT JMP ERR3A NOP DA02 IN :16*8+0,A BUMP THE FIFO ADDRESS 1 DA03 IN :16*8+0,A  GET REAL RESULTS COPY FL410,X JEQ X,P430 COPY =-14,X COPY X,CNT3A COPY =SKPTBL1,X JMP LOOPSC-1 P430 COPY =-15,X COPY X,CNT3A COPY =SKPTBL,X LDX WITH ADDRES OF TABLE -1 SUB =1,X LOOPSC ADD =1,X LOOP SKIP COUNT CSK A,0(X) NOP JMP CONT3A DID NOT FIND SKP CNT THIS TIME JMP DONE3A FOUND SKIP COUNT CONT3A IMS CNT3A JMP LOOPSC COPY =20,A SKIP COUNT NOT FOUND AT ALL COPY A,CODE ERROR CODE 20 JST ERROR JMP LOOP3A JMP RTN3 ERR3A COPY =21,A INCORRECT EXIT FROM MONITR LOOP COPY A,CODE ERROR CODE 21 JST ERROR JMP LOOP3A JMP RTN3 DONE3A COPY =16,A SEE IF SKIP COUNT IS CORRECT ADD CNT3A,A CSK A,SKPCNT NOP JMP NOTEQL JMP LOOP3A NOTEQL CSK A,EQMX JMP NOTEQ1 NOP ADD =:6,A NOTEQ1 COPY A,CODE JST ERROR ERROR CODE DETERMINED BY VALUE JMP LOOP3A GO AGAIN EQMX RES 1,:A RTN3 COPY SKPCNT,A RESTORE FOR LOOP ON ERROR SHIFT A,RO,1 COPY A,SKPCNT COPY SECT,A SUB =1,A  COPY A,SECT IN 4,A SUB =:10,A SELP A,4 RESTORE TO PREVIOUS VALUE AND LOOP JMP  LOOP3A RESKP COPY =1,A RESTORE SKIP CNT TO 1 COPY A,SKPCNT JST SASCNT JST PROMPT PRINT REQUEST WORD 68 WORD SCMSG NOP NOP JMP EARTN LPOOL TITL * TABLE OF SKIP ADDRESSES * THIS TABLE CONSISTS OF VALUES WHICH ARE * TO BE FOUND IN A UNIQUE SPOT IN THE FIFO * THE VALUE DEPENDING ON THE SETTING OF THE SKIP * SWITCH ON THE BUS MONITOR.ALTHOUGH * EVEN SKIP COUNTS ARE NOT SUPPORTED,THEY ARE * IN THE LIST FOR REFERENCE. * THE FIRST VALUE :524 AT SKPTBL IS * THE VALUE CORRESPONDING TO SKIP 1,THE NEXT TO * SKIP 2,3,4,5,6,7,8,9,10,11,12,13,14,AND15. SKPTBL RES 1,:524 WORD :523 WORD :569 WORD :522 WORD :521 WORD :56A WORD :520 WORD :51F WORD :567 WORD :51E WORD :7FFF WORD :56F WORD :51D WORD :51C WORD :9 TITL * TABLE OF SKIP ADDRESSES FOR 4/10 * SKPTBL1 RES 1,:524 WORD :523 WORD :569 WORD :522 WORD :521 WORD :56A WORD :520 WORD :51F WORD :567  WORD :51E WORD :7FFF WORD :7FFF WORD :56F WORD :51D WORD :51C TITL SKPCNT RES 1 ADD3 RES 1 LPOOL OPTIONS +:20 SCMSG WORD CRLF BYTE 'CHANGE SKIP SWITCH (SW1-6,7,8) FOR SKIP' ASCNUM RES 1 WORD CRLF BYTE ' HIT RETURN WHEN READY' OPTIONS -:20 SASCNT ENT  STORES ASCII SKIP CNT,A MUST EQU SKIP CNT IN HE CLSN =:B,A (11)? COPY B101,A CLSN =:D,A (13)? COPY B103,A CLSN =:F,A (15)? COPY B105,A ADD B0B0,A MAKE ASCII COPY A,ASCNUM STORE INTO VALUE JMP *SASCNT TITL * TEST 4 * * THIS TEST CHECKS THE PROPER OPERATION OF THE * INTERRUPT CIR  CUITRY TO IDENTIFY THE CORRECT * VECTOR LOCATION.THE OPERATOR IS INSTRUCTED TO * CHANGE THE VECTOR SWITCH TO :00,:55,AND THEN * BACK TO :AA.IF INCORRECT INT VECTOR,WILL BE * RETURNED IN THE ERROR CODE (IN DECIMAL FORM) * THE ACTUAL LOCATION OF THE INT VECTOR. TEST4 COPY =:40,A SECTION A COPY A,SECT SBIT 4,S SBIT 8,S COPY =4,A COPY A,TESTNU PUT 4 IN TEST NUMBER IMS TP4 COPY TP4,A COPY A,CPASS UPDATE CURRENT PASS JST PTEST PRINT TEST AND PASS NUMBER COPY SMALL,A SMALL IS SMALL VAL FOR COUNT COPY A,CNTA COPY =NORTC,A COPY A,RTC JST NODMA NO DMA COPY MODE3B,A SET MODE COPY A,MODE COPY COM3B1,A SET COMPARE VALUE COPY A,COM1 COPY COM3B2,A COPY A,COM2 COPY COM3B3,A COPY A,COM3 COPY =0,A COPY A,WRFLAG CLEAR DMA WRITE FLAG CONT3B COPY A,INVEC START INTERUPT AT INVEC JST  CINVTA CONVERT VECTOR ADDRESS TO ASCII OVER3B IN 4,A ADD =:10,A SELP A,4 IMS SECT LOOP4A JST PROMPT WORD 67 WORD T3BMSG TEST 3B MESSAGE JMP OVER3B NOP JST TFRMTM PUT IMS INST. IN PAGE 0 WORD 0 AND SAVE PAGE 0 IN RAM BUFFER WORD BPAGE0 WORD 256 JST MONITR  JST FINTVC FIND WHERE INTERUPT OCCURED,RETURN,LOC IN A JST TFRMTM RESTORE PAGE 0 WORD BPAGE0  WORD 0 WORD 256 COPY INTVEC,A CSK A,INVEC NOP JMP $+2 JMP TST55  COPY A,CODE PUT VALUE OF VECTOR IN ERROR CODE JST ERROR JMP TST55 COPY INVEC,A JMP LOOP4A TFRMTM ENT TRANSFER MEMORY PUT IMS INSTRUCTIO IN SOURCE NOP COPY *TFRMTM,A COPY  A,SOURCE PTR IMS TFRMTM COPY *TFRMTM,A COPY A,DESTIN PTR IMS TFRMTM COPY *TFRMTM,X X =WD COUNT IMS TFRMTM LOOP3B COPY *SOURCE,A LOAD SOURCE COPY A,*DESTIN COPY DE00,A COPY A,*SOURCE IMS INSTRUCTION AT EACH MEM LOC IMS SOURCE IMS DESTIN SUB =1,X JNE X,LOOP3B JMP *TFRMTM FINTVC ENT FIND INTERRUPT VECTOR COPY =:0,X THIS ROUTINE SCANS PAGE0 LOOKING FOR LOOP3 COPY 0(X),A FOR IMS INSTRUCTION +1 CSK A,DE00 NOP JMP FNDVEC CLSN =:FF,X  IS AT TOP OF PAGE ZERO? JMP INTNFD GOTO INTERRUPT NOT FOUND ADD =1,X JMP LOOP3 FNDVEC NOP  FOUND INT. VECTOR COPY X,INTVEC A HAS ADDRESS WHERE THINGS OCCURED JMP *FINTVC INTNFD COPY FFF,A INTERRUPT NOT FOUND COPY A,INTVEC JMP *FINTVC TST55 COPY INVEC,A ADD =:55,A CLSN =:FF,A JMP EARTN JMP CONT3B CINVTA ENT CONVER INTERUPT VECTOR TO ASCII CLSN =:55,A FOR PRINTING COPY B505,A CLSN =:AA,A COPY B111,A ADD B0B0,A COPY A,VECNUM JMP *CINVTA SOURCE RES 1 DESTIN RES 1 LPOOL OPTIONS +:20 T3BMSG WORD CRLF BYTE 'CHANGE INTERRUP! T VECTOR SWITCH (SW2) TO ' VECNUM RES 1 WORD CRLF BYTE 'HIT RETURN WHEN READY' OPTIONS -:20 TITL * TEST 3 * * THIS TEST CHECKS TO SEE IF THE EXTERNAL INPUTS * EX0,EX1,EX2 ARE FUNCTIONING PROPERLY. THIS IS * DONE BY CONNECTING THE SYNC OUTPUTS DIRECTLY * BACK INTO THE EXTERNAL INPUTS.WHEN A VALID * COMPARE OCCURS,AT ADDRESS LOCATION 0,THE SYNC * OUTPUT CAUSES A ONE TO BE RECORDED ON THE EXTERNAL * INPUTS.THESE ARE CHECKED ONE AT A TIME ,IN * SECTIONS A,B AND C. * ** NOTE : TEST 3 WILL NOT RUN WITH A 4/10 SPACE 2 TEST3 COPY FL410,A JEQ A,TEST3A JST ASCOUT DOES SYSTEM HAVE A 4/10 WORD 37 WORD MSG410 JMP EARTN YES PRINT MESSAGE AND EXIT TEST TEST3A COPY =:41,A NO RUN TEST COPY A,SECT SBIT 4,S SBIT 8,S IMS TP3 BUMP SECTION COPY TP3,A CSK A,PASMAX  JMP CNPS3 NOP COPY =0,A COPY A,TP3 CNPS3 COPY A,CPASS COPY =3,A SET CURRENT TEST NUMBER TO 3 COPY A,TESTNU JST PTEST IN 4,A AND F00F,A ADD =:10,A SELP A,4 COPY MODE3C,A COPY A,MODE COPY COM3C1,A COPY A,COM1 COPY COM3C2,A COPY A,COM2 COPY COM3C3,A COPY A,COM3 COPY SMALL,A COPY A,CNTA JST NODMA NO DMA COPY =NORTC,A COPY A,RTC COPY =0,A COPY A,WRFLAG CLEAR DMA WRITE FLAG COPY =1,A  1 IN COMPARE VAL,NOCOMPARE,NO SYNC COPY A,COM2 COPY A,COM3 NOP FRST JST MONITR DA04 IN :16*8+3,A AND EZERO,A SHIFT A,RO,5 CLSN =1,A JMP NEXT3C COPY A,CODE JST ERROR JMP NEXT3C JMP FRST NEXT3C COPY COM3C2,A MAKE A 0 COPY A,COM2 MAKE WAY FOR ANOTHER BIT NOP COPY =:42,A COPY A,SECT IN 4,A AND F00F,A ADD =:20,A SELP A,4 SECND JST MONITR LOOK FOR EX 1 DA05 IN :16*8+3,A AND EZERO,A SHIFT A,RO,5 NOP  CLSN =3,A JMP CONT3C COPY A,CODE JST ERROR JMP CONT3C JMP SECND LPOOL CONT3C NOP NOP IN 4,A AND F00F,A ADD =:30,A SELP A,4 COPY COM3C3,A  COPY A,COM3 NOW ALL SHOULD BE 1'S(111) COPY =:43,A COPY A,SECT THRD JST MONITR DA06 IN :16*8+3,A AND EZERO,A SHIFT A,RO,5 CLSN =:7,A JMP FRTH COPY A,CODE JST ERROR JMP FRTH JMP THRD NOP FRTH JMP EARTN DO DIAGNOSTIC OVER EZERO RES 1,:E0 LPOOL * TEST 6 * * THIS TEST RUNS IN A LOOP SO THE * OPERATOR CAN CHECK THE SYNC OUTPUT * WITH AN OSCILOSCOPE,VERIFYING CORRECT * 100NS PULSES AT J-2 PINS 4,5,6,7. TEST6 COPY =:41,A COPY A,SECT SBIT 4,S SBIT 8,S IMS TP6  COPY TP6,A COPY A,CPASS COPY =6,A COPY A,TESTNU JST PTEST PRINT TEST NUMBER AND PASS IN 4,A ADD =:10,A SELP A,4 JST NODMA NO DMA WITH I/O TEST CARD COPY =NO" RD CRLF BYTE ' SENSE SWITCH OFF =>TEST START' WORD :0A0A LARGE RES 1,:FFFE SMALL RES 1,:FFFD LPOOL * TEST 7 * THIS TEST CHECKS THAT THE RESET CAPABILITY * IS IN WORKING ORDER.UPON ENTRY INTO THE * PROGRAM TEST,THE RUN LIGHT SHOULD GO OUT. TEST7 COPY =:41,A COPY A,SECT SBIT 4,S SBIT 8,S IMS TP7 COPY  TP7,A CSK A,PASMAX JMP CNPS7 NOP COPY =0,A COPY A,TP7 CNPS7 COPY A,CPASS ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I# ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I$ ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I% ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I& ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’Iÿÿÿÿÿÿe;791019092100791019092100800418084001eú@€791019092100791019092100791019092100e:' 791019092100791019092100791019092100e791019092100791019092100791019092100791019092100791019092100791019092100ejÓÒ8004180859092580041808593575800418085935de–)8004180836502580041808365350800418083653de 8004180837565080041808380250800418083802d e†  8004180859517580041808595850800418085958d(  e“*<8004180900140080041809002225800418090022d e€*<8004180835565080041808360425800418083604d) * + , - . / 0 þÿÿÿÿÿÿÿÿÿÀÿÿÿÿÿÿÿÿÿÿüÿÿÿÿÿÿÿÿÿÿÿð. BUSMONDIG ASMHELP4 HLPDEBUGX OBJ BUSMONDIG OBJ BUSMONDIG BINBUSMONDIG BINO0SEGMENTBLANK DEBUG: o „ g$„å¾¾ô ±Þ}¾Øžº´EÕ¾áã¦Â 4”Å{y–­Fzrk\±ÖAw“¯‹õ´ñÙßå ÷^kE_Ô¦Ä`àßá­ T…û¾Ê (½Ô :½Ô‚9Š’½Õ -½Ô :½Ô‚" ÿЉ½Õ )½Ô ½Ô Š‚…÷Çÿþ g ¿†ÈæÊ¦ÈÆÆp†ÇP†Æ01 †Å @0†ÂB ž †¾¢` Ÿh † ‚}’¾cÅøžD «¢«â«‚®‚­‚§p‚¦P‚¥0O‚œŸo ½Ò X½Ô D½Ô B½Ô U½Ô G½Ô 4½Ô ½Ô D½Ô 0½Ô ½ÔŸi ¾7Ÿ}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ½Ò ½Ô‚z½Ô¾¶¾µ P¾«÷½Û A¾§Ø‚C½Ü Q¾£‚@½Ü X¾Ÿ‚=½Ü Y¾›‚:½Õ½Ò¾Ÿ¾ž¾ K¾“‚3½Ü L¾‚0½Ü S¾‹‚-½Ü D¾‡‚*½Ü C¾ƒ‚'½ÕŸK ½Ô =½ÔŸ{ ¾Ÿ} ½ÔŸ|‚Ê"„ †Å½Ò *½Ú½Ó†À Yž¤ Qž¢ žè Až½ TÞ Gžž„½Ó½Ù†¯ž‘ Ržž†½Ó ž£½ØÆ¦žˆ Mì Dé Vé Wê½×ƚ›LBžùLCÑLFÏLLÎLSÐLJžÁLIËLGÊLRÉLZèÆ …ö½Èž8 ¾+Ÿ}½Ó†{½Ó†u½Ó žÆ‚t Pž” LžÆ‚j Tž‹ Pžƒ BžÆý…ú P…û ½Ô‚\…ûž …ü‚W Hž„ TžÆ…üž½Ó Åž|ÁîQE‚I…÷ò ,ž§ò ,ž˜½Ò `‚šÿ–›†— 6Á‚“†‡‚“‡‹‚’‡ˆ÷†…½Ö†áŸ€—– _½Úž­ž"°¿€&Ù?ÿ ¾#Ÿ}ª¸¦¸ `ù JžŒ Bž†Á÷ YK QJÿžˆ‚¨fÁׂ¤ ž^Þ¡ @‚²€ÞŸ ‡žÞ§œ `ò@E ;ž‚ž†žà½×RA@EN@AÞÇŽ QÁÞŠ‡‰ò ,ž^ž$žAÆúY½ž o±¾)‚{ ÿ…÷†w‚_Ä D `…öžž†n÷¢X*ü¸‚ž›€ƒQ€„†c À ‚Ѐª^Ѐ Ä„‚ÂY@AĄ܃žS B `…ö½Èö DÝ÷ž„*üÞKž_žU‚2 `Å¢0*ü¦.€ ‚„€‚( ÿ†&žr o±¿‚{…÷†5 M…öƒˆ¶ˆ‡†ƒ‡ì‡… `žX%è%3&?t ¿zŸ}½Ó žô Tžž„½Ó žèÆ Cžž‚Þôžé Ižž‚Þðžä Užž‚Þìžß Nžž‚ÞèžÚ Sžž‚ßóžÕ AžžÚßïžÐ ‚ØÂ›PQIƒå“¢†£À`@"ÓŸÆ  †þ-LŒ…þŸlQÅ‚•‡’‚”‡‘Þ„þM…þŸb ¾5‚}â¼¢»…÷ †x CŸÆ”• ‚¬Â“KQG‚æ“æ†çÀa@"ÓãÆä †ˆŸqQłއÛÂÝÇÚÞŸj ¾ýƒª…÷ Ižê"ÞÞÞÞÞ³Þ³ž’½Ó ž ,žž‚½Óž ¾àÆ ¿Ÿ}¾¾I¾ž¾è¿‹¿‹¾ÐætÅ'²'Û'š'›'Ì„&î((± ‚W¨KQG‚“”†•Àb@"Ó‘Æ’ †ŸqQÅ‚Œ‡‰Â‹ÇˆÞ–Ÿj¿€†‡Š‹š›žŸª« ¾’ƒñ…÷ U…ö½ÈÇ ¾'Ÿ} †††††A†AŸw ¾r‚} þ†{ ‡yÞxÞw¢âŸt ‚ “KQG‚E“M†NÀc@"ÓJÆK †ˆŸqQÅ‚E‡B‚DÇAÞŸj ¾\ƒ¼…÷ NžI ‚“KQG‚)“5†6Àd@"Ó2Æ3 †ˆŸqQÅ‚-‡*Â,Ç)ÞŸj ¾@ƒ¡…÷ Sž- ƒÂ“KQG‚ “†Àe@"ÓÆ †ˆŸqQÅ‚‡ÂÇÞŸj ¾$ƒ‡…÷ Ažˆ˜œ'›¨½Ì ¦Áõ"B†œîƽ҃˜½Ü½×½ÌîCðü‡‘Åñ Å /ž† XžÆƒ‡ž‚ƒ„ ½Ò½Üži °ž]½Ò@½Ûƒ¨½Ü½×îB…ôÇ¢ò ,žœÂžñ[ +ž‰ -žˆ *žŠ Xž‹ /žŒÆKJÿÆŽÅïž^ƒ‹…ïž[ƒˆž{ƒ… žxÞ‚žZÅ ,ÆŸ|¾Û ž†½×½ÌL žÆÆÎû Pžž„ý…ú ½ç½Òï†à½Ûø†Á†¾ƒÛ½Ü½æÞºž{‚¹ ¾ƒ‚Ó½Òžq ‚±†´Ž±k†¬ŠÉ†È‚­Gû†©½ÍÞ§ž}Þ¦žyý†¢½ÍÞ ž}ƒ¹y E  à ž .½Ôƒ®ÿ E  à ž .½ÔÞ£ÞƒžfŸN ,žÆ½×†s@ÁïFž…C ’kŸqÁùLLžÆ¾ (žwž{žu Â^Þ|JÿQBÆZŸyù Lžˆ Sžžû TžŠ½ÒžˆÞN‚M ¾ †Ižsž‰…ôï¾Ë†_‚”‡]¾]Š’ž| IÆŽ¾> ,žÆ½×Ƈ ,žžƒ†·½×Æ‚ŸpIư¾k ,ž“ ’« ,üžƒHÿÆtž’‚r žŽHÿÆmñ -žÆ†›ž†½×ñ -žÆ†”ï†(ƒ'š\–\ÂFžƒ‚Š -ž‚¾žt½Ò‚½Ûƒ½Õžx Â’@"Fž‚Ÿzž‡@ ÎŒ‰ó ÿFž„ …ôÆó Ÿl d¾#…ô† ‚.¾b†žÁóÆƒ™‡šÞ™Þ–JÿQº‚”†’‚!†’Â’ƒŽ»ž…ÞŠÞ‹JÿQ¸Å½Ò %½Ô‚‚½Õžu †U ½Ô ½Ô ’‰B *ž ½Ô ½Ô‚GŸo †h½Õ †fÿ†e °"†cIƒaM K ÿ¢Y&žž†¢V&žƒ†RÆR `ÞQKL$žžk‚K N =½Ô‚DŽD½Õ G½Ô‚A öÁ  :½Ôž€ ½ÔŸL ¾ƒ ¾ÇŸ{ †’¹¾‡y¾…9¾ƒ¾‚Ÿu  öÁ  :¾´‚Ÿw ® 0¦”‡¢‚C C 96¼C C "¢…0 `Ÿj† •…ð¢’C "C ¢tC I6½Ò²DŽ’ÃŽ‘Až³³6PO6P6Pž”ÿû&?..7&7*f$„2 g Fžƒ Iž D½Ò½Ôû†lÞkž„½Ò ½Ôžx ½Ô²½Û³@9¿—@¿•@? R6A W½Ô ½Ô±ÞžCËˋJ°R>JÿKSB±ž|½ÒÅ*-}-|0ƒB–ö†{½Ó ž–ž½Ó†v½ÓÂt’rLD¶ëLE¶êLI¶éLR¶èLW¶çÁÆ–å’d ,žk‚a‡%´ƒ#ü‡!ž§žœƒÅ†yƒÄC†xƒÃ†wƒ–ÌÃÀÆpQAlýÆkL=\L>ŒL:|öÆbL<ŒL=L‡±´‚^±‚]²‚\³žQÿü HÿÇž½í ž®’w‡˜‡œ‡š‡—‡—’q’q†n’ožƒ žŠ½í =žÀ <žÔ >žÚ :žàÆÞbŸaÆ-t-v-x-w-u-s&?dyð€‚„€€ÿþ½Ò C½Ô 1½Ô =½Ô‚½Ü C½Ô 2½Ô =½Ô‚½Ü C½Ô 3½Ô =½Ô‚ ½Ü M½Ô =½ÔƒT–·½Ü½ÒžHÞ&žÆ½×† =“FF“EF“C“CEÆÇ=žƒÇ:žÇ7‚ž&ޞƓ5½½×Ç-žÞžÆ“,µ½×Ç&žޞƓ$½ÓQ»ß‡žÆ½×LJž?ÿ.\€Ÿ€"Ÿ’¿€J‘ÿÿŒ¿€š”¿€^b¿€‚ª¿€B! EWŸöU´)‚é†é †å‚籂沂峂䴰€€.1½%€€'‡Ñ‚Èa‚ÉD¨‚Æbb…ÞËžo±ü†Í†¹ŸS‚Âÿ†À‚¼a‚³bb…†­¿ÁŸE  ‡'ÿ†±^Ÿ6 '‚}†—þ†¨±ž­WŸ,'ý†Ÿ±Ÿ%Þ”žPžv 'AŸ˜Ÿ˜fgp[ÿÿîîQQÿÿÿrstuvwxyz{"J!"Ÿÿ‡œžP ^žV ††††Ÿy ‚ˆ†‚‡†‚††‚…†Ÿva¨bb  ‘0 [#$%&rr( @€ E@€  oÿg j!"i#$%&rr( \ @‡êWßíƒì»ìžƒ ‡ç‡è ‡ç¿çE…¢å¦Ùè†ÈÞÇžŸà¢Ó€€†<€—†Â¾µ†5€—¾²†3€—¾¯†1‚¹„—€®†¹ÞÂß ¾7‚¾†*‚¬†¿»¿º¿ºþº!ž † ¿žW‡ƒ­ ÿ‡« ð‚¦ ÿ†¤žOƒ¯º—žžG ‡¡¿ žCžk †‹+„—‚ˆ–ˆŠ †ƒŸvýÿþÿr@ÿE  "CÇ#éf"¡#ý"n"m"_1s#!"BA11bbQrrr‚‚ÂAœŸ55XX1¦v‹£Žc01±ñÎ p(ÿ((ÿÿ@@ÿ@@@(r@(ÿr X‡+W—û¶ì‚â‡ê‚á‡é‚à‡è‚߇ç¿ñ‚‡å‚ ‡ä ‡ì…¿¿¿ƒÞ ŸÜ ž ‡¿Øžžq Y‡—×¶È ‚Á‡È ‡Ò…¿Ê¿É¿ÏƒÄ ž ‡Ã¿Àž—žsƒÆº±žžc ‡¹¿¶ž_žOƒ¼º¨žž‡ ‡¯¿¬žƒž_ Z‡©—©¶š ‚”‡š ‡¤¿ƒ™ Ÿ— ‡˜¿•Ÿ“žv…Ÿ•pQQp(HpQQ€stuvzq3 x"‰"Jf"C#üŒp#é;1s @‡wE…ßùƒø‡ò ‡ñ¿ñ †ëƒò‡cÿ‡cƒï‡\ƒî‡[ƒí‡Z‚c‡Z¿ã¿]ß^ ‚Ø ž¼†Ó¿Þ¿×Djž|¿L¿Ký»Fž“°°(ñ§Ð¢Ð*ÿ+¸€žžŒßÈžy ‡9¿6žYž“ ‡4¿1žTžŽ ‹»º­žžMº†ž‚ ‡&¿#žF ‚¡ †Ÿƒ ÿ‡ ðž; †–¾Æ¿šDjŸ $#i"!j gÿo \]"n"m"…"®"¤ Z _ ` aŒ kL CHANGE SKIP SWITCH (SW1-6,7,8) FOR SKIP €~ HIT RETURN WHEN READY ƒþ ƒý ƒü‹ü†jŸv @‡èE… ‡Bßôƒó‡>¿?ƒà‡à‚à‡à¿;ƒì‡Þƒë‡Ýƒê‡Üƒé‡Û ‡Ú‡æ¾Å ßË¿+Cžx¾“ †¿Ë¾¡¾ †ƒÒ»Ðžž¨‡Á¿Áž¥ƒÉžg ƒ}†¬Þ{ƒz†ªÞx£wÞvƒ¥‡¥ƒ½‡¢Þ¡Þ¡*ÿ1¸Ÿm )€€»³ž„,ÿž…+žx§ªŸsƒª‡§Ÿpƒ¤ U ÿŸ¥ž9 Uƒ¢ ªƒ¡‹”†¶Ÿxÿ"C #qzvstupf"J n o p q"£ [ b c d l m s t"‰ u † CHANGE INTERRUPT VECTOR SWITCH (SW2) TO 4P HIT RETURN WHEN READY A‡>E…ßȃǻǞƒ ‡Â‡¸ ‡·¿·—¶ ƒ»‡0ƒº‡/ƒ¹‡.ƒ®‡-ƒ%‡%¿«‚$‡$ ‡' ‡#‡#¿#³–ÀI ž„‡¿žžvƒ ‡ B‡ — ¿³–­I ž“‡Š¿Šžžu"n"m"#ü g…©f"J"¢#ý \ e f—p 0ƒn‡ C‡Ž¿Ž³–‰I ž…‡g¿gž‚žvŸ„àu"C"‰9 A‡{E…ßùƒø‡O ‡N¿N ¿M‚ç‡çƒî‡æƒí‡åƒì‡äƒë‡d‚Û‡á ‡à¿æˆÝž|¿\¿[¿Z¿Yý»ÖžžxƒÓ‡1¿1ŸQžr HIT RETURN WHEN RE;ADY TO MONITOR SYNC OUTPUTS HIT CONSOLE INT. TO EXIT SENSE SWITCH ON =>DEBUG SENSE SWITCH OFF =>TEST START ÿþÿýzvstqpx"¥ ] h i j"®( A‡ÆE…ßăûÞƒ ‡¾‡¿ ‡¾¿¾ ‚‡a‚œ‡`‚›‡¶‚Y‡Y¿´ ‡[‚އU‚Q‡V¿®ƒV‡¬¿¬Ÿ¬žyss@€€€@ l m n0001Þ11 ° ±"C"¦#ý"n"m"u…f"J"‰ † m*** DEBUGX.OBJ - REV D0 *** !W¾â¾†¿Ÿ!›"x Ø†× ¢þ„€+ÞÒž|‚ú†Ê¿ó*!Ì%žrž˜ƒï‡ï¿ï žºÂž‚žhº½žfžŸè–» ÿŠæ†µƒ´‡²Þ±žm‚ᇮŸX‚݆¬ƒ«‡©ºÚžŸPÞ¤Þ¤žw!U#  @–ä® 2"‚!^!_!`08!d ¿«+!¶‚©‡©¿©ƒ©‡© ‡¨‡¨¿¨ƒ¨ Ÿo¿›!yŸk NO I/O TEST CARD INSTALLED  "®"ç"æ"ö"þ!<"Ÿ!U"‚#7 zŒkqpvx ¿k¢!áž{žŽƒg‡g¿g 1žƒ 2ž„žr‚ˆ‡ˆŸo‚‡‡…Ÿl‚…‡‚Ÿi"U"O"S"P& BUS MONITOR DIAGNOSTIC REV A0 TEST(S) DESIRED (1234567)? ORg DEBUG(0)? SELECT RESPONSE ON ERROR (CR)-RUN ALL TESTS SELECTED,CONTINUE ON ERROR 1-LOOP ON ERROR 2-JUMP TO DEBUG ON ERROR ENTER DESIRED RESPONSE (SELECT ONLY ONE)  *** ERROR TEST # SECTION #"Dð PASS #  ¶wŸ€"P¾†Ÿw¾„žÊÞt¾Ÿr R ¢“¿“ƒ–¿– ¢¿Ž‚Š¿Ž ¢¿‰ ¢Š¿†‚ƒ¿†Ÿk"n"o"2"ë"8#H"Ef#&"=)W †¤†¤†¤†¤†¤†¤†¤‚§‡§†£ƒ¢‡¥†¡Ÿ ß¡ÞWžx ‚^M ¢\¾× ¢[¾Ô‚U¿Y ¢X¾Ï‚Q¿TŸnŸ"¤"¥"¦"§"©"ª!Þ8žeŸVƒµ¿²žh B‡ –2 ¿­‚­‡ƒ¬‡W…¿©W…¿¦ý»¥ž‹Ÿ¤¾ ƒ¢ žž‰ƒŸ Ÿ›žŠ ‡›¿›Ÿ–žg ‡–¿–Ÿ‘žb ‡‘¿‘ŸŒž]"D#7##b#&#žŒÇkx"‰11f"J!MONITOR DIAGNOSTIC REV A0 TEST(S) DESIRED (1234567)? ORg DEBUG(0)? SELECT RESPONSE ON ERROR (CR)-RUN ALL TESTS SELECTED,CONTINUE ON ERROR 1-LOOP ON ERROR 2-JUMP TO DEBUG ON ERROR ENTER DESIRED RESPONSE (SELECT ONLY ONE)  COPY =7,A COPY A,TESTNU JST PTEST IN 4,A ADD =:10,A SELP A,4 COPY COM3B1,A COPY A,COM1 COPY COM3B2,A COPY A,COM2 COPY COM3B3,A COPY A,COM3 COPY =NORTC,A COPY A,RTC JST NODMA COPY =0,A COPY A,WRFLAG COPY MODE3E,A MODE FOR COMPARE AND RESET ON COMPARE COPY A,MODE COPY SMALL,A COPY A,CNTA ENDING JST MONITR COPY EXIT,A NEG A,A COPY A,CODE JST ERROR JMP EARTN JMP ENDING MODE3A RES 1,0 NO COMPARE MODE3B RES 1,:412 MODE3C RES 1,0 MODE3D RES 1,:73 MODE3E RES 1,:273 RESET ON ALL COM3A1 RES 1,0 COM3A2 RES 1,0 COM3A3 RES 1,0 COM3B1 RES 1,:40 COM3B2 RES 1,:100 COM3B3 RES 1,:400 COM3C1 RES 1,:8000 COM3C2 RES  1,:8000 COM3C3 RES 1,:8000 COM3D1 RES 1,:40 COM3D2 RES 1,:100 COM3D3 RES 1,:400 CNT3A RES 1 INVEC RES 1 INTVEC RES 1 B101 RES 1,:0101 B103 RES 1,:0103 B105 RES 1,:0105 B0B0 RES 1,:3030 B0B1 RES 1,:3031 DE00  RES 1,:DE7F FFF RES 1,:100 B505 RES 1,:0505 B616 RES 1,:1616 B1B1 RES 1,:3131 A0B0 RES 1,:A0B0 A0B1 RES 1,:A0B1 LPOOL BPAGE0 RES 256 B111 RES 1,:1111 LPOOL END START MS TP7 COPY  TP7,A CSK A,PASMAX JMP CNPS7 NOP COPY =0,A COPY A,TP7 CNPS7 COPY A,CPASS O0SEGMENTBLANK DEBUG: o  g å¾¾ô ±Þ}¾Øžº´EÕ¾áã¦Â 4”Å{y–­Fzrk\±ÖAw“¯‹õ´ñÙßå ÷^kE_Ô¦Ä`àßá­ T…û¾Ê (½Ô :½Ô‚9Š’½Õ -½Ô :½Ô‚" ÿЉ½Õ )½Ô ½Ô Š‚…÷Çÿþ g ¿†ÈæÊ¦ÈÆÆp†ÇP†Æ0†Å @0†ÂB ž †¾¢` Ÿh † ‚}’¾cÅøžD «¢«â«‚®‚­‚§p‚¦P‚¥0O‚œŸo ½Ò X½Ô D½Ô B½Ô U½Ô G½Ô 4½Ô ½Ô D½Ô 0½Ô ½ÔŸi ¾7Ÿ}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ½Ò ½Ô‚z½Ô¾¶¾µ P¾«÷½Û A¾§Ø‚C½Ü Q¾£‚@½Ü X¾Ÿ‚=½Ü Y¾›‚:½Õ½Ò¾Ÿ¾ž¾ K¾“‚3½Ü L¾‚0½Ü S¾‹‚-½Ü D¾‡‚*½Ü C¾ƒ‚'½ÕŸK ½Ô =½ÔŸ{ ¾Ÿ} ½ÔŸ|‚Ê"„ †Å½Ò *½Ú½Ó†À Yž¤ Qž¢ žè Až½ TÞ Gžž„½Ó½Ù†¯ž‘ Ržž†½Ó ž£½ØÆ¦žˆ Mì Dé Vé Wê½×ƚ›LBžùLCÑLFÏLLÎLSÐLJžÁLIËLGÊLRÉLZèÆ …ö½Èž8 ¾+Ÿ}½Ó†{½Ó†u½Ó žÆ‚t Pž” LžÆ‚j Tž‹ Pžƒ BžÆý…ú P…û ½Ô‚\…ûž …ü‚W Hž„ TžÆ…üž½Ó Åž|ÁîQE‚I…÷ò ,ž§ò ,ž˜½Ò `‚šÿ–›†— 6Á‚“†‡‚“‡‹‚’‡ˆ÷†…½Ö†áŸ€—– _½Úž­ž"°¿€"U?ÿ ¾#Ÿ}ª¸¦¸ `ù JžŒ Bž†Á÷ YK QJÿžˆ‚¨fÁׂ¤ ž^Þ¡ @‚²€ÞŸ ‡žÞ§œ `ò@E ;ž‚ž†žà½×RA@EN@AÞÇŽ QÁÞŠ‡‰ò ,ž^ž$žAÆúY½ž o±¾)‚{ ÿ…÷†w‚_Ä D `…öžž†n÷¢X*ü¸‚ž›€ƒQ€„†c À ‚Ѐª^Ѐ Ä„‚ÂY@AĄ܃žS B `…ö½Èö DÝ÷ž„*üÞKž_žU‚2 `Å¢0*ü¦.€ ‚„€‚( ÿ†&žr o±¿‚{…÷†5 M…öƒˆ¶ˆ‡†ƒ‡ì‡… `žX!d ¯!»5 t ¿zŸ}½Ó žô Tžž„½Ó žèÆ Cžž‚Þôžé Ižž‚Þðžä Užž‚Þìžß Nžž‚ÞèžÚ Sžž‚ßóžÕ AžžÚßïžÐ ‚ØÂ›PQIƒå“¢†£À`@"ÓŸÆ  †þ-LŒ…þŸlQÅ‚•‡’‚”‡‘Þ„þM…þŸb ¾5‚}â¼¢»…÷ †x CŸÆ”• ‚¬Â“KQG‚æ“æ†çÀa@"ÓãÆä †ˆŸqQłއÛÂÝÇÚÞŸj ¾ýƒª…÷ Ižê"ÞÞÞÞÞ³Þ³ž’½Ó ž ,žž‚½Óž ¾àÆ ¿Ÿ}¾¾I¾ž¾è¿‹¿‹¾ÐætÅ#.#W###H„"j##›± ‚W¨KQG‚“”†•Àb@"Ó‘Æ’ †ŸqQÅ‚Œ‡‰Â‹ÇˆÞ–Ÿj¿€†‡Š‹š›žŸª« ¾’ƒñ…÷ U…ö½ÈÇ ¾'Ÿ} †††††A†AŸw ¾r‚} þ†{ ‡yÞxÞw¢âŸt ‚ “KQG‚E“M†NÀc@"ÓJÆK †ˆŸqQÅ‚E‡B‚DÇAÞŸj ¾\ƒ¼…÷ NžI ‚“KQG‚)“5†6Àd@"Ó2Æ3 †ˆŸqQÅ‚-‡*Â,Ç)ÞŸj ¾@ƒ¡…÷ Sž- ƒÂ“KQG‚ “†Àe@"ÓÆ †ˆŸqQÅ‚‡ÂÇÞŸj ¾$ƒ‡…÷ Ažˆ˜œ#¨½Ì ¦Áõ"B†œîƽ҃˜½Ü½×½ÌîCðü‡‘Åñ Å /ž† XžÆƒ‡ž‚ƒ„ ½Ò½Üži °ž]½Ò@½Ûƒ¨½Ü½×îB…ôÇ¢ò ,žœÂžñ[ +ž‰ -žˆ *žŠ Xž‹ /žŒÆKJÿÆŽÅïž^ƒ‹…ïž[ƒˆž{ƒ… žxÞ‚žZÅ ,ÆŸ|¾Û ž†½×½ÌL žÆÆÎû Pžž„ý…ú ½ç½Òï†à½Ûø†Á†¾ƒÛ½Ü½æÞºž{‚¹ ¾ƒ‚Ó½Òžq ‚±†´Ž±k†¬ŠÉ†È‚­Gû†©½ÍÞ§ž}Þ¦žyý†¢½ÍÞ ž}ƒ¹y E  à ž .½Ôƒ®ÿ E  à ž .½ÔÞ£ÞƒžfŸN ,žÆ½×†s@ÁïFž…C ’kŸqÁùLLžÆ¾ (žwž{žu Â^Þ|JÿQBÆZŸyù Lžˆ Sžžû TžŠ½ÒžˆÞN‚M ¾ †Ižsž‰…ôï¾Ë†_‚”‡]¾]Š’ž| IÆŽ¾> ,žÆ½×Ƈ ,žžƒ†·½×Æ‚ŸpIư¾k ,ž“ ’« ,üžƒHÿÆtž’‚r žŽHÿÆmñ -žÆ†›ž†½×ñ -žÆ†”ï†(ƒ'š\–\ÂFžƒ‚Š -ž‚¾žt½Ò‚½Ûƒ½Õžx Â’@"Fž‚Ÿzž‡@ ÎŒ‰ó ÿFž„ …ôÆó Ÿl d¾#…ô† ‚.¾b†žÁóÆƒ™‡šÞ™Þ–JÿQº‚”†’‚!†’Â’ƒŽ»ž…ÞŠÞ‹JÿQ¸Å½Ò %½Ô‚‚½Õžu †U ½Ô ½Ô ’‰B *ž ½Ô ½Ô‚GŸo †h½Õ †fÿ†e °"†cIƒaM K ÿ¢Y&žž†¢V&žƒ†RÆR `ÞQKL$žžk‚K N =½Ô‚DŽD½Õ G½Ô‚A öÁ  :½Ôž€ ½ÔŸL ¾ƒ ¾ÇŸ{ †’¹¾‡y¾…9¾ƒ¾‚Ÿu  öÁ  :¾´‚Ÿw ® 0¦”‡¢‚C C 96¼C C "¢…0 `Ÿj† •…ð¢’C "C ¢tC I6½Ò²DŽ’ÃŽ‘Až³³6PO6P6Pž”ÿû!»)Š)³!³%â 2 g Fžƒ Iž D½Ò½Ôû†lÞkž„½Ò ½Ôžx ½Ô²½Û³@9¿—@¿•@? R6A W½Ô ½Ô±ÞžCËˋJ°R>JÿKSB±ž|½ÒÅ%Œ(ù(ø0ƒB–ö†{½Ó ž–ž½Ó†v½ÓÂt’rLD¶ëLE¶êLI¶éLR¶èLW¶çÁÆ–å’d ,žk‚a‡%´ƒ#ü‡!ž§žœƒÅ†yƒÄC†xƒÃ†wƒ–ÌÃÀÆpQAlýÆkL=\L>ŒL:|öÆbL<ŒL=L‡±´‚^±‚]²‚\³žQÿü HÿÇž½í ž®’w‡˜‡œ‡š‡—‡—’q’q†n’ožƒ žŠ½í =žÀ <žÔ >žÚ :žàÆÞbŸaÆ(ð(ò(ô(ó(ñ(ï!»dyð€‚„€€ÿþ½Ò C½Ô 1½Ô =½Ô‚½Ü C½Ô 2½Ô =½Ô‚½Ü C½Ô 3½Ô =½Ô‚ ½Ü M½Ô =½ÔƒT–·½Ü½ÒžHÞ&žÆ½×† =“FF“EF“C“CEÆÇ=žƒÇ:žÇ7‚ž&ޞƓ5½½×Ç-žÞžÆ“,µ½×Ç&žޞƓ$½ÓQ»ß‡žÆ½×LJž?ÿ)Ø€Ÿ€Ÿ’¿€J‘ÿÿŒ¿€š”¿€^b¿€‚ª¿€B"W¾â¾†¿Ÿ›x Ø†× ¢þ„€+ÞÒž|‚ú†Ê¿ó*Ìžrž˜ƒï‡ï¿ï žºÂž‚žhº½žfžŸè–» ÿŠæ†µƒ´‡²Þ±žm‚ᇮŸX‚݆¬ƒ«‡©ºÚžŸPÞ¤Þ¤žwU  @–ä® 2‚^_`08dÇ ¿«+¶‚©‡©¿©ƒ©‡© ‡¨‡¨¿¨ƒ¨ Ÿo¿›yŸk NO I/O TEST CARD INSTALLED ®çæöþ<ŸU‚7zŒkqpvx ¿k¢áž{žŽƒg‡g¿g 1žƒ 2ž„žr‚ˆ‡ˆŸo‚‡‡…Ÿl‚…‡‚ŸiUOSP BUS MONITOR DIAGNOSTIC REV A0 TEST(S) DESIRED (1234567)? OR DEBUG(0)? SELECT RESPONSE ON ERROR (CR)-RUN ALL TESTS SELECTED,CONTINUE ON ERROR 1-LOOP ON ERROR 2-JUMP TO DEBUG ON ERROR ENTER DESIRED RESPONSE (SELECT ONLY ONE) *** ERROR TEST # SECTION #Dð PASS #  ¶wŸ€P¾†Ÿw¾„žÊÞt¾Ÿr R ¢“¿“ƒ–¿– ¢¿Ž‚Š¿Ž ¢¿‰ ¢Š¿†‚ƒ¿†Ÿkno12ë8HEf&=W †¤†¤†¤†¤†¤†¤†¤‚§‡§†£ƒ¢‡¥†¡Ÿ ß¡ÞWžx ‚^M ¢\¾× ¢[¾Ô‚U¿Y ¢X¾Ï‚Q¿TŸnŸ¤¥¦§©ª;<]^  D Š{†zŸy¢x€€ ¾²‚¯†«†©†ª¿«%‡¥' žŽ†£ _žƒÞžžuž€‚›º›žhžžf ÿ†•žl‚”†’¢Y‚’ _ž]%ƒŒ' ^œ‚ œƒ #žœ„ †œƒæçèé þv ††¦† ¾ò ¾ð¾Äôõ Ÿu %ƒm' žÞiŸx&  )†y9 öB ºž A¾±‚„)1*ÿ1³Ÿp ƒ~†ŒÞ{£zÞy.%€€'¾Ÿ+Þ‚žyŸp †‘‚©†‘ü†Ž‚Œ)/Œ+=‹‰†† ¾‹Þ…ÞƒžtŸm\]^7èd  ¾Ÿ¢"ùø¢ŠùI6=ùI6½"ù¾›Ÿqƒ‹^† ¾‹‚‰ù¢wù96½ø"ù¾ŠŸt† _†0’‡¦ŒŸx _’‡y 6Á…’‚¢‚Ÿv–—ÿÿ **W‚w‡´Wß³ƒ²º×žƒ ‡­‡­ ‡¬¿¬‚j‡«‚i‡ª‚h‡© ‡¨E A‡˜–Á …¿ ‚ ‡‘‚Z‡¿¿œƒœ ž… ‡‰¿‰Ÿ–žu¾š¾¯žõCzqfJv nmstup…x‰ ¢¦‹(°¦‹³‡‡Þ†°‡„ÞƒÞ„žxŸrø0Ôú0 üð'ÿ ÂwÆ|(`¦u¢s¦q¢s€€»už†ÞmžŸq+ÞntžvÅ ‡@¿@Ÿiž,¾žy ·Ø¿×2(°¦W¢U¦SÂSÆX¢S€€»Tž—ƒÉ¿ÉƒO¦K¿Ç¢I  6H+ÞGÞ?€€»Dž‡žoÞ9+Þ>Þ8žeŸVƒµ¿²žh B‡ –2 ¿­‚­‡ƒ¬‡W…¿©W…¿¦ý»¥ž‹Ÿ¤¾ ƒ¢ žž‰ƒŸ Ÿ›žŠ ‡›¿›Ÿ–žg ‡–¿–Ÿ‘žb ‡‘¿‘ŸŒž]D7b&žŒÇkx‰11fJe EWŸöU´)‚é†é †å‚籂沂峂䴰€€.1½%€€'‡Ñ‚Èa‚ɨ‚Æbb…ÞËžo±ü†Í†¹ŸS‚Âÿ†À‚¼a‚³bb…†­¿ÁŸE  ‡'ÿ†±^Ÿ6 '‚}†—þ†¨±ž­WŸ,'ý†Ÿ±Ÿ%Þ”žPžv 'AŸ˜Ÿ˜fgp[ÿÿîîQQÿÿÿrstuvwxyz{JŸÿ‡œžP ^žV ††††Ÿy ‚ˆ†‚‡†‚††‚…†Ÿva¨bb  ‘0  #$%&rr( @€ @€ 7  oÿg j!"i#$%&rr(  @‡êWßíƒì»ìžƒ ‡ç‡è ‡ç¿çE…¢å¦Ùè†ÈÞÇžŸà¢Ó€€†<€—A†Â¾µ†5€—¾²†3€—¾¯†1‚¹„—€®†¹ÞÂß ¾7‚¾†*‚¬†¿»¿º¿ºþº!ž † ¿žW‡ƒ­ ÿ‡« ð‚¦ ÿ†¤žOƒ¯º—žžG ‡¡¿ žCžk †‹+„—‚ˆ–ˆŠ †ƒŸvýÿþÿr@ÿE  CÇéf¡ýnm_1s!"BA11bbQrrr‚‚ÂAœŸ55XX1¦v£Žc01±ñÎ p(ÿ((ÿÿ@@ÿ@@@(r@(ÿr X‡+W—û¶ì‚â‡ê‚á‡é‚à‡è‚߇ç¿ñ‚‡å‚ ‡ä ‡ì…¿¿¿ƒÞ ŸÜ ž ‡¿Øžžq Y‡—×¶È ‚Á‡È ‡Ò…¿Ê¿É¿ÏƒÄ ž ‡Ã¿Àž—žsƒÆº±žžc ‡¹¿¶ž_žOƒ¼º¨!žž‡ ‡¯¿¬žƒž_ Z‡©—©¶š ‚”‡š ‡¤¿ƒ™ Ÿ— ‡˜¿•Ÿ“žv…Ÿ•pQQp(HpQQ€fstuvzqx‰JfCüŒpé1s @‡wE…ßùƒø‡ò ‡ñ¿ñ †ëƒò‡cÿ‡cƒï‡\ƒî‡[ƒí‡Z‚c‡Z¿ã¿]ß^ ‚Ø ž¼†Ó¿Þ¿×Djž|¿L¿Ký»Fž“°°(ñ§Ð¢Ð*ÿ+¸€žžŒßÈžy ‡9¿6žYž“ ‡4¿1žTžŽ ‹»º­žžMº†ž‚ ‡&¿#žF ‚¡ †Ÿƒ ÿ‡ ðž; †–¾Æ¿šDjŸ $#i"!j gÿo \]"nm…®¤ Z _ ` aŒ kL CHANGE SKIP SWITCH (SW1-6,7,8) FOR SKIP € HIT RETURN WHENu READY ƒþ ƒý ƒü‹ü†jŸv @‡èE… ‡Bßôƒó‡>¿?ƒà‡à‚à‡à¿;ƒì‡Þƒë‡Ýƒê‡Üƒé‡Û ‡Ú‡æ¾Å ßË¿+Cžx¾“ †¿Ë¾¡¾ †ƒÒ»Ðžž¨‡Á¿Áž¥ƒÉžg ƒ}†¬Þ{ƒz†ªÞx£wÞvƒ¥‡¥ƒ½‡¢Þ¡Þ¡*ÿ1¸Ÿm )€€»³ž„,ÿž…+žx§ªŸsƒª‡§Ÿpƒ¤ U ÿŸ¥ž9 Uƒ¢ ªƒ¡‹”†¶Ÿxÿ3C #qzvstupfJ n o p q£ [ b c d l m s t‰ u † CHANGE INTERRUPT VECTOR SWITCH (SW2) TO 4K HIT RETURN WHEN READY A‡>E…ßȃǻǞƒ ‡Â‡¸ ‡·¿·—¶ ƒ»‡0ƒº‡/ƒ¹‡.ƒ®‡-ƒ%‡%¿«‚$‡$ ‡' ‡#‡#¿#³–ÀI ž„‡¿žžvƒ ‡ B‡ — ¿³–­I *ž“‡Š¿Šžžunmü g…©fJ¢ý \ e f—p 0ƒn‡ C‡Ž¿Ž³–‰I ž…‡g¿gž‚žvŸ„àxuC‰ A‡{E…ßùƒø‡O ‡N¿N ¿M‚ç‡çƒî‡æƒí‡åƒì‡äƒë‡d‚Û‡á ‡à¿æˆÝž|¿\¿[¿Z¿Yý»ÖžžxƒÓ‡1¿1ŸQžr HIT RETURN WHEN READY TO MONITOR SYNC OUTPUTS HIT CONSOLE INT. TO EXIT SENSE SWITCH ON =>DEBUG SENSE SWITCH OFF =>TEST START ÿþÿý6zvstqpx¥ ] h i j® A‡ÆE…ßăûÞƒ ‡¾‡¿ ‡¾¿¾ ‚‡a‚œ‡`‚›‡¶‚Y‡Y¿´ ‡[‚އU‚Q‡V¿®ƒV‡¬¿¬Ÿ¬žyss@€€€@ l m n0001Þ11 ° ± C¦ýnmu…fJ‰ † m*** DEBUGX.OBJ - REV D0 *** 790501090815790501090815790501090815 THIS SOURCE FILE PROVIDES THE NECESSARY INFORMATION REQUIRED TO ASSEMBLE AND LINK THE APPROPRIATE FILES ON THIS DISKETTE TO  RECREATE THE BINARY PRODUCT VERSION OF THE BUS MONITOR DIAGNOSTIC (84-93928). IT IS ASSUMED THAT THIS DISKETTE IS ON DF1,ALONG WITH THE OBJECT VERSION OF DEBUGX CALLED DEBUGX.OBJ.HERE IS HOW THE SOURCE IS TO BE ASSEMBLED: /MACRO DF1.O92831.OBJ=DF1.S92821.ASM THE OBJECT CODE IS NOW LINKED WITH DEBUGX SUCH THAT DEBUG STARTS AT :2000 AND THE DIAGNOSTIC BEGINS AT :100 WIT8 H PORTIONS GOING OUT AS FAR AS :3173.IN THIS MANNER DEBUG IS SANDWICHED IN THE MIDDLE OF THE DIAGNOSTIC. /LINK DF1.B92841.BIN=DF1.DEBUGX.OBJ(RL=2000)+DF1.O92831.OBJ(UL,TE) NOW THE BINARY FILE B92841.BIN CAN BE COPIED TO PAPER TAPE OR FLOPPY AND AUTOLOADED OR LOADED IN SOME OTHER FASHION. RTC,A NO RTC INT. COPY A,RTC COPY MODE3D,A SET MODE VALUE COPY A,MODE COPY COM3D1,A SET COMPARE REGISTERS COPY A,COM1 COPY COM3D2,A COPY A,COM2 COPY COM3D3,A COPY A,COM3  COPY LARGE,A COPY A,CNTA COPY =0,A COPY A,WRFLAG CLEAR WRITE FLAG OVER3D JST PROMPT  WORD 136 WORD MSG3D JMP OVER3D NOP LASTT JST MONITR JST MONITR JST MONITR  JST MONITR COPY =-3,A CSK A,EXIT JMP $+2 JMP LASTT LOOP FOREVER TILL CONS. INT. COPY EXIT,A NEG A,A COPY A,CODE EXIT TYPE = ERROR CODE JST ERROR JMP EARTN JMP LASTT LOOP FOREVER ON ERROR TOO OPTIONS +:20 MSG3D WORD CRLF BYTE 'HIT RETURN WHEN READY' WORD CRLF BYTE 'TO MONITOR SYNC OUTPUTS' WORD CRLF WORD CRLF BYTE 'HIT CONSOLE INT. TO EXIT' WORD CRLF BYTE 'SENSE SWITCH ON =>DEBUG' WORD CRLF BYTE ' SENSE SWITCH OFF =>TEST START' WORD :0A0A OPTIONS -:20 LARGE RES 1,:FFFE SMALL RES 1,:FFFD LPOOL * TEST 7 * THIS TEST CHECKS THAT THE RESET CAPABILITY * IS IN WORKING ORDER.UPON ENTRY INTO THE * PROGRAM TEST,THE RUN LIGHT SHOULD GO OUT. TEST7 COPY =:41,A COPY A,SECT SBIT 4,S SBIT 8,S IMS TP7 COPY TP7,A CSK A,PASMAX JMP CNPS7 NOP COPY =0,A COPY A,TP7 CNPS7 COPY A,CPASS COPY =7,A COPY A,TESTNU JST PTEST IN 4,A ADD =:10,A SELP A,4 COPY COM3B1,A COPY A,COM1 COPY COM3B2,A COPY A,COM2 COPY COM3B3,A COPY A,COM3 COPY =NORTC,A COPY A,RTC JST NODMA COPY =0,A COPY A,WRFLAG COPY MODE3E,A MODE FOR COMPARE AND RESET ON COMPARE COPY A,MODE COPY SMALL,A COPY A,CNTA ENDING JST MONITR COPY EXIT,A NEG A,A COPY A,CODE JST ERROR JMP EARTN JMP ENDING MODE3A RES 1,0 NO COMPARE MODE3B RES 1,:412 MODE3C RES 1,0 MODE3D RES 1,:73 MODE3E RES 1,:273 RESET ON ALL COM3A1 RES 1,0 COM3A2 RES 1,0 COM3A3 RES  1,0 COM3B1 RES 1,:40 COM3B2 RES 1,:100 COM3B3 RES 1,:400 COM3C1 RES 1,:8000 COM3C2 RES 1,:8000 COM3C3 RES 1,:8000 COM3D1 RES 1,:40 COM3D2 RES 1,:100 COM3D3 RES 1,:400 CNT3A RES 1 INVEC RES 1 INTVEC RES 1 B101 RES  1,:0101 B103 RES 1,:0103 B105 RES 1,:0105 B0B0 RES 1,:3030 B0B1 RES 1,:3031 DE00 RES 1,:DE7F FFF 9 RES 1,:100 B505 RES 1,:0505 B616 RES 1,:1616 B1B1 RES 1,:3131 A0B0 RES 1,:A0B0 A0B1 RES 1,:A0B1  LPOOL BPAGE0 RES 256 B111 RES 1,:1111 LPOOL END START MS TP7 COPY TP7,A CSK A,O0SEGMENTBLANK oii€Ÿ€%’¿€J‘ÿÿŒ¿€™”¿€^b¿€ª¿€B W¿…¿…¾™¾ê¿ƒŸƒÊ°þþ jmyzìÿ *  (PY ¿˜2ž|Ÿzƒ˜ þ‡’ †Å¿‘†Äð 0žƒ @žžn ‚½ :ž‚žiž‘4nmn o‚® @ž\ Gž‚žX  †Ÿ‚£Ç‚›1†˜ †œžV‚•¶“ žžG!†ð†‚Œ†Ž£”€¶ˆ„€ÞˆÞ†žxŸ6hi   Ø†× ¢û„€ +ÞÒž|‚÷†Ê¿<*?žž˜ƒî‡7 ¿8 žºÂž‚žhº½žfžŸå–» ÿŠã†µƒ´‡²Þ±žm‚Þ‡®ŸX‚Ú†¬ ƒ«‡©º×žŸPÞ¤Þ¤žw»¿I 9 ¹ÄÅÆ08Ê  ¿¨+‚¦‡¦¿¦ƒ¦‡¦ ‡¥‡¥ ¿¥ƒ¥ Ÿo¿˜ߟk NO I /O TEST CARD INSTALLED  p‡¢%»Àz‹kq pvx ¿•¢Tž|žŽƒi‡ ¿ 1žƒ 2ž„žr‚‹‡‹Ÿo‚ЇˆŸl ‚ˆ‡…Ÿi4nÛÕÙÖ  BUS MONITOR DIAG NOSTIC REV A0 DEVIC E ADDRESS (:16)? TES T(S) DESIRED (1234567)?  OR DEBUG(0)? SELECT RES PONSE ON ERROR (CR)-RUN ALL TESTS SELECTED,CONT INUE ON ERROR 1-LOOP O N ERROR 2-JUMP TO DEBU G ON ERROR ENTER DESIR ED RESPONSE (SELECT ONLY ONE) *** ERROR TES T # SECTION # TEST 3 WILL NOT RUN WITH A 4/10 Êð PASS #  ¶wŸ€Ö ¾†Ÿw¾„žÊÞt¾Ÿr R ¢“ ¿“ƒ–¿– ¢¿Ž‚Š¿Ž ¢¿‰ ¢Š¿†‚ƒ¿†Ÿkôõ ¥t«ÑËf¯°W  †¤†¤†¤†¤†¤†¤†¤‚§‡§†£ƒ¢‡¥ †¡Ÿ ß¡ÞWžx ‚^M ¢\ ¾Ú ¢[¾×‚U¿Y ¢X¾Ò‚Q¿TŸnŸ*+,-/0 ¢ÃÄ  D Š{†zŸy¢x €€ ¾µ‚²†®†«†«†¬¿­%‡¦ ' ž†¥ _ž„ÞŸÞŸžtž€‚›ºœ žfžžd ÿ†•žk‚•†’¢W‚“ _ž[ %ƒŒ' ^œ‚ œƒ #žœ„ †œƒnopqr ‡ð ††¦† ¾ò ¾ð¾Ä}~ Ÿu %ƒl' žÞhŸx¯  )†y9 öB ºž A¾±‚„ 1*ÿ1³Ÿp ƒ~†ŒÞ{£zÞy .%€€'¾Ÿ+Þ‚žyŸp †‘ ‚¦†‘ü†Ž‚Œ)/Œ+=‹‰†† ¾‹Þ…ÞƒžtŸmåæç èd  ¾’¢"ùø¢‹ùI 6=ùI6½"ù¾ŽŸqç†  _†0’‡¦ŒŸx _’‡y 6Á…’‚¢‚Ÿvÿÿ ** ‚w‡´Wß³ƒ²º×žƒ ‡­‡­  ‡¬¿¬‚j‡«‚i‡ª‚h‡© ‡¨E A ‡˜–Á …¿ ‚ ‡‘‚Z‡¿ ¿œƒœ ž… ‡‰¿‰Ÿ–žu¾š¾¯ žõÉzqfÐv&ôós tup„x  ¢¦‹(°¦‹³‡‡Þ†°‡„ÞƒÞ„žxŸrt0Ôv0 xð'{  ÂwÆ|(`¦u¢s¦q¢s€€»už† ÞmžŸq+ÞnžvÅ ‡@¿@Ÿiž, ¾žy ·Ô¿Ó¥(°¦W¢U ¦SÂSÆX¢S€€»Tž—ƒſŃO ¦K¿Ã¢I  6H+ÞGÞ?€€»D ž‡žoÞ9+Þ>Þ8žeŸVƒ±¿®žh B ‡ –2 ¿©‚©‡ƒ¨‡W… ¾°W…¾­ý»”ž„Ÿž¾ ¿œ  ‡Ž¿ŽŸ—žn ‡‰¿‰Ÿ’ži ‡„¿„ ŸždxfÐÊÀ믋1kœ  EWŸöU´)‚é†é †å‚ç ±‚沂峂䴰€€.1½% €€'‡Ñ‚Èa‚ɨ‚Æb b…ÞËžo±ü†Í†¹ŸS‚Âÿ†À ‚¼a‚³bb…†­¿1ŸE   ‡'ÿ†±^ Ÿ6 '‚}†—þ†¨±ž¬WŸ, 'ý†Ÿ±Ÿ%Þ”žPžv 'AŸ—Ÿ—fgp[ÿÿîîQQÿÿÿrstuvwxyz{ %ÿ‡ÀžQ ^žW † †††Ÿy ‚ˆ†‚‡†‚††‚…†Ÿva¨bb    ¢£€€ ž†+'žy Ÿœ+'žŸ˜€€ Ÿ–žw   žƒ žŸy ††‚Œ‡Œ¢Œ‚Œ „ƒŸq‘0Ô1tßä/bv²ÿ/b $%&rr(   @ €     : @ €    oÿÿ g j!" i#$%&rr(0  #$%&rr (  @ €     @ €    oÿ g j!" i#$%&rr(ð  ¿‹‚‹ù¢Šù96½ø"ù¿„ Ÿsÿ† @‡êWßõƒô»ôžƒ ‡ï‡ð ‡ï¿ïE…¢í¦Ùè †ÈÞÇžŸè¢Ó€€‡Ó€—†Â¾µ‡Ð€— ¾²‡Î€—¾¯‡Ì‚¹„—€®†¹ÞÂß ¿Ò‚‡‚¬‡Á¿Á¿À¿Àþ»¿ ž ‡¼¿¼žW‡ƒ­ ÿ‡« 𠂦 ÿ†¤žOƒ¸º—žžG ‡¨ ¿¨žCžk †‹+„—‚ˆ–ˆŠ©†ƒŸv^ÿþ`acr@ÿElm Évstu1zqexf Ð'yôó„É„1sc !"BA11bbQrr r‚‚ÂAœŸ 55XX1¦v£ Žc01±ñÎ p(ÿ ((ÿÿ@@ÿ@@@( r@(ÿr X‡"W —ö¶ì‚â‡‚á‡‚à‡‚߇¿ì ‚‡‚‡ ‡ç…¿¿¿ƒ ŸÕ ž ‡ ¿ žžq Y‡Í —Ò¶È ‚Á‡Ç ‡Í…¿Ä¿Ã¿Ê ƒÂ ž ‡¾¿¾ž—žsƒÁº± žžc ‡´¿´ž_žOƒ·º¨žž‡ ‡ª¿ªžƒž_ Z‡Ÿ—¤¶š ‚”‡™ ‡Ÿ¿—ƒ— Ÿ ‡“¿“ŸŒžv…ŸpQQp(HpQQ€ ÉvxfÐx‹pe 1s @‡rE…ßòƒñ‡ç ‡æ¿æ  ‡ìƒì‡gÿ‡áƒé‡àƒè‡ßƒç‡Þ‚c ‡Ý¿Ý¿\ßY ƒÙ žÂ †þ¿Ø¿ØDíž|¿K¿Jý»Iž™ °°£Ì1D(ò§Ê¢Êžƒ(ñ§Æ¢Ç *ÿ+¸€žžŒß¾žy ‡3¿3žS ž“ ‡.¿.žNžŽ ‹±ºÒžžGº†ž‚ ‡ ¿ ž@  ‚Æ †Äƒ ÿ‡ ðž5 †» ¾Þ¿•DíŸôóqs tuz„*ë á æ ç è4¿ òÜÍ$ #i"!j gÿo $ #i"!j gÿÿoìí CHANGE SKIP SWITCH (SW 1-6,7,8) FOR SKIP   HIT RETURN WHEN READY  ƒú ƒù ƒø‹ø†jŸv @‡è E… ‡ßðƒï‡¿ƒà‡‚߇ ¿ƒè‡Üƒç‡ƒæ‡ƒå‡ ‡Õ‡â ¾Å ßË¿ÝCžx¾“ ¿Æ¾¡¾ ƒÏ»Ìž ž¨‡¼¿¼ž¥ƒÅžg ƒ}†¬Þ{ƒz †ªÞx£wÞvƒ¥‡¥ƒº‡¢Þ¡Þ¡*ÿ1¸ Ÿm )€€»°ž„,ÿž…+žx §§Ÿsƒ§‡¤Ÿpƒ  U ÿŸ“ž9 Uƒž ªƒ‹†²Ÿx‚ƒ É ®vpfÐ õ ö ÷ ø) â é ê ë ó4 ô ú û ü  CHANGE INTERRUPT V ECTOR SWITCH (SW2) TO ³ HIT RETURN WHEN READY  ƒ×D¿Ö%¶ŸF A‡<E…ßσÎ »Îžƒ ‡É‡¸ ‡·¿·—¶  ƒÂ‡,ƒÁ‡±ƒÀ‡°ƒ°‡°ƒ#‡¯¿¯ ‚!‡® ‡ ‡¥‡¦¿³–ÇI ž„‡¿žžvƒ§‡— B‡  — ¿ ³–´I žš‡¿ ž—žuôóxst îuq„ z 5fпÀ(y ã ì í —i 0ƒi‡i C‡¿³ –‰I ž…‡e¿ež‚žvŸƒà É A‡{E…ßõƒô‡I ‡H ¿H ¿K‚ç‡Jƒê‡åƒé‡@ƒè ‡?ƒç‡?‚Û‡> ‡Ü¿âˆ hž| ¿\¿[¿Z¿Yý»ÒžžxƒÏ‡0¿0 ŸQžr HIT RETURN WHEN RE ADY TO MONITOR SYNC OU TPUTS HIT CONSOLE IN T. TO EXIT SENSE SWITCH ON =>DEBUG SENSE SWI TCH OFF =>TEST START ÿþÿý vpx+ ä ï ð ñ4 A‡Æ E…ßăûÞƒ ‡¾‡¿ ‡¾ ¿¾ ‚‡º‚œ‡¹‚›‡¸‚]‡· ¿· ‡[‚އX‚U‡²¿²ƒV‡°¿°Ÿ°žyss@€€€@ ó ô õ0001Þ11 ° ± É,yôóstuz„qfÐ ƒž ªƒ‹†²Ÿx‚ƒ É ®vpfÐ õ ö ÷ ø) â é ê ë ó4 ô ú û ü  CHANGE INTERRUPT V ECTOR SWITCH (SW2) TO ³ HIT RETURN WHEN READY  ƒ×D¿Ö%¶ŸF A‡<E…ßσÎ »Îžƒ ‡É‡¸ ‡·¿·—¶  ƒÂ‡,ƒÁ‡±ƒÀ‡°ƒ°‡°ƒ#‡¯¿¯ ‚!‡®;  ‡ ‡¥‡¦¿³–ÇI ž„‡¿žžvƒ§‡— B‡  — ¿ ³–´I žš‡¿ ž—žuôóxst îuq„ z 5fпÀ(y ã ì í —i 0ƒi‡i C‡¿³ –‰I ž…‡e¿ež‚žvŸƒà É A‡{E…ßõƒô‡I ‡H ¿H ¿K‚ç‡Jƒê‡åƒé‡@ƒè ‡?ƒç‡?‚Û‡> ‡Ü¿âOVicEdDano*g ½¾¾ô ±Þ}¾Øžº´EÕ¾áã¦Â 4”Å{y–­Fzrk\±ÖAw“¯‹õ´ñÙßå ÷^kE_Ô¦Ä`àßá­ T…û¾Ê (½Ô :½Ô‚9Š’½Õ -½Ô :½Ô‚" ÿЉ½Õ )½Ô ½Ô Š‚…÷Çÿþ g ¿†ÈæÊ¦ÈÆÆp†ÇP†Æ0†Å @0†ÂB ž †¾¢` Ÿh † ‚}’¾cÅøžD «¢«â«‚®‚­‚§p‚¦P‚¥0O‚œŸo ½Ò X½Ô D½Ô B½Ô U½Ô G½Ô 4½Ô ½Ô D½Ô 0½Ô ½ÔŸi ¾7Ÿ} ½Ò ½Ô‚z½Ô¾¶¾µ P¾«÷½Û A¾§‚C½Ü Q¾£‚@½Ü X¾Ÿ‚=½Ü Y¾›‚:½Õ½Ò¾Ÿ¾ž¾ K¾“‚3½Ü L¾‚0½Ü S¾‹‚-½Ü D¾‡‚*½Ü C¾ƒ‚'½ÕŸK ½Ô =½ÔŸ{ ¾Ÿ} ½ÔŸ|‚Ê"„ †Å½Ò *½Ú½Ó†À Yž¤ Qž¢ žè Až½ TÞ Gžž„½Ó½Ù†¯ž‘ Ržž†½Ó ž£½ØÆ¦žˆ Mì Dé Vé Wê½×ƚ›LBžùLCÑLFÏLLÎLSÐLJžÁLIËLGÊLRÉLZèÆ …ö½Èž8 ¾+Ÿ}½Ó†{½Ó†u½Ó žÆ‚t Pž” LžÆ‚j Tž‹ Pžƒ BžÆý…ú P…û ½Ô‚\…ûž …ü‚W Hž„ TžÆ…üž½Ó Åž|ÁîQE‚I…÷ò ,ž§ò ,ž˜½Ò `‚šÿ–›†— 6Á‚“†‡‚“‡‹‚’‡ˆ÷†…½Ö†áŸ€—– _½Úž­ž"°¿€"U??ÿ ¾#Ÿ}ª¸¦¸ `ù JžŒ Bž†Á÷ YK QJÿžˆ‚¨fÁׂ¤ ž^Þ¡ @‚²€ÞŸ‡žÞ§œ `ò@E ;ž‚ž†žà½×RA@EN@AÞÇŽ QÁÞŠ‡‰ò ,ž^ž$žAÆúY½ž o±¾)‚{ ÿ…÷†w‚_Ä D `…öžž†n÷¢X*ü¸‚ž›€ƒQ€„†c À ‚Ѐª^Ѐ Ä„‚ÂY@AĄ܃žS B `…ö½Èö DÝ÷ž„*üÞKž_žU‚2 `Å¢0*ü¦.€ ‚„€‚( ÿ†&žr o±¿‚{…÷†5 M…öƒˆ¶ˆ‡†ƒ‡ì‡… `žX!d ¯!»– ¿zŸ}½Ó žô Tžž„½Ó žèÆ Cžž‚Þôžé Ižž‚Þðžä Užž‚Þìžß Nžž‚ÞèžÚ Sžž‚ßóžÕ AžžÚßïžÐ ‚ØÂ›PQIƒå“¢†£À`@"ÓŸÆ  †þ-LŒ…þŸlQÅ‚•‡’‚”‡‘Þ„þM…þŸb ¾5‚}â¼¢»…÷ †x CŸÆ”• ‚¬Â“KQG‚æ“æ†çÀa@"ÓãÆä †ˆŸqQłއÛÂÝÇÚÞŸj ¾ýƒª…÷ IžêÞÞÞÞÞ³Þ³ž’½Ó ž ,žž‚½Óž ¾àÆ ¿Ÿ}¾¾I¾ž¾è¿‹¿‹¾ÐætÅ#.#W###H„"j##›± ‚W¨KQG‚“”†•Àb@"Ó‘Æ’ †ŸqQÅ‚Œ‡‰Â‹ÇˆÞ–Ÿj¿€†‡Š‹š›žŸª« ¾’ƒñ…÷ U…ö½ÈÇ ¾'Ÿ} †††††A†AŸw ¾r‚} þ†{ ‡yÞxÞw¢âŸt ‚ “KQG‚E“M†NÀc@"ÓJÆK †ˆŸqQÅ‚E‡B‚DÇAÞŸj ¾\ƒ¼…÷ NžI ‚“KQG‚)“5†6Àd@"Ó2Æ3 †ˆŸqQÅ‚-‡*Â,Ç)ÞŸj ¾@ƒ¡…÷ Sž- ƒÂ“KQG‚ “†Àe@"ÓÆ †ˆŸqQÅ‚‡ÂÇÞŸj ¾$ƒ‡…÷ Ažˆ˜œ#¹¨½Ì ¦Áõ"B†œîƽ҃˜½Ü½×½ÌîCð‡‘Åñ Å /ž† XžÆƒ‡ž‚ƒ„ ½Ò½Üži °ž]½Ò@½Ûƒ¨½Ü½×îB…ôÇ¢ò ,žœÂžñ[ +ž‰ -žˆ *žŠ Xž‹ /žŒÆKJÿÆŽÅïž^ƒ‹…ïž[ƒˆž{ƒ… žxÞ‚žZÅ ,ÆŸ|¾Û ž†½×½ÌL žÆÆÎû Pžž„ý…ú ½ç½Òï†à½Ûø†Á†¾ƒÛ½Ü½æÞºž{‚¹ ¾ƒ‚Ó½Òžq ‚±†´Ž±k†¬ŠÉ†È‚­Gû†©½ÍÞ§ž}Þ¦žyý†¢½ÍÞ ž}ƒ¹y E  à ž .½Ôƒ®ÿ E  à ž .½ÔÞ£ÞƒžfŸN ,žÆ½×†s@ÁïFž…C ’kŸqÁùLLžÆ¾ (žwž{žu Â^Þ|JÿQBÆZŸyù Lžˆ Sžžû TžŠ½ÒžˆÞN‚M ¾ †Ižsž‰…ôï¾Ë†_‚”‡]¾]Š’ž| IÆŽ¾> ,žÆ½×Ƈ ,žžƒ†·½×Æ‚ŸpIư¾k ,ž“ ’« ,žƒHÿÆtž’‚r žŽHÿÆmñ -žÆ†›ž†½×ñ -žÆ†”ï†(ƒ'š\–\ÂFžƒ‚Š -ž‚¾žt½Ò‚½Ûƒ½Õžx Â’@"Fž‚Ÿzž‡@ ÎŒ‰ó ÿFž„ …ôÆó Ÿl d¾#…ô† ‚.¾b†žÁóÆƒ™‡šÞ™Þ–JÿQº‚”†’‚!†’Â’ƒŽ»ž…ÞŠÞ‹JÿQ¸Å½Ò %½Ô‚‚½Õžu †U ½Ô ½Ô ’‰B *ž ½Ô ½Ô‚GŸo †h½Õ †fÿ†e °"†cIƒaM K ÿ¢Y&žž†¢V&žƒ†RÆR `ÞQKL$žžk‚K N =½Ô‚DŽD½Õ G½Ô‚A öÁ  :½Ôž€ ½ÔŸL ¾ƒ ¾ÇŸ{ †’¹¾‡y¾…9¾ƒ¾‚Ÿu  öÁ  :¾´‚Ÿw ® 0¦”‡¢‚C C 96¼C C "¢…0 `Ÿj† •…ð¢’C "C ¢tC I6½Ò²DŽ’ÃŽ‘Až³³6PO6P6Pž”ÿû!»)Š)³!³%â 2 g Fžƒ Iž D½Ò½Ôû†lÞkž„½Ò ½Ôžx ½Ô²½Û³@9¿—@¿•@? R6A W½Ô ½Ô±ÞžCËˋJ°R>JÿKSB±ž|½ÒÅ%Œ(ù(øsƒB–ö†{½Ó ž–ž½Ó†v½ÓÂt’rLD¶ëLE¶êLI¶éLR¶èLW¶çÁÆ–å’d ,žk‚a‡%´ƒ#ü‡!ž§žœƒÅ†yƒÄ†xƒÃ†wƒ–ÌÃÀÆpQAlýÆkL=\L>ŒL:|öÆbL<ŒL=L‡±´‚^±‚]²‚\³žQÿü HÿÇž½í ž®’w‡˜‡œ‡š‡—‡—’q’q†n’ožƒ žŠ½í =žÀ <žÔ >žÚ :žàÆÞbŸaÆ(ð(ò(ô(ó(ñ(ï!»dyð€‚„€€ÿþ½Ò C½Ô 1½Ô =½Ô‚½Ü C½Ô 2½Ô =½Ô‚½Ü C½Ô 3½Ô =½Ô‚ ½Ü M½Ô =½ÔƒT–·½Ü½ÒžHÞ&žÆ½×† =“FF“EF“C“CEÆÇ=žƒÇ:žÇ7‚ž&ޞƓ5½½×Ç-žÞžÆ“,µ½×Ç&žޞƓ$½ÓQ»ß‡žÆ½×LJž?ÿ)Ø€Ÿ€%’¿€J‘ÿÿŒ¿€™”¿€^b¿€ª¿€BgW¿…¿…¾™¾ê¿ƒŸƒÊ°þþjmyzìÿ * (PY ¿˜2ž|Ÿzƒ˜ þ‡’ †Å¿‘†Äð 0žƒ @žžn‚½ :ž‚žiž‘4nmno‚® @ž\ Gž‚žX †Ÿ‚£Ç‚›1†˜ †œžV‚•¶“ žžG!†ð†‚Œ†Ž£”€¶ˆ„€ÞˆÞ†žxŸ6i9  Ø†× ¢û„€+ÞÒž|‚÷†Ê¿<*?žž˜ƒî‡7¿8 žºÂž‚žhº½žfžŸå–» ÿŠã†µƒ´‡²Þ±žm‚Þ‡®ŸX‚Ú†¬ƒ«‡©º×žŸPÞ¤Þ¤žw»¿I 9 ¹Æ08Êÿ ¿¨+‚¦‡¦¿¦ƒ¦‡¦ ‡¥‡¥¿¥ƒ¥ Ÿo¿˜ߟk NO I/O TEST CARD INSTALLED p‡¢%»Àz‹kqpvx ¿•¢Tž|žŽƒi‡¿ 1žƒ 2ž„žr‚‹‡‹Ÿo‚ЇˆŸl‚ˆ‡…Ÿi4nÛÕÙÖ BUS MONITOR DIAGNOSTIC REV A0 DEVICE ADDRESS (:16)? TEST(S) DESIRED (1234567)? OR DEBUG(0)? SELECT RESPONSE ON ERROR (CR)-RUN ALL TESTS SELECTED,CONTINUE ON ERROR 1-LOOP ON ERROR 2-JUMP TO DEBUG ON ERROR ENTER DESIRED RESPONSE (SELECT ONLY ONE) *** ERROR TEST # SECTION # TEST 3 WILL NOT RUN WITH A 4/10 Êð PASS #  ¶wŸ€Ö¾†Ÿw¾„žÊÞt¾Ÿr R ¢“¿“ƒ–¿– ¢¿Ž‚Š¿Ž=  ¢¿‰ ¢Š¿†‚ƒ¿†Ÿkõ1¥t«ÑËf¯°W †¤†¤†¤†¤†¤†¤†¤‚§‡§†£ƒ¢‡¥†¡Ÿ ß¡ÞWžx ‚^M ¢\¾Ú ¢[¾×‚U¿Y ¢X¾Ò‚Q¿TŸnŸ-0=¢ÃÄ  D Š{†zŸy¢x€€ ¾µ‚²†®†«†«†¬¿­%‡¦' ž†¥ _ž„ÞŸÞŸžtž€‚›ºœžfžžd ÿ†•žk‚•†’¢W‚“ _ž[%ƒŒ' ^œ‚ œƒ #žœ„ †œƒr ‡ð ††¦† ¾ò ¾ð¾Ä~ Ÿu %ƒl' žÞhŸx¯5 )†y9 öB ºž A¾±‚„1*ÿ1³Ÿp ƒ~†ŒÞ{£zÞy.%€€'¾Ÿ+Þ‚žyŸp †‘‚¦†‘ü†Ž‚Œ)/Œ+=‹‰†† ¾‹Þ…ÞƒžtŸmç*èd  ¾’¢"ùø¢‹ùI6=ùI6½"ù¾ŽŸqç† _†0’‡¦ŒŸx _’‡y 6Á…’‚¢‚Ÿvÿÿ **W‚w‡´Wß³ƒ²º×žƒ ‡­‡­ ‡¬¿¬‚j‡«‚i‡ª‚h‡© ‡¨E A‡˜–Á …¿ ‚ ‡‘‚Z‡¿¿œƒœ ž… ‡‰¿‰Ÿ–žu¾š¾¯žõÉzqfÐv&ôóstup„x ¢¦‹(°¦‹³‡‡Þ†°‡„ÞƒÞ„žxŸrt0Ôv0 xð'{} ÂwÆ|(`¦u¢s¦q¢s€€»už†ÞmžŸq+ÞnžvÅ ‡@¿@Ÿiž,¾žy ·Ô¿Ó¥(°¦W¢U¦SÂSÆX¢S€€»Tž—ƒÅ¿ÅƒO¦K¿Ã¢I  6H+ÞGÞ?€€»Dž‡žoÞ9+Þ>Þ8žeŸVƒ±¿®žh B‡ –2 ¿©‚©‡ƒ¨‡W…¾°W…¾­ý»”ž„Ÿž¾ ¿œ ‡Ž¿ŽŸ—žn ‡‰¿‰Ÿ’ži ‡„¿„ŸždxfÐÊÀ믋1kœe EWŸöU´)‚é†é †å‚籂沂峂䴰€€.1½%€€'‡Ñ‚Èa‚ɨ‚Æbb…ÞËžo±ü†Í†¹ŸS‚Âÿ†À‚¼a‚³bb…†­¿1ŸE  ‡'ÿ†±^Ÿ6 '‚}†—þ†¨±ž¬WŸ,'ý†Ÿ±Ÿ%Þ”žPžv 'AŸ—Ÿ—gp[ÿÿîîQQÿÿÿ{%ÿ‡ÀžQ ^žW ††††Ÿy ‚ˆ†‚‡†‚††‚…†Ÿva¨bb1   ¢£€€ ž†+'žyŸœ+'žŸ˜€€ Ÿ–žw  žƒ žŸy ††‚Œ‡Œ¢Œ‚Œ„ƒŸq‘0Ô1tßä/bv²ÿ/b $%&rr( @€ @€  oÿÿg j!"i#$%&rr(0  #$%&rr( @€ @€  oÿg j!"i#$%&rr(ðm ¿‹‚‹ù¢Šù96½ø"ù¿„Ÿsÿ† @‡êWßõƒô»ôžƒ ‡ï‡ð ‡ï¿ïE…¢í¦Ùè†ÈÞÇžŸè¢Ó€€‡Ó€—†Â¾µ‡Ð€—¾²‡Î€—¾¯‡Ì‚¹„—€®†¹ÞÂß ¿Ò‚‡‚¬‡Á¿Á¿À¿Àþ»¿ž ‡¼¿¼žW‡ƒ­ ÿ‡« ð‚¦ ÿ†¤žOƒ¸º—žžG ‡¨¿¨žCžk †‹+„—‚ˆ–ˆŠ©†ƒŸv^ÿþacr@ÿEmÉvstu1zqexfÐ'yôó„É„1sc®!"BA11bbQrrr‚‚ÂAœŸ55XX1¦v£Žc01±ñÎ p(ÿ((ÿÿ@@ÿ@@@(r@(ÿr X‡"W—ö¶ì‚â‡‚á‡‚à‡‚߇¿ì‚‡‚‡ ‡ç…¿¿¿ƒ ŸÕ ž ‡ ¿ žžq Y‡Í—Ò¶È ‚Á‡Ç ‡Í…¿Ä¿Ã¿ÊƒÂ ž ‡¾¿¾ž—žsƒÁº±žžc ‡´¿´ž_žOƒ·º¨žž‡ ‡ª¿ªžƒž_ Z‡Ÿ—¤¶š ‚”‡™ ‡Ÿ¿—ƒ— Ÿ ‡“¿“ŸŒžv…ŸpQQp(HpQQ€gÉvxfÐx‹pe1s @‡rE…ßòƒñ‡ç ‡æ¿æ ‡ìƒì‡gÿ‡áƒé‡àƒè‡ßƒç‡Þ‚c‡Ý¿Ý¿\ßY ƒÙ žÂ†þ¿Ø¿ØDíž|¿K¿Jý»Iž™°°£Ì1D(ò§Ê¢Êžƒ(ñ§Æ¢Ç*ÿ+¸€žžŒß¾žy ‡3¿3žSž“ ‡.¿.žNžŽ ‹±ºÒžžGº†ž‚ ‡ ¿ ž@ )‚Æ †Äƒ ÿ‡ ðž5 †»¾Þ¿•DíŸôóqstuz„*ë á æ ç è4¿ òÜÍ$#i"!j gÿo $#i"!j gÿÿoí CHANGE SKIP SWITCH (SW1-6,7,8) FOR SKIP ~ HIT RETURN WHEN READY ƒú ƒù ƒø‹ø†jŸv @‡èE… ‡ßðƒï‡¿ƒà‡‚߇¿ƒè‡Üƒç‡ƒ> æ‡ƒå‡ ‡Õ‡â¾Å ßË¿ÝCžx¾“ ¿Æ¾¡¾ ƒÏ»Ìžž¨‡¼¿¼ž¥ƒÅžg ƒ}†¬Þ{ƒz†ªÞx£wÞvƒ¥‡¥ƒº‡¢Þ¡Þ¡*ÿ1¸Ÿm )€€»°ž„,ÿž…+žx§§Ÿsƒ§‡¤Ÿpƒ  U ÿŸ“ž9 Uƒž ªƒ‹†²Ÿxƒ/É ®vpfÐ õ ö ÷ ø) â é ê ë ó4 ô ú û ü  CHANGE INTERRUPT VECTOR SWITCH (SW2) TO ³‚ HIT RETURN WHEN READY ƒ×D¿Ö%¶ŸF A‡<E…ßσλΞƒ ‡É‡¸ ‡·¿·—¶ ƒÂ‡,ƒÁ‡±ƒÀ‡°ƒ°‡°ƒ#‡¯¿¯‚!‡® ‡ ‡¥‡¦¿³–ÇI ž„‡¿žžvƒ§‡— B‡ — ¿ ³–´I žš‡¿ž—žuôóxst îuq„z 5fпÀ(y ã ì í—i 0ƒi‡i C‡¿³–‰I ž…‡e¿ež‚žvŸƒàwÉ A‡{E…ßõƒô‡I ‡H¿H ¿K‚ç‡Jƒê‡åƒé‡@ƒè‡?ƒç‡?‚Û‡> ‡Ü¿âˆ hž|¿\¿[¿Z¿Yý»ÒžžxƒÏ‡0¿0ŸQžr HIT RETURN WHEN READY TO MONITOR SYNC OUTPUTS HIT CONSOLE INT. TO EXIT SENSE SWITCH ON =>DEBUG SENSE SWITCH OFF =>TEST START ÿþÿý2vpx+ ä ï ð ñ4 A‡ÆE…ßăûÞƒ ‡¾‡¿ ‡¾¿¾ ‚‡º‚œ‡¹‚›‡¸‚]‡·¿· ‡[‚އX‚U‡²¿²ƒV‡°¿°Ÿ°žyss@€@ õ0001Þ11 ° ±É,yôóstuz„qfÐ mE7E3E5E3--E2E0gÿ‡áƒé‡àƒè‡ßƒç‡Þ‚c‡Ý¿Ý¿\ßY ƒÙ žÂ†þ¿Ø¿ØDíž|¿K¿Jý»Iž™°°£Ì1D(ò§Ê¢Êžƒ(ñ§Æ¢Ç*ÿ+¸€žžŒß¾žy ‡3¿3žSž“ ‡.¿.žNžŽ ‹±ºÒžžGº†ž‚ ‡ ¿ ž@ )‚Æ †Äƒ ÿ‡ ðž5 †»¾Þ¿•DíŸôóqstuz„*ë á æ ç è4¿ òÜÍ$#i"!j gÿo $#i"!j gÿÿoí CHANGE SKIP SWITCH (SW1-6,7,8) FOR SKIP ~ HIT RETURN WHEN READY ƒú ƒù ƒø‹ø†jŸv @‡èE… ‡ßðƒï‡¿ƒà‡‚߇¿ƒè‡Üƒç‡ƒ THIS SOURCE FILE PROVIDES THE NECESSARY INFORMATION REQUIRED TO ASSEMBLE AND LINK THE APPROPRIATE FILES ON THIS DISKETTE TO  RECREATE THE BINARY PRODUCT VERSION OF THE BUS MONITOR DIAGNOSTIC (84-93928). IT IS ASSUMED THAT THIS DISKETTE IS ON DF1,ALONG WITH THE OBJECT VERSION OF DEBUGX CALLED DEBUGX.OBJ.HERE IS HOW THE SOURCE IS TO BE ASSEMBLED: /MACRO DF1.O92831.OBJ=DF1.S92821.ASM THE OBJECT CODE IS NOW LINKED WITH DEBUGX SUCH THAT DEBUG STARTS AT :2000 AND THE DIAGNOSTIC BEGINS AT :100 WITH PORTIONS GOING OUT AS FAR AS :3173.IN THIS MANNER DEBUG IS SANDWICHED IN THE MIDDLE OF THE DIAGNOSTIC. /LINK DF1.B92841.BIN=DF1.DEBUGX.OBJ(RL=2000)+DF1.O92831.OBJ(UL,TE) NOW THE BINARY FILE B92841.BIN CAN BE COPIED TO PAPER TAPE OR FLOPPY AND AUTOLOADED OR LOADED IN SOME OTHER FASHION. €791019092100791019092100791019092100’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I? ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I@ ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’IA ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’IB ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’IC ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’ID ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’IE ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’IF ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’IG ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’IH ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’II ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’IJ ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’IK ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’IL ’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I’I