PL/M-80 COMPILER 6/1/82 9:16 PM PAGE 1 ISIS-II PL/M-80 V3.1 COMPILATION OF MODULE EDITTOCREDIT OBJECT MODULE PLACED IN :F1:EDCRED.OBJ COMPILER INVOKED BY: PLM80 :F1:EDCRED.SRC DEBUG TITLE('6/1/82 9:16 PM') 1 EDIT$TO$CREDIT: DO; /****************************************************************************** * THIS PROGRAM READS IN A FILE, THEN MASKS OUT BIT 7, AND WRITES IT BACK * * TO THE DISK FROM WHICH IT WAS WRITTEN, BUT WITH THE EXTENSION .TMP * ******************************************************************************/ 2 1 OPEN: PROCEDURE (AFTN$PTR,FILE,ACCESS,MODE,STATUS) EXTERNAL; 3 2 DECLARE (AFTN$PTR,FILE,ACCESS,MODE,STATUS) ADDRESS; 4 2 END OPEN; 5 1 ERROR: PROCEDURE (ERRNUM) EXTERNAL; 6 2 DECLARE (ERRNUM) ADDRESS; 7 2 END ERROR; 8 1 SEEK: PROCEDURE (AFTN,MODE,BLOCKNO,BYTENO,STATUS) EXTERNAL; 9 2 DECLARE (AFTN,MODE,BLOCKNO,BYTENO,STATUS) ADDRESS; 10 2 END SEEK; 11 1 READ: PROCEDURE (AFTN,BUFFER,COUNT,ACTUAL,STATUS) EXTERNAL; 12 2 DECLARE (AFTN,BUFFER,COUNT,ACTUAL,STATUS) ADDRESS; 13 2 END READ; 14 1 WRITE: PROCEDURE (AFTN,BUFFER,COUNT,STATUS) EXTERNAL; 15 2 DECLARE (AFTN,BUFFER,COUNT,STATUS) ADDRESS; 16 2 END WRITE; 17 1 DELETE: PROCEDURE (FILE, STATUS) EXTERNAL; 18 2 DECLARE (FILE, STATUS) ADDRESS; 19 2 END DELETE; 20 1 RENAME: PROCEDURE (OLD$FILE, NEW$FILE, STATUS) EXTERNAL; 21 2 DECLARE (OLD$FILE, NEW$FILE, STATUS) ADDRESS; 22 2 END RENAME; 23 1 CLOSE: PROCEDURE (AFTN,STATUS) EXTERNAL; 24 2 DECLARE (AFTN,STATUS) ADDRESS; 25 2 END CLOSE; 26 1 EXIT: PROCEDURE EXTERNAL; 27 2 END EXIT; 28 1 DECLARE BLOCK$LEN LITERALLY '4096'; 29 1 DECLARE DONE BYTE; 30 1 DECLARE AFT$IN ADDRESS; 31 1 DECLARE AFT$OUT ADDRESS; 32 1 DECLARE CRED$FILE(15) BYTE DATA (':F1:CRED.SRC '); 33 1 DECLARE STATUS ADDRESS; 34 1 DECLARE COUNT ADDRESS; 35 1 DECLARE IN$BUF(BLOCK$LEN) BYTE; PL/M-80 COMPILER 6/1/82 9:16 PM PAGE 2 36 1 DECLARE XFER$CNT ADDRESS; 37 1 DECLARE BLOCK$NO ADDRESS DATA(0000H); 38 1 DECLARE BYTE$NO ADDRESS DATA(0000H); 39 1 DECLARE NAME$BUFFER(128) ADDRESS; 40 1 DECLARE NAME$COUNT ADDRESS; /* GET FILE NAME */ /* OPEN FILE FOR INPUT */ /* CHECK FOR ERROR */ /* OPEN TEMP FILE FOR OUTPUT */ /* CHECK FOR ERROR */ /* SET DONE=0 */ /* MOVE MARKER TO BEGINNING OF FILE */ /* CHECK FOR ERROR */ /* READ IN DATA --MORE ON THIS LATER */ /* AND DATA WITH 7FH */ /* WRITE DATA TO OUTPUT FILE */ /* SEE IF EOF--IF NOT, GO BACK 3 */ /* CLOSE FILE USED FOR INPUT */ /* CHECK FOR ERROR */ /* CLOSE FILE USED FOR OUTPUT */ /* CHECK FOR ERROR */ /* DELETE EDIT FILE */ /* RENAME CREDIT FILE TO EDIT FILE */ /* EXIT TO ISIS */ 41 1 CALL READ(1,.NAME$BUFFER,128,.NAME$COUNT,.STATUS); 42 1 IF STATUS <> 0 THEN CALL ERROR(STATUS); 44 1 CALL OPEN(.AFT$IN,.NAME$BUFFER,1,0,.STATUS); 45 1 IF STATUS <> 0 THEN CALL ERROR(STATUS); 47 1 CALL OPEN(.AFT$OUT,.CRED$FILE,2,0,.STATUS); 48 1 IF STATUS <> 0 THEN CALL ERROR(STATUS); 50 1 DONE=0; 51 1 CALL SEEK(AFT$IN,2,.BLOCK$NO,.BYTE$NO,.STATUS); 52 1 IF STATUS <> 0 THEN CALL ERROR(STATUS); 54 1 DO WHILE NOT DONE; 55 2 CALL READ(AFT$IN,.IN$BUF,BLOCK$LEN,.XFER$CNT,.STATUS); 56 2 IF STATUS <> 0 THEN CALL ERROR(STATUS); 58 2 DO COUNT=0 TO BLOCK$LEN-1; 59 3 INBUF(COUNT)=INBUF(COUNT) AND 7FH; 60 3 END; 61 2 CALL WRITE(AFT$OUT,.INBUF,XFER$CNT,.STATUS); 62 2 IF STATUS <> 0 THEN CALL ERROR(STATUS); 64 2 IF XFER$CNT <> BLOCK$LEN THEN DONE=1; 66 2 END; 67 1 CALL CLOSE(AFT$IN,.STATUS); PL/M-80 COMPILER 6/1/82 9:16 PM PAGE 3 68 1 IF STATUS <> 0 THEN CALL ERROR(STATUS); 70 1 CALL CLOSE(AFT$OUT,.STATUS); 71 1 IF STATUS <> 0 THEN CALL ERROR(STATUS); 73 1 CALL DELETE(.NAME$BUFFER,.STATUS); 74 1 IF STATUS <> 0 THEN CALL ERROR(STATUS); 76 1 CALL RENAME(.CRED$FILE,.NAME$BUFFER,.STATUS); 77 1 IF STATUS <> 0 THEN CALL ERROR(STATUS); 79 1 CALL EXIT; 80 1 END EDIT$TO$CREDIT; MODULE INFORMATION: CODE AREA SIZE = 01D6H 470D VARIABLE AREA SIZE = 110DH 4365D MAXIMUM STACK SIZE = 0008H 8D 122 LINES READ 0 PROGRAM ERROR(S) END OF PL/M-80 COMPILATION