252 lines
4.1 KiB
Plaintext
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:
|
|
jsr .fif4
|
|
jmp (a4)
|
|
8:
|
|
jsr .fif8
|
|
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)+,d0
|
|
clr.l -(sp)
|
|
move.l d0,-(sp)
|
|
jsr .fef4
|
|
#ifndef lword
|
|
add.l #2,sp
|
|
#endif
|
|
jmp (a4)
|
|
8:
|
|
move.l (sp)+,d0
|
|
move.l (sp)+,d1
|
|
clr.l -(sp)
|
|
move.l d1,-(sp)
|
|
move.l d0,-(sp)
|
|
jsr .fef8
|
|
#ifndef lword
|
|
add.l #2,sp
|
|
#endif
|
|
jmp (a4)
|
|
#endif
|
|
fef_z: mov (sp)+,d0 ; bra 1b
|