, 00000010 00000020 00000030 00000040 From: Program Librarian 00000050 Computation Center 00000060 The Pennsylvania State University 00000070 University Park, Pa. 16802 00000080 00000090 To: ASSIST requestor 00000100 00000110 00000120 00000130 00000140 00000150 Please find enclosed distribution writeup for ASSIST version 00000160 4.0/A2. Your tape is written as you requested, as follows: 00000170 00000180 1. VOL=SER=ASSIST, 9-track, standard labels, 1600 BPI 00000190 00000200 2. VOL=SER=ASSIST, 9-track, standard labels, 800 BPI 00000210 00000220 3. unlabeled, 9-track, 1600 BPI 00000230 00000240 4. unlabeled, 9-track, 800 BPI 00000250 00000260 5. VOL=SER=_______________, 7 - 9 track, 800 - 1600 BPI. 00000270 00000280 NOTES: 00000290 1) The OS object decks in files 17 and 18 were generated 00000320 under 4.0/A. The DOS object decks are from 3.0/A. 00000330 2) If the XMACRO package is to be used this version has one 00000340 update from 3.0. The update can be found in file 27. 00000350 3) File 27 (ASUPDTES) now includes the updates for both 00000360 3.0/A ----> 3.0/B 00000370 3.0/B ----> 4.0/A 00000380 4.0/A ----> 4.0/A1 00000382 and 4.0/A ----> 4.0/A2 00000384 00000390 00000400 If your tape contains additional files beyond the standard 00000410 ASSIST tape, these files are listed below. 00000420 , 00001000 ASDISTRB - 01 00001010 4.0/A2 - Dec 197500001020 ASSIST SYSTEM DISTRIBUTION WRITEUP 00001030 00001040 This writeup is the basic document accompanying any ASSIST 00001050 distribution tape. It is written for anyone who is going to implement 00001060 ASSIST. It is mainly oriented to OS/360 systems, but contains some 00001070 recommendations and procedures for DOS/360 and other systems. 00001080 00001090 SUBJECT -----INDEX----- PAGE00001100 ASSIST DISTRIBUTION POLICY .......................................... 0100001110 CONTACT ADDRESSES ................................................... 0100001120 CURRENT STATUS ...................................................... 0100001130 COPYED - MULTIPLE COPY AND EDIT PROGRAM ............................. 0200001140 (particularly used for printing documentation files from tape) 00001150 TAPE FILE LIST ...................................................... 0400001160 ASSIST SYSTEM GENERATION ............................................ 0800001170 NOTES FOR DOS/360 AND OTHER SYSTEMS ................................. 1100001180 MISCELLANEOUS NOTES ON ASSEMBLING ASSIST ............................ 1200001190 ASSIST OVERLAY STRUCTURE ............................................ 1300001200 CONTROL CARDS AND HASP AUTOBATCH .................................... 1500001210 CHANGES AND KNOWN ERRORS ............................................ 1600001220 00001230 ASSIST DISTRIBUTION POLICY 00001240 ASSIST is currently distributed free of charge to educational 00001250 installations upon request. No warranty of any kind is implied by such 00001260 distribution. No formal contract is required. As of March 1, 1998, 00001270 ASSIST is in the public domain and is not copyrighted. 00001280 00001560 STATUS: Version 4.0/A2 cleans up several problems known in 4.0/A. 00001564 It also fixes the fixes sent out in 4.0/A1. 00001568 File 16, SOURCE6, contains the main new feature, the Assist 00001580 Extended Interpreter. 00001590 Version 4.0/B is currently being tested and should be 00001591 released early next year. This version tests a few new 00001592 fixes and some code efficiency changes. 00001593 00001595 Acknowledgment: The extensive time and contributions of Charles 00001600 Hughes and Charles Pfleeger, both of the Computer Science 00001610 Department at the University of Tennessee is the primary 00001620 reason Assist is at its' current status. 00001630 The contributions of Kansas State University also greatly 00001640 aided our work in providing the latest fixes. 00001650 , 00002000 ASDISTRB - 02 00002010 00002020 COPYED - MULTIPLE COPY AND EDIT PROGRAM (uses OS/360 QSAM macros) 00002030 00002040 PURPOSE 00002050 COPYED can be used to make multiple copies of a data set and 00002060 perform certain translation and editing functions. Its primary function00002070 is to produce copies of documentation files included with the XMACRO 00002080 or ASSIST systems. **** CURRENTLY USABLE UNDER OS/360 ONLY **** 00002090 00002100 USE 00002110 COPYED reads from a file using DDNAME FT08F001, performs any 00002120 required editing, and places the required number of copies on a file 00002130 using DDNAME FT09F001 (normally a printer). The number of copies and 00002140 editing procedure are controlled by keyword parameters supplied in the 00002150 PARM field to the program. 00002160 00002170 The following keywords, separated by commas, may be used in the 00002180 PARM field to control program execution: 00002190 00002200 NCOPY=# # gives the number of copies of the input file desired. 00002210 If NCOPY is not specified, it is assumed to be 1. 00002220 If NCOPY has a value greater than 1, the dataset defined 00002230 by FT08F001 must be a rewindable device (disk or tape). 00002240 00002250 TRANS=YES If this is coded, COPYED translates any lower case 00002260 letters in the input to upper case. If this is not 00002270 coded, and the output device is a printer, a TN train 00002280 or equivalent may be required to print the lower case 00002290 letters in a file. If this operand does not appear, 00002300 COPYED does not perform any translation on the input. 00002310 00002320 CNTRL=characters if this operand is not coded, the input dataset00002330 is assumed to contain carriage control characters in the 00002340 first byte of each record. If it is coded, up to 10 00002350 characters may be specified. Whenever this character 00002360 string is found in the input, the output carriage 00002370 control for the next input record is set to indicate a 00002380 new page. In all other cases, the carriage control is 00002390 set for a single space. The standard control character 00002400 used in ASSIST and XMACRO text files is a single comma 00002410 in the first byte of an 80-byte record, which is 00002420 otherwise blank. 00002430 00002440 LMARG=# # blanks should be inserted between the first character 00002450 of the input record and the remainder of it. If not 00002460 coded, it is assumed to be 0. This provides for a left 00002470 margin, since many files have text beginning in col 1. 00002480 00002490 SEQNO=PRT The input is assumed to contain 80-byte records, without 00002500 ASA carriage control characters. The first 72 bytes of 00002510 the card image are written as controlled by the LMARG= 00002520 value, 5 blanks are inserted, and the remaining 8 bytes 00002530 are moved over and written. This allows for writing 00002540 sequenced cardimages with a right margin between the 00002550 text material and the sequence numbers. 00002560 , 00003000 ASDISTRB - 03 00003010 00003020 RETURN CODES 00003030 COPYED returns with a return code of one of the following: 00003040 RC = 0 successful completion. 00003050 RC = 9 DCB for FT08F001 could not be opened. 00003060 RC = 10 DCB for FT09F001 could not be opened. 00003070 RC = 11 Neither DCB could be opened. 00003080 00003090 STORAGE REQUIREMENTS 00003100 COPYED requires 1824 bytes plus buffers and QSAM logic 00003110 modules, if not already present in a link pack area. 00003120 00003130 PROGRAM 00003140 COPYED is written in standard OS/360 assembler language, uses 00003150 QSAM logic, and requires only standard OS macro definitions. The 00003160 source program is provided on file COPYEDSO, and the object module 00003170 may be provided also. If so, it is contained in file COPYEDOB. 00003180 00003190 DD CARD REQUIREMENTS 00003200 Since COPYED can be used for varying record sizes, all of the 00003210 following must be provided either from the DD cards or dataset labels: 00003220 RECFM= (F, FB, FA, FBA) 00003230 LRECL= 00003240 BLKSIZE= 00003250 00003260 SAMPLE USAGE 00003270 1. PRINT 1 COPY OF A WRITEUP FILE, PRINTING WITHOUT TRANSLATION, 00003280 AND REMOVING SEQUENCE NUMBERS FROM 80-BYTE CARD IMAGES. This procedure 00003290 is suitable for obtaining ALL ASSIST and XMACRO writeups. 00003300 00003310 Obtain an object module of COPYED, then execute, with following 00003320 parameters and DD cards in the execution (GO, DATA, etc) step. 00003330 00003340 PARM='LMARG=4,CNTRL=,' obtain left margin.note comma control. 00003350 FT08F001 DD DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200),other DD information. 00003360 FT09F001 DD SYSOUT=A,DCB=(RECFM=FA,LRECL=77,BLKSIZE=77) 00003370 00003380 2. PRINT TWO COPIES OF A WRITEUP CONTAINING LOWER CASE LETTERS, 00003390 WITH TRANSLATION AND SEQUENCE NUMBERS INCLUDED. 00003400 00003410 PARM='CNTRL=,,TRANS=YES,LMARG=4,SEQNO=PRT,NCOPY=2' 00003420 FT08F001 DD information describing tape (80-byte reocrds assumed) 00003430 FT09F001 DD SYSOUT=A,DCB=(RECFM=FA,LRECL=90,BLKSIZE=90) 00003440 00003450 The above procedure is useful for showing the contents of a tape 00003460 file, especially if it is desired to use IEBUPDTE to modify the file, 00003470 such as to insert local changes to documentation. 00003480 00003490 3. PLACE AN EDITED COPY OF A WRITEUP ON ANOTHER FILE FOR LATER 00003500 PRINTING. 00003510 00003520 PARM='CNTRL=,' 00003530 FT08F001 DD tape information, UNIT=,VOL=SER=,DSN=, etc. 00003540 FT09F001 DD DCB=(RECFM=FB,LRECL=81,BLKSIZE=8100),tape information. 00003550 , 00004000 ASDISTRB - 04 00004010 00004020 TAPE FILE LIST 00004030 00004040 The following describes the files on the distribution tape (9-trk, 00004050 800 BPI, unless otherwise requested. All files contain 80-byte card- 00004060 images, in 3200-byte blocks. Most of them can be manipulated using the 00004070 IBM utilities IEBPTPCH, IEBGENER, and IEBUPDTE. Some of the files00004080 containing documentation require the use of the COPYED program to00004090 convert them from their given form to easily printable form. The00004100 description of the COPYED program is given separately. 00004110 00004120 In the following list, all files were created with a DCB of00004130 DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200) unless otherwise noted. The TYPE00004140 heading is one of the following: 00004150 00004160 SOURCE source deck, S/360 Assembly Language. 00004170 OBJECT object module for S/360 system. 00004180 TEXT documentation file, containing 80-byte sequenced card00004190 images, with text material in columns 1-72. New pages 00004200 are indicated by a comma in column 1, with 2-72 blank.00004210 Unless otherwise noted, contains lower case letters .00004220 May be converted and printed by the COPYED program. 00004230 JCL Job Control Language and other cards 00004240 00004250 00004260 FILE FILE TYPE APPROX DESCRIPTION 00004270 # DSNAME # cards 00004280 ------------------------------------------------------------------------00004290 1. COPYEDSO SOURCE 290 COPYED source program. used to 00004300 make multiple copies and perform some editing of text files. 00004310 00004320 2. COPYEDOB OBJECT 32 COPYED object module. 00004330 ------------------------------------------------------------------------00004340 00004350 ** FILES 3 - 7 MAKE UP X-MACRO PACKAGE VERSION 4.1 - APRIL 1972 ** 00004360 00004370 3. XMSYSGEN TEXT 400 describes how to add XMACRO package 00004380 to system macro library. 00004390 00004400 4. XMWRITES TEXT 1200 contains some writeups on the 00004410 individual macros and their usage. 00004420 00004430 5. XMACDEFS SOURCE 1350 XMACRO macro definitions. file is 00004440 built for easy library additions, with IEBUPDTE ./ ADD cards. 00004450 00004460 6. XMSOURCE SOURCE 800 XMACRO service subroutine source 00004470 programs, with ./ ADD cards betweeen modules used to place 00004480 them in source library for later assembly. 00004490 00004500 7. XMACTEST SOURCE 300 test programs for various groups of 00004510 of the X-MACRO macros and routines. 00004520 ------------------------------------------------------------------------00004530 8. ASDISTRB TEXT 900 distribution writeup 00004540 , 00005000 ASDISTRB - 05 00005010 00005020 9. ASPLMXXX TEXT 7200 ASSIST PROGRAM LOGIC MANUAL - 00005030 describes ASSIST internal conventions and structure; give data00005040 for modifying ASSIST and generating versions with desired 00005050 alternate combinations of features. (NOTE: it is flagged as 00005060 version 2.1/A: any changes are noted in this writeup). 00005070 00005080 10. ASUSERGD TEXT 3900 ASSIST INTRODUCTORY USER'S GUIDE 00005090 Describes language features accepted by ASSIST, extra debug 00005100 and conversion instructions, deck setup and paramater options 00005110 for running jobs, list of messages. This (or part of it), is 00005120 what would be distributed to student users. The last part 00005130 (ASREPLGD) is the Replacement User's Guide. 00005140 00005150 ** Following 6 files together make up the ASSIST source program, 00005160 with specific sequence numbers given as first information ** 00005170 00005180 11. SOURCE1 SOURCE 4100 00001000-3748000 : all macros, global00005190 DSECTs, EQUs, SET variables needed for any ASSIST assembly. 00005200 00005210 12. SOURCE2 SOURCE 6300 03750000-08563260 : main program,I/O 00005220 and conversion modules, interpreter, etc. Includes the only 00005230 modules having any system dependent code (ASSIST - main prog- 00005240 has GETMAIN/FREEMAIN, WTO, STIMER/TTIMER, etc), (XXXXIOCO - 00005250 has only I/O - may include QSAM, BSAM, BPAM), (XXXXPSIE - has 00005260 only SPIE/ STXIT). 00005270 00005280 13. SOURCE3 SOURCE 8400 08564000-21006260 : contains the 00005290 basic ASSIST assembler module, assembler control table. 00005300 00005310 14. SOURCE4 SOURCE 1500 30000000-32924000 : contains the 00005320 modules of the ASSIST Replace Monitor. Only needed if the 00005330 SET variable &$REPL = 1 or 2. Supports REPL, RFLAG= parms. 00005340 00005350 15. SOURCE5 SOURCE 6300 40000000-67010000 : contains the 00005360 modules of the ASSIST macro processor. Only needed if the 00005370 SET variable &$MACROS = 1 . Supports MACRO=, and all other 00005380 options pertaining to macro processing. 00005390 00005400 16. SOURCE6 SOURCE 2200 80000010-89999999 : contains the 00005410 module for the Assist Extended Interpreter along with a 00005420 dsect used only by the new interpreter. This is only needed 00005430 if the set variable &$EXINT = 1. This supports the XOPC 00005440 instruction. 00005450 , 00006000 ASDISTRB - 06 00006010 00006020 ** next 4 files are 4 different object modules for ASSIST, 2 for 00006030 OS/360, 2 for DOS. storage requirements are for load modules, 00006040 but not including required typical 50 bytes/statement assembled ** 00006050 ASSYSGEN decks used to create these modules are in ASMISCEL file. 00006060 Note: OBJECTOA is assembled with the new interpreter included. The00006070 other three object modules still use the old interpreter. 00006080 00006090 17. OBJECTOA OBJECT 1500 primary object deck: OS/360-type, 00006100 Result of assembling all SOURCE# files with all options on, i.e., 00006110 gigantic version with all options enabled. Generated for 360/65 00006120 speed, but will run on 360 or 370. Approx storage: 68K. 00006130 NOTE: As of 4/75 this is assembled with the new interpreter on. 00006140 The old interpreter has been excluded. 00006150 00006160 18. OBJECTOB OBJECT 800 minimal, but still usable OS/360 00006170 ASSIST, effectively an assembler-interpreter with no extras. Uses 00006180 1 reader, 1 printer; no punch, disk, or macro processing. Options 00006190 NOT supported: CMPRS, COMNT, CPAGE, DECK, DISKU, KP, L, LIBMC, 00006200 MACRO, MACTR, MNEST, MSTMG, OBJIN, P, PD, PX, REPL, RFLAG, SS, 00006210 SSD, SSX . Does not support privileged operations or S/370-only 00006220 operations. Generated for 360/65, but runnable on 360/370. 30K. 00006230 00006240 19. OBJECTDA OBJECT 1200 medium-large DOS/360 version, 00006250 similiar to OBJECTOA with some options deleted. Does not 00006260 support CMPRS, COMNT, object decks, 026 keypunch, S/370-only 00006270 instructions. Does not currently support macro library, but 00006280 Time defaults, etc. generated for 360/40 . 00006290 does have macro processor with open code conditional assembly.00006300 Allows 1 card reader, printer, punch, intermediate disk. 00006310 Gen'd for 360/40, but runs 360 or 370. About 50K . 00006320 00006330 20. OBJECTDB OBJECT 800 small DOS/360 ASSIST, i.e., like 00006340 OBJECTOB, but with even more features deleted. Does allow 00006350 disk intermediate+ 1 card reader+ 1 printer. about 30K. This 00006360 version should be usable in 40K total storage. 00006370 00006380 21. ASTEST01 SOURCE 2100 A batch of test runs for ASSIST, 00006390 consisting of programs with data, separated by $JOB cards. 00006400 These are relatively short runs, and should be executed 00006410 with a PARM field of BATCH,T=2,R=250 (model 65 speed). If 00006420 run from this tape, use FREE=10240 or greater, for buffers. 00006430 00006440 22. ASTEST02 SOURCE 6050 A batch of test runs, like ASTEST01,00006450 but longer jobs, typically final projects from beginning 00006460 assembler courses. For model 65, use BATCH,T=10,R=2000 00006470 , 00007000 ASDISTRB - 07 00007010 00007020 23. ASTEST03 SOURCE 700 A batch of test jobs used to 00007030 illustrate the ASSIST REplace Monitor (see ASREPLGD for 00007040 usage of this feature). 360/65: BATCH,T=5,R=600 adequate. 00007050 00007060 24. ASTEST04 SOURCE 6500 A batch of test jobs to display 00007070 the macro processor of ASSIST. The first set use only 00007080 programmer-written macros, while the rest use macro library 00007090 assumed to contain normal IBM macros. for 360/65, use 00007100 BATCH,MACRO=F . WARNING: since ASSIST does all macro- 00007110 processing in-core, it may be necessary to run tests with 00007120 the macro library using DISKU option, and in a large region, 00007130 like 280K, due to size of IBM macros (particularly IHBERMAC). 00007140 Consider using LIBMC to examine the library macros. 00007150 May require T=20 for some jobs in this batch. 00007160 00007170 25. ASTEST05 SOURCE 300 A batch of test jobs used to 00007180 illustrate the new features of the Optional Extended 00007190 interpreter. Should be executed only if the installation is 00007200 running Assist with the optional interpreter. See ASUSERGD 00007210 for usage of the XOPC instructions. For 360/65 use BATCH, 00007220 T=20,R=2000 00007230 00007240 26. ASASSIGN TEXT 13000 Collection of programming 00007250 assignments, explanatory writeups, course outlines, etc in 00007260 current use at PSU for assembler&systems courses. The 00007270 assignments are well-debugged, having been used many times, 00007280 and often contain alternate choices to allow them to be 00007290 used for several semesters. Also includes (at end), well- 00007300 documented useful sample programs: EXCP, QSAM, BPAM, etc. 00007310 *** PLEASE SEND TO ANYONE TEACHING SYSTEMS COURSES *** 00007320 00007330 27. ASUPDTES JCL 1900 JCL, IEBUPDTE decks used to create 00007340 3.1/A --> 3.1/B and 3.1/B --> 4.0/A 00007350 4.0/A --> 4.0/A1 and 00007352 4.0/A --> 4.0/A2 (current version) 00007354 00007360 28. ASMISCEL JCL - miscellaneous decks. 00007370 First 4 parts are ASSYSGEN decks used to create object modules00007380 Also contains OS Link-Editor Overlay control cards 00007390 00007400 29. ASMISTXT TEXT - current list of ASSIST Users, misc. 00007410 , 00008000 ASDISTRB - 08 00008010 00008020 ASSIST SYSTEM GENERATION 00008030 00008040 INTRODUCTION 00008050 00008060 This writeup describes how to generate an ASSIST system tailored 00008070 for the requirements of a particular installation, and how to add the 00008080 generated program to the system. This material is oriented to OS/360, 00008090 but material is given later regarding DOS/360 and other systems. Note 00008100 that MOST of the OS/360 procedures have fairly similiar counterparts. 00008110 00008120 It is assumed that the reader is familiar with the IBM utility 00008130 program IEBUPDTE. It is also assumed that the symbol disttape 00008140 gives the name of the distribution tape, and that LABEL=# gives the 00008150 appropriate file number, as given in the tape file list previously. 00008160 00008170 Before generating an ASSIST program, the reader should first 00008180 obtain listings of the files ASPLMXXX and ASUSERGD. The program 00008190 COPYEDB can be used to provide these listings. In particular, the 00008200 reader should examine the following parts of ASPLMXXX: 00008210 00008220 APPENDIX VII. SYSTEM RESOURCE REQUIREMENTS, JOB CONTROL LANGUAGE 00008230 APPENDIX VIII. TIME AND RECORDS PROCESSING 00008240 00008250 00008260 TESTING SUPPLIED VERSIONS OF ASSIST OBJECT MODULES 00008270 00008280 It may be useful for the implementer to try out one or two of the 00008290 versions of ASSIST supplied in object module form (OBJECTxx files), 00008300 to get a feel for the various options, appearance of output, typical 00008310 running times, and storage requirements. A simple and accurate way to 00008320 do this is to punch at least some of the ASTESTxx files, and run them 00008330 in as jobs to ASSIST. Note that these files contain tests for most 00008340 options, which may then produce many errors if they are supplied to 00008350 an ASSIST not supporting the desired options. 00008360 00008370 GENERATING A NEW VERSION OF ASSIST TAILORED TO AN INSTALLATION 00008380 00008390 The files SOURCE1 - SOURCE6 contain the ASSIST source program, 00008400 written in S/360 BAL. All of the files may be concatenated and 00008410 assembled together if desired, but only if Assembler G or H is being 00008420 used. ASSIST is definitely too large to assemble in one assembly with 00008430 Assembler F. Also note that SOURCE4, SOURCE5, and SOURCE6 may or 00008440 may not be needed at all, while every assembly must include SOURCE1. 00008450 NOTE: NONE OF THE FILES CONTAIN AN END CARD, SO THAT AN ERROR MESSAGE 00008460 WILL DEFINITELY BE GENERATED BY THE ASSEMBLER (EOD ON SYSIN). HOWEVER, 00008470 THE MODULE PRODUCED IS CORRECT. 00008480 00008490 All generation of code inside ASSIST is controlled by a group of 00008500 about 100 SET variables. Every effort has been made to allow any 00008510 installation to choose just those options it desires, without paying 00008520 memory space or time for unnecessary features. All of the SET 00008530 variables are declared and given initial values in SOURCE1, on the cards00008540 having the following range of sequence numbers: 00008550 00008560 02172000 - 02265100 00008570 , 00009000 ASDISTRC - 09 00009010 00009020 The implementer should inspect the cards noted above, and also 00009030 APPENDIX II of the ASSIST PROGRAM LOGIC MANUAL (ASPLMXXX). The ones 00009040 involving time, pages, and record limit processing should especially 00009050 be checked. 00009060 00009070 The implementer may of course modify the source using IEBUPDTE, 00009080 but this is somewhat inconvenient if only a few changes to SET 00009090 variables are desired. Therefore, immediately following the cards 00009100 giving initial values to the SET variables, there is a single call to 00009110 the macro ASSYSGEN . This macro is NOT included in the source 00009120 files, so that the following procedure can be followed: 00009130 00009140 1. Create a version of the ASSYSGEN macro which does nothing but 00009150 give values to various SET variables which are desired to be changed. 00009160 00009170 2. Place this macro in a PDS. 00009180 00009190 3. Assemble SOURCE1 plus one or more other SOURCE# files, while 00009200 concatenating SYS1.MACLIB to the PDS containing the ASSYSGEN macro. 00009210 Thus, from 1 to 4 assemblies are required, depending on assembler used 00009220 and options needed (SOURCE,SOURCE5, and SOURCE6 may be omitted). 00009230 00009240 NOTE: if ASSYSGEN is not supplied, this will lead to a severity 00009250 12 error in assembly, but the resulting module is still executable. 00009260 (A CORRECT ASSIST ASSEMBLY WILL THUS HAVE 1-2 ERRORS, 1 FOR ASSYSGEN 00009270 POSSIBLY, PLUS ONE FOR THE MISSING END CARD). 00009280 00009290 The following illustrates the use of ASSYSGEN. 00009300 00009310 //ASGEN1 EXEC PGM=IEBUPDTE,PARM=NEW 00009320 //SYSPRINT DD SYSOUT=A 00009330 //SYSUT2 DD UNIT=2314,VOL=SER=volser,DSN=ASGXX,DISP=(NEW,CATLG), X00009340 // SPACE=(TRK,(1,1,1)),DCB=SYS1.MACLIB,LABEL=RETPD=0000 00009350 //SYSIN DD * 00009360 ./ ADD NAME=ASSYSGEN 00009370 MACRO 00009380 ASSYSGEN 00009390 GBLA &$RECORD,&$COMNT,&$TIMER 00009400 GBLB &$ACCT 00009410 &$COMNT SETA 80 REQUIRE 80 percent comments in progs 00009420 &$RECORD SETA 2 ALLOW SPECIAL PSU RECORD COUNTING 00009430 &$TIMER SETA 2 ALLOW SPECIAL PSU TIMING 00009440 &$ACCT SETB (1) PERMIT CHECKS ON ACCOUNTS,PSU LOCAL 00009450 MEND 00009460 00009470 For example, using Assembler 'G' in a catalogued procedure which 00009480 has a procstepname of SOURCE yields the following example: 00009490 00009500 //ASSMBL EXEC ASGC 00009510 //SOURCE.SYSLIB DD UNIT=2314,VOL=SER=volser,DSN=ASGXX,DISP=SHR 00009520 // DD DSN=SYS1.MACLIB,DISP=SHR,UNIT=2314,VOL=SER=volser 00009530 //SOURCE.SYSIN DD DSN=ASSOURCE,UNIT=unit,VOL=SER=disttape,DISP=OLD 00009540 00009550 NOTE: the decks used to generate and assemble the object modules 00009560 provided are all included in the file ASMISCEL, so that it may be useful00009570 to punch these ASSYSGEN's. The programmer can choose the one closest 00009580 to his system's requirements, and change only the cards needed. 00009590 , 00010000 ASDISTRC - 10 00010010 00010020 ASSIST CATALOGED PROCEDURE 00010030 00010040 For ease of use, one or more cataloged procedures may be added to 00010050 SYS1.PROCLIB for using ASSIST. The following gives a sample procedure, 00010060 noting which cards may not be necessary, and which are local. 00010070 00010080 //ASACG PROC 00010090 //DATA EXEC PGM=ASSIST 00010100 //FT05F001 DD DDNAME=INPUT (only needed if &$DATARD=1: 2 readers) 00010110 //FT06F001 DD SYSOUT=A,DCB=(RECFM=FA,LRECL=133,BLKSIZE=133) printer 00010120 //FT07F001 DD SYSOUT=B,DCB=(RECFM=F,LRECL=80,BLKSIZE=80) punch 00010130 //FT08F001 DD UNIT=SYSDA,DISP=(,DELETE),SPACE=(3520,(100,10)), 00010140 // DCB=(RECFM=F,BLKSIZE=3520) disk intermediate 00010150 //SYSLIB DD DSN=SYS1.MACLIB,DISP=SHR 00010160 // PEND 00010170 00010180 ASSIST normally reads source from ddname SYSIN, so that FT05F001 00010190 is needed only if 2 readers are allowed (&$DATARD=1). FT07F001 is only 00010200 needed if card punching is allowed (&$PUNCH=1). FT08F001 is needed only00010210 if users may place intermediate data on disk/drum (&$DISKU > 0). Note 00010220 that optimizing disk use depends on devices used, so that the BLKSIZE 00010230 above can be changed by JCL appropriately (DCB exit used to supply 00010240 default value 3520). SYSLIB is needed only if the macro library 00010250 processor is included (&$MACSLB=1), and should include any local macro 00010260 libraries desired. WARNING: macro processing (especially of things 00010270 like IHBERMAC) gobbles memory quickly. 00010280 00010290 The set of DDNAME's above can be changed by using ASSYSGEN to 00010300 modify the values of the GBLC variable &$IOUNIT (see a sample ASSYSGEN 00010310 for this). Of course, the DOS/360 names are different. 00010320 00010330 MULTIPLE VERSIONS OF ASSIST 00010340 00010350 Depending on usage at an installation, it may be useful to create 00010360 two distinct versions of ASSIST: one of minimal size, with none of the 00010370 special options, and no macro processor, for use in first course in 00010380 assembler. The other can include whatever options are desired, and may 00010390 thus be a bit larger and slightly slower. For example, it may be set to00010400 go to disk automatically (about 10% CPU degradation). 00010410 00010420 S/360 and S/370 DEPENDENCIES 00010430 00010440 Note that ALL distributed object modules will run on S/360, S/370, 00010450 or UNIVAC SERIES 70 systems. S/370 instructions can be provided and 00010460 interpreted on S/360, but this is of course not as efficient as using 00010470 S/370 instructions themselves. S/370 users should change &$S370 = 1. 00010480 00010490 CONDITIONAL ASSEMBLY PROBLEMS 00010500 00010510 We have tested the various options offered by ASSIST, but it is 00010520 of course impossible to try every combination. Please let us know 00010530 if some combination causes a loop or other error in open code (send an 00010540 ASSYSGEN deck giving the options selected). Note that an ABEND SB37 00010550 in OS/360 could easily be caused by an open-code loop. 00010560 , 00011000 ASDISTRC - 11 00011010 00011020 NOTES FOR DOS/360 AND OTHER SYSTEMS 00011030 00011040 DOS/360 NOTES 00011050 00011060 While DOS/360 support is at the current time not as complete as 00011070 OS/360 support, this situation should change in the near future, since 00011080 we now have access to a DOS installation nearby. Hopefully, the next 00011090 version will include DOS macro library support. Also, we expect to 00011100 write some utility programs in system-independent FORTRAN/Assembler 00011110 to provide the same utilities as OS/360 for our purposes (i.e., a 00011120 replacement for IEBUPDTE in particular for use in doing updates). 00011130 Since most of our users are OS/360 users, we will continue to supply 00011140 updates in IEBUPDTE form. When we have a replacement, we will try 00011150 to make it available. 00011160 00011170 INTERMEDIATE DISK USAGE: ASSIST can function either as a totally 00011180 in-core system, or it can place intermediate data on disk between Pass 00011190 1 and Pass 2. The latter method can be an execution-time option, and 00011200 is generally recommended for DOS systems. The filename used by ASSIST 00011210 as a default for this is SYS001, and it expects the device to be a 00011220 2314-type disk. These can be changed if desired by the ASSYSGEN. 00011230 00011240 RUN SETUP: the following gives a sample deck setup which has 00011250 been used to run ASSIST on a DOS system using the disk option. 00011260 00011270 // A JOB CARD 00011280 // OPTION LINK 00011290 INCLUDE 00011300 // EXEC LNKEDT 00011310 ..... ASSIST OBJECT DECK9S0 00011320 // ASSGN SYS001,X'131' DISK INTERMEDIATE 00011330 // DLBL XXDKUDC,'TEMPORARY FILE FOR ASSIST',0 00011340 // EXTENT SYS001,111111,1,0,2620,138 00011350 // EXEC 00011360 batch of jobs, with $JOB card separators. 00011370 /* 00011380 /& 00011390 00011400 ASSIST is extremely I/O bound if not running under a spooling 00011410 system like POWER. It will drive reader and printer full-speed on 00011420 a 360/40. 00011430 00011440 Many thanks to Fran Hensler of Slippery Rock State College and to 00011450 Les Sweet of HRB-Singer Corp for invaluable help on the DOS/360 ASSIST. 00011460 00011470 We would appreciate any input from our DOS users regarding 00011480 problems, features, etc. We are working on such things as making 00011490 EOJ the exit command (rather than the OS BR 14), and also on getting 00011500 a DOS overlay system set up (some users may want to build their 00011510 own, using information in later section). Any DOS user who wants this 00011520 should let us know: the code for it should be available long before 00011530 the next major version distribution. 00011540 , 00012000 ASDISTRC - 12 00012010 00012020 UNIVAC SERIES 70 VMOS NOTES 00012030 00012040 Penn State does not directly support a VMOS version of ASSIST. 00012050 However, through a cooperative arrangement with the University of 00012060 Dayton, ASSIST is available to VMOS users as follows: 00012070 00012080 1. Obtain a distribution tape from Penn State In the usual way. 00012090 2. Write to the following for VMOS updates and other software needed 00012100 to assemble and execute ASSIST ON A VMOS system: 00012110 00012120 Jack E. Kester 00012130 Computer Science Department 00012140 University of Dayton 00012150 Dayton, Ohio 45409 00012160 00012170 As usual, send a tape along with your request. 00012180 00012190 00012200 MISCELLANEOUS NOTES ON ASSEMBLING ASSIST 00012210 00012220 ASSIST can be assembled either by Assembler F or G. However, 00012230 it is very easy for dictionaries to be overrun in either. We do know 00012240 that the entire system can be assembled in one run in 280K using 00012250 Assembler G: we would not advise assembling a full version together 00012260 in much less space. If you are having problems getting it to 00012270 assemble in the available space, we would suggest the following: 00012280 00012290 1) Delete sections of code which will be AIF'd out during conditional 00012300 assembly anyway. This will save dictionary space. Prime possibilities 00012310 for this are the following modules (depending on local preferences): 00012320 a) AOBJDK (object modules input and output) 00012330 b) XREFA,XRCOLL,XRPRNT (cross-reference modules) 00012340 c) XDDTABLE, XXXXGET, XXXXPUT (XGET and XPUT commands) 00012350 d) OUTPT2 (some sections: much code exists for the CMPRS option) 00012360 e) EXECUT (The new Optional Interpreter - SOURCE6) 00012370 00012380 2) Split up assemblies even further than they are already. SOURCE3 00012390 especially needs to be split. 00012400 00012410 3) Handle macros specially. It might be useful to place all of 00012420 ASSIST's own internal macros on a library, then delete them from 00012430 SOURCE1, so that they are only edited when needed. Many of the macros 00012440 are used only in one or two CSECTs, so this process may save time. 00012450 , 00013000 ASDISTRC - 13 00013010 00013020 00013030 ASSIST OVERLAY STRUCTURE 00013040 00013050 The layout below is intended as a guide to building an overlay 00013060 version of ASSIST. Modules which may or may not exist are enclosed in 00013070 parentheses, and segment names in brackets. 00013080 00013090 00013100 | ASSIST 00013110 | XXXXDECI 00013120 | XXXXIOCO 00013130 | XXXXSNAP 00013140 | XXXXSPIE 00013150 | VWXTABL 00013160 | (XDDTABLE, XXXXGET, XXXXPUT) 1. 00013170 | (REMONI, RFSYMS) 2. 00013180 ------------------------------------------------------------------------00013190 00013200 | EXECUT | APARMS | CACONS | (XDDFINI) 1. | (AOBJDK)00013210 | XXXXDECO | CBCONS 00013220 | | CCCONS 00013230 | (XDDGET) 1. | CDECNS 00013240 | (XXXXHEXI) | CFHCNS 00013250 | (XXXXHEXO) | CPCONS 00013260 | CVCONS 00013270 | CXCONS 00013280 | CZCONS 00013290 | ERRORS 00013300 | ESDOPR 00013310 | EVALUT 00013320 | LTOPRS 00013330 | MPCON0 00013340 | OUTPUT 00013350 | SDTERM 00013360 | SYMOPS 00013370 | UTOPRS 00013380 | (XREFA) 00013390 ------------------------------------------------- 00013400 00013410 | CODTL1 | BROPS2 | (XRPRNT) 00013420 | IAMOP1 | CNDTL2 00013430 | IBASM1 | ICMOP2 00013440 | INPUT1 | IDASM2 00013450 | MOCON1 | MTCON2 00013460 | OPCOD1 | (XRCOLL) 00013470 | SCANRS 00013480 | (MACINT, MACFND, MACSCN, MCATRM, MCDTRM, MCGTST) 3. 00013490 | (MCSCOP, MCSYSR, MCVSCN) 3. 00013500 ----------------------------------------- 00013510 00013520 | (MACLEX, MACRO1, MCBODY, MCGNCD) 3. | (MEXPND) 3. 00013530 | (MXERRM, MXINST, MXMVSR) 4. 00013540 , 00014000 ASDISTRC - 14 00014010 00014020 EXPLANATION OF SEGMENTS 00014030 main control program, I/O modules, Replace Monitor 00014040 interpreter, other run-time support modules 00014050 parameter analysis, called 3-4 times before each assembly. 00014060 main program of assembler, modules required for both passes 00014070 close-up routine for XGET/XPUT modules 00014080 object deck loader and puncher 00014090 pass 1 of assembler 00014100 macro definition scanners not also used in expansion 00014110 macro expaansion routines 00014120 pass 2 of assembler 00014130 contains only cross-reference printing now, after pass 2. 00014140 00014150 NOTES 00014160 1. These modules are used only for XGET / XPUT support. 00014170 2. These modules comprise the Replace Monitor. *****NOTE***** IF 00014180 IT IS USED (&$REPL > 0), THE SEGMENT MUST BE MOVED TO 00014190 THE SEGMENT. The Replace Monitor may be invoked during 00014200 any part of assembly, and it calls the interpreter. For this 00014210 reason, smaller systems should avoid using the Replace Monitor. 00014220 3. These modules (with those labeled 4.) make up the macro processor. 00014230 4. *****NOTE***** THESE MODULES (MXERRM, MXINST, MXINST, MXMVSR) 00014240 MUST BE MOVED INTO IF OPEN CODE CONDITIONAL ASSEMBLY IS 00014250 ALLOWED (MACRO1 CALLS THEM THEN). I.e., if &$MACOPC = 1, only 00014260 MEXPND can be overlaid with macro definition modules. Unless 00014270 open code conditional assembly is expected to be rare, even this 00014280 should not be done (i.e., combine MAC1 and MAC2 into ASM1 for 00014290 best speed). 00014300 00014310 FURTHER POSSIBILITIES 00014320 The layout given is perhaps not optimal, but can be obtained 00014330 without changing the source program or causing excessive overhead. 00014340 Other improvements might be gained by splitting some of the modules 00014350 in having multiple entries, of which some are called only at 00014360 particular times. A segment might be created to hold all 00014370 pre-pass 1 initialization, for code between passes, and more 00014380 code placed into . This kind of technique could be done with 00014390 minor source changes, mainly involving changing some ENTRYs to CSECTs, 00014400 and moving some local variables into the AVWXTABL control block. 00014410 Depending on local usage, some OS users may want to use multiple region 00014420 overlays, placing seldom-called modules togther in extra regions. 00014430 00014440 APPROXIMATE STORAGE SIZES, VERSION 4.0/A 00014450 1. Full ASSIST, non-overlaid 68K 00014460 2. Overlay version of 1, with all macro modules in 00014470 , and moved into 57K 00014480 3. Overlay version of 2, but with Replace Monitor 00014490 deleted, so that can be used. 45K 00014500 4. Overlay version of 3, but with open code 00014510 conditional asm removed, so , O.K. 39K 00014520 5. Version 4, with XGET/XPUT modules deleted 37K 00014530 6. Minimal version with macro processor, but no macro 00014540 library. Only reader/printer, no extras, etc. 35K 00014550 7. Basic assembler/interpreter, no macros at all 20K 00014560 00014570 (NOTE: file ASMISCEL contains some OS/360 overlay cards). 00014580 , 00015000 ASDISTRC - 15 00015010 00015020 CONTROL CARDS AND HASP AUTOBATCH 00015030 00015040 Although the ASSIST User's Guide gives several possibilities 00015050 for control card setups, everyone has their own preferences and will 00015060 probably want to change that section of the Guide. Version 3.0/A now 00015070 provides more flexibility than previously. Among other things, setting 00015080 &$HASPBT = 1 produces code for a flexible HASP autobatch operation, 00015090 and the dimensioned GBLC variable &$BTCC(4) allows control cards to 00015100 be changed as desired. We consider the latter first. 00015110 00015120 &$BTCC(1) = control character used for control cards, default = '$' 00015130 as in $JOB . 00015140 &$BTCC(2) = characters used with &$BTCC(1) to indicate the start of 00015150 a normal job in batch mode: default is 'JOB' . 00015160 &$BTCC(3) = characters used following assembler END card to show 00015170 that execution is desired, and data cards may follow. 00015180 Execution normally requires such a card to be present. 00015190 Default is 'ENTRY' (requiring a $ENTRY card), but some 00015200 may want 'DATA' instead. Finally, if set to '', no 00015210 such card is needed or recognized. 00015220 &$BTCC(4) = characters recognized as an end-of-file marker, causing 00015230 ASSIST to terminate processing. Default is 'STOP' . 00015240 If such a feature is not desired, set to '' (HASP 00015250 autobatch users might prefer the latter). 00015260 00015270 Users of the HASP autobatch feature should find that the current 00015280 code should do most of what they want (obtained by &$HASPBT = 1). One 00015290 possibility of change is to add accounting routines when an OS JOB card 00015300 is found. When invoking ASSIST this way, it should be set up to have 00015310 BATCH as a default, or be passed BATCH, and other desired limits. The 00015320 following actions are performed: 00015330 1) When looking for a $JOB card, if ASSIST finds a // card (other than 00015340 an OS NULL card), it assumes that this is a JOB card. If the next card 00015350 following is actually a $JOB card, processing is as normal. If not, 00015360 the card is saved, and ASSIST creates a dummy $JOB card for the user. 00015370 Some installations may wish to change this code so that options are 00015380 given in such a card, thus allowing different defaults for ASSIST in 00015390 autobatch compared with other usage. 00015400 2) Any single // card may be read as data anytime. 00015410 3) When two OS NULL cards are found, ASSIST produces an end-file 00015420 indication to an executing user program. 00015430 4) When a $JOB card is requested immediately after two NULL cards were 00015440 found, ASSIST PUT's one line to clear the buffer, then issues the GET 00015450 which will indicate to HASP that end-of-job termination processing 00015460 should occur. ASSIST will of course then wait until HASP feeds it 00015470 another job. 00015480 00015490 Given the above actions, users may submit single OS jobs which: 00015500 1) Contain NO $JOB cards, and consist of assembler source and data, 00015510 with dummy $JOB supplied. 00015520 2) Contain one or more $JOB cards, i.e., user may submit own batch 00015530 if he wants. 00015540 00015550 Many thanks to Steve Koehl (Ohio State University) and Paul 00015560 Siegel (SUNY at Stony Brook) for input regarding HASP autobatch. 00015570 , 00016000 ASDISTRC - 16 00016010 00016020 CHANGES 00016030 1. (OS USERS) - SET variable &$FREEMN is now provided to place a 00016040 lower limit on any FREE= value. This is useful in preventing ABEND 00016050 80A errors, especially those caused by miscoding, i.e. FREE=819 00016060 instead of 8192. Code: 04293285-04293315. 00016070 00016080 2. *** FIRST CARD NOT READ: after execution, if there are any more 00016090 data cards not read, the first one is printed. Code: 04136610- . 00016100 00016110 3. DUMP SPACING- the SET variable &$DMPAG ma ybe used to suppress 00016120 the two page skips which usually occur in a dump (set &$DMPAG=0 to 00016130 suppress page skip in dump). Code: 08373800- in XXXXSNAP. 00016140 00016150 4. CPAGE DEFAULT- previously, NOCPAGE was the default, but this 00016160 is changed to CPAGE if page control is generated at all. Code: 04525300.00016170 00016180 5. REGISTER LIMITATION REMOVED- registers used to be required to 00016190 be single self-defining terms or EQU symbols. They may now be 00016200 arbitrary expressions, thus allowing (REG) or REG+1, for example. 00016210 Code: 13980000, 14358000- . 00016220 00016230 6. EXTENDED RR BRANCH MNEMONICS- these have been added as a standard 00016240 feature. They are well flagged if anyone wants to get rid of them. 00016250 Code: 17439000- in module OPCOD1. 00016260 00016270 7. XREF= A cross-reference listing is now provided, if &!XREF=1, 00016280 and XREF= is supplied in parm field. The cross-reference may be 00016290 turned on and off via *XREF cards, and is unusual in that it 00016300 marks modify references by making them negative statement numbers. 00016310 00016320 8. Control card scanning- has been drastically modified to make 00016330 it more general, and to accomadate HASP autobatch environment. Any 00016340 user with local modifications should watch out for this. 00016350 00016360 9. EXTENDED INTERPRETER - A new , optional, extended interpreter is 00016370 included with this release. A new debugging and analysis instruction 00016380 (XOPC) is supported by the new interpreter. 00016390 , 00017000 ASDISTRC - 17 00017010 00017020 In addition to the above, many bugs have been fixed. 00017030 00017040 KNOWN BUGS 00017050 00017060 1. Macro Period Problem: in macro statements (like &C SETC '.'), 00017070 ASSIST seems to want two periods for each real period, where Asm F or 00017080 G will accept 1. This no longer affects periods in model statements, 00017090 i.e. A 0,=E'1.0' works right now. 00017100 00017110 2. Explicit Concatenation Problem: in some cases, ASSIST requires 00017120 an explicit period where others do not, sometimes causing an AS229 00017130 message during expansion, but none during scanning of macros. 00017140 00017150 3. Syslist Comparison Problem: an AS208 message is produced for 00017160 statements of following form: 00017170 AIF ('&SYSLIST(1,1)' EQ 'C').MLW04 00017180 The problem only seems to occur with constant subscripts. 00017190 00017195 4. '80A' Problem: ASSIST may ABEND (OS) with 80A. This is usually 00017200 caused by not having a large enough FREE= value, especially when the 00017210 DISKU option or XGET/XPUT are used very much. FREE= should be set 00017220 higher if needed. 00017230 00017235 5. *Syslib - A *Syslib card with no arguments and not preceded by 00017240 any macroes caused ASSIST to ABEND. The problem was trying to open the 00017250 macro library with a blank or null name list. Fix appears in code : 00017260 16707331 - 16707337. 00017270 00017275 6. Replace Monitor - Release 3.0/A (only) has a problem in the 00017280 Econtrol dsect causing the Replace Monitor to work inconsistantly. Fix 00017290 Take DS 0D at 03710030 and move it to 03711950. 00017300 00017305 7. Entry Stmt - A label name on an entry statement which is too 00017310 long will cause ASSIST to ABEND. Fix : 11465000 00017320 00017325 8. XREF - XREF portion of the symbol table routine SYFIND caused 00017330 abend on core overflow condition. This entire area has been modified. 00017340 00017350 9. PSW on error termination fixed. 00017360 00017370 10. Infinite CPU and PRINT loops on certain error terminations. 00017380 00017390 11. XGET/XPUT problems with reopening data sets 00017400 00017410 12. Single quote nested in titles. 00017420