100H: BDOS: PROCEDURE (FN, ARG); DECLARE FN BYTE, ARG ADDRESS; GO TO 5; END BDOS; EXIT: PROCEDURE; CALL BDOS(0,0); END EXIT; PRINT: PROCEDURE (S); DECLARE S ADDRESS; CALL BDOS(9,S); END PRINT; PRINT$NUMBER: PROCEDURE (N); DECLARE S (6) BYTE INITIAL ('.....$'); DECLARE (N, P) ADDRESS, C BASED P BYTE; P = .S(5); DIGIT: P = P - 1; C = N MOD 10 + '0'; N = N / 10; IF N > 0 THEN GO TO DIGIT; CALL PRINT(P); END PRINT$NUMBER; FIBONACCI: PROCEDURE (N) ADDRESS; DECLARE (N, A, B, C, I) ADDRESS; IF N<=1 THEN RETURN N; A = 0; B = 1; DO I=2 TO N; C = A; A = B; B = A + C; END; RETURN B; END FIBONACCI; DECLARE I ADDRESS; DO I=0 TO 20; CALL PRINT$NUMBER(FIBONACCI(I)); CALL PRINT(.' $'); END; CALL EXIT; EOF