From:	CRDGW2::CRDGW2::MRGATE::"SMTP::CRVAX.SRI.COM::RELAY-INFO-VAX" 27-JUL-1990 21:55:48.11
To:	MRGATE::"ARISIA::EVERHART"
CC:	
Subj:	Re: multi-user licenses on vaxstation

Received:  by crdgw1.ge.com (5.57/GE 1.70)
	 id AA22276; Fri, 27 Jul 90 21:44:38 EDT
Received: From UCBVAX.BERKELEY.EDU by CRVAX.SRI.COM with TCP; Fri, 27 JUL 90 15:25:56 PDT
Received: by ucbvax.Berkeley.EDU (5.63/1.42)
	id AA01485; Fri, 27 Jul 90 15:18:03 -0700
Received: from USENET by ucbvax.Berkeley.EDU with netnews
	for info-vax@kl.sri.com (info-vax@kl.sri.com)
	(contact usenet@ucbvax.Berkeley.EDU if you have questions)
Date: 27 Jul 90 20:49:50 GMT
From: uupsi!sunic!kth.se!news@cunyvm.cuny.edu  (Lennart Boerjeson @ KTH/LNE, The Royal Inst. of Tech.)
Organization: KTH School of E.E.
Subject: Re: multi-user licenses on vaxstation
Message-Id: <0093A51B.645BBC20@lne.kth.se>
References: <9007260116.AA17893@ucbvax.Berkeley.EDU>,<900727105618.00001A18@MARVIN.CTSS.CO.UK>
Sender: info-vax-request@kl.sri.com
To: info-vax@kl.sri.com

In article <900727105618.00001A18@MARVIN.CTSS.CO.UK>, VERKADE@CTSS.CO.UK (Herman Verkade) writes:
>In article <9007260116.AA17893@ucbvax.Berkeley.EDU>,
>rossj%30721.decnet@V3.HANSCOM.AF.MIL ("30721::ROSSJ") writes:
>>This won't clarify the Marketing Policy but will provide some perspective of how
>>this change would be implemented:
>>The vaxstation 2user limit is not in software, it's in firmware on the cpu
>>board. An upgrade in number of users would require an update/replacement of the
>>cpu board, not just a software patch.
>
>When DEC says that "it's in firmware", I think you should interpret that as:
>"VMS knows the difference between a VAXstation and a MicroVAX from some
>information in the firmware". That information is read by VMS during boot and
>kept in memory. When you do SHOW CLUSTER and display the hardware type, that
>causes either the "MicroVAX XXXX" or "VAXstation XXXX" display. LOGINOUT also
>uses that information to restrict the number of users on a VAXstation.
>
>To get more users on a VAXstation you would need to do some heavy hacking in
>LOGINOUT, or find where VMS holds the info about the hardware type and change
>that with some kernel mode code (Haven't got a fiche here, so I can't help
>you). I can only assume it's the location where SYS$GETSYI gets the value for
>the SYI$_HW_NAME from. Anybody got the time to explore the fiche?
>
The following little program lets you poke the hardware type. Do:

BLISS vaxnames
LINK  vaxnames,sys$system:sys.stb/sel
RUN   vaxnames

Select your hardware type with the cursor keys, hit Return!

--cut here-----------------------------------------------------------
MODULE names (MAIN = MAIN,
              LANGUAGE (BLISS32),
              ADDRESSING_MODE(EXTERNAL=GENERAL)) =
BEGIN

LIBRARY 'SYS$LIBRARY:LIB';

EXTERNAL
    EXE$GA_HWNAME : REF VECTOR[, LONG],
    EXE$GL_HWNAME_LENGTH : LONG,
    SCS$AR_LOCALSB : REF BLOCK;

EXTERNAL ROUTINE
    smg$create_pasteboard,
    smg$create_menu,
    smg$create_virtual_display,
    smg$create_virtual_keyboard,
    smg$delete_pasteboard,
    smg$label_border,
    smg$paste_virtual_display,
    smg$select_from_menu;

MACRO
    assert(sts) = (local status;
                   status=sts;
		   if not .status then signal (.status);
		   status) %;

