HP3000-L Archives

June 1996, Week 5

HP3000-L@RAVEN.UTC.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
"SIMPKINS, Terry" <[log in to unmask]>
Reply To:
SIMPKINS, Terry
Date:
Fri, 28 Jun 1996 10:09:00 BST
Content-Type:
text/plain
Parts/Attachments:
text/plain (151 lines)
For those of you not following this thread, leave now.
 
I want to thank all those who sent ideas, thoughts, etc.
It turns out the school board DOES have the source code (just didn't know
it).  I found the code and traced the problem to an SL member.  I then found
what I think is the source for the procedure, and what to my wondering eyes
should appear, but "GETPRIVMODE", after they had assured me there was "no PM
code used".  That code is attached below.  My SPL is VERY VERY dated (and
was never very strong to begin with).    This is only part of the code
(didn't feel like typing in any more ot it), but I think you can get the
idea from this bit.  I think some of this code may have been written as
early as 1978.  This predates my 3K beginnings, was there a time when
something like this was required?  I thought the basic IMAGE intrinsics had
been around since "forever".   It seems like this could be easily
accomplished within a COBOL program with no need for all of this "extra
effort".
I would be happy to discuss further with anyone interested, but for now I'll
"cease bandwidth consumption" on this.
 
Sample of the SPL code (please excuse the spacing, but my OCR software is no
so great.
 
 
REPCHECK:
 
GET THE PROCESS IDENTIFICATION NUMBER >)
AND SET PROGRAM CAP TO ALL "I"'S >>
 
(< STEP 1 FIND PXGLOB )>
PUSH (DL);
TOS := SI(-I);
     ASSEMBLE  SUB
     @ DLIADDR TOS;
     PROG'CAP  DL'ADDR (13);
 
DLIADDR (13) := -1;
<<  STEP 2 GET MAIN PIN FROM JIT >>
TOS := @PIN; TOS := DL'ADDR (6).(6:10); TOS :=10; TOS :=1;
ASSEMBLE  (  MFDS  );
PIN := PIN.(8.8);
 
$IF  X3 = ON
(( GET THE CURRENT PRIORITY OF THE PROCESS MPE3 )>
 
$IF  X4 = ON
(( GET THE CURRENT PRIORITY OF THE PROCESS MPE4 >>
 
INDEX -.= 4;
ASSEMBLE ( PLDA  );
CPB := TOS;
INDEX := CPB + 13;
ASSEMBLE ( PLDA  );
PROC'INFO'1 := TOS;
IF PROC'INFO'l.(2:1) THEN OLD'PRIORITY := "CS";
IF PROC'INFO'I.(3:1) THEN OLD'PRIORITY := "DS";
IF PROC'INFO'I.(4:1) THEN OLD'PRIORITY := "ES";
IF PROC'INFO'l.(1:1) THEN
    OLDIPRIORITY := PROC'INFO'1 & LSL (8) + 65;
 
$IF
 
<< GET RUN TIME PARAMETER AND RETURN IT TO PROGRAM >>
 
GETUSERMODE;
ASSEMBLE (LRA Q-0;
          SUBM Q-0;
          SUBI 4;
          STAX;
          LOAD DB+O,X);
PARM := TOS;
 
<< SET STATUS TO DEFAULT OF ZERO >>
 
STATUS := 0;
GETPRIVMODE;
WHO (MODE,,,USER,GROUP,ACCOUNT,,TERM);
MOVE LG'W (12) := PROG'NAME, (3);
DATE := CALENDAR;
TIME := CLOCK;
 
<< IF JOB MODE SET TERM TO 99 >)
IF MODE.(12:2) = 2 THEN TERM := 99;
<< DISABLE BREAK KEY AND CONTROL Y IN SESSION MODE >>
IF MODE.(12:2) = I THEN BEGIN
    FCONTROL (1,14,WORK);
    FCONTROL (1,16,WORK); END;
 
<< FIND THE RIGHT DATABASE NAMES >>
 
GETUSERMODE;
IF NOT (I <= MODE'A <= MAX'A) THEN BEGIN
    GETPRIVMODE;
    GO TO ILL'CALL; END;
MOVE BASE'NAME := BASE'STORE ((MODE'A - 1) *8),(8)
MOVE DATABASE := BASE'NAME (1), (7);
MOVE LG'W (26) := "            ";
GETPRIVMODE;
 
<< CHECK MODE'B PARAMETER AND GO TO ILL'CALL IF ERROR >>
IF NOT (1 <= MODE'B <= 3) THEN GO TO ILL'CALL;
<< OPEN DATABASE ROOT FILE AND GET PASSWORD >>
MOVE LBUFF := BASE'NAME(l),(7);
DB'FILE := FOPEN (BBUFF,%OOO1,%1340,,,,,,,,,,-400);
  IF <> THEN BEGIN
     IF MODE'B = 3 THEN GO TO RETURN'NOT'AVIL;
     FCHECK (DB'FILE,WORK);
        IF <> THEN FILE'ABORT (DB'FILE);
     IF 5O <= WORK <= 52 OR
        92 <= WORK <=93 THEN GO TO ILL'ACCESS;
     IF WORK = 48 OR
        90 <= WORK <= 91 THEN GO TO EXCLUS'ACCESS;
FILE'ABORT (DB'FILE); END;
<< GET THE MAINTANCE PASSWORD AND OTHER PASSWORDS >>
FREADLABEL (DB'FILE, PBUFW, 128, 0);
    IF <> THEN FILE'ABORT (DB'FILE);
MOVE MBUFW := PBUFW (64), (4);
FREADLABEL (DB'FILE, PBUFW, 128, 1);
    IF <> THEN FILE'ABORT (DB'FILE);
FREADLABEL (DB'FILE, PBUFW (128), 128, 2);
IF <> THEN FILE'ABORT (DB'FILE);
 
FFILEINFO (DB'FILE, MODE1, FILE'NAME, MODEI8, FILE'CR);
    IF <> THEN FILE'ABORT (DB'FILE);
 
FCLOSE (DB'FILE,O,O);
IF <> THEN FILE'ABORT (DB'FILE);
 
<< FIND THE HIGHEST PASSWORD >>
 
GETUSERMODE;
MOVE BASE'PASS := "        "; MOVE HIGH'PASS := "        ";
FOR X := 0 UNTIL 63 DO
    IF PBUFB (X * 8) <> "        " THEN
       MOVE HIGH'PASS := PBUFW (X * 4), (4);
 
 
<< GET THE ACCOUNT FOR THE FILE NAME >>
 
MOVE FILE'ACCT := "        ";
TOS := @ FILE'ACCT;
SCAN FILE'NAME UNTIL " .", 1;
TOS := TOS + 1;
SCAN * UNTIL " .", 1;
TOS := TOS + 1;
MOVE * := * WHILE A;
GETPRIVMODE;
 
CHECK'JOB:
IF NOT JOB'OK THEN BEGIN
IF MODE.(12:2) = 2 THEN GO TO NOT'IN'JOB; END;

ATOM RSS1 RSS2