126 lines
2.8 KiB
Plaintext
126 lines
2.8 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.w (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: sbf_l: mlf_l: dvf_l:
|
|
adroff ; move.w (a5),d0
|
|
1: add.l d0,sp
|
|
#ifdef FLTRAP
|
|
bra flnim
|
|
#else
|
|
jmp (a4)
|
|
#endif
|
|
adf_z: sbf_z: mlf_z: dvf_z:
|
|
mov (sp)+,d0 ; bra 1b
|
|
adf_s0: sbf_s0: mlf_s0: dvf_s0:
|
|
move.l #0,d0 ; move.b (a3)+,d0
|
|
bra 1b
|
|
fef_l: sub.l wrd,sp
|
|
fif_l: ngf_l: adroff
|
|
fef_z:
|
|
#ifdef FLTRAP
|
|
bra flnim
|
|
#else
|
|
jmp (a4)
|
|
#endif
|
|
ngf_z: fif_z: add.l wrd,sp ; bra fef_z
|