TITLE "mp2.a by Douglas Jones" USE "hawk.h" USE "stdio.h" S MAIN INT MAIN ; register usage in main program: ; R8: count -- controls loop iteration ; R10: trib -- tribonacci( count ) ; R11: trib1 -- tribonacci( count + 1 ) ; R12: trib2 -- tribonacci( count + 2 ) ; activation record structure ARSIZE = 4 MAIN: STORES R1,R2 ADDSI R2,ARSIZE ; -- receiving sequence LIS R8,0 ; count = 0 LIS R10,0 ; trib = 0 LIS R11,0 ; trib1 = 0 LIS R12,1 ; trib2 = 1 LOOP: ; for (;;) { -- loop exit is in mid loop MOVE R3,R10 ; -- parameter trib LIS R4,1 ; -- parameter width LIL R1,PUTDECU JSRS R1,R1 ; putdecu( trib, 1 ) ADDSI R8,1 ; count = count + 1 CMPI R8,15 BGE QUIT ; if (count >= 15) break; LIS R3,',' ; -- parameter LIL R1,PUTCHAR JSRS R1,R1 ; putchar( ',' ) ADD R3,R10,R11 ADD R3,R3,R12 ; temp = trib + trib1 + trib2 MOVE R10,R11 ; trib = trib1 MOVE R11,R12 ; trib1 = trib2 MOVE R12,R3 ; trib2 = temp BR LOOP QUIT: ; } ADDSI R2,-ARSIZE LOADS PC,R2 ; return END