home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / ibm370 / ikcker.ins < prev    next >
Text File  |  2020-01-01  |  36KB  |  908 lines

  1. IBM System/370 VM/CMS Kermit 4.3.n Installation Instructions
  2.                      (1999 December)
  3.  
  4. The following instructions, aside from steps 1, 7, and 8, are collected
  5. into an EXEC for ease of application.  See the end of this file.
  6.  
  7.                   * * Installation Procedure * *
  8.  
  9. 1) Get the necessary files from the Kermit distribution tape or from
  10.    BITNET KERMSRV or elsewhere onto your A disk.  Be sure you have
  11.    plenty of disk space for the installation (required: about 10 MB,
  12.    including scratch space and the executables).  Note that many of the
  13.    files are generic for Kermit-370 and may already be available from a
  14.    local MVS/TSO site.  As distributed by Columbia, the files are named
  15.    as follows, all with prefix IKC or IK0 (I K Zero):
  16.  
  17.    IKCAUX.CMD  Sample EXEC's PC, KERMAIL, etc.
  18.    IKCBOO.ASM  Assembler source for Kermit bootstrap program
  19.    IKCFIX.EXEC Repair kit for mail gateway damage
  20.    IKCKER.BWR  A "beware" file, listing known bugs, problems, and fixes
  21.    IKCKER.DOC  CMS Kermit User Guide, plain text
  22.    IKCKER.HLP  Kermit-CMS help file, CMS HELP (Script) format
  23.    IKCKER.INS  Kermit-CMS installation instructions (this file)
  24.    IKCKER.NUP  Pre-release updates for CMS version of Kermit-370
  25.    IKCKER.UPD  Updates for CMS version of Kermit-370
  26.    IKCMAC.ASM  Assembler source for CMS-specific macros
  27.    IKCUTL.ASM  Assembler source for CMS-specific routines
  28.    IKCXA.UPD   Further updates for CMS/XA variant of Kermit-370
  29.    IK0CMD.ASM  Assembler source for command handler
  30.    IK0COM.ASM  Assembler source for global code
  31.    IK0DEF.ASM  Assembler source for parameter definitions
  32.    IK0DOC.ASM  Assembler source with brief history
  33.    IK0KAN.ASM  Assembler source for Kanji character translation
  34.    IK0KER.BWR  Another "beware" file, with generic entries
  35.    IK0MAC.ASM  Assembler source for generic Kermit macros
  36.    IK0MAI.ASM  Assembler source for storage initialization
  37.    IK0PRO.ASM  Assembler source for generic routines
  38.  
  39.    The following files are not necessary for installation, but may be of
  40.    some interest.
  41.  
  42.    IKCACT.ASM  Assembler source for sample accounting exit routine
  43.    IKCGUP.ASM  Assembler source for CMS-specific part of GUPI
  44.    IKCHDR.MSS  Scribe source for producing IKCKER.DOC
  45.    IKCKER.ANN  Text of Kermit-CMS announcement for current version
  46.    IKCKER.LPT  Same as IKCKER.DOC, but with carriage control in col 1
  47.    IKCKER.MSS  Scribe source for CMS part of IKCKER.DOC
  48.    IKCKER.PS   PostScript equivalent of IKCKER.DOC
  49.    IK0AAA.HLP  Kermit-370 implementation notes, supported environments
  50.    IK0CON.HLP  Notes on supporting other terminal controllers
  51.    IK0GUP.ASM  Assembler source for generic update program GUPI
  52.    IK0KER.ANN  Text of generic Kermit-370 4.3 announcement
  53.    IK0KER.MSS  Scribe source for generic part of IKCKER.DOC
  54.    IK0KER.UPD  Update history for Kermit-370
  55.    IK0POR.HLP  Notes on porting Kermit-370 to other systems
  56.    IK0VCS.PKT  Czech-language version of Kermit-370 source (updates)
  57.    IK0VDE.PKT  German-language version of Kermit-370 source (updates)
  58.    IK0VER.FOR  Comparison program for generating update decks
  59.    IK0VES.PKT  Spanish-language version of Kermit-370 source (updates)
  60.    IK0VFI.PKT  Finnish-language version of Kermit-370 source (updates)
  61.    IK0VFR.PKT  French-language version of Kermit-370 source (updates)
  62.    IK0VIT.PKT  Italian-language version of Kermit-370 source (updates)
  63.    IK0VNL.PKT  Dutch-language version of Kermit-370 source (updates)
  64.    IK0VPL.PKT  Polish-language version of Kermit-370 source (updates)
  65.    IK0VPT.PKT  Portuguese-language version of Kermit-370 source (updates)
  66.    IK0VRU.PKT  Russian-language version of Kermit-370 source (updates)
  67.  
  68. 2) Rename and reformat, if necessary, the source files on the A disk.
  69.    If you received the program from Columbia on tape or over a network,
  70.    the assembler source filenames are probably all IKxxxx and the
  71.    filetype ASM.  Logically, these are concatenated into a single file
  72.    called KERMIT ASSEMBLE (plus a few others).  This step is included in
  73.    the installation EXEC.  If you got the source files via e-mail, they
  74.    may have been reversibly corrupted by passage through various mail
  75.    gateways.  Use IKCFIX to repair such damage before proceeding with
  76.    the installation.
  77.  
  78. 3) Rename and reformat, if necessary, the help file.  The file IKCKER
  79.    HLP should generally be stored under the name KERMIT HELPCMS on the
  80.    same minidisk as the executable KERMIT MODULE, so that on-line help
  81.    will always be available and, in particular, so that the CMS HELP
  82.    KERMIT command and Kermit-CMS's HELP subcommand can find it.  This
  83.    step is also included in the EXEC, along with an option to install
  84.    help menus for CMS HELP KER.  You may, in fact, install *only* the
  85.    help files using the EXEC.  When you install the help files, you will
  86.    be prompted to select which flavors of help to use.  The preferred
  87.    one is the PDS form, which allows the KERMIT HELP subcommand to find
  88.    help on individual Kermit subcommands.  The same sort of access to
  89.    individual sections is also supplied through the menu option (but
  90.    with the necessity of keeping lots of little help files).  One of the
  91.    installation choices is whether to remove the ".cs" separators from
  92.    the help file.  These are harmless, but ugly when using the Kermit
  93.    HELP subcommand, since they sometimes appear on the screen.  Their
  94.    only value is is supporting the DESCR/FORM/PARM options of the CMS
  95.    HELP command.
  96.  
  97.    The most comprehensive documentation is the pair of chapters of the
  98.    Kermit User Guide dealing with CMS, namely, the generic Kermit-370
  99.    chapter and the CMS-specific one.  These two are bundled together in
  100.    IKCKER.DOC and also in IKCKER.PS; the PostScript is suitable only for
  101.    printing, but the DOC file could also be stored wherever you keep
  102.    online documentation files, renamed appropriately.
  103.  
  104. 4) GLOBAL the necessary MACLIBs.  If you use VMFASM or VMFHASM or the
  105.    installation EXEC, the GLOBAL command is issued automatically.  Under
  106.    CMS releases 1 through 5.5 and 6, the MACLIBs are DMSSP, CMSLIB,
  107.    TSOMAC, and OSMACRO.  Under CMS 5.6 and 7 or higher, they are DMSOM,
  108.    DMSGPI, and OSMACRO.
  109.  
  110. 5) Assemble the source files:
  111.  
  112.    ASSEMBLE KERMIT         (or HASM, for CMS/SP 5.5 or later)
  113.    ASSEMBLE KERMBOOT       (Not necessary if using CMS/SP 4 or later)
  114.    ASSEMBLE KACCT          (if desired)
  115.  
  116.    Note, however, that the base source files are typically not the
  117.    latest version available.  Indeed, for releases 5.5 on up, you will
  118.    need to apply updates anyway.  IKCKER BWR has instructions on how to
  119.    do so, and the intallation EXEC automatically applies them, including
  120.    any local updates you have collected into a file called KERMIT LOCAL.
  121.  
  122. 6) There are 4 choices for installing the runnable modules, of which the
  123.    first (and best) is available starting with VM/SP Release 4.  This
  124.    choice is made automatically in the EXEC.
  125.  
  126.     a) With VM/SP Release 4 and later, create a dual-purpose module.
  127.  
  128.        LOAD KERMIT exits (RLDSAVE
  129.        GENMOD KERMIT
  130.  
  131.        where "exits" is the list of desired exit routines, such as
  132.        KACCT.
  133.  
  134.        The module created this way may be permanently pre-loaded by
  135.        the user as follows:
  136.  
  137.        NUCXLOAD KERMIT
  138.  
  139.        Such a pre-loaded module is always dropped when CMS encounters
  140.        an "ABEND" and it can also be removed (e.g., for replacement)
  141.        by issuing the following command:
  142.  
  143.        NUCXDROP KERMIT
  144.  
  145.     b) If your installation is below release 4 of VM/SP, you might just
  146.        install the Kermit-CMS program alone, to run in user memory.
  147.        This means it can't invoke some programs (see the DOC file for
  148.        more information about this).
  149.  
  150.        LOAD KERMIT
  151.        GENMOD KERMIT
  152.  
  153.     c) Install the Kermit bootstrap program alone.  This loads the
  154.        KERMIT TEXT object file into high memory, allowing it to invoke
  155.        any other program:
  156.  
  157.        LOAD KERMBOOT
  158.        GENMOD KERMIT
  159.  
  160.     d) Install both, to give users a choice:
  161.  
  162.        LOAD KERMIT
  163.        GENMOD KERMIT
  164.        LOAD KERMBOOT
  165.        GENMOD KERMBOOT
  166.  
  167.        Note: with VM/SP Release 5, KERMBOOT will no longer work, and
  168.        method (a) is the only recommended one.
  169.  
  170. 7) Install any desired auxilliary commands from IKCAUX CMD.  These are
  171.    sample EXEC's and may need to be tailored to your site.  The PC EXEC,
  172.    for example, assumes that the TERMINALR macro is defined in your PC
  173.    Kermit as "SERVER,CONNECT".  KERMAIL and KERMPRT must be set up
  174.    according to the local options and facilities for e-mail and print,
  175.    respectively.
  176.  
  177. 8)  To run Kermit-CMS, simply type "KERMIT" to the CMS system prompt.
  178.  
  179.                    * * Alternate Languages * *
  180.  
  181. Kermit-370 now can be installed in a variety of languages.  The messages
  182. within Kermit have been gathered into a few places in the code, and they
  183. can all be replaced during installation with those of a chosen language.
  184. The replacements are contained in distribution files with names like
  185. ik0vXX.pkt, where "XX" is the two-letter language code according to ISO
  186. 639.  These files contain the messages in an encoded form using only the
  187. character repertoire of ASCII, so that even the extended characters can
  188. pass successfully through a variety of transmission mechanisms.
  189.  
  190. Here are the instructions for applying the changes:
  191.  
  192. 1. Use Kermit itself to decode the language-specific update file into
  193.    the proper IBM code page.  To do this, start Kermit (4.2.6 or
  194.    higher) and then select the desired code page, e.g.,
  195.  
  196.          SET FILE CHARACTER-SET CP500
  197.  
  198.    Then tell Kermit to use ik0vXX.pkt, via
  199.  
  200.          SIMULATE IK0Vxx.PKT
  201.          RECEIVE
  202.  
  203.    Kermit will then quickly decode and (attempt to) store the file with
  204.    the name ik0vXX.upd.  If you already have a file of that name, the
  205.    FILE COLLISION setting will determine what happens (overwrite the
  206.    original, pick a new name for the new file, or whatever).
  207.  
  208. 2. ik0vXX.upd contains the updates for all four major variants of
  209.    Kermit-370, and you must edit the file to remove the parts that
  210.    are not needed.  The edited file should be combined with the
  211.    other updates and applied after the official updates for the
  212.    current release of the variant you are installing.
  213.  
  214. 3. Create or add to an AUX file called KERMIT AUXOPT with the
  215.    following line
  216.  
  217.       SC92300X
  218.  
  219.    Bundle the updates into a file called KERMIT LOCAL (if you already
  220.    have one, it contains KERMIT AUXOPT) as follows:
  221.  
  222.       :READ KERMIT AUXOPT A
  223.       SC92300X
  224.       <any prior contents of kermit auxopt>
  225.       :READ KERMIT SC92300X A
  226.       <CMS and generic contents of ik0vXX.upd>
  227.  
  228.    The new updates will automatically be applied when you run IKCINS.
  229.  
  230.                     * * Accounting Routine * *
  231.  
  232. If you wish to use the optional accounting exit routine with Kermit, you
  233. may do so by answering YES to that question from the installation EXEC.
  234. Before assembling KACCT, you should examine the source and customize it
  235. to your installation's needs, preferably by collecting your changes into
  236. an update file called IKCACT UPD, which will automatically be applied by
  237. the EXEC during installation.
  238.  
  239.                        * * Configuration * *
  240.  
  241. The IBM mainframe and its communications front end (3705, 7171, etc.)
  242. usually require that parity be used by any asynchronous ASCII device
  243. that wishes to communicate with it.  Exactly which kind of parity is
  244. site-dependent.  At Columbia, the 3705 requires Mark parity, and the
  245. 7171 requires Even parity.  Make sure your users know to use the
  246. appropriate parity setting, as well as any other settings required for
  247. IBM mainframe communication (see p.36-39 of the Kermit book).
  248.  
  249. For linemode transfers, the ASCII/EBCDIC translation in the front end is
  250. a key factor.  Kermit-CMS uses an ASCII/EBCDIC translation table which
  251. conforms to the one given in the IBM System/370 Reference Summary.  If
  252. your site's translation table is incompatible with the one Kermit uses,
  253. then enter the appropriate SET ATOE/ETOA/TATOE/TETOA subcommands in the
  254. SYSTEM KERMINI file.  As long as the system tables are invertible with
  255. respect to the printable ASCII characters (even if the A-to-E and E-to-A
  256. tables are not the inverses of each other), the SET subcommands can
  257. compensate.  However, if your system's ASCII/EBCDIC tables are not
  258. invertible, Kermit will not and cannot work; you must change your
  259. system's tables.  Refer to the generic Kermit-370 chapter of the User's
  260. Guide for a step-by-step customization procedure (see the section on
  261. translation tables).
  262.  
  263. Kermit-CMS operation is possible for most types of protocol converters;
  264. for best results, the converter should have a transparent mode.  If
  265. possible, be sure the converter is configured so that the graphics or
  266. transparent mode, whatever it is called, is enabled.  See IK0AAA.HLP for
  267. a list of front ends that are known to work and for a collection of
  268. notes and special warnings about some of them.  Some further
  269. installation details follow for specific devices.
  270.  
  271. When CMS Kermit is to be used with a 7171, make sure the 7171 is set
  272. up with its "keyboard lock delay" parameter set to 0.  Otherwise, the
  273. "terminal" will hang whenever CMS Kermit clears the screen.  This
  274. happens consistently when the parameter is set to 10, and not at all
  275. when set to 0.  For numbers in between, the higher the number, the
  276. more it happens.
  277.  
  278. There is another problem in the 7171 that can cause Kermit file
  279. transfers to abort after a flurry of retransmissions if XON/XOFF flow
  280. control is used by the receiving Kermit, or even by hardware in between
  281. the 7171 and the receiver.  To prevent this problem, set the 7171 flags
  282. so that XOFF is not a valid terminator of a transparent read.  See page
  283. 4-20 of "IBM 7171 Reference Manual and Programming Guide" (IBM
  284. publication number GA27-0021).
  285.  
  286. Kermit operation through a Renex protocol converter generally requires
  287. that type-ahead be turned off.
  288.  
  289. Kermit operation is possible through an IBM 3708 front end in two
  290. different configurations.  In the first, the terminal line must be set
  291. for either "protocol enveloping" or "dynamic" mode, and a session must
  292. be set for line-at-a-time operation for Kermit to work.  Other important
  293. details of the terminal configuration are: (1) the terminal must be
  294. specified as a TWX device, (2) the SSCP format should be set to USSNTO,
  295. (3) the terminal type ID should be set to 05, (4) the line should be set
  296. for 8, or possibly 7, data bits and 1 stop bit, (5) there should be no
  297. "read prompt", and (6) the so-called "alternate" translation table
  298. (number 3) should be selected.  Kermit-CMS may also need to be
  299. configured because some models of the 3708 (or some environments) do not
  300. pass the normal packet character SOH (code 1, CTRL-A).  A suitable
  301. substitute is HT (code 9, CTRL-I).  Alternatively, or additionally, it
  302. may help to set the 3708 "interface type" to 0.
  303.  
  304. The second possible 3708 configuration is "protocol conversion" mode and
  305. makes use of the FULLSCREEN type in Kermit, which is also suitable for
  306. many other kinds of protocol converter.  The basic setup consists of the
  307. following Kermit subcommands.
  308.  
  309.      .... mainframe .....        ....... PC .........
  310.      SET CONTROLLER FULL         set send start 62
  311.      SET RECEIVE START 62        set receive start 62
  312.      SET SEND START 62           set block b
  313.      SET BLOCK B                 set handshake none
  314.      SET HANDSHAKE 0
  315.  
  316. The 62's (Greater-than sign) may be replaced by some other decimal code
  317. for a printable character.  For best results, choose a character that
  318. seldom appears in the files you will be transferring.  In particular,
  319. avoid the Control, Eighth-bit, and Repeat prefixes.  Packet sizes are
  320. automatically restricted by Kermit-CMS, so you needn't set them unless
  321. conditions require packets shorter than the default (77).  Flow control
  322. may be needed to keep up with the data rate on some equipment.  The
  323. block check type should be set to "B" only if the protocol converter is
  324. overzealous in optimizing the data stream -- there are hazards in using
  325. any type other than "1" because of all the packet echoing.  Refer to
  326. IK0AAA.HLP for such details.  Note that the translation of characters
  327. imposes the same setup requirements on FULLSCREEN mode as on the
  328. traditional TTY mode (linemode).  See the DOC.
  329.  
  330. Kermit-CMS supports file transfers through the IBM 3174 AEA with B2 or
  331. higher microcode, but support is restricted to terminals with the ASCII
  332. Graphics capability in three ways that may require compensating
  333. installation:
  334.  
  335. a) The terminal type must be defined in the 3174 to support graphics
  336.    (only the built-in VT241 and Tektronix 4205 types plus suitable
  337.    user-defined terminal types).  IBM's AEA Reference describes how
  338.    to set up terminal tables.
  339.  
  340. b) The line must be defined without a Host Addressable Printer.
  341.  
  342. c) If the 3174 is owned by VTAM, the connection must be made with a
  343.    logmode that allows the Read Partition Query (such as M2SDLCQ).
  344.  
  345. -------- cut here for IKCINS EXEC (invoke for easy installation) ------
  346. &TRACE *
  347. *----------------------------------------------------------------------
  348. *                I K C I N S
  349. * Complete Kermit installation EXEC (including XEDIT macro, all in one)
  350. *   J.F.Chandler - 1992 August 18, revised Nov 10
  351. *   Expanded for Help menus 1993 March - thanks to Adam Kujawski
  352. *   More options: 1993 May
  353. *   Fixed to handle 2 GB or bigger disks: 1996 Nov
  354. *   Fixed to handle CMS 13 and higher: 1996 Dec
  355. * CMS / EXEC 2 -- Compatible with CMS releases 2 onward.
  356. * For an explanation of the operations in this EXEC, see IKCKER.INS and
  357. * IKCKER.BWR in the Kermit distribution.  Obtain the distribution files
  358. * (step 1 in "INS") before running this EXEC.
  359. * Installation requires about 10mb of disk work space.
  360. *
  361. * Optional customization: to create a PRINT file of the update details
  362. * and assemblies, change the definition of &PRKEEP at label -INSTALL
  363. * from NO to YES.  In the standard version of this EXEC, the PRINT file
  364. * is purged unless there are errors in the installation.
  365. *
  366. * Optional customization: to see the messages from UPDATE (each giving
  367. * the name of an update file as it is applied), change the definition
  368. * of &UPDMSG at label -INSTALL from NO to YES.  If you have local mods,
  369. * it may be helpful to see those messages, in case there is an message
  370. * among them.  Normally, this EXEC suppresses them all.
  371. *
  372. * Optional customization: to use extra options on the assembly step(s),
  373. * insert them into the definition of &ASMOPTS at label -INSTALL.  These
  374. * will be passed to the assembler "as is".
  375. *----------------------------------------------------------------------
  376. &IF &0 EQ IKCMENU &GOTO -MAKEMENU
  377. &IF &0 NE IKCFAN &GOTO -INSTALL
  378. *----------------- XEDIT MACRO TO FAN OUT UPDATE FILES ---------------
  379. *----------------- INTENDED TO BE INVOKED AS A PROFILE ---------------
  380.       &DISK = &8
  381.       &L = &LENGTH OF .&DISK
  382.       &IF &L NE 2 &IF &L NE 3 &DISK = O
  383.       &DISK5 = &CONCAT OF &DISK 5
  384.       &IF &L EQ 3 &DISK5 = &8
  385.       &COMMAND MAKEBUF
  386.       COMMAND PRESERVE
  387.       COMMAND SET RECFM F
  388.       COMMAND EXTRACT /FNAME/FTYPE/LINE
  389.       COMMAND SET MSGMODE OFF
  390.       COMMAND :1 SET ZONE 1 5
  391. -LOOP &LOOP -Z *
  392.         COMMAND STACK 1
  393.         &READ VARS * &FN &FT
  394.         &IF .&FT EQ . &GOTO -C
  395.         &COMMAND ERASE &FN &FT &DISK
  396.         COMMAND 1 PUT ;:READ; &FN &FT &DISK5
  397.         &IF &RC NE 2 &SKIP 2
  398.           COMMAND PUT * &FN &FT &DISK5
  399.           &GOTO -C
  400. -Z
  401. -C    COMMAND :&LINE.1 RESTORE
  402.       &COMMAND DROPBUF
  403.       COMMAND MSG &0 complete for &FNAME.1 &FTYPE.1
  404.       &STACK LIFO QUIT
  405.       &EXIT 0
  406. *
  407. *---------------------------------------------- INSTALL HELP MENU
  408. -MAKEMENU
  409. COMMAND EXTRACT /FMODE
  410. COMMAND :0 CASE M
  411. COMMAND :0 TRUNC *
  412. COMMAND :0 ZONE 1 6
  413. COMMAND SET STAY ON
  414. COMMAND SET MSGMODE OFF
  415. COMMAND 1 DEL /:READ /
  416. COMMAND REPEAT *
  417. COMMAND DELETE *
  418. COMMAND SET ARBCH ON $
  419. COMMAND SET ZONE 45 *
  420. COMMAND :1 C/$//*
  421. COMMAND SET ZONE 1 *
  422. COMMAND :1 C/:READ $ $/$/*
  423. COMMAND MACRO JOIN 25
  424. COMMAND REPEAT *
  425. COMMAND :1 / SET / 1 PUTD / SHOW / SETCOM HELPTASK &FMODE.1
  426. COMMAND XEDIT SETCOM HELPTASK &FMODE.1 (NOPROF
  427. COMMAND SET MSGMODE OFF
  428. &CALL -HELPPCH 33 list of SET parameters.
  429. COMMAND FILE
  430. &SETCOM25 = &STRING OF SETCOM TASK
  431. &SETCOM25 = &LEFT OF &SETCOM25 23
  432. COMMAND -1 I &SETCOM25 SET...
  433. &CALL -HELPPCH 25 list of subcommands.
  434. COMMAND /.../ C/ &BLANK / - List of SET subparameters/
  435. COMMAND SAVE KERCOM HELPTASK &FMODE.1
  436. COMMAND :1 DEL *
  437. &SETCOM25 = &LEFT OF KERMITCM 23
  438. COMMAND I &SETCOM25 KERMIT
  439. &SETCOM25 = &STRING OF KERCOM TASK
  440. &SETCOM25 = &LEFT OF &SETCOM25 23
  441. COMMAND I &SETCOM25 SUBCMDS...
  442. &CALL -HELPPCH 25 Help Menu.
  443. COMMAND /.../ C/ &BLANK / &BLANK - List of subcommands/
  444. &STACK FFILE KER HELPTASK &FMODE.1
  445. &EXIT
  446. -HELPPCH &MSG = &RANGE OF & 2 &N
  447. COMMAND ZONE &1 *
  448. COMMAND HEX ON
  449. COMMAND :0 C/ $/X'4A6C'/*
  450. COMMAND :0 I &BLANK
  451. COMMAND I &BLANK &BLANK This is the Kermit-CMS &MSG
  452. COMMAND I &BLANK &BLANK Place cursor on desired item and hit ENTER or PF1.
  453. COMMAND ADD 2
  454. &RETURN
  455. *
  456. *-------------------------------------------------- INSTALL KERMIT
  457. *
  458. -INSTALL
  459. *---------- Maximum positive number allowed in 4-byte word
  460. &MAXPOS = 2147483647
  461. *---------- Set to keep output print file or not...
  462. &PRKEEP = NO
  463. *---------- Set to suppress update application messages...
  464. &UPDMSG = NO
  465. *---------- Set to string of extra assembler options....
  466. &ASMOPTS = &STRING OF
  467. *--------------- INITIALIZE SOME VARIABLES (SET DEFAULTS)
  468. *  ALL THESE OPTIONS ARE CHECKED WITH THE INSTALLER
  469. *
  470. &STACK LIFO  NO  NO    NO   NO    YES   YES   YES  NO    NO   YES   YES
  471. &READ VARS  &XA &SFS &KANJ &NMAC &BASE &CLOB &FAN &ACT &BOOT &HELP &PDS
  472. &STACK LIFO A  KERMIT HELPCMS   *   NO   NO       NO
  473. &READ VARS &DISK &CTL &HELPFT &SRC &LCL &MENU &HELPONLY
  474. *--------------------------------------- DECODE CMS LEVEL
  475. &COMMAND Q CMSLEVEL (LIFO
  476. &IF &RC NE 0 &STACK LIFO * * * *
  477. &READ VARS * * &CMSLEVEL
  478. &CMSLEVEL = &TRANS OF &CMSLEVEL ,
  479. &CMSLEVEL = &TRIM OF &CMSLEVEL
  480. * FOR CMS 7, CHECK IF HASM MISSING (OPTIONAL UNDER ESA 370 FEATURE)
  481. &COMMAND ESTATE HASM MODULE *
  482. &IF &RC NE 0  &IF 0&CMSLEVEL EQ 07 &CMSLEVEL = 7370
  483. &COMMAND ESTATE DMSGPI MACLIB S
  484. &XA2PLUS = &RC
  485. *    &LVL VALUES:                 2  3  4  5  6    7  8   9  10
  486. * NUCLEUS CMSLVL:                 -  6  7  8  8    9 10  10  11
  487. *
  488. &LVL = 1 + &POSITION OF &CMSLEVEL 3  4  5 5.5 5.6  6  7  7370 8
  489. &IF &LVL EQ 1 &IF &XA2PLUS EQ 0 &LVL = 8
  490. &XA     = &WORD OF           NO  NO NO NO YES YES NO YES NO  YES  &LVL
  491. &SFS    = &WORD OF           NO  NO NO NO  NO NO YES YES YES YES  &LVL
  492. &NMAC   = &WORD OF           NO  NO NO NO  NO YES NO YES YES YES  &LVL
  493. * NOTE: THE LIST OF "AVAILABLE" CMS LEVELS NEED NOT BE EXTENDED PAST 8
  494. * UNLESS NEW FUNCTIONS ARE ADDED TO KERMIT REQUIRING MACROS/DEFINITIONS
  495. * MISSING FROM THE CMS 7 AND 8 MACLIBS.
  496. &Y2K = NO
  497. &IF &LVL EQ 8 &IF 0&CMSLEVEL GE 013 &Y2K = YES
  498. *---------------------------------- DEDUCE CNTRL FILE NEEDED
  499. &IF &SFS EQ YES &CTL = KERMCMS6
  500. &IF &NMAC EQ YES &CTL = KERME370
  501. &IF &XA EQ NO &SKIP 4
  502.    &CTL = KERMXA
  503.    &IF &NMAC EQ YES &CTL = KERMXA21
  504.    &IF &SFS EQ YES &CTL = KERMESA
  505.    &IF &Y2K EQ YES &CTL = KERMY2K
  506. *-------------------------------------- SPOOL PRINTER
  507. SENTRIES
  508. &L = &RC
  509. EXECIO * CP (LIFO ST QUERY VIRTUAL 00E
  510. SENTRIES
  511. &L = &RC - &L
  512. &LOOP 2 &L
  513.   &INFO2 = &INFO1
  514.   &READ STRING &INFO1
  515. &CHR = &PIECE OF &INFO1 9 1
  516. &SPCONT = 16
  517. &SPTO = 10
  518. &IF .&CHR NE . &SPTO = &SPTO + 1
  519. &SPCONT = &PIECE OF &INFO1 &SPCONT 6
  520. &SPTO = &PIECE OF &INFO2 &SPTO 12
  521. &COMMAND CP SPOOL 00E CONT TO *
  522. *---------------------------------- ANNOUNCE AND CONFIRM OPTIONS
  523. &COMMAND VMFCLEAR
  524. &PRINT &0 EXEC:
  525. &BEGPRINT -INFO
  526. installs Kermit on a working disk of your choice using distribution source and
  527. updates (assumed to be accessible).  The working disk should be at least 10MB.
  528. There must be enough virtual storage for updating and assembling (a few MB:
  529. depends on conditions).  Source files must be on a single disk (or on its R/O
  530. extensions), but other Kermit updates may be on any accessed disk.
  531.  
  532. To halt installation, enter 'STOP' at any prompt...
  533.  
  534. Before installing, search 'IKCKER BWR' for relevant optional mods.  Local
  535. updates should be listed in 'KERMIT AUXOPT' and be either already accessible
  536. or bundled into 'KERMIT LOCAL' with ':READ' separators.
  537.  
  538. -INFO
  539. &CALL -ASK HELPONLY  Install *only* the HELP file
  540. &IF &HELPONLY EQ NO &CALL -CHECK IKCKER BWR *
  541. &CALL -GETPARM SRC  mode  source filemode
  542. -ASKDISK
  543. &CALL -GETPARM DISK  disk  installation disk
  544. &DISK = &LEFT OF &DISK 1
  545. &DISK2 = &CONCAT OF &DISK 2
  546. &DISK5 = &CONCAT OF &DISK 5
  547. &TXTDSK = &DISK
  548. &COMMAND MAKEBUF
  549. &COMMAND LISTFILE KERMIT TEXT * (FIFO
  550. &IF &RC EQ 0 &READ VARS * * &TXTDSK
  551. &COMMAND DROPBUF
  552. &IF &HELPONLY EQ NO &IF &TXTDSK LT &DISK &GOTO -ERR5
  553. &COMMAND ESTATE KERMIT ASSEMBLE &DISK
  554. &BRC = &RC
  555. &IF &BRC NE 24 &IF &BRC NE 36 &IF &DISK NE * &SKIP 2
  556.   &PRINT Invalid filemode &DISK
  557.   &GOTO -ASKDISK
  558. &COMMAND MAKEBUF
  559. &COMMAND QUERY DISK &DISK (LIFO
  560. &READ VARS * * * &R/W * * &BLKSI * * &FBLK &TBLK
  561. &COMMAND DROPBUF
  562. &IF .&R/W EQ .R/W &SKIP 2
  563.    &PRINT Disk &DISK is not accessed R/W
  564.    &GOTO -ASKDISK
  565. &COMMAND ESTATE $KERMIT ASSEMBLE &DISK
  566. &URC = &RC
  567. &IF &HELPONLY EQ YES &GOTO -DISKOK
  568. &IF .&TBLK NE .- &GOTO -CHKSIZE
  569. &COMMAND MAKEBUF
  570. *                                       Get Filepool id
  571. &COMMAND QUERY ACCESSED &DISK ( LIFO
  572. &READ VARS * * * * &DIR
  573. &DIR = &TRANS OF &DIR : &BLANK
  574. &STACK LIFO &DIR
  575. &READ VARS &FP *
  576. &FP = &CONCAT OF &FP :
  577. *                                       Get available space
  578. &COMMAND QUERY LIMITS * &FP ( LIFO
  579. &READ VARS * * &TBLK &UBLK *
  580. &UBLK = &TRANS OF &UBLK - &BLANK
  581. &STACK LIFO &UBLK
  582. &READ VARS &UBLK *
  583. &COMMAND DROPBUF
  584. &FBLK = &TBLK - &UBLK
  585. -CHKSIZE
  586. &BLKSI = 0&BLKSI + 0
  587. &IF &BLKSI EQ 0 &GOTO -DISKOK
  588. &MAXBLK = &DIV OF &MAXPOS &BLKSI
  589. &TSIZ = &MAXPOS
  590. &IF 0&TBLK LT &MAXBLK &TSIZ = &MULT OF &BLKSI 0&TBLK
  591. &FSIZ = &MAXPOS
  592. &IF 0&FBLK LT &MAXBLK &FSIZ = &MULT OF &BLKSI 0&FBLK
  593. &MINSIZ = 2000000
  594. &IF &BRC NE 0 &MINSIZ = &MINSIZ + 1000000
  595. &IF &URC NE 0 &MINSIZ = &MINSIZ + 1000000
  596. &IF &TSIZ GE 9000000 &IF &FSIZ GE &MINSIZ &SKIP 2
  597.    &PRINT Disk &DISK is too small or too full
  598.    &GOTO -ASKDISK
  599. -DISKOK
  600. &CALL -CHECK &0 EXEC *
  601. &COMMAND COPYFILE &0 EXEC &FM IKCFAN XEDIT &DISK5 (REPLACE TOLABEL -INSTALL
  602. &COMMAND COPYFILE &0 EXEC &FM IKCMENU XEDIT &DISK5 (REPLACE TOLABEL -INSTALL
  603. &IF &HELPONLY EQ YES &GOTO -MAKEHELP
  604. &X = &POSITION OF &CTL KERMIT KERMXA KERMXA21 KERMCMS6 KERMESA KERME370 KERMY2K
  605. &X = &WORD OF           <5.5   5.5     5.6       6      >6     7(370)   >12  &X
  606. &PRINT Control file '&CTL CNTRL' is suitable for CMS Rel. &X ...
  607. &CALL -GETPARM CTL  filename  control filename
  608. &IF .&NEW EQ . &SKIP 3
  609.  &X = &POSITION OF &CTL KERMIT KERMXA KERMXA21 KERMCMS6 KERMESA KERME370 KERMY2K
  610.   &X = 1 + &X
  611.   &XA = &WORD OF    NO    NO     YES    YES       NO      YES    NO      YES  &X
  612. *---------------------------------------- ESTABLISH ASSEMBLER TO USE
  613. &COMMAND VMFCLEAR
  614. &ASMCMD = ASSEMBLE
  615. &IF &XA NE YES &GOTO -GETASM
  616.   &ARGS HASM ASMA90 ASMAHL HLASM
  617.   &I = 0
  618.   &LOOP 4 &N
  619.     &I = &I + 1
  620.     &ASMCMD = &&I
  621.     &COMMAND ESTATE &ASMCMD MODULE *
  622.     &IF &RC EQ 0 &SKIP 0
  623. -GETASM
  624. &CALL -GETPARM ASMCMD  command  assemble command
  625. &IF &URC EQ 0 &CALL -ASK CLOB  Updated source already on disk &DISK - destroy it
  626. &IF &CLOB EQ NO &GOTO -ERR1
  627. &IF &BRC EQ 0 &CALL -ASK BASE  Base source already on disk &DISK - replace it
  628. *---------------------------- MAKE SURE ALL SOURCE FILES ARE PRESENT
  629. &IF &BASE EQ NO &GOTO -CHKEND
  630. &CALL -ASK KANJ  Include Kanji support
  631. &P1 = &STRING OF IK0DOC IK0MAC IKCMAC IK0DEF IK0MAI IK0COM IK0CMD IKCUTL
  632. &X = &STRING OF &P1 IK0PRO
  633. &IF &KANJ EQ YES &X = &STRING OF &P1 IK0KAN IK0PRO
  634. &STACK LIFO &X
  635. &READ ARGS
  636. &I = 0
  637. &LOOP 2 &N
  638.   &I = &I + 1
  639.   &CALL -CHECK &&I ASM &SRC
  640. -CHKEND
  641. *------------------------------ MAKE SURE UPDATES ARE PRESENT
  642. &CALL -CHECK IKCKER UPD *
  643. &IF &XA EQ YES &CALL -CHECK IKCXA UPD *
  644. *-------------------------------------- MAKE SURE DISK IS DEFINED
  645. &COMMAND ESTATEW * * &DISK
  646. &IF &RC EQ 0 &SKIP 2
  647.   &COMMAND ESTATE * * &DISK
  648.   &IF &RC EQ 0 &GOTO -ERR2
  649. *
  650. *-------------- ************ S T E P   INS 2
  651. *
  652. *-------------------------------------- MAKE OPTIONAL ACCOUNTING EXIT
  653. &CALL -ASK ACT  Include optional accounting exit
  654. &IF &ACT EQ NO &GOTO -ACTEND
  655. &CALL -CHECK IKCACT ASM &SRC
  656. &COMMAND COPYFILE IKCACT ASM &FM KACCT ASSEMBLE &DISK5 (RECFM F LRECL 80 REP
  657. &COMMAND ESTATE IKCACT UPD &SRC
  658. &IF &RC NE 0 &GOTO -ACTEND
  659. &PRINT Updating KACCT
  660. &CALL -CHECK IKCACT UPD &SRC
  661. &COMMAND COPYFILE IKCACT UPD &FM KACCT UPDATE &DISK5 (RECFM F LRECL 80 REP
  662. &UPDOPTS = &STRING OF OUTMODE &DISK PRINT INC REP
  663. &COMMAND UPDATE KACCT ASSEMBLE &DISK5 KACCT UPDATE &DISK ( &UPDOPTS
  664. &UPDRC = &RC
  665. &COMMAND ERASE KACCT UPDATE &DISK
  666. &IF &UPDRC GT 12 &GOTO -ERR3
  667. -ACTEND
  668. *-------------------------------------- MAKE BASE SOURCE(S)
  669. ©OP = &STRING OF RECFM F LRECL 80 REP
  670. &IF &LVL GE 3 &GOTO -BOOTEND
  671. &BOOT = YES
  672. &CALL -ASK BOOT  Generate high-memory bootstrap
  673. &IF &BOOT EQ NO &GOTO -BOOTEND
  674. &PRINT **NOTE** KERMIT TEXT must be kept together with MODULE
  675. &CALL -CHECK IKCBOO ASM &SRC
  676. &COMMAND ESTATE KERMBOOT ASSEMBLE &DISK
  677. &IF &RC NE 0 &SKIP 1
  678.  &IF &BASE EQ NO &SKIP 1
  679.   &COMMAND COPYFILE IKCBOO ASM &FM KERMBOOT ASSEMBLE &DISK5 ( ©OP
  680. -BOOTEND
  681. &IF &BASE EQ NO &GOTO -MAKEND
  682. &PRINT Merging base source
  683. &I = 0
  684. &LOOP 4 &N
  685.   &I = &I + 1
  686.   &CALL -CHECK &&I ASM &SRC
  687.   &COMMAND COPYFILE &&I ASM &FM KERMIT ASSEMBLE &DISK5 ( ©OP
  688.   ©OP = &STRING OF APPEND
  689. -MAKEND
  690. *
  691. *-------------- ************ S T E P   BWR 4
  692. *
  693. *----------------------------------- FAN OUT UPDATE FILES
  694. &COMMAND VMFCLEAR
  695. &COMMAND ESTATE KERMIT AUXOPT *
  696. &AUXOPT = &RC
  697. &CALL -ASK LCL  Any local updates to apply
  698. &IF &LCL EQ NO &SKIP 2
  699.   &IF &AUXOPT NE 0 &CALL -CHECK KERMIT LOCAL *
  700.   &SKIP 1
  701.     &IF &AUXOPT EQ 0 &PRINT *** Warning: 'KERMIT AUXOPT' exists anyway.
  702. &COMMAND ESTATE KERMIT AUXLCL &DISK
  703. &IF &RC EQ 0 &CALL -ASK FAN  Re-extract individual update files
  704. &IF &FAN EQ NO &GOTO -FANEND
  705. &PRINT Extracting individual update files
  706. &COMMAND XEDIT IKCKER UPD * ( PROFILE IKCFAN ) &DISK
  707. &IF &XA EQ YES &COMMAND XEDIT IKCXA UPD * ( PROFILE IKCFAN ) &DISK
  708. *
  709. *-------------- ************ S T E P   BWR 5
  710. *
  711. &COMMAND ESTATE IKCKER NUP *
  712. &IF &RC NE 0 &SKIP 2
  713.   &CALL -ASK FAN  Extract updates from IKCKER NUP
  714.   &IF &FAN EQ YES &COMMAND XEDIT IKCKER NUP * ( PROFILE IKCFAN ) &DISK
  715. &IF &LCL EQ NO &SKIP 2
  716.   &COMMAND ESTATE KERMIT LOCAL *
  717.   &IF &RC EQ 0 &COMMAND XEDIT KERMIT LOCAL * ( PROFILE IKCFAN ) &DISK
  718. -FANEND
  719. *------------------- ONE LAST CHECK: CNTRL FILE FROM FAN
  720. &CALL -CHECK &CTL CNTRL &DISK
  721. &IF &LCL EQ YES &CALL -CHECK KERMIT AUXOPT *
  722. *
  723. *-------------- ************ S T E P   INS 3
  724. *
  725. *----------------------------------------- MAKE HELP FILE
  726. -MAKEHELP
  727. &CALL -GETPARM HELPFT  filetype  help filetype
  728. &COMMAND ESTATE KERMIT &HELPFT &DISK
  729. &IF &RC EQ 0 &CALL -ASK HELP  HELP file already on disk &DISK - replace it
  730. &IF &HELP EQ NO &GOTO -HELPEND
  731. &CALL -CHECK IKCKER HLP &SRC
  732. &IF &LVL GE 3 &SKIP 2
  733.   &COMMAND COPYFILE IKCKER HLP &FM KERMIT &HELPFT &DISK2 (REP
  734.   &GOTO -HELPEND
  735. &COMMAND HELPCONV IKCKER HLP &FM
  736. &CALL -ASK PDS  Convert help file to PDS form
  737. &IF &PDS EQ YES &SKIP 2
  738.   &COMMAND COPYFILE IKCKER $HLP A KERMIT &HELPFT &DISK2 (REP
  739.   &GOTO -HELPEND
  740. &CALL -ASK PDS  Remove confusing help section separators
  741. &COMMAND VMFCLEAR
  742. &PRINT Installing KERMIT &HELPFT ...
  743. &COMMAND MAKEBUF
  744. &BUFNO = &RC
  745. &STACK FIFO SET MSGMODE OFF
  746. &STACK FIFO SET RECFM F
  747. &STACK FIFO SET CASE M
  748. * WARNING: THERE ARE LOWER-CASE CHARACTERS IN 2 OF THE NEXT 4 LINES
  749. &IF &PDS EQ NO &SKIP 2
  750.   &STACK FIFO LOCATE -2/.cs / DEL
  751.   &STACK FIFO REPEAT *
  752. &STACK FIFO :0 C/.cm /*COPY /*
  753. &STACK FIFO SET MSGMODE ON
  754. &STACK FIFO FFILE TEMPKERM COPY &DISK5
  755. &COMMAND XEDIT IKCKER $HLP (NOPROF
  756. &COMMAND DROPBUF &BUFNO
  757. &COMMAND MACLIB GEN TEMPKERM TEMPKERM
  758. &COMMAND COPYFILE TEMPKERM MACLIB A KERMIT &HELPFT &DISK2 (REP
  759. &COMMAND ERASE TEMPKERM MACLIB A
  760. &COMMAND ERASE TEMPKERM COPY &DISK
  761. -HELPEND
  762. &IF &LVL LE 3 &GOTO -MENUEND
  763. &CALL -ASK MENU  Create HELP menu system
  764. &IF &MENU EQ NO &GOTO -MENUEND
  765. &COMMAND ESTATE IKCKER $HLP A
  766. &IF &RC EQ 0 &SKIP 2
  767.   &CALL -CHECK IKCKER HLP &SRC
  768.   &COMMAND HELPCONV IKCKER HLP &FM
  769. &PRINT Installing KER HELPTASK ...
  770. &COMMAND MAKEBUF
  771. &BUFNO = &RC
  772. &STACK FIFO SET MSGMODE OFF
  773. &STACK FIFO SET CASE M
  774. &STACK FIFO SET ARBCHAR ON $
  775. * WARNING: THERE ARE LOWER-CASE CHARACTERS IN THE NEXT LINE
  776. &STACK FIFO :0 C/.cm $ /:READ $ &HELPFT /*
  777. &STACK FIFO SET MSGMODE ON
  778. &STACK FIFO FFILE TEMPKERM HELP &DISK2
  779. &COMMAND XEDIT IKCKER $HLP (NOPROF
  780. &COMMAND DROPBUF &BUFNO
  781. &COMMAND ERASE SETCOM HELPTASK &DISK
  782. &COMMAND XEDIT TEMPKERM HELP &DISK2 ( PROFILE IKCMENU
  783. &COMMAND XEDIT TEMPKERM HELP &DISK2 ( PROFILE IKCFAN ) &DISK2
  784. &COMMAND ERASE TEMPKERM HELP &DISK
  785. -MENUEND
  786. &COMMAND ERASE IKCKER $HLP A
  787. &IF &HELPONLY EQ YES &EXIT
  788. *
  789. *-------------- ************ S T E P   BWR 6
  790. *
  791. *----------------------------------------- APPLY UPDATES
  792. &COMMAND ERASE $KERMIT ASSEMBLE &DISK
  793. &COMMAND ERASE KERMIT TEXT &DISK
  794. &PRINT Updating KERMIT ASSEMBLE
  795. &DQ = &CONCAT OF &DISK '
  796. &PRINT File 'KERMIT UPDATES &DQ will have the list of updates applied...
  797. &IF &UPDMSG EQ NO &COMMAND SET CMSTYPE HT
  798. &UPDOPTS = &STRING OF CTL STK OUTMODE &DISK PRINT INC
  799. &COMMAND UPDATE KERMIT ASSEMBLE &DISK &CTL CNTRL &DISK ( &UPDOPTS
  800. &UPDRC = &RC
  801. &COMMAND SET CMSTYPE RT
  802. &IF &UPDRC GT 12 &GOTO -ERR3
  803. *
  804. *-------------- ************ S T E P   INS 4
  805. *
  806. *------------------------------- RETRIEVE MACLIB LIST FROM STACK
  807. &COMMAND SENTRIES
  808. &IF &RC LE 1 &GOTO -ERR3
  809. &READ VARS
  810. &READ ARGS
  811. &IF &N LE 1 &GOTO -ERR3
  812. &MACLIBS = &RANGE OF & 2 9
  813. &COMMAND GLOBAL MACLIB &MACLIBS
  814. *
  815. *-------------- ************ S T E P   INS 5
  816. *
  817. *----------------------------------------------- ASSEMBLE KERMIT
  818. &PRINT Assembling...
  819. &NAME = KERMIT
  820. &COMMAND &ASMCMD $KERMIT ( NOESD NORLD PRINT &ASMOPTS
  821. &IF &RC NE 0 &GOTO -ERR4
  822. &COMMAND ERASE $KERMIT ASSEMBLE &DISK
  823. &COMMAND RENAME $KERMIT TEXT &DISK KERMIT = &DISK2
  824. &LOADS = KERMIT
  825. &IF &ACT EQ NO &SKIP 4
  826.   &LOADS = &STRING OF &LOADS KACCT
  827.   &NAME = KACCT
  828.   &COMMAND &ASMCMD KACCT ( NOESD NORLD PRINT &ASMOPTS
  829.   &IF &RC NE 0 &GOTO -ERR4
  830. &IF &BOOT EQ NO &SKIP 4
  831.   &LOADS = KERMBOOT
  832.   &NAME = KERMBOOT
  833.   &COMMAND &ASMCMD KERMBOOT ( NOESD NORLD PRINT &ASMOPTS
  834.   &IF &RC NE 0 &GOTO -ERR4
  835. &COMMAND CP CLOSE 00E NA KERMIT LISTING
  836. *
  837. *-------------- ************ S T E P   INS 6
  838. *
  839. &PRINT Loading Kermit ...
  840. &IF &LVL GE 3 &RLDSAVE = RLDSAVE
  841. &COMMAND LOAD &LOADS (CLEAR NOMAP &RLDSAVE
  842. &R = &RC
  843. &COMMAND GENMOD KERMIT MODULE &DISK2
  844. &IF &RC GT &R &R = &RC
  845. &IF &R EQ 0 &IF &PRKEEP EQ NO &SKIP 1
  846.   &COMMAND CP SPOOL 00E CLOSE
  847. &COMMAND CP SPOOL 00E PURGE &SPCONT &SPTO
  848. &EXIT &RC
  849. *-------------------------------------------------------------------
  850. *-------------------------------------- CONFIRM EXISTENCE OF A FILE
  851. -CHECK
  852. &COMMAND ESTATE &1 &2 &3
  853. &IF &RC EQ 0 &SKIP 3
  854.   &X = &CONCAT OF &3 '
  855.   &PRINT File '&1 &2 &X not found.
  856.   &GOTO -DONE
  857. &FM = &3
  858. &IF .&3 NE .* &RETURN
  859. &COMMAND MAKEBUF
  860. &COMMAND LISTFILE &1 &2 &3 (FIFO
  861. &READ VARS * * &FM
  862. &COMMAND DROPBUF
  863. &RETURN
  864. *----------------------------------- ASK FOR POSSIBLE OVERRIDE (PARM)
  865. -GETPARM &X = &CONCAT OF ' &&1 '
  866. &MSGTXT = &RANGE OF & 3 &N
  867. &PRINT Default &MSGTXT is &X - enter alternate &2 if desired:
  868. -GETPM1 &IF &1 EQ ASMCMD &SKIP 2
  869.   &READ VAR &NEW
  870.   &SKIP 1
  871.     &READ STRING &NEW
  872. &IF .&NEW NE .* &SKIP 2
  873.   &PRINT '*' not allowed, except as default.  Re-enter, or type STOP:
  874.   &GOTO -GETPM1
  875. &IF .&NEW EQ .STOP &GOTO -QUIT
  876. &IF .&NEW NE . &&1 = &NEW
  877. &RETURN
  878. *----------------------------------- ASK FOR POSSIBLE OVERRIDE (YES/NO)
  879. -ASK &MSG = &RANGE OF & 2 &N
  880. &DEFMSG = &CONCAT OF (default: &BLANK &&1 )?
  881.   &PRINT &MSG &DEFMSG
  882.   &READ VAR &NEWVAL
  883.   &X = &POSITION OF .&NEWVAL .  .Y .YES .N .NO .STOP
  884. &IF &X EQ 0 &SKIP -3
  885. &IF .&NEWVAL EQ .STOP &GOTO -QUIT
  886. &&1    = &WORD OF           &&1 YES YES NO  NO  ...  &X
  887. &RETURN
  888. *-------------------------------------- ERROR EXITS
  889. -QUIT &PRINT Stopping...
  890.    &GOTO -DONE
  891. -ERR1 &PRINT &0 would destroy $KERMIT ASSEMBLE &DISK
  892.    &GOTO -DONE
  893. -ERR2 &PRINT Mode letter &disk not defined
  894.    &GOTO -DONE
  895. -ERR3 &PRINT Error in UPDATE - rc=&UPDRC
  896.    &IF &UPDRC NE 0 &PRINT Enter 'HELP UPDATE' for explanation.
  897.    &GOTO -DONE
  898. -ERR4 &PRINT Error in assembling &NAME - rc=&RC
  899.    &GOTO -DONE
  900. -ERR5 &FID = &CONCAT OF 'KERMIT &BLANK TEXT &BLANK &TXTDSK '
  901.    &PRINT &FID precedes disk &DISK in search order.
  902.    &PRINT Remove or rename.
  903. -DONE
  904.    &COMMAND CP CLOSE 00E NA KERMIT LISTING
  905.    &COMMAND CP SPOOL 00E CLOSE
  906.    &COMMAND CP SPOOL 00E &SPCONT &SPTO
  907.    &EXIT 100
  908.