PL/M-80 COMPILER 4/23/79 PAGE 1 ISIS-II PL/M-80 V3.1 COMPILATION OF MODULE TYPE OBJECT MODULE PLACED IN :F1:TYPE.OBJ COMPILER INVOKED BY: PLM80 :F1:TYPE.PLM DEBUG DATE(4/23/79) 1 TYPE: DO; $INCLUDE (:F1:COMMON.LIT) 2 1 = DECLARE LIT LITERALLY 'LITERALLY'; 3 1 = DECLARE DECL LIT 'DECLARE'; 4 1 = DECL TRUE LIT '0FFH', = FALSE LIT '00H', = BOOLEAN LIT 'BYTE', = FOREVER LIT 'WHILE 1'; = = = /* SPECIAL ASCII CHARACTERS */ = 5 1 = DECL = NULL LIT '00H', = CNTRL$C LIT '03H', = CNTRL$E LIT '05H', = BELL LIT '07H', = BS LIT '08H', = TAB LIT '09H', = LF LIT '0AH', = VT LIT '0BH', = FF LIT '0CH', = CR LIT '0DH', = CNTRL$P LIT '010H', = CNTRL$Q LIT '011H', = CNTRL$R LIT '012H', = CNTRL$S LIT '013H', = CNTRL$X LIT '018H', = CNTRL$Z LIT '01AH', = ESC LIT '01BH', = SPACE LIT '020H', = EXCLM$PT LIT '021H', = QUOTE LIT '022H', = HASH LIT '023H', = PRCNT LIT '025H', = AMPRSAND LIT '026H', = DASH LIT '02DH', = LS$THAN LIT '03CH', = GR$THAN LIT '03EH', = QMARK LIT '03FH', = LFT$BRK LIT '05BH', = RT$BRK LIT '05DH', = UP$ARW LIT '05EH', = LCA LIT '061H', = LCZ LIT '07AH', = ALT$MOD LIT '07DH', = RUBOUT LIT '07FH'; = $INCLUDE (:F1:ISS.COM) PL/M-80 COMPILER 4/23/79 PAGE 2 6 1 = OPEN: PROCEDURE (AFTPTR,FILE,ACCESS,MODE,STATUS) EXTERNAL; 7 2 = DECL (AFTPTR,FILE,ACCESS,MODE,STATUS) ADDRESS; 8 2 = END OPEN; = 9 1 = CLOSE: PROCEDURE (AFT,STATUS) EXTERNAL; 10 2 = DECL (AFT,STATUS) ADDRESS; 11 2 = END CLOSE; = 12 1 = DELETE: PROCEDURE (FILE,STATUS) EXTERNAL; 13 2 = DECL (FILE,STATUS) ADDRESS; 14 2 = END DELETE; = 15 1 = READ: PROCEDURE (AFT,BUFFER,COUNT,ACTUAL,STATUS) EXTERNAL; 16 2 = DECL (AFT,BUFFER,COUNT,ACTUAL,STATUS) ADDRESS; 17 2 = END READ; = 18 1 = WRITE: PROCEDURE (AFT,BUFFER,COUNT,STATUS) EXTERNAL; 19 2 = DECL (AFT,BUFFER,COUNT,STATUS) ADDRESS; 20 2 = END WRITE; = 21 1 = SEEK: PROCEDURE (AFT,BASE,BLOCKNUM,BYTENUM,STATUS) EXTERNAL; 22 2 = DECL (AFT,BASE,BLOCKNUM,BYTENUM,STATUS) ADDRESS; 23 2 = END SEEK; = 24 1 = LOAD: PROCEDURE (FILE,BIAS,RETSW,ENTRY,STATUS) EXTERNAL; 25 2 = DECL (FILE,BIAS,RETSW,ENTRY,STATUS) ADDRESS; 26 2 = END LOAD; = 27 1 = RENAME: PROCEDURE (OLDFILE,NEWFILE,STATUS) EXTERNAL; 28 2 = DECL (OLDFILE,NEWFILE,STATUS) ADDRESS; 29 2 = END RENAME; = 30 1 = CONSOL: PROCEDURE (INFILE,OUTFILE,STATUS) EXTERNAL; 31 2 = DECL (INFILE,OUTFILE,STATUS) ADDRESS; 32 2 = END CONSOL; = 33 1 = EXIT: PROCEDURE EXTERNAL; 34 2 = END EXIT; = 35 1 = ATTRIB: PROCEDURE (FILE,SWID,VALUE,STATUS) EXTERNAL; 36 2 = DECL (FILE,SWID,VALUE,STATUS) ADDRESS; 37 2 = END ATTRIB; = 38 1 = RESCAN: PROCEDURE (AFT,STATUS) EXTERNAL; 39 2 = DECL (AFT,STATUS) ADDRESS; 40 2 = END RESCAN; = 41 1 = ERROR: PROCEDURE (ERRNUM) EXTERNAL; 42 2 = DECL (ERRNUM) ADDRESS; 43 2 = END ERROR; = 44 1 = WHOCON: PROCEDURE (AFT,BUFFER) EXTERNAL; 45 2 = DECL (AFT,BUFFER) ADDRESS; 46 2 = END WHOCON; = = 47 1 = DECL READ$AC LIT '01H', PL/M-80 COMPILER 4/23/79 PAGE 3 = WRITE$AC LIT '02H', = UPDATE$AC LIT '03H'; = 48 1 = DECL CI$AFT LIT '01H', = CO$AFT LIT '0H', = LN$EDT$CO LIT '0F0H'; = 49 1 DECL ACTUAL ADDRESS; 50 1 DECL AFTCI ADDRESS; 51 1 DECL AFTCO ADDRESS; 52 1 DECL AFTIN ADDRESS; 53 1 DECL AFTOUT ADDRESS; 54 1 DECL CHRCOUNT BYTE; 55 1 DECL CONSL$INP(*) BYTE DATA(':CI: '); 56 1 DECL ERMSG0(*) BYTE DATA('ILLEGAL SWITCH',0DH,0AH); 57 1 DECL I ADDRESS; 58 1 DECL KEYBUFFER(122) BYTE; 59 1 DECL LPT(*) BYTE DATA(':LP: '); 60 1 DECL MAXSIZE LIT '2048'; 61 1 DECL PRNTBUFFER(MAXSIZE) BYTE; 62 1 DECL SPCBUFFER(*) BYTE DATA (' '); 63 1 DECL STATUS ADDRESS; 64 1 DECL TCNT BYTE; 65 1 DEBLANK: PROCEDURE; 66 2 DO WHILE KEYBUFFER(I) = SPACE; 67 3 I = I + 1; 68 3 END; 69 2 RETURN; 70 2 END DEBLANK; 71 1 PRNTOUT: PROCEDURE; 72 2 CALL OPEN(.AFTIN,.KEYBUFFER(I),READ$AC,0,.STATUS); 73 2 IF STATUS > 0 THEN 74 2 DO; 75 3 CALL ERROR(STATUS); 76 3 CALL EXIT; 77 3 END; 78 2 DO FOREVER; 79 3 CALL READ (AFTIN,.PRNTBUFFER,MAXSIZE,.ACTUAL,.STATUS); 80 3 IF STATUS > 0 THEN CALL ERROR(STATUS); 82 3 IF ACTUAL = 0 THEN RETURN; 84 3 DO I = 0 TO (ACTUAL - 1); 85 4 IF PRNTBUFFER(I) = TAB THEN 86 4 DO; 87 5 TCNT = (8 - (CHRCOUNT MOD 8)); PL/M-80 COMPILER 4/23/79 PAGE 4 88 5 CALL WRITE(AFTOUT,.SPCBUFFER,TCNT,.STATUS); 89 5 IF STATUS > 0 THEN CALL ERROR(STATUS); 91 5 CHRCOUNT = CHRCOUNT + TCNT; 92 5 END; ELSE 93 4 DO; 94 5 CALL WRITE(AFTOUT,.PRNTBUFFER(I),1,.STATUS); 95 5 IF STATUS > 0 THEN CALL ERROR(STATUS); 97 5 IF PRNTBUFFER(I) >= SPACE THEN CHRCOUNT = CHRCOUNT + 1; 99 5 IF PRNTBUFFER(I) = CR THEN CHRCOUNT = 0; 101 5 IF PRNTBUFFER(I) = BS THEN CHRCOUNT = CHRCOUNT - 1; 103 5 END; 104 4 END; 105 3 END; 106 2 END PRNTOUT; /* START OF MAIN PROGRAM */ 107 1 CALL OPEN (.AFTCI,.CONSL$INP,READ$AC,LN$EDT$CO,.STATUS); 108 1 IF STATUS > 0 THEN 109 1 DO; 110 2 CALL ERROR (STATUS); 111 2 CALL EXIT; 112 2 END; 113 1 CALL READ (AFTCI,.KEYBUFFER,122,.ACTUAL,.STATUS); 114 1 IF STATUS > 0 THEN 115 1 DO; 116 2 CALL ERROR(STATUS); 117 2 CALL EXIT; 118 2 END; 119 1 IF KEYBUFFER(0) = '/' THEN 120 1 DO; 121 2 IF KEYBUFFER(1) <> 'L' THEN 122 2 DO; 123 3 CALL WRITE(CO$AFT,.ERMSG0,LENGTH(ERMSG0),.STATUS); 124 3 IF STATUS > 0 THEN CALL ERROR(STATUS); 126 3 CALL EXIT; 127 3 END; 128 2 I = 2; 129 2 CALL DEBLANK; 130 2 CALL OPEN(.AFT$OUT,.LPT,WRITE$AC,0,.STATUS); 131 2 IF STATUS > 0 THEN 132 2 DO; 133 3 CALL ERROR(STATUS); 134 3 CALL EXIT; 135 3 END; 136 2 END; ELSE PL/M-80 COMPILER 4/23/79 PAGE 5 137 1 DO; 138 2 I = 0; 139 2 CALL DEBLANK; 140 2 AFT$OUT = CO$AFT; 141 2 END; 142 1 CALL PRNT$OUT; 143 1 CALL EXIT; 144 1 END; EOF MODULE INFORMATION: CODE AREA SIZE = 0266H 614D VARIABLE AREA SIZE = 088AH 2186D MAXIMUM STACK SIZE = 000AH 10D 233 LINES READ 0 PROGRAM ERROR(S) END OF PL/M-80 COMPILATION