MACRO DCOM wrd
DB wrd&0xff;\0
ORG $+255
DB wrd/256;'(\0)
ORG $-256
ENDM
;--------------------- -----------------------
MAINCOMS
;#0X
DCOM ADDrmr8
DCOM ADDrmr16
DCOM ADDr8rm
DCOM ADDr16rm
DCOM ADDali8
DCOM ADDaxi16
DCOM PUSHes
DCOM POPes
DCOM ORrmr8
DCOM ORrmr16
DCOM ORr8rm
DCOM ORr16rm
DCOM ORali8
DCOM ORaxi16
DCOM PUSHcs
DCOM EXTer ;<-------------- ;0f b6 d0 = movzx dx,al (move with zero-extend)
;#1X
DCOM ADCrmr8
DCOM ADCrmr16
DCOM ADCr8rm
DCOM ADCr16rm
DCOM ADCali8
DCOM ADCaxi16
DCOM PUSHss
DCOM POPss
DCOM SBBrmr8
DCOM SBBrmr16
DCOM SBBr8rm
DCOM SBBr16rm
DCOM SBBali8
DCOM SBBaxi16
DCOM PUSHds
DCOM POPds
;#2X
DCOM ANDrmr8
DCOM ANDrmr16
DCOM ANDr8rm
DCOM ANDr16rm
DCOM ANDali8
DCOM ANDaxi16
DCOM ESer
DCOM DAAal
DCOM SUBrmr8
DCOM SUBrmr16
DCOM SUBr8rm
DCOM SUBr16rm
DCOM SUBali8
DCOM SUBaxi16
DCOM CSer
DCOM DASal
;#3X
DCOM XORrmr8
DCOM XORrmr16
DCOM XORr8rm
DCOM XORr16rm
DCOM XORali8
DCOM XORaxi16
DCOM SSer
DCOM AAAal ;labir
DCOM CMPrmr8
DCOM CMPrmr16
DCOM CMPr8rm
DCOM CMPr16rm
DCOM CMPali8
DCOM CMPaxi16
DCOM DSer
DCOM AASal ;plutina
;#4X
DCOM INCax
DCOM INCcx
DCOM INCdx
DCOM INCbx
DCOM INCsp
DCOM INCbp
DCOM INCsi
DCOM INCdi
DCOM DECax
DCOM DECcx
DCOM DECdx
DCOM DECbx
DCOM DECsp
DCOM DECbp
DCOM DECsi
DCOM DECdi
;#5X
DCOM PUSHax
DCOM PUSHcx
DCOM PUSHdx
DCOM PUSHbx
DCOM PUSHsp
DCOM PUSHbp
DCOM PUSHsi
DCOM PUSHdi
DCOM POPax
DCOM POPcx
DCOM POPdx
DCOM POPbx
DCOM POPsp
DCOM POPbp
DCOM POPsi
DCOM POPdi
;#6x
DCOM PUSHAer
DCOM POPAer
DCOM PANIC ;BOUNDr16m ;for basic.x86, ll, firefighter? TODO
DCOM PANIC ;ARPLrmr16 ;for cgadots TODO
;Compares the RPL fields of two segment selectors. The first operand (the destination operand) contains one segment selector and the second operand (source operand) contains the other. (The RPL field is located in bits 0 and 1 of each operand.) If the RPL field of the destination operand is less than the RPL field of the source operand, the ZF flag is set and the RPL field of the destination operand is increased to match that of the source operand. Otherwise, the ZF flag is cleared and no change is made to the destination operand. (The destination operand can be a word register or a memory location; the source operand must be a word register.)
DCOM FSer
DCOM GSer
DCOM OPSIZEr ;???for lodsd (TODO ьюцхЄ с√Є№ фрцх ё repnz - blue) ;lander cs:0646: 66 ff 36 9a 08 "push dword ptr [089a]", 66 8f 06 96 08 "pop dword ptr [0896]" ш хёЄ№ 32-сшЄэ√х Ёхуш
DCOM PANIC ;rgsize
DCOM PUSHi16
DCOM IMULr16rmi16
DCOM PUSHi8
DCOM IMULr16rmi8
DCOM PANIC ;INSBer
DCOM PANIC ;INSWer (TODO rep insw for lkccmini) for rax
DCOM PANIC ;OUTSBer (TODO for ll)
DCOM PANIC ;OUTSWer (TODO for firefighter)
;#7x
DCOM JOer
DCOM JNOer
DCOM JCer;JNAEer;JBer
DCOM JNCer;JAEer;JNBer
DCOM JEer;JZer
DCOM JNEer;JNZer
DCOM JBEer;JNAer
DCOM JAer;JNBEer
DCOM JSer
DCOM JNSer
DCOM JPer;JPEer
DCOM JNPer;JPOer
DCOM JLer;JNGEer
DCOM JNLer;JGEer
DCOM JLEer;JGer
DCOM JGer;JNLEer
;#8x
DCOM GRP1rmi8 ;80 MOD100RM disp16 i8 = AND R/[M],i8 (100 - ъюф юяхЁрЎшш └╦╙, 111=CMP)
DCOM GRP1rmi16 ;GRP1rmi16 ;Єю цх ё i16 (Єрь cmp sp,i16)
DCOM GRP1rmi8;PANIC ;GRP1rm8i8 - рышрё GRP1rmi8 (т 8086 эхЄ?)
DCOM GRP1rm16i8 ;Єрь add dx,6 - юяхЁрэф Ёрё°шЁ хЄё ёю чэръюь
DCOM TESTrmr8
DCOM TESTrmr16
DCOM XCHGr8rm ;for pixeltown
DCOM XCHGr16rm
DCOM MOVrmr8
DCOM MOVrmr16
DCOM MOVr8rm
DCOM MOVr16rm
DCOM MOVrm16sreg
DCOM LEAr16rm ;(for ladybug)
DCOM MOVsregrm16
DCOM POPrm16 ;(for rogue)
;#9x
DCOM NOPer
DCOM XCHGaxcx
DCOM XCHGaxdx
DCOM XCHGaxbx
DCOM XCHGaxsp
DCOM XCHGaxbp
DCOM XCHGaxsi
DCOM XCHGaxdi
DCOM CBWer
DCOM CWDer
DCOM CALLptr1616
DCOM NOPer ;FWAITer ;TODO for ladybug, ElCsiP, hyper
DCOM PUSHFer
DCOM POPFer
DCOM SAHFer
DCOM LAHFer
;#Ax
DCOM MOValmem
DCOM MOVaxmem
DCOM MOVmemal
DCOM MOVmemax
DCOM MOVSBer
DCOM MOVSWer
DCOM CMPSBer
DCOM CMPSWer ;for firefighter
DCOM TESTali8
DCOM TESTaxi16
DCOM STOSBer
DCOM STOSWer
DCOM LODSBer
DCOM LODSWer
DCOM SCASBer
DCOM SCASWer
;#Bx
DCOM MOVali8
DCOM MOVcli8
DCOM MOVdli8
DCOM MOVbli8
DCOM MOVahi8
DCOM MOVchi8
DCOM MOVdhi8
DCOM MOVbhi8
DCOM MOVaxi16
DCOM MOVcxi16
DCOM MOVdxi16
DCOM MOVbxi16
DCOM MOVspi16
DCOM MOVbpi16
DCOM MOVsii16
DCOM MOVdii16
;#Cx
DCOM GRP2rm8i8 ;rolls
DCOM GRP2rm16i8 ;rolls
DCOM RETi16 ;RET ш яюЄюь SP += i16
DCOM RETer
DCOM LESr16mem
DCOM LDSr16mem
DCOM MOVrm8i8
DCOM MOVrm16i16
DCOM PANIC ;ENTERi16i8 (TODO ms pacman?)
DCOM LEAVEer ;ptica (03c8)? шыш ¤Єю уы■ъ? (т td эх ьюує эрщЄш ¤Єє Єюўъє, т эрўрых яЁюуЁрьь√ Єюўэю эхЄ)
DCOM RETFi16 ;RETF ш яюЄюь SP += i16 ;fot
DCOM RETFer
DCOM INT3 ;for qloth_
DCOM INTi8 ;TODO ЄєЄ х∙╕ fldcw cd 35 xx xx, fistp cd 3b xx xx (mips)
DCOM INTOer ;Generate overflow trap if overflow flag is 1 ;for mips
DCOM IRETer ;(for livin)
;#Dx
DCOM GRP2rm81 ;rolls
DCOM GRP2rm161 ;rolls
DCOM GRP2rm8cl ;rolls
DCOM GRP2rm16cl ;rolls
DCOM AAMer
DCOM AADer
DCOM PANIC ;SALCer
DCOM XLATBer
DCOM PANIC ;FPU0er ;D8 /0 = FADD m32fp ;Add m32fp to ST(0) and store result in ST(0) ;D8 C0+i = FADD ST(0), ST(i) ;Add ST(0) to ST(i) and store result in ST(0) ;D8 /1 = FMUL m32fp ;Multiply ST(0) by m32fp and store result in ST(0) ;D8 /2 = FCOM m32fp ;Compare ST(0) with m32fp ;D8 /3 = FCOMP m32fp ;Compare ST(0) with m32fp and pop register stack ;D8 /4 = FSUB m32fp ;Subtract m32fp from ST(0) and store result in ST(0) ;D8 /6 = FDIV m32fp ;Divide ST(0) by m32fp and store result in ST(0) ;D8 /7 = FDIVR m32fp ;Divide m32fp by ST(0) and store result in ST(0)
DCOM PANIC ;FPU1er ;D9 E0 = FCHS ;Complements sign of ST(0) ;D9 E1 = FABS ;Replace ST with its absolute value ;D9 F6 = FDECSTP ;Decrement TOP field in FPU status word (rotate the stack by one position) ;D9 FF = FCOS ;Replace ST(0) with its approximate cosine
DCOM PANIC ;FPU2er ;DA /0 = FIADD m32int ;Add m32int to ST(0) and store result in ST(0)
DCOM FPU3er ;DB /0 = FILD m32int ;Push m32int onto the FPU register stack ;DB F0+i = FCOMI ST, ST(i) ;Compare ST(0) with ST(i) and set status flags accordingly ;DB E3 finit
DCOM PANIC ;FPU4er ;DC /0 = FADD m64fp ;Add m64fp to ST(0) and store result in ST(0) ;DC C0+i = FADD ST(i), ST(0) ;Add ST(i) to ST(0) and store result in ST(i)
DCOM PANIC ;FPU5er
DCOM PANIC ;FPU6er ;DE /0 = FIADD m16int ;Add m16int to ST(0) and store result in ST(0) ;DE C0+i = FADDP ST(i), ST(0) ;Add ST(0) to ST(i), store result in ST(i), and pop the register stack ;DE C1 = FADDP ;Add ST(0) to ST(1), store result in ST(1), and pop the register stack
DCOM PANIC ;FPU7er ;DF /0 = FILD m16int ;Push m16int onto the FPU register stack ;DF /5 = FILD m64int ;Push m64int onto the FPU register stack
;#Ex
DCOM LOOPNZer
DCOM LOOPZer
DCOM LOOPer
DCOM JCXZer
DCOM INali8
DCOM INaxi8
DCOM OUTi8al
DCOM OUTi8ax
DCOM CALLer
DCOM JMPer
DCOM JMPptr1616
DCOM JRer
DCOM INaldx
DCOM INaxdx
DCOM OUTdxal
DCOM OUTdxax
;#Fx
DCOM PANIC ;LOCKer
DCOM INT1 ;(atom)
DCOM REPNZer ;шёяюы№чєхЄё фы cmpsb
DCOM REPZer ;шёяюы№чєхЄё Єръцх фы movsb ш Є.ф.
DCOM HLTer
DCOM CMCer
DCOM GRP38 ;mul,div,test,not,neg
DCOM GRP316 ;mul,div,test,not,neg
DCOM CLCer
DCOM STCer
DCOM CLIer
DCOM STIer
DCOM CLDer
DCOM STDer
DCOM GRP48 ;inc/dec rm8
DCOM GRP416 ;inc/dec rm16, push rm16, FF MD01fR/M disp16 = CALLrm+... /f - ьхцёхуьхэЄэ√щ/, FF 25 = jmp word [di]
;DISPLAY $-MAINCOMS,"=256"
ORG $+256