37 lines
652 B
Text
37 lines
652 B
Text
100H:
|
|
|
|
DECLARE ORDER LITERALLY '4';
|
|
|
|
/* CP/M BDOS CALL */
|
|
BDOS: PROCEDURE (FN, ARG);
|
|
DECLARE FN BYTE, ARG ADDRESS;
|
|
GO TO 5;
|
|
END BDOS;
|
|
|
|
PUT$CHAR: PROCEDURE (CHAR);
|
|
DECLARE CHAR BYTE;
|
|
CALL BDOS(2, CHAR);
|
|
END PUT$CHAR;
|
|
|
|
/* PRINT SIERPINSKI TRIANGLE */
|
|
DECLARE (X, Y, SIZE) BYTE;
|
|
SIZE = SHL(1, ORDER);
|
|
|
|
Y = SIZE - 1;
|
|
DO WHILE Y <> -1;
|
|
DO X = 0 TO Y;
|
|
CALL PUT$CHAR(' ');
|
|
END;
|
|
DO X = 0 TO SIZE-Y-1;
|
|
IF (X AND Y) = 0
|
|
THEN CALL PUT$CHAR('*');
|
|
ELSE CALL PUT$CHAR(' ');
|
|
CALL PUT$CHAR(' ');
|
|
END;
|
|
Y = Y - 1;
|
|
CALL PUT$CHAR(13);
|
|
CALL PUT$CHAR(10);
|
|
END;
|
|
|
|
CALL BDOS(0,0);
|
|
EOF
|