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