HP3000
From Linux PARISC Wiki
Craig Lalley <mr_lalley@yahoo.com>
HP3000 918 LX (changed the name to "928LX 3kranger Fox") Stable storage 256 bytes, then Nvolatile storage 256 bytes. NMSSUTIL [E.02.03] SSsize 64 (256) H-SSsize 64 (256) 00000000: 80 FF FF FF FF FF 38 34 00 00 00 06 00 00 00 00 ......84........ 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040: 00 02 00 00 FF FF FF FA 21 F6 84 00 00 00 00 00 ........!....... 00000050: 00 00 00 00 00 00 00 00 7B 3A 00 00 00 00 01 0F ........{:...... 00000060: 00 FF FF FF FF FF 38 38 00 00 00 00 00 00 00 00 ......88........ 00000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000080: 00 FF FF FF FF FF 38 34 00 00 00 00 00 00 00 00 ......84........ 00000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ Path: Primary 56/52.6.0.0.0.0.0 AutoBoot ON AutoSrch OFF Path: Alternate 56/52.0.0.0.0.0.0 Path: Console 56/56.0.0.0.0.0.0 Path: Keyboard 0 OS: 2 MPE Diag 0x7B3A FastSize F OSdep2 1 OSdep1: 0000 FFFF FFFA 21F6 8400 0000 0000 0000 0000 0000 0000 00000000: 00 00 48 00 00 00 04 81 00 00 00 00 00 00 00 00 ..H............. 00000010: 44 14 3A 73 10 00 00 01 00 00 00 00 00 00 00 00 D.:s............ 00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5E F0 ..............^. 00000040: 40 48 00 09 F6 23 07 6C 80 00 00 00 80 00 00 00 @H...#.l........ 00000050: 00 07 53 03 00 00 00 00 00 00 00 00 00 00 00 00 ..S............. 00000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000080: 39 32 38 4C 58 20 33 6B 52 61 6E 67 65 72 20 46 928LX 3kRanger F 00000090: 6F 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ox.............. 000000A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000F0: 55 53 41 2D 33 6B 52 61 6E 67 65 72 2D 31 30 00 USA-3kRanger-10. Product: Serial USA-3kRanger-10 MPE: 928LX 3kRanger Fox HVersion: 0x4800 SVersion 0x0481 HV 0 swID 0x44143A73 1142176371 Cap: 0x10000001 BootID 0 Arch 0 Potkey 0 Curkey 0 Width 0 SysClock 48.000304 RTClock 32768 Res2 5ef0 24304 Res3 data
=======================================================
Code extract of NMSSUTIL Structures are as I discovered. #pragma VERSIONID "@(#) NMSSUTIL E.02.03 2009/11/01 HP PArisc SSutil" #define proc #define PRG_VERS "E.02.03" #define SS_MAX 128 #define CAP_PM 0x00000040 #define PDC_DIAGFILE "/dev/diag/diag2" typedef struct GCC_ALIGN(1) path_s { struct { u32 autoboot :1; u32 autosearch :1; u32 res1 :2; u32 timer :4; } attr; uchar bc [6]; u32 mod :8; u32 layer[6]; } path_t; typedef struct GCC_ALIGN(1) os_s { u16 osid; u16 osdep1 [11]; u16 diag; u16 res1; u32 res2 :8; u32 osdep2 :16; u32 res3 :4; u32 fastsize :4; } os_t; typedef struct arch_stable_s { path_t pri; /* 0 $00*/ path_t res1; /* 32 $20*/ os_t os; /* 64 $40*/ path_t cons; /* 96 $60*/ path_t alt; /*128 $80*/ path_t key; /*160 $A0*/ path_t res2; /*192 $C0*/ u32 osdep3 [8]; /*224 $E0*/ } arch_stable_t; /*256 $100*/ typedef struct unarch_stable_s { u32 hvers; u32 svers; u32 hv; u32 bootid; u32 swid; u32 swcap; u32 archrev; u32 potkey; u32 curkey; u32 width; u16 res1 [11]; u16 res2; f64 sysclock_mhz; u16 rtclock_hz; u16 res3 [11]; char hpuxname [32]; char mpename [32]; char alt1name [32]; char alt2name [32]; char prod1 [8]; char prod2 [8]; char sernum [16]; } unarch_stable_t; int wizard; /*----------------------------------------------------------------*/ proc static void zzz_fmtunarch (u32 *ss) { int x; unarch_stable_t *un; un = (unarch_stable_t*) ss; if (*un->prod1 || *un->prod2 || *un->sernum) printf (" Product: %s %s Serial %-.*s\n", un->prod1, un->prod2, sizeof (un->sernum), un->sernum); if (*un->hpuxname) printf (" HPUX: %s\n", un->hpuxname); if (*un->mpename) printf (" MPE: %s\n", un->mpename); printf ("HVersion: 0x%4.4X", un->hvers); printf (" SVersion 0x%4.4X", un->svers); printf (" HV %d", un->hv); printf (" swID 0x%X %d", un->swid, un->swid); printf ("\n"); printf (" Cap: 0x%X", un->swcap); printf (" BootID %d", un->bootid); printf (" Arch %d", un->archrev); printf (" Potkey %d", un->potkey); printf (" Curkey %d", un->curkey); printf (" Width %d", un->width); printf ("\n"); printf (" SysClock %f", un->sysclock_mhz); printf (" RTClock %d", un->rtclock_hz); printf (" Res2 %x %d\n", un->res2, un->res2); printf ("\n"); if (! zzz_iszero (un->res1, sizeof (un->res1))) printf (" Res1 data\n"); if (! zzz_iszero (un->res3, sizeof (un->res3))) printf (" Res3 data\n"); }