;******************************************************************************* ; F I L E F I X . M A C ;******************************************************************************* .TITLE FILEFIX .IDENT /FFX1.0/ .ENABL LC .NLIST MEB,BEX .SBTTL AUTHOR'S CREDITS ; PROGRAMMER: RANDALL ADAMS ; THE JACKSON LABORATORY COMPUTER SERVICE ; DATE: JANUARY 4,1978 ; VERSION: 1.0 ; RESIDENCE: DB1:[1,20]FILEFIX.MAC ; MODULE NAME: FILEFIX ; FOR: SYSTEMS/UTILITIES ; CORE REQUIREMENTS: TOTAL: 3-K ; MACHINE/SYSTEM: PDP11/45 IAS V2.0 ; TYPE/LANGUAGE: MAIN/ASSEMBLER ; INDIRECT COMMAND FILE: DB1:[1,20]FILEFIX.CMD ; EDITS: JANUARY 5,1977 - EDIT 01 ; ABSTRACT: THIS MODULE SETS THE F.RATT BYTE IN THE ; FILE DESCRIPTOR BLOCK OF THE SPECIFIED ; FILE TO HAVE IMPLIED CARRIAGE CONTROL ; INSTEAD OF CARRIAGE CONTROL ON THE RECORDS. ;******************************************************************************* ;******************************************************************************* ; OTHER ROUTINES CALLED: NONE ; DESCRIPTION OF VARIABLES: ; FILES: ; FDBFIX: INPUT FILE TO HAVE BYTE SET ; USES LUN 2 ; GCLFIX: GET COMMAND LINE FILE, USES LUN 1 ; VARIABLES: ; CSIBLK: CSI CONTROL BLOCK ; ERR: ERROR QIO ;******************************************************************************* .SBTTL TELL THE ASSEMBLER WHICH LIBMACS TO USE. ;******************************************************************************* .MCALL FSRSZ$,FDBDF$,FDAT$A,FDOP$A,NMBLK$,CSI$,CSI$2,QIOW$ .MCALL GCMLB$,GCML$,OPEN$U,CLOSE$,CSI$1,EXIT$S,FINIT$,DIR$ .MCALL EXST$S,C$C ; .SBTTL DEFINE ALL LOCAL MACROS .MACRO PRINT,A,B MOV A,ERR+Q.IOPL MOV B,ERR+Q.IOPL+2 DIR$ #ERR .ENDM PRINT .SBTTL DEFINE A FEW CC CHARACTERS C$C ;THIS MACRO DOES JUST THAT SPLAT=52 ;NATHAN ;******************************************************************************* .SBTTL TELL FCS HOW MANY FILES WE'RE USING ;******************************************************************************* FSRSZ$ 1 ; DEFINE THE LUNS GCLLUN=1 FIXLUN=2 .SBTTL DEFINE THE IMPURE PSECT .PSECT IMPUR$,D,RW,REL CSI$ ;SET UP CSI STUFF CSIBLK: .BLKB C.SIZE ;ALLOCATE SPACE FOR CSI ; SET UP THE GCL BLOCK GCLFIX: GCMLB$ 0,FFX,GCLBUF,GCLLUN ;LUN=1 FOR COMMANDS GCLBUF: .BLKB 40. ; SET UP THE FDB FOR THE INPUT FILE FDBFIX: FDBDF$ ;SET UP FDB FDOP$A FIXLUN,,FIXFIL ;LUN=2 FIXFIL: NMBLK$ FILEFIX,FIX,,SY,0 ; SET UP QIO FOR ERROR MESSAGES ERR: QIOW$ IO.WVB,1,4,,,,<0,0,SPACE> ;******************************************************************************* .SBTTL ERROR MESSAGES .PSECT DPUR,D,RO,REL ;******************************************************************************* ERRBUF: .ASCII /[ FFX - COMMAND FAILURE ]/ ERS=.-ERRBUF ER1: .ASCII /[ FFX - FILE SPECIFICATION ERROR ]/ ER1S=.-ER1 ER2: .ASCII /[ FFX - FILE OPEN ERROR ]/ ER2S=.-ER2 ;******************************************************************************* .SBTTL DEFINE THE PURE CODE .PSECT PUR$,I,RO,REL ;****************************************************************************** .SBTTL START PROCEDURE FFX:: FINIT$ ;INITIALIZE ALL FILES GCML$ #GCLFIX ;GET INPUT FILE SPEC CMPB #GE.EOF,G.ERR(R0) ;SEE IF ^Z WAS TYPED BNE ERROR ;NOT AN EOF -- ERROR JMP FFX.EX ;EXIT QUIETLY .SBTTL ERROR HANDLING SECTION ERROR: PRINT #ERRBUF,#ERS ;COMMAND LINE FAILURE BR EXSTS ;EXIT QUIETLY ERROR1: PRINT #ER1,#ER1S ;PARSING ERROR BR EXSTS ;EXIT QUIETLY ERROR2: PRINT #ER2,#ER2S ;OPEN ERROR BR EXSTS ;EXIT QUIETLY EXSTS: EXST$S EX$SEV ;SHOW SEVERE ERROR AND EXIT. ;******************************************************************************* .SBTTL PARSE THE COMMAND LINE ;******************************************************************************* PROC: TST GCLFIX+G.CMLD BEQ FFX ;NOTHING THERE, GET ANOTHER CSI$1 #CSIBLK,GCLFIX+G.CMLD+2,GCLFIX+G.CMLD BCS ERROR1 ;SYNTAX ERROR CSI$2 #CSIBLK,OUTPUT ;PARSE COMMAND LINE BCS ERROR1 ;SYNTAX ERROR .SBTTL OPEN THE INPUT FILE OPEN$U #FDBFIX,,#CSIBLK+C.DSDS,,,,ERROR2 BICB #1,F.RATT(R0) ;CLEAR THE NON-IMPLIED CC BIT BISB #2,F.RATT(R0) ;SET THE FORTRAN CC BIT CLOSE$ #FDBFIX ;CLOSE THE FILE WITH THESE NEW CHARACTERISTICS FFX.EX: EXIT$S .END FFX ;*******************************************************************************