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; PRINT$SLICE: PROCEDURE (LIST, N); DECLARE (I, N, LIST, L BASED LIST) ADDRESS; DO I=0 TO N-1; CALL PRINT$NUMBER(L(I)); END; CALL PRINT(.(13,10,'$')); END PRINT$SLICE; DECLARE ECK (1000) ADDRESS; DECLARE (I, J) ADDRESS; ECK(0) = 0; DO I=0 TO LAST(ECK)-1; J = I - 1; DO WHILE J <> 0FFFFH; /* WHAT IS SIGNED MATH */ IF ECK(I) = ECK(J) THEN DO; ECK(I+1) = I-J; GO TO NEXT; END; J = J - 1; END; ECK(I+1) = 0; NEXT: END; CALL PRINT$SLICE(.ECK(0), 10); CALL PRINT$SLICE(.ECK(990), 10); CALL EXIT; EOF