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 >
Wrap
Assembly Source File
|
1988-09-01
|
3KB
|
1 lines
* 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¢¢