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 send the VT220 ( R U N ) 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. ( = CTRL/M = ^M = RETURN) & ! & ! Ignore the "!" 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", F11 as ESCape (CTRL/[), & ! ~FDo F12 as back space (CTRL/H), F13 as line feed (CTRL/J), & ! RUN^M and F6 as uparrow C . & ! ~F11 & ! ^[ "~Fn", 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 . This 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". & 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 "; & \ 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 "; & \ 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 "; & \ 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 (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 '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 '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