37 lines
703 B
Plaintext
37 lines
703 B
Plaintext
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
|