|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 32256 (0x7e00) Types: TextFile Names: »fplibman«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt. └─⟦0364f57e3⟧ └─⟦this⟧ »fplibman« └─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ. └─⟦b2ec5d50f⟧ └─⟦this⟧ »fplibman«
\f H. C. Ørsted Institute Computer Department Universitetsparken 5 DK-2100 København Ø HCØ RC8000 program library Utility Programs "fplibman" Anders Lindgård (Editor) 80/8 1980-12-20 \f 1 Scope of the library -------------------- The scope of the library is to provide the users of the RC8000 computer with a manual of all programs of common interest. Most programs may be used on the RC4000 computer as well. A guideline for description of programs and procedures is found in the file "guideline". The library is divided into sub-libraries, and a list of relevant user manuals is found in the file "listman". \f 2 Alphabetic list of new programs: convert device describe docmove extract listint m macro mtread multicopy remsp searchcon stdvar testbuf writestd \f 3 1980-10-22 Anders Lindgård convert Prints a textfile on a printer using the PRIMO module. Call: ----- <outfile>=convert <filelist> <outfile>::=<empty>/<filedescriptor> The filedescriptor must describe a printer. If not specified the printer "lp" is assumed. <filelist>::=<file>/<filelist> <file> must describe a text file on the RC8000 backing store. The tail of the filedescriptor must contain zeroes in words 7 through 10. Function: --------- A message is send to PRIMO to print the files in the filelist. The PRIMO transport numbers is written on current output with the following format: <file> transport <transport number> Storage requirements: --------------------- As for a normal ALGOL program. Error messages: --------------- ** printfile <file> <errortext> An error either with the PRIMO module or the file descriptor describing the file or the printer. This is only a warning and convert proceeds with the next file. Language: ALGOL --------- Maintenance level: user ------------------ \f 4 1980-10-22 Anders Lindgård device Lists processes in the RC8000 monitor. Call: ----- <outfile>=device <parameters> <outfile>::=<empty>/<filedescriptor> If the filedescriptor for outfile does not exist a working file is created. <parameters>::=<namelist>/dev.<integer range>/all.<boolean> <namelist>::=<name>/<namelist> <name> must be a process name <integer range>::=<integer>/<integer>.<integer> <boolean>::=yes/no Function: --------- Processes in the RC8000 are listed with the following format: <deviceno>:<kind> <name> <lower base> <upper base> ; <process description address> <deviceno> is only given for peripherals. If "all.yes" is specified all processes are listed. For a namelist all the names will be searched for and those found will be listed. Specifying dev.<integer> lists that device if any. dev.<integer>. <integer> lists the devices in that range. Storage requirements: --------------------- As for a normal ALGOL program. Error messages: --------------- None. Language: ALGOL --------- Maintenance level: user ------------------ \f 5 1908-10-29 Anders Lindgård describe Prints monitor data structures as messagebuffers, area processes internal processes, external processes and disc/drum chains. Example: -------- The call: describe buf.sos will list the message buffers send or received by sos. Call: ----- <outfile>=describe <parameters><limitspec> <outfile>::=<empty>/<filedescriptor> If outfile is specified output is printed there else on current output. <parameters>::=<bufspec>/<areaspec>/<extspec>/<intspec>/ <chainspec>/<procspec>/table <limitspec>::=<empty>/.<last>/.<first>.<last> <bufspec> ::=buf.all/buf.used/buf.<name><sender or receiver> <sender or receiver>::=<empty>/.s/.r/.s.r/.r.s <areaspec> ::=area.all/area.used/area.<name><user or reserver> <user or reserver>::=<empty>/.u/.r <extspec> ::=ext.all/ext.<device number>/ext.<name><user or reserver> <devicenumber>::=<integer> <intspec> ::=int.all<detail>/int.used<detail>/ int.<name><detail>/int.<parent>.p.<detail> <detail> ::=<empty>/.claims/.times/.registers/.bases <parent> ::=<name> <chainspec> ::=chain.all/chain.used/chain.<docname> <docname> ::=<name> <procspec> ::=proc.<name> Function: --------- The program scans the monitor tables and depending on the parameters in the call parts of the monitor data structures are listed. The limit specification is used to suppress part of the output as only the part of the datastructure between relative word "first" and relative word "last" is printed. ("first" and "last" included). buf "buf.all" will print all message buffers in the message buffer pool. "buf.used" will print all used message buffers in the pool. "buf.<name>.s will print all messages sent by the process <name> and "buf.<name>.r" all message received. "buf.<name>" prints all message sent or received by <name>. area \f 6 "area.all" will print all area processes and pseudo processes. "area.used" will print all area processes and pseudo processes actually used. "area.<name>" will print an area or pseudo process with <name> as name. "area.<name>.u" and "area.<name>.r" will print those area processes with <name> as a user or reserver respectively. ext "ext.all" will print all external processes. "ext.used" will print all named external processes. "ext.<device number>" will print the external process with that device number. "ext.<name>" will print the external process with that name. "ext.<name>.u" or "ext.<name>.r" will print the external proces- ses which have <name> as user or reserver respectively. int If <detail> is non empty then the limit specification is void. When one or more detail specifications are specified the program prints interval, kind and name together with the specified details. ".claims" prints the backing storage claims. ".times" prints the run time, wait time and cpu time. ".registers" prints the working registers. ".bases" prints the max, standard and catalog bases. "int.all" will print all internal processes. "int.used" will print all named internal processes. "int.<parent>.p"will print all internal processes with <parent> as a parent. "int.<name>" will print the internal process with name <name>. chain "chain.all" prints all chainheads in the drum/disc chains. "chain.used" prints all chainheads which are not idle. "chain.<docname>" prints the chainhead with the given document- name. proc Prints the process with the given name, and a format depending on kind. table This specification prints parts of the main monitor table from halfword 66 and forward. Storage requirements: --------------------- As for a normal ALGOL program. Error messages: --------------- **<name> not found (<type>) The process with the name <name> is not described in the monitor. **<name> not external kind <kind> The proces with the name <name> is an internal, area or pseodo process **<name> not area or pseudo \f 7 The process is not an area or pseudo process **<name> not internal The process with the name <name> is not an internal process Language: algol --------- Maintenance level: user ------------------ \f 8 1980-10-20 Anders Lindgård docmove Moves files from one backing store document to another. Call: ----- <doc>=docmove <files> <doc>::=<name of a backing store document> <files>::=<file>/<files> <file> must be an exiting backing store file. Function: --------- The files specified in the call will be moved to the document <doc> provided enough resources are available on <doc> for the user. Storage requirements: --------------------- As for a normal ALGOL program. Error messages: --------------- ***document name missing No left side in the call ***<doc> is not a document The left side is not a document name **param <integer> A parameter of the form .<integer> or <sp> <integer> was given at the right side in the call This is a warning only **<file> does not exist <file> does not exist in the catalog. The parameter is skipped. **<file> segment < 1 <file> describes a filedescriptor with segments <=0 The parameter is skipped. **<file> xxxxxxxxxxxx create trouble. Probably no resources on the document <doc>. **<file> base interval The working file could not be given the correct base interval. Probably an error in permanenting the file. The file may be left as temporary. Language: ALGOL --------- Maintenance level: user ------------------ \f 9 1908-10-27 Anders Lindgård extract Utility program for handling contract files. It can extract a file (or number of files) from contract files with scope user without specifying the contract files. It can extract all files from a given contract file. Further files may be printed on a printer using the PRIMO module. Example: -------- The call: lp=extract myfile search through all contract files with scope user (content=10). If "myfile" is found, it will be created with scope day and further printed on the printer lp. Call: ----- <printer>=extract <specifications> <printer>::=<empty>/<filedescriptor> If the printer specification is non empty it is checked that the filedescriptor describes a printer. <specifications> ::=<allspec>/<fromspec>/<filelist> <allspec> ::=all.<contract file name> <fromspec>::=from.<contract file name> <filelist> <filelist>::=<filename>/<filelist> A <contract file name> must describe an existing file with content=10. Function: --------- The program extract files from contract files. The files are created with scope day if possible else with scope login. If a left side is given in the call this assumed to describe a printer and the files extracted are printed on that printer using the PRIMO moule. If "all.<contract file name>" is specified then all files on that contract file are extracted. If "from.<contract file name>" is specified then the files given in the filelist are extracted from that contract file. "extract from.--- " is in most cases much faster than "contract from.--- ". If only a <filelist> is specified then the program searches through all contract files with scope user and those found are extracted. If two contracted files have the same names it is unpredictable which one is extracted. It is mush faster to use <fromspec> than just a <filelist> as the program in the latter case also has to scan the main catalog to find the contract file. Storage requirements: --------------------- As for a normal ALGOL program. \f 10 Error messages: --------------- ***extractfile printer error <printer> <printer> did not describe a printer ***<contractfile> does not exist In "from" or "all" the contract file specified does not exist or some other serious error. ***<contractfile> is not a contract file In "from" or "all" the contract file specified does not have content=10. **<filename> not found The file name was not found in the specified contract file (from) or not in any contract file (filelist only). Warning. **<filename> create entry result <result> The file <filename> could not be created. The result of create entry is shown. The file is not copied. Warning. **<filename> set entry base The entry base of <filename> could not be set with user base. Filename will probably be on login scope. Warning. Language: ALGOL --------- Maintenance level: user ------------------ \f 11 1978-09-04 Anders Lindgård listint Lists the names of the currently existing internal processes, their parents and the core adresses and maxbases. Call: ----- listint Function: --------- The internal process descriptions in the monitor are searched and for any existing process a line is written on current output with the following format: <process name> <parent name> <first address> <last address> <lower maxbase> <upper maxbase> On the RC4000 <lower maxbase> and <upper maxbase> are left out. Storage requirements: --------------------- As for a normal ALGOL program. Error messages: --------------- None. Language: ALGOL --------- Maintenance level: user ------------------ User \f 12 1980-10-20 Anders Lindgård m macro Creates and executes a file by modifying the file in the call by the auxilliary parameters in the call. Call: ----- <outfile>=macro <file>.<par> <outfile>::=<empty>/<filedescriptor> <file> specifies the input file <par> specifies the fp-parameters. Up to 10 parameters may be defined. The parameters are separated by a . . <outfile> If specified macro will use this as output file, else a working file is created. Function: --------- The file specified is searched for the character !. If the next character is a number the corresponding parameter from the parame- terlist is inserted instead of the !<no> double character. Finally the file is executed as if the program "i" was called. The program should never be called inside a a parantheses. Storage requirements: --------------------- As for a normal ALGOL program. Error messages: --------------- **parameters missing Too few paramters in the call ***connect input <file> The input file <file> did not exist Language: ALGOL --------- Maintenance level: user ------------------ User \f 13 1980-10-21 Anders Lindgård mtread Reads magnetic tape files with any blocklength. The tape must contain text in either ascii, ebcd or ebcdic. Call: ----- <outfile>=mtread <file> <par> <outfile>::=<empty>/<filedescriptor> <file> specifies the magnetic tape name <outfile> If specified mtread will use this as output file, else a working file is created. <par>::=ascii.<boolean>/ebcd.<boolean>/ebcdic.<boolean>/ cards.<boolean>/list.<boolean>/ lastchar.<integer>/file.<integer>/ max.<integer> <boolean>::=yes/no if no parameters are specified the default values are: ascii.yes cards.no file.0 list.no lastchar.132 even.yes max.1000 Function: --------- The program read 1600 bpi magnetic tapes in odd parity with a maximum blocklength given by the parameter "max" (in RC8000 double words (default 1000)). The content is converted to ISO characters. The default file is file 0 and may be changed using the "file" parameter. if "list.yes" is specified the character values is written as integers and no conversion takes place. if "list.no" then the content is converted to ISO characters. The basic modes of the program is determined by the parameters "ascii","ebcd" and "ebcdic" of which only one can be true. The program is very slow in reading magnetic tapes, so the user should save <outfile> for later use rather than reread the tape. ascii This is the default mode. If "cards" is set then "lastchar" is default 72 else 132. The program reads the text line by line and only up to lastchar characters are written on the output file. NUL characters are skipped and EM characters are replaced by the sequence <25>. If cards is set a newline character is generated for each card. ebcd In this mode the content of the tape should be ebcd characters. "cards" is by default true and "lastchar" is 72. ebcdic As ebcd but the content of the tape should be ebcdic characters. \f 14 Storage requirements: --------------------- As for a normal ALGOL program+4*<max>+1190 halfwords. Error messages: --------------- **parity error Parity error on the tape. This is a warning. ***input missing No tape name was specified in the call ***blocklength error <blocklength> increase blocklength call: mtread max.<max> where max > <oldmax> The blocklength on the tape is larger than the one given in the call. Increase blocklength. Language: ALGOL --------- Maintenance level: user ------------------ User \f 15 1980-12-08 Anders Lindgård multicopy Copies a number of textfiles together to a single printfile and theese are repeated the number of times specified. If the left side of the call specifies a printer PRIMO is asked to print the generated file on that printer. Example: -------- The fp-command lp=multicopy fpnames insertproc copies.4 will create a working file with 4 copies of "fpnames" and "insertproc" which then is converted by PRIMO to the printer lp. Call: ----- <outfile>=multicopy <filelist> <copyoption> <outfile>::=<empty> /<filedescriptor> If <empty> the standard printer "lp" is assumed for <outfile>. If the <filedescriptor> describes a printer this printer is used else the filelist is just copied to <outfile> as specified by < copyoption>. <filelist>::=<file>/<filelist> <file> must describe a text file on the RC8000 backing store. <copyoptions>::=copies.<integer> Specifies the number of times the filelist should be copied. Function: --------- The filelist is scanned and the files are copied together to a single file the number of times specified. If more than one 'ff' character is found on a single line the rest of the 'ff' characters are convert to 0-characters. If left side in the call specifies a printer the merged file is copied using PRIMO onto that printer. No left side corresponds to "lp". The PRIMO transport numbers is written on current output with the following format: <file> transport <transport number> Storage requirements: --------------------- As for a normal ALGOL program. Error messages: --------------- ** printfile <file> <errortext> An error either with the PRIMO module or the file descriptor describing the file or the printer. This is only a warning. ***connect input <file> <res> An input file could not be connected. ***bs claims exceeded It was not possible to create a working area. ***connect <file> <res> It was not possible to connect to a working file or \f 16 to the file in the left side of the call Language: ALGOL --------- Maintenance level: user ------------------ \f 17 1980-10-20 Anders Lindgård remsp Removes spaces from the right end of a line. This to decrease the backing store requirements for FORTRAN programs from other instal- lations. Call: ----- <outputfile>=remsp <inputfile> <parameters> <outfile>::=<empty>/<filedescriptor> <inputfile> specifies the input file <parameters>::=last.<integer> Default for "last" is 72. <outfile> If specified remsp will use this as output file, else current output is used. Function: --------- The file is read line by line and all spaces between the rightmost character other than space and "last" (inclusive) is removed. All characters to the right of "last" is removed. Storage requirements: --------------------- As for a normal ALGOL program. Error messages: --------------- None. Language: ALGOL --------- Maintenance level: user ------------------ \f 18 1908-10-20 Anders Lindgård searchcon Utility program for handling contract files. It can list all contract files with scope user. It can make a list of the files contracted. It can find a file contractted with a given name. Example: -------- The call: searchcon will list all files with scope user which are contract files. The call: searchcon list.yes will further list all files on theese contract files. To find a file on a contract file one can use the call: searchcon myfile which wil search through all the contract files (with scope user) for the file "myfile". If it is found the contract file will be listed. Call: ----- <outfile>=searchcon <searchfile> <options> <outfile>::=<empty>/<filedescriptor> <searchfile>::=<empty>/<filename> <options>::=<empty>/list.<boolean> <boolean>::=yes/no Function: --------- See above under example. Storage requirements: --------------------- As for a normal ALGOL program. Error messages: --------------- None. Language: ALGOL --------- Maintenance level: user ------------------ User \f 19 1978-09-27 Anders Lindgård stdvar Creates standard variables for the ALGOL8 system. The variables may be regarded as own variables with a specified value. If a variable already exist in the catalog it is removed. The variables are given scope temp if no other scope is specified. Example ------- The FP-command and program input: varproc=stdvar scope.user Anders Lindgård 1978 09 27 begin real pi=3.14; boolean nl=false add 10,ff=false add 12; integer zero; end; will create a no type procedure "varproc" and a number of filedescriptors having "varproc" as document name. Theese variables can be used in an algol program and have initial values: real pi has the value 3.14 boolean nl has the value false add 10 i.e. a NL-character boolean ff has the value false add 12 i.e. a FF-character integer zero has the value 0 Call: ----- <left side>=stdvar <s> <scope spec> <list spec> where: <left side> becomes the name of a no type procedure and will contain the initial values <scope spec>::=scope.<scope> scope::=temp/login/user/project <list spec>::=list.yes/list.no Function: --------- A disc area of one segment with the name specified as <left side> to the program call is created. Current input is read to a "begin" is met. The variables are read according to the syntax. "end" terminates reading. If the syntax check was ok the variables are created as filedescriptors and if an initial value is specified this is placed on the discarea. On the RC4000 under system 2 <scope spec> is replaced by key.<integer> where key is the catalog key. \f 20 Syntax for input ---------------- A legal input for stdvar consist of: <anything> begin <variabel list> end <variabel list>::=<declarator> <identifierspeclist>;/ <variabellist> <variabellist> <declarator>::=boolean/integer/real/long <identifierspeclist>::=<identifierspec>/<identifierspec>,<identifierspeclist> <identifierspec>::=<identifier>/<identifier>=<value spec> <value spec> must be a <number> for integer, real and long declarators. For boolean declarator it must be: <value spec>::=true/false/false add <integer> where <integer> must be in the range 0 to 128. <identifier> has the restriction that it may only consist of one letter followed by 10 small letters or digits. Storage requirements: --------------------- As for a normal ALGOL program. Warnings -------- **declarator <wrong declarator> an illegal declarator was found. The wrong declarator is shown. **identifier length <identifier> more than 11 letters or digits in an identifier. The name of the identifier is shown. **delimiter <delimiter> wrong delimiter. Value is shown. **-delimiter delimiter missing. **create entry <identifier> , result <result> An entry could not be created. The result of "create entry" is shown. **scope <identifier> , result <result> The identifier could not obtain the desired scope. The result is shown. **changeentry <left side> , result <result> The tail of <left siede> could not be set. The result of "change entry" is shown. Error messages: --------------- ***exhausted the input file was exhausted before an "end" was met. ***left side missing no left side in the call of "stdvar". ***connect left side <left side> \f 21 the left side in the program call cannot be connected. ***create left side <left side> , result <result> A file of 1 segment with <left side> as name could not be created. The result of "create entry" is shown. ***scope left side <left side> <left side> could not obtain the required scope. ***maxentry more than 100 identifiers. Language: ALGOL --------- Maintenance level: user ------------------ User \f 22 1979-05-09 Anders Lindgård testbuf List the the messagebuffers send by a process or received by a process. Example: ------- The FP-command: testbuf s.s punch.r will list the messagebuffers which currently has the operating system "s" as sender and the messagebuffers received by "punch" Call: ----- testbuf <list> <list>::=<empty>/<processname>.s/<processname>.r/<list> Function: --------- The message buffer pool of monitor is scanned. For messagebuffers which have <processname> as sender or receiver respectively the bufferaddress and state is listed. If neither sender or receiver is given in the call, the number of available buffers will be listed. Storage requirements: --------------------- FP+512 halfwords Error messages: --------------- None. Language: SLANG --------- Maintenance level: computer department ------------------ \f 23 1979-05-08 Anders Lindgård writestd Lists a catalog entry according to its content key (FP manual III). For ALGOL and FORTRAN programs and procedures the date of translation is given. For external procedures the procedure type and the parameter specification is given. For external variables the initaial value is given. For a filedescriptor, which do not describe a backing store area, information about the main reference is given. Example ------- The FP-command: writestd sin will produce the output: real procedure sin(value real); -8388607:8388605 key=3 entry in arctan main entry algollib , 45 segments on drum translated 80 04 16 12 51 59 alarm address std.fnct.2 Call: ----- <left side>=writestd <identifier list> <parameter list> where: <left side> if specified will contain the output from writestd. <identifier list>::=<identifier>/<identifier list> <identifier>::=<filedescriptor> <parameterlist>::=segments.<boolean>/ details.<boolean>/ survey.<boolean>/ externals.<boolean>/ abswords.<boolean>/ points.<boolean>/<parameterlist> <boolean>::=yes/no Function: --------- The parameter list is initialized to segments.yes The parameters externals, abswords and points will cause a listing of the external list, the abswords and the points for an external procedure. Segments will cause a listing of the number of segments used by the program or procedure. details corresponds to setting of all parameters. survey gives a somewhat less detailed listing. Storage requirements: --------------------- As for a normal ALGOL program. \f 24 Warnings -------- ** procedure inconsistent The segements belonging to this procedure cannot be an external algol or fortran procedure as the content do not fulfil the rules. **alarm address nonsense The alarm address in an assembly language coded procedure do no contain a proper alarm address **external error <name> <result> **external error <name> 0 declared <list> The external found on the segment does not exist in the catalog or do not match the one found in the catalog. Error messages: --------------- ***<identifier> unknown The <identifier> was not described in the catalog. ***connect segment <name> The backing store area for a main entry could not be connected. The name is shown. Language: ALGOL --------- Maintenance level: user ------------------ \f ▶EOF◀