Dear Reader:

   Due to a change in the production of the RSTS/E Newsletter, the copy
stored on the Newsletter System may be a bit hard to read. However, it
is still being provided there for those who want the material "hot off
the presses". I suggest subscribing to the combined newsletters as well,
however.

	Terry Kennedy
	RSTS SIG Newsletter Editor


                                 December, 1988
                                Table of Contents
        
        
               From the Chair. . . . . . . . . . . . . . . . RST-2
               From the Editor . . . . . . . . . . . . . . . RST-3
               Newsletter System Update. . . . . . . . . . . RST-3
               User-Defined Keys on DEC Terminals. . . . . . RST-4
               Yet More User-Defined Keys on DEC Terminals . RST-8
               Using DECNET/E Interactively. . . . . . . . . RST-12
               New Compatibility Guides Available. . . . . . RST-15






        ___________________________________________________________
        
        FROM THE CHAIR
        Charles W. Mustain - RSTS SIG Chairman
        ___________________________________________________________
        
        
             Last  month  we  looked at some reasons to update to the currently-supported version  of  RSTS.   As  I 
        write this, that is version 9.5.  This month let us consider some reasons you might not wish to upgrade.
        
             There is in the RSTS community a feeling that versions 9.0 and above have performance problems.  To  
        an extent, this feeling is well-rooted in fact.  Earlier versions in the 9.x family of RSTS were slower than  version 
        7.2  for most job mixes.  For some job mixes, it was slower than 8.0.  Most of these performance problems  have 
        been  remedied.  My experience is that for most job mixes, 9.5 is as fast or faster than 8.0. In some cases, it is  as 
        fast as 7.2.
        
             There are some circumstances, however, where you may not wish to upgrade. For example, if you  have 
        a  7.2  or  8.0 system where you are at or near the limits of acceptable performance it is very  likely  you  will  be 
        unhappy  with  9.5  performance with the same applications mix. If you are on 7.2 and you  can  clearly  point  to 
        small buffer space as your problem, by all means upgrade. Small buffer pool is not a problem with 9.x systems.
        
             One  thing  I  have noted about 9.x systems is that they do a great deal more of their  work  in  memory.  
        There appears to be significantly greater CPU overhead as compared to earlier versions of the software. This  is 
        especially  true if you take advantage of all the new features for loading the SAT in memory and loading  all  the 
        monitor overlays.  If you have a system which has a job mix which leaves you running short of CPU 
        cycles, 9.x may be noticeably slower than your current performance.
        
             The 9.x series likes lots of memory and a fast CPU.  If you have a stable application on an earlier PDP-
        11  such  as  a  11/34,  11/45, 11/24, 11/23+, you may be better off staying with  what  you  have,  particularly  if 
        current performance is satisfactory and none of the choices from last month's column apply to you.
        
             A  word  about  memory, RSTS 9.5 can find a use for the full 4MB of memory  available  on  the  latest 
        PDP-11s.   I recommend to my consultees a minimum of 2MB. It is, of course, still possible to run well  in  1MB 
        on systems with low numbers of users and/or very fast disk subsystems.
        
             As  has always been the case, performance under any version of RSTS is highly dependent on  your  job 
        mix.   Not only the type of work being done but the efficiency of the application code can have  dramatic  effects 
        on  performance.  I have seen 9.x systems run faster than 7.2 systems, although this is the exception  rather  than 
        the rule. All of the above should be taken as a starting point for decision making.  You can always keep a 
        bootable copy of your old system handy for an emergency fallback should the performance of an upgrade  prove 
        unsatisfactory.
        
             On balance, I believe that almost all sites with an 11/84 or 11/44 with MSCP-type disks can and should 
        move  to  9.x  from  8.0.   Moving  from 7.2 is a tougher decision as  changes  in  RMS  versions  and  in  layered 
        products such as BASIC-PLUS 2 require considerable effort in making the upgrade. The 
        pain  is  somewhat  offset by the huge improvement in BP2 and in a switch to COBOL 81.   Being  able  to  take 
        advantage of I&D space to write larger BP2 programs alone can make up for a lot of pain in doing the update!
        
             Whatever your decision, enjoy RSTS, DEC's friendliest operating system.
        






        ___________________________________________________________
        
        FROM THE EDITOR
        Terry Kennedy - RSTS SIG Newsletter Editor
        ___________________________________________________________
        
        
             It  never  fails!   When I say we'll have a section next month, something always comes up.   So,  I'll  stop 
        talking  and  just  keep writing.  Anyway, the Anaheim Symposium is just over and there  were  lots  of  excellent 
        RSTS  sessions given.  The exhibit floor had a PDP-11/84 running RSTS V9.6, with LAT support.   This  system 
        was  accessable  from  the  user-access  terminals on the exhibit floor.  The  DEC  developers  also  had  buttons 
        which had the slogan "Better LAT/E than never".
        
             The  Newsletter system is now accessible at speeds up to 9600 baud, if you have a  compatible  modem.  
        Also,  error  correction  and  data compression are now supported.  See the article later in  this  issue  for  more 
        details.
        
             As  always,  the  SIG  is  looking for articles to print. To submit an article,  you  may  use  the  following 
        methods:
        
        
             Via US Mail:                   Via UPS, FedEx, etc.:
        
             Terence M. Kennedy             Terence M. Kennedy               
             St. Peter's College            St. Peter's College              
             Academic Computer Center       Academic Computer Center
             2641 Kennedy Blvd.             121 Glenwood Avenue              
             Jersey City, N.J. 07306        Jersey City, N.J. 07306          
             (201) 435-0252                 (201) 435-0252                   
        
        
             You  may  electronically submit material by calling the RSTS SIG bulletin board system  at  (201)  915-
        9361,  or  you may reach me as user KENNEDY on both DCS and DECUServe, if you have access to  either  of 
        those systems.
        
             You may submit material on RX50's or RX33's (in RSTS or RT11 format), on 800, 1600, 3200, or  6250 
        BPI  9-track  tape (in DOS, ANSI, BRU, RSTS BACKUP or VMS BACKUP format), or on  PC-DOS  floppies 
        (5  1/4  or  3 1/2 inch format).  If you are really desperate, I can also accept RSTS or  RT11  format  RL02  and 
        RK07 disks.  You may also submit hardcopy documents, but these will take longer to get into print.
        
        ___________________________________________________________
        
        NEWSLETTER SYSTEM UPDATE
        Terry Kennedy - RSTS SIG Newsletter Editor
        ___________________________________________________________
        
        
             The  Newsletter System now supports connections at speeds up to 9600 baud.  We've installed  two  US 
        Robotics  Courier  HST  modems  on two new numbers.  These  modems  have  MNP  (Microcom  Networking 
        Protocol)  error correction and data compression.  The new phone numbers are (201) 435-2546 and  (201)  435-
        2554,  and  support connections at 110, 300, 1200, 2400 and 9600 baud.  The previous  numbers,  (201)  915-9361 
        and  (201)  915-9362 remain active, and should continue to be used by people calling in at 1200  baud  or  slower 
        speeds.  In this manner, the high-speed ports will be left available for users with high-speed modems.
        






             In  addition,  the new numbers are accessible via the PC Pursuit discount calling service offered  by  US 
        Sprint  /  Telenet.   This  optional  service  gives you unlimited night calling  for  a  low  monthly  rate.  DECUS 
        commercialism  policy may prohibit any further information here, but complete information is available  on  the 
        Newsletter System by typing HELP NEWS PURSUIT at the $ prompt.
        
             Astute readers may note that the first of the two new numbers is the original Newsletter System  phone 
        number - we managed to get the same number again.
        
             Coming soon - Selected DECUS Library programs and Notes electronic conferencing.
        
        ___________________________________________________________
        
        USER DEFINED KEYS ON DEC TERMINALS
        W. Franklin Mitchell, Jr., Erskine College, Due West, SC
        ___________________________________________________________
        
        
             The VT200/VT300 series terminals are very good terminals.  They are small, good looking, and gener-
        ally  easy  to  use.   The  purpose of this article is to help reduce the confusion provided  by  the  "Greek"  in  the 
        manuals.
        
             The  VT220  manuals  describe  character codes in a column/row format.   For  example,  the  question 
        mark  (?)  character  is labeled 3/15.  This is nothing more than hexadecimal notation in a  decimal  form!   The 
        ASCII  value  of the question mark character is 3/15 or 3F hex or (3*16 + 15) = 63 decimal.   The  CSI  control 
        character is 9/11 or 9B hex or (9*16 + 11) or 155 decimal.
        
             The VT220 in VT220 mode can respond to either 8-bit or 7-bit control codes.  Every 8-bit control  code 
        has  an equivalent 7-bit two character escape sequence.  For example, to lock the VT220's keyboard, the  VT220 
        can receive either:
        
                       Characters                       Decimal Values
        
                       CSI ? 2 h                        155, 63, 50, 104
                                      or
                       ESC [ ? 2 h                       27, 91, 63, 50, 104
        
             ESC [ is the 7-bit version of the CSI control code.  To form a 7-bit escape sequence for an 8-bit control 
        code,  begin  with  ESC (27) followed by the decimal value of the 8-bit control code minus 64.  This  is  why  CSI 
        (155) turns into ESC [ (27, 155 - 64 or 91).
        
             The  VT220 Programmer Pocket Guide that comes with each VT220 provides most of the  information 
        needed to make the VT220 do fancy things like bold a word or blink a line.  Instructions on how to program  the 
        VT220's user defined keys (UDKs) are vague.  Just have a program send:
        
                  "DCS Pc;Pl | Ky1/st1;ky2/st2;...kyn/stn ST"
        
             This is the following sequence of characters:  DCS (144) or ESC P (27, 80), Pc is the clear key  parame-
        ter (0 = clear all UDKs, 1 = don't), ";" (59), Pl is the lock key parameter (0 = lock, 1 = don't), "|" (124), Kyn  is 
        the  key  code (F6 = 17, ..., F20 = 34. See page 29 of the pocket guide), "/" (47), stn is the  key  definition  string 
        (Hex ASCII!), [";" (59), more key codes / stn's], and finally the ST (156) or ESC \ (27, 92) character(s).
        
             To define key F6 to be RUN<CR> send the VT220
        
                  ( R   U   N  <CR> )






                  DCS 1 ; 1 | 1 7 / 5_2 5_5 4_E 0_D ST
        
             which is the following decimal codes:
        
                  144,  49, 59, 49, 124, 49, 55, 47, 53, 50, 53, 53,
                  52, 69, 48, 68, 156
        
                  (144 can be 27, 80 and 156 can be 27, 92)
        
                The following BASIC-PLUS program defines UDKs much more easily:
        
        1000    EXTEND &
        ! &
        !       VTUDFK.BAS                                              8-May-85 &
        ! &
        !       Program to load the VT220's user defined function keys &
        ! &
        ! &
        !        Author:        W. Franklin Mitchell, Jr. &
        !                       Director of Computer Services &
        !                       Erskine College, Due West, South Carolina &
        ! &
        !                       Copyright (c) 1985 &
        !                       Erskine College, Due West, South Carolina &
        ! &
        !     *********************************************************************** &
        !     * This software is furnished without charge by  Erskine  College  and * &
        !     * may  be  copied  only  with  the inclusion of the author's name and * &
        !     * copyright notice.  No title to or ownership  of  this  software  is * &
        !     * hereby transmitted.  Neither Erskine College nor the author assumes * &
        !     * any responsibility for the use or reliability of this software. The * &
        !     * author welcomes comments and/or  bug  reports  mailed  to  Franklin * &
        !     * Mitchell,  Erskine College, Box 86, Due West, South Carolina 29639. * &
        !     *********************************************************************** &
        ! &
        
        1010 !  UDFK data file format.                  (<CR> = CTRL/M = ^M = RETURN) &
        ! &
        !       Ignore the "!<tab>" on the left and the comments on the right of each &
        !       of the following lines: &
        ! &
        !       ~F20    This example  UDFK.DAT  defines  F20 as  "PRINT",  F16 &
        !       PRINT   (the "Do" key)  as "RUN<CR>",  F11 as ESCape (CTRL/[), &
        !       ~FDo    F12 as back space (CTRL/H), F13 as line feed (CTRL/J), &
        !       RUN^M   and F6 as uparrow C <CR>. &
        !       ~F11    &
        !       ^[      "~Fn<CR>",  where n is a number from 6 to 20 or either &
        !       ~F12    "Help" or "Do", identifies which function key is being &
        !       ^H      defined.  The  next  line  contains the function key's &
        !       ~F13    definition followed by <CR>.  This  <CR>  is  not part &
        !       ^J      of the function key's definition.   Control characters &
        !       ~F6     can  be  entered  as ^c where c is a UPPER CASE letter &
        !       _^C^M   A-Z, "[", "\", "^", or "_".  The underscore is used to &
        !       ~FEND   quote  the  uparrow character (see F6).  The last line &






        !               in the UDFK file must be "~FEND<CR>". &
        
        1020    DIM HEX.CHR$(15) &
        
        1040    ON ERROR GOTO 2000 &
        \       ESC$ = CHR$(155%) &
        \       PRINT ESC$; "[H"; ESC$; "[J" &
        \       PRINT "VT220 function key defining program  V1.0"; &
        \       PRINT TAB(54%); TIME$(0%); TAB(68%); DATE$(0%) &
        \       PRINT &
        \       PRINT "Your terminal must be in VT220 mode (7 "; &
        \       PRINT "or 8 bit) in order for this program to" &
        \       PRINT "work properly." &
        \       HEX.CHR$(X%) = NUM1$(X%) FOR X% = 0% TO 9% &
        \       HEX.CHR$(X%) = CHR$(55% + X%) FOR X% = 10% TO 15% &
        \       UDFK.TOTAL% = 0% &
        \       IN%  = 1% &
        \       OUT% = 2% &
        \       DCS$ = ESC$ + "P" &
        \       ST$  = ESC$ + "\" &
        
        1100    PRINT &
        \       PRINT "VT220 User Defined Function Key definition file <UDFK.DAT>"; &
        \       INPUT LINE UDFK.FILE$ &
        \       UDFK.FILE$ = CVT$$(UDFK.FILE$, 38%) &
        \       UDFK.FILE$ = "UDFK.DAT" IF LEN(UDFK.FILE$) = 0% &
        \       OPEN UDFK.FILE$ FOR INPUT AS FILE IN%, MODE 8192% &
        
        1120    OPEN "KB:" FOR OUTPUT AS FILE OUT%, MODE 4% &
        
        1140    PRINT &
        \       PRINT "Do you want to clear all previously defined UDFKs <N>"; &
        \       INPUT LINE CLEAR$ &
        \       CLEAR$ = LEFT( CVT$$(CLEAR$, 38%), 1%) &
        \       CLEAR$ = "N" IF LEN(CLEAR$) = 0% &
        \       IF CLEAR$ = "Y" &
                   THEN &
                        PRINT #OUT%, DCS$; "0;1|"; ST$; &
                   ELSE &
                        GOTO 1140 IF CLEAR$ <> "N" &
        
        1160    INPUT LINE #IN%, L$ &
        \       GOTO 5000 IF LEFT(L$, 2%) <> "~F" &
        \       PRINT &
        
        1200    X$ = "" &
        \       F$ = CVT$$( RIGHT(L$, 3%), 38%) &
        \       F$ = "15" IF ASCII(F$) = ASCII("Help") &
        \       F$ = "16" IF ASCII(F$) = ASCII("Do") &
        \       F% = VAL(F$) &
        \       PRINT #OUT%, USING "Key f##", F%; &
        \       IF F% >= 6% AND F% <= 10% &
                   THEN &
                        FKEY$ = NUM1$(F% + 11%) &






                   ELSE &
                IF F% >= 11% AND F% <= 14% &
                   THEN &
                        FKEY$ = NUM1$(F% + 12%) &
                   ELSE &
                IF F% >= 15% AND F% <= 16% &
                   THEN &
                        FKEY$ = NUM1$(F% + 13%) &
                   ELSE &
                IF F% >= 17% AND F% <= 20% &
                   THEN &
                        FKEY$ = NUM1$(F% + 14%) &
                   ELSE &
                        5000 &
        
        1300    INPUT LINE #IN%, L$ &
        \       GOTO 1400 IF LEFT(L$, 2%) = "~F" &
        \       X% = 0% &
        
        1320    X% = INSTR(X% + 1%, L$, "^") &
        \       GOTO 1360 IF X% = 0% &
        \       IF MID(L$, X% - 1%, 1%) = "_" &
                   THEN &
                        L$ = LEFT(L$, X% - 2%) + RIGHT(L$, X%) &
                   ELSE &
                        L$ = LEFT(L$, X% - 1%) &
                                + CHR$( ASCII(MID(L$, X% + 1%, 1%)) AND 31% ) &
                                + RIGHT(L$, X% + 2%)
        1340 GOTO 1320 &
        
        1360    X$ = X$ + L$ &
        \       GOTO 1300 &
        
        1400    UDFK.TOTAL% = UDFK.TOTAL% + LEN(X$) &
        \       IF UDFK.TOTAL% > 256% &
                   THEN &
                        PRINT &
                \       PRINT "?UDFKs exceed maximum of 256 bytes." &
                \       GOTO 8000 &
        
        1420    PRINT #OUT%, DCS$; "1;1|"; FKEY$; "/"; &
        \       TXT% = LEN(X$) - 2% &
        ! &
        !       TXT% is the length of the UDFK text (minus the CR LF) &
        
        1440 FOR X% = 1% TO TXT% &
        \       CHR% = ASCII(RIGHT(X$, X%)) &
        \       HI%  = CHR%/16% &
        \       LOW% = CHR% AND 15% &
        \       PRINT #OUT%, HEX.CHR$(HI%); HEX.CHR$(LOW%);
        1460 NEXT X% &
        \       PRINT #OUT%, ST$; &
        \       PRINT #OUT%, " defined." &
        \       GOTO 1200 IF LEFT(L$, 5%) <> "~FEND" &






        
        1500    PRINT &
        \       PRINT "Do you want to lock all UDFKs <N>"; &
        \       INPUT LINE LOCK$ &
        \       LOCK$ = LEFT( CVT$$(LOCK$, 38%), 1%) &
        \       LOCK$ = "N" IF LEN(LOCK$) = 0% &
        \       IF LOCK$ = "N" &
                   THEN &
                        8000 &
                   ELSE &
                        GOTO 1500 IF LOCK$ <> "Y" &
                \       PRINT #OUT%, DCS$; "1;0|"; ST$; &
                \       GOTO 8000 &
        
        2000    PRINT IF CCPOS(0%) &
        \       PRINT &
        \       RESUME 3000 IF (ERR = 5% OR ERR = 2% OR ERR = 6%) AND ERL = 1100% &
        \       RESUME 4000 IF ERL = 1200% &
        \       RESUME 5000 IF ERR = 11% AND (ERL = 1160% OR ERL = 1300%) &
        \       RESUME 8000 IF ERR = 11% &
        \       GOTO 8000 &
        
        3000    PRINT "%Can't find UDFK file "; '"'; UDFK.FILE$; '".  Try again:' &
        \       GOTO 1100 &
        
        4000    PRINT '?Missing "~FEND" at end of UDFK file.' &
        \       GOTO 8000 &
        
        5000    PRINT &
        \       PRINT "?UDFK file does not have proper syntax." &
        
        8000    CLOSE IN%, OUT% &
        \       ON ERROR GOTO 0 &
        
        32767   END
        
        [Ed. Note: The above program is available on the Newsletter System as file [49,1]VTUDFK.BAS. See Page  RST-3 
        for information on accessing the RSTS SIG Newsletter System.]
        
        ___________________________________________________________
        
        YET MORE USER DEFINED KEYS ON DEC TERMINALS
        Paul F. Flaherty, Jr., Daniels and Cronin, Boston, MA
        ___________________________________________________________
        
        
             Here's  a  little program you may want to publish in the Newsletter. It's a Basic  program  which  allows 
        the  SHIFT-FUNCTION keys (User Defined Keys) of a VT220 to be loaded easily.  It's reasonably well  docu-
        mented, so I won't repeat myself here.  The code follows:
        
        1       ! LOAD.BAS                                                      &
                !                                                               &
                ! AUTHOR:       Paul F. Flaherty, Jr.                           &
                !               DP Manager                                      &






                !               DANIELS AND CRONIN                              &
                !               Attorneys at Law                                &
                !               Three Center Plaza                              &
                !               Boston, Massachusetts  02108-2003               &
                !               (617) 227-5570                                  &
                !                                                               &
                ! DATE:         October 1, 1988                                 &
                !                                                               &
                ! DESCRIPTION:  This is a program which allows a user to load   &
                !               strings into the VT200 class terminal's         &
                !               SHIFT-FUNCTION keys.  It has been tested under  &
                !               RSTS/E V.9.6 under Basic-Plus and CSPCOM on     &
                !               VT220's only.  It will accept all parameters    &
                !               from a CCL command, or will prompt for them.    &
                !               It does not prompt for MISSING parameters; it's &
                !               all or nothing.                                 &
                !                                                               &
                ! INSTALLATION:                                                 &
                !                                                               &
                ! Copy executable into a system account (using $ in example)    &
                ! with protection code = 104                                    &
                !                                                               &
                ! $ _DEFINE/COMMAND/SYSTEM KEY*LOAD $LOAD.*/LINE=CCL            &
                !                          --------       ^                     &
                !                             |           |                     &
                ! - Use anything for command--|           |                     &
                ! - Use .* for .BAC or .TSK---------------|                     &
                !                                                               &
                ! COMMAND SYNTAX:                                               &
                !                                                               &
                ! $ KEYLOAD key_number "quoted_string"/optional_terminator...   &
                !                                                               &
                ! Example 1: $ KEYLOAD 6 "SHOW USERS"/T                         &
                ! This example would make the terminal generate the string      &
                ! SHOW USERS followed by a carriage return any time SHIFT-F6    &
                ! is pressed.                                                   &
                !                                                               &
                ! Example 2: $ KEYLOAD 20 "FUBAR"/T/T/T                         &
                ! This example would make the terminal generate the string      &
                ! FUBAR followed by 3 carriage returns any time SHIFT-F20       &
                ! is pressed.                                                   &
                !                                                               &
                ! NOTES ON USE: There are only 256 bytes of storage available   &
                !               in a VT220 for UDK's, therefore abbreviation    &
                !               of commands is recommended.  The key definitions&
                !               will remain in effect until either they are re- &
                !               defined, the terminal is powered off, or a hard &
                !               terminal reset (<ESC>c) occurs.                 &
                !                                                               &
                ! REFER TO THE "VT220 PROGRAMMER REFERENCE MANUAL"              &
                ! (EK-VT220-RM-001) SECTION 4.15 FOR FURTHER INFORMATION        &
                ! ON UDKS.                                                      &
        
        






        100     PRINT "LOAD - VT200 Function Key Definition Program Version 1.0"&
                \GOSUB 30300                                                    &
                \ON ERROR GOTO 32000                                            &
                ! Print banner; check to see if terminal supports UDK's; set    &
                ! general error trap. This section of code does not execute on  &
                ! CCL entry unless no command qualifiers are entered.           &
        
        110     INPUT "Key (6-20) "; KEY.NUMBER.                                &
                        UNTIL KEY.NUMBER. >= 6. AND KEY.NUMBER. <= 20.          &
                \KEY.NUMBER. = INT(KEY.NUMBER.)                                 &
                !Get the key number the user wants to define.                   &
        
        200     PRINT "Definition string ";                                     &
                \INPUT LINE IN.STRING$                                          &
                \GOTO 200 IF IN.STRING$ = ""                                    &
                \IN.STRING$ = CVT$$(IN.STRING$,4%)                              &
                ! Get the string to be associated with the key.                 &
        
        300     INPUT "Terminating carriage returns (0) "; TERMINATE.COUNT%     &
                \IN.STRING$ = 'LOADKEY ' + NUM1$(KEY.NUMBER.) +                 &
                                ' "' + IN.STRING$ + '"'                         &
                \WHILE TERMINATE.COUNT%                                         &
                \       IN.STRING$ = IN.STRING$ + "/T"                          &
                \       TERMINATE.COUNT% = TERMINATE.COUNT% - 1%                &
                \NEXT                                                           &
                ! Get the number of <CR>'s to append to the string, then        &
                ! build a string that looks like a CCL command.                 &
        
        30000   REM CCL Entry Point
        
        30010   IN.STRING$ = SYS(CHR$(7%)) IF IN.STRING$ = ""                   &
                \IN.STRING$ = CVT$$(IN.STRING$,(4%+8%+16%+128%+256%))           &
                \TEMP% = INSTR(1%,IN.STRING$," ")                               &
                \GOTO 100 IF TEMP% = 0%                                         &
                \GOSUB 30300                                                    &
                \IN.STRING$ = RIGHT(IN.STRING$,TEMP%+1%)                        &
                \QUOTE% = INSTR(1%,IN.STRING$,'"')                              &
                \GOTO 30200 IF QUOTE% = 0%                                      &
                \QUOTE.1% = LEN(IN.STRING$) + 1%                                &
                \ON ERROR GOTO 30200                                            &
                \QUOTE.1% = QUOTE.1%-1% UNTIL MID(IN.STRING$,QUOTE.1%,1%) = '"' &
                \IN.STRING$ =   CVT$$(LEFT(IN.STRING$,QUOTE%),2%+32%) +         &
                                MID(IN.STRING$,QUOTE%+1%,QUOTE.1%-(QUOTE%+1%)) +&
                                CVT$$(RIGHT(IN.STRING$,QUOTE.1%),2%+32%)        &
                \QUOTE% = INSTR(1%,IN.STRING$,'"')                              &
                \TERMINATE% = INSTR(1%,IN.STRING$,"/T")                         &
                \WHILE TERMINATE% <> 0%                                         &
                \       TERMINATE.COUNT% = TERMINATE.COUNT% + 1%                &
                \       TERMINATE% = INSTR(TERMINATE%+2%,IN.STRING$,"/T")       &
                \NEXT                                                           &
                \DIM HEX$(95)                                                   &
                \DIM KEY.VALUE$(15)                                             &
                \READ HEX$(X) FOR X = 1 TO 95                                   &
                \READ KEY.VALUE$(X) FOR X = 1 TO 15                             &






                \ESC$ = CHR$(155%)                                              &
                \DCS$ = ESC$ + "P1;1|"                                          &
                \ST$ = ESC$ + "\"                                               &
                \CR$ = "0D"                                                     &
                \TEMP% = ASCII(IN.STRING$)                                      &
                \GOTO 30100 IF TEMP% < 48% OR TEMP% > 57%                       &
                \TEMP% = ASCII(MID(IN.STRING$,2%,1%))                           &
                \IF TEMP% < 48% OR TEMP% > 57%                                  &
                        THEN KEY.NUMBER. = VAL(LEFT(IN.STRING$,1%))             &
                        ELSE KEY.NUMBER. = VAL(MID(IN.STRING$,1%,2%))           &
                ! Get core common if a CCL entry; if no parameters goto the     &
                ! question and answer routine; check for a valid terminal type; &
                ! parse the command string for the key number to load, the      &
                ! string to load (in quotes), and the number of /T's for a      &
                ! count of the number of terminating <CR>'s to append; set up   &
                ! arrays for conversion of the command string.                  &
        
        30020   IF KEY.NUMBER. < 6. OR KEY.NUMBER. > 20.                        &
                        THEN GOTO 30100                                         &
                        ELSE KEY.NUMBER$ = KEY.VALUE$(KEY.NUMBER.-5.)           &
                ! Verify key number between 6 and 20; convert it to the string  &
                ! expected by the terminal corresponding to that function key.  &
        
        30030   IN.STRING$ = RIGHT(IN.STRING$,QUOTE%+1%)                        &
                \QUOTE% = LEN(IN.STRING$) + 1%                                  &
                \ON ERROR GOTO 30200                                            &
                \QUOTE% = QUOTE% - 1% UNTIL MID(IN.STRING$,QUOTE%,1%) = '"'     &
                \IN.STRING$ = LEFT(IN.STRING$,QUOTE%-1%)                        &
                \LOAD$ = DCS$ + KEY.NUMBER$ + "/"                               &
                \LOAD$ = LOAD$ + HEX$(ASCII(MID(IN.STRING$,TEMP%,1%))-31%)      &
                        FOR TEMP% = 1% TO LEN(IN.STRING$)                       &
                \LOAD$ = LOAD$ + CR$                                            &
                        FOR TEMP% = 1% TO TERMINATE.COUNT%                      &
                \LOAD$ = LOAD$ + ST$                                            &
                \PRINT LOAD$;                                                   &
                \GOTO 32767                                                     &
                ! Get rid of the quotes surrounding the command string; convert &
                ! the ascii command string to "HEX" string (see the VT220 pro-  &
                ! gramming documentation); do the actual load.                  &
        
        30100   PRINT "?Invalid key, must be 6 - 20"                            &
                \GOTO 32767                                                     &
        
        30200   PRINT "?Quoted string expected"                                 &
                \GOTO 32767                                                     &
        
        30300   A$ = SYS(CHR$(6%)+CHR$(16%)+CHR$(1%)+CHR$(255%))                &
                \UDK% = SWAP%(CVT$%(MID(A$,25%,2%)))                            &
                \RETURN IF UDK% AND 512%                                        &
                \PRINT "%Terminal does not support UDK's"                       &
                \GOTO 32767                                                     &
                ! Verify that terminal supports UDK's                           &
        
        31000   REM Data to convert an ASCII string to a "HEX" string






        
        31001   DATA    "20","21","22","23","24","25","26","27"
        31002   DATA    "28","29","2A","2B","2C","2D","2E","2F"
        31003   DATA    "30","31","32","33","34","35","36","37"
        31004   DATA    "38","39","3A","3B","3C","3D","3E","3F"
        31005   DATA    "40","41","42","43","44","45","46","47"
        31006   DATA    "48","49","4A","4B","4C","4D","4E","4F"
        31007   DATA    "50","51","52","53","54","55","56","57"
        31008   DATA    "58","59","5A","5B","5C","5D","5E","5F"
        31009   DATA    "60","61","62","63","64","65","66","67"
        31010   DATA    "68","69","6A","6B","6C","6D","6E","6F"
        31011   DATA    "70","71","72","73","74","75","76","77"
        31012   DATA    "78","79","7A","7B","7C","7D","7E"
        
        31100   REM Key associations
        
        31101   DATA    "17","18","19","20","21","23","24","25"
        31102   DATA    "26","28","29","31","32","33","34"
        
        32000   GOTO 32767 IF ERR = 11                                          &
                \GOTO 32100 IF ERR <> 50                                        &
                \RESUME 110 IF ERL = 110                                        &
                \RESUME 200 IF ERL = 200                                        &
                \RESUME 300 IF ERL = 300                                        &
                ! End of file and data format errors are handled; others        &
                ! are just reported with line number                            &
        
        32100   PRINT "?Unexpected error "; ERR; " at line ";ERL                &
        
        32767   END
        
        [Ed. Note: The above program is available on the Newsletter System as file [49,1]LOAD.BAS. See Page RST-3 for 
        information on accessing the RSTS SIG Newsletter System.]
        
        ___________________________________________________________
        
        USING DECNET INTERACTIVELY: RSTS TO VMS
        Bob Fidelman, Materials Business Systems, Inc., San Rafael, CA.
        ___________________________________________________________
        
        
                                    OVERVIEW
        
             Materials  Business  Systems, Inc. in San Rafael, CA designs its own software to handle  concrete  pro-
        duction, truck tracking, billing and G/L as well as many different management reports. At present, there are  13 
        plants  and  masonry  yards, all online to a uVAX via leased lines. Billing and non-dispatch  functions  are  on  a 
        PDP 11/44.
        
             A  year ago, there was only a single PDP 11/44 to do all the work. This 11/44 was at one point  running 
        45  terminals  and  printers,  most on DHU11'S with a smattering of slower peripherals on  a  DZ11.  When  in-
        creased demand necessitated the purchase of more hardware, we saw this as a golden
        opportunity to dive into the VAX/VMS world.
        
             In  April,  1987 we purchased our uVAX with mostly foreign (i.e., cheaper and faster)  peripherals  and 






        memory.  Of  utmost  priority,  however, was the decision to use DECNET as  a  primary  conversion  tool.  The 
        advantages far outweighed the disadvantages, as noted below:
        
                                DECNET ADVANTAGES
        
        Transparent copy link: no need for matching tape drives to transfer information.
        
        Master files stay on 11/44; read/modified on VAX via transparent DECNET . NO DUPLICATED FILES.
        
        SET HOST allows virtual terminal access, eliminating need for A/B boxes, redundant terminals.
        
        PORT over applications to VMS at OUR convenience, avoid the 'cold turkey' approach.
        
        Remote Batch processing allows all file maintenance to be controlled from one system, regardless of where  the 
        file physically lies.
        
        Two CPU's means we don't have to buy a 'big VAX'. The uVAX works quite well with the 11/44.
        
                               DECNET DISADVANTAGES
                                    
        Initial hardware and license fees.               
                                           
        DECNET 'quirks' (see below).                     
                                           
        Monthly software maint.     
                                           
        Slower access speeds - but only 10-15%             
        
        Application of DECNET V4.0 requires RSTS V9.3 or later.
        
                                  DECNET QUIRKS
        
             RSTS's  SET  HOST  does not use CTERM (DEC's VMS terminal protocol).  Instead,  you  must  use 
        NETUNS,   (NETwork   UNSupported)  which  is  not  automatically  moved  to  the  system  when   you   build 
        DECNET.  In  fact, no mention is made to the program name at all except in the appendix which  lists  the  con-
        tents of the media.
        
             Once  you  restore NETUNS, it generally works OK, except your cursor will occasionally  find  itself  in 
        unusual  positions  under certain forms packages (INDENT,FMS), but the cursor moves to its  correct  position 
        after the first character has been typed.
        
             We  created the commands 'PDP' and 'VAX' to port to the PDP-11 and uVAX,  respectively.  Because 
        of  DCL  problems  with talking directly to the unsupported program NETUNS, we solved the  problem  as  fol-
        lows:
        
             When  a user on the PDP 11/44 types 'VAX', they run the DCL file VAX.COM which has two lines  in 
        it. These lines are:
        
             $SET NODATA
             VMSNET VAX
        
             VMSNET is defined in [0,1]LOGIN.COM as:
        
             $DEFINE/COMMAND/SYS VMSNET [0,16]NETUNS.TSK /LINE=CCL/PRIV






        
             This sequence will automatically start the login sequence on the uVAX.
        
             On the uVAX, the user types 'PDP' which is defined in SYLOGIN.COM as:
        
             $ PDP :== SET HOST PDP
        
             In  this matter, the user is unaware of the 'SET HOST' protocol. In addition, if they forget  'where  they 
        are', an appropriate error message is generated on their terminal.
        
             You can access a file under program control (OPEN 'NODE::FILE.DAT'...) with the following restric-
        tions:
        
             o The file MUST be an RMS file (no virtual arrays or record I/O files)
                 
             o  The  logical  recordsize MUST be 512 bytes or less. This quirk was our biggest  headache;  some  re-
             cordsizes were only 580 bytes. They had to be redesigned.
        
             o  File access can be shared with other jobs on the remote node or even jobs on the same node as  long 
             as  the  ALLOW  and ACCESS clauses are IDENTICAL. If you have a file  open  ACCESS  MODIFY 
             under  RSTS,  then  the VMS program must use ACCESS MODIFY as well, even if you  only  want  to 
             read the data.
        
             o  UNLOCK  #n  on  a remote file will CRASH a VMS BASIC program.  You  must  use  FREE  #n. 
             However, FREE is not supported under RSTS BP2. So much for language compatibility.
        
             o  EVERY  file  open  remotely  will create a separate job under RSTS;  5  jobs,  each  opening  3  files 
             remotely  will  spawn  15  jobs  under RSTS. Fortunately, there doesn't  appear  to  be  any  extra  CPU 
             overhead  when the files are not being accessed. MORAL: Sysgen for 63 users, even if you  don't  think 
             you will ever use them.
        
             It's now been an entire year since we've had DECNET on our system. I most emphatically  recommend 
        it if you are considering migrating to VMS. By now, DEC has MOST of the bugs out (at least the critical  ones). 
        If  you  can live with the quirks, then go with DECNET. Having a fallback option available  while  converting  to 
        VAX  was  of  critical importance during our migration.  You can always sell the hardware  and  licenses  if  you 
        ever finish using DECNET. 
        
                                     FUTURES
        
             Once LAT support and Remote batch printing is supported under RSTS, we plan to purchase  terminal 
        servers  to  allow our 6 serial printers to be shared by everyone on the two systems, rather  than  relegating  half 
        the printers to the uVAX and half to the PDP. Also, terminal servers will eliminate the many 'A/B boxes' found 
        in the offices, making it more convenient (with less CPU overhead) for these users.
        
             There is also in the works a BASIC-PLUS-2 to VAX BASIC Conversion manual, and a RSTS to  VMS 
        Conversion manual. Initial drafts should be available at the next DECUS.
        
             Please feel free to call or write me if you have any questions or problems regarding your conversion:
        
        Bob Fidelman
        Materials Business Systems, Inc
        665 Irwin Street
        San Rafael, CA  94901
        (415) 454-9055






        ___________________________________________________________
        
        NEW COMPATIBILITY GUIDES NOW AVAILABLE
        Digital Equipment Corporation
        ___________________________________________________________
        
        
              EXTENDING THE PDP-11 VAX/VMS COEXISTENCE AND MIGRATION PROGRAM
        
             In  many  interactions with PDP-11 customers, they requested that Digital document  the  changes  that 
        they  might  encounter  when moving from the PDP-11 architecture and operating  systems  to  the  VAX/VMS 
        environment, in a way that would make them easy to understand and easier to implement.  Digital's response to 
        this  request  was to initiate projects to create PDP-11 VAX/VMS Compatibility guides.  Two  of  these  guides, 
        the  BASIC language guide and the FORTRAN language guide, were announced in May 1988.   Micro  Systems 
        Development  (MSD)  is  pleased  to  announce  the  availability  of  four  additional  compatibility  guides:   the 
        RSTS/E - VMS guide, the RSX to VMS guide, the COBOL language guide and the DIBOL language guide.
        
             The PDP-11 VAX/VMS Compatibility Guides contain information which assists people with operating 
        in  a  mixed PDP-11 VMS environment and with moving from a PDP-11 environment to  VMS.   They  describe 
        the  similarities and differences between the two environments by describing how functions are  performed  and 
        objectives  are met in a PDP-11 environment and how those same things are accomplished in a  VMS  environ-
        ment.
        
             The compatibility guides are useful as:
        
             o   a  day-to-day  reference for system users, programmers, and system managers  working  in  a  mixed 
             PDP-11 VMS environment,
        
             o  a tool to assist in understanding and evaluating a PDP-11 to VAX/VMS migration,
        
             o  a reference guide for migrating users or applications,
        
             o  an accelerated training vehicle with new information being related to familiar topics,
        
             o  the language guides also provide assistance for writing transportable programs.
        
             The  compatibility guides for the operating systems, RSX and RSTS/E address three major  audiences:  
        system  users,  programmers,  and system managers.  The information for system users focuses on  how  to  per-
        form  similar  command level tasks, such as working with files and using devices, in the two  environments.   The 
        programmers  section describes the operating environment in which programs execute including topics  such  as 
        process  control  and communication, the files system and system calls.  The system  managers  section  provides 
        information necessary to manage and control system resources.
        
             The  language compatibility guides describe the similarities and differences between  the  programming 
        languages  available from Digital for the PDP-11 operating systems and those for VMS.  With  programmers  as 
        their  primary  audience,  each language guide covers topics such as language elements,  character  sets,  built-in 
        functions, and subprograms.  Each guide also provides some general guidelines for writing transportable code.
        
             Although the compatibility guides provide extensive information, they are not intended to be a guide to 
        the entire process of a PDP-11 to VMS migration.
        
             All  of  this  valuable  information is being offered at no cost to Digital  customers  as  part  of  Digital's 
        continuing efforts to provide customer satisfaction.
        






                               ORDERING INFORMATION
        
             The following compatibility guides are available now:
        
                                                                Order No.
                                                                -----------
                
                RSX and VMS Compatibility Guide                 EJ-31489-41
                RSTS/E - VMS Compatibility Guide                EJ-31490-41
                FORTRAN Compatibility Guide                     EJ-31491-41
                BASIC Compatibility Guide                       EJ-31492-41
                COBOL Compatibility Guide                       EJ-31811-41
                DIBOL Compatibility Guide                       EJ-31810-41
        
        They can be ordered by sending the following information:
        
                NAME___________________________________________
        
                TITLE__________________________________________
        
                COMPANY________________________________________
        
                ADDRESS________________________________________
        
                CITY___________________________________________
        
                STATE/ZIP______________________________________
        
        SEND TO:
        
                DIGITAL EQUIPMENT CORPORATION
                MEDIA FULFILLMENT GROUP
                44 WHITNEY STREET
                NR02-1/H3
                NORTHBORO, MA   01532-2599



���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������