|
|
1.1 ! root 1: / Long remainder ! 2: ! 3: .globl alrem ! 4: .globl csv, cret ! 5: alrem: ! 6: jsr r5,csv ! 7: mov 8.(r5),r3 ! 8: sxt r4 ! 9: bpl 1f ! 10: neg r3 ! 11: bmi hardlrem ! 12: 1: ! 13: cmp r4,6.(r5) ! 14: bne hardlrem ! 15: mov 4.(r5),r0 ! 16: mov 2(r0),r2 ! 17: mov (r0),r1 ! 18: mov r1,r4 ! 19: bge 1f ! 20: neg r1 ! 21: neg r2 ! 22: sbc r1 ! 23: 1: ! 24: clr r0 ! 25: div r3,r0 ! 26: mov r1,r0 ! 27: mov r2,r1 ! 28: mov r0,(sp) ! 29: div r3,r0 ! 30: bvc 1f ! 31: mov r2,r1 / restore dividend ! 32: mov (sp),r0 ! 33: sub r3,r0 ! 34: div r3,r0 ! 35: tst r1 ! 36: beq 9f ! 37: add r3,r1 ! 38: 1: ! 39: tst r4 ! 40: bpl 9f ! 41: neg r1 ! 42: 9: ! 43: sxt r0 ! 44: mov 4.(r5),r3 ! 45: mov r0,(r3)+ ! 46: mov r1,(r3) ! 47: jmp cret ! 48: ! 49: / The divisor is known to be >= 2^15. Only 17 cycles are ! 50: / needed to get a remainder. ! 51: hardlrem: ! 52: mov 4.(r5),r0 ! 53: mov 2(r0),r2 ! 54: mov (r0),r1 ! 55: bpl 1f ! 56: neg r1 ! 57: neg r2 ! 58: sbc r1 ! 59: 1: ! 60: clr r0 ! 61: mov 6.(r5),r3 ! 62: bge 1f ! 63: neg r3 ! 64: neg 8.(r5) ! 65: sbc r3 ! 66: 1: ! 67: cmp r3,r0 ! 68: blo 1f ! 69: bhi 2f ! 70: cmp 8.(r5),r1 ! 71: bhi 2f ! 72: 1: ! 73: sub r3,r0 ! 74: sub 8.(r5),r1 ! 75: sbc r0 ! 76: 2: ! 77: mov $16.,r4 ! 78: 1: ! 79: clc ! 80: rol r2 ! 81: rol r1 ! 82: rol r0 ! 83: cmp r3,r0 ! 84: blo 2f ! 85: bhi 3f ! 86: cmp 8.(r5),r1 ! 87: blos 2f ! 88: 3: ! 89: sob r4,1b ! 90: br 1f ! 91: 2: ! 92: sub 8.(r5),r1 ! 93: sbc r0 ! 94: sub r3,r0 ! 95: sob r4,1b ! 96: 1: ! 97: mov 4.(r5),r3 ! 98: tst (r3) ! 99: bge 1f ! 100: neg r0 ! 101: neg r1 ! 102: sbc r0 ! 103: 1: ! 104: mov r0,(r3)+ ! 105: mov r1,(r3) ! 106: jmp cret
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.