.TITLE F4PRES OTS RESIDENT LIBRARY BUILD FILE .IDENT /F4P013/ ; ; ; COPYRIGHT (c) 1975,1976,1977,1979 BY ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE ; INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER ; COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY ; OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY ; TRANSFERRED. ; ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE ; AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT ; CORPORATION. ; ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL. ; ; ; FUNCTION: ; BUILD A FORTRAN IV-PLUS OTS RESIDENT LIBRARY ; ; THIS MODULE IS INTENDED TO HELP GUIDE ; A USER DESIRING TO BUILD AN OTS RESIDENT LIBRARY. ; ; AS A GUIDE, IT CLEARLY IS NOT THE BEST POSSIBLE CONFIGURATION ; FOR ALL USERS. EACH RESIDENT LIBRARY SHOULD BE TAILORED TO ; THE INSTALLATION REQUIREMENTS. ; ; NOTE: FOR RMS-11(K) V1.8, AN RMS-11 RESIDENT LIBRARY MAY BE USED, BUT THE ; OTS CANNOT BE LINKED TO AN RMS-11 RESIDENT LIBRARY. ; AS A RESULT, THE RMS-11 LIBRARY CONFIGURATIONS ARE NOT INCLUDED. ; ; NOTE: THE OTS IS NOT PIC, AND CANNOT BE MADE INTO A PIC LIBRARY. ; ; NOTE: THE OTS WITH RMS-11 SUPPORT CANNOT BE MADE INTO A RESIDENT LIBRARY ; ; NOTE: THE OTS I/O MODULES MUST ALL BE IN THE SAME OVERLAY OF A ; MEMORY-RESIDENT LIBRARY ;+ ; INSTRUCTIONS FOR USING THIS FILE: ; ; THE FCS-11 VERSION OF THE LIBRARY INCLUDES 3.5K WORDS OF PIC FCS CODE. ; LINKING THIS LIBRARY TO THE PIC FCS RESIDENT LIBRARY ; (SYSRES OR FCSRES) MAY BE ADVANTAGEOUS. ; IF THE FCS RESIDENT LIBRARY IS USED: ; * ALLOW 1 APR REGISTER (20000 OCTAL BYTES) FOR THE FCS LIBRARY. ; THIS MEANS THAT THE BASE OF THE LIBRARY PLUS SIZE < 160000 (OCTAL), ; ; * ADD THE FOLLOWING TASK-BUILD ; OPTION TO THE RESIDENT LIBRARY BUILD PROCEDURE: ; ; LIBR=SYSRES:RO OR LIBR=FCSRES:RO ; ; ; ; THIS FILE MAY BE USED AS IS: ; THIS MODULE AS DEFINED BUILDS THE FOLLOWING SIZES OF ; RESIDENT LIBRARIES: ; ; RSX-11M FCS-11 ; 7600 WORDS USING LONG ERROR TEXT AND SYSLIB.OLB. ; 6400 WORDS USING SHORT ERROR TEXT AND SYSLIB.OLB. ; 8100 WORDS USING LONG ERROR TEXT AND ANSLIB.OLB. ; 6900 WORDS USING SHORT ERROR TEXT AND ANSLIB.OLB. ; ; RSX-11M-PLUS FCS-11 ; 7600 WORDS USING LONG ERROR TEXT. ; 6400 WORDS USING SHORT ERROR TEXT. ; ; IAS FCS-11 ; 4000 WORDS USING SYSRES. ; 6800 WORDS WITHOUT USING SYSRES. ; ; ; THIS MODULE AS DEFINED CONTAINS THE FOLLOWING FORTRAN OTS FUNCTIONS: ; TASK INITIALIZATION MODULES ; ERROR PROCESSING MODULES ; FORMATTED SEQUENTIAL I/O PROCESSING ; UNFORMATTED SEQUENTIAL I/O PROCESSING ; ALL FORMAT CONVERSION MODULES ; SIN, COS, ALOG, ALOG10, EXP, SQRT MATH FUNCTIONS ; ; FOLLOW THE INSTRUCTIONS IN STEPS 6 AND 7 UNDER TAILORING TO BUILD ; THE DEFAULT VERSION OF THE LIBRARY. ; ; ; TAILORING THIS FILE: ; THIS FILE MAY BE EDITED TO PRODUCE A LIBRARY WHICH FITS ; IN ONE OR MORE 4K WORD AREAS. THEREFORE THE PROCEDURE FOR ; BUILDING A WELL-DESIGNED OTS RESIDENT LIBRARY IS AS FOLLOWS: ; ; 1. EDIT THIS FILE TO INCLUDE/EXCLUDE THOSE OTS FUNCTIONS ; THAT YOUR INSTALLATION NEEDS. ; ; 2. ASSEMBLE THIS FILE. ; ; 3. TASK-BUILD THIS FILE PRODUCING A MAP FILE: ; (RSX-11M/M-PLUS): ; TKB>F4PRES/-HD,F4PRES=F4PRES,LB:[1,1]F4POTS/LB ; TKB>/ ; ENTER OPTIONS ; TKB>STACK=0 ; TKB>/ ; ; (IAS): ; LINK/OPT/MAP/NOHEADER/READ_WRITE F4PRES,LB:[1,1]F4POTS/LIB ; OPTIONS?STACK=0 ; OPTIONS?/ ; ; 4. STUDY THE MAP THAT IS PRINTED BY THE TASK BUILDER. ; THE FILE SHOULD BE ALMOST BUT NOT QUITE EQUAL IN SIZE TO ; ONE OF THE FOLLOWING SIZES: ; 4096 WORDS 1-APR LIBRARY ; 8192 WORDS 2-APR LIBRARY ; 12288 WORDS 3-APR LIBRARY ; 16384 WORDS 4-APR LIBRARY ; ; 5. IF THE NUMBER IS TOO LARGE, YOU CAN EITHER REMOVE SOME ; MODULES, OR ADD MODULES TO THE NEXT LARGEST SIZE. IF ; THE NUMBER IS TOO SMALL, YOU CAN ADD ADDITIONAL FUNCTIONS. ; ; 6. REPEAT STEPS 1, 2, 3 AND 4 UNTIL THE DESIRED LIBRARY SIZE ; IS OBTAINED. THEN THE REAL RESIDENT LIBRARY IS BUILT ; AS FOLLOWS: ; (RSX-11M/M-PLUS): ; TKB>F4PRES/-HD,F4PRES,F4PRES=F4PRES,LB:[1,1]F4POTS/LB ; TKB>/ ; ENTER OPTIONS ; TKB>STACK=0 ; TKB>PAR=F4PRES:BASE:SIZE ! BASE+SIZE<177777 (OCTAL) ; TKB>/ ; ; (IAS): ; LINK/OPT/NOHEADER/MAP/SYMBOL/READ_WRITE F4PRES,LB:[1,1]F4POTS/LIB ; OPTIONS?STACK=0 ; OPTIONS?BASE=N ! N=(8-NUMBER OF APRS FOR LIBRARY)*4 ; OPTIONS?/ ; ; 7. INSTALL THE RESIDENT LIBRARY INTO THE SYSTEM. ; ; CONSULT THE OPERATING SYSTEM TASK BUILDER MANUAL ; AND SYSTEM GENERATION AND SYSTEM MANAGER DOCUMENTATION ; FOR INFORMATION ON CONSTRUCTING AND INSTALLING ; A RESIDENT LIBRARY. ; ; ENTRY POINTS ARE GROUPED ACCORDING TO USE, ; BUT NOT ALL OF A GROUP NEED BE INCLUDED. ; INDIVIDUAL MODULES ARE EXCLUDED BY COMMENTING OUT ; THE .GLOBL XXXXX STATEMENT. ; ; THE GROUPS DEFINED ARE: ; SFIO=1 ;SEQUENTIAL FORMATTED I/O SUIO=1 ;SEQUENTIAL UNFORMATTED I/O ; DFIO=1 ;DIRECT ACCESS FORMATTED I/O ; DUIO=1 ;DIRECT ACCESS UNFORMATTED I/O ; LIO=1 ;LIST-DIRECTED SEQUENTIAL I/O ; ECIO=1 ;ENCODE/DECODE STATEMENTS ; OFMT=1 ;RUN-TIME FORMAT COMPILATION ; CODSP=1 ;STACK-ORIENTED CODE SUPPORT ; VIRT=1 ;VIRTUAL ARRAY SUPPORT ; I2MTH=1 ;INTEGER*2 FUNCTIONS AND SUPPORT ROUTINES ; I4MTH=1 ;INTEGER*4 FUNCTIONS AND SUPPORT ROUTINES SPMTH=1 ;REAL FUNCTIONS AND SUPPORT ROUTINES ; DPMTH=1 ;DOUBLEPRECISION FUNCTIONS AND SUPPORT ROUTINES ; CPXMTH=1 ;COMPLEX FUNCTIONS AND SUPPORT ROUTINES ; ; ; ADDITIONAL MISCELLANEOUS I/O ROUTINES, SUPPORT ROUTINES, ETC. ; ARE LISTED SEPARATELY. ; ;******* NOTE ******* ; ;IF FORMATTED OR LIST-DIRECTED I/O PROCESSING ROUTINES ARE TO BE ;INCLUDED, ALL OF THE FOLLOWING MUST BE INCLUDED ;OR THEY CAN NOT BE USED!! ; ; $FIO ;FORMATTED I/O PROCESSOR ; $LSTI ;LIST-DIRECTED INPUT PROCESSOR ; $LSTO ;LIST-DIRECTED OUTPUT PROCESSOR ; ICI$ ;INTEGER FORMAT CONVERSIONS ; LCI$ ;LOGICAL FORMAT CONVERSIONS ; RCI$ ;FLOATING POINT FORMAT CONVERSIONS ; ;******* ;******* NOTES ******* ; ; 1. MATH FUNCTIONS MARKED: (INLINE) ARE NORMALLY PERFORMED ; INLINE AND NO EXTERNAL REFERENCE IS REQUIRED. ; 2. SOME MATH FUNCTIONS CONTAIN BOTH THE SINGLE AND DOUBLE ; PRECISION VERSIONS IN A SINGLE MODULE (EG. $EXP); ; THESE ARE LISTED UNDER THE SINGLE PRECISION FUNCTIONS. ; 3. DIRECT ACCESS I/O REQUIRES THE DEFINEFILE OR OPEN STATEMENT. ; ; ; ;***** DO NOT INCLUDE A REFERENCE TO ANY OF: ;***** $OTSVA ;***** $SEQC ;***** ORGSQ$ ;***** ORGRL$ ;***** ORGIX$ ;***** ;- ; MODULES ALWAYS REQUIRED (OR ALMOST ALWAYS). ; .GLOBL OTI$ ;MAIN PROGRAM INITIALIZATION .GLOBL NAM$ ;TRACEBACK CHAIN PROCESSING (/TR COMPILER SWITCH) ; .GLOBL ARYCK$ ;ARRAY SUBSCRIPT CHECKING (/CK COMPILER SWITCH) .GLOBL MAK1$ ;ONE-DIMENSION ADJUSTABLE ARRAYS .GLOBL MAK2$ ;TWO-DIMENSION ADJUSTABLE ARRAYS ; .GLOBL MAKN$ ;MULTI-DIMENSION ADJUSTABLE ARRAYS ; ; MISCELLANEOUS I/O, COMPILED-CODE AND STATEMENT SUPPORT ROUTINES. ; THESE SHOULD BE SELECTED ON A PER-STATEMENT BASIS. ; ; .GLOBL STOP$ ;STOP/PAUSE STATEMENTS ; .GLOBL REWI$ ;REWIND STATEMENT ; .GLOBL ENDF$ ;ENDFILE STATEMENT ; .GLOBL BKSP$ ;BACKSPACE STATEMENT ; .GLOBL DEFF$ ;DEFINEFILE STATEMENT ; .GLOBL CLOS$ ;CLOSE STATEMENT ; .GLOBL OPEN$ ;OPEN STATEMENT ; .GLOBL CGO$ ;COMPUTED GOTO STATEMENT ; .GLOBL AGO$ ;ASSIGNED GOTO STATEMENT ; ; I/O PROCESSING ROUTINES ; .IF DF SFIO ;SEQUENTIAL FORMATTED I/O .GLOBL ISF$ ;FORMATTED SEQUENTIAL INPUT .GLOBL OSF$ ;FORMATTED SEQUENTIAL OUTPUT FMT=1 ;FORMATTING IN USE IO=1 ;I/O IN USE .ENDC ;DF SFIO .IF DF SUIO ;SEQUENTIAL UNFORMATTED I/O .GLOBL ISU$ ;UNFORMATTED SEQUENTIAL INPUT .GLOBL OSU$ ;UNFORMATTED SEQUENTIAL OUTPUT IO=1 ;I/O IN USE .ENDC ;DF SUIO .IF DF LIO ;LIST-DIRECTED I/O .GLOBL ISL$ ;LIST-DIRECTED SEQUENTIAL INPUT .GLOBL OSL$ ;LIST-DIRECTED SEQUENTIAL OUTPUT LFMT=1 ;LIST-DIRECTED FORMATTING IN USE IO=1 ;I/O IN USE .ENDC ;DF LIO .IF DF DFIO ;DIRECT ACCESS FORMATTED I/O .GLOBL IRF$ ;FORMATTED DIRECT ACCESS INPUT .GLOBL ORF$ ;FORMATTED DIRECT ACCESS OUTPUT FMT=1 ;FORMATTING IN USE IO=1 ;I/O IN USE .ENDC ;DF DFIO .IF DF DUIO ;DIRECT ACCESS UNFORMATTED I/O .GLOBL IRU$ ;UNFORMATTED DIRECT ACCESS INPUT .GLOBL ORU$ ;UNFORMATTED DIRECT ACCESS OUTPUT IO=1 ;I/O IN USE .ENDC ;DF DUIO .IF DF ECIO ;ENCODE/DECODE .GLOBL ENF$ ;ENCODE/DECODE STATEMENTS FMT=1 ;FORMATTING IN USE IO=1 ;I/O IN USE .ENDC ;DF ECIO ; ; COMMON I/O SUPPORT ROUTINES ; .IF DF IO .GLOBL IOAI$ ;I/O VARIABLE TRANSMISSION .GLOBL IOAA$ ;I/O ARRAY TRANSMISSION .ENDC ; FORMATTING CAPABILITIES ; .IF DF FMT .GLOBL $FIO ;FORMATTED I/O PROCESSOR .ENDC .IF DF OFMT .GLOBL FMTCV$ ;RUN-TIME FORMAT COMPILATION .ENDC .IF DF LFMT .GLOBL $LSTI ;LIST-DIRECTED INPUT PROCESSOR .GLOBL $LSTO ;LIST-DIRECTED OUTPUT PROCESSOR .ENDC .IF DF FMT!LFMT .GLOBL ICI$ ;INTEGER FORMAT CONVERSIONS .GLOBL LCI$ ;LOGICAL FORMAT CONVERSIONS .GLOBL RCI$ ;FLOATING POINT FORMAT CONVERSIONS .ENDC ; ; STACK-ORIENTED COMPILED CODE SUPPORT ROUTINES ; .IF DF CODSP .GLOBL PWIIS$ ;INTEGER*2 EXPONENTIATION .GLOBL PWRIS$ ;REAL/DOUBLE ** INTEGER .GLOBL PWRRS$ ;REAL ** REAL .GLOBL PWRDS$ ;REAL/DOUBLE ** REAL/DOUBLE .IF DF I4MTH .GLOBL MLJS$ ;INTEGER*4 MULTIPLICATION .GLOBL DVJS$ ;INTEGER*4 DIVISION .GLOBL PWIJS$ ;INTEGER*4 EXPONENTIATION .ENDC .IF DF CPXMTH .GLOBL PWCIS$ ;COMPLEX ** INTEGER .GLOBL ADCS$ ;COMPLEX ADD/SUBTRACT .GLOBL MLCS$ ;COMPLEX MULTIPLICATION .GLOBL DVCS$ ;COMPLEX DIVISION .GLOBL CMCS$ ;COMPLEX COMPARE .GLOBL TSCS$ ;COMPLEX TEST FOR ZERO .GLOBL NGCS$ ;COMPLEX NEGATE .ENDC ; IF ANY OF THESE ARE SELECTED, ALSO INCLUDE THE STACK SWAP .GLOBL SWP11$ ;STACK SWAP .ENDC ;DF CODSP ; ; VIRTUAL ARRAY SUPPORT ; .IF DF VIRT .GLOBL MAKV$ ;ADJUSTABLE VIRTUAL ARRAY INITIALIZE .GLOBL IOAVA$ ;VIRTUAL ARRAY I/O TRANSMISSION .GLOBL VRTB$ ;VIRTUAL ADDRESS TRANSLATION .ENDC ;DF VIRT ; ; MATH LIBRARY FUNCTIONS ; .IF DF I2MTH ; .GLOBL $IABS ;INTEGER*2 ABSOLUTE VALUE (INLINE) ; .GLOBL $MAX0 ;INTEGER*2 MAX OF INTEGER*2 (INLINE) ; .GLOBL $AMAX0 ;REAL MAX/MIN OF INTEGER*2 (INLINE) ; .GLOBL $MIN0 ;INTEGER*2 MIN OF INTEGER*2 (INLINE) .GLOBL $NINT ;INTEGER NEAREST INTEGER OF REAL/DOUBLE ; .GLOBL $IMOD ;INTEGER*2 MOD (INLINE) .GLOBL $ISIGN ;INTEGER*2 SIGN TRANSFER .GLOBL $IDIM ;INTEGER*2 DIM ; .GLOBL $IAND ;INTEGER*2 AND (INLINE) ; .GLOBL $IOR ;INTEGER*2 OR (INLINE) ; .GLOBL $IEOR ;INTEGER*2 EXCLUSIVE OR (INLINE) ; .GLOBL $INOT ;INTEGER*2 NOT (INLINE) .GLOBL $ISHFT ;INTEGER*2 SHIFT .ENDC .IF DF I4MTH ; .GLOBL $JABS ;INTEGER*4 ABSOLUTE VALUE (INLINE) .GLOBL $JMAX0 ;REAL/INTEGER*4 MAX/MIN OF INTEGER*4 .GLOBL $JMOD ;INTEGER*4 MOD .GLOBL $JSIGN ;INTEGER*4 SIGN TRANSFER .GLOBL $JDIM ;INTEGER*4 DIM ; .GLOBL $JAND ;INTEGER*4 AND (INLINE) ; .GLOBL $JOR ;INTEGER*4 OR (INLINE) ; .GLOBL $JEOR ;INTEGER*4 EXCLUSIVE OR (INLINE) ; .GLOBL $JNOT ;INTEGER*4 NOT (INLINE) .GLOBL $JSHFT ;INTEGER*4 SHIFT .ENDC .IF DF SPMTH ; .GLOBL $ABS ;REAL ABSOLUTE VALUE (INLINE) .GLOBL $EXP ;REAL/DOUBLE EXPONENTIAL .GLOBL $ALOG ;REAL NATURAL/COMMON LOGARITHM .GLOBL $SIN ;REAL SINE/COSINE .GLOBL $SQRT ;REAL/DOUBLE SQUARE ROOT ; .GLOBL $TAN ;REAL TANGENT ; .GLOBL $ACOS ;REAL ARC COSINE ; .GLOBL $ASIN ;REAL ARC SINE ; .GLOBL $ATAN ;REAL ARC TANGENT ; .GLOBL $COSH ;REAL HYPERBOLIC COSINE ; .GLOBL $SINH ;REAL HYPERBOLIC SINE ; .GLOBL $TANH ;REAL HYPERBOLIC TANGENT ; .GLOBL $AMAX1 ;REAL/INTEGER*2 MAX/MIN OF REAL (INLINE) ; .GLOBL $JMAX1 ;INTEGER*4 MAX/MIN OF REAL (INLINE) ; .GLOBL $ANINT ;REAL/DOUBLE NEAREST INTEGER OF REAL/DOUBLE ; .GLOBL $AINT ;REAL TO REAL TRUNCATION ; .GLOBL $AMOD ;REAL MOD ; .GLOBL $SIGN ;REAL SIGN TRANSFER ; .GLOBL $FLOAT ;INTEGER*2 TO REAL CONVERSION (INLINE) ; .GLOBL $FLOTJ ;INTEGER TO REAL/DOUBLE CONVERSION (INLINE) ; .GLOBL $IFIX ;REAL/DOUBLE TO INTEGER*2 CONVERSION (INLINE) ; .GLOBL $JFIX ;REAL/DOUBLE TO INTEGER*4 CONVERSION (INLINE) .ENDC .IF DF DPMTH ; .GLOBL $DABS ;DOUBLE ABSOLUTE VALUE (INLINE) .GLOBL $DLOG ;DOUBLE NATURAL/COMMON LOGARITHM .GLOBL $DSIN ;DOUBLE SINE/COSINE ; .GLOBL $DTAN ;DOUBLE TANGENT ; .GLOBL $DACOS ;DOUBLE ARC COSINE ; .GLOBL $DASIN ;DOUBLE ARC SINE ; .GLOBL $DATAN ;DOUBLE ARC TANGENT ; .GLOBL $DCOSH ;DOUBLE HYPERBOLIC COSINE ; .GLOBL $DSINH ;DOUBLE HYPERBOLIC SINE ; .GLOBL $DTANH ;DOUBLE HYPERBOLIC TANGENT ; .GLOBL $DMAX1 ;DOUBLE MAX/MIN OF DOUBLE (INLINE) ; .GLOBL $DINT ;DOUBLE TO DOUBLE TRUNCATION ; .GLOBL $DMOD ;DOUBLE MOD ; .GLOBL $DSIGN ;DOUBLE SIGN TRANSFER ; .GLOBL $DDIM ;DOUBLE DIM ; .GLOBL $SNGL ;DOUBLE TO REAL CONVERSION (INLINE) ; .GLOBL $DBLE ;REAL TO DOUBLE CONVERSION (INLINE) ; .GLOBL $DPROD ;DOUBLE PRODUCT OF 2 REALS .ENDC .IF DF CPXMTH .GLOBL $CABS ;COMPLEX ABSOLUTE VALUE .GLOBL $CEXP ;COMPLEX EXPONENTIAL .GLOBL $CLOG ;COMPLEX LOGARITHM .GLOBL $CSIN ;COMPLEX SINE/COSINE .GLOBL $CSQRT ;COMPLEX SQUARE ROOT ; .GLOBL $REAL ;COMPLEX TO REAL CONVERSION (INLINE) ; .GLOBL $AIMAG ;COMPLEX IMAGINARY TO REAL CONVERSION ; .GLOBL $CMPLX ;REAL TO COMPLEX CONVERSION ; .GLOBL $CONJG ;COMPLEX CONJUGATE .ENDC ; SYSTEM SUBROUTINES ; SEE APPENDIX D OF THE FORTRAN IV-PLUS USERS GUIDE ; ; .GLOBL ASSIGN ; .GLOBL DATE ; .GLOBL ERRSET ; .GLOBL ERRSNS ; .GLOBL ERRTST ; .GLOBL FDBSET ; .GLOBL IDATE ; .GLOBL IRAD50 ; .GLOBL RAD50 ; .GLOBL RAN ; .GLOBL RANDU ; .GLOBL R50ASC ; .GLOBL SECNDS ; .GLOBL TIME ; .GLOBL USEREX ; .GLOBL CLOSE ; .GLOBL EXIT .END