100H: /* CP/M CALL AND NUMBER OUTPUT ROUTINE */ BDOS: PROCEDURE (FN, ARG); DECLARE FN BYTE, ARG ADDRESS; GO TO 5; END BDOS; PRINT: PROCEDURE (STR); DECLARE STR ADDRESS; CALL BDOS(9, STR); END PRINT; PRINT$NUMBER: PROCEDURE (N); DECLARE S (8) BYTE INITIAL ('.....',13,10,'$'); 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 NUMBERS UNTIL ADDRESS VARIABLE OVERFLOWS */ DECLARE N ADDRESS INITIAL (1); DO WHILE N <> 0; CALL PRINT$NUMBER(N); N = N + 1; END; CALL BDOS(0,0); EOF