|
|
1.1 ! root 1: / Unsigned long remainder ! 2: ! 3: .globl ulrem ! 4: .globl csv, cret ! 5: ulrem: ! 6: jsr r5,csv ! 7: tst 8.(r5) ! 8: bne hardlrem ! 9: mov 10.(r5),r3 ! 10: bmi hardlrem ! 11: mov 6.(r5),r2 ! 12: mov 4.(r5),r1 ! 13: bmi hardest ! 14: clr r0 ! 15: div r3,r0 ! 16: mov r1,r0 ! 17: mov r2,r1 ! 18: div r3,r0 ! 19: bvc 1f ! 20: sub r3,r0 / this is the clever part ! 21: div r3,r0 ! 22: tst r1 ! 23: beq 1f ! 24: add r3,r1 ! 25: 1: ! 26: clr r0 ! 27: jmp cret ! 28: ! 29: / The divisor is known to be >= 2^15 so only 16 cycles are needed. ! 30: hardlrem: ! 31: mov 6.(r5),r2 ! 32: mov 4.(r5),r1 ! 33: clr r0 ! 34: mov 8.(r5),r3 ! 35: mov $16.,r4 ! 36: 1: ! 37: clc ! 38: rol r2 ! 39: rol r1 ! 40: rol r0 ! 41: cmp r3,r0 ! 42: bhi 3f ! 43: blo 2f ! 44: cmp 10.(r5),r1 ! 45: blos 2f ! 46: 3: ! 47: sob r4,1b ! 48: br 1f ! 49: 2: ! 50: sub 10.(r5),r1 ! 51: sbc r0 ! 52: sub r3,r0 ! 53: sob r4,1b ! 54: 1: ! 55: jmp cret ! 56: ! 57: / The dividend is known to be >= 2^31 so 32 cycles are needed. ! 58: hardest: ! 59: mov 6.(r5),r3 ! 60: mov 4.(r5),r2 ! 61: clr r1 ! 62: clr r0 ! 63: mov $32.,r4 ! 64: 1: ! 65: clc ! 66: rol r3 ! 67: rol r2 ! 68: rol r1 ! 69: rol r0 ! 70: cmp 8.(r5),r0 ! 71: bhi 3f ! 72: blo 2f ! 73: cmp 10.(r5),r1 ! 74: blos 2f ! 75: 3: ! 76: sob r4,1b ! 77: br 1f ! 78: 2: ! 79: sub 10.(r5),r1 ! 80: sbc r0 ! 81: sub 8.(r5),r0 ! 82: sob r4,1b ! 83: 1: ! 84: jmp cret
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.