ack/mach/mantra/int/mloop7

252 lines
4.1 KiB
Plaintext

.sect .text
.sect .rom
.sect .data
.sect .bss
.sect .text
!------------------------------------------------------------------------------
! UNSIGNED ARITHMETIC
!-----------------------------------------------------------------------------
adu_z: mov (sp)+,d0 ; bra 0f
adu_l: adroff ; move.w (a5),d0
0: checksize
2: move.w (sp)+,d1 ; add.w d1,(sp)
jmp (a4)
4: move.l (sp)+,d1; add.l d1,(sp)
jmp (a4)
sbu_z: mov (sp)+,d0 ; bra 0f
sbu_l: adroff ; move.w (a5),d0
0: checksize
2: move.w (sp)+,d1 ; sub.w d1,(sp)
jmp (a4)
4: move.l (sp)+,d1 ; sub.l d1,(sp)
jmp (a4)
!------------------------------------------------------------------------------
mlu_z: mov (sp)+,d0 ; bra 0f
mlu_l: adroff ; move.w (a5),d0
0: checksize
2: move.w (sp)+,d0 ; mulu (sp),d0
move.w d0,(sp) ; jmp (a4)
4: move.l (sp)+,d0 ; move.l (sp),d1
bsr mlu4 ; move.l d0,(sp)
jmp (a4)
!----------------------------------------------------------------------------
dvu_z: mov (sp)+,d0 ; bra 0f
dvu_l: adroff ; move.w (a5),d0
0: checksize
2: move.w (sp)+,d1 ; beq 3f
move.w (sp),d0 ; divu d1,d0
move.w d0,(sp) ; jmp (a4)
3: bsr e_idivz ; move.w #-1,(sp)
jmp (a4)
4: move.l (sp)+,d0 ; move.l (sp),d1
bsr dvu4 ; move.l d1,(sp)
jmp (a4)
!----------------------------------------------------------------------------
rmu_z: mov (sp)+,d0 ; bra 0f
rmu_l: adroff ; move.w (a5),d0
0: checksize
2: move.w (sp)+,d1 ; beq 3f
move.w (sp),d0 ; divu d1,d0
swap d0 ; move.w d0,(sp)
jmp (a4)
3: bsr e_idivz ; clr.w (sp)
jmp (a4)
4: move.l (sp)+,d0 ; move.l (sp),d1
bsr dvu4 ; move.l d3,(sp)
jmp (a4)
!------------------------------------------------------------------------.
slu_z: mov (sp)+,d0 ; bra 0f
slu_l: adroff ; move.w (a5),d0
0: checksize
2: move.w (sp)+,d0
bmi 7f
3: move.w (sp),d1
lsl.w d0,d1 ; move.w d1,(sp)
jmp (a4)
4: mov (sp)+,d0
bmi 9f
5: move.l (sp),d1
lsl.l d0,d1 ; move.l d1,(sp)
jmp (a4)
7: neg.w d0 ; bra 3f
9: nega d0 ; bra 5f
7: neg.w d0 ; bra 3b
9: nega d0 ; bra 5b
sru_z: mov (sp)+,d0 ; bra 0f
sru_l: adroff ; move.w (a5),d0
0: checksize
2: move.w (sp)+,d0
bmi 7b
3: move.w (sp),d1
lsr.w d0,d1 ; move.w d1,(sp)
jmp (a4)
4: mov (sp)+,d0
bmi 9b
5: move.l (sp),d1
lsr.l d0,d1 ; move.l d1,(sp)
jmp (a4)
!------------------------------------------------------------------------------
! DUMMY FLOATING POINT ROUTINES
!------------------------------------------------------------------------------
adf_l:
adroff ; move.w (a5),d0
1:
#ifdef FLTRAP
bra flnim
#else
checkfsize
4:
jsr .adf4
add.l #4,sp
jmp (a4)
8:
jsr .adf8
add.l #8,sp
jmp (a4)
#endif
adf_z:
mov (sp)+,d0 ; bra 1b
adf_s0:
move.l #0,d0 ; move.b (a3)+,d0
bra 1b
sbf_l:
adroff ; move.w (a5),d0
1:
#ifdef FLTRAP
bra flnim
#else
checkfsize
4:
jsr .sbf4
add.l #4,sp
jmp (a4)
8:
jsr .sbf8
add.l #8,sp
jmp (a4)
#endif
sbf_z:
mov (sp)+,d0 ; bra 1b
sbf_s0:
move.l #0,d0 ; move.b (a3)+,d0
bra 1b
mlf_l:
adroff ; move.w (a5),d0
1:
#ifdef FLTRAP
bra flnim
#else
checkfsize
4:
jsr .mlf4
add.l #4,sp
jmp (a4)
8:
jsr .mlf8
add.l #8,sp
jmp (a4)
#endif
mlf_z:
mov (sp)+,d0 ; bra 1b
mlf_s0:
move.l #0,d0 ; move.b (a3)+,d0
bra 1b
dvf_l:
adroff ; move.w (a5),d0
1:
#ifdef FLTRAP
bra flnim
#else
checkfsize
4:
jsr .dvf4
add.l #4,sp
jmp (a4)
8:
jsr .dvf8
add.l #8,sp
jmp (a4)
#endif
dvf_z:
mov (sp)+,d0 ; bra 1b
dvf_s0:
move.l #0,d0 ; move.b (a3)+,d0
bra 1b
ngf_l: adroff ; move.w (a5),d0
1:
#ifdef FLTRAP
bra flnim
#else
checkfsize
4:
jsr .ngf4
jmp (a4)
8:
jsr .ngf8
jmp (a4)
#endif
ngf_z:
mov (sp)+,d0 ; bra 1b
fif_l: adroff ; move.w (a5),d0
1:
#ifdef FLTRAP
bra flnim
#else
checkfsize
4:
move.l sp,-(sp)
jsr .fif4
add.l #4,sp
jmp (a4)
8:
move.l sp,-(sp)
jsr .fif8
add.l #4,sp
jmp (a4)
#endif
fif_z:
mov (sp)+,d0 ; bra 1b
fef_l: adroff ; move.w (a5),d0
1:
#ifdef FLTRAP
bra flnim
#else
checkfsize
4:
move.l sp,-(sp)
sub.l #4,(sp)
jsr .fef4
#ifndef lword
add.l #2,sp
#endif
jmp (a4)
8:
move.l sp,-(sp)
sub.l #4,(sp)
jsr .fef8
#ifndef lword
add.l #2,sp
#endif
jmp (a4)
#endif
fef_z: mov (sp)+,d0 ; bra 1b