442 lines
11 KiB
C
442 lines
11 KiB
C
//--------------------------------------------------------------------
|
|
// and
|
|
//--------------------------------------------------------------------
|
|
/*****************************************************************************************/
|
|
//--------------------------------------------------------------------
|
|
// byt
|
|
//--------------------------------------------------------------------
|
|
//--------------------------------------------------------------------
|
|
// and.b #im,dx
|
|
//--------------------------------------------------------------------
|
|
andbir_macro:.macro
|
|
move.w (a0)+,d0
|
|
extb.l d0
|
|
mvs.b \2,d1
|
|
and.l d0,d1
|
|
set_cc0
|
|
move.b d1,\2
|
|
ii_end
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // and ea,dx
|
|
//--------------------------------------------------------------------
|
|
anddd:.macro
|
|
#ifdef halten_and
|
|
halt
|
|
#endif
|
|
mvs.\3 \1,d0
|
|
mvs.\3 \2,d1
|
|
and.l d0,d1
|
|
set_cc0
|
|
move.\3 d1,\2
|
|
ii_end
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // and ea(l)->dy(w),dx z.B. für USP
|
|
//--------------------------------------------------------------------
|
|
andddd:.macro
|
|
#ifdef halten_and
|
|
halt
|
|
#endif
|
|
move.l \1,a1
|
|
mvs.\3 a1,d0
|
|
mvs.\3 \2,d1
|
|
and.l d0,d1
|
|
set_cc0
|
|
move.\3 d1,\2
|
|
ii_end
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // and (ea)->dy,dx
|
|
//--------------------------------------------------------------------
|
|
anddda:.macro
|
|
#ifdef halten_and
|
|
halt
|
|
#endif
|
|
move.l \1,a1
|
|
mvs.\3 (a1),d0
|
|
mvs.\3 \2,d1
|
|
and.l d0,d1
|
|
set_cc0
|
|
move.\3 d1,\2
|
|
ii_end
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // and ea->ay,(ay)+,dx
|
|
//--------------------------------------------------------------------
|
|
andddai:.macro
|
|
#ifdef halten_and
|
|
halt
|
|
#endif
|
|
move.l \1,a1
|
|
mvs.\3 (a1)+,d0
|
|
move.l a1,\1
|
|
mvs.\3 \2,d1
|
|
and.l d0,d1
|
|
set_cc0
|
|
move.\3 d1,\2
|
|
ii_end
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // and ea->ay,-(ay),dx
|
|
//--------------------------------------------------------------------
|
|
andddad:.macro
|
|
#ifdef halten_and
|
|
halt
|
|
#endif
|
|
move.l \1,a1
|
|
mvs.\3 -(a1),d0
|
|
move.l a1,\1
|
|
mvs.\3 \2,d1
|
|
and.l d0,d1
|
|
set_cc0
|
|
move.\3 d1,\2
|
|
ii_end
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // and d16(ay),dx
|
|
//--------------------------------------------------------------------
|
|
andd16ad:.macro
|
|
#ifdef halten_and
|
|
halt
|
|
#endif
|
|
move.l \1,a1
|
|
mvs.w (a0)+,d0
|
|
add.l d0,a1
|
|
mvs.\3 (a1),d0
|
|
mvs.\3 \2,d1
|
|
and.l d0,d1
|
|
set_cc0
|
|
move.\3 d1,\2
|
|
ii_end
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // and d8(ay,dy),dx
|
|
//--------------------------------------------------------------------
|
|
andd8ad:.macro
|
|
#ifdef halten_and
|
|
halt
|
|
#endif
|
|
move.l \1,a1
|
|
jsr ewf
|
|
.ifc \3,l
|
|
move.l (a1),d0
|
|
move.l \2,d1
|
|
.else
|
|
mvs.\3 (a1),d0
|
|
mvs.\3 \2,d1
|
|
.endif
|
|
and.l d0,d1
|
|
set_cc0
|
|
move.\3 d1,\2
|
|
ii_end
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // and xxx.w,dx
|
|
//--------------------------------------------------------------------
|
|
andxwd:.macro
|
|
#ifdef halten_and
|
|
halt
|
|
#endif
|
|
move.w (a0)+,a1
|
|
mvs.\3 (a1),d0
|
|
mvs.\3 \2,d1
|
|
and.l d0,d1
|
|
set_cc0
|
|
move.\3 d1,\2
|
|
ii_end
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // and xxx.l,dx
|
|
//--------------------------------------------------------------------
|
|
andxld:.macro
|
|
#ifdef halten_and
|
|
halt
|
|
#endif
|
|
move.l (a0)+,a1
|
|
mvs.\3 (a1),d0
|
|
mvs.\3 \2,d1
|
|
and.l d0,d1
|
|
set_cc0
|
|
move.\3 d1,\2
|
|
ii_end
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // and d16(pc),dx
|
|
//--------------------------------------------------------------------
|
|
andd16pcd:.macro
|
|
#ifdef halten_and
|
|
halt
|
|
#endif
|
|
move.l a0,a1
|
|
mvs.w (a0)+,d0
|
|
add.l d0,a1
|
|
mvs.\3 (a1),d0
|
|
mvs.\3 \2,d1
|
|
and.l d0,d1
|
|
set_cc0
|
|
move.\3 d1,\2
|
|
ii_end
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // and d8(pc,dy),dx
|
|
//--------------------------------------------------------------------
|
|
andd8pcd:.macro
|
|
#ifdef halten_and
|
|
halt
|
|
#endif
|
|
move.l a0,a1
|
|
jsr ewf
|
|
.ifc \3,l
|
|
move.l (a1),d0
|
|
move.l \2,d1
|
|
.else
|
|
mvs.\3 (a1),d0
|
|
mvs.\3 \2,d1
|
|
.endif
|
|
and.l d0,d1
|
|
set_cc0
|
|
move.\3 d1,\2
|
|
ii_end
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// and dx,ea
|
|
//--------------------------------------------------------------------
|
|
//--------------------------------------------------------------------
|
|
// // and dx,(ea)->dy
|
|
//--------------------------------------------------------------------
|
|
andeda:.macro
|
|
#ifdef halten_and
|
|
halt
|
|
#endif
|
|
mvs.\3 \1,d0
|
|
move.l \2,a1
|
|
mvs.\3 (a1),d1
|
|
and.l d0,d1
|
|
set_cc0
|
|
move.\3 d1,(a1)
|
|
ii_end
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // and dx,ea->ay,(ay)+
|
|
//--------------------------------------------------------------------
|
|
andedai:.macro
|
|
#ifdef halten_and
|
|
halt
|
|
#endif
|
|
mvs.\3 \1,d0
|
|
move.l \2,a1
|
|
mvs.\3 (a1),d1
|
|
and.l d0,d1
|
|
set_cc0
|
|
move.\3 d1,(a1)+
|
|
move.l a1,\2
|
|
ii_end
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // and dx,ea->ay,(ay)+
|
|
//--------------------------------------------------------------------
|
|
andedaid:.macro
|
|
#ifdef halten_and
|
|
halt
|
|
#endif
|
|
mvs.\3 \1,d0
|
|
mvs.\3 \2,d1
|
|
and.l d0,d1
|
|
set_cc0
|
|
move.\3 d1,\2+
|
|
ii_end
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // and dx,ea->ay,-(ay)
|
|
//--------------------------------------------------------------------
|
|
andedad:.macro
|
|
#ifdef halten_and
|
|
halt
|
|
#endif
|
|
mvs.\3 \1,d0
|
|
move.l \2,a1
|
|
mvs.\3 -(a1),d1
|
|
move.l a1,\2
|
|
and.l d0,d1
|
|
set_cc0
|
|
move.\3 d1,(a1)
|
|
ii_end
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // and dx,ea->ay,-(ay)
|
|
//--------------------------------------------------------------------
|
|
andedadd:.macro
|
|
#ifdef halten_and
|
|
halt
|
|
#endif
|
|
mvs.\3 \1,d0
|
|
mvs.\3 -\2,d1
|
|
and.l d0,d1
|
|
set_cc0
|
|
move.\3 d1,\2
|
|
ii_end
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // and dx,d16(ay)
|
|
//--------------------------------------------------------------------
|
|
ande16ad:.macro
|
|
#ifdef halten_and
|
|
halt
|
|
#endif
|
|
mvs.\3 \1,d0
|
|
move.l \2,a1
|
|
mvs.w (a0)+,d1
|
|
add.l d1,a1
|
|
mvs.\3 (a1),d1
|
|
and.l d0,d1
|
|
set_cc0
|
|
move.\3 d1,(a1)
|
|
ii_end
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // and.w dx,d8(ay,dy)
|
|
//--------------------------------------------------------------------
|
|
ande8ad:.macro
|
|
#ifdef halten_and
|
|
halt
|
|
#endif
|
|
move.l \2,a1
|
|
jsr ewf
|
|
.ifc \3,l
|
|
move.l (a1),d1
|
|
move.l \1,d0
|
|
.else
|
|
mvs.\3 (a1),d1
|
|
mvs.\3 \1,d0
|
|
.endif
|
|
and.l d0,d1
|
|
set_cc0
|
|
move.\3 d1,(a1)
|
|
ii_end
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // and dx,xxx.w
|
|
//--------------------------------------------------------------------
|
|
andxwe:.macro
|
|
#ifdef halten_and
|
|
halt
|
|
#endif
|
|
mvs.\3 \1,d0
|
|
move.w (a0)+,a1
|
|
mvs.\3 (a1),d1
|
|
and.l d0,d1
|
|
set_cc0
|
|
move.\3 d1,(a1)
|
|
ii_end
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // and dx,xxx.l
|
|
//--------------------------------------------------------------------
|
|
andxle:.macro
|
|
#ifdef halten_and
|
|
halt
|
|
#endif
|
|
mvs.\3 \1,d0
|
|
move.l (a0)+,a1
|
|
mvs.\3 (a1),d1
|
|
and.l d0,d1
|
|
set_cc0
|
|
move.\3 d1,(a1)
|
|
ii_end
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // anda.w ea,ax
|
|
//--------------------------------------------------------------------
|
|
andaw:.macro
|
|
jmp ii_error
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// and.w ea,usp
|
|
//--------------------------------------------------------------------
|
|
andawa7:.macro
|
|
jmp ii_error
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // anda.w usp?,ax
|
|
//--------------------------------------------------------------------
|
|
andawu:.macro
|
|
jmp ii_error
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // anda.w usp?,usp
|
|
//--------------------------------------------------------------------
|
|
andawua7:.macro
|
|
andawu \1,\2
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // anda.w d16(ay),ax
|
|
//--------------------------------------------------------------------
|
|
andawd16a:.macro
|
|
jmp ii_error
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // anda.w d8(ay,dy),ax
|
|
//--------------------------------------------------------------------
|
|
andawd8a:.macro
|
|
jmp ii_error
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // anda.w xxx.w,ax
|
|
//--------------------------------------------------------------------
|
|
andawxwax:.macro
|
|
jmp ii_error
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // anda.w xxx.l,ax
|
|
//--------------------------------------------------------------------
|
|
andawxlax:.macro
|
|
jmp ii_error
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // anda.w d16(pc),ax
|
|
//--------------------------------------------------------------------
|
|
andawd16pcax:.macro
|
|
jmp ii_error
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // anda.w d8(pc,dy),ax
|
|
//--------------------------------------------------------------------
|
|
andawd8pcax:.macro
|
|
jmp ii_error
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // anda.w #im,ax
|
|
//--------------------------------------------------------------------
|
|
andawim:.macro
|
|
jmp ii_error
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // anda.l d8(ay,dy),ax
|
|
//--------------------------------------------------------------------
|
|
andald8a:.macro
|
|
jmp ii_error
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // anda.l d8(pc,dy),ax
|
|
//--------------------------------------------------------------------
|
|
andald8pcax:.macro
|
|
jmp ii_error
|
|
.endm;
|
|
//*****************************************************************************************
|
|
// spezial addx subx etc.
|
|
//--------------------------------------------------------------------
|
|
//--------------------------------------------------------------------
|
|
// // addx dy,dx
|
|
//--------------------------------------------------------------------
|
|
anddx:.macro
|
|
jmp ii_error
|
|
.endm;
|
|
//--------------------------------------------------------------------
|
|
// // addx -(ay),-(ax)
|
|
//--------------------------------------------------------------------
|
|
anddax:.macro
|
|
jmp ii_error
|
|
.endm;
|
|
//--------------------------------------------------------------------
|