Info-Vax-REQUEST@KL.SRI.COM.UUCP (05/12/87)
Info-Vax Digest Tuesday, 12 May 1987 Volume 0 : Issue 20 Today's Topics: Re: Where are PCB$ and SCH$ defines?? Turning off <CANCEL> without turning off Cntl-C AST's Re: DEC Multicast addresses (Info-Vax Digest V0 #12) ra81 problems PHOTO-like program Problem with wildcarding IO$_ACPCONTROL VMS and MicroVMS Extracting a Tape Volume Label... Looking for big used-DEC-hardware dealers Re: ra81 problems ---------------------------------------------------------------------- Date: 11 May 87 17:20:45 GMT From: amethyst!face@arizona.edu (Chris Janton) Subject: Re: Where are PCB$ and SCH$ defines?? The definitions of PCBDEF and STATEDEF are in LIB.MLB. A very good source for a description of most VMS data structures is the .REQ files located in SYS$LIBRARY. These are BLISS macro definitions of the data structures. The PCBDEF and STATEDEF definitions are in LIB.REQ. I want SDL! ------------------------------ Date: 11 May 87 23:48:14 GMT From: voder!blia!forrest@ucbvax.Berkeley.EDU (Jon Forrest) Subject: Turning off <CANCEL> without turning off Cntl-C AST's I want to turn off the printing of CANCEL and INTERRUPT when the user types Control-C and Control-Y without loosing any of the function of these characters. In other words, I don't want to put the terminal in PASTHRU mode. I've looked in the Terminal Driver manual but didn't find a good solution to this. Any ideas? Jon Forrest ucbvax!mtxinu!blia!forrest ------------------------------ Date: 11 May 87 21:09:29 GMT From: voder!blia!ted@ucbvax.Berkeley.EDU (Ted Marshall) Subject: Re: DEC Multicast addresses (Info-Vax Digest V0 #12) According to _DECnet Digital Network Arch. Phase IV, Ethernet Data Link Functional Spec._, DEC order number AA-Y298A-TK, page A-2, the DEC Ethernet multicast addresses are as follows: AB-00-00-01-00-00 MOP Dump/Load Assistance AB-00-00-02-00-00 MOP Remote Console AB-00-00-03-00-00 Received by Routing Layer on all Routing Nodes AB-00-00-04-00-00 Received by Routing Layer on all End Nodes AB-00-03-00-00-00 LAT Transport AB-00-04-00-00-00 through AB-00-04-00-FF-FF Reserved for customer use AB-00-04-01-00-00 through AB-00-04-01-FF-FF System Communication Architecture (SCA) [I don't know what this is; wild guess: LAVC] Hope this helps. -- Ted Marshall ...!ucbvax!mtxinu!blia!ted <or> mtxinu!blia!ted@Berkeley.EDU Britton Lee, Inc., 14600 Winchester Blvd, Los Gatos, Ca 95030 (408)378-7000 The opinions expressed above are those of the poster and not his employer. "My hovercraft is full of eels" *fnord* ------------------------------ Date: 11 May 87 15:01:19 GMT From: vax1!george@cu-arpa.cs.cornell.edu (George R Boyce) Subject: ra81 problems Andrew Duggan writes in the DEC Professional (via the ARIS message system) of May 1987, p22, that "... 68 degrees is too warm for 81s; try 60.". Mr. Duggan was answering a query about HDA failures, a problem that anyone with RA81s knows is a real pain. How many people agree that 68 is too warm and could be a cause of trouble? I will summarize... ------------------------------ Date: 11 MAY 87 20:26-PDT From: MIGLESIAS%UCIVMSA.BITNET@wiscvm.wisc.edu Subject: PHOTO-like program Here's a slightly modified source for PTY.PAS (comes with Kevin's PTY driver) that logs the output to a file called PTY.LOG. I've used it on and off for quite a while, and it's been handy to have around. Of course, you'll need a Pascal compiler to compile it (no, I can't supply the executable). Mike Iglesias University of California, Irvine miglesias@ucivmsa (BITNET) --------------------------------------------------------------------------- (* Simple program to converse with the pseudo-terminal control device. *) [inherit ('SYS$LIBRARY:STARLET')] program PTY(logfile); const buffer_size = 256; CTRL_A = chr (1); type string = varying [256] of char; unsigned_byte = [byte] 0..255; unsigned_word = [word] 0..65535; characteristic_buffer = packed record dev_class, dev_type : unsigned_byte; width : unsigned_word; charbits, extended_bits : unsigned; end; status_block = packed record status, count, terminator, terminator_size : unsigned_word; end; var logfile: text; i: integer; cr_found: boolean; stat : integer; mbx_chan, tt_chan, pty_chan : [static, volatile] unsigned_word; input_char : [static, volatile] char; buffer : packed array [1..buffer_size] of char; mbx_buffer : [static, volatile] packed array [1..40] of char; term_chars, old_term_chars : [static, volatile] characteristic_buffer; in_iosb, out_iosb, mbx_iosb : [static, volatile] status_block; exit_descriptor : [static] packed record flink : unsigned; handler : unsigned; argnum : integer; reason : ^integer; end := (0, 0, 1, nil); message : [static, volatile] string := ''(13, 10, 7)'Got a mailbox message'(13, 10); message1 : [static, volatile] string := ''(13, 10, 7)'PTY exiting...'(13, 10); {-----------------------------------------------------------------------------} [external] function LIB$ASN_WTH_MBX (DEVNAM : [class_s] packed array [l1..u1:integer] of char; MAXMSG, BUFQUO : integer; var DEVCHAN, MBXCHAN : [volatile] unsigned_word ) : integer; extern; (* * CLEANUP is our exit handler. It resets the terminal characteristics. *) [unbound] function Cleanup (reason : integer) : integer; var stat : integer; iosb : status_block; begin (* Cleanup *) Cleanup := reason; stat := $QIOW (CHAN := tt_chan, FUNC := IO$_WRITEVBLK, IOSB := iosb, P1 := message1.body, P2 := message1.length); stat := $QIOW (CHAN := tt_chan, FUNC := IO$_SETMODE, P1 := old_term_chars, P2 := size (old_term_chars)); if not odd (stat) then Cleanup := stat; stat := $DASSGN (CHAN := tt_chan); if not odd (stat) then Cleanup := stat; stat := $DASSGN (CHAN := pty_chan); if not odd (stat) then Cleanup := stat; close (logfile); end; (* Cleanup *) [asynchronous, unbound] procedure Set_asynch_mbx_input; forward; (* * MBX_INPUT_AST is the AST handler invoked whenever we get something in * the associated mailbox. *) [asynchronous, unbound] procedure Mbx_input_AST; var stat : integer; iosb : status_block; begin (* Mbx_input_AST *) if not odd (mbx_iosb.status) then $EXIT (mbx_iosb.status); stat := $QIOW (CHAN := tt_chan, FUNC := IO$_WRITEVBLK, IOSB := iosb, P1 := message.body, P2 := message.length); if not odd (stat) then $EXIT (stat); if not odd (iosb.status) then $EXIT (iosb.status); Set_asynch_mbx_input; end; (* mbx_input_AST *) (* * SET_ASYNCH_MBX_INPUT issues an asynchronous read on the terminal. *) procedure Set_asynch_mbx_input; var stat : integer; begin (* Set_asynch_mbx_input *) stat := $QIO (CHAN := mbx_chan, FUNC := IO$_READVBLK, IOSB := mbx_iosb, ASTADR := mbx_input_AST, P1 := mbx_buffer, P2 := size (mbx_buffer)); if not odd (stat) then $EXIT (stat); end; (* Set_asynch_mbx_input *) [asynchronous, unbound] procedure Set_asynch_input; forward; (* * INPUT_AST is the AST handler invoked whenever we get something in * from the terminal. Just ship it to the PTY. *) [asynchronous, unbound] procedure Input_AST; var stat : integer; begin (* Input_AST *) if not odd (in_iosb.status) then $EXIT (in_iosb.status); if input_char = CTRL_A then $EXIT (SS$_NORMAL); stat := $QIOW (CHAN := pty_chan, FUNC := IO$_WRITEVBLK, IOSB := in_iosb, P1 := input_char, P2 := 1); if not odd (stat) then $EXIT (stat); if not odd (in_iosb.status) then $EXIT (in_iosb.status); Set_asynch_input; end; (* Input_AST *) (* * SET_ASYNCH_INPUT issues an asynchronous read on the terminal. *) procedure Set_asynch_input; var stat : integer; begin (* Set_asynch_input *) stat := $QIO (CHAN := tt_chan, FUNC := IO$_READVBLK, IOSB := in_iosb, ASTADR := Input_AST, P1 := input_char, P2 := 1); if not odd (stat) then $EXIT (stat); end; (* Set_asynch_input *) begin (* PTY *) stat := LIB$ASN_WTH_MBX (DEVNAM := 'PYA0:', MAXMSG := size (mbx_buffer), BUFQUO := 2 * size (mbx_buffer), DEVCHAN := pty_chan, MBXCHAN := mbx_chan); if not odd (stat) then $EXIT (stat); Set_asynch_mbx_input; stat := $ASSIGN (CHAN := tt_chan, DEVNAM := 'TT'); if not odd (stat) then $EXIT (stat); (* Get terminal characteristics. *) stat := $QIOW (CHAN := tt_chan, FUNC := IO$_SENSEMODE, P1 := term_chars, P2 := size (term_chars)); if not odd (stat) then $EXIT (stat); if term_chars.dev_class <> DC$_TERM then $EXIT (SS$_IVDEVNAM); old_term_chars := term_chars; (* declare exit handler so that terminal chars are restored *) exit_descriptor.handler := iaddress (Cleanup); new (exit_descriptor.reason); stat := $DCLEXH (DESBLK := exit_descriptor); if not odd (stat) then $EXIT (stat); (* * Set terminal characteristics we need: * PASSTHRU, NOECHO, NOTTSYNC, NOHOSTSYNC *) with term_chars do begin extended_bits := UOR (extended_bits, TT2$M_PASTHRU); charbits := UOR (charbits, TT$M_NOECHO); charbits := UAND (charbits, UNOT (TT$M_TTSYNC)); charbits := UAND (charbits, UNOT (TT$M_HOSTSYNC)); end; stat := $QIOW (CHAN := tt_chan, FUNC := IO$_SETMODE, P1 := term_chars, P2 := size (term_chars)); if not odd (stat) then $EXIT (stat); (* Force a CR to the pty to get LOGINOUT started *) input_char := chr(13); stat := $QIOW (CHAN := pty_chan, FUNC := IO$_WRITEVBLK, IOSB := in_iosb, P1 := input_char, P2 := 1); Set_asynch_input; (* Open the log file *) open (logfile, file_name:='pty.log', history:=new, record_length:=2048); rewrite (logfile); cr_found:=false; repeat stat := $QIOW (CHAN := pty_chan, FUNC := IO$_READVBLK, IOSB := out_iosb, P1 := buffer, P2 := size (buffer)); if not odd (stat) then $EXIT (stat); if not odd (out_iosb.status) then $EXIT (out_iosb.status); stat := $QIOW (CHAN := tt_chan, FUNC := IO$_WRITEVBLK, IOSB := out_iosb, P1 := buffer, P2 := out_iosb.count); i:=1; while (i <= out_iosb.count) do begin if (ord(buffer[i]) = 13) then cr_found:=true else begin if (ord(buffer[i]) = 10) and (cr_found) then begin writeln(logfile); cr_found:=false; end else begin if (cr_found) then write(logfile,chr(13)); write(logfile,buffer[i]); cr_found:=false; end; end; i:=i+1; end; if not odd (stat) then $EXIT (stat); if not odd (out_iosb.status) then $EXIT (out_iosb.status); until false; end. (* PTY *) ------------------------------ Date: Mon, 11 May 87 23:32 CST From: <HOLLINGE%SASK.BITNET@wiscvm.wisc.edu> (Glenn Hollinger @ Computing Services) Subject: Problem with wildcarding IO$_ACPCONTROL I am trying to get disk quota information from the disk ACP using a high level language. I have had much success in operating on single quota entries in this fashion, but I have run into a snag with using wildcarding with the IO$_ACPCONTROL function. In short, the documentation leaves out the critical point of how to tell when the iteration is complete. So, I have two questions: 1) What is the answer? (The DEC-Supported method) 2) Is this method documented? (If so, where) This is a question for VMS ACP gurus. Please consider this carefully. I am definitely NOT looking for speculation on this. I have speculated out an answer which works on the tests I have done, but I always liked the truth. Glenn Hollinger, hollinger@sask.bitnet Systems Programmer, glenn@sask.uucp University of Saskatchewan. ihnp4!sask!glenn ========================================================================= 1) Background -- VMS 4.5 on a VAXcluster of an 8600 and 8650. RA81 disks dual ported on 2 hsc50s. Shadowing software used on some disks. No multi-disk volume sets. Disk quotas enabled on all volumes. 2) Goal -- Use the IO$_ACPCONTROL function QIO to examine all disk quotas on a volume. 3) Method -- Call SYS$QIOW with the IO$_ACPCONTROL function, the FIB$C_EXA_QUOTA subfunction, and bits FIB$V_ALL_MEM and FIB$V_ALL_GRP set. Before the first call, FIB$L_WCC is set to zero to maintain wildcard information on successive calls. 4) Problem -- What is the real (READ DEC-SUPPORTED) way to determine when the last quota value has been returned? 5) Observations a) The status code returned is always SS$_NORMAL, even after all the quotas from that disk have been given. b) The length of quota transfer block returned never goes to zero. c) FIB$L_WCC appears to increase by 1 on each call valid quota info, and during the first call after valid data, increases by some arbitrary amount other than 1. On the second call, FIB$L_WCC is returned 0, so the third call after valid quota information starts the wildcard over. On the first and second call after the last valid quota info, the quota transfer block is returned unmodified. ------------------------------ Date: Tue, 12 May 87 07:47:52 PDT From: nagy%warner.hepnet@lbl.arpa Subject: VMS and MicroVMS >The above applies to VMS, not uVMS. uVMS is distributed without the NET >option. That comes with the DECnet key and is one reason (the other is >documentation) that uVMS doesn't have DOD security blessings. DOD requires >that the operating system be able to capture a session's keystrokes. This >requirement is met in VMS by SET HOST/LOG. That's one reason you won't see >this go away in the future unless DEC provides some new method of session >capture. Digital has indicated that MicroVMS is going away and that all VAXes will use VMS (other than packaging there is no difference; our LAVC system of MicroVAXes runs full VMS). I've sort of heard (2nd hand) that at the Spring DECUS this transition was mentioned as occurring with VMS V5.0. =Frank Nagy =Fermilab Research Division EED/Controls =FNAL::NAGY.HEPNET or NAGY@FNAL.Bitnet ------------------------------ Date: 12 May 87 13:08:20 GMT From: ur-tut!agoe@cs.rochester.edu (Karl Cialli) Subject: Extracting a Tape Volume Label... I working on a small integrated BACKUP/TAPE Management Facility for our site and I am yet to be able to find a way to extract a magnetic tape's volume label for use in a DCL com file. If there is a lexical for this, I am really at a loss. I would appreciate any suggstions. A VAX type-version of UCC1 it may not be but it will at least be better than logging the damn things in by hand! Thanks in advance. -- Karl Cialli MCI International Inc. Dept. 433/875 2 International Drive Rye Brook, NY 10573 UUCP: {allegra, cmcl2, decvax, harvard, seismo}!rochester!ur-tut!agoe =============================================================================== ------------------------------ Date: 12 May 87 12:06 EDT From: Bill Barns <WWB.TYM@OFFICE-1.ARPA> Subject: Looking for big used-DEC-hardware dealers This has next to nothing to do with VAXes but I don't know of a better list. Years ago when I worked for a systems integration house I used to receive newsletters/catalogs from Newman and other big dealers in used DEC gear. After years away from that scene, I find that it would now be useful for me to receive these again, as I might want to make some cheap "clones" of an old LSI-11 setup we have, if the price is right. So, I would appreciate some addresses, phones or whatever, for such dealers, so I can get on their mailing lists. Also, if anybody knows of some outfits that will cheaply produce nonstandard boards for a Q-bus (we are talking quantity 5-10, produced from a "prototype" by "cloning"), that would be of interest to me too. I suggest that replies be mailed to me directly since this info is probably not of general interest. Thanks in advance -- Bill Barns -- ARPA: <WWB.TYM@OFFICE-1.ARPA> ------------------------------ Date: Tue, 12 May 87 10:59:24 MDT From: cetron@cs.utah.edu (Edward J Cetron) Reply-to: cetron@cs.utah.edu (Edward J Cetron) Subject: Re: ra81 problems 68 should be fine.... we had an airconditioning failure and ran our 81 at about 90 for most all day before it was corrected with no ill effects... ed ------------------------------ End of Info-Vax Digest **********************