;LAb10 test Line Equation ;David Staples & Matt Sprinkle Feb 2000 ; .org 0 ;0x0000 lar r30,Done ;Done lar r29,Loop1 ;Loop1 lar r28,Loop2 ;Loop2 lar r27,DoneL2 ;DoneL2 lar r26,Inverta ;Inverta lar r25,Invertb ;Invertb lar r24,Invertc ;Invertc lar r23,TestM1 ;TestM1 lar r22,TestM2 ;TestM2 lar r21,DoneL1 ;DoneL1 lar r20,TestD1 ;TestD1 lar r19,TestD2 ;TestD2 ld r1,X1 ;set X1 to r1 ld r2,Y1 ;set Y1 to r2 ld r7,X2 ;set X2 to r7 ld r3,Y2 ;set Y2 to r3 ld r4,X3 ;set X3 to r4 andi r5,r5,#0 ;clear r5 andi r6,r6,#0 ;clear r6 addi r6,r6,#1 ;r6 equal one andi r8,r8,#0 ;clear r8 andi r9,r9,#0 ;clear r9 andi r10,r10,#0 ;clear r10 andi r11,r11,#0 ;clear r11 andi r12,r12,#0 ;clear r12 andi r13,r13,#0 ;clear r13 andi r14,r14,#0 ;clear r14 andi r15,r15,#0 ;clear r15 addi r15,r15,#1 ;r15 equal one andi r16,r16,#0 ;clear r16 sub r8,r7,r1 ;r7-r1=r8 sub r9,r3,r2 ;r3-r2=r9 sub r12,r4,r1 ;r4-r1=r12 brmi r26,r8 ;goto r26 if r8 is negative addi r10,r8,#0 ;r10=r8 brmi r25,r9 ;goto r25 if r9 is negative addi r11,r9,#0 ;r11=r9 addi r5,r9,#0 ;r5=r9 brmi r24,r12 ;goto r24 if r12 is negative addi r13,r12,#0 ;r13=r12 br r29 ;goto r29 Inverta:not r10,r8 addi r10,r10,#1 brmi r25,r9 ;goto r25 if r9 is negative addi r11,r9,#0 ;r11=r9 addi r5,r9,#0 ;r5=r9 brmi r24,r12 ;goto r24 if r12 is negative addi r13,r12,#0 ;r13=r12 br r29 ;goto r29 Invertb:not r11,r9 addi r11,r11,#1 addi r5,r11,#0 ;r5=r11 brmi r24,r12 ;goto r24 if r12 is negative addi r13,r12,#0 ;r13=r12 br r29 ;goto r29 Invertc:not r13,r12 addi r13,r13,#1 br r29 ;goto r29 Loop1: sub r5,r5,r6 ;r5=r5-r6 brmi r21,r5 ;goto r21 if r5 negtative add r14,r14,r13 ;r14=r14+r13 br r29 ;goto r29 DoneL1: andi r5,r5,#0 ;clear r5 brmi r23,r12 ;goto r23 if r12 is negative brmi r22,r9 ;goto r22 if r9 is negative br r28 ;goto r28 TestM1: not r15,r15 addi r15,r15,#1 brmi r22,r9 ;goto r22 if r9 is negative br r28 ;goto r28 TestM2: not r15,r15 addi r15,r15,#1 br r28 ;goto r28 Loop2: sub r14,r14,r10 ;r14=r14-r10 brmi r27,r14 ;goto r27 if r14 is negative add r5,r5,r6 ;r5=r5+r6 addi r16,r14,#0 ;r16=r14 br r28 ;goto r28 DoneL2: brmi r20,r15 ;goto r20 if r15 is negative brmi r19,r8 ;goto r19 if r8 is negative add r5,r5,r2 ;r5=r5+r2 br r30 ;goto r30 TestD1: not r5,r5 addi r5,r5,#1 brmi r19,r8 ;goto r19 if r8 is negative add r5,r5,r2 ;r5=r5+r2 br r30 ;goto r30 TestD2: not r5,r5 addi r5,r5,#1 add r5,r5,r2 ;r5=r5+r2 br r30 ;goto r30 Done: st r5,Y3 ;store r5 in Y3 st r16,Y3R ;sotre r16 in Y3R stop ;stop .org 32772 ;0x8004 X1: .dw1 Y1: .dw1 X2: .dw1 Y2: .dw1 X3: .dw1 Y3: .dw1 Y3R: .dw1