--- pgp/src/68000.s 2018/04/24 16:38:41 1.1.1.1 +++ pgp/src/68000.s 2018/04/24 16:41:05 1.1.1.2 @@ -1,89 +1,89 @@ -; This is the assembler source code for amiga 68000 -; It assumes Lattice-C is used. (v5.04 or higher) -; Written by S. Fishman - - SECTION text - - XREF _global_precision - XDEF _P_ADDC ;make the linker know we're here - -_P_ADDC: link a6,#0 - movem.l d4-d5/a0-a1,-(a7) - move.l 8(a6),a0 - move.l 12(a6),a1 - move.l 16(a6),d4 - sne d4 - moveq.l #0,d5 - move.w _global_precision,d5 - asl.l #2,d5 - add.l d5,a0 - add.l d5,a1 - asr.l #2,d5 - sub.l #1,d5 - asr.b #1,d4 -add_loop: addx.l -(a1),-(a0) - dbra d5,add_loop - scs d0 - ext.w d0 - ext.l d0 - movem.l (a7)+,d4-d5/a0-a1 - unlk a6 ;get A6 & A7 back - rts - - XDEF _P_SUBB - -_P_SUBB: link a6,#0 - movem.l d4-d5/a0-a1,-(a7) - move.l 8(a6),a0 - move.l 12(a6),a1 - move.l 16(a6),d4 - sne d4 ;fix old borrow bits - moveq.l #0,d5 - move.w _global_precision,d5 - asl.l #2,d5 - add.l d5,a0 - add.l d5,a1 - asr.l #2,d5 - sub.l #1,d5 - asr.b #1,d4 -sub_loop: subx.l -(a1),-(a0) ;come'n, let's do it !!! - dbra d5,sub_loop - scs d0 - ext.w d0 - ext.l d0 - movem.l (a7)+,d4-d5/a0-a1 - unlk a6 - rts - - XDEF _P_ROTL - -_P_ROTL: link a6,#0 - movem.l d4-d5/a0,-(a7) - move.l 8(a6),a0 - move.l 12(a6),d4 - moveq.l #0,d5 - move.w _global_precision,d5 - asl.l #1,d5 - - sub.l #2,d5 - asl (a0)+ - scs d0 - ext.w d0 - ext.l d0 -rotl_loop: asl (a0)+ - bcc rotl_no_carry - bset #0,-3(a0) -rotl_no_carry: dbra d5,rotl_loop - tst.l d4 - beq rotl_no_old_carry - bset #0,-1(a0) -rotl_no_old_carry: - movem.l (a7)+,d4-d5/a0 - unlk a6 - rts - - XDEF _P_SETP - -_P_SETP: rts - END - +; This is the assembler source code for amiga 68000 +; It assumes Lattice-C is used. (v5.04 or higher) +; Written by S. Fishman + + SECTION text + + XREF _global_precision + XDEF _P_ADDC ;make the linker know we're here + +_P_ADDC: link a6,#0 + movem.l d4-d5/a0-a1,-(a7) + move.l 8(a6),a0 + move.l 12(a6),a1 + move.l 16(a6),d4 + sne d4 + moveq.l #0,d5 + move.w _global_precision,d5 + asl.l #2,d5 + add.l d5,a0 + add.l d5,a1 + asr.l #2,d5 + sub.l #1,d5 + asr.b #1,d4 +add_loop: addx.l -(a1),-(a0) + dbra d5,add_loop + scs d0 + ext.w d0 + ext.l d0 + movem.l (a7)+,d4-d5/a0-a1 + unlk a6 ;get A6 & A7 back + rts + + XDEF _P_SUBB + +_P_SUBB: link a6,#0 + movem.l d4-d5/a0-a1,-(a7) + move.l 8(a6),a0 + move.l 12(a6),a1 + move.l 16(a6),d4 + sne d4 ;fix old borrow bits + moveq.l #0,d5 + move.w _global_precision,d5 + asl.l #2,d5 + add.l d5,a0 + add.l d5,a1 + asr.l #2,d5 + sub.l #1,d5 + asr.b #1,d4 +sub_loop: subx.l -(a1),-(a0) ;come'n, let's do it !!! + dbra d5,sub_loop + scs d0 + ext.w d0 + ext.l d0 + movem.l (a7)+,d4-d5/a0-a1 + unlk a6 + rts + + XDEF _P_ROTL + +_P_ROTL: link a6,#0 + movem.l d4-d5/a0,-(a7) + move.l 8(a6),a0 + move.l 12(a6),d4 + moveq.l #0,d5 + move.w _global_precision,d5 + asl.l #1,d5 + + sub.l #2,d5 + asl (a0)+ + scs d0 + ext.w d0 + ext.l d0 +rotl_loop: asl (a0)+ + bcc rotl_no_carry + bset #0,-3(a0) +rotl_no_carry: dbra d5,rotl_loop + tst.l d4 + beq rotl_no_old_carry + bset #0,-1(a0) +rotl_no_old_carry: + movem.l (a7)+,d4-d5/a0 + unlk a6 + rts + + XDEF _P_SETP + +_P_SETP: rts + END +