35 lines
762 B
Text
35 lines
762 B
Text
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 (7) 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;
|
|
|
|
DECLARE Q (1001) ADDRESS;
|
|
DECLARE N ADDRESS;
|
|
|
|
Q(1)=1;
|
|
Q(2)=1;
|
|
DO N=3 TO LAST(Q);
|
|
Q(N) = Q(N-Q(N-1)) + Q(N-Q(N-2));
|
|
END;
|
|
|
|
CALL PRINT(.'THE FIRST 10 TERMS ARE: $');
|
|
DO N=1 TO 10;
|
|
CALL PRINT$NUMBER(Q(N));
|
|
END;
|
|
|
|
CALL PRINT(.(13,10,'THE 1000TH TERM IS: $'));
|
|
CALL PRINT$NUMBER(Q(1000));
|
|
CALL EXIT;
|
|
EOF
|