mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-22 07:54:25 +00:00
71 lines
5.5 KiB
Plaintext
71 lines
5.5 KiB
Plaintext
/*
|
|
SAMPLE PL/M PROGRAM
|
|
|
|
THIS PROGRAM CALCULATES AND PRINTS OUT THE SQUARE ROOTS OF
|
|
ALL INTEGERS BETWEEN 1 AND 1000.
|
|
*/
|
|
DECLARE CR LITERALLY '0DH', LF LITERALLY '0AH', TRUE LITERALLY '1',
|
|
FALSE LITERALLY '0';
|
|
|
|
10H: /* IS THE ORIGIN OF THIS PROGRAM */
|
|
|
|
SQUARE$ROOT: PROCEDURE(X) BYTE;
|
|
DECLARE (X,Y,Z) ADDRESS;
|
|
Y=X; Z=SHR(X+1,1);
|
|
DO WHILE Y<>Z;
|
|
Y=Z; Z=SHR(X/Y + Y + 1, 1);
|
|
END;
|
|
RETURN Y;
|
|
END SQUAREROOT;
|
|
|
|
/* PRINT USING INTELLEC MONITOR */
|
|
PRINT$CHAR: PROCEDURE (CHAR);
|
|
DECLARE CHAR BYTE;
|
|
DECLARE IOCO LITERALLY '3809H';
|
|
GO TO IOCO;
|
|
END PRINT$CHAR;
|
|
|
|
PRINT$STRING: PROCEDURE(NAME,LENGTH);
|
|
DECLARE NAME ADDRESS,
|
|
(LENGTH,I,CHAR BASED NAME) BYTE;
|
|
DO I = 0 TO LENGTH-1;
|
|
CALL PRINT$CHAR(CHAR(I));
|
|
END;
|
|
END PRINT$STRING;
|
|
|
|
PRINT$NUMBER: PROCEDURE(NUMBER,BASE,CHARS,ZERO$SUPPRESS);
|
|
DECLARE NUMBER ADDRESS, (BASE,CHARS,ZERO$SUPPRESS,I,J) BYTE;
|
|
DECLARE TEMP(16) BYTE;
|
|
IF CHARS > LAST(TEMP) THEN CHARS = LAST(TEMP);
|
|
DO I = 1 TO CHARS;
|
|
J=NUMBER MOD BASE + '0';
|
|
IF J > '9' THEN J = J + 7;
|
|
IF ZERO$SUPPRESS AND I <> 1 AND NUMBER = 0 THEN
|
|
J = ' ';
|
|
TEMP(LENGTH(TEMP)-I) = J;
|
|
NUMBER = NUMBER / BASE;
|
|
END;
|
|
CALL PRINT$STRING(.TEMP + LENGTH(TEMP) - CHARS,CHARS);
|
|
END PRINT$NUMBER;
|
|
|
|
DECLARE I ADDRESS,
|
|
CRLF LITERALLY 'CR,LF',
|
|
HEADING DATA (CRLF,LF,LF,
|
|
' TABLE OF SQUARE ROOTS', CRLF,LF,
|
|
' VALUE ROOT VALUE ROOT VALUE ROOT VALUE ROOT VALUE ROOT',
|
|
CRLF,LF);
|
|
|
|
/* SILENCE TTY AND PRINT COMPUTED VALUES */
|
|
DO I = 1 TO 1000;
|
|
IF I MOD 5 = 1 THEN
|
|
DO; IF I MOD 250 = 1 THEN
|
|
CALL PRINT$STRING(.HEADING,LENGTH(HEADING));
|
|
ELSE
|
|
CALL PRINT$STRING(.(CR,LF),2);
|
|
END;
|
|
CALL PRINT$NUMBER(I,10,6,TRUE /* TRUE SUPPRESSES LEADING ZEROES */);
|
|
CALL PRINT$NUMBER(SQUARE$ROOT(I), 10,6, TRUE);
|
|
END;
|
|
|
|
EOF
|