.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