home *** CD-ROM | disk | FTP | other *** search
/ Syzygy Magazine 4 / Syzygy_Magazine_4_1998_08_07___pl_Disk_2_of_3_Side_B.atr / lekcja3.arc / INTOP2.ASM < prev    next >
Assembly Source File  |  1988-09-01  |  3KB  |  1 lines

  1. * Integer operations fast¢* by Charlie/AR/AwS¢* division by Roland/NG¢¢ints equ $f9¢inta equ $fa (2)¢intb equ $fc (2)¢intc equ $fe (2)¢¢* Register:¢* iadd,isub,imul,idiv,ineg,isqr¢¢*--------------*¢¢* c:=a+b¢¢iadd clc¢     lda inta¢     adc intb¢     sta intc¢     lda inta+1¢     adc intb+1¢     sta intc+1¢     rts¢¢* c:=a-b¢¢isub sec¢     lda inta¢     sbc intb¢     sta intc¢     lda inta+1¢     sbc intb+1¢     sta intc+1¢     rts¢¢* c:=a*b¢¢imul jsr isig¢     ldx #0¢     ldy #0¢_ml1 lsr intb+1¢     ror intb¢     bcc _ml2¢     txa¢     clc¢     adc inta¢     tax¢     tya¢     adc inta+1¢     tay¢_ml2 lda intb¢     ora intb+1¢     beq _ml3¢     asl inta¢     rol inta+1¢     jmp _ml1¢_ml3 stx intc¢     sty intc+1¢     lda ints¢     bmi ineg¢     rts¢¢ineg sec¢     lda #0¢     sbc intc¢     sta intc¢     lda #0¢     sbc intc+1¢     sta intc+1¢     rts¢¢* c:=a div b¢¢idiv jsr isig¢     lda intb¢     sta _ilb¢     lda intb+1¢     jsr ilog¢     sty _dv1+1¢     lda inta¢     sta _ilb¢     lda inta+1¢     jsr ilog¢     tya¢     sec¢_dv1 sbc #$ff¢     bcs *+3¢     rts¢     tax¢     beq _dv3¢     tay¢_dv2 asl intb¢     rol intb+1¢     dey¢     bne _dv2¢_dv3 sec¢     lda inta¢     sbc intb¢     sta _dv4+1¢     lda inta+1¢     sbc intb+1¢     sta _dv5+1¢     bcc _dv6¢_dv4 lda #$ff¢     sta inta¢_dv5 lda #$ff¢     sta inta+1¢_dv6 rol intc¢     rol intc+1¢     lsr intb+1¢     ror intb¢     dex¢     bpl _dv3¢     lda inta¢     asl @¢     rol inta+1¢     bcs _dv9¢     sec¢_dv7 sbc #$ff¢     lda inta+1¢_dv8 sbc #$ff¢     bcc _dvq¢_dv9 inc intc¢     bne _dvq¢     inc intc+1¢_dvq lda ints¢     bmi ineg¢     rts¢¢ilog ldy #16¢     asl _ilb¢     rol @¢     bcs _ilq¢     dey¢     bne ilog+2¢_ilq rts¢_ilb brk¢¢* a:=int(sqr(abs(a)))¢¢isqr lda inta+1¢     bpl _sq8¢     sec¢     lda #0¢     sbc inta¢     sta inta¢     lda #0¢     sbc inta+1¢     sta inta+1¢_sq8 bne _sq0¢     lda inta¢     cmp #2¢     bcc _sq5¢_sq0 sec¢     lda inta¢     sbc #1¢     sta intc¢     sta _sq2+1¢     lda inta+1¢     sbc #0¢     sta intc+1¢     sta _sq3+1¢     lda #1¢     sta intb¢     lda #0¢     sta intb+1¢     beq _sq4  (jmp)¢_sq1 lda inta¢     sta intb¢     sta _sq6+1¢     lda inta+1¢     sta intb+1¢     sta _sq7+1¢_sq2 lda #$ff¢     sta inta¢_sq3 lda #$ff¢     sta inta+1¢     jsr idiv¢_sq6 lda #$ff¢     sta intb¢_sq7 lda #$ff¢     sta intb+1¢_sq4 clc¢     lda intc¢     adc intb¢     sta inta¢     lda intc+1¢     adc intb+1¢     lsr @¢     sta inta+1¢     ror inta¢     jsr isub¢     bne _sq1¢     lda intc¢     cmp #2¢     bcs _sq1¢_sq5 rts¢¢*--------------*¢¢isig lda #0¢     sta intc¢     sta intc+1¢     lda inta¢     ora inta+1¢     bne _sg0¢     sta intb¢     sta intb+1¢_sg1 pla¢     pla¢     rts¢_sg0 lda intb¢     ora intb+1¢     beq _sg1¢     lda inta+1¢     eor intb+1¢     sta ints¢     lda inta+1¢     bpl _sg2¢     sec¢     lda #0¢     sbc inta¢     sta inta¢     lda #0¢     sbc inta+1¢     sta inta+1¢_sg2 lda intb+1¢     bpl _sg3¢     sec¢     lda #0¢     sbc intb¢     sta intb¢     lda #0¢     sbc intb+1¢     sta intb+1¢_sg3 rts¢¢