8__PAGEZEROH__TEXT__text__TEXT __cstring__TEXT7__const__TEXTP__literal8__TEXTH__DATA__data__DATA__dyld__DATA__bss__DATA__common__DATA __IMPORT __pointers__IMPORT L__jump_table__IMPORT 8__LINKEDIT0 @ @ 9#p P8"I /usr/lib/dyld+r<HhP 0/usr/lib/libz.1.dylib 4o/usr/lib/libSystem.B.dylibj]\$ML$ˉ\$u\$ 虊D$y XWXGUEMEEEE2EЋE9tE5EE E E}vȍE } uEU(EU fEUEE1fEE$EfyEf5!fEEf E}~EU(fEE%EEUD$$pfEEE ;EEUVS0[mEE ЉEU )ȉE􍃖 t* ED$ ED$zD$$  ~ED$ $蚬ED$D$ D$D$E$%EEE;E s:U E)ƉD$ L$D$E$E}0[^UVS0[EEE ЉEUh )ȉEl t*p ED$ ED$~D$$ l ~ED$ $pD$ED$ D$D$E$EEE;E s:U E)ƉD$ L$D$E$E}0[^UVS0[EE ЉEUA )ȉEE t*I ED$ ED$xD$$ E ~ED$ $MD$ED$ D$D$E$۞EEE;E s:U E)ƉD$ L$D$E$蝩E}0[^UVS0[4sD$ D$D$E$QE}t EU)Ѓ tExU E)ƉD$ L$D$E$E}UE)ȃEU)ƉE"t*&ED$ ED$}D$$"~ED$ $轨D$ED$ D$D$E$KEEE;E s:U E)ƉD$ L$D$E$ E}0[^UVSP[Eu'EuE u E t EE$E؋E$E܋E؃tE؃EE؉EEE܉EE $ϦEЋU)ȉEԃ}t }t}u EE;EtW~?EЉD$ED$E܉D$E؉D$ EԉD$D$$+EEE;E)~[EԉD$2D$$ED$E؉D$E܉D$ EԉD$VD$$EEEEEE؉EmEEt[~CEȋU荃)0L$T$ EԉD$mD$4$"E EE;ErE}t E;E\}u E[EEE3E%`uE@%=uEEUE)Ɖ;Es&U荃)ȃ9r}tB~*ED$ EԉD$D$$.Et8E܉D$E؉D$EЉD$ EԉD$D$$~D$@E$袤D$EЉD$ ҶD$D$Eԉ$0EEE;E s:.U E)ƉD$ L$D$E$E}P[^US$[tEtpExt|D$$ ED$E$sxu,|D$$.|$ED$E$Qxu,|D$$.e|$:ED$E$,xu,|D$$.|$ED$E$xu,|D$$.|$ED$E$Gxu,|D$$.|$V$[UWVSl[EEEE$5t7E܉EE$tEaEAPUËMTE$<tU܍P 0E< t E< uU܍Ps U܍P.EEE;E s }OFU܍PEܰEUEu}Mt FO)ȅu ED$P$tx~]E Eȃ}2vE2U)ȉED$uȉt$E D$ T$D$ $E D$P$#E}tE@ T$$ux~]} }̃}2vE2U)ȉED$ủt$E D$ T$D$ $E=6D$P$u:D$P$Uux~]} }Ѓ}2vE2U)ȉED$uЉt$E D$ T$@D$ $JEE Etu~]} }ԃ}2vE2U)ȉED$uԉt$E D$ T$hD$ $EEEăl[^_UD$@E$US$[E$ItUD4#E EE D$E$EE$[UEUD$E$pUD$E$UUVS`[EEEEE<E< )E< E$"tB@@ P]PdBPlBP@ `{`{B`B`@ ppBpBp@ BƴB@ BB@ B&B@ OOBRB@ Z`BnB@ BʵB@ B@@  BB@ /6B@@ W^B@@ m mB B @ 0q0uB0~B0@ @@B@B@@ PPBPBP@ `޶`B`B`@ p/p:BpNBp@ YdBvB@ BtB@ B@@ ʷB@@ B@@ B@@ /:B@@ SWBB@ 0m0vB0@0@ @@B@B@@ PPƸBPBP@ B B@ &-BAB@ ^eByB@ B@@ ׹B@@  B&B@ =EB@@ X^BlB@ z B B @ 0κ0պB0B0@ @@B@@@@ P2P:BP@P@ `P`WB`nB`@ ppBpBp@ ŻѻBB@  B"B@ +:BZB@ B@@  B @ @ Ӽ B @ @  B @ @  B 6B @ n qB ~B @  B ƽB @   B B @ @ @ !B@ @@ @ P ?P FBP @P @ ` c` mB` @` @ p p Bp Bp @ ʾ ;B ۾B @  B B @  )B @ @ ? DB ^B @  B B @  ĿB B @ ܿBB@ B-B@ H NB bB @ 00B0-B0@ @@B@B@@ PPBP-BP@ BB@ B6B@ psBB@ BB@  B@@  *B@@ 0;0;B0EB0@ @U@UB@^B@@ PPBPBP@ ``B`@`@ ppBp@p@ BB@  B@@ (1B@@ HMB^B@ } B B @  B B @  B @ @  B B @  B B @ 6?BUB@ \\BcB@ [UWVSl[Et*D$ D$&D$ $论r~FEt EE %EԍvMԉL$ E D$)D$$蟺U E)ƉPz9vU E)lj@zEEn9Et?E$vEЉUEuЋ}̋Mt FO)ȅu6}y0Un)D$D$$SEzEĉUEuċ}Mt FO)ȅuZtNU n)ȉ@EUn)ƉD$D$E$SE:uEUEu}Mt FO)ȅuUE E@ E@ EuEUEu}Mt FO)ȅu,Un)ȋUD$D$$-R*Un)ƉUD$D$$Rl[^_UWVS[Et*D$ D$[D$9$詷EshdDž`hd`t FO)ȅxEE؍yEtsupE E lE؋PBD$t$|$lD$ T$DD$ $Hu0E؋PZD$t$ T$]D$ $贶E؋@D$$YT$jD$ $|EtOE؋P E D$ T$qD$ $<E؉$:Et5E؋p E Ѝt$ T$D$ $ԵiEy(E؋P T$D$ $袵7E؋P MAE08T$L$ t$D$<$iyƒE% Ѕ E؋@ D$E$_ EEȋUi)ȉEċUi)Ɖ$OD$$ ɴEĉ$Vyy{Es\XDžT\XTt FO)ȅu}yyE؉By0Eĉ$V+EĉF ty$,yPyHyp 8T$L$t$ EĉD$ōD$<$跳E4yE܋T$T$D$ $Ey@;E~}~y@;E~0y@+U܍T$D$ $$E2EEEHEȋUЉЍU‰L$*D$$:UЉЃD EEE;E wEЉҍ1~yuBuMč0ED$T$ L$]D$4$ND$Eĉ$xUT$/D$ $ET$6D$ $EԍtED$ED$Eĉ$1E@ HE@ ED$$TE}t`EtVED$:D$$[EED$:$2UȍT$=D$ $EqUȍD$=$2J}yUEȉڍT$DD$ $茰EtfE؉D$D$1MEȉD$ID$$;EtEȉD$I$c1EsPLDžHPLHt FO)ȅEȉ$1t Eȉp Džp.pL$MD$$xEtE tcEMEYыEEiE@)‰UЃ}u3.D$$.J.$EU썃&)ȉ$D%@U썃&)ȉ$3JE}E%uQE;EbEEE؍E؉D$ ED$ED$E$EЍEE;ErbEED$ ED$ED$E$EЋE@ EEEEEEtMbEED$ ED$ED$E$EЋE@ EEEEEfEU)Ѓ ~EEEE؋EbE}ZbEEE؍E؉D$ ED$ED$E$EЍEE;ErEEEE؉EE }u:bEEEE*NEg}uEЉEE EE}uE E܉E}v\E }t*>D$ D$~D$9$EFEEBEEt-E@ uEEEEEtEbEEE؍E؉D$ ED$ED$E$EЍEE;ErE#Et EE NEԋU荃&)ȉ‹EԉD$ED$ ED$T$P$vE E܉E؋E;Eu!EuF EEE@ tU썃&)‹E؍@E؍E؉D$ ED$ED$E$EЋE@EEEE u1:t#U썃&)ȉ:9s.EU썃&)ȉ"9d[US[E$5pu\)щʍ6<} t E $Hk:xtTt4D$D$$B=$:x$WptRE$u Qx?p7hD$ D$D$z$h$輢艨hD$$ 趢hD$ D$D$z$虢h$_茮hD$$ YhD$ D$$D$z$<h$hD$$ pt $蹡hD$ D$!D${$迡h$腡D$$hD$$ nlllv lpt^:t$8t<$B|$]CthD$ D$D$&{$螠h$d9u,hD$ D$D$@{$H9D$$hD$$ [UWVS[tD$E$(uE$$耟EU  T$ ED$vD$ $[D$D$E$膟66uE$i$6 D$D$T$D$ D$D$$u w$$y ~ fN6d`Dž\ d`\t FO)ȅ$FE܋E܉p$F: $uF>$VFEU܍>:08ED$T$L$ t$wD$<$E܉$E؍t*E؉D$ E܉D$RwD$$豜}u8D$ D$D$xw$蓜$U P T$ D$pD$E؉$Eԃ}t9Eԉ$T$wD$ $$ܛp;Et8D$ D$D$w$כ$虛 P T$$EE;Et[ED$wD$$cD$ D$,D$w$K$ 02fU؉ U܉ļ[^_US[Lfu0$(T$$P$胚[UWSP[ҙ-fnf)Ef(EXf)EMȍYȍXf(ȍf(f(f(]fW_ȍf(fTf\ffofsff~ȉEE $E썃ڙt1U荃ޙED$T$ ED$rD$ $蟙}u8ޙD$ D$ D$r$聙Eҙ֙M T$ D$ED$ $ E}tDE$ߙޙT$sD$ $E$Eڙt#U荃ޙT$:sD$ $貘EED$E$AҙUD$$AUD$$AU D$$AEU D$$豓EUED$$iAEP EU荃ޙED$ T$ZsD$ $ؗEEEP[_US4[fudD$ D$3D$p$蕗D$ D$>D$p$iED$D$E$tE}uE$eEED$%qD$$E$;E}u EED$ED$E$pEE9EtI}uBq$ޖD$ D$D$Hq${EE$bE$ EE4[US$[D$_E$蕖E}tE@ED$ED$$|$[UWS0[} E$=T$ D$qoD$$D$$評Hf/ED$$裕woD$$苕-=ED$ T$}oD$$M1D$$̔E}u2D$oD$$袔$xE0[_US$[D$MnD$$跔}D$$6EED$ D$ D$Zn$'ED$ D$D$en$ED$ D$D$hn$ݓED$ D$GD$n$踓ED$ D$D$n$蓓ED$ D$D$n$nED$ D$ D$n$IED$ D$D$o$$ED$ D$D$o$ED$$ ݒED$ D$ D$o$ǒED$ D$D$en$袒ED$ D$D$o$}ED$ D$D$o$XED$$ 6ED$ D$ D$$o$ ED$ D$D$en$ED$ D$D$o$֑ED$ D$D$o$豑ED$$ 菑ED$ D$D$.o$yED$ D$D$en$TED$ D$D$>o$/ED$ D$D$\o$ ED$ D$ D$|o$ED$ D$D$o$ED$$ 螐ED$ D$D$o$舐ED$ D$D$en$cED$ D$GD$o$>oD$E$pD$E$ED$ D$D$p$ED$ D$D$(p$ʏED$ D$D$Cp$襏ED$ D$D$Rp$耏ED$ D$"D$lp$[ED$ D$D$p$6ED$ D$D$o$ED$$ ED$ D$ D$p$َED$ D$D$p$贎ED$ D$D$p$菎ED$ D$ D$p$jED$ D$D$p$EED$ D$D$p$ ED$ D$D$en$ED$ D$D$p$֍ED$ D$D$ q$豍ED$ D$ D$q$茍ED$ D$D$o$gED$ D$ D$=q$BED$ D$D$Kq$ED$ D$D$en$ED$ D$D$[q$ӌED$ D$D$yq$讌ED$ D$D$q$艌ED$ D$D$o$dED$$ BED$ D$ D$q$,ED$ D$D$en$ED$ D$D$q$ED$ D$!D$q$轋qD$E$蔋ED$ D$D$r$胋ED$ D$D$o$^ED$$ <ED$ D$D$r$&ED$ D$D$en$ED$ D$$D$0r$܊ED$ D$ D$Ur$跊ED$ D$D$br$蒊ED$ D$D$r$mED$ D$D$r$HED$ D$D$o$#ED$$ ED$ D$ D$r$ED$ D$D$en$ƉED$ D$#D$r$衉ED$ D$D$o$|ED$$ ZED$ D$1D$r$DED$ D$:D$s$ED$ D$9D$Ts$ED$ D$;D$s$ՈED$ D$;D$s$谈ED$ D$9D$t$苈ED$ D$:D$Dt$fE$.$[US[D$7h$<yyD$ D$D$@h$yD$ D$D$h$̇[US[$yD$ D$ D$Sh$菇$yD$ D$D$]h$e$y$($y[UWVSl[TE@D$$B*ED$E؉$xxuExE@EE@ EEpE؉$sx|$ ED$ED$t$E؉D$E؉D$ T$gD$ $gxD$ D$D$@h$QE@EyEԉ$(!t\Eԉ$\'E܍_Eԍ< t7_E‹E܋H x0T$ L$EhD$4$辅EEPE@ ;EoxD$ D$D$Ph$苅xD$ D$D$Vh$axE؉D$_hD$$,xD$ D$5D$h$xD$ D$D$h$EPEHEp ExxEĉT$L$t$|$ E؉D$hD$Eĉ$艄E@xD$ D$D$h$eEUED$$:&ED$E$Z'E؋UET$xT$iD$ $}tQEtGUEt$E؉$xE؉D$t$E؉D$ T$#iD$ $蛃xD$ D$D$Li$腃EE@;E~ }E@;E~)E@+UxT$SiD$ $#xD$ D$D$ji$ xD$ D$D$qi$l[^_US[5t5tD$ D$ D$hc$蔂15tT$eD$ $X5tD$ D$D$rc$B5t$5t[US4[D$E$)%E}EtzD$:E$?E}t6UE)zsED$ED$ T$dD$ $腁(zsED$ ED$dD$$[4[US4[rEcD$E$u@EEEE}}&t"EEEEEuE&EEaEEmEEpEE;E뵋E&EElEEtEE;E뇋E&EEgEEtEE;EVErEE4[UWVS,[UqE D$ T$bD$ $E$qED$cD$$E?EUEu}Mt FO)ȅup p,[^_US4[E$N!ED$E$n"E}tLEtBE$pE D$ED$ED$ T$qbD$ $~(pE D$ ED$bD$$~4[UWVSL[E EED$ED$zr$1zraEԉUEuԋ}ЋMt FO)ȅuGzr$pzrD$zrD$ T$aD$ $~MED$TD$zr$F~u$EzrT$zrT$$ZED$bD$zr$}ufED$bD$:r$}:r$+pzrD$:rD$ T$aD$ $/}{ED$&bD$zr$t}uCED$TD$:r$K}U:rD$zrD$$iED$/bD$zr$ }uCED$8bD$:r$|U:rD$zrD$$:ot:rD$?bD$zr$|uX:r$)EEt@ED$8bD$:r$V|U:rD$zrD$$t"p0zr$ft$${L[^_US[mD$ D$D$B_${[US[lD$ D$ D$_$G{[UVS[EPzlT$^D$ $zE@$E@^z‹EH l0T$ L$_D$4$z[^US[yD$ D$%D$^$yzyD$ D$D$^$MzyD$ D$D$`$!z[US[EEEE^yVyj>yT$aD$ $yE:``@`{7RG .@l-aDždjƒjjƒj[jƒ@jAryD$D$$xjryyT$bD$ $KvDždjlD$$vt%u7j>yT$:bD$ $uDždebEryEryEjƒjry$Gry$ryD$D$$ujeryD$D$$uj4ryjj€jjƒjjƒ jj€ʀjzydt1zy>yT$rbD$ $DtEujPj`zy>yT$bD$ $sE/zy>yT$bD$ $sEbD$E D$E$sE}}tDždCjtju jjt(j>yT$bD$ $'svy;Eu;>yD$ D$$D$c$sDždjtOjj9w;>yD$ D$+D$.c$rDžd@vyE E܃}taZcD$E$MrVyVyu2>yED$^cD$$rDždD$Eԉ$rED$E܉$D$Ẻ$q}tVy$qŰEԉ)*ЋUЋE؉)*ȍ"if(^f(XZEZE荃>yD$}cD$$LqDžddĴ[US$[D$=E$qE}u8mpD$ D$D$Z$p$pEE$ pED$D$E$=q‹ED$D$E$q‹EPAeEPAeE$[US$[$^pEUEfdEPfdE$[UWVS[`D$E$Xpu/FoED$YD$$o$oD$D$E$oEЃ}uE$o$]oEU@$oE}u8FoD$ D$D$G$Ko$ oEUD$ED$EЉ$doE̋ẺƉEU11 ȅtX}uY$'o$nFoD$ D$D$Y$n$znEЉ$enEE7EE$uE< t܋E< tҋEčYTPDžLTPLt FO)ȅu_\D$Eĉ$nEȃ}tEUăFoT$ZD$ $m}}EȉEaEčZHDDž@HD@t FO)ȅu_\D$Eĉ$mEȃ}tEUăFoT$"ZD$ $m}EȉEEč=Z<8Dž4<84t FO)ȅ-EăD$:Eĉ$mEȃ}WEED$D$Eĉ$ mED$:Eȉ$lEă}EED$ D$Eȉ$lE؍Bot*FoE؉D$ EԉD$EZD$$k>oEԍ UċE؉D$T$ $knFoEԉD$WZD$$k$lkEčpZ0,Dž(0,(t FO)ȅEăD$:Eĉ$kEȃ}EED$D$Eĉ$kED$:Eȉ$XkEă}EED$ D$Eȉ$HkEF$jEEU‹EEE‹EPdEPdEE}uEEċU);EEċU);E}8FoD$ D$D$wZ$j$i[^_UD$@E$US$[E$ItU iD4#E EE D$E$FiEE$[UEUVS [i]EE$E@E}u䍃e]EEh9wmEHEhE@Eht$ T$SD$ $hED$D$@$NE@E}m [^US[}E$Vu/gED$!SD$$%h$ggE"gE@gED$JSD$$g[UWS [fEE$gJ\J\UѸ󪍃V\¸D$D$$gV\󫍃 gtkgED$RD$$ggD$RD$$fgD$@SD$$f [_UWVS<[ZE䍃ZkdZZZ0e8ED$T$L$ t$.RD$<$Kf<[^_USD[E E䍃ye~2U䍃}eED$T$ ED$QD$ $eqe9EZE M䍃ZEEEE$E}uOEt $E RUED$D$ UT$D$E$E}t*E@EHUED$E@PEPD[UY.d9Ev EYEEEUEEЍEEEuU )ȉEEUS$[$ dEE@@E $xEE $d‹EPUEUYEPMYE$[US4[(c~#,cED$OD$$cE$EU􍃀XEh(c~-EP,cED$ T$OD$ $XcEPED$$cu EEE@E}uEE4[UVS [EObED$OD$$bU􍃣WE}u:>E0EPObt$ T$OD$ $bE@E}uObD$$ obE}_ [^US$[$h^bEE¸hD$D$$GbUEBeUVEPdMVEVPVatXE@dtNVPVEEEEE@dE}u썃V9E~ VEE$[USD[E E䍃`~W}tEE \MEU䍃`E܉D$ED$ED$T$ ED$cMD$ $`Ey?`E`~#`ED$MD$$``9Ev/`ED$MD$$p`EUEt>`~#`ED$MD$$`EED$D$E$E$EUEUBD$ED$$I`}t(E$.`‹EPE@D$E$UEB EEED[UWVSL[EE$E}tpE@t E@E $EЋE@EԋEЋEH Ep^8EЉD$EԉD$T$L$ t$KD$<$^E^9EdL[^_US4[]9Ev,]ED$5KD$$t^Ei5SEu EEE%EUASEE@;EuEEE@dE}uEE4[US4[']9EvEEg+]EEE+]9Ev(U+])ȉ$tċU+])ȉEE4[US4[\9EvEEu\E@EE\\;Ev(U􍃗\)ȉ$tU􍃗\)ȉEE4[UWS0[[9EwDQEuvEYE$E}tlE@t/E@D$2D$Q$\} (\EUBD$ T$eID$Q$i\뾍DQEt.(\ED$5@D$Q$ \rDQEt.(\ED$2D$Q$['v}7QE}ЍPQf:QEE0[_USd[ESZt#WZED$GD$$ZGD$E$ZE}uGtZ$7[WZT$ ED$GD$ $ZDžEUE<#A<;2HD$$ZE}tEEEE$uED$D$ D$HD$E$ Zu7D$D$ D$D$$iD$ D$HD$E$Yu7D$D$ CD$D$$D$ D$$HD$E$VYu7T$D$ 0HT$D$$UD$D$ D$4HD$E$Xu6D$T$ CHD$D$ $1WZED$ ED$GHD$$XEED$D$$WE$WSZtD$V$WZD$ D$$D$sH$WEd[UD$@E$US$[E$ItUVD4#E EE D$E$VEE$[UEUEЋE@ ‹E ‹E UE ‹EE ‹E@E ‹EE ‹EU(-ED$ED$E$kVuEEEE E ;EsEEUWS0[}} uEEܸ}HE ULU)ȉUEEWEUlUT$CD$ $UEEgE;E s.EEЍlUT$CD$ $JU,lUD$ D$D$C$0UEEU)ljvlUD$$ TEETlUEEE$tEEEE.ED$M $TEE;E sEU)ljvlUD$$ bTEE;E 0[_UD$E$US$[E$ItUgSD4#E EE D$E$SEE$[UEUVSP[d¸D$D$$SEEEƋdM Љd¸D$D$$aSEEEƋM ЉE EE}t4UBED$D$ dD$D$$!SE2UBED$D$ D$dD$$RE}uIRt,RD$ D$D$ Blbload byteLoad byte addressed by A into AbsubByte subscriptA = A + Bendpend processdiffdifferenceA = B - AaddA = A + B with carry checkgcallgeneral callJump to A, previous address saved in Aininput messageRead A bytes from channel B to addr CprodproductA = A * B (no overflow check)gtgreater thanA = B > Awsubword subscriptA = address of element in A indexed by Boutoutput messageA bytes to channel B from address Csubstartpstart processoutbyteoutput byteA to channel Boutwordoutput wordseterrset error flagsresetchreset channelReset channel pointed to by Acsub0check subscript from 0Check that B is in the range 0..A (unsigned)stoppstop processladdlong addA = A + B + bit0(C)stlbstore low priority back pointersthfstore high priority front pointernormnormaliseshift double length number BA left under MSB = 1ldivlong divideA = (CB)/AldpiLoad pointer to instructionA = next instruction + Axdbleextend to doubleSign extend A to doublestlfstore low priority front pointerldpriload current priorityA = priorityremremainderA = remainder when B/Aretreturnlendloop endldtimerload timerA = ClockReg[Priority]testerrtest error flagA = true/falsetestpranaltest processor analysingtintimer inputdivdivideA = B / Adistdisable timerDisable timer guard in altseqdiscdisable channelDisable channel guard in altseqdissdisable skipDisable a skip guard in altseqlmullong multiplyA = (B*A)+CnotA = ~Axorexclusive orA = A^B, B=Cbcntbyte countA = A * BytesPerWordlshrlong shift rightA = CB>>Alshllong shift leftA = CB< Asavelsave low priority queue registerssavehsave high priority queue registerswcntword countconvert byte ggg in A to word ggg and byte selectorshrshift rightA = B >> Ashlshift leftA = B << Amintminimum integerA = MostNegaltalt startStart of a non-timer alt seqaltwtalt waitWait for alt guard to be readyaltendalt endEnd of alt seqandA = A & Benbtenable timerenable timer in altseqenbcenable channelenable channel guard in altseqenbsenable skipenable skip guard in altseqmovemove messageCopy A bytes to address B from address CorA = A|Bcsnglcheck singleCheck that the 2-word value in A,B can be represented as singleccnt1check count from 1Check that B is in the range 1..A inclusivetalttimer alt startldifflong diffA = B - A - bit0(C)sthbstore high priority back pointertaltwttimer alt waitsummulmultiplyA = A*Bsttimerstore timerClockreg = A, SSstoperrstop on errorDeschedule if error flag setcwordcheck wordCheck that B can be represented as N-bit signed, A = 2^(N-1)clrhalterrclear halt-on-errorunset flagsethalterrset halt-on-errorset flagtesthalterrtest hal-on-error flagdupduplicate top of stackmove2dinitinitialize data for 2D block movemove2dall2D block copymove2dnonzero2D block copy non-zero bytesmove2dzero2D block copy zero bytesgtugreater than unsignedunpacksnunpack single length fp numberslmulsigned long multiplyA = A * B + Csulmulsigned times unsigned long multiplyAB = A*Bsataddsaturating addA = A + B or MostPos/MostNegsatsubsaturating subtractA = B - A or MostPos/MostNegsatmulsaturating multiplyA = A * B or MostPos/MostNegpostnormsnpost-normalise correction of single length fp numberroundsnround single length floating point numberldtraphload trap handlerInstall a trap handlersttraphstore trap handlerldinfload infinityA = 7f8000000fmulfractional multiplyA = B * A (A,B treated as fractions, result rounded up)cflerrcheck floating point errorCheck if A represents Inf. or NaNcrcwordcalculate CRC on wordcrcbytecalculate CRC on bytebitcntcount bits set in wordA <- B + BitsSetIn(A)bitrevwordreverse bits in wordReverse order of all bits in Abitrevnbitsreverse bottom n bits in wordReverse bottom A bits of Bpoppop processor stackA=B, B=Cldmemstartvalload value of MemStart addressLoad into A the address of the first free memory locationwsubdbform double word subscriptfptesterrtest for FPU errorsettimesliceset timeslicing statusxbwordsign extend byte to wordlbxload byte and sign extendLoad byte addressed by A into A and sign extend to wordcbcheck byteCheck that A can be represented as 8-bit signedcbucheck byte unsignedCheck that A can be represented as 8-bit unsignedssubsixteen subscriptA = A + 2Bintdis(localised) interrupt disableintenb(localised) interrupt enableldtrappedload trapped process statuscircheck in rangeCheck that C is in the range A..B inclusivessstore sixteen*A = Blsload sixteenLoad the 16-bit object addressed by A into Asttrappedstore trapped processcirucheck in range unsignedCheck that C is in the range A..B inclusive (unsigned)gintdisglobal interrupt disableper Agintenbglobal interrupt enabledevlbdevice load byteRead byte from peripheral etc.devsbdevice store byteWrite to a peripheral etc.devlsdevice load sixteenRead 16-bit from peripheral etc.devssdevice store sixteendevlwdevice load wordRead word from peripheral etc.devswdevice store wordxswordsign extend sixteen to wordin Alsxload sixteen and sign extendLoad 16-bit object addressed by A and sign extend to wordcscheck sixteenCheck that A can be represented as 16-bit signedcsucheck sixteen unsignedCheck that A can be represented as 16-bit unsignedswapqueueswap scheduler queueswaptimerswap timer queuetimesliceCause timeslicesignalSignal on the semaphore pointer to by AwaitWait on the semaphore pointed to by Atrapdistrap disabletrapenbtrap enabletrettrap returnreturn from a trap handlerldshadowload shadow registersstshadowstore shadow registersiretinterrupt returnreturn from external interruptdevmovedevice moveCopy A bytes to *B from *CrestartRestart execution of saved processnopno-operationldclockload clockA = Clockregclockenbclock enableStart specific clocksldprodidload product identityinto ArebootPerform a cold bootbuildsymtabop->symdis.c???buildsymtab(%p, %s) printout %08lx: %02x..%02x%*s **%08lx: %-*s %-12s .string "%.*s" .db #%02x (repeated x %x) .bin (%x bytes) %s %s (%x bytes) ** ; New subroutine %x+%x; References: %d, Local Vars: %d ; Called/referenced from %x ; ... %d more. %02x%-13s %s %sloc_%x#-%x#%x '%c' [&arg_%dvar_%d][%s]%*s ; %s - %spassop < NUM_SECOPS?%x/%p/%p Opcode: %s Pass 1 - Detecting objects...Pass 2 - Detecting strings...Pass 3 - Detecting repeated bytes...Pass 4 - Building symbol table...Pass 5 - Disassembling... Opening %s, %d bytes. mmapCompressed firmware file v?.%d.%d, uncompressed size %d, CRC32 %x. malloc for uncompress, %d bytes = %p Out of memory. Error decompressing data, %s. Short compressed data. Calculated checksum: %x Invalid compressed data, checksum mismatch. compress_file(%p) = malloc(%lx) = %p Out of memory in compress_file. Error compressing data, %s. Compressed ok, final size %lx Created compressed image file, size %lx, CRC %x Cannot write changes back to an uncompressed file. Contact the author if you would like this limitation lifting. Writing modified file to %s writeError writing file. %s/%s.html%s/%s.htmlCan't create file '%s' %s/style.csshtml body { line-height: 1.55em; font-family: "Lucida Grande", verdana, lucida, helvetica, sans-serif; background-color: #f8f8f8; margin: 1em; padding: 0; font-size: small; } html>body table td table.index td vertical-align: top; white-space: nowrap; border: 1px solid grey; h3 font-family: "Lucida Grande", helvetica, lucida, verdana, sans-serif; line-height: 104%%; font-size: 145%%; display: block; background: transparent; color: #900; padding: 0.2em 0.7em; margin: 1em -0.7em 0.5em -0.7em; height: auto; :link:focus, :visited:focus, :link, :visited, :link:active, :visited:active text-decoration: none; color: #1e5bbd; background-color: transparent; :link:hover, :visited:hover text-decoration: underline; background-color: #b4d5ff; color: #1559B3; .footnote color: #aaa; background: transparent; font-size: 90%%; padding: 2em 0; table td, table th #border: solid 1px #9e9e70; border: 0; empty-cells: show; padding: 0.1em 0.3em; text-align: left; table th background-color: #e4faa8; # short versions to save space in generated HTML td.addr,td.a { background: transparent; color: #ff4000; } td.bytes,td.b { background: transparent; color: green; } td.label,td.l { background: transparent; color: magenta; } td.opcode,td.o { background: transparent; color: purple; } td.oparg,td.g { background: transparent; color: black; } td.comment,td.c { background: transparent; color: #aaa; } indexDissassembly Output

