From: Program Librarian Computation Center The Pennsylvania State University University Park, Pa. 16802 To: ASSIST requestor Please find enclosed distribution writeup for ASSIST version 4.0/A2. Your tape is written as you requested, as follows: 1. VOL=SER=ASSIST, 9-track, standard labels, 1600 BPI 2. VOL=SER=ASSIST, 9-track, standard labels, 800 BPI 3. unlabeled, 9-track, 1600 BPI 4. unlabeled, 9-track, 800 BPI 5. VOL=SER=_______________, 7 - 9 track, 800 - 1600 BPI. NOTES: 1) The OS object decks in files 17 and 18 were generated under 4.0/A. The DOS object decks are from 3.0/A. 2) If the XMACRO package is to be used this version has one update from 3.0. The update can be found in file 27. 3) File 27 (ASUPDTES) now includes the updates for both 3.0/A ----> 3.0/B 3.0/B ----> 4.0/A 4.0/A ----> 4.0/A1 and 4.0/A ----> 4.0/A2 If your tape contains additional files beyond the standard ASSIST tape, these files are listed below. 4.0/A2 - Dec 1975 ASSIST SYSTEM DISTRIBUTION WRITEUP This writeup is the basic document accompanying any ASSIST distribution tape. It is written for anyone who is going to implement ASSIST. It is mainly oriented to OS/360 systems, but contains some recommendations and procedures for DOS/360 and other systems. SUBJECT -----INDEX----- ASSIST DISTRIBUTION POLICY CONTACT ADDRESSES CURRENT STATUS COPYED - MULTIPLE COPY AND EDIT PROGRAM (particularly used for printing documentation files from tape) TAPE FILE LIST ASSIST SYSTEM GENERATION NOTES FOR DOS/360 AND OTHER SYSTEMS MISCELLANEOUS NOTES ON ASSEMBLING ASSIST ASSIST OVERLAY STRUCTURE CONTROL CARDS AND HASP AUTOBATCH CHANGES AND KNOWN ERRORS ASSIST DISTRIBUTION POLICY ASSIST is distributed free of charge. No warranty of any kind is implied by such distribution. As of March 1, 1998, ASSIST is in the public domain and is not copyrighted. No support or assistance is available from Penn State University. STATUS: Version 4.0/A2 cleans up several problems known in 4.0/A. It also fixes the fixes sent out in 4.0/A1. File 16, SOURCE6, contains the main new feature, the Assist Extended Interpreter. Version 4.0/B is currently being tested and should be released early next year. This version tests a few new fixes and some code efficiency changes. Acknowledgment: The extensive time and contributions of Charles Hughes and Charles Pfleeger, both of the Computer Science Department at the University of Tennessee is the primary reason Assist is at its' current status. The contributions of Kansas State University also greatly aided our work in providing the latest fixes. COPYED - MULTIPLE COPY AND EDIT PROGRAM (uses OS/360 QSAM macros) PURPOSE COPYED can be used to make multiple copies of a data set and perform certain translation and editing functions. Its primary function is to produce copies of documentation files included with the XMACRO or ASSIST systems. **** CURRENTLY USABLE UNDER OS/360 ONLY **** USE COPYED reads from a file using DDNAME FT08F001, performs any required editing, and places the required number of copies on a file using DDNAME FT09F001 (normally a printer). The number of copies and editing procedure are controlled by keyword parameters supplied in the PARM field to the program. The following keywords, separated by commas, may be used in the PARM field to control program execution: NCOPY=# # gives the number of copies of the input file desired. If NCOPY is not specified, it is assumed to be 1. If NCOPY has a value greater than 1, the dataset defined by FT08F001 must be a rewindable device (disk or tape). TRANS=YES If this is coded, COPYED translates any lower case letters in the input to upper case. If this is not coded, and the output device is a printer, a TN train or equivalent may be required to print the lower case letters in a file. If this operand does not appear, COPYED does not perform any translation on the input. CNTRL=characters if this operand is not coded, the input dataset is assumed to contain carriage control characters in the first byte of each record. If it is coded, up to 10 characters may be specified. Whenever this character string is found in the input, the output carriage control for the next input record is set to indicate a new page. In all other cases, the carriage control is set for a single space. The standard control character used in ASSIST and XMACRO text files is a single comma in the first byte of an 80-byte record, which is otherwise blank. LMARG=# # blanks should be inserted between the first character of the input record and the remainder of it. If not coded, it is assumed to be 0. This provides for a left margin, since many files have text beginning in col 1. SEQNO=PRT The input is assumed to contain 80-byte records, without ASA carriage control characters. The first 72 bytes of the card image are written as controlled by the LMARG= value, 5 blanks are inserted, and the remaining 8 bytes are moved over and written. This allows for writing sequenced cardimages with a right margin between the text material and the sequence numbers. RETURN CODES COPYED returns with a return code of one of the following: RC = 0 successful completion. RC = 9 DCB for FT08F001 could not be opened. RC = 10 DCB for FT09F001 could not be opened. RC = 11 Neither DCB could be opened. STORAGE REQUIREMENTS COPYED requires 1824 bytes plus buffers and QSAM logic modules, if not already present in a link pack area. PROGRAM COPYED is written in standard OS/360 assembler language, uses QSAM logic, and requires only standard OS macro definitions. The source program is provided on file COPYEDSO, and the object module may be provided also. If so, it is contained in file COPYEDOB. DD CARD REQUIREMENTS Since COPYED can be used for varying record sizes, all of the following must be provided either from the DD cards or dataset labels: RECFM= (F, FB, FA, FBA) LRECL= BLKSIZE= SAMPLE USAGE 1. PRINT 1 COPY OF A WRITEUP FILE, PRINTING WITHOUT TRANSLATION, AND REMOVING SEQUENCE NUMBERS FROM 80-BYTE CARD IMAGES. This procedure is suitable for obtaining ALL ASSIST and XMACRO writeups. Obtain an object module of COPYED, then execute, with following parameters and DD cards in the execution (GO, DATA, etc) step. PARM='LMARG=4,CNTRL=,' obtain left margin.note comma control. FT08F001 DD DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200),other DD information. FT09F001 DD SYSOUT=A,DCB=(RECFM=FA,LRECL=77,BLKSIZE=77) 2. PRINT TWO COPIES OF A WRITEUP CONTAINING LOWER CASE LETTERS, WITH TRANSLATION AND SEQUENCE NUMBERS INCLUDED. PARM='CNTRL=,,TRANS=YES,LMARG=4,SEQNO=PRT,NCOPY=2' FT08F001 DD information describing tape (80-byte reocrds assumed) FT09F001 DD SYSOUT=A,DCB=(RECFM=FA,LRECL=90,BLKSIZE=90) The above procedure is useful for showing the contents of a tape file, especially if it is desired to use IEBUPDTE to modify the file, such as to insert local changes to documentation. 3. PLACE AN EDITED COPY OF A WRITEUP ON ANOTHER FILE FOR LATER PRINTING. PARM='CNTRL=,' FT08F001 DD tape information, UNIT=,VOL=SER=,DSN=, etc. FT09F001 DD DCB=(RECFM=FB,LRECL=81,BLKSIZE=8100),tape information. TAPE FILE LIST The following describes the files on the distribution tape (9-trk, 800 BPI, unless otherwise requested. All files contain 80-byte card- images, in 3200-byte blocks. Most of them can be manipulated using the IBM utilities IEBPTPCH, IEBGENER, and IEBUPDTE. Some of the files containing documentation require the use of the COPYED program to convert them from their given form to easily printable form. The description of the COPYED program is given separately. In the following list, all files were created with a DCB of DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200) unless otherwise noted. The TYPE heading is one of the following: SOURCE source deck, S/360 Assembly Language. OBJECT object module for S/360 system. TEXT documentation file, containing 80-byte sequenced card images, with text material in columns 1-72. New pages are indicated by a comma in column 1, with 2-72 blank. Unless otherwise noted, contains lower case letters . May be converted and printed by the COPYED program. JCL Job Control Language and other cards FILE FILE TYPE APPROX DESCRIPTION # DSNAME # cards ------------------------------------------------------------------------ 1. COPYEDSO SOURCE 290 COPYED source program. used to make multiple copies and perform some editing of text files. 2. COPYEDOB OBJECT 32 COPYED object module. ------------------------------------------------------------------------ ** FILES 3 - 7 MAKE UP X-MACRO PACKAGE VERSION 4.1 - APRIL 1972 ** 3. XMSYSGEN TEXT 400 describes how to add XMACRO package to system macro library. 4. XMWRITES TEXT 1200 contains some writeups on the individual macros and their usage. 5. XMACDEFS SOURCE 1350 XMACRO macro definitions. file is built for easy library additions, with IEBUPDTE ./ ADD cards. 6. XMSOURCE SOURCE 800 XMACRO service subroutine source programs, with ./ ADD cards betweeen modules used to place them in source library for later assembly. 7. XMACTEST SOURCE 300 test programs for various groups of of the X-MACRO macros and routines. ------------------------------------------------------------------------ 8. ASDISTRB TEXT 900 distribution writeup 9. ASPLMXXX TEXT 7200 ASSIST PROGRAM LOGIC MANUAL - describes ASSIST internal conventions and structure; give data for modifying ASSIST and generating versions with desired alternate combinations of features. (NOTE: it is flagged as version 2.1/A: any changes are noted in this writeup). 10. ASUSERGD TEXT 3900 ASSIST INTRODUCTORY USER'S GUIDE Describes language features accepted by ASSIST, extra debug and conversion instructions, deck setup and paramater options for running jobs, list of messages. This (or part of it), is what would be distributed to student users. The last part (ASREPLGD) is the Replacement User's Guide. ** Following 6 files together make up the ASSIST source program, with specific sequence numbers given as first information ** 11. SOURCE1 SOURCE 4100 00001000-3748000 : all macros, global DSECTs, EQUs, SET variables needed for any ASSIST assembly. 12. SOURCE2 SOURCE 6300 03750000-08563260 : main program,I/O and conversion modules, interpreter, etc. Includes the only modules having any system dependent code (ASSIST - main prog- has GETMAIN/FREEMAIN, WTO, STIMER/TTIMER, etc), (XXXXIOCO - has only I/O - may include QSAM, BSAM, BPAM), (XXXXPSIE - has only SPIE/ STXIT). 13. SOURCE3 SOURCE 8400 08564000-21006260 : contains the basic ASSIST assembler module, assembler control table. 14. SOURCE4 SOURCE 1500 30000000-32924000 : contains the modules of the ASSIST Replace Monitor. Only needed if the SET variable &$REPL = 1 or 2. Supports REPL, RFLAG= parms. 15. SOURCE5 SOURCE 6300 40000000-67010000 : contains the modules of the ASSIST macro processor. Only needed if the SET variable &$MACROS = 1 . Supports MACRO=, and all other options pertaining to macro processing. 16. SOURCE6 SOURCE 2200 80000010-89999999 : contains the module for the Assist Extended Interpreter along with a dsect used only by the new interpreter. This is only needed if the set variable &$EXINT = 1. This supports the XOPC instruction. ** next 4 files are 4 different object modules for ASSIST, 2 for OS/360, 2 for DOS. storage requirements are for load modules, but not including required typical 50 bytes/statement assembled ** ASSYSGEN decks used to create these modules are in ASMISCEL file. Note: OBJECTOA is assembled with the new interpreter included. The other three object modules still use the old interpreter. 17. OBJECTOA OBJECT 1500 primary object deck: OS/360-type, Result of assembling all SOURCE# files with all options on, i.e., gigantic version with all options enabled. Generated for 360/65 speed, but will run on 360 or 370. Approx storage: 68K. NOTE: As of 4/75 this is assembled with the new interpreter on. The old interpreter has been excluded. 18. OBJECTOB OBJECT 800 minimal, but still usable OS/360 ASSIST, effectively an assembler-interpreter with no extras. Uses 1 reader, 1 printer; no punch, disk, or macro processing. Options NOT supported: CMPRS, COMNT, CPAGE, DECK, DISKU, KP, L, LIBMC, MACRO, MACTR, MNEST, MSTMG, OBJIN, P, PD, PX, REPL, RFLAG, SS, SSD, SSX . Does not support privileged operations or S/370-only operations. Generated for 360/65, but runnable on 360/370. 30K. 19. OBJECTDA OBJECT 1200 medium-large DOS/360 version, similiar to OBJECTOA with some options deleted. Does not support CMPRS, COMNT, object decks, 026 keypunch, S/370-only instructions. Does not currently support macro library, but Time defaults, etc. generated for 360/40 . does have macro processor with open code conditional assembly. Allows 1 card reader, printer, punch, intermediate disk. Gen'd for 360/40, but runs 360 or 370. About 50K . 20. OBJECTDB OBJECT 800 small DOS/360 ASSIST, i.e., like OBJECTOB, but with even more features deleted. Does allow disk intermediate+ 1 card reader+ 1 printer. about 30K. This version should be usable in 40K total storage. 21. ASTEST01 SOURCE 2100 A batch of test runs for ASSIST, consisting of programs with data, separated by $JOB cards. These are relatively short runs, and should be executed with a PARM field of BATCH,T=2,R=250 (model 65 speed). If run from this tape, use FREE=10240 or greater, for buffers. 22. ASTEST02 SOURCE 6050 A batch of test runs, like ASTEST01, but longer jobs, typically final projects from beginning assembler courses. For model 65, use BATCH,T=10,R=2000 23. ASTEST03 SOURCE 700 A batch of test jobs used to illustrate the ASSIST REplace Monitor (see ASREPLGD for usage of this feature). 360/65: BATCH,T=5,R=600 adequate. 24. ASTEST04 SOURCE 6500 A batch of test jobs to display the macro processor of ASSIST. The first set use only programmer-written macros, while the rest use macro library assumed to contain normal IBM macros. for 360/65, use BATCH,MACRO=F . WARNING: since ASSIST does all macro- processing in-core, it may be necessary to run tests with the macro library using DISKU option, and in a large region, like 280K, due to size of IBM macros (particularly IHBERMAC). Consider using LIBMC to examine the library macros. May require T=20 for some jobs in this batch. 25. ASTEST05 SOURCE 300 A batch of test jobs used to illustrate the new features of the Optional Extended interpreter. Should be executed only if the installation is running Assist with the optional interpreter. See ASUSERGD for usage of the XOPC instructions. For 360/65 use BATCH, T=20,R=2000 26. ASASSIGN TEXT 13000 Collection of programming assignments, explanatory writeups, course outlines, etc in current use at PSU for assembler&systems courses. The assignments are well-debugged, having been used many times, and often contain alternate choices to allow them to be used for several semesters. Also includes (at end), well- documented useful sample programs: EXCP, QSAM, BPAM, etc. *** PLEASE SEND TO ANYONE TEACHING SYSTEMS COURSES *** 27. ASUPDTES JCL 1900 JCL, IEBUPDTE decks used to create 3.1/A --> 3.1/B and 3.1/B --> 4.0/A 4.0/A --> 4.0/A1 and 4.0/A --> 4.0/A2 (current version) 28. ASMISCEL JCL - miscellaneous decks. First 4 parts are ASSYSGEN decks used to create object modules Also contains OS Link-Editor Overlay control cards 29. ASMISTXT TEXT - current list of ASSIST Users, misc. ASSIST SYSTEM GENERATION INTRODUCTION This writeup describes how to generate an ASSIST system tailored for the requirements of a particular installation, and how to add the generated program to the system. This material is oriented to OS/360, but material is given later regarding DOS/360 and other systems. Note that MOST of the OS/360 procedures have fairly similiar counterparts. It is assumed that the reader is familiar with the IBM utility program IEBUPDTE. It is also assumed that the symbol disttape gives the name of the distribution tape, and that LABEL=# gives the appropriate file number, as given in the tape file list previously. Before generating an ASSIST program, the reader should first obtain listings of the files ASPLMXXX and ASUSERGD. The program COPYEDB can be used to provide these listings. In particular, the reader should examine the following parts of ASPLMXXX: APPENDIX VII. SYSTEM RESOURCE REQUIREMENTS, JOB CONTROL LANGUAGE APPENDIX VIII. TIME AND RECORDS PROCESSING TESTING SUPPLIED VERSIONS OF ASSIST OBJECT MODULES It may be useful for the implementer to try out one or two of the versions of ASSIST supplied in object module form (OBJECTxx files), to get a feel for the various options, appearance of output, typical running times, and storage requirements. A simple and accurate way to do this is to punch at least some of the ASTESTxx files, and run them in as jobs to ASSIST. Note that these files contain tests for most options, which may then produce many errors if they are supplied to an ASSIST not supporting the desired options. GENERATING A NEW VERSION OF ASSIST TAILORED TO AN INSTALLATION The files SOURCE1 - SOURCE6 contain the ASSIST source program, written in S/360 BAL. All of the files may be concatenated and assembled together if desired, but only if Assembler G or H is being used. ASSIST is definitely too large to assemble in one assembly with Assembler F. Also note that SOURCE4, SOURCE5, and SOURCE6 may or may not be needed at all, while every assembly must include SOURCE1. NOTE: NONE OF THE FILES CONTAIN AN END CARD, SO THAT AN ERROR MESSAGE WILL DEFINITELY BE GENERATED BY THE ASSEMBLER (EOD ON SYSIN). HOWEVER, THE MODULE PRODUCED IS CORRECT. All generation of code inside ASSIST is controlled by a group of about 100 SET variables. Every effort has been made to allow any installation to choose just those options it desires, without paying memory space or time for unnecessary features. All of the SET variables are declared and given initial values in SOURCE1, on the cards having the following range of sequence numbers: 02172000 - 02265100 The implementer should inspect the cards noted above, and also APPENDIX II of the ASSIST PROGRAM LOGIC MANUAL (ASPLMXXX). The ones involving time, pages, and record limit processing should especially be checked. The implementer may of course modify the source using IEBUPDTE, but this is somewhat inconvenient if only a few changes to SET variables are desired. Therefore, immediately following the cards giving initial values to the SET variables, there is a single call to the macro ASSYSGEN . This macro is NOT included in the source files, so that the following procedure can be followed: 1. Create a version of the ASSYSGEN macro which does nothing but give values to various SET variables which are desired to be changed. 2. Place this macro in a PDS. 3. Assemble SOURCE1 plus one or more other SOURCE# files, while concatenating SYS1.MACLIB to the PDS containing the ASSYSGEN macro. Thus, from 1 to 4 assemblies are required, depending on assembler used and options needed (SOURCE,SOURCE5, and SOURCE6 may be omitted). NOTE: if ASSYSGEN is not supplied, this will lead to a severity 12 error in assembly, but the resulting module is still executable. (A CORRECT ASSIST ASSEMBLY WILL THUS HAVE 1-2 ERRORS, 1 FOR ASSYSGEN POSSIBLY, PLUS ONE FOR THE MISSING END CARD). The following illustrates the use of ASSYSGEN. //ASGEN1 EXEC PGM=IEBUPDTE,PARM=NEW //SYSPRINT DD SYSOUT=A //SYSUT2 DD UNIT=2314,VOL=SER=volser,DSN=ASGXX,DISP=(NEW,CATLG), X // SPACE=(TRK,(1,1,1)),DCB=SYS1.MACLIB,LABEL=RETPD=0000 //SYSIN DD * ./ ADD NAME=ASSYSGEN MACRO ASSYSGEN GBLA &$RECORD,&$COMNT,&$TIMER GBLB &$ACCT &$COMNT SETA 80 REQUIRE 80 percent comments in progs &$RECORD SETA 2 ALLOW SPECIAL PSU RECORD COUNTING &$TIMER SETA 2 ALLOW SPECIAL PSU TIMING &$ACCT SETB (1) PERMIT CHECKS ON ACCOUNTS,PSU LOCAL MEND For example, using Assembler 'G' in a catalogued procedure which has a procstepname of SOURCE yields the following example: //ASSMBL EXEC ASGC //SOURCE.SYSLIB DD UNIT=2314,VOL=SER=volser,DSN=ASGXX,DISP=SHR // DD DSN=SYS1.MACLIB,DISP=SHR,UNIT=2314,VOL=SER=volser //SOURCE.SYSIN DD DSN=ASSOURCE,UNIT=unit,VOL=SER=disttape,DISP=OLD NOTE: the decks used to generate and assemble the object modules provided are all included in the file ASMISCEL, so that it may be useful to punch these ASSYSGEN's. The programmer can choose the one closest to his system's requirements, and change only the cards needed. ASSIST CATALOGED PROCEDURE For ease of use, one or more cataloged procedures may be added to SYS1.PROCLIB for using ASSIST. The following gives a sample procedure, noting which cards may not be necessary, and which are local. //ASACG PROC //DATA EXEC PGM=ASSIST //FT05F001 DD DDNAME=INPUT (only needed if &$DATARD=1: 2 readers) //FT06F001 DD SYSOUT=A,DCB=(RECFM=FA,LRECL=133,BLKSIZE=133) printer //FT07F001 DD SYSOUT=B,DCB=(RECFM=F,LRECL=80,BLKSIZE=80) punch //FT08F001 DD UNIT=SYSDA,DISP=(,DELETE),SPACE=(3520,(100,10)), // DCB=(RECFM=F,BLKSIZE=3520) disk intermediate //SYSLIB DD DSN=SYS1.MACLIB,DISP=SHR // PEND ASSIST normally reads source from ddname SYSIN, so that FT05F001 is needed only if 2 readers are allowed (&$DATARD=1). FT07F001 is only needed if card punching is allowed (&$PUNCH=1). FT08F001 is needed only if users may place intermediate data on disk/drum (&$DISKU > 0). Note that optimizing disk use depends on devices used, so that the BLKSIZE above can be changed by JCL appropriately (DCB exit used to supply default value 3520). SYSLIB is needed only if the macro library processor is included (&$MACSLB=1), and should include any local macro libraries desired. WARNING: macro processing (especially of things like IHBERMAC) gobbles memory quickly. The set of DDNAME's above can be changed by using ASSYSGEN to modify the values of the GBLC variable &$IOUNIT (see a sample ASSYSGEN for this). Of course, the DOS/360 names are different. MULTIPLE VERSIONS OF ASSIST Depending on usage at an installation, it may be useful to create two distinct versions of ASSIST: one of minimal size, with none of the special options, and no macro processor, for use in first course in assembler. The other can include whatever options are desired, and may thus be a bit larger and slightly slower. For example, it may be set to go to disk automatically (about 10% CPU degradation). S/360 and S/370 DEPENDENCIES Note that ALL distributed object modules will run on S/360, S/370, or UNIVAC SERIES 70 systems. S/370 instructions can be provided and interpreted on S/360, but this is of course not as efficient as using S/370 instructions themselves. S/370 users should change &$S370 = 1. CONDITIONAL ASSEMBLY PROBLEMS We have tested the various options offered by ASSIST, but it is of course impossible to try every combination. Please let us know if some combination causes a loop or other error in open code (send an ASSYSGEN deck giving the options selected). Note that an ABEND SB37 in OS/360 could easily be caused by an open-code loop. NOTES FOR DOS/360 AND OTHER SYSTEMS DOS/360 NOTES While DOS/360 support is at the current time not as complete as OS/360 support, this situation should change in the near future, since we now have access to a DOS installation nearby. Hopefully, the next version will include DOS macro library support. Also, we expect to write some utility programs in system-independent FORTRAN/Assembler to provide the same utilities as OS/360 for our purposes (i.e., a replacement for IEBUPDTE in particular for use in doing updates). Since most of our users are OS/360 users, we will continue to supply updates in IEBUPDTE form. When we have a replacement, we will try to make it available. INTERMEDIATE DISK USAGE: ASSIST can function either as a totally in-core system, or it can place intermediate data on disk between Pass 1 and Pass 2. The latter method can be an execution-time option, and is generally recommended for DOS systems. The filename used by ASSIST as a default for this is SYS001, and it expects the device to be a 2314-type disk. These can be changed if desired by the ASSYSGEN. RUN SETUP: the following gives a sample deck setup which has been used to run ASSIST on a DOS system using the disk option. // A JOB CARD // OPTION LINK INCLUDE // EXEC LNKEDT ..... ASSIST OBJECT DECK9S0 // ASSGN SYS001,X'131' DISK INTERMEDIATE // DLBL XXDKUDC,'TEMPORARY FILE FOR ASSIST',0 // EXTENT SYS001,111111,1,0,2620,138 // EXEC batch of jobs, with $JOB card separators. /* /& ASSIST is extremely I/O bound if not running under a spooling system like POWER. It will drive reader and printer full-speed on a 360/40. Many thanks to Fran Hensler of Slippery Rock State College and to Les Sweet of HRB-Singer Corp for invaluable help on the DOS/360 ASSIST. We would appreciate any input from our DOS users regarding problems, features, etc. We are working on such things as making EOJ the exit command (rather than the OS BR 14), and also on getting a DOS overlay system set up (some users may want to build their own, using information in later section). Any DOS user who wants this should let us know: the code for it should be available long before the next major version distribution. UNIVAC SERIES 70 VMOS NOTES Penn State does not directly support a VMOS version of ASSIST. However, through a cooperative arrangement with the University of Dayton, ASSIST is available to VMOS users as follows: 1. Obtain a distribution tape from Penn State In the usual way. 2. Write to the following for VMOS updates and other software needed to assemble and execute ASSIST ON A VMOS system: Jack E. Kester Computer Science Department University of Dayton Dayton, Ohio 45409 As usual, send a tape along with your request. MISCELLANEOUS NOTES ON ASSEMBLING ASSIST ASSIST can be assembled either by Assembler F or G. However, it is very easy for dictionaries to be overrun in either. We do know that the entire system can be assembled in one run in 280K using Assembler G: we would not advise assembling a full version together in much less space. If you are having problems getting it to assemble in the available space, we would suggest the following: 1) Delete sections of code which will be AIF'd out during conditional assembly anyway. This will save dictionary space. Prime possibilities for this are the following modules (depending on local preferences): a) AOBJDK (object modules input and output) b) XREFA,XRCOLL,XRPRNT (cross-reference modules) c) XDDTABLE, XXXXGET, XXXXPUT (XGET and XPUT commands) d) OUTPT2 (some sections: much code exists for the CMPRS option) e) EXECUT (The new Optional Interpreter - SOURCE6) 2) Split up assemblies even further than they are already. SOURCE3 especially needs to be split. 3) Handle macros specially. It might be useful to place all of ASSIST's own internal macros on a library, then delete them from SOURCE1, so that they are only edited when needed. Many of the macros are used only in one or two CSECTs, so this process may save time. ASSIST OVERLAY STRUCTURE The layout below is intended as a guide to building an overlay version of ASSIST. Modules which may or may not exist are enclosed in parentheses, and segment names in brackets. | ASSIST | XXXXDECI | XXXXIOCO | XXXXSNAP | XXXXSPIE | VWXTABL | (XDDTABLE, XXXXGET, XXXXPUT) 1. | (REMONI, RFSYMS) 2. ------------------------------------------------------------------------ | EXECUT | APARMS | CACONS | (XDDFINI) 1. | (AOBJDK) | XXXXDECO | CBCONS | | CCCONS | (XDDGET) 1. | CDECNS | (XXXXHEXI) | CFHCNS | (XXXXHEXO) | CPCONS | CVCONS | CXCONS | CZCONS | ERRORS | ESDOPR | EVALUT | LTOPRS | MPCON0 | OUTPUT | SDTERM | SYMOPS | UTOPRS | (XREFA) ------------------------------------------------- | CODTL1 | BROPS2 | (XRPRNT) | IAMOP1 | CNDTL2 | IBASM1 | ICMOP2 | INPUT1 | IDASM2 | MOCON1 | MTCON2 | OPCOD1 | (XRCOLL) | SCANRS | (MACINT, MACFND, MACSCN, MCATRM, MCDTRM, MCGTST) 3. | (MCSCOP, MCSYSR, MCVSCN) 3. ----------------------------------------- | (MACLEX, MACRO1, MCBODY, MCGNCD) 3. | (MEXPND) 3. | (MXERRM, MXINST, MXMVSR) 4. EXPLANATION OF SEGMENTS main control program, I/O modules, Replace Monitor interpreter, other run-time support modules parameter analysis, called 3-4 times before each assembly. main program of assembler, modules required for both passes close-up routine for XGET/XPUT modules object deck loader and puncher pass 1 of assembler macro definition scanners not also used in expansion macro expaansion routines pass 2 of assembler contains only cross-reference printing now, after pass 2. NOTES 1. These modules are used only for XGET / XPUT support. 2. These modules comprise the Replace Monitor. *****NOTE***** IF IT IS USED (&$REPL > 0), THE SEGMENT MUST BE MOVED TO THE SEGMENT. The Replace Monitor may be invoked during any part of assembly, and it calls the interpreter. For this reason, smaller systems should avoid using the Replace Monitor. 3. These modules (with those labeled 4.) make up the macro processor. 4. *****NOTE***** THESE MODULES (MXERRM, MXINST, MXINST, MXMVSR) MUST BE MOVED INTO IF OPEN CODE CONDITIONAL ASSEMBLY IS ALLOWED (MACRO1 CALLS THEM THEN). I.e., if &$MACOPC = 1, only MEXPND can be overlaid with macro definition modules. Unless open code conditional assembly is expected to be rare, even this should not be done (i.e., combine MAC1 and MAC2 into ASM1 for best speed). FURTHER POSSIBILITIES The layout given is perhaps not optimal, but can be obtained without changing the source program or causing excessive overhead. Other improvements might be gained by splitting some of the modules in having multiple entries, of which some are called only at particular times. A segment might be created to hold all pre-pass 1 initialization, for code between passes, and more code placed into . This kind of technique could be done with minor source changes, mainly involving changing some ENTRYs to CSECTs, and moving some local variables into the AVWXTABL control block. Depending on local usage, some OS users may want to use multiple region overlays, placing seldom-called modules togther in extra regions. APPROXIMATE STORAGE SIZES, VERSION 4.0/A 1. Full ASSIST, non-overlaid 68K 2. Overlay version of 1, with all macro modules in , and moved into 57K 3. Overlay version of 2, but with Replace Monitor deleted, so that can be used. 45K 4. Overlay version of 3, but with open code conditional asm removed, so , O.K. 39K 5. Version 4, with XGET/XPUT modules deleted 37K 6. Minimal version with macro processor, but no macro library. Only reader/printer, no extras, etc. 35K 7. Basic assembler/interpreter, no macros at all 20K (NOTE: file ASMISCEL contains some OS/360 overlay cards). CONTROL CARDS AND HASP AUTOBATCH Although the ASSIST User's Guide gives several possibilities for control card setups, everyone has their own preferences and will probably want to change that section of the Guide. Version 3.0/A now provides more flexibility than previously. Among other things, setting &$HASPBT = 1 produces code for a flexible HASP autobatch operation, and the dimensioned GBLC variable &$BTCC(4) allows control cards to be changed as desired. We consider the latter first. &$BTCC(1) = control character used for control cards, default = '$' as in $JOB . &$BTCC(2) = characters used with &$BTCC(1) to indicate the start of a normal job in batch mode: default is 'JOB' . &$BTCC(3) = characters used following assembler END card to show that execution is desired, and data cards may follow. Execution normally requires such a card to be present. Default is 'ENTRY' (requiring a $ENTRY card), but some may want 'DATA' instead. Finally, if set to '', no such card is needed or recognized. &$BTCC(4) = characters recognized as an end-of-file marker, causing ASSIST to terminate processing. Default is 'STOP' . If such a feature is not desired, set to '' (HASP autobatch users might prefer the latter). Users of the HASP autobatch feature should find that the current code should do most of what they want (obtained by &$HASPBT = 1). One possibility of change is to add accounting routines when an OS JOB card is found. When invoking ASSIST this way, it should be set up to have BATCH as a default, or be passed BATCH, and other desired limits. The following actions are performed: 1) When looking for a $JOB card, if ASSIST finds a // card (other than an OS NULL card), it assumes that this is a JOB card. If the next card following is actually a $JOB card, processing is as normal. If not, the card is saved, and ASSIST creates a dummy $JOB card for the user. Some installations may wish to change this code so that options are given in such a card, thus allowing different defaults for ASSIST in autobatch compared with other usage. 2) Any single // card may be read as data anytime. 3) When two OS NULL cards are found, ASSIST produces an end-file indication to an executing user program. 4) When a $JOB card is requested immediately after two NULL cards were found, ASSIST PUT's one line to clear the buffer, then issues the GET which will indicate to HASP that end-of-job termination processing should occur. ASSIST will of course then wait until HASP feeds it another job. Given the above actions, users may submit single OS jobs which: 1) Contain NO $JOB cards, and consist of assembler source and data, with dummy $JOB supplied. 2) Contain one or more $JOB cards, i.e., user may submit own batch if he wants. Many thanks to Steve Koehl (Ohio State University) and Paul Siegel (SUNY at Stony Brook) for input regarding HASP autobatch. CHANGES 1. (OS USERS) - SET variable &$FREEMN is now provided to place a lower limit on any FREE= value. This is useful in preventing ABEND 80A errors, especially those caused by miscoding, i.e. FREE=819 instead of 8192. Code: 04293285-04293315. 2. *** FIRST CARD NOT READ: after execution, if there are any more data cards not read, the first one is printed. Code: 04136610- . 3. DUMP SPACING- the SET variable &$DMPAG ma ybe used to suppress the two page skips which usually occur in a dump (set &$DMPAG=0 to suppress page skip in dump). Code: 08373800- in XXXXSNAP. 4. CPAGE DEFAULT- previously, NOCPAGE was the default, but this is changed to CPAGE if page control is generated at all. Code: 04525300. 5. REGISTER LIMITATION REMOVED- registers used to be required to be single self-defining terms or EQU symbols. They may now be arbitrary expressions, thus allowing (REG) or REG+1, for example. Code: 13980000, 14358000- . 6. EXTENDED RR BRANCH MNEMONICS- these have been added as a standard feature. They are well flagged if anyone wants to get rid of them. Code: 17439000- in module OPCOD1. 7. XREF= A cross-reference listing is now provided, if &!XREF=1, and XREF= is supplied in parm field. The cross-reference may be turned on and off via *XREF cards, and is unusual in that it marks modify references by making them negative statement numbers. 8. Control card scanning- has been drastically modified to make it more general, and to accomadate HASP autobatch environment. Any user with local modifications should watch out for this. 9. EXTENDED INTERPRETER - A new , optional, extended interpreter is included with this release. A new debugging and analysis instruction (XOPC) is supported by the new interpreter. In addition to the above, many bugs have been fixed. KNOWN BUGS 1. Macro Period Problem: in macro statements (like &C SETC '.'), ASSIST seems to want two periods for each real period, where Asm F or G will accept 1. This no longer affects periods in model statements, i.e. A 0,=E'1.0' works right now. 2. Explicit Concatenation Problem: in some cases, ASSIST requires an explicit period where others do not, sometimes causing an AS229 message during expansion, but none during scanning of macros. 3. Syslist Comparison Problem: an AS208 message is produced for statements of following form: AIF ('&SYSLIST(1,1)' EQ 'C').MLW04 The problem only seems to occur with constant subscripts. 4. '80A' Problem: ASSIST may ABEND (OS) with 80A. This is usually caused by not having a large enough FREE= value, especially when the DISKU option or XGET/XPUT are used very much. FREE= should be set higher if needed. 5. *Syslib - A *Syslib card with no arguments and not preceded by any macroes caused ASSIST to ABEND. The problem was trying to open the macro library with a blank or null name list. Fix appears in code : 16707331 - 16707337. 6. Replace Monitor - Release 3.0/A (only) has a problem in the Econtrol dsect causing the Replace Monitor to work inconsistantly. Fix Take DS 0D at 03710030 and move it to 03711950. 7. Entry Stmt - A label name on an entry statement which is too long will cause ASSIST to ABEND. Fix : 11465000 8. XREF - XREF portion of the symbol table routine SYFIND caused abend on core overflow condition. This entire area has been modified. 9. PSW on error termination fixed. 10. Infinite CPU and PRINT loops on certain error terminations. 11. XGET/XPUT problems with reopening data sets 12. Single quote nested in titles.