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
**********************