46 lines
924 B
Plaintext
46 lines
924 B
Plaintext
100H:
|
|
|
|
/* DECLARE OUTPUT IN TERMS OF CP/M -
|
|
PL/M DOES NOT COME WITH ANY STANDARD LIBRARY */
|
|
BDOS: PROCEDURE(FUNC, ARG);
|
|
DECLARE FUNC BYTE, ARG ADDRESS;
|
|
GO TO 5;
|
|
END BDOS;
|
|
|
|
PUT$STRING: PROCEDURE(STR);
|
|
DECLARE STR ADDRESS;
|
|
CALL BDOS(9, STR);
|
|
CALL BDOS(9, .(13,10,'$'));
|
|
END PUT$STRING;
|
|
|
|
/* PRINT A NUMBER */
|
|
PUT$NUMBER: PROCEDURE(N);
|
|
DECLARE S (5) BYTE INITIAL ('...$');
|
|
DECLARE P ADDRESS;
|
|
DECLARE (N, D, C BASED P) BYTE;
|
|
P = .S(3);
|
|
DIGIT:
|
|
P = P-1;
|
|
C = (N MOD 10) + '0';
|
|
N = N/10;
|
|
IF N > 0 THEN GO TO DIGIT;
|
|
CALL PUT$STRING(P);
|
|
END PUT$NUMBER;
|
|
|
|
/* FIZZBUZZ */
|
|
DECLARE N BYTE;
|
|
DO N = 1 TO 100;
|
|
IF N MOD 15 = 0 THEN
|
|
CALL PUT$STRING(.'FIZZBUZZ$');
|
|
ELSE IF N MOD 5 = 0 THEN
|
|
CALL PUT$STRING(.'BUZZ$');
|
|
ELSE IF N MOD 3 = 0 THEN
|
|
CALL PUT$STRING(.'FIZZ$');
|
|
ELSE
|
|
CALL PUT$NUMBER(N);
|
|
END;
|
|
|
|
/* EXIT TO CP/M */
|
|
CALL BDOS(0,0);
|
|
EOF
|