>!DISREL>>>>>>>>>>>>>TTYNAME7'CON:>TABU7$9>BS7$8>BELL7$7>ARGMARK7'%>OPCODEFI7' A:OPCODES.TXT>>>>MAXPC7$16384>MAXREL7$4096>>>OPCODETY7>4>FOLLOW$0$2>NAMESTRING$15> >>TIPETYPE7ABSLUTECODERELDATARELCOMMONRE>>AFIELD7>4>TIPETIPETYPE>VALUEINTEGER> >>NAMETYPE7STRING$8>>MSITEM7>4>RELBOOLEAN>VALUEINTEGER>TIPETIPETYPE>CONTROLINTEGER>AAFIELD>BNAMETYPE> >>REFTYPE7>4>TIPEBYTE>>>>>>>VALUEINTEGER>NAMENAMETYPE>PTRREFTYPE> >>PTRTOREF7REFTYPE>>OFFSETTY7>4>SIGN.$1,$1>LOC>OFFSETINTEGER>NEXTOFFSETTY> >>>SYSMEM=INTEGER>PGMNAME>INFNAME>OUTFNAMESTRING>ITEMMSITEM>CHTABCHAR>NEXTLABE>FIRSTCOD>LASTCODE>FIRSTDAT>LASTDATA>FIRSTEXT>LASTEXTRPTRTOREF>FIRSTOFF>LASTOFFS>NEXTOFFSOFFSETTY>N>PC>FINALPC>OLDMARK>PGMSIZE>DATASIZE>RESULT>CURBITINTEGER>FBYTE5 BYTE>FOUTTEXT>CODEBUFF2$0MAXPC BYTE>RELINFO2$0MAXREL BYTE>OPCODES2$0$255 OPCODETY>>=@HLT>= KEYPRESSBOOLEAN>>>>>>=XTRCTCMDNAME1NAME2STRING>>MARK>>OLDMARKSYSMEM> >>RELEASE>>SYSMEMOLDMARK> >>SYNTAXER>>IINTEGER>>WRITELNCHRBELL'*** SYNTAX ERROR:>WRITELN>WRITELN'Syntax should be either>WRITELN>WRITELN'DISASM d:source.ext>WRITELN' (routing output to CON:)>WRITELN>WRITELN' OR>WRITELN>WRITELN'DISASM d:source.ext d:dest.ext>WRITELN' (routing output to d:dest.ext> >>HALTMESSAGESTRING>>CLOSEFBYTERESULT>CLOSEFOUTRESULT>WRITELN>WRITELNMESSAGE>@HLT> >>OPENFILE>>IINTEGER>>XTRCTCMDINFNAMEOUTFNAME>INFNAME7' SYNTAXER>OUTFNAME7' OUTFNAMETTYNAME>ASSIGNFBYTEINFNAME>RESETFBYTE>IORESULT7$255 >HALTCONCAT'Unable to open file INFNAME'.>CURBIT$7>ASSIGNFOUTOPCODEFI>RESETFOUT>IORESULT7$255 >HALT'$Unable to open file of opcode names.>I$0$255>>READFOUTOPCODESIFOLLOW>READFOUTCH>READLNFOUTOPCODESINAME> >CLOSEFOUTRESULT>ASSIGNFOUTOUTFNAME>REWRITEFOUT>IORESULT7$255 HALT'Unable to REWRITE output file.> >> TESTTYPENINTEGERINTEGER>>>>>>>>>>DVMDIINTEGER>>DVN*$4>MD$2)N-$4>I$0>TSTBITRELINFODVMD II,$1>TSTBITRELINFODVMD,$1 II,$2>TESTTYPEI> >>SETTYPENTIPEINTEGER>>>>>>DVMDINTEGER>>DVN*$4>MD$2)N-$4>TSTBITTIPE$0> SETBITRELINFODVMD> CLRBITRELINFODVMD>TSTBITTIPE$1> SETBITRELINFODVMD,$1> CLRBITRELINFODVMD,$1> >> BITINTEGER>>CURBIT7$0 >>EOFFBYTE HALT'*** ERROR: Last byte read...>GETFBYTE>CURBIT$7> >TSTBITFBYTECURBIT BIT$1 BIT$0>CURBITCURBIT.$1> >> BITSNINTEGERINTEGER>>IMINTEGER>>M$0>I$1NM$2)M,BIT>BITSM> >>GETAFIELAAFIELD>>NINTEGER>>NBITS$2>N >$0ATIPEABSLUTE>$1ATIPECODEREL>$2ATIPEDATAREL>$3ATIPECOMMONRE> >NBITS$16>AVALUESWAPN> >>GETBFIELBNAMETYPE>>ININTEGER>>NBITS$3>MOVELEFTNB$1>I$1NBICHRBITS$8> >>GETMSITEITEMMSITEM>>NINTEGER>>FILLCHARITEMSIZEOFMSITEMCHR$0>BIT >$0>ITEMRELFALSE>ITEMVALUEBITS$8> >$1>ITEMRELTRUE>NBITS$2>N >$0>ITEMTIPEABSLUTE>ITEMCONTROLBITS$4>ITEMCONTROL >$0$1$2$3$4GETBFIELITEMB>$5$6$7>GETAFIELITEMA>GETBFIELITEMB> >$8$9$10$11>$12$13$14GETAFIELITEMA> >ITEMCONTROL7$14 CURBIT.$1>> >$1>ITEMTIPECODEREL>NBITS$16>ITEMVALUESWAPN> >$2>ITEMTIPEDATAREL>NBITS$16>ITEMVALUESWAPN> >$3>ITEMTIPECOMMONRE>NBITS$16>ITEMVALUESWAPN> > > > > >>>INSERTEXPROOTLASTPTRTOREF>>>>>>>>LAST7?> >>ROOTP>ROOTPTR?>LASTROOT> > >>PPTR?>LASTPTRP>LASTP> > >>LINEARINPFIRSTLASTPTRTOREF>>>>>>>W1W2PTRTOREF>>W2FIRST>W1W2PTR>LASTVALUEPVALUE>W1VALUE7PVALUE>>W2W1>W1W2PTR> >>>>>PVALUE7W1VALUE/W17LAST> >>PPTRW1>W2PTRP> > PNAME7' >>W2PTRP>PPTRW1PTR> > PW1> >>WRITEMEM>>OUTFNAME7TTYNAME >>WRITECHRBSCHRBSCHRBSCHRBS>WRITEHEXOUTPUTMEMAVAIL$2> > >>>TESTFORC>>MEMAVAIL7SIZEOFREFTYPE >HALT'*** HALT -- insufficient MEMORY>WRITEMEM> >>CREATEREPPTRTOREFTIPETIPETYPE>VALUEINTEGERNAMENAMETYPE>PUBLICINTEGER>>NEWP>TESTFORC>PVALUEVALUE>PNAMENAME>TIPE7CODEREL> >>PTIPECHR$2)PUBLIC>LINEARINPFIRSTCODLASTCODE> > >>PTIPECHR$1,$2)PUBLIC>LINEARINPFIRSTDATLASTDATA> > >>CHAINEXTITEMMSITEM>>PPTRTOREF>QQ1INTEGER>STOPBOOLEAN>>NEWP>TESTFORC>ITEMATIPE7CODEREL> >PTIPECHR$0> >PTIPECHR$1>PVALUEITEMAVALUE>PNAMEITEMB>INSERTEXPFIRSTEXTLASTEXTR>QITEMAVALUE>>STOPTESTTYPEQ7$00CODEBUFFQ7CHR$0>0TESTTYPEQ,$17$0>0CODEBUFFQ,$17CHR$0>SETTYPEQ$3>SETTYPEQ,$1$3>MOVELEFTCODEBUFFQQ1$2>MOVELEFTPCODEBUFFQ$2>QQ1> STOP> >>DEFINEENITEMMSITEM>>PPTRTOREF>>CREATEREPITEMATIPEITEMAVALUEITEMB$0> >>CHAINADDITEMMSITEM>>PPTRTOREF>QQ1INTEGER>STOPBOOLEAN>>CREATEREPCODERELPC'$1>QITEMAVALUE>>STOPTESTTYPEQ7$00CODEBUFFQ7CHR$0>0TESTTYPEQ,$17$0>0CODEBUFFQ,$17CHR$0>SETTYPEQ$3>SETTYPEQ,$1$3>MOVELEFTCODEBUFFQQ1$2>MOVELEFTPCODEBUFFQ$2>QQ1> STOP> >>PROGRAMNITEMMSITEM>>PGMNAMEITEMB> >>DEFINEDAITEMMSITEM>>DATASIZEITEMAVALUE> >>SETLOADITEMMSITEM>>ITEMATIPE7CODEREL PCITEMAVALUE> >>DEFINEPRITEMMSITEM>>PGMSIZEITEMAVALUE> >>NAMEFORSITEMMSITEM>> >>OFFSETITEMMSITEM>>POFFSETTY>>NEWP>TESTFORC>ITEMCONTROL7$8 PSIGN.$1 PSIGN,$1>PLOCPC>POFFSETITEMAVALUE>PNEXT?>>>>>LASTOFFS7?> >>FIRSTOFFP>LASTOFFSFIRSTOFF> > >>LASTOFFSNEXTP>LASTOFFSP> > >>ENDPGMITEMMSITEM>> >>ENDFILEITEMMSITEM>> >>HANDLESPITEMMSITEM>>ITEMCONTROL >$0NAMEFORSITEM>>$2PROGRAMNITEM>>>>$6CHAINEXTITEM>$7DEFINEENITEM>$8>$9OFFSETITEM>$10DEFINEDAITEM>$11SETLOADITEM>$12CHAINADDITEM>$13DEFINEPRITEM>$14ENDPGMITEM>$15ENDFILEITEM> > >>WRITENAMPPTRTOREF>>IINTEGER>>PNAME7'> >WRITEFOUTPNAME> >>TSTBITPTIPE$0> WRITEFOUT'D$> WRITEFOUT'C$>WRITEHEXFOUTPVALUE$2> > >>WRITEREFPCINTEGER>>PPTRTOREF>>MOVELEFTCODEBUFFPCP$2>WRITENAMP> >>WRITENEX>>WRITENAMNEXTLABE>WRITEFOUT':TAB> >>WHEXNNBYTESINTEGER>>>>>>NBYTES7$10LON7$$A0/NBYTES7$20>HIN7$$A0 WRITEFOUT'0>WRITEHEXFOUTNNBYTES>WRITEFOUT'H> >>WRITEOFFPCINTEGER>>NEXTOFFS7? NEXTOFFS>>LOC7PC >>SIGN7$1> >>OFFSET7$0> WRITEFOUT'+OFFSET> WRITEFOUTOFFSET> > OFFSET7$0> WRITEFOUT'-OFFSET> WRITEFOUT'+.OFFSET>NEXTOFFSNEXTOFFSNEXT> > > >>>WRITEDB>>WRITEFOUT'DBTAB>WHEXORDCODEBUFFPC$1>WRITELNFOUT>WRITELNFOUTTAB'(; *** SYNC ERROR: inconsistent REL type> >>>DISASMPCINTEGER>>AAFIELD>PPTRTOREF>EXPECT>N>T>TEMPINTEGER>>WRITEOPC>>ILENINTEGER>CHCHAR>>OPCODESCODEBUFFPC>I$1>LENORDNAME$0>CHNAME$1>I7LEN0CH7ARGMARK>CH7' >WRITEFOUTTAB> >WRITEFOUTCH>II,$1>CHNAMEI> >FOLLOW7$0 >FOLLOW7$1 >WHEXORDCODEBUFFPC,$1$1> FOLLOW7$2 >T7$0 >MOVELEFTCODEBUFFPC,$1TEMP$2>WHEXTEMP$2> > T7$3 >WRITEREFPC,$1> >WRITEOFFPC,$1> >II,$1>I7LEN>CH7' >WRITEFOUTTAB> >WRITEFOUTNAMEI>II,$1> > >WRITELNFOUT> > >>>NEXTLABEPTR7?> >>PC7NEXTLABEVALUE> >>WRITENEX>NEXTLABENEXTLABEPTR> > >WRITEFOUTTAB> > >WRITEFOUTTAB>TESTTYPEPC >$0>EXPECTOPCODESCODEBUFFPCFOLLOW>EXPECT >$0>OPCODESCODEBUFFPCNAME7'??? >WRITEOPC> > >WRITEDB> >PCPC,$1> >$1>TESTTYPEPC,$17$0 >WRITEDB>PCPC,$1> > >WRITEOPC>PCPC,$2> > >$2>TTESTTYPEPC,$1>T7TESTTYPEPC,$2 >WRITEDB>PCPC,$1> > >WRITEOPC>PCPC,$3> > > > >$1$2>>WRITELNFOUTTAB'$; *** WOW!! HOW DID THAT HAPPEN?!!>PCPC,$1> >$3>MOVELEFTCODEBUFFPCP$2>WRITEFOUT'DWTAB>WRITEREFPC>WRITELNFOUT>PCPC,$2> > > >>>PRINTPUBPPTRTOREF>>COUNTINTEGER>>COUNT$0>PPTR7?>>PNAME7' >>COUNT7$0> WRITEFOUTTAB'PUBLICTABPNAME> WRITEFOUT',PNAME>COUNTCOUNT,$1>COUNT7$6 >>WRITELNFOUT>COUNT$0> > >PPPTR> >COUNT7$0 WRITELNFOUT> >>PRINTIT>>PPTRTOREF>COUNTINTEGER>>OUTFNAME7TTYNAME >>WRITELN>WRITELN'Disassembling PGMNAME> >PC$0>PFIRSTEXT>PGMNAME7' >WRITELNFOUTTAB'TITLETABPGMNAME>COUNT$0>P7?>>COUNT7$0> WRITEFOUTTAB'EXTRNTABPNAME> WRITEFOUT',PNAME>COUNTCOUNT,$1>COUNT7$6 >>WRITELNFOUT>COUNT$0> >PPPTR> >COUNT7$0 WRITELNFOUT>PFIRSTCODPTR>PRINTPUBP>PFIRSTDATPTR>PRINTPUBP>WRITELNFOUTTAB'CSEG>NEXTLABEFIRSTCODPTR>NEXTOFFSFIRSTOFF>PC7FINALPC>DISASMPC>PC7PGMSIZE >WRITELNFOUTTAB'DSTABPGMSIZE.PC>NEXTLABE7LASTCODE>>WRITEFOUTTAB'ORGTAB>WHEXNEXTLABEVALUE$2>WRITELNFOUT>WRITENEX>WRITELNFOUT>NEXTLABENEXTLABEPTR> >DATASIZE7$0 >>WRITELNFOUTTAB'DSEGTAB>NEXTLABEFIRSTDATPTR>PC$0>NEXTLABEPTR7?>>PC7NEXTLABEVALUE> >>WRITENEX>WRITEFOUT'DSTAB>NEXTLABENEXTLABEPTR>NEXTLABEPTR7?> >>WRITELNFOUTNEXTLABEVALUE.PC>PCNEXTLABEVALUE> > >WRITELNFOUTDATASIZE.PC> > >>WRITELNFOUTTAB'DSTAB>NEXTLABEVALUE.PC>PCNEXTLABEVALUE> > > >WRITELNFOUTTAB'END> >>REPLACEN>>PPTRTOREF>FOUNDBOOLEAN>N>VALUEINTEGER>>PC$0>PC7FINALPC>>NTESTTYPEPC>N >$0PCPC,$1>$3PCPC,$2>$1$2>MOVELEFTCODEBUFFPCVALUE$2>N7$1> PFIRSTCODPTR> PFIRSTDATPTR>FOUNDFALSE>P7LASTCODE0P7LASTDATA>0(FOUND>>FOUNDPVALUE7VALUE>(FOUND PPPTR> >P7LASTCODE> CREATEREPCODERELVALUE'$1> P7LASTDATA >CREATEREPDATARELVALUE'$1>>>>>>MOVELEFTPCODEBUFFPC$2>SETTYPEPC$3>SETTYPEPC,$1$3>PCPC,$2> > > > >>INITIALI>>PC$0>PGMNAME'>PGMSIZE$0>DATASIZE$0>RELEASE>NEWFIRSTCOD>NEWLASTCODE>NEWFIRSTDAT>NEWLASTDATA>FIRSTCODPTRLASTCODE>LASTCODEPTR?>FIRSTDATPTRLASTDATA>LASTDATAPTR?>FIRSTEXT?>LASTEXTR?>FIRSTOFF?>LASTOFFS?> >>>ONEPROGRITEMMSITEM>>INITIALI>OUTFNAME7TTYNAME >WRITE'Memory remaining: >>GETMSITEITEM>ITEMREL0ITEMTIPE7ABSLUTE0ITEMCONTROL7$15 EXIT>>(ITEMREL> >>MOVELEFTITEMVALUECODEBUFFPC$1>SETTYPEPC$0>PCPC,$1>PC7MAXPC HALT'*** ERROR: Code file overflow.> > >ITEMTIPE >CODEREL>DATAREL>COMMONRE>PC7MAXPC.$2> >MOVELEFTITEMVALUECODEBUFFPC$2> >HALT'*** ERROR: Code file overflow.>ITEMTIPE >CODERELN$1>DATARELN$2>COMMONREN$0> >SETTYPEPCN>SETTYPEPC,$1N>PCPC,$2> >ABSLUTEHANDLESPITEM> > ITEMREL0ITEMTIPE7ABSLUTE0ITEMCONTROL3$14$15>FINALPCPC>REPLACEN>PRINTIT> >>>TABCHRTABU>OPENFILE>MARK>>ONEPROGRITEM> ITEMREL0ITEMTIPE7ABSLUTE0ITEMCONTROL7$15>HALT'!End of file - Normal termination.> ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿD:DISA-REL.PRN : handle_special ( item ); END; UNT