|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 6272 (0x1880) Types: RcTekst Names: »31-D717.WP«
└─⟦b9fe312e5⟧ Bits:30008868 Diskette med 3 stk RCSL-30-M og 3 stk RCSL-31-D └─⟦this⟧ »31-D717.WP«
╱0400274e0c0006000000000301483160000000000000000000000000000000000000000000000000050a0f14191e23282d32373c41464bff04╱ ┆06┆i↲ ↲ ↲ ╞ ╞ Foreword:↲ ↲ ╞ ╞ ┆84┆In the two compilers ALGOL and FORTRAN, the linking phase, ↓ ┆19┆┆89┆┄┄pass9, is able to pick up and link into a program any number of ↓ ┆19┆┆89┆┄┄external ALGOL procedures, external FORTRAN subroutines/func┄┄↓ ┆19┆┆89┆┄┄tions or code procedures described in the catalog.↲ ↲ ╞ ╞ ┆84┆The procedures may be picked up from procedure libraries, i.e. ↓ ┆19┆┆89┆┄┄collections of procedures stored together on single backing ↓ ┆19┆┆89┆┄┄storage areas being procedures themselves.↲ ↲ ╞ ╞ ┆84┆The present program, compresslib, is used to collect such ↓ ┆19┆┆89┆┄┄libraries of procedures, being external ALGOL procedures, ↓ ┆19┆┆89┆┄┄external FORTRAN subroutines/functions or code procedures in ↓ ┆19┆┆89┆┄┄any mix.↲ ↲ ↲ ╞ ╞ F.G. Strøbech↲ ╞ ╞ A/S Regnecentralen, May 1984↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆06┆ii↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆06┆iii↲ ↲ ┆a1┆┆b0┆TABLE OF CONTENTS┆05┆PAGE↲ ↲ ┆b0┆1. INTRODUCTION ......................................................1↲ ↲ ┆b0┆2. EXAMPLE ...........................................................2↲ ↲ ┆b0┆3. CALL ..............................................................3↲ ↲ ┆b0┆4. FUNCTION ..........................................................4↲ ↲ ┆b0┆5. STORAGE REQUIREMENTS ..............................................5↲ ↲ ┆b0┆6. ERROR MESSAGES ....................................................6↲ ↲ ┆b0┆7. APPENDIX ..........................................................8↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆06┆iv↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆14┆┆b3┆┆06┆┆0b┆↲ ↲ ┆b0┆┆a1┆1.╞ ╞ INTRODUCTION↲ ↲ ╞ ╞ ┆84┆The program compresses into one single area a number of exter-↓ ┆19┆┆89┆┄┄nal ALGOL / FORTRAN procedures or code procedures to occupy a ↓ ┆19┆┆89┆┄┄minimum number of segments.↲ ↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆a1┆┆b0┆2.╞ ╞ EXAMPLE:↲ ↲ ╞ ╞ ┆84┆The call↲ ╞ ╞ read = compresslib write arctan ln arcsin↲ ╞ ╞ ┆84┆collects into one single area the algol library procedures ↓ ┆19┆┆89┆┄┄read, write, arctan, ln and arcsin and sets the descriptors of ↓ ┆19┆┆89┆┄┄these procedures so that they may be found and accepted by the ↓ ┆19┆┆89┆┄┄ALGOL and FORTRAN compilers.↲ ↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆a1┆┆b0┆3.╞ ╞ CALL:↲ ↲ ╞ ╞ ┆84┆<collection area> = <compresslib> <s><procedure area>↲ ╞ ╞ <collection area> ::= <procedure area>↲ ╞ ╞ <procedure area> ::= <name>↲ ↲ ╞ ╞ ┆84┆A procedure area is an area entry with content 4, and with ↓ ┆19┆┆89┆┄┄length > 0.↲ ╞ ╞ ┆84┆The intervals of the procedure areas must be equal to the ↓ ┆19┆┆89┆┄┄catalog base of the process, which must be contained in or be ↓ ┆19┆┆89┆┄┄equal to the standard interval of the process.↲ ↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆a1┆┆b0┆4.╞ ╞ FUNCTION:↲ ↲ ╞ ╞ ┆84┆The contents of the collection area is examined so that it is ↓ ┆19┆┆89┆┄┄known how much space the code and the external list take up in ↓ ┆19┆┆89┆┄┄the area. Then the procedure areas on the right hand side are ↓ ┆19┆┆89┆┄┄scanned from left to right and their code and external lists ↓ ┆19┆┆89┆┄┄are placed one after the other as tight as possible after the ↓ ┆19┆┆89┆┄┄external list and the code of the collection area. If necessary ↓ ┆19┆┆89┆┄┄the collection area is extended as the processing proceeds. ↓ ┆19┆┆89┆┄┄Parameters not accepted in this phase are dropped in the com┄↓ ┆19┆┆89┆┄┄pression. When all procedure areas have been collected, the ↓ ┆19┆┆89┆┄┄accepted areas are removed and the procedures are described as ↓ ┆19┆┆89┆┄┄shared main entries (see the appendix), i.e. the content be┄↓ ┆19┆┆89┆┄┄comes 32 + first segment in the collection area, and the mode ↓ ┆19┆┆89┆┄┄kind becomes bs.↲ ╞ ╞ Possible sub entries to the procedure areas are not changed.↲ ↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆a1┆┆b0┆5.╞ ╞ STORAGE REQUIREMENTS↲ ↲ ╞ ╞ ┆84┆900 halfwords + room for FP + room for the largest external ↓ ┆19┆┆89┆┄┄procedure.↲ ↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆a1┆┆b0┆6.╞ ╞ ERROR MESSAGES.↲ ↲ ╞ ╞ ┆84┆All error messages have the following form:↲ ╞ ╞ ╞ ***compresslib <param> <further explanation>↲ ╞ ╞ ┆84┆After an error message of this form, the standard actions are ↓ ┆19┆┆89┆┄┄as follows:↲ ╞ ╞ ┆84┆If <param> is absent or it is the name of the collection area, ↓ ┆19┆┆89┆┄┄the program terminates immediately. None of the procedure areas ↓ ┆19┆┆89┆┄┄to the right will be changed.↲ ╞ ╞ ┆84┆If <param> is one of the right hand parameters, this parameter ↓ ┆19┆┆89┆┄┄is dropped from the compression, but the other parameters will ↓ ┆19┆┆89┆┄┄not be affected.↲ ↲ ╞ ╞ Further explanation may be:↲ ↲ ╞ ╞ connect error: ┆84┆The area could not be connected for input ↓ ┆19┆┆9d┆┄┄or output. The reason may be that it is ↓ ┆19┆┆9d┆┄┄reserved for output by another process.↲ ↲ ╞ ╞ unknown : The area could not be found.↲ ↲ ╞ ╞ interval : ┆84┆The interval of the procedure area is not ↓ ┆19┆┆9d┆┄┄equal to the interval of the collection ↓ ┆19┆┆9d┆┄┄area.↲ ↲ ╞ ╞ content : ┆84┆The parameter does not denote an external ↓ ┆19┆┆9d┆┄┄procedure.↲ ↲ ╞ ╞ not area : ┆84┆The parameter does not denote an area (with ↓ ┆19┆┆9d┆┄┄length > 0).↲ ↲ ╞ ╞ intervals : ┆84┆The interval of the collection area is not ↓ ┆19┆┆9d┆┄┄equal to the catalog base of the process or ↓ ┆19┆┆9d┆┄┄the cata┄log base is not contained in or ↓ ┆19┆┆9d┆┄┄equal to the standard interval of the ↓ ┆19┆┆9d┆┄┄process.↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ ╞ ╞ no collection area: The program call has no left hand side.↲ ↲ ╞ ╞ transport error : ┆84┆Input from a procedure area or output to ↓ ┆19┆┆9d┆┄┄the collection area is impossible. Usually ↓ ┆19┆┆9d┆┄┄because of claims exceeded or bs_fault.↲ ↲ ╞ ╞ process too small : ┆84┆It is impossible to hold the entire proce-↓ ┆19┆┆9d┆┄┄dure in the process area. If param is the ↓ ┆19┆┆9d┆┄┄collection area, it is impossible to hold ↓ ┆19┆┆9d┆┄┄the external list in the process area.↲ ↲ ╞ ╞ too many segments : ┆84┆The collection area has exceeded 4063 ↓ ┆19┆┆9d┆┄┄segments.↲ ↲ ↲ ════════════════════════════════════════════════════════════════════════ ↓ ┆a1┆┆b0┆A.╞ ╞ APPENDIX:↲ ↲ ╞ ╞ ┆84┆In the FP-system, file descriptors are usually either area ↓ ┆19┆┆89┆┄┄descriptors or file descriptors describing (sub)files in a bs ↓ ┆19┆┆89┆┄┄area or peripheral file. Usually only one level of indirect ↓ ┆19┆┆89┆┄┄description of areas is alloved. For external procedures to ↓ ┆19┆┆89┆┄┄ALGOL or FORTRAN programs however, two levels of indirect ↓ ┆19┆┆89┆┄┄description of areas are allowed. An external procedure may be ↓ ┆19┆┆89┆┄┄described in the catalog by the following descriptors↲ ↲ ╞ ╞ main entry:╞ ╞ length > 0,╞ content = 4↲ ╞ ╞ shared entry:╞ ╞ length = bs,╞ content = 4↲ ╞ ╞ shared main entry:╞ length = bs,╞ content >= 32↲ ↲ ╞ ╞ ┆84┆A shared entry will either have the name of a main entry or a ↓ ┆19┆┆89┆┄┄shared main entry in its document name field.↲ ╞ ╞ ┆84┆A shared main entry has the name of a main entry (the collec-↓ ┆19┆┆89┆┄┄tion area) in its document name field.↲ ╞ ╞ ┆84┆The value of the content field is segment no. of external list ↓ ┆19┆┆89┆┄┄+ 32.↲ ↲ ┆1a┆┆1a┆↓ ↓ ┆1a┆ list ↓ ┆19┆┆89┆┄┄+ 32.↲ ↲ ↓ ┆1a┆↲ ↓ ┆1a┆stiles can be read (max. 25 Kbytes). ↓ ┆19┆┆89┆┄┄The contents of the file are read into the edit b