What's Up DOCumentation Robelle Consulting Ltd. Unit 201, 15399-102A Ave. Surrey, B.C. Canada V3R 7K1 Phone: (604) 582-1700 Fax: (604) 582-1799 Date: January 21, 1991 From: Robert M. Green, President David J. Greer, Research & Development Michael Shumko, Customer Support Jim Bird, Customer Support To: Users of Robelle Software Re: News of the HP 3000, 1991 #1 What You Will Find in This News Memo: News Tidbits Technical Tips Calling QeditAccess from Pascal About Robelle Robelle Products: Problems, Solutions, and Suggestions News Tidbits Goodies. Along with this newsletter is an index to all of last year's What's Up Doc newsletters to help you find that tip or announcement that you remembered reading somewhere. As an added bonus, we've included a copy of David Greer's latest paper on the MPE XL system debugger, to help you get to know and use this powerful but complex tool. 980 News. We have heard from customers who are benchmarking the new 980 Spectrum machine, and they say it is really hot. But what about the multi-processor version, the 980/200? According to the HP Chronicle, HP has "delayed shipment of its 870S/200 up to six months for lack of multi-processing Unix software. HP officials also said the company plans to begin initial shipments of the dual-processor 3000 Series 980/200 to MPE XL 3.0 beta testers by the end of [December]. However, at least one Series 980/100 customer, planning to install the two-processor option as soon as HP will release it, said he does not expect multiprocessor support under MPE XL to be available until July, 1991. HP has not set a date for when it plans volume shipments of the 980/200, but it will be at least several months after beta testing of XL 3.0 begins this month. If the 980/200 shipments materialize [soon], it would mark the first time HP has delivered major hardware functionality on its HPPA line under MPE XL before that functionality became available under HP-UX." Broken Break Key. In response to our litany of problems with Control-Y over NS, Bruce Toback called with his own war story. If you DSLINE from your MPE XL system (2.1) over to your MPE V system (V-delta-7) and run an MPE V program, you may find that when you press Break you have lost control of your terminal. If the terminal seems dead, try pressing Control-F: this will frequently give you back your keyboard. New Spectrums Released. As announced in the December 1990 edition of HP World magazine, HP has released two new 3000s, the series 948 and 958, which use the chip set from the series 980 in the same box as a 920/922/932. Migration from the 920 to the 958 is possible with straight board swaps. HP boasts that "This is a further endorsement of how good precision architecture is. We can flatten an [IBM] AS470 and a VAX 6500 with a machine the size of a suitcase!". Here is a chart (also courtesy of HP World) comparing the relative processing power of the 3000 spectrum processors, using the classic series-70 as a base value of 1: 980/100 (6.2) 958 (4.5) 960 (3.6) 948 (3.1) 949 (2.9) 955 (2.8) 932 (1.6) 935 (1.5) 950 (1.8) 70 (1.0) 922 (0.9) 925 (0.8) 920 (0.6) DOS beyond 640K. Here is an excerpt from the article "DOS beyond 640K: expanded and extended memory" in the December issue of UBC Campus Computing: Extended memory is available on the 80286 chip and allows direct addressing of up to 16 MBytes of memory. Given that the 80286 chip has been around for a while, and given that it has a protected mode that can access more than 1MB of RAM, a logical question is, why didn't programmers develop extensions to DOS that would allow DOS programs running on 80286 chips to use extended memory? ... The answer lies partially in a unfortunate design decision made by the designers of the 80286. While there is a straightforward means of switching from real mode to protected mode on an 80286, there is no way of switching back! This serious problem was not resolved for some time, and the solution wasn't initially made available as an extension to DOS, but as a part of the OS/2 operating system... The somewhat terrifying solution was devised by Microsoft's Chief Architect of Systems Software Gordon Letwin: OS/2 shifts back to the real mode by rebooting the system. More precisely, OS/2 reboots the system, and then very quickly tells the 80286 that the reboot was just a false alarm. Bill Gates of Microsoft likens this to "turning the car off and on at 60 mph." The 80286 is back in real mode, with all the memory that a real reboot would have destroyed miraculously intact. Depending on your tastes, you may call this trick a brilliant idea or a complete kludge. Technical Tips Odd Octcomp Failures. Octcomp requires a fair bit of disc space to translate the object code of CM programs. If you have put any account or group disc space limits on the Robelle account, you may find that our Octcomp jobs will fail with some very strange error messages: ILLEGAL POINTER TRAP (TRAPERR 53) Illegal data address (TRAPS 65) These error messages "mean" that the Linkedit phase of Octcomp ran out of disc space. :SHOWPROC Command. SHOWPROC is a handy new command in MPE XL 2.1 which helps you to find out the status of a process (ie., the program name, priority, CPU time used and the current state). This is a quick way of finding out what a job is doing: :SHOWPROC Job=#s70 QPRI CPUTIME STATE JOBNUM PIN (PROGRAM) STEP C152 0:03.235 WAIT S70 80 :RUN QEDIT.PUB.ROBELLE;PARM=67 C152 0:32.458 READY S70 57 (QEDIT.PUB.ROBELLE) C152 0:01.954 WAIT S70 123 (XPRESS.MAIL.ROBELLE) C152 0:26.603 WAIT S70 114 (SUPRTOOL.PUB.ROBELLE) Another new command, :ALTPROC, lets users with SM or OP capability change the priority of a process. Firmware bug on 4x/5x. Eugene Volokh at VESoft has found a subtle bug in the firmware of the classic 4x/5x CPUs. In SPL, the construct IF A <= B <= C will sometimes return invalid results on these CPUs. For example, IF -32767 <= 20 <= -32750 returns TRUE where it should be FALSE SPL programmers may want to consider changing their code to be safe, since we can all guess what the chances are of HP releasing a firmware fix for the 4x/5x boxes. Calling QeditAccess from Pascal QeditAccess is a routine we provide that can be called from a program to read and write Qedit workfiles. For those of you who want to know how to call QeditAccess from Pascal, here is an example that was put together by Dave Lo, one of our programmers: { This program demonstrates how to call QeditAccess from Pascal. It reads a Qedit file called QDATA and displays the contents of the file on $stdlist. } program TestQaccess( input,output ); const MaxFnameLen = 40; MaxLineLen = 256; type shortint = -32768..32767; { Type declaration required for Pascal/V only } { This is the general Argument parameter for QeditAccess. The different uses are indicated by the variant fields. More variant fields can be added. All of the parameters for Qeditaccess must be passed as 16-bit word addressess (eg., the Argument parameter cannot simply be declared as a packed array of char). The case variant shortint MUST NOT be given a field name. } ArgRec = record case shortint of 1: (fname: packed array[1..MaxFnameLen] of char); 2: (line: packed array[1..MaxLineLen] of char); end; WorkRec = record status : shortint; filenum : shortint; filetype : shortint; lang : shortint; length : shortint; size_key : integer; block : shortint; index : shortint; readlen : shortint; left : shortint; keylen : shortint; reserved : integer; buf : packed array[1..256] of shortint; end; FuncRec = record num : shortint; lang : shortint; recsize : shortint; numblocks : shortint; numextents : shortint; initextent : shortint; end; var Func : FuncRec; WorkSpace : WorkRec; Arg : ArgRec; i : shortint; done : boolean; procedure QeditAccess( var func : FuncRec; var workspace : WorkRec; var arg : ArgRec ); external spl; begin arg.fname := 'QDATA '; Func.num := 1; QeditAccess( Func, WorkSpace, Arg ); if WorkSpace.status<>0 then begin writeln('could not open, error = ', WorkSpace.status ); end else begin done := false; repeat Func.num:=2; QeditAccess( Func, WorkSpace, Arg ); if WorkSpace.status=0 then begin for i:=1 to WorkSpace.length do write( Arg.line[i]); writeln; end else if WorkSpace.status=-1 then { end of file } done := true else begin writeln('could not read, error = ', WorkSpace.status ); done := true; end; until done; Func.num := 3; QeditAccess( Func, WorkSpace, Arg ); end; end. About Robelle PCQ Project Cancelled. Some of you may have heard of a Robelle project code-named "PCQ" that attempted to dynamically link Qedit with a PC program. Our goal was to use the PC to edit a PC file or HP3000 file of any size without having to copy the entire file to the PC. This turned out to be much more difficult than we anticipated. Although PCQ has been cancelled, we are still deeply interested in enhancing our products to work with PCs. In July 1989 we hired Dave Lo to work on PCQ. Dave remains our PC expert, but at the moment he is busy developing software on the HP3000. You may get a chance to talk to Dave when we corral him into taking technical support calls now and then. Users Group Meetings. Bob Green will be presenting his award-winning paper "Improving Software Quality" at Salt Lake City on March 20, Amana, Iowa on March 21 and Chicago on March 22. Bob will also be at the SCRUG conference, May 8-10, with Marie Froese at the Robelle booth. Mike Shumko and Barbara Janicki will be representing Robelle at the European National Users Group meeting in Hamburg, April 23-26. Mike will be giving mini tutorials on using Suprtool and Qedit, and Barbara will be presenting a paper on "Documentation that works for you". Come by and visit us at the SWS booth. Jim Bird and Jennifer Mollan will be in Melbourne for the SPARC conference, May 13-16, at the Co-Cam booth. We'll be giving Qedit and Suprtool mini tutorials, answering questions and generally having a good time. New Robelle Arrival. Vancouver is just 2 hours north of Seattle, Washington, and we normally experience above-freezing temperatures year-round. We get the occasional winter snowstorm, but the snow usually melts within a day or so. A few days ago, during the worst snowstorm of the last twenty years, Ken Robertson, Robelle's system manager, and his wife Liette, decided to bring a baby into the world. Ken describes their adventure: "Around midnight, with the wind howling and the snow coming down, Liette confessed that she had felt several contractions that evening, and that now they "seemed to be coming about 10 minutes apart". Our first baby was due in another week, but babies arrive when they want to. Given the road conditions, we decided to head out immediately. We arrived at the hospital 40 minutes later (it usually takes 10), and Liette was admitted right away. Her contractions were now 3 minutes apart, and she was about to deliver. We rushed up to maternity. A quick phone call from the head nurse located our doctor some 50 miles away! She was snowed in and would not be making it. In fact, because of the storm, there were NO doctors available to help out with the delivery! It was just going to be the head nurse, Liette and I. Two hours later Liette's water broke and we wheeled into the delivery room. I was in charge of holding this or that, turning various machines on and off, and handing the nurse various odd-looking implements that she wanted. One half hour later, at 4:25 AM December 30th, Louis Alexander popped out into the nurse's arms and started crying. A healthy 7 pounds 14 ounces, he was a joy to behold. It was a magical moment for all of us." Robelle Products: Problems, Solutions, and Suggestions Qedit Version 3.9.1 We have just finished shipping the new Qedit version 3.9.1 to all North American customers. Alas, we discovered a few problems after the tapes were shipped. Note to overseas users: the tapes that you will receive from your local dealers will have these problems corrected, except for the Q-delta-2 problem. Problem with Qeditj1/Qeditj1a jobs. Some Qedit 3.9.1 update tapes were sent with an error in two of the job streams in the Qeditjob.Robelle group. Qeditj1 Update CM Compiler Interface into System SL Qeditj1a Update CM Compiler Interface in Robelle Account Here is how to fix the jobs before streaming them: :hello mgr.robelle /text qeditj1.qeditjob /change "pubnew"(u) "pub" all {upper- and lower-case} /keep,yes /text qeditj1a.qeditjob /do c {repeat same Change Command} /keep,yes /exit You need to use these job streams if you have MPE/V compilers and you are re-installing the Qedit CM Compiler Interface. Re-installation is needed after you install an HP MIT update, or if you need one of the changes provided to the Interface in version 3.9.1. Patch for COBOLX. Qedit 3.9.1 will lose the tags in a COBOLX file if you set the X tag to a null value with List Off and then keep the file. For example: /t coberr.source 'Language' is now COBX 703 lines in file /set x "" list off /keep xyzzy Warn: KEEP will not write entire lines, only within margins. Here is a patch to Qedit 3.9.1 to fix this problem (don't forget to re-Octcomp Qedit on MPE XL after patching it): :run patch.pub.sys FILE=? Qedit.Pub.Robelle ?M,1,10056,3 041077,0 022000,0 141311,0 ? {return} Q-Delta-2 customers. Qedit 3.9.1 will not load on releases of MPE prior to MPE V/E. You get an error message about a suprdate failure. Please contact our office for a patch. QeditPM doesn't have PM cap. QeditPM is a special copy of Qedit that we distribute for customers on MPE XL who are experiencing performance problems when using Qzmodify. It uses Privileged Mode to switch you into the BS processing subqueue when in Qzmodify, which reduces the chance of the system losing characters while you are modifying a line. Unfortunately, we forgot to Prep QeditPM with PM capability. You can add PM with any of the following methods: Using MPEX: %altfile qeditpm.pub.robelle;cap=+pm Using NUGGETS: :run acap.pub.nuggets;info="qeditpm + pm" If you want to try using QeditPM and cannot add PM capability to the program yourself, contact our office for a new tape. In the Change notice accompanying the 3.9.1 installation tape, it states that in order for QeditPM to work, the user running QeditPM must also have PM capability. This is not correct: only the program file requires PM capability. Problems recognizing terminal. Qedit 3.9.1 may not be able to recognize terminals that previous versions of Qedit identified correctly. You may get the error message "Visual mode only works on certain HP crts". If this happens, check the terminal configuration values for Inhibit DC2 and Inhibit Handshake (also referred to as the "G" and "H" straps). In order to identify your terminal, Qedit may require these straps to be both set to NO. If you find that this is not the case, try changing the configuration values, and enter Set Vis Stop at the /-prompt to force Qedit to re-identify your terminal before trying visual mode again. Previous versions of Qedit initialized the terminal straps as part of Qedit's terminal identification sequence, which caused problems for customers using specialized data communications networks. Suprtool Version 3.2 Native-Mode KSAM. Customers updating to MPE XL 2.1 or later releases of MPE XL, please keep in mind that Suprtool 3.2 does not work with native-mode KSAM/XL files. Although KSAM/XL is still a puzzle, we think we have most of it solved. We have made extensive changes to Suprtool to support this new file type and hope to have it all working in the 3.3 release of Suprtool scheduled for this spring. Because KSAM/XL is not fully compatible with the old KSAM/V file type, there will be some significant differences in the way that Suprtool handles KSAM/XL files: 1. High-speed MR/NOBUF access to KSAM/XL files is not supported by HP. This means that the only way Suprtool can read KSAM/XL files is one record at a time. Tests show that Suprtool will be as much as five times slower at reading a KSAM/XL file than a KSAM/V file. This may change in a future release of KSAM/XL. 2. KSAM/XL files do not permit recovery of deleted records using standard serial access methods. For this reason, Suprtool will not allow you to read deleted records in a KSAM/XL file with Set Recover On. Printing fields on separate lines. In the Suprtool 3.2 user manual, we show an example of how to use the Extract command to produce mailing labels from a customer file, printing each field on a separate line. To do this, we Define an integer field named CRLF, set it to the value 3338 (%6412, which is a Carriage-Return followed by a Line-Feed), and extract it between each field: >define CRLF,1,2,integer >extract name,CRLF=3338,addr(1),CRLF=3338,addr(2),& > CRLF=3338,addr(3),CRLF=3338,phone >output * Unfortunately, this method won't work if you use the Output,ASCII option to convert binary fields into readable characters (Suprtool will convert the binary field CRLF to the ASCII characters "3338"). Try extracting character constants for the Carriage-Return (decimal 13) and Line-Feed (decimal 10) characters instead: >extract name,^13,^10,addr(1),^13,^10,addr(2),^13,^10 >extract addr(3),^13,^10,phone >output *,ASCII Xpress Version 2.7 Disable break to prevent hang. One of our Xpress customers reported that if a user turns off their terminal when they are in the middle of displaying the list of messages in the In basket or Out basket, the Xpress database stays locked. Eventually everyone who accesses the mail system will hang. This is because Xpress locks the dataset while displaying the list of messages, to prevent "broken chain" messages from IMAGE. If you leave your terminal powered off while the list of messages is being displayed, MPE will consider that you are in system break state. It is as though you had pressed the key while the Xpress database was locked, and gone home. You can prevent this problem from happening by adding OPTION NOBREAK to the Xpress UDC. MPE will continue printing the list of messages (writing them to the bit-bucket), ignoring the break, and Xpress will unlock the dataset before asking you to select a message. This will also stop users from pressing the key to interrupt Xpress when it has the database locked, causing other Xpress users to hang. Fortune Cookie of the Month Time flies like an arrow. Fruit flies like a banana.