home *** CD-ROM | disk | FTP | other *** search
- 8080 PLM1 VERS 2.0
-
- 00001 1 /*
- 00002 1 SAMPLE PL/M PROGRAM
- 00003 1
- 00004 1 THIS PROGRAM CALCULATES AND PRINTS OUT THE SQUARE ROOTS OF
- 00005 1 ALL INTEGERS BETWEEN 1 AND 1000.
- 00006 1 */
- 00007 1 DECLARE CR LITERALLY '0DH', LF LITERALLY '0AH', TRUE LITERALLY '1',
- 00008 1 FALSE LITERALLY '0';
- 00009 1
- 00010 1 10H: /* IS THE ORIGIN OF THIS PROGRAM */
- 00011 1
- 00012 1 SQUARE$ROOT: PROCEDURE(X) BYTE;
- 00013 2 DECLARE (X,Y,Z) ADDRESS;
- 00014 2 Y=X; Z=SHR(X+1,1);
- 00015 2 DO WHILE Y<>Z;
- 00016 2 Y=Z; Z=SHR(X/Y + Y + 1, 1);
- 00017 3 END;
- 00018 2 RETURN Y;
- 00019 2 END SQUAREROOT;
- 00020 1
- 00021 1 /* PRINT USING INTELLEC MONITOR */
- 00022 1 PRINT$CHAR: PROCEDURE (CHAR);
- 00023 2 DECLARE CHAR BYTE;
- 00024 2 DECLARE IOCO LITERALLY '3809H';
- 00025 2 GO TO IOCO;
- 00026 2 END PRINT$CHAR;
- 00027 1
- 00028 1 PRINT$STRING: PROCEDURE(NAME,LENGTH);
- 00029 2 DECLARE NAME ADDRESS,
- 00030 2 (LENGTH,I,CHAR BASED NAME) BYTE;
- 00031 2 DO I = 0 TO LENGTH-1;
- 00032 2 CALL PRINT$CHAR(CHAR(I));
- 00033 3 END;
- 00034 2 END PRINT$STRING;
- 00035 1
- 00036 1 PRINT$NUMBER: PROCEDURE(NUMBER,BASE,CHARS,ZERO$SUPPRESS);
- 00037 2 DECLARE NUMBER ADDRESS, (BASE,CHARS,ZERO$SUPPRESS,I,J) BYTE;
- 00038 2 DECLARE TEMP(16) BYTE;
- 00039 2 IF CHARS > LAST(TEMP) THEN CHARS = LAST(TEMP);
- 00040 2 DO I = 1 TO CHARS;
- 00041 2 J=NUMBER MOD BASE + '0';
- 00042 3 IF J > '9' THEN J = J + 7;
- 00043 3 IF ZERO$SUPPRESS AND I <> 1 AND NUMBER = 0 THEN
- 00044 3 J = ' ';
- 00045 3 TEMP(LENGTH(TEMP)-I) = J;
- 00046 3 NUMBER = NUMBER / BASE;
- 00047 3 END;
- 00048 2 CALL PRINT$STRING(.TEMP + LENGTH(TEMP) - CHARS,CHARS);
- 00049 2 END PRINT$NUMBER;
- 00050 1
- 00051 1 DECLARE I ADDRESS,
- 00052 1 CRLF LITERALLY 'CR,LF',
- 00053 1 HEADING DATA (CRLF,LF,LF,
- 00054 1 ' TABLE OF SQUARE ROOTS', CRLF,LF,
- 00055 1 ' VALUE ROOT VALUE ROOT VALUE ROOT VALUE ROOT VALUE ROOT',
- 00056 1 CRLF,LF);
- 00057 1
- 00058 1 /* SILENCE TTY AND PRINT COMPUTED VALUES */
- 00059 1 DO I = 1 TO 1000;
- 00060 1 IF I MOD 5 = 1 THEN
- 00061 2 DO; IF I MOD 250 = 1 THEN
- 00062 3 CALL PRINT$STRING(.HEADING,LENGTH(HEADING));
- 00063 3 ELSE
- 00064 3 CALL PRINT$STRING(.(CR,LF),2);
- 00065 3 END;
- 00066 2 CALL PRINT$NUMBER(I,10,6,TRUE /* TRUE SUPPRESSES LEADING ZEROES */);
- 00067 2 CALL PRINT$NUMBER(SQUARE$ROOT(I), 10,6, TRUE);
- 00068 2 END;
- 00069 1
- 00070 1 EOF
- NO PROGRAM ERRORS
-
- 8080 PLM2 VERS 2.0
-
-
- 1=0003H 12=0013H 13=0016H 14=001CH 15=002FH 16=0045H 17=0098H 18=00A1H 19=00A7H 23=00ABH
- 25=00AEH 26=00AFH 29=00B7H 31=00BAH 32=00C5H 33=00D1H 34=00D8H 35=00D9H 37=00DFH 39=00E3H
- 40=00E6H 41=00F6H 42=010AH 43=0117H 44=0134H 45=0138H 46=0148H 47=015CH 48=0168H 49=0181H
- 50=0182H 56=01F5H 59=01FDH 60=020CH 61=0221H 62=0239H 63=0244H 64=0247H 65=0251H 66=025CH
- 67=0267H 68=0281H 69=0290H
- STACK SIZE = 6 BYTES
- MEMORY..........................0300H
- SQUAREROOT......................0016H
- X...............................02DAH
- Y...............................02DCH
- Z...............................02DEH
- PRINTCHAR.......................00A7H
- CHAR............................02E1H
- PRINTSTRING.....................00AFH
- NAME............................02E2H
- LENGTH..........................02E4H
- I...............................02E5H
- PRINTNUMBER.....................00D9H
- NUMBER..........................02E6H
- BASE............................02E9H
- CHARS...........................02EAH
- ZEROSUPPRESS....................02EBH
- I...............................02ECH
- J...............................02EDH
- TEMP............................02EEH
- I...............................02FEH
- HEADING.........................0182H
- 0010H LXI SP DAH 02H JMP F5H 01H LXI H DAH 02H MOV MC INX H MOV MB DCR L MOV CM INR L MOV BM
- 0020H INR L MOV MC INX H MOV MB LHLD DAH 02H INX H XCHG MOV AD ORA A RAR MOV DA MOV AE RAR LXI H
- 0030H DEH 02H MOV MA INX H MOV MD LXI H DCH 02H MOV AM INR L MOV BM INR L SUB M INR L MOV CA MOV AB
- 0040H SBC M ORA C JZ A1H 00H DCR L MOV CM INR L MOV BM MOV LI DCH MOV MC INX H MOV MB LXI H DCH
- 0050H 02H MOV EM INR L MOV DM MOV LI DAH MOV CM INR L MOV BM JMP 89H 00H MOV AD CMA MOV DA MOV AE
- 0060H CMA MOV EA INX D LXI H 00H 00H MOV AI 11H PUSH H DAD D JNC 6EH 00H XTHL POP H PUSH A
- 0070H MOV AC RAL MOV CA MOV AB RAL MOV BA MOV AL RAL MOV LA MOV AH RAL MOV HA POP A DCR A JNZ 68H
- 0080H 00H ORA A MOV AH RAR MOV DA MOV AL RAR MOV EA RET CALL 5CH 00H LHLD DCH 02H DAD B
- 0090H INX H XCHG MOV AD ORA A RAR MOV DA MOV AE RAR LXI H DEH 02H MOV MA INX H MOV MD JMP 35H
- 00A0H 00H MOV LI DCH MOV AM INR L MOV BM RET LXI H E1H 02H MOV MC JMP 09H 38H RET LXI H
- 00B0H E2H 02H MOV MC INX H MOV MB INR L MOV ME INR L MOV MI 00H LXI H E4H 02H MOV CM DCR C MOV AC
- 00C0H INR L SUB M JC D8H 00H MOV CM MOV BI 00H LHLD E2H 02H DAD B MOV AM MOV CA CALL A7H
- 00D0H 00H LXI H E5H 02H INR M JNZ BAH 00H RET LXI H EAH 02H MOV MC INR L MOV ME MOV AI
- 00E0H 0FH DCR L SUB M JNC E8H 00H MOV MI 0FH MOV LI ECH MOV MI 01H LXI H EAH 02H MOV AM
- 00F0H MOV LI ECH SUB M JC 68H 01H LXI H E9H 02H MOV EM MOV DI 00H MOV LI E6H MOV CM INR L
- 0100H MOV BM CALL 5CH 00H LXI B 30H 00H XCHG DAD B XCHG LXI H EDH 02H MOV ME MOV AI 39H
- 0110H SUB M JNC 18H 01H MOV AM ADD I 07H MOV MA DCR L MOV CM DCR C MOV AI FFH JNZ 21H 01H
- 0120H XRA A DCR L ANA M MOV LI E6H MOV CA MOV AM INR L MOV DM SUB I 00H MOV EA MOV AD SBC I 00H ORA E
- 0130H SUB I 01H SBC A ANA C RRC JNC 3CH 01H MOV LI EDH MOV MI 20H MOV AI 10H MOV LI ECH
- 0140H SUB M MOV CA MOV BI 00H MOV LI EEH DAD B XCHG LXI H EDH 02H MOV CM MOV AC STAX D LXI H E9H
- 0150H 02H MOV EM MOV DI 00H MOV LI E6H MOV CM INR L MOV BM CALL 5CH 00H LXI H E6H 02H MOV MC
- 0160H INX H MOV MB MOV LI ECH INR M JNZ ECH 00H LXI B EEH 02H LXI D 10H 00H MOV LC MOV HB
- 0170H DAD D XCHG MOV AE LXI H EAH 02H SUB M MOV EA MOV AD SBC I 00H MOV CE MOV BA MOV EM CALL AFH
- 0180H 00H RET
- 0182H 0DH 0AH 0AH 0AH 20H 20H 20H 20H 20H 20H 20H 20H 20H 20H 20H 20H 20H 20H 20H 20H 20H 20H 20H 20H 20H 20H 20H 20H
- 019EH 54H 41H 42H 4CH 45H 20H 4FH 46H 20H 53H 51H 55H 41H 52H 45H 20H 52H 4FH 4FH 54H 53H 0DH 0AH 0AH 20H 56H 41H 4CH
- 01BAH 55H 45H 20H 20H 52H 4FH 4FH 54H 20H 56H 41H 4CH 55H 45H 20H 20H 52H 4FH 4FH 54H 20H 56H 41H 4CH 55H 45H 20H 20H
- 01D6H 52H 4FH 4FH 54H 20H 56H 41H 4CH 55H 45H 20H 20H 52H 4FH 4FH 54H 20H 56H 41H 4CH 55H 45H 20H 20H 52H 4FH 4FH 54H
- 01F2H 0DH 0AH 0AH
- 01F5H LXI H FEH 02H MOV MI 01H INX H MOV MI 00H MOV AI E8H MOV BI 03H LXI H FEH 02H SUB M
- 0205H INR L MOV CA MOV AB SBC M JC 90H 02H MOV EI 05H MOV DI 00H LXI H FEH 02H MOV CM INR L
- 0215H MOV BM CALL 5CH 00H MOV AE SUB I 01H MOV EA MOV AD SBC I 00H ORA E JNZ 51H 02H MOV EI
- 0225H FAH MOV DI 00H LXI H FEH 02H MOV CM INR L MOV BM CALL 5CH 00H MOV AE SUB I 01H MOV EA
- 0235H MOV AD SBC I 00H ORA E JNZ 49H 02H LXI B 82H 01H MOV EI 73H CALL AFH 00H JMP
- 0245H 51H 02H
- 0247H 0DH 0AH
- 0249H LXI B 47H 02H MOV EI 02H CALL AFH 00H LXI H FEH 02H MOV CM INR L MOV BM MOV LI E6H
- 0259H MOV MC INX H MOV MB MOV LI E9H MOV MI 0AH MOV CI 06H MOV EI 01H CALL D9H 00H MOV LI FEH
- 0269H MOV CM INR L MOV BM CALL 16H 00H LXI H E6H 02H MOV MA INX H MOV MI 00H MOV LI E9H MOV MI
- 0279H 0AH MOV CI 06H MOV EI 01H CALL D9H 00H MOV LI FEH MOV CM INR L MOV BM LXI H 01H 00H
- 0289H DAD B SHLD FEH 02H JMP FDH 01H EI HLT
- NO PROGRAM ERRORS
-
-