Disassembly Output

%s%x+%x; References: %d, Local Vars %d "%.*s"
%s

%s - %x+%x; References: %d; Local Vars %d

  • Called/referenced from %x (in %s)
  • ... %d more.
Generated by st20dis v%s%s%s&<>1.0.2Syntax: st20dis [options] -a Annotate opcodes briefly -A Annotate opcodes verbosely -b Bare output (no addresses or hex) -B Break (disable) sub-routine at address -d[level] Enable debugging [at level] -D Perform detection only (for testing) -e End disassembly at offset -e+ End disassembly after bytes -H HTML Output into directory -m Load map file -o Output to (defaults to screen) -O Detect disassembly offset -p= Simulate patch in memory -P Apply patch from (.fpt format) -s Start disassembly at offset -S Disassemble subroutine containing offset -t Send resulting file to device via XMODEM -w Write modifications to file (after patch operations) -x Include binary object bytes -X Don't automatically detect objects ST20 Disassembler v%s, (c) Andy Fiddaman, 2008. Cannot create HTML output directory, %s Cannot write to HTML output directory, %s /dev/nullOption -%c requires an argument. Unrecognised option -%c Unhandled option -%c :d:s:e:S:DaAho:xXObp:P:m:zwB:t:H:Debugging level set to %d A source filename must be provided. Start position can't be after end position wCan't create output file '%s' Processed in: %.2fs Syntax error in -p argument Cannot open patch file '%s' patch file read.patch file short read.descr:Applying patch '%s' fware:Patch is for firmware v%s verify:verify [%x] [%d] Patch verify error @ %x patch:Error parsing patch file. Patched memory at offset %x to %x Break position %x is not a sub-routine. Disabled sub-routine at %x Allocated %ld bytes for memflags table. Allocated %d bytes for memloc data. Allocated %d bytes for namloc data. Symbol table: entries: %d, collisions: %d (%d%%), maxdepth: %d flag_memory(%x, %x, %x) loclookup_namloc(%s) %s vs. %s %3d: %s(%lx)NULLadd_memloc(%x, %x, %s, %x, %s) -ve offset => %x add_memloc(%x) out of range. Duplicate memloc @%x %08x+%04x: %02x %s %s lookup_memloc(%x) out of range. %s_%xLoading map from '%s' rCan not open map file, %s (%s) object:%x:%x:%3sstring:%x:%xloc:%x:%20smapbin:%x:%x:%20sbinSyntax error in map file at line %d (%s) ----------------------------------- %08lx: %02x fd_ready timeout. fd_ready error. fd_ready - not ready. Writing block %d, %lu bytes, CRC: %x ?(%d).EOT.Can not open device '%s' Connected to %s setospeedsetispeedtcsetattrTurn on your PVR now... +Beginning XMODEM-CRC/1K transfer, %d chunks. - Transfer failed. - Transfer complete. JASC-PAL4TV_AA)\(?(@.A., _-()<>:/\%*=@!;'[]PRWsx .2=X\i9>N\`hlqv   dxpl |th,:COZekx !)18GXgow #,7BNXh ! @@"#$%&'()*@+,-./0123456@78__mh_execute_header__DefaultRuneLocale___assert_rtn___error___maskrune___stderrp___stdoutp_atoi_cfsetispeed_cfsetospeed_close$UNIX2003_compress_exit_fclose_fflush_fgets_fopen_fprintf_fputc_fputs$UNIX2003_free_fwrite$UNIX2003_getopt$UNIX2003_gettimeofday_malloc_memcmp_memset_mkdir_mmap$UNIX2003_munmap$UNIX2003_open$UNIX2003_optarg_optind_optopt_perror_printf_read$UNIX2003_select$UNIX2003_sleep$UNIX2003_sprintf_sscanf_stat_strcat_strchr_strcmp_strdup_strerror$UNIX2003_strlcpy_strpbrk_strstr_strtoul_tcgetattr_tcsetattr_uncompress_vsprintf_write$UNIX2003_zError
%08lx%s%s%s%ssub_%s[sub_%x]sub_%x[loc_%x][str_%x]str_%x[%[^]]]
%08lx.string "%.*s"