Moved source_fa into trunk
This commit is contained in:
584
sources/ii_sub.h
Normal file
584
sources/ii_sub.h
Normal file
@@ -0,0 +1,584 @@
|
||||
//--------------------------------------------------------------------
|
||||
// sub
|
||||
//--------------------------------------------------------------------
|
||||
/*****************************************************************************************/
|
||||
//--------------------------------------------------------------------
|
||||
// byt
|
||||
//--------------------------------------------------------------------
|
||||
//--------------------------------------------------------------------
|
||||
// sub.b #im,dx
|
||||
//--------------------------------------------------------------------
|
||||
subbir_macro:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
move.w (a0)+,d0
|
||||
extb.l d0
|
||||
mvs.b \2,d1
|
||||
sub.l d0,d1
|
||||
set_cc0
|
||||
move.b d1,\2
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // sub ea,dx
|
||||
//--------------------------------------------------------------------
|
||||
subdd:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
mvs.\3 \1,d0
|
||||
mvs.\3 \2,d1
|
||||
sub.l d0,d1
|
||||
set_cc0
|
||||
move.\3 d1,\2
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // sub ea(l)->dy(w),dx z.B. f<>r USP
|
||||
//--------------------------------------------------------------------
|
||||
subddd:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
move.l \1,a1
|
||||
mvs.\3 a1,d0
|
||||
mvs.\3 \2,d1
|
||||
sub.l d0,d1
|
||||
set_cc0
|
||||
move.\3 d1,\2
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // sub (ea)->dy,dx
|
||||
//--------------------------------------------------------------------
|
||||
subdda:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
move.l \1,a1
|
||||
mvs.\3 (a1),d0
|
||||
mvs.\3 \2,d1
|
||||
sub.l d0,d1
|
||||
set_cc0
|
||||
move.\3 d1,\2
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // sub ea->ay,(ay)+,dx
|
||||
//--------------------------------------------------------------------
|
||||
subddai:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
move.l \1,a1
|
||||
mvs.\3 (a1)+,d0
|
||||
move.l a1,\1
|
||||
mvs.\3 \2,d1
|
||||
sub.l d0,d1
|
||||
set_cc0
|
||||
move.\3 d1,\2
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // sub ea->ay,-(ay),dx
|
||||
//--------------------------------------------------------------------
|
||||
subddad:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
move.l \1,a1
|
||||
mvs.\3 -(a1),d0
|
||||
move.l a1,\1
|
||||
mvs.\3 \2,d1
|
||||
sub.l d0,d1
|
||||
set_cc0
|
||||
move.\3 d1,\2
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // sub d16(ay),dx
|
||||
//--------------------------------------------------------------------
|
||||
subd16ad:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
move.l \1,a1
|
||||
mvs.w (a0)+,d0
|
||||
add.l d0,a1
|
||||
mvs.\3 (a1),d0
|
||||
mvs.\3 \2,d1
|
||||
sub.l d0,d1
|
||||
set_cc0
|
||||
move.\3 d1,\2
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // sub d8(ay,dy),dx
|
||||
//--------------------------------------------------------------------
|
||||
subd8ad:.macro
|
||||
#ifdef halten_sub
|
||||
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
|
||||
sub.l d0,d1
|
||||
set_cc0
|
||||
move.\3 d1,\2
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // sub xxx.w,dx
|
||||
//--------------------------------------------------------------------
|
||||
subxwd:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
move.w (a0)+,a1
|
||||
mvs.\3 (a1),d0
|
||||
mvs.\3 \2,d1
|
||||
sub.l d0,d1
|
||||
set_cc0
|
||||
move.\3 d1,\2
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // sub xxx.l,dx
|
||||
//--------------------------------------------------------------------
|
||||
subxld:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
move.l (a0)+,a1
|
||||
mvs.\3 (a1),d0
|
||||
mvs.\3 \2,d1
|
||||
sub.l d0,d1
|
||||
set_cc0
|
||||
move.\3 d1,\2
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // sub d16(pc),dx
|
||||
//--------------------------------------------------------------------
|
||||
subd16pcd:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
move.l a0,a1
|
||||
mvs.w (a0)+,d0
|
||||
add.l d0,a1
|
||||
mvs.\3 (a1),d0
|
||||
mvs.\3 \2,d1
|
||||
sub.l d0,d1
|
||||
set_cc0
|
||||
move.\3 d1,\2
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // sub d8(pc,dy),dx
|
||||
//--------------------------------------------------------------------
|
||||
subd8pcd:.macro
|
||||
#ifdef halten_sub
|
||||
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
|
||||
sub.l d0,d1
|
||||
set_cc0
|
||||
move.\3 d1,\2
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// sub dy,ea
|
||||
//--------------------------------------------------------------------
|
||||
//--------------------------------------------------------------------
|
||||
// // sub (ea)->dy,dx
|
||||
//--------------------------------------------------------------------
|
||||
subeda:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
mvs.\3 \1,d0
|
||||
move.l \2,a1
|
||||
mvs.\3 (a1),d1
|
||||
sub.l d0,d1
|
||||
set_cc0
|
||||
move.\3 d1,(a1)
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // sub dx,ea->ay,(ay)+
|
||||
//--------------------------------------------------------------------
|
||||
subedai:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
mvs.\3 \1,d0
|
||||
move.l \2,a1
|
||||
mvs.\3 (a1),d1
|
||||
sub.l d0,d1
|
||||
set_cc0
|
||||
move.\3 d1,(a1)+
|
||||
move.l a1,\2
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // sub dx,ea->ay,(ay)+
|
||||
//--------------------------------------------------------------------
|
||||
subedaid:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
mvs.\3 \1,d0
|
||||
mvs.\3 \2,d1
|
||||
sub.l d0,d1
|
||||
set_cc0
|
||||
move.\3 d1,\2+
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // sub dx,ea->ay,-(ay)
|
||||
//--------------------------------------------------------------------
|
||||
subedad:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
mvs.\3 \1,d0
|
||||
move.l \2,a1
|
||||
mvs.\3 -(a1),d1
|
||||
move.l a1,\2
|
||||
sub.l d0,d1
|
||||
set_cc0
|
||||
move.\3 d1,(a1)
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // sub dx,ea->ay,-(ay)
|
||||
//--------------------------------------------------------------------
|
||||
subedadd:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
mvs.\3 \1,d0
|
||||
mvs.\3 -\2,d1
|
||||
sub.l d0,d1
|
||||
set_cc0
|
||||
move.\3 d1,\2
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // sub dx,d16(ay)
|
||||
//--------------------------------------------------------------------
|
||||
sube16ad:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
mvs.\3 \1,d0
|
||||
move.l \2,a1
|
||||
mvs.w (a0)+,d1
|
||||
add.l d1,a1
|
||||
mvs.\3 (a1),d1
|
||||
sub.l d0,d1
|
||||
set_cc0
|
||||
move.\3 d1,(a1)
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // sub dx,d8(ay,dy)
|
||||
//--------------------------------------------------------------------
|
||||
sube8ad:.macro
|
||||
#ifdef halten_sub
|
||||
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
|
||||
sub.l d0,d1
|
||||
set_cc0
|
||||
move.\3 d1,(a1)
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // sub dx,xxx.w
|
||||
//--------------------------------------------------------------------
|
||||
subxwe:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
mvs.\3 \1,d0
|
||||
move.w (a0)+,a1
|
||||
mvs.\3 (a1),d1
|
||||
sub.l d0,d1
|
||||
set_cc0
|
||||
move.\3 d1,(a1)
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // sub dx,xxx.l
|
||||
//--------------------------------------------------------------------
|
||||
subxle:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
mvs.\3 \1,d0
|
||||
move.l (a0)+,a1
|
||||
mvs.\3 (a1),d1
|
||||
sub.l d0,d1
|
||||
set_cc0
|
||||
move.\3 d1,(a1)
|
||||
ii_end
|
||||
.endm;
|
||||
/******************************************************/
|
||||
// adress register
|
||||
/******************************************************/
|
||||
//--------------------------------------------------------------------
|
||||
// // suba.w ea,ax
|
||||
//--------------------------------------------------------------------
|
||||
subaw:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
move.l a0,pc_off(a7) // pc auf next
|
||||
movem.l (a7),d0/d1/a0/a1 // register zurp<72>ck
|
||||
mvs.w \1,d0
|
||||
suba.l d0,\2
|
||||
move.l d0_off(a7),d0
|
||||
lea ii_ss(a7),a7 // stack erh<72>hen
|
||||
rte
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// sub.w ea,usp
|
||||
//--------------------------------------------------------------------
|
||||
subawa7:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
mvs.w \1,d0
|
||||
move.l usp,a1
|
||||
sub.l d0,a1
|
||||
move.l a1,usp
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // suba.w usp?,ax
|
||||
//--------------------------------------------------------------------
|
||||
subawu:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
move.l a0,pc_off(a7) // pc auf next
|
||||
movem.l (a7),d0/d1/a0/a1 // register zurp<72>ck
|
||||
move.l a7,_a7_save
|
||||
move.l usp,a7
|
||||
move.l \1,d0
|
||||
suba.l d0,\2
|
||||
move.l a7,usp
|
||||
move.l _a7_save,a7
|
||||
move.l d0_off(a7),d0
|
||||
lea ii_ss(a7),a7 // stack erh<72>hen
|
||||
rte
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // suba.w usp?,usp
|
||||
//--------------------------------------------------------------------
|
||||
subawua7:.macro
|
||||
subawu \1,\2
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // suba.w d16(ay),ax
|
||||
//--------------------------------------------------------------------
|
||||
subawd16a:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
move.l \1,a1
|
||||
mvs.w (a0)+,d0
|
||||
adda.l d0,a1
|
||||
mvs.w (a1),d0
|
||||
move.l \2,a1
|
||||
sub.l d0,a1
|
||||
move.l a1,\2
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // suba.w d8(ay,dy),ax
|
||||
//--------------------------------------------------------------------
|
||||
subawd8a:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
move.l \1,a1
|
||||
jsr ewf
|
||||
mvs.w (a1),d0
|
||||
move.l \2,a1
|
||||
sub.l d0,a1
|
||||
move.l a1,\2
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // suba.w xxx.w,ax
|
||||
//--------------------------------------------------------------------
|
||||
subawxwax:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
move.w (a0)+,a1
|
||||
mvs.w (a1),d0
|
||||
move.l \2,a1
|
||||
suba.l d0,a1
|
||||
move.l a1,\2
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // suba.w xxx.l,ax
|
||||
//--------------------------------------------------------------------
|
||||
subawxlax:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
move.l (a0)+,a1
|
||||
mvs.w (a1),d0
|
||||
move.l \2,a1
|
||||
suba.l d0,a1
|
||||
move.l a1,\2
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // suba.w d16(pc),ax
|
||||
//--------------------------------------------------------------------
|
||||
subawd16pcax:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
move.w (a0)+,a1
|
||||
adda.l a0,a1
|
||||
mvs.w (a1),d0
|
||||
move.l \2,a1
|
||||
suba.l d0,a1
|
||||
move.l a1,\2
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // suba.w d8(pc,dy),ax
|
||||
//--------------------------------------------------------------------
|
||||
subawd8pcax:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
move.l a0,a1
|
||||
jsr ewf
|
||||
mvs.w (a1),d0
|
||||
move.l \2,a1
|
||||
sub.l d0,a1
|
||||
move.l a1,\2
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // suba.w #im,ax
|
||||
//--------------------------------------------------------------------
|
||||
subawim:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
mvs.w \1,d0
|
||||
move.l \2,a1
|
||||
sub.l d0,a1
|
||||
move.l a1,\2
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // suba.l d8(ay,dy),ax
|
||||
//--------------------------------------------------------------------
|
||||
subald8a:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
move.l \1,a1
|
||||
jsr ewf
|
||||
move.l (a1),d0
|
||||
move.l \2,a1
|
||||
sub.l d0,a1
|
||||
move.l a1,\2
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // suba.l d8(pc,dy),ax
|
||||
//--------------------------------------------------------------------
|
||||
subakd8pcax:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
move.l a0,a1
|
||||
jsr ewf
|
||||
move.l (a1),d0
|
||||
move.l \2,a1
|
||||
sub.l d0,a1
|
||||
move.l a1,\2
|
||||
ii_end
|
||||
.endm;
|
||||
//*****************************************************************************************
|
||||
// subx
|
||||
//*****************************************************************************************
|
||||
//--------------------------------------------------------------------
|
||||
// // subx dy,dx
|
||||
//--------------------------------------------------------------------
|
||||
subdx:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
move.b sr_off+1(a7),d0 //ccr holen
|
||||
move d0,ccr //setzen
|
||||
mvs.\3 \2,d0
|
||||
mvs.\3 \1,d1
|
||||
subx.l d0,d1
|
||||
set_cc0
|
||||
move.\3 d1,\1
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
// // subx -(ay),-(ax)
|
||||
//--------------------------------------------------------------------
|
||||
subdax:.macro
|
||||
#ifdef halten_sub
|
||||
halt
|
||||
#endif
|
||||
move.b sr_off+1(a7),d0 //ccr holen
|
||||
move d0,ccr //setzen
|
||||
move.l \1,a1
|
||||
.ifc \3,l
|
||||
move.l -(a1),d0
|
||||
.else
|
||||
mvs.\3 -(a1),d0
|
||||
.endif
|
||||
move.l \2,a1
|
||||
.ifc \3,l
|
||||
move.l -(a1),d0
|
||||
.else
|
||||
mvs.\3 -(a1),d1
|
||||
.endif
|
||||
subx.l d0,d1
|
||||
set_cc0
|
||||
move.\3 d1,(a1)
|
||||
ii_end
|
||||
.endm;
|
||||
//--------------------------------------------------------------------
|
||||
Reference in New Issue
Block a user