ROUTINE KRNL_SET_TYPE(t) =
    BEGIN
      BIND
        FIRST_SB = .SCS$AR_LOCALSB : BLOCK[SB$K_LENGTH,BYTE],
	HWVERS = FIRST_SB[SB$B_HWVERS] : BLOCK[SB$S_HWVERS,BYTE],
	HWT = HWVERS[SB$S_HWVERS-2,0,0,0] : WORD;

      HWT = .t;
      RETURN 1;
    END;

ROUTINE SET_TYPE(t) : NOVALUE =
    BEGIN
      BUILTIN
        AP;

      assert($cmkrnl (
	  routin = KRNL_SET_TYPE,
	  arglst = .AP));
    END;

MACRO dsc$l_l1     = 24,0,32,0 %,
      dsc$l_u1     = 28,0,32,0 %;

ROUTINE MENU : NOVALUE =
    BEGIN
      LITERAL
        array_size  = VAX$K_MAX_MODEL,
	string_size = 32;
      STRUCTURE
        matrix[i,j;m,n,unit=1,ext=0] =
	  [m*n*unit]
	  (matrix+(i*n+j)*unit)<0,8*unit,ext>;
      BIND
        FIRST_SB = .SCS$AR_LOCALSB : BLOCK[SB$K_LENGTH,BYTE],
	HWVERS = FIRST_SB[SB$B_HWVERS] : BLOCK[SB$S_HWVERS,BYTE],
	HWT = HWVERS[SB$S_HWVERS-2,0,0,0] : WORD;
      LOCAL
        pbd,
	dsp,
	kbd,
	rows,
	cols,
        string_array : matrix[array_size,string_size],
	menu : block[32,byte]
               preset([dsc$w_length]    = string_size,
	              [dsc$b_dtype]     = dsc$k_dtype_t,
		      [dsc$b_class]     = dsc$k_class_a,
		      [dsc$a_pointer]   = string_array,
		      [dsc$v_fl_coeff]  = 1,
		      [dsc$v_fl_bounds] = 1,
		      [dsc$b_dimct]     = 1,
		      [dsc$l_arsize]    = string_size*array_size,
		      [dsc$a_a0]        = string_array[0,0],
		      [dsc$l_m1]        = array_size,
		      [dsc$l_l1]	= 0,
		      [dsc$l_u1]	= array_size-1),
	choice : word,
	hwtype : word,
	trm : word;

      choice = hwtype = .HWT-1;

      assert(smg$create_pasteboard (
		 pbd,0,
		 rows,
		 cols,0,0));
      assert(smg$create_virtual_display (
		 %ref(.rows-2),
		 %ref(.cols-2),
		 dsp,
		 plit(smg$m_border),0,0));
      assert(smg$label_border (
		 dsp,
		 %ascid'Select Your Favourite Vax Model',
		 plit(smg$k_top),0,0,0,0));
      assert(smg$create_virtual_keyboard (
		 kbd,0,0,0,0));
      assert(smg$paste_virtual_display (
		 dsp,
		 pbd,
		 plit(2),
		 plit(2),0));

      INCRU I FROM 0 TO VAX$K_MAX_MODEL-1 DO
        BEGIN
	  LOCAL P,C;

          P=.EXE$GA_HWNAME[.I];
	  C=CH$RCHAR_A(P);
	  CH$COPY(.C,.P,%C' ',string_size,string_array[.i,0]);
	
	END;

      assert(smg$create_menu (
		 dsp,
		 menu,
		 plit(smg$k_block),
		 plit(smg$m_fixed_format),0,0,0));

      assert(smg$select_from_menu (
		 kbd,
		 dsp,
		 choice,
		 hwtype,
		 plit(smg$m_return_immed),0,0,
		 trm,0,0,0));

      assert(smg$delete_pasteboard (
		 pbd,
		 plit(smg$m_erase_pbd)));

      IF .choice NEQ .hwtype THEN
        SET_TYPE(.choice+1);

    END;

ROUTINE MAIN : NOVALUE =
    BEGIN
      MENU();
    END;
END                           ! End of module
ELUDOM
--cut here---------------------------------------------------------------

>Herman Verkade

!++
! Lennart Boerjeson, System Manager
! School of Electrical Engineering
! Royal Institute of Technology
! S-100 44 Stockholm, Sweden
! tel: int+46-8-7907814
! Internet: lennartb@lne.kth.se
!--

