100H: /* CP/M BDOS CALL */ BDOS: PROCEDURE (FN, ARG); DECLARE FN BYTE, ARG ADDRESS; GO TO 5; END BDOS; /* PRINT STRING */ PRINT: PROCEDURE (STRING); DECLARE STRING ADDRESS; CALL BDOS(9, STRING); END PRINT; /* PRINT BINARY NUMBER */ PRINT$BINARY: PROCEDURE (N); DECLARE S (19) BYTE INITIAL ('................',13,10,'$'); DECLARE (N, P) ADDRESS, C BASED P BYTE; P = .S(16); BIT: P = P - 1; C = (N AND 1) + '0'; IF (N := SHR(N,1)) <> 0 THEN GO TO BIT; CALL PRINT(P); END PRINT$BINARY; /* EXAMPLES FROM TASK */ DECLARE TEST (3) ADDRESS INITIAL (5, 50, 9000); DECLARE I BYTE; DO I = 0 TO LAST(TEST); CALL PRINT$BINARY(TEST(I)); END; CALL BDOS(0,0); EOF