/ô > Dis32 0.14 - 32000 disassembly routines 7ô v0.13 - updated CXP, EXT, nn(Rn), ACB, BPT, @addr %ô v0.14 - bugfix to SUBC/TBIT/XOR (: 2"ݤDis_Name(A%):X%?3=2:="32000" <<ݤDis_Code(A%,Ptr%,Data%):ê op%,num%,i%,g1%,g2%,op0%,dz% F7op%=!Data%:i%=op%€3:g1%=Data%?18:g2%=(op%€&7C0)64 P=X%!0=0:A$=¤_32:ç©A$<35:$(X%+4)=A$ ‹ $(X%+4)=ÀA$,32)+"..." Z"çnum%:çnum%<13:X%?3=num%:=num% dQX%?2=&80:X%?3=1:$(X%+4)="EQUB &"+¤h0(?Data%,2)+À" ; num="+Ãnum%,num%<>0):=1 n: x ݤ_32 ‚(ô Format 10, 11, 13, 16, 17, 18, 19: Œ=ç(op%€&1F)=&06 „ (op%€&5F)=&5E „ (op%€&EF)=&8E:num%=0:="" –:   num%=1 ªô Format 0: ´.ç(op%€&FF)=&EA:X%?2=&40:="BR "+¤dispPC ¾8ç(op%€&0F)=&0A:="B"+¤cc((op%€&F0)16)+" "+¤dispPC È: Òô Format 1: Ü%ç(op%€&FF)=&02:="BSR "+¤dispPC æ,ç(op%€&FF)=&12:X%?2=&40:="RET "+¤disp ğ#ç(op%€&FF)=&22:="CXP "+¤disp ú,ç(op%€&FF)=&32:X%?2=&40:="RXP "+¤disp ,ç(op%€&FF)=&42:X%?2=&40:="RETT "+¤disp #ç(op%€&FF)=&52:X%?2=&40:="RETI" %ç(op%€&FF)=&62:="SAVE "+¤lst(0) "&ç(op%€&FF)=&72:="RESTORE "+¤lst(7) ,/ç(op%€&FF)=&82:="ENTER "+¤lst(0)+","+¤disp 6%ç(op%€&FF)=&92:="EXIT "+¤lst(7) @ç(op%€&FF)=&A2:="NOP" Jç(op%€&FF)=&B2:="WAIT" Tç(op%€&FF)=&C2:="DIA" ^4ç(op%€&FF)=&D2:num%=2:="FLAG &"+¤h0(Data%?1,2) h4ç(op%€&FF)=&E2:num%=2:="SVC &"+¤h0(Data%?1,2) r ç(op%€&FF)=&F2:num%=1:="BPT" |: † num%=2 ô Format 2: šMç(op%€&7C)=&0C:çi%<>2:="ADDQ"+¤sz(i%)+" "+¤short(g2%2)+","+¤gen(g1%,i%) ¤Mç(op%€&7C)=&1C:çi%<>2:="CMPQ"+¤sz(i%)+" "+¤short(g2%2)+","+¤gen(g1%,i%) ®Lç(op%€&7C)=&2C:çi%<>2:="SPR"+¤sz(i%)+" "+¤areg(g2%2)+","+¤gen(g1%,i%) ¸Mç(op%€&7C)=&3C:çi%<>2:="S"+¤cc((op%€&380)128)+¤sz(i%)+" "+¤gen(g1%,i%) ÂYç(op%€&7C)=&4C:çi%<>2:="ACB"+¤sz(i%)+" "+¤short(g2%2)+","+¤gen(g1%,i%)+","+¤dispPC ÌMç(op%€&7C)=&5C:çi%<>2:="MOVQ"+¤sz(i%)+" "+¤short(g2%2)+","+¤gen(g1%,i%) ÖLç(op%€&7C)=&6C:çi%<>2:="LPR"+¤sz(i%)+" "+¤areg(g2%2)+","+¤gen(g1%,i%) à: êô Format 3: ôç(op%€&7FC)=&27C:X%?2=&40 şç(op%€&FC)=&7C:çi%<>2:=ÀÁ"CXPD BICPSRJUMP BISPSRxxxx ADJSP JSR CASE",g2%4*6+1,»Á"46464534",g2%4+1,1))+¤sz(i%),5)+" "+¤gen(g1%,i%) : ô Format 4: Çç(op%€&0C)<>&0C:çi%<>2:A%=(op%€&3C)4:A$=¤gen(g1%,i%):=ÀÁ"ADD CMP BIC xxx ADDCMOV OR xxx SUB ADDRAND xxx SUBCTBITXOR",A%*4+1,»Á"333043203430443",A%+1,1))+¤sz(i%)+" ",5)+" "+A$+","+¤gen(g2%,i%) &: 0Vnum%=3:i%=(op%€&300)256:g1%=Data%?28:g2%=(op%€&7C000)&4000:op0%=(Data%?1€&3C)4 :ô Format 5: DIç(op%€&F87CFF)=&80E:çi%<>2:="SETCFG"+¤sz(Data%?1 € 3)+" "+¤cfg(g2%2) Niç(op%€&F870FF)=&00E:çi%<>2:ç(op%€&60000)<>&40000:=Á"MOVSCMPSxxxxSKPS",op0%*6+1,4)+¤sz(i%)+¤str(g2%2) X: bô Format 6: lÍç(op%€&0000FF)=&04E:çi%<>2:=ÀÁ"ROT ASH CBIT CBITIundefLSH SBIT SBITINEG NOT undefSUBP ABS COM IBIT ADDP",op0%*5+1,»Á"3345534533543345",op0%+1,1))+¤sz(i%)+" ",5)+" "+¤gen(g1%,0)+","+¤gen(g2%,i%) v: €ô Format 7: Šoç(op%€&0038FF)=&00CE:çi%<>2:=Á"MOVCMP",op0%*3+1,3)+"M"+¤sz(i%)+" "+¤gen(g1%,i%)+","+¤gen(g2%,i%)+","+¤disp ”­ç(op%€&0038FF)=&08CE:çi%<>2:A$=Á"INSEXT",op0%*3-5,3)+"S"+¤sz(i%)+" "+¤gen(g1%,i%)+","+¤gen(g2%,i%):num%=num%+1:=A$+","+Ã(Data%?(num%-1)32)+","+Ã(1+(Data%?(num%-1)€31)) uç(op%€&0020FF)=&20CE:çi%<>2:=Á"MULMEIundDEIQUOREMMODDIV",op0%*3-23,3)+¤sz(i%)+" "+¤gen(g1%,i%)+","+¤gen(g2%,i%) ¨“ç(op%€&0030FF)=&10CE:çi%<>2:=Á"MOVX"+¤sz(i%)+"WMOVZ"+¤sz(i%)+"WMOVZ"+¤sz(i%)+"DMOVX"+¤sz(i%)+"D",op0%*6-23,6)+" "+¤gen(g1%,i%)+","+¤gen(g2%,i%) ²: ¼ô Format 8: Æ„ç(op%€&00047F)=&002E:çi%<>2:=Á"EXTINS",(op%€&80)128*3+1,3)+¤sz(i%)+" R"+Ã(op0%2)+","+¤gen(g1%,i%)+","+¤gen(g2%,i%)+","+¤disp ĞÃç(op%€&00003F)=&002E:çi%<>2:A%=(op%€&C0)+(op%€&400)4:çA%=&40 „ A%=&C0 „ A%=&100:=ÀÁ"CVTP xxxxxCHECKINDEX",A%64*5-4,5+(A%=64))+¤sz(i%)+" ",6)+" R"+Ã(op0%2)+","+¤gen(g1%,i%)+","+¤gen(g2%,i%) ÚRç(op%€&0004FF)=&046E:çi%<>2:="FFS"+¤sz(i%)+" "+¤gen(g1%,i%)+","+¤gen(g2%,i%) äiç(op%€&002CFF)=&0CAE:çi%<>2:="MOV"+Á"SUUS",(op0%€4)2+1,2)+¤sz(i%)+" "+¤gen(g1%,i%)+","+¤gen(g2%,i%) î: øô Format 9: 0ç(op%€&003FFF)=&083E:="LFSR "+¤gen(g1%,i%)  0ç(op%€&003FFF)=&303E:="SFSR "+¤gen(g1%,i%) «ç(op%€&0000FF)=&003E:çi%<>2:=Á"MOV xxxxxMOVLFMOVFLROUNDTRUNCxxxxxFLOOR",(op0%2)*5+1,»Á"35555555",(op0%2)+1,1))+¤fl(op%€1)+¤sz(i%)+" "+¤gen(g1%,i%)+","+¤gen(g2%,i%)  : *ô Format 11: 4Œç(op%€&0002FF)=&00BE:=Á"ADDMOVCMPxxxSUBNEGundundDIVxxxundundMULABSundund",op0%*3+1,3)+¤fl(Data%?1€1)+" "+¤gen(g1%,i%)+","+¤gen(g2%,i%) >: Hô Format 14: RMç(op%€&0078FF)=&001E:=Á"RDVALWRVAL",op0%*5+1,5)+¤sz(i%)+" "+¤gen(g1%,i%) \]ç(op%€&0078FF)=&081E:=Á"LMR SMR ",op0%*5-9,5)+¤sz(i%)+" "+¤mmu(g2%2)+","+¤gen(g1%,i%) f: pô Format 15: zGç(op%€&00001F)=&0016:="SLAVE "+Ã((Data%?0)32)+",&"+¤h0(Data%!1,4) „: *num%=1:X%?2=&80:="equb &"+¤h0(op%,2) ˜: ¢4ݤlst(A%):ê rn%,n%,A$:rn%=Data%?num%:num%=num%+1 ¬3ã n%=0 ¸ 7:ç (rn% € (2^n%)):A$=A$+",R"+Ã(n%‚A%) ¶í n%:="["+ÁA$,2)+"]" ÀIݤcfg(A%)=À"I",(A%€1)=1)+À"F",(A%€2)=2)+À"M",(A%€4)=4)+À"C",(A%€8)=8) ÊLݤstr(A%)=À"T",(A%€1)=1)+À"B",(A%€2)=2)+À"W",(A%€12)=4)+À"U",(A%€12)=12) Ô:ݤcc(A%)=Á"EQNECSCCHILSGTLEFSFCLOHSLTGEALNV",A%*2+1,2) Ş4ݤshort(A%):A%=A%€15:ç A%<8:="+"+ÃA% ‹ =Ã(A%-16) èݤsz(A%)=Á"BW-D",A%+1,1) òݤfl(A%)=Á"LF",A%+1,1) üݤgen(A%,sz%):ê rn%:rn%=A% çA%<8:="R"+ÃA% &çA%<16:=¤dispReg+"(R"+Ã(rn%-8)+")" RçA%=16:A$=¤disp+"(FP)":=¤disp+"("+A$+")":ô These should be short displacements $,çA%=17:A$=¤disp+"(SP)":=¤disp+"("+A$+")" .,çA%=18:A$=¤disp+"(SB)":=¤disp+"("+A$+")" 8çA%=19:="revd" B8çA%=20:çsz%=0:num%=num%+1:="&"+¤h0(Data%?(num%-1),2) L8çA%=20:çsz%=1:num%=num%+2:="&"+¤h0(Data%!(num%-2),4) VsçA%=20:num%=num%+4:="&"+¤h0(Data%?(num%-4),2)+¤h0(Data%?(num%-3),2)+¤h0(Data%?(num%-2),2)+¤h0(Data%?(num%-1),2) ` çA%=21:="@&"+¤h0(¤dispOff,8) j)çA%=22:A$=¤disp:="EXT("+A$+")+"+¤disp tçA%=23:="TOS" ~çA%=24:=¤dispReg+"(FP)" ˆçA%=25:=¤dispReg+"(SP)" ’çA%=26:=¤dispReg+"(SB)" œçA%=27:=¤dispPC ¦rn%=Data%?num%:num%=num%+1 °/çA%=28:=¤gen(rn%8,sz%)+"[R"+Ã(rn%€7)+":B]" º/çA%=29:=¤gen(rn%8,sz%)+"[R"+Ã(rn%€7)+":W]" Ä/çA%=30:=¤gen(rn%8,sz%)+"[R"+Ã(rn%€7)+":D]" Î/çA%=31:=¤gen(rn%8,sz%)+"[R"+Ã(rn%€7)+":Q]" Ø="" â+ݤdisp:A%=¤dispVal:="&"+¤h0(A%,dz%*2+2) ì&ݤdispPC:="&"+¤h0(Ptr%+¤dispOff,8) ö@ݤdispReg:A%=¤dispOff:çA%<0:=ÃA% ‹ ="&"+¤h0(A%,(1+©Ã~A%)€-2) mݤdispOff:A%=¤dispVal:dz%= ("&"+Á"0000003F00001FFF000000001FFFFFFF",dz%*8+1,8)):çA%>dz%:=A%-2*dz%-2 ‹ =A%  7ݤdispVal:dz%=(Data%?num%)64:dz%=»Á"0013",dz%+1,1) &çdz%=0:num%=num%+1:=Data%?(num%-1) @çdz%=1:num%=num%+2:=Data%?(num%-1)+256*(Data%?(num%-2) € 63) (fnum%=num%+4:=Data%?(num%-1)+256*Data%?(num%-2)+65536*Data%?(num%-3)+&1000000*(Data%?(num%-4) € 63) 2ݤareg(A%) <çA%=0:="US" FçA%=8:="FP" PçA%=9:="SP" ZçA%=10:="SB" dçA%=13:="PSR" nçA%=14:="INTBASE" xçA%=15:="MOD" ‚ ="AR"+ÃA% Œ ݤmmu(A%) –ç(A%€14)=0:="BPR"+ÃA%  ç(A%€14)=4:="PF"+Ã(A%-4) ªçA%=8:="SC" ´çA%=10:="MSR" ¾çA%=11:="BCNT" Èç(A%€14)=12:="PTB"+Ã(A%-12) ÒçA%=15:="EIA" Ü="mmu"+ÃA% ÿ