mirror of
https://github.com/microsoft/MS-DOS.git
synced 2024-11-25 07:05:45 +00:00
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
|
||
|