TITLE "babbage.a difference engine" ; givens Y0 = 0 ; initial value of y Delta = 6 ; first difference Delta2 = -4 ; second difference Delta3 = 1 ; third difference USE "hawk.macs" USE "monitor.h" S START EXT UNUSED START: LIL R2, UNUSED LIL R1, DSPINI JSRS R1, R1 ; In all code that follows ; R8 is Y ; R9 is D, the first difference ; R10 is D2, the second difference ; R11 is i, the the loop iterator LIL R8, Y0 ; y = y0 LIL R9, Delta ; d = Delta LIL R10, Delta2 ; d2 = Delta2 LIL R11,1 ; i = 1 LOOP: ; while (i < 10) { CMPI R11,10 BGE LOOPX MOVE R3, R8 ; -- param y LIS R4, 5 ; -- param 5 LIL R1, DSPDEC JSRS R1, R1 ; call dspdec(y, 5) ADD R8, R8, R9 ; y = y + d ADD R9, R9, R10 ; d = d + d2 ADDI R10, R10, Delta3; d2 = d2 + Delta3 ADDSI R11,1 ; i = i + 1 BR LOOP ; } LOOPX: LIL R1,EXIT JSRS R1,R1 END