›; ______________________________ ›; ŽV1.1ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽPaul Wu  ›; MINI-DISASSEMBLER ›; ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ›;›;  For disassembling Action programs›;›;  Append this program to the end of›; the user program. Compile it then›; run it....›;›;  Use ÓÐÁÃÅ ÂÁÒ to pause action and›; [] key to escape the listing and›; ctrl-1 toggles output suspension.›;›;  Reboot program if garbages appear›; in the listing.›;›; ______________________________›; ŽŽŽŽŽŽŽŽŽŽ10/20/84ŽŽŽŽŽŽŽŽŽŽŽŽ›; (c)1984 by G.D.C.›; ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ›;››PROC Menu()›CARD usradd› PrintE("")› PrintE("   ÍÉÎÉ­ÄÅÓÅÍÂÌÅÒ ¨ã©±¹¸´ âù Ðáõì ×õ  ")› PrintE(" ")› PrintE("")› Print(" User program starts at >")› usradd=PeekC($491)› PrintCE(usradd)› PrintE("")› PrintE("")›RETURN››CARD FUNC Start()›CARD startadd› Print("  Start address[decimal] >")› startadd=InputC()›RETURN(startadd)››CARD FUNC End()›CARD endadd› Print("  End address [decimal] >")› endadd=InputC()›RETURN(endadd)››PROC Dev()›BYTE key,flag› device=0› Print("  Output: Ócreen,Ðrinter >")› DO› key=GetD(7)› PrintF("%C",key)› IF key='P THEN Close(5) Open(5,"P:",8) device=5 flag=1› ELSEIF key='S THEN flag=1› ELSE Print("") flag=0› FI› UNTIL flag=1› OD›RETURN››PROC Sl()› Print("(")›RETURN››PROC Sr()› Print(")")›RETURN› ›PROC Sx()› Print(",X")›RETURN› ›PROC Sy()› Print(",Y")›RETURN››CARD FUNC B3(CARD add)›BYTE a,b› a=Peek(add+1)› b=Peek(add+2)› PrintF("%H",b,a)› add=add+2›RETURN(add)››CARD FUNC B2(CARD add)›BYTE a› a=Peek(add+1)› PrintF("%H",a)› add=add+1›RETURN(add)››BYTE FUNC Des(BYTE n,content)›BYTE ARRAY Assem1="BRK0ORA1???0???0???0ORA2ASL2???0PHP0ORA1ASL0???0???0ORA6ASL6???0BPL2ORA5???0???0???0ORA3ASL3???0CLC0ORA8???0???0???0ORA7ASL7???0JSR6AND4???0???0BIT2AND2ROL2???0PLP0AND0ROL0???0BIT6AND6ROL6???0",›Assem2="BMI2AND5???0???0???0AND3ROL3???0SEC0AND8???0???0???0AND7ROL7???0RTI0EOR4???0???0???0EOR2LSR2???0PHA0EOR0LSR0???0JMP6EOR6LSR6???0BVC2EOR5???0???0???0EOR3LSR3???0CLI0EOR8???0???0???0EOR7LSR7???0",›Assem3="RTS0ADC4???0???0???0ADC2ROR2???0PLA0ADC1ROR0???0JMP9ADC6ROR6???0BVS2ADC5???0???0???0ADC3ROR3???0SEI0ADC8???0???0???0ADC7ROR7???0???0STA4???0???0STY2STA2STX2???0DEY0???0TXA18103STY6STA6STX6???0",›Assem4="BCC2STA5???0???0STY3STA3STXÙ???0TYA0STA8TXS0???0???0STA7???0???0LDY1LDA4LDX1???0LDY2LDA2LDX2???0TAY0LDA1TAX0???0LDY6LDA6LDX6???0BCS2LDA5???0???0LDY3LDA3LDXÙ???0CLV0LDA8TSX0???0LDY7LDA7LDX8???0",›Assem5="CPY0CMP4???0???0CPY2CMP2DEC2???0INY0CMP0DEX0???0CPY6CMP6DEC6???0BNE2CMP6???0???0???0CMP3DEC3???0CLD0CMP8???0???0???0CMP7DEC7???0CPX0SBC4???0???0CPX2SBC2INC2???0INX0SBC0NOP0???0CPX6SBC6INC6???0",›Assem6="BEQ2SBC5???0???0???0SBC3INC3???0SED0SBC8???0???0???0SBC7INC7???0???0"›BYTE x,ch,flag› FOR x=1 TO 3› DO› IF n=1 THEN› ch=Assem1(content*4-4+x)› flag=Assem1(content*4)› ELSEIF n=2 THEN› ch=Assem2((content-48)*4-4+x)› flag=Assem2((content-48)*4)› ELSEIF n=3 THEN› ch=Assem3((content-96)*4-4+x)› flag=Assem3((content-96)*4)› ELSEIF n=4 THEN› ch=Assem4((content-144)*4-4+x)› flag=Assem4((content-144)*4)› ELSEIF n=5 THEN› ch=Assem4((content-192)*4-4+x)› flag=Assem4((content-192)*4)› ELSEIF n=6 THEN› ch=Assem4((content-240)*4-4+x)› flag=Assem4((content-240)*4)› FI› PrintF("%C",ch)› OD› Print(" ")›RETURN(flag)››CARD FUNC Desm(CARD add)›BYTE b,c,content,flag›CARD cont› content=Peek(add)› IF device=5 THEN PrintF("%C",126)› ELSEIF device=0 THEN PrintF("%C",content)› FI› Print(" ")› cont=PeekC(add)› PrintF("%H",cont)› Print(" ")› content=content+1› IF content=0 THEN Print("???") flag=0› ELSEIF content<49 THEN flag=Des(1,content)› ELSEIF content<96 THEN flag=Des(2,content)› ELSEIF content<145 THEN flag=Des(3,content)› ELSEIF content<193 THEN flag=Des(4,content)› ELSEIF content<241 THEN flag=Des(5,content)› ELSE flag=Des(6)› FI› IF flag='9 THEN Sl() add=B3(add) Sr()› ELSEIF flag='8 THEN add=B3(add) Sy()› ELSEIF flag='7 THEN add=B3(add) Sx()› ELSEIF flag='6 THEN add=B3(add)› ELSEIF flag='5 THEN Sl() add=B2(add) Sr() Sy()› ELSEIF flag='4 THEN Sl() add=B2(add) Sx() Sr()› ELSEIF flag='3 THEN add=B2(add) Sx()› ELSEIF flag='2 THEN add=B2(add)› ELSEIF flag='1 THEN Print("#") add=B2(add)› ELSEIF flag='0 THEN Print(" ")› ELSEIF flag='Ù THEN add=B2(add) Sy()› FI›RETURN(add)››PROC Desmbler()›BYTE key,decadd,ctr›CARD startadd,endadd,add›BYTE ARRAY strdec,strdecfi=" "› Close(5)› device=0› Poke(82,0)› Poke(766,0)› Menu()› startadd=Start()› endadd=End()› Dev()› IF startadd=0 THEN startadd=1 › ELSEIF endadd=startadd THEN endadd=startadd+1 › FI› Poke(766,1)› PrintE("")› PrintE(" £Äåã®ü¤èåø®üÁüÏðãïäåü Íîåíïîéãó ") › FOR add=startadd TO endadd› DO› StrC(add,strdec)› FOR ctr = 1 TO 5› DO› strdecfi(ctr)=32› OD› SAssign(strdecfi,strdec,1,5)› Print(" ")› Print(strdecfi)› Print(" ")› PrintF("%H",add)› Print(" ")› add=Desm(add)› key=Peek(754)› IF key=33 THEN› WHILE Peek(753)› DO› OD› ELSEIF key=28 THEN Desmbler()› FI› PrintE("")› OD› Desmbler()›RETURN›››