; ; [11,40]F4PRES.MAC ; .TITLE F4PRES .IDENT /F4PRES/ ; ; COPYRIGHT (C) 1975,1976,1977, ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A ; SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY 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 EXCEPT FOR USE ON SUCH SYSTEM AND ; TO ONE WHO AGREES TO THESE LICENSE TERMS. TITLE TO AND ; OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC. ; ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL ; EQUIPMENT CORPORATION. ; ; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY ; OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. ; ;+ ; 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: THE OTS IS NOT PIC, AND CANNOT BE MADE INTO A PIC 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: ; ;ARAP SFIO=1 ;SEQUENTIAL FORMATTED I/O ; SUIO=1 ;SEQUENTIAL UNFORMATTED I/O ; DFIO=1 ;DIRECT ACCESS FORMATTED I/O ;ARAP DUIO=1 ;DIRECT ACCESS UNFORMATTED I/O ; LIO=1 ;LIST-DIRECTED SEQUENTIAL I/O ; ECIO=1 ;ENCODE/DECODE STATEMENTS ; OFMT=1 ;OBJECT TIME FORMAT COMPILATION ; CODSP=1 ;STACK-ORIENTED CODE SUPPORT ;ARAP I2MTH=1 ;INTEGER*2 FUNCTIONS AND SUPPORT ROUTINES ; I4MTH=1 ;INTEGER*4 FUNCTIONS AND SUPPORT ROUTINES ;ARAP SPMTH=1 ;REAL FUNCTIONS AND SUPPORT ROUTINES ;ARAP 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. ; ; THIS MODULE AS DEFINED BUILDS AN 8K LIBRARY FOR RSX-11M ; USING THE LONG ERROR TEXT. THE SHORT ERROR TEXT WILL SAVE 1K. ; RSX-11D AND IAS ARE THE EQUIVALENT OF THE SHORT TEXT. (7K) ; THIS LIBRARY INCLUDES 3K OF PIC FCS CODE. BUILDING A ; PIC FCS LIBRARY AND LINKING THIS LIBRARY TO IT MAY BE ; ADVANTAGEOUS. ; CONSULT THE OPERATING SYSTEM TASK BUILDER MANUAL ; AND SYSTEM GENERATION AND SYSTEM MANAGER DOCUMENTATION ; FOR INFORMATION ON CONSTRUCTING AND INSTALLING ; A RESIDENT LIBRARY. ;******* 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 ;***** ;- ; MODULES ALWAYS REQUIRED (OR ALMOST ALWAYS). ; ;ARAP .GLOBL OTI$ ;MAIN PROGRAM INITIALIZATION ;ARAP .GLOBL NAM$ ;TRACEBACK CHAIN PROCESSING (/TR COMPILER SWITCH) ; .GLOBL ARYCK$ ;ARRAY SUBSCRIPT CHECKING (/CK COMPILER SWITCH) ;ARAP .GLOBL MAK1$ ;ONE-DIMENSION ADJUSTABLE ARRAYS ;ARAP .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. ; ;ARAP .GLOBL STOP$ ;STOP/PAUSE STATEMENTS ; .GLOBL REWI$ ;REWIND STATEMENT ; .GLOBL ENDF$ ;ENDFILE STATEMENT ; .GLOBL BKSP$ ;BACKSPACE STATEMENT ;ARAP .GLOBL DEFF$ ;DEFINEFILE AND FIND STATEMENTS ; .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$ ;OBJECT 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 ; ; MATH LIBRARY FUNCTIONS (PDFS) ; .IF DF I2MTH ; .GLOBL $IABS ;INTEGER*2 ABSOLUTE VALUE (INLINE) .GLOBL $MAX0 ;INTEGER*2 MAX OF INTEGER*2 .GLOBL $AMAX0 ;REAL MAX/MIN OF INTEGER*2 ;ARAP .GLOBL $MIN0 ;INTEGER*2 MIN OF INTEGER*2 ; .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) ;ARAP .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 ; .GLOBL $JMAX1 ;INTEGER*4 MAX/MIN OF REAL ; .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 ; .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 ; (DEC-11-LFPUA-B-D). ; ; .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