mirror of https://github.com/microsoft/MS-DOS.git
1103 lines
38 KiB
NASM
1103 lines
38 KiB
NASM
|
.xlist
|
|||
|
.xcref
|
|||
|
INCLUDE debequ.asm
|
|||
|
INCLUDE dossym.asm
|
|||
|
.list
|
|||
|
.cref
|
|||
|
|
|||
|
CODE SEGMENT PUBLIC BYTE 'CODE'
|
|||
|
CODE ENDS
|
|||
|
|
|||
|
CONST SEGMENT PUBLIC BYTE
|
|||
|
CONST ENDS
|
|||
|
|
|||
|
DATA SEGMENT PUBLIC BYTE
|
|||
|
DATA ENDS
|
|||
|
|
|||
|
DG GROUP CODE,CONST,DATA
|
|||
|
|
|||
|
CODE SEGMENT PUBLIC BYTE 'CODE'
|
|||
|
|
|||
|
EXTRN ALUFROMREG:NEAR,ALUTOREG:NEAR,ACCIMM:NEAR
|
|||
|
EXTRN SEGOP:NEAR,ESPRE:NEAR,SSPRE:NEAR,CSPRE:NEAR
|
|||
|
EXTRN DSPRE:NEAR,REGOP:NEAR,NOOPERANDS:NEAR
|
|||
|
EXTRN SAVHEX:NEAR,SHORTJMP:NEAR,MOVSEGTO:NEAR
|
|||
|
EXTRN WORDTOALU:NEAR,MOVSEGFROM:NEAR,GETADDR:NEAR
|
|||
|
EXTRN XCHGAX:NEAR,LONGJMP:NEAR,LOADACC:NEAR,STOREACC:NEAR
|
|||
|
EXTRN REGIMMB:NEAR,SAV16:NEAR,MEMIMM:NEAR,INT3:NEAR,SAV8:NEAR
|
|||
|
EXTRN CHK10:NEAR,M8087:NEAR,M8087_D9:NEAR,M8087_DB:NEAR
|
|||
|
EXTRN M8087_DD:NEAR,M8087_DF:NEAR,INFIXB:NEAR,INFIXW:NEAR
|
|||
|
EXTRN OUTFIXB:NEAR,OUTFIXW:NEAR,JMPCALL:NEAR,INVARB:NEAR
|
|||
|
EXTRN INVARW:NEAR,OUTVARB:NEAR,OUTVARW:NEAR,PREFIX:NEAR
|
|||
|
EXTRN IMMED:NEAR,SIGNIMM:NEAR,SHIFT:NEAR,SHIFTV:NEAR
|
|||
|
EXTRN GRP1:NEAR,GRP2:NEAR,REGIMMW:NEAR
|
|||
|
|
|||
|
|
|||
|
EXTRN DB_OPER:NEAR,DW_OPER:NEAR,ASSEMLOOP:NEAR,GROUP2:NEAR
|
|||
|
EXTRN NO_OPER:NEAR,GROUP1:NEAR,FGROUPP:NEAR,FGROUPX:NEAR
|
|||
|
EXTRN FGROUPZ:NEAR,FD9_OPER:NEAR,FGROUPB:NEAR,FGROUP:NEAR
|
|||
|
EXTRN FGROUPDS:NEAR,DCINC_OPER:NEAR,INT_OPER:NEAR,IN_OPER:NEAR
|
|||
|
EXTRN DISP8_OPER:NEAR,JMP_OPER:NEAR,L_OPER:NEAR,MOV_OPER:NEAR
|
|||
|
EXTRN OUT_OPER:NEAR,PUSH_OPER:NEAR,GET_DATA16:NEAR
|
|||
|
EXTRN FGROUP3:NEAR,FGROUP3W:NEAR,FDE_OPER:NEAR,ESC_OPER:NEAR
|
|||
|
EXTRN AA_OPER:NEAR,CALL_OPER:NEAR,FDB_OPER:NEAR,POP_OPER:NEAR
|
|||
|
EXTRN ROTOP:NEAR,TST_OPER:NEAR,EX_OPER:NEAR
|
|||
|
|
|||
|
CODE ENDS
|
|||
|
|
|||
|
CONST SEGMENT PUBLIC BYTE
|
|||
|
|
|||
|
PUBLIC REG8,REG16,SREG,SIZ8,DISTAB,DBMN,ADDMN,ADCMN,SUBMN
|
|||
|
PUBLIC SBBMN,XORMN,ORMN,ANDMN,AAAMN,AADMN,AASMN,CALLMN,CBWMN
|
|||
|
PUBLIC UPMN,DIMN,CMCMN,CMPMN,CWDMN,DAAMN,DASMN,DECMN,DIVMN
|
|||
|
PUBLIC ESCMN,HLTMN,IDIVMN,IMULMN,INCMN,INTOMN,INTMN,INMN,IRETMN
|
|||
|
PUBLIC JAMN,JCXZMN,JNCMN,JBEMN,JZMN,JGEMN,JGMN,JLEMN,JLMN,JMPMN
|
|||
|
PUBLIC JNZMN,JPEMN,JNZMN,JPEMN,JPOMN,JNSMN,JNOMN,JOMN,JSMN,LAHFMN
|
|||
|
PUBLIC LDSMN,LEAMN,LESMN,LOCKMN,LODBMN,LODWMN,LOOPNZMN,LOOPZMN
|
|||
|
PUBLIC LOOPMN,MOVBMN,MOVWMN,MOVMN,MULMN,NEGMN,NOPMN,NOTMN,OUTMN
|
|||
|
PUBLIC POPFMN,POPMN,PUSHFMN,PUSHMN,RCLMN,RCRMN,REPZMN,REPNZMN
|
|||
|
PUBLIC RETFMN,RETMN,ROLMN,RORMN,SAHFMN,SARMN,SCABMN,SCAWMN,SHLMN
|
|||
|
PUBLIC SHRMN,STCMN,DOWNMN,EIMN,STOBMN,STOWMN,TESTMN,WAITMN,XCHGMN
|
|||
|
PUBLIC XLATMN,ESSEGMN,CSSEGMN,SSSEGMN,DSSEGMN,BADMN
|
|||
|
|
|||
|
PUBLIC M8087_TAB,FI_TAB,SIZE_TAB,MD9_TAB,MD9_TAB2,MDB_TAB
|
|||
|
PUBLIC MDB_TAB2,MDD_TAB,MDD_TAB2,MDF_TAB,OPTAB,MAXOP,SHFTAB,IMMTAB
|
|||
|
PUBLIC GRP1TAB,GRP2TAB,SEGTAB,REGTAB,FLAGTAB,STACK
|
|||
|
|
|||
|
PUBLIC AXSAVE,BXSAVE,CXSAVE,DXSAVE,BPSAVE,SPSAVE,SISAVE
|
|||
|
PUBLIC DISAVE,DSSAVE,ESSAVE,SSSAVE,CSSAVE,IPSAVE,FSAVE,RSTACK
|
|||
|
PUBLIC REGDIF,RDFLG,TOTREG,DSIZ,NOREGL,DISPB,LBUFSIZ,LBUFFCNT
|
|||
|
PUBLIC LINEBUF,PFLAG,COLPOS
|
|||
|
|
|||
|
IF SYSVER
|
|||
|
PUBLIC CONFCB,POUT,COUT,CIN,IOBUFF,IOADDR,IOCALL,IOCOM,IOSTAT
|
|||
|
PUBLIC IOCHRET,IOSEG,IOCNT
|
|||
|
ENDIF
|
|||
|
|
|||
|
PUBLIC QFLAG,NEWEXEC,RETSAVE,USER_PROC_PDB,HEADSAVE,EXEC_BLOCK
|
|||
|
PUBLIC COM_LINE,COM_FCB1,COM_FCB2,COM_SSSP,COM_CSIP
|
|||
|
|
|||
|
REG8 DB "ALCLDLBLAHCHDHBH"
|
|||
|
REG16 DB "AXCXDXBXSPBPSIDI"
|
|||
|
SREG DB "ESCSSSDS",0,0
|
|||
|
SIZ8 DB "BYWODWQWTB",0,0
|
|||
|
; 0
|
|||
|
DISTAB DW OFFSET DG:ADDMN,ALUFROMREG
|
|||
|
DW OFFSET DG:ADDMN,ALUFROMREG
|
|||
|
DW OFFSET DG:ADDMN,ALUTOREG
|
|||
|
DW OFFSET DG:ADDMN,ALUTOREG
|
|||
|
DW OFFSET DG:ADDMN,ACCIMM
|
|||
|
DW OFFSET DG:ADDMN,ACCIMM
|
|||
|
DW OFFSET DG:PUSHMN,SEGOP
|
|||
|
DW OFFSET DG:POPMN,SEGOP
|
|||
|
DW OFFSET DG:ORMN,ALUFROMREG
|
|||
|
DW OFFSET DG:ORMN,ALUFROMREG
|
|||
|
DW OFFSET DG:ORMN,ALUTOREG
|
|||
|
DW OFFSET DG:ORMN,ALUTOREG
|
|||
|
DW OFFSET DG:ORMN,ACCIMM
|
|||
|
DW OFFSET DG:ORMN,ACCIMM
|
|||
|
DW OFFSET DG:PUSHMN,SEGOP
|
|||
|
DW OFFSET DG:POPMN,SEGOP
|
|||
|
; 10H
|
|||
|
DW OFFSET DG:ADCMN,ALUFROMREG
|
|||
|
DW OFFSET DG:ADCMN,ALUFROMREG
|
|||
|
DW OFFSET DG:ADCMN,ALUTOREG
|
|||
|
DW OFFSET DG:ADCMN,ALUTOREG
|
|||
|
DW OFFSET DG:ADCMN,ACCIMM
|
|||
|
DW OFFSET DG:ADCMN,ACCIMM
|
|||
|
DW OFFSET DG:PUSHMN,SEGOP
|
|||
|
DW OFFSET DG:POPMN,SEGOP
|
|||
|
DW OFFSET DG:SBBMN,ALUFROMREG
|
|||
|
DW OFFSET DG:SBBMN,ALUFROMREG
|
|||
|
DW OFFSET DG:SBBMN,ALUTOREG
|
|||
|
DW OFFSET DG:SBBMN,ALUTOREG
|
|||
|
DW OFFSET DG:SBBMN,ACCIMM
|
|||
|
DW OFFSET DG:SBBMN,ACCIMM
|
|||
|
DW OFFSET DG:PUSHMN,SEGOP
|
|||
|
DW OFFSET DG:POPMN,SEGOP
|
|||
|
; 20H
|
|||
|
DW OFFSET DG:ANDMN,ALUFROMREG
|
|||
|
DW OFFSET DG:ANDMN,ALUFROMREG
|
|||
|
DW OFFSET DG:ANDMN,ALUTOREG
|
|||
|
DW OFFSET DG:ANDMN,ALUTOREG
|
|||
|
DW OFFSET DG:ANDMN,ACCIMM
|
|||
|
DW OFFSET DG:ANDMN,ACCIMM
|
|||
|
DW OFFSET DG:ESSEGMN,ESPRE
|
|||
|
DW OFFSET DG:DAAMN,NOOPERANDS
|
|||
|
DW OFFSET DG:SUBMN,ALUFROMREG
|
|||
|
DW OFFSET DG:SUBMN,ALUFROMREG
|
|||
|
DW OFFSET DG:SUBMN,ALUTOREG
|
|||
|
DW OFFSET DG:SUBMN,ALUTOREG
|
|||
|
DW OFFSET DG:SUBMN,ACCIMM
|
|||
|
DW OFFSET DG:SUBMN,ACCIMM
|
|||
|
DW OFFSET DG:CSSEGMN,CSPRE
|
|||
|
DW OFFSET DG:DASMN,NOOPERANDS
|
|||
|
; 30H
|
|||
|
DW OFFSET DG:XORMN,ALUFROMREG
|
|||
|
DW OFFSET DG:XORMN,ALUFROMREG
|
|||
|
DW OFFSET DG:XORMN,ALUTOREG
|
|||
|
DW OFFSET DG:XORMN,ALUTOREG
|
|||
|
DW OFFSET DG:XORMN,ACCIMM
|
|||
|
DW OFFSET DG:XORMN,ACCIMM
|
|||
|
DW OFFSET DG:SSSEGMN,SSPRE
|
|||
|
DW OFFSET DG:AAAMN,NOOPERANDS
|
|||
|
DW OFFSET DG:CMPMN,ALUFROMREG
|
|||
|
DW OFFSET DG:CMPMN,ALUFROMREG
|
|||
|
DW OFFSET DG:CMPMN,ALUTOREG
|
|||
|
DW OFFSET DG:CMPMN,ALUTOREG
|
|||
|
DW OFFSET DG:CMPMN,ACCIMM
|
|||
|
DW OFFSET DG:CMPMN,ACCIMM
|
|||
|
DW OFFSET DG:DSSEGMN,DSPRE
|
|||
|
DW OFFSET DG:AASMN,NOOPERANDS
|
|||
|
; 40H
|
|||
|
DW OFFSET DG:INCMN,REGOP
|
|||
|
DW OFFSET DG:INCMN,REGOP
|
|||
|
DW OFFSET DG:INCMN,REGOP
|
|||
|
DW OFFSET DG:INCMN,REGOP
|
|||
|
DW OFFSET DG:INCMN,REGOP
|
|||
|
DW OFFSET DG:INCMN,REGOP
|
|||
|
DW OFFSET DG:INCMN,REGOP
|
|||
|
DW OFFSET DG:INCMN,REGOP
|
|||
|
DW OFFSET DG:DECMN,REGOP
|
|||
|
DW OFFSET DG:DECMN,REGOP
|
|||
|
DW OFFSET DG:DECMN,REGOP
|
|||
|
DW OFFSET DG:DECMN,REGOP
|
|||
|
DW OFFSET DG:DECMN,REGOP
|
|||
|
DW OFFSET DG:DECMN,REGOP
|
|||
|
DW OFFSET DG:DECMN,REGOP
|
|||
|
DW OFFSET DG:DECMN,REGOP
|
|||
|
; 50H
|
|||
|
DW OFFSET DG:PUSHMN,REGOP
|
|||
|
DW OFFSET DG:PUSHMN,REGOP
|
|||
|
DW OFFSET DG:PUSHMN,REGOP
|
|||
|
DW OFFSET DG:PUSHMN,REGOP
|
|||
|
DW OFFSET DG:PUSHMN,REGOP
|
|||
|
DW OFFSET DG:PUSHMN,REGOP
|
|||
|
DW OFFSET DG:PUSHMN,REGOP
|
|||
|
DW OFFSET DG:PUSHMN,REGOP
|
|||
|
DW OFFSET DG:POPMN,REGOP
|
|||
|
DW OFFSET DG:POPMN,REGOP
|
|||
|
DW OFFSET DG:POPMN,REGOP
|
|||
|
DW OFFSET DG:POPMN,REGOP
|
|||
|
DW OFFSET DG:POPMN,REGOP
|
|||
|
DW OFFSET DG:POPMN,REGOP
|
|||
|
DW OFFSET DG:POPMN,REGOP
|
|||
|
DW OFFSET DG:POPMN,REGOP
|
|||
|
; 60H
|
|||
|
DW OFFSET DG:DBMN,SAVHEX
|
|||
|
DW OFFSET DG:DBMN,SAVHEX
|
|||
|
DW OFFSET DG:DBMN,SAVHEX
|
|||
|
DW OFFSET DG:DBMN,SAVHEX
|
|||
|
DW OFFSET DG:DBMN,SAVHEX
|
|||
|
DW OFFSET DG:DBMN,SAVHEX
|
|||
|
DW OFFSET DG:DBMN,SAVHEX
|
|||
|
DW OFFSET DG:DBMN,SAVHEX
|
|||
|
DW OFFSET DG:DBMN,SAVHEX
|
|||
|
DW OFFSET DG:DBMN,SAVHEX
|
|||
|
DW OFFSET DG:DBMN,SAVHEX
|
|||
|
DW OFFSET DG:DBMN,SAVHEX
|
|||
|
DW OFFSET DG:DBMN,SAVHEX
|
|||
|
DW OFFSET DG:DBMN,SAVHEX
|
|||
|
DW OFFSET DG:DBMN,SAVHEX
|
|||
|
DW OFFSET DG:DBMN,SAVHEX
|
|||
|
; 70H
|
|||
|
DW OFFSET DG:JOMN,SHORTJMP
|
|||
|
DW OFFSET DG:JNOMN,SHORTJMP
|
|||
|
DW OFFSET DG:JCMN,SHORTJMP
|
|||
|
DW OFFSET DG:JNCMN,SHORTJMP
|
|||
|
DW OFFSET DG:JZMN,SHORTJMP
|
|||
|
DW OFFSET DG:JNZMN,SHORTJMP
|
|||
|
DW OFFSET DG:JBEMN,SHORTJMP
|
|||
|
DW OFFSET DG:JAMN,SHORTJMP
|
|||
|
DW OFFSET DG:JSMN,SHORTJMP
|
|||
|
DW OFFSET DG:JNSMN,SHORTJMP
|
|||
|
DW OFFSET DG:JPEMN,SHORTJMP
|
|||
|
DW OFFSET DG:JPOMN,SHORTJMP
|
|||
|
DW OFFSET DG:JLMN,SHORTJMP
|
|||
|
DW OFFSET DG:JGEMN,SHORTJMP
|
|||
|
DW OFFSET DG:JLEMN,SHORTJMP
|
|||
|
DW OFFSET DG:JGMN,SHORTJMP
|
|||
|
; 80H
|
|||
|
DW 0,IMMED
|
|||
|
DW 0,IMMED
|
|||
|
DW 0,IMMED
|
|||
|
DW 0,SIGNIMM
|
|||
|
DW OFFSET DG:TESTMN,ALUFROMREG
|
|||
|
DW OFFSET DG:TESTMN,ALUFROMREG
|
|||
|
DW OFFSET DG:XCHGMN,ALUFROMREG
|
|||
|
DW OFFSET DG:XCHGMN,ALUFROMREG
|
|||
|
DW OFFSET DG:MOVMN,ALUFROMREG
|
|||
|
DW OFFSET DG:MOVMN,ALUFROMREG
|
|||
|
DW OFFSET DG:MOVMN,ALUTOREG
|
|||
|
DW OFFSET DG:MOVMN,ALUTOREG
|
|||
|
DW OFFSET DG:MOVMN,MOVSEGTO
|
|||
|
DW OFFSET DG:LEAMN,WORDTOALU
|
|||
|
DW OFFSET DG:MOVMN,MOVSEGFROM
|
|||
|
DW OFFSET DG:POPMN,GETADDR
|
|||
|
; 90H
|
|||
|
DW OFFSET DG:NOPMN,NOOPERANDS
|
|||
|
DW OFFSET DG:XCHGMN,XCHGAX
|
|||
|
DW OFFSET DG:XCHGMN,XCHGAX
|
|||
|
DW OFFSET DG:XCHGMN,XCHGAX
|
|||
|
DW OFFSET DG:XCHGMN,XCHGAX
|
|||
|
DW OFFSET DG:XCHGMN,XCHGAX
|
|||
|
DW OFFSET DG:XCHGMN,XCHGAX
|
|||
|
DW OFFSET DG:XCHGMN,XCHGAX
|
|||
|
DW OFFSET DG:CBWMN,NOOPERANDS
|
|||
|
DW OFFSET DG:CWDMN,NOOPERANDS
|
|||
|
DW OFFSET DG:CALLMN,LONGJMP
|
|||
|
DW OFFSET DG:WAITMN,NOOPERANDS
|
|||
|
DW OFFSET DG:PUSHFMN,NOOPERANDS
|
|||
|
DW OFFSET DG:POPFMN,NOOPERANDS
|
|||
|
DW OFFSET DG:SAHFMN,NOOPERANDS
|
|||
|
DW OFFSET DG:LAHFMN,NOOPERANDS
|
|||
|
; A0H
|
|||
|
DW OFFSET DG:MOVMN,LOADACC
|
|||
|
DW OFFSET DG:MOVMN,LOADACC
|
|||
|
DW OFFSET DG:MOVMN,STOREACC
|
|||
|
DW OFFSET DG:MOVMN,STOREACC
|
|||
|
DW OFFSET DG:MOVBMN,NOOPERANDS
|
|||
|
DW OFFSET DG:MOVWMN,NOOPERANDS
|
|||
|
DW OFFSET DG:CMPBMN,NOOPERANDS
|
|||
|
DW OFFSET DG:CMPWMN,NOOPERANDS
|
|||
|
DW OFFSET DG:TESTMN,ACCIMM
|
|||
|
DW OFFSET DG:TESTMN,ACCIMM
|
|||
|
DW OFFSET DG:STOBMN,NOOPERANDS
|
|||
|
DW OFFSET DG:STOWMN,NOOPERANDS
|
|||
|
DW OFFSET DG:LODBMN,NOOPERANDS
|
|||
|
DW OFFSET DG:LODWMN,NOOPERANDS
|
|||
|
DW OFFSET DG:SCABMN,NOOPERANDS
|
|||
|
DW OFFSET DG:SCAWMN,NOOPERANDS
|
|||
|
; B0H
|
|||
|
DW OFFSET DG:MOVMN,REGIMMB
|
|||
|
DW OFFSET DG:MOVMN,REGIMMB
|
|||
|
DW OFFSET DG:MOVMN,REGIMMB
|
|||
|
DW OFFSET DG:MOVMN,REGIMMB
|
|||
|
DW OFFSET DG:MOVMN,REGIMMB
|
|||
|
DW OFFSET DG:MOVMN,REGIMMB
|
|||
|
DW OFFSET DG:MOVMN,REGIMMB
|
|||
|
DW OFFSET DG:MOVMN,REGIMMB
|
|||
|
DW OFFSET DG:MOVMN,REGIMMW
|
|||
|
DW OFFSET DG:MOVMN,REGIMMW
|
|||
|
DW OFFSET DG:MOVMN,REGIMMW
|
|||
|
DW OFFSET DG:MOVMN,REGIMMW
|
|||
|
DW OFFSET DG:MOVMN,REGIMMW
|
|||
|
DW OFFSET DG:MOVMN,REGIMMW
|
|||
|
DW OFFSET DG:MOVMN,REGIMMW
|
|||
|
DW OFFSET DG:MOVMN,REGIMMW
|
|||
|
; C0H
|
|||
|
DW OFFSET DG:DBMN,SAVHEX
|
|||
|
DW OFFSET DG:DBMN,SAVHEX
|
|||
|
DW OFFSET DG:RETMN,SAV16
|
|||
|
DW OFFSET DG:RETMN,NOOPERANDS
|
|||
|
DW OFFSET DG:LESMN,WORDTOALU
|
|||
|
DW OFFSET DG:LDSMN,WORDTOALU
|
|||
|
DW OFFSET DG:MOVMN,MEMIMM
|
|||
|
DW OFFSET DG:MOVMN,MEMIMM
|
|||
|
DW OFFSET DG:DBMN,SAVHEX
|
|||
|
DW OFFSET DG:DBMN,SAVHEX
|
|||
|
DW OFFSET DG:RETFMN,SAV16
|
|||
|
DW OFFSET DG:RETFMN,NOOPERANDS
|
|||
|
DW OFFSET DG:INTMN,INT3
|
|||
|
DW OFFSET DG:INTMN,SAV8
|
|||
|
DW OFFSET DG:INTOMN,NOOPERANDS
|
|||
|
DW OFFSET DG:IRETMN,NOOPERANDS
|
|||
|
; D0H
|
|||
|
DW 0,SHIFT
|
|||
|
DW 0,SHIFT
|
|||
|
DW 0,SHIFTV
|
|||
|
DW 0,SHIFTV
|
|||
|
DW OFFSET DG:AAMMN,CHK10
|
|||
|
DW OFFSET DG:AADMN,CHK10
|
|||
|
DW OFFSET DG:DBMN,SAVHEX
|
|||
|
DW OFFSET DG:XLATMN,NOOPERANDS
|
|||
|
DW 0,M8087 ; d8
|
|||
|
DW 0,M8087_D9 ; d9
|
|||
|
DW 0,M8087 ; da
|
|||
|
DW 0,M8087_DB ; db
|
|||
|
DW 0,M8087 ; dc
|
|||
|
DW 0,M8087_DD ; dd
|
|||
|
DW 0,M8087 ; de
|
|||
|
DW 0,M8087_DF ; df
|
|||
|
; E0H
|
|||
|
DW OFFSET DG:LOOPNZMN,SHORTJMP
|
|||
|
DW OFFSET DG:LOOPZMN,SHORTJMP
|
|||
|
DW OFFSET DG:LOOPMN,SHORTJMP
|
|||
|
DW OFFSET DG:JCXZMN,SHORTJMP
|
|||
|
DW OFFSET DG:INMN,INFIXB
|
|||
|
DW OFFSET DG:INMN,INFIXW
|
|||
|
DW OFFSET DG:OUTMN,OUTFIXB
|
|||
|
DW OFFSET DG:OUTMN,OUTFIXW
|
|||
|
DW OFFSET DG:CALLMN,JMPCALL
|
|||
|
DW OFFSET DG:JMPMN,JMPCALL
|
|||
|
DW OFFSET DG:JMPMN,LONGJMP
|
|||
|
DW OFFSET DG:JMPMN,SHORTJMP
|
|||
|
DW OFFSET DG:INMN,INVARB
|
|||
|
DW OFFSET DG:INMN,INVARW
|
|||
|
DW OFFSET DG:OUTMN,OUTVARB
|
|||
|
DW OFFSET DG:OUTMN,OUTVARW
|
|||
|
; F0H
|
|||
|
DW OFFSET DG:LOCKMN,PREFIX
|
|||
|
DW OFFSET DG:DBMN,SAVHEX
|
|||
|
DW OFFSET DG:REPNZMN,PREFIX
|
|||
|
DW OFFSET DG:REPZMN,PREFIX
|
|||
|
DW OFFSET DG:HLTMN,NOOPERANDS
|
|||
|
DW OFFSET DG:CMCMN,NOOPERANDS
|
|||
|
DW 0,GRP1
|
|||
|
DW 0,GRP1
|
|||
|
DW OFFSET DG:CLCMN,NOOPERANDS
|
|||
|
DW OFFSET DG:STCMN,NOOPERANDS
|
|||
|
DW OFFSET DG:DIMN,NOOPERANDS
|
|||
|
DW OFFSET DG:EIMN,NOOPERANDS
|
|||
|
DW OFFSET DG:UPMN,NOOPERANDS
|
|||
|
DW OFFSET DG:DOWNMN,NOOPERANDS
|
|||
|
DW 0,GRP2
|
|||
|
DW 0,GRP2
|
|||
|
|
|||
|
DBMN DB "D","B"+80H
|
|||
|
DB "D","W"+80H
|
|||
|
DB ";"+80H
|
|||
|
ADDMN DB "AD","D"+80H
|
|||
|
ADCMN DB "AD","C"+80H
|
|||
|
SUBMN DB "SU","B"+80H
|
|||
|
SBBMN DB "SB","B"+80H
|
|||
|
XORMN DB "XO","R"+80H
|
|||
|
ORMN DB "O","R"+80H
|
|||
|
ANDMN DB "AN","D"+80H
|
|||
|
AAAMN DB "AA","A"+80H
|
|||
|
AADMN DB "AA","D"+80H
|
|||
|
AAMMN DB "AA","M"+80H
|
|||
|
AASMN DB "AA","S"+80H
|
|||
|
CALLMN DB "CAL","L"+80H
|
|||
|
CBWMN DB "CB","W"+80H
|
|||
|
CLCMN DB "CL","C"+80H
|
|||
|
UPMN DB "CL","D"+80H ; CLD+80H
|
|||
|
DIMN DB "CL","I"+80H
|
|||
|
CMCMN DB "CM","C"+80H
|
|||
|
CMPBMN DB "CMPS","B"+80H ; CMPSB
|
|||
|
CMPWMN DB "CMPS","W"+80H ; CMPSW+80H
|
|||
|
CMPMN DB "CM","P"+80H
|
|||
|
CWDMN DB "CW","D"+80H
|
|||
|
DAAMN DB "DA","A"+80H
|
|||
|
DASMN DB "DA","S"+80H
|
|||
|
DECMN DB "DE","C"+80H
|
|||
|
DIVMN DB "DI","V"+80H
|
|||
|
ESCMN DB "ES","C"+80H
|
|||
|
DB "FXC","H"+80H
|
|||
|
DB "FFRE","E"+80H
|
|||
|
DB "FCOMP","P"+80H
|
|||
|
DB "FCOM","P"+80H
|
|||
|
DB "FCO","M"+80H
|
|||
|
DB "FICOM","P"+80H
|
|||
|
DB "FICO","M"+80H
|
|||
|
DB "FNO","P"+80H
|
|||
|
DB "FCH","S"+80H
|
|||
|
DB "FAB","S"+80H
|
|||
|
DB "FTS","T"+80H
|
|||
|
DB "FXA","M"+80H
|
|||
|
DB "FLDL2","T"+80H
|
|||
|
DB "FLDL2","E"+80H
|
|||
|
DB "FLDLG","2"+80H
|
|||
|
DB "FLDLN","2"+80H
|
|||
|
DB "FLDP","I"+80H
|
|||
|
DB "FLD","1"+80H
|
|||
|
DB "FLD","Z"+80H
|
|||
|
DB "F2XM","1"+80H
|
|||
|
DB "FYL2XP","1"+80H
|
|||
|
DB "FYL2","X"+80H
|
|||
|
DB "FPTA","N"+80H
|
|||
|
DB "FPATA","N"+80H
|
|||
|
DB "FXTRAC","T"+80H
|
|||
|
DB "FDECST","P"+80H
|
|||
|
DB "FINCST","P"+80H
|
|||
|
DB "FPRE","M"+80H
|
|||
|
DB "FSQR","T"+80H
|
|||
|
DB "FRNDIN","T"+80H
|
|||
|
DB "FSCAL","E"+80H
|
|||
|
DB "FINI","T"+80H
|
|||
|
DB "FDIS","I"+80H
|
|||
|
DB "FEN","I"+80H
|
|||
|
DB "FCLE","X"+80H
|
|||
|
DB "FBL","D"+80H
|
|||
|
DB "FBST","P"+80H
|
|||
|
DB "FLDC","W"+80H
|
|||
|
DB "FSTC","W"+80H
|
|||
|
DB "FSTS","W"+80H
|
|||
|
DB "FSTEN","V"+80H
|
|||
|
DB "FLDEN","V"+80H
|
|||
|
DB "FSAV","E"+80H
|
|||
|
DB "FRSTO","R"+80H
|
|||
|
DB "FADD","P"+80H
|
|||
|
DB "FAD","D"+80H
|
|||
|
DB "FIAD","D"+80H
|
|||
|
DB "FSUBR","P"+80H
|
|||
|
DB "FSUB","R"+80H
|
|||
|
DB "FSUB","P"+80H
|
|||
|
DB "FSU","B"+80H
|
|||
|
DB "FISUB","R"+80H
|
|||
|
DB "FISU","B"+80H
|
|||
|
DB "FMUL","P"+80H
|
|||
|
DB "FMU","L"+80H
|
|||
|
DB "FIMU","L"+80H
|
|||
|
DB "FDIVR","P"+80H
|
|||
|
DB "FDIV","R"+80H
|
|||
|
DB "FDIV","P"+80H
|
|||
|
DB "FDI","V"+80H
|
|||
|
DB "FIDIV","R"+80H
|
|||
|
DB "FIDI","V"+80H
|
|||
|
DB "FWAI","T"+80H
|
|||
|
DB "FIL","D"+80H
|
|||
|
DB "FL","D"+80H
|
|||
|
DB "FST","P"+80H
|
|||
|
DB "FS","T"+80H
|
|||
|
DB "FIST","P"+80H
|
|||
|
DB "FIS","T"+80H
|
|||
|
HLTMN DB "HL","T"+80H
|
|||
|
IDIVMN DB "IDI","V"+80H
|
|||
|
IMULMN DB "IMU","L"+80H
|
|||
|
INCMN DB "IN","C"+80H
|
|||
|
INTOMN DB "INT","O"+80H
|
|||
|
INTMN DB "IN","T"+80H
|
|||
|
INMN DB "I","N"+80H ; IN
|
|||
|
IRETMN DB "IRE","T"+80H
|
|||
|
DB "JNB","E"+80H
|
|||
|
DB "JA","E"+80H
|
|||
|
JAMN DB "J","A"+80H
|
|||
|
JCXZMN DB "JCX","Z"+80H
|
|||
|
JNCMN DB "JN","B"+80H
|
|||
|
JBEMN DB "JB","E"+80H
|
|||
|
JCMN DB "J","B"+80H
|
|||
|
DB "JN","C"+80H
|
|||
|
DB "J","C"+80H
|
|||
|
DB "JNA","E"+80H
|
|||
|
DB "JN","A"+80H
|
|||
|
JZMN DB "J","Z"+80H
|
|||
|
DB "J","E"+80H
|
|||
|
JGEMN DB "JG","E"+80H
|
|||
|
JGMN DB "J","G"+80H
|
|||
|
DB "JNL","E"+80H
|
|||
|
DB "JN","L"+80H
|
|||
|
JLEMN DB "JL","E"+80H
|
|||
|
JLMN DB "J","L"+80H
|
|||
|
DB "JNG","E"+80H
|
|||
|
DB "JN","G"+80H
|
|||
|
JMPMN DB "JM","P"+80H
|
|||
|
JNZMN DB "JN","Z"+80H
|
|||
|
DB "JN","E"+80H
|
|||
|
JPEMN DB "JP","E"+80H
|
|||
|
JPOMN DB "JP","O"+80H
|
|||
|
DB "JN","P"+80H
|
|||
|
JNSMN DB "JN","S"+80H
|
|||
|
JNOMN DB "JN","O"+80H
|
|||
|
JOMN DB "J","O"+80H
|
|||
|
JSMN DB "J","S"+80H
|
|||
|
DB "J","P"+80H
|
|||
|
LAHFMN DB "LAH","F"+80H
|
|||
|
LDSMN DB "LD","S"+80H
|
|||
|
LEAMN DB "LE","A"+80H
|
|||
|
LESMN DB "LE","S"+80H
|
|||
|
LOCKMN DB "LOC","K"+80H
|
|||
|
LODBMN DB "LODS","B"+80H ; LODSB
|
|||
|
LODWMN DB "LODS","W"+80H ; LODSW+80H
|
|||
|
LOOPNZMN DB "LOOPN","Z"+80H
|
|||
|
LOOPZMN DB "LOOP","Z"+80H
|
|||
|
DB "LOOPN","E"+80H
|
|||
|
DB "LOOP","E"+80H
|
|||
|
LOOPMN DB "LOO","P"+80H
|
|||
|
MOVBMN DB "MOVS","B"+80H ; MOVSB
|
|||
|
MOVWMN DB "MOVS","W"+80H ; MOVSW+80H
|
|||
|
MOVMN DB "MO","V"+80H
|
|||
|
MULMN DB "MU","L"+80H
|
|||
|
NEGMN DB "NE","G"+80H
|
|||
|
NOPMN DB "NO","P"+80H
|
|||
|
NOTMN DB "NO","T"+80H
|
|||
|
OUTMN DB "OU","T"+80H ; OUT
|
|||
|
POPFMN DB "POP","F"+80H
|
|||
|
POPMN DB "PO","P"+80H
|
|||
|
PUSHFMN DB "PUSH","F"+80H
|
|||
|
PUSHMN DB "PUS","H"+80H
|
|||
|
RCLMN DB "RC","L"+80H
|
|||
|
RCRMN DB "RC","R"+80H
|
|||
|
REPZMN DB "REP","Z"+80H
|
|||
|
REPNZMN DB "REPN","Z"+80H
|
|||
|
DB "REP","E"+80H
|
|||
|
DB "REPN","E"+80H
|
|||
|
DB "RE","P"+80H
|
|||
|
RETFMN DB "RET","F"+80H
|
|||
|
RETMN DB "RE","T"+80H
|
|||
|
ROLMN DB "RO","L"+80H
|
|||
|
RORMN DB "RO","R"+80H
|
|||
|
SAHFMN DB "SAH","F"+80H
|
|||
|
SARMN DB "SA","R"+80H
|
|||
|
SCABMN DB "SCAS","B"+80H ; SCASB
|
|||
|
SCAWMN DB "SCAS","W"+80H ; SCASW+80H
|
|||
|
SHLMN DB "SH","L"+80H
|
|||
|
SHRMN DB "SH","R"+80H
|
|||
|
STCMN DB "ST","C"+80H
|
|||
|
DOWNMN DB "ST","D"+80H ; STD
|
|||
|
EIMN DB "ST","I"+80H ; STI
|
|||
|
STOBMN DB "STOS","B"+80H ; STOSB
|
|||
|
STOWMN DB "STOS","W"+80H ; STOSW+80H
|
|||
|
TESTMN DB "TES","T"+80H
|
|||
|
WAITMN DB "WAI","T"+80H
|
|||
|
XCHGMN DB "XCH","G"+80H
|
|||
|
XLATMN DB "XLA","T"+80H
|
|||
|
ESSEGMN DB "ES",":"+80H
|
|||
|
CSSEGMN DB "CS",":"+80H
|
|||
|
SSSEGMN DB "SS",":"+80H
|
|||
|
DSSEGMN DB "DS",":"+80H
|
|||
|
BADMN DB "??","?"+80H
|
|||
|
|
|||
|
M8087_TAB DB "ADD$MUL$COM$COMP$SUB$SUBR$DIV$DIVR$"
|
|||
|
FI_TAB DB "F$FI$F$FI$"
|
|||
|
SIZE_TAB DB "DWORD PTR $DWORD PTR $QWORD PTR $WORD PTR $"
|
|||
|
DB "BYTE PTR $TBYTE PTR $"
|
|||
|
|
|||
|
MD9_TAB DB "LD$@$ST$STP$LDENV$LDCW$STENV$STCW$"
|
|||
|
MD9_TAB2 DB "CHS$ABS$@$@$TST$XAM$@$@$LD1$LDL2T$LDL2E$"
|
|||
|
DB "LDPI$LDLG2$LDLN2$LDZ$@$2XM1$YL2X$PTAN$PATAN$XTRACT$"
|
|||
|
DB "@$DECSTP$INCSTP$PREM$YL2XP1$SQRT$@$RNDINT$SCALE$@$@$"
|
|||
|
|
|||
|
MDB_TAB DB "ILD$@$IST$ISTP$@$LD$@$STP$"
|
|||
|
MDB_TAB2 DB "ENI$DISI$CLEX$INIT$"
|
|||
|
|
|||
|
MDD_TAB DB "LD$@$ST$STP$RSTOR$@$SAVE$STSW$"
|
|||
|
MDD_TAB2 DB "FREE$XCH$ST$STP$"
|
|||
|
|
|||
|
MDF_TAB DB "ILD$@$IST$ISTP$BLD$ILD$BSTP$ISTP$"
|
|||
|
|
|||
|
|
|||
|
OPTAB DB 11111111B ; DB
|
|||
|
DW DB_OPER
|
|||
|
DB 11111111B ; DW
|
|||
|
DW DW_OPER
|
|||
|
DB 11111111B ; COMMENT
|
|||
|
DW ASSEMLOOP
|
|||
|
DB 0 * 8 ; ADD
|
|||
|
DW GROUP2
|
|||
|
DB 2 * 8 ; ADC
|
|||
|
DW GROUP2
|
|||
|
DB 5 * 8 ; SUB
|
|||
|
DW GROUP2
|
|||
|
DB 3 * 8 ; SBB
|
|||
|
DW GROUP2
|
|||
|
DB 6 * 8 ; XOR
|
|||
|
DW GROUP2
|
|||
|
DB 1 * 8 ; OR
|
|||
|
DW GROUP2
|
|||
|
DB 4 * 8 ; AND
|
|||
|
DW GROUP2
|
|||
|
DB 00110111B ; AAA
|
|||
|
DW NO_OPER
|
|||
|
DB 11010101B ; AAD
|
|||
|
DW AA_OPER
|
|||
|
DB 11010100B ; AAM
|
|||
|
DW AA_OPER
|
|||
|
DB 00111111B ; AAS
|
|||
|
DW NO_OPER
|
|||
|
DB 2 * 8 ; CALL
|
|||
|
DW CALL_OPER
|
|||
|
DB 10011000B ; CBW
|
|||
|
DW NO_OPER
|
|||
|
DB 11111000B ; CLC
|
|||
|
DW NO_OPER
|
|||
|
DB 11111100B ; CLD
|
|||
|
DW NO_OPER
|
|||
|
DB 11111010B ; DIM
|
|||
|
DW NO_OPER
|
|||
|
DB 11110101B ; CMC
|
|||
|
DW NO_OPER
|
|||
|
DB 10100110B ; CMPB
|
|||
|
DW NO_OPER
|
|||
|
DB 10100111B ; CMPW
|
|||
|
DW NO_OPER
|
|||
|
DB 7 * 8 ; CMP
|
|||
|
DW GROUP2
|
|||
|
DB 10011001B ; CWD
|
|||
|
DW NO_OPER
|
|||
|
DB 00100111B ; DAA
|
|||
|
DW NO_OPER
|
|||
|
DB 00101111B ; DAS
|
|||
|
DW NO_OPER
|
|||
|
DB 1 * 8 ; DEC
|
|||
|
DW DCINC_OPER
|
|||
|
DB 6 * 8 ; DIV
|
|||
|
DW GROUP1
|
|||
|
DB 11011000B ; ESC
|
|||
|
DW ESC_OPER
|
|||
|
DB 00001001B ; FXCH
|
|||
|
DW FGROUPP
|
|||
|
DB 00101000B ; FFREE
|
|||
|
DW FGROUPP
|
|||
|
DB 11011001B ; FCOMPP
|
|||
|
DW FDE_OPER
|
|||
|
DB 00000011B ; FCOMP
|
|||
|
DW FGROUPX ; Exception to normal P instructions
|
|||
|
DB 00000010B ; FCOM
|
|||
|
DW FGROUPX
|
|||
|
DB 00010011B ; FICOMP
|
|||
|
DW FGROUPZ
|
|||
|
DB 00010010B ; FICOM
|
|||
|
DW FGROUPZ
|
|||
|
DB 11010000B ; FNOP
|
|||
|
DW FD9_OPER
|
|||
|
DB 11100000B ; FCHS
|
|||
|
DW FD9_OPER
|
|||
|
DB 11100001B ; FABS
|
|||
|
DW FD9_OPER
|
|||
|
DB 11100100B ; FTST
|
|||
|
DW FD9_OPER
|
|||
|
DB 11100101B ; FXAM
|
|||
|
DW FD9_OPER
|
|||
|
DB 11101001B ; FLDL2T
|
|||
|
DW FD9_OPER
|
|||
|
DB 11101010B ; FLDL2E
|
|||
|
DW FD9_OPER
|
|||
|
DB 11101100B ; FLDLG2
|
|||
|
DW FD9_OPER
|
|||
|
DB 11101101B ; FLDLN2
|
|||
|
DW FD9_OPER
|
|||
|
DB 11101011B ; FLDPI
|
|||
|
DW FD9_OPER
|
|||
|
DB 11101000B ; FLD1
|
|||
|
DW FD9_OPER
|
|||
|
DB 11101110B ; FLDZ
|
|||
|
DW FD9_OPER
|
|||
|
DB 11110000B ; F2XM1
|
|||
|
DW FD9_OPER
|
|||
|
DB 11111001B ; FYL2XP1
|
|||
|
DW FD9_OPER
|
|||
|
DB 11110001B ; FYL2X
|
|||
|
DW FD9_OPER
|
|||
|
DB 11110010B ; FPTAN
|
|||
|
DW FD9_OPER
|
|||
|
DB 11110011B ; FPATAN
|
|||
|
DW FD9_OPER
|
|||
|
DB 11110100B ; FXTRACT
|
|||
|
DW FD9_OPER
|
|||
|
DB 11110110B ; FDECSTP
|
|||
|
DW FD9_OPER
|
|||
|
DB 11110111B ; FINCSTP
|
|||
|
DW FD9_OPER
|
|||
|
DB 11111000B ; FPREM
|
|||
|
DW FD9_OPER
|
|||
|
DB 11111010B ; FSQRT
|
|||
|
DW FD9_OPER
|
|||
|
DB 11111100B ; FRNDINT
|
|||
|
DW FD9_OPER
|
|||
|
DB 11111101B ; FSCALE
|
|||
|
DW FD9_OPER
|
|||
|
DB 11100011B ; FINIT
|
|||
|
DW FDB_OPER
|
|||
|
DB 11100001B ; FDISI
|
|||
|
DW FDB_OPER
|
|||
|
DB 11100000B ; FENI
|
|||
|
DW FDB_OPER
|
|||
|
DB 11100010B ; FCLEX
|
|||
|
DW FDB_OPER
|
|||
|
DB 00111100B ; FBLD
|
|||
|
DW FGROUPB
|
|||
|
DB 00111110B ; FBSTP
|
|||
|
DW FGROUPB
|
|||
|
DB 00001101B ; FLDCW
|
|||
|
DW FGROUP3W
|
|||
|
DB 00001111B ; FSTCW
|
|||
|
DW FGROUP3W
|
|||
|
DB 00101111B ; FSTSW
|
|||
|
DW FGROUP3W
|
|||
|
DB 00001110B ; FSTENV
|
|||
|
DW FGROUP3
|
|||
|
DB 00001100B ; FLDENV
|
|||
|
DW FGROUP3
|
|||
|
DB 00101110B ; FSAVE
|
|||
|
DW FGROUP3
|
|||
|
DB 00101100B ; FRSTOR
|
|||
|
DW FGROUP3
|
|||
|
DB 00110000B ; FADDP
|
|||
|
DW FGROUPP
|
|||
|
DB 00000000B ; FADD
|
|||
|
DW FGROUP
|
|||
|
DB 00010000B ; FIADD
|
|||
|
DW FGROUPZ
|
|||
|
DB 00110100B ; FSUBRP
|
|||
|
DW FGROUPP
|
|||
|
DB 00000101B ; FSUBR
|
|||
|
DW FGROUPDS
|
|||
|
DB 00110101B ; FSUBP
|
|||
|
DW FGROUPP
|
|||
|
DB 00000100B ; FSUB
|
|||
|
DW FGROUPDS
|
|||
|
DB 00010101B ; FISUBR
|
|||
|
DW FGROUPZ
|
|||
|
DB 00010100B ; FISUB
|
|||
|
DW FGROUPZ
|
|||
|
DB 00110001B ; FMULP
|
|||
|
DW FGROUPP
|
|||
|
DB 00000001B ; FMUL
|
|||
|
DW FGROUP
|
|||
|
DB 00010001B ; FIMUL
|
|||
|
DW FGROUPZ
|
|||
|
DB 00110110B ; FDIVRP
|
|||
|
DW FGROUPP
|
|||
|
DB 00000111B ; FDIVR
|
|||
|
DW FGROUPDS
|
|||
|
DB 00110111B ; FDIVP
|
|||
|
DW FGROUPP
|
|||
|
DB 00000110B ; FDIV
|
|||
|
DW FGROUPDS
|
|||
|
DB 00010111B ; FIDIVR
|
|||
|
DW FGROUPZ
|
|||
|
DB 00010110B ; FIDIV
|
|||
|
DW FGROUPZ
|
|||
|
DB 10011011B ; FWAIT
|
|||
|
DW NO_OPER
|
|||
|
DB 00011000B ; FILD
|
|||
|
DW FGROUPZ
|
|||
|
DB 00001000B ; FLD
|
|||
|
DW FGROUPX
|
|||
|
DB 00001011B ; FSTP
|
|||
|
DW FGROUPX
|
|||
|
DB 00101010B ; FST
|
|||
|
DW FGROUPX
|
|||
|
DB 00011011B ; FISTP
|
|||
|
DW FGROUPZ
|
|||
|
DB 00011010B ; FIST
|
|||
|
DW FGROUPZ
|
|||
|
DB 11110100B ; HLT
|
|||
|
DW NO_OPER
|
|||
|
DB 7 * 8 ; IDIV
|
|||
|
DW GROUP1
|
|||
|
DB 5 * 8 ; IMUL
|
|||
|
DW GROUP1
|
|||
|
DB 0 * 8 ; INC
|
|||
|
DW DCINC_OPER
|
|||
|
DB 11001110B ; INTO
|
|||
|
DW NO_OPER
|
|||
|
DB 11001100B ; INTM
|
|||
|
DW INT_OPER
|
|||
|
DB 11101100B ; IN
|
|||
|
DW IN_OPER
|
|||
|
DB 11001111B ; IRET
|
|||
|
DW NO_OPER
|
|||
|
DB 01110111B ; JNBE
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01110011B ; JAE
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01110111B ; JA
|
|||
|
DW DISP8_OPER
|
|||
|
DB 11100011B ; JCXZ
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01110011B ; JNB
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01110110B ; JBE
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01110010B ; JB
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01110011B ; JNC
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01110010B ; JC
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01110010B ; JNAE
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01110110B ; JNA
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01110100B ; JZ
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01110100B ; JE
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01111101B ; JGE
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01111111B ; JG
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01111111B ; JNLE
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01111101B ; JNL
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01111110B ; JLE
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01111100B ; JL
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01111100B ; JNGE
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01111110B ; JNG
|
|||
|
DW DISP8_OPER
|
|||
|
DB 4 * 8 ; JMP
|
|||
|
DW JMP_OPER
|
|||
|
DB 01110101B ; JNZ
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01110101B ; JNE
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01111010B ; JPE
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01111011B ; JPO
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01111011B ; JNP
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01111001B ; JNS
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01110001B ; JNO
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01110000B ; JO
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01111000B ; JS
|
|||
|
DW DISP8_OPER
|
|||
|
DB 01111010B ; JP
|
|||
|
DW DISP8_OPER
|
|||
|
DB 10011111B ; LAHF
|
|||
|
DW NO_OPER
|
|||
|
DB 11000101B ; LDS
|
|||
|
DW L_OPER
|
|||
|
DB 10001101B ; LEA
|
|||
|
DW L_OPER
|
|||
|
DB 11000100B ; LES
|
|||
|
DW L_OPER
|
|||
|
DB 11110000B ; LOCK
|
|||
|
DW NO_OPER
|
|||
|
DB 10101100B ; LODB
|
|||
|
DW NO_OPER
|
|||
|
DB 10101101B ; LODW
|
|||
|
DW NO_OPER
|
|||
|
DB 11100000B ; LOOPNZ
|
|||
|
DW DISP8_OPER
|
|||
|
DB 11100001B ; LOOPZ
|
|||
|
DW DISP8_OPER
|
|||
|
DB 11100000B ; LOOPNE
|
|||
|
DW DISP8_OPER
|
|||
|
DB 11100001B ; LOOPE
|
|||
|
DW DISP8_OPER
|
|||
|
DB 11100010B ; LOOP
|
|||
|
DW DISP8_OPER
|
|||
|
DB 10100100B ; MOVB
|
|||
|
DW NO_OPER
|
|||
|
DB 10100101B ; MOVW
|
|||
|
DW NO_OPER
|
|||
|
DB 11000110B ; MOV
|
|||
|
DW MOV_OPER
|
|||
|
DB 4 * 8 ; MUL
|
|||
|
DW GROUP1
|
|||
|
DB 3 * 8 ; NEG
|
|||
|
DW GROUP1
|
|||
|
DB 10010000B ; NOP
|
|||
|
DW NO_OPER
|
|||
|
DB 2 * 8 ; NOT
|
|||
|
DW GROUP1
|
|||
|
DB 11101110B ; OUT
|
|||
|
DW OUT_OPER
|
|||
|
DB 10011101B ; POPF
|
|||
|
DW NO_OPER
|
|||
|
DB 0 * 8 ; POP
|
|||
|
DW POP_OPER
|
|||
|
DB 10011100B ; PUSHF
|
|||
|
DW NO_OPER
|
|||
|
DB 6 * 8 ; PUSH
|
|||
|
DW PUSH_OPER
|
|||
|
DB 2 * 8 ; RCL
|
|||
|
DW ROTOP
|
|||
|
DB 3 * 8 ; RCR
|
|||
|
DW ROTOP
|
|||
|
DB 11110011B ; REPZ
|
|||
|
DW NO_OPER
|
|||
|
DB 11110010B ; REPNZ
|
|||
|
DW NO_OPER
|
|||
|
DB 11110011B ; REPE
|
|||
|
DW NO_OPER
|
|||
|
DB 11110010B ; REPNE
|
|||
|
DW NO_OPER
|
|||
|
DB 11110011B ; REP
|
|||
|
DW NO_OPER
|
|||
|
DB 11001011B ; RETF
|
|||
|
DW GET_DATA16
|
|||
|
DB 11000011B ; RET
|
|||
|
DW GET_DATA16
|
|||
|
DB 0 * 8 ; ROL
|
|||
|
DW ROTOP
|
|||
|
DB 1 * 8 ; ROR
|
|||
|
DW ROTOP
|
|||
|
DB 10011110B ; SAHF
|
|||
|
DW NO_OPER
|
|||
|
DB 7 * 8 ; SAR
|
|||
|
DW ROTOP
|
|||
|
DB 10101110B ; SCAB
|
|||
|
DW NO_OPER
|
|||
|
DB 10101111B ; SCAW
|
|||
|
DW NO_OPER
|
|||
|
DB 4 * 8 ; SHL
|
|||
|
DW ROTOP
|
|||
|
DB 5 * 8 ; SHR
|
|||
|
DW ROTOP
|
|||
|
DB 11111001B ; STC
|
|||
|
DW NO_OPER
|
|||
|
DB 11111101B ; STD
|
|||
|
DW NO_OPER
|
|||
|
DB 11111011B ; EI
|
|||
|
DW NO_OPER
|
|||
|
DB 10101010B ; STOB
|
|||
|
DW NO_OPER
|
|||
|
DB 10101011B ; STOW
|
|||
|
DW NO_OPER
|
|||
|
DB 11110110B ; TEST
|
|||
|
DW TST_OPER
|
|||
|
DB 10011011B ; WAIT
|
|||
|
DW NO_OPER
|
|||
|
DB 10000110B ; XCHG
|
|||
|
DW EX_OPER
|
|||
|
DB 11010111B ; XLAT
|
|||
|
DW NO_OPER
|
|||
|
DB 00100110B ; ESSEG
|
|||
|
DW NO_OPER
|
|||
|
DB 00101110B ; CSSEG
|
|||
|
DW NO_OPER
|
|||
|
DB 00110110B ; SSSEG
|
|||
|
DW NO_OPER
|
|||
|
DB 00111110B ; DSSEG
|
|||
|
DW NO_OPER
|
|||
|
|
|||
|
zzopcode label byte
|
|||
|
MAXOP = (zzopcode-optab)/3
|
|||
|
|
|||
|
SHFTAB DW OFFSET DG:ROLMN,OFFSET DG:RORMN,OFFSET DG:RCLMN
|
|||
|
DW OFFSET DG:RCRMN,OFFSET DG:SHLMN,OFFSET DG:SHRMN
|
|||
|
DW OFFSET DG:BADMN,OFFSET DG:SARMN
|
|||
|
|
|||
|
IMMTAB DW OFFSET DG:ADDMN,OFFSET DG:ORMN,OFFSET DG:ADCMN
|
|||
|
DW OFFSET DG:SBBMN,OFFSET DG:ANDMN,OFFSET DG:SUBMN
|
|||
|
DW OFFSET DG:XORMN,OFFSET DG:CMPMN
|
|||
|
|
|||
|
GRP1TAB DW OFFSET DG:TESTMN,OFFSET DG:BADMN,OFFSET DG:NOTMN
|
|||
|
DW OFFSET DG:NEGMN,OFFSET DG:MULMN,OFFSET DG:IMULMN
|
|||
|
DW OFFSET DG:DIVMN,OFFSET DG:IDIVMN
|
|||
|
|
|||
|
GRP2TAB DW OFFSET DG:INCMN,OFFSET DG:DECMN,OFFSET DG:CALLMN
|
|||
|
DW OFFSET DG:CALLMN,OFFSET DG:JMPMN,OFFSET DG:JMPMN
|
|||
|
DW OFFSET DG:PUSHMN,OFFSET DG:BADMN
|
|||
|
|
|||
|
SEGTAB DW OFFSET DG:ESSAVE,OFFSET DG:CSSAVE,OFFSET DG:SSSAVE
|
|||
|
DW OFFSET DG:DSSAVE
|
|||
|
|
|||
|
REGTAB DB "AXBXCXDXSPBPSIDIDSESSSCSIPPC"
|
|||
|
|
|||
|
; Flags are ordered to correspond with the bits of the flag
|
|||
|
; register, most significant bit first, zero if bit is not
|
|||
|
; a flag. First 16 entries are for bit set, second 16 for
|
|||
|
; bit reset.
|
|||
|
|
|||
|
FLAGTAB DW 0
|
|||
|
DW 0
|
|||
|
DW 0
|
|||
|
DW 0
|
|||
|
DB "OV"
|
|||
|
DB "DN"
|
|||
|
DB "EI" ; "STI"
|
|||
|
DW 0
|
|||
|
DB "NG"
|
|||
|
DB "ZR"
|
|||
|
DW 0
|
|||
|
DB "AC"
|
|||
|
DW 0
|
|||
|
DB "PE"
|
|||
|
DW 0
|
|||
|
DB "CY"
|
|||
|
DW 0
|
|||
|
DW 0
|
|||
|
DW 0
|
|||
|
DW 0
|
|||
|
DB "NV"
|
|||
|
DB "UP" ; "CLD"
|
|||
|
DB "DI"
|
|||
|
DW 0
|
|||
|
DB "PL"
|
|||
|
DB "NZ"
|
|||
|
DW 0
|
|||
|
DB "NA"
|
|||
|
DW 0
|
|||
|
DB "PO"
|
|||
|
DW 0
|
|||
|
DB "NC"
|
|||
|
|
|||
|
DB 80H DUP(?)
|
|||
|
STACK LABEL BYTE
|
|||
|
|
|||
|
|
|||
|
; Register save area
|
|||
|
|
|||
|
AXSAVE DW 0
|
|||
|
BXSAVE DW 0
|
|||
|
CXSAVE DW 0
|
|||
|
DXSAVE DW 0
|
|||
|
SPSAVE DW 5AH
|
|||
|
BPSAVE DW 0
|
|||
|
SISAVE DW 0
|
|||
|
DISAVE DW 0
|
|||
|
DSSAVE DW 0
|
|||
|
ESSAVE DW 0
|
|||
|
RSTACK LABEL WORD ; Stack set here so registers can be saved by pushing
|
|||
|
SSSAVE DW 0
|
|||
|
CSSAVE DW 0
|
|||
|
IPSAVE DW 100H
|
|||
|
FSAVE DW 0
|
|||
|
|
|||
|
REGDIF EQU AXSAVE-REGTAB
|
|||
|
|
|||
|
; RAM area.
|
|||
|
|
|||
|
RDFLG DB READ
|
|||
|
TOTREG DB 13
|
|||
|
DSIZ DB 0FH
|
|||
|
NOREGL DB 8
|
|||
|
DISPB DW 128
|
|||
|
|
|||
|
LBUFSIZ DB BUFLEN
|
|||
|
LBUFFCNT DB 0
|
|||
|
LINEBUF DB 0DH
|
|||
|
DB BUFLEN DUP (?)
|
|||
|
PFLAG DB 0
|
|||
|
COLPOS DB 0
|
|||
|
|
|||
|
IF SYSVER
|
|||
|
CONFCB DB 0
|
|||
|
DB "PRN "
|
|||
|
DB 25 DUP(0)
|
|||
|
|
|||
|
POUT DD ?
|
|||
|
COUT DD ?
|
|||
|
CIN DD ?
|
|||
|
IOBUFF DB 3 DUP (?)
|
|||
|
IOADDR DD ?
|
|||
|
|
|||
|
IOCALL DB 22
|
|||
|
DB 0
|
|||
|
IOCOM DB 0
|
|||
|
IOSTAT DW 0
|
|||
|
DB 8 DUP (0)
|
|||
|
IOCHRET DB 0
|
|||
|
DW OFFSET DG:IOBUFF
|
|||
|
IOSEG DW ?
|
|||
|
IOCNT DW 1
|
|||
|
DW 0
|
|||
|
ENDIF
|
|||
|
|
|||
|
QFLAG DB 0
|
|||
|
NEWEXEC DB 0
|
|||
|
RETSAVE DW ?
|
|||
|
|
|||
|
USER_PROC_PDB DW ?
|
|||
|
|
|||
|
HEADSAVE DW ?
|
|||
|
|
|||
|
EXEC_BLOCK LABEL BYTE
|
|||
|
DW 0
|
|||
|
COM_LINE LABEL DWORD
|
|||
|
DW 80H
|
|||
|
DW ?
|
|||
|
COM_FCB1 LABEL DWORD
|
|||
|
DW FCB
|
|||
|
DW ?
|
|||
|
COM_FCB2 LABEL DWORD
|
|||
|
DW FCB + 10H
|
|||
|
DW ?
|
|||
|
COM_SSSP DD ?
|
|||
|
COM_CSIP DD ?
|
|||
|
|
|||
|
CONST ENDS
|
|||
|
END
|
|||
|
|