ASMB,R,Q,C
* 
*     NAME:   ON..
*     SOURCE: 92071-18103 
*     RELOC:  92071-1X103 
*     PGMR:   C.H.W.,H.L.C.,D.J.N.
* 
*  **************************************************************** 
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980.  ALL RIGHTS      * 
*  * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,       * 
*  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * 
*  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.        * 
*  **************************************************************** 
* 
* 
      NAM ON..,7  92071-1X103  REV.2041  800808 
* 
* 
* 
*  ACTION SUBROUTINE TO EXECUTE THE "ON" OPERATOR COMMAND 
* 
*    COMMAND SYNTAX:
*        ON,NAME(,PASSED PARAMETERS)
* 
* 
      ENT ON..
* 
      EXT $LIBR,$LIBX,$CON,$WORK,$NAMX
      EXT $TADD,$TMSC,$TIME,$ALCS,$RQP8,$RQ.9 
      EXT $XQT,$SUSP,ECH,$TMP1,$SBLN
      EXT $LIST,$PVCN,$XEQ,C.BUF
      EXT .XSA,.XSB,.XLA,.XLB,$SJS0,$SJS1,$SJP
* 
* 
ON..  NOP 
RETRY LDA ON..
      ADA .2        2ND PARAMETER IS THE PARSE BUFFER ADDR
      LDB 0,I       GET IT
      INB           POINT TO PARAMETERS 
      STB TMPAD 
      INA 
      LDA 0,I 
      STA ERRTN     SAVE ADDR OF ERROR PARAM
      LDA ON..,I
      STA RTN       SAVE RETURN ADDR
* 
      JSB $LIBR     GO PRIVILEGED 
      NOP 
      JSB $SJS1     GET ID SEG ADDR 
      DEF $NAMX 
TMPAD NOP 
      SZB,RSS       NAME FOUND? 
      JMP ER14       NO, ERROR
      SZA           DORMANT?
      JMP ER18       NO, ERROR
      ADB .10       ID SEG WORD 11
      STB TEMP0     SAVE ADDR OF B REG SAVE 
      ADB .7        ID SEG WORD 18
      STB TEMP1 
      ADB .11       ID SEG WORD 29
      STB TEMP2 
      JSB .XLA
      DEF TEMP1,I 
      AND B160K     ISOLATE RESOLUTION CODE 
      SZA,RSS       SPECIFIED?
      JMP ER36       NO, ERROR
      ADB N27       POINT TO ID SEG WORD 2
      STB PRMPT 
      STB TEMP3 
      LDA DC.BF 
      JSB .XSA      STRING ADDR 
      DEF $RQP8 
      LDA ECH 
      RAL           STRING BYTE LEN 
      JSB .XSA
      DEF $RQ.9 
      JSB .XLB
      DEF $WORK 
      JSB $SJS0 
      DEF $ALCS 
      SZB 
      JMP SUSP      NOT ENOUGH SAM
      LDB PRMPT 
      JSB .XSB      B POINTS TO PRAMS 
      DEF TEMP0,I 
      LDB TMPAD 
      LDA N5        SET TO MOVE 
      STA TEMP0      5 PARAMETERS 
NPRM  ADB .4
      LDA 1,I       GET PASSED PARAMETER
      JSB .XSA      MOVE INTO ID SEG
      DEF PRMPT,I 
      ISZ PRMPT 
      ISZ TEMP0     MORE? 
      JMP NPRM       YES
* 
      JSB .XLA
      DEF $CON
      JSB .XLA
      DEF 0,I 
      AND B77       LOG LU OF FMGR
      LDB TMPAD 
      ADB .3
      LDB 1,I       ANY PRAMS?
      SZB,RSS 
      STA TEMP3,I    NO, GIVE HIM LOG LU
      LDB 0 
      JSB .XLA
      DEF TEMP2,I 
      AND HIGH8 
      IOR 1 
      JSB .XSA
      DEF TEMP2,I 
      ISZ TEMP1 
      LDB TEMP1 
      JSB .XLA      CHECK TIME FOR NEG ZERO 
      DEF 1,I 
      INB 
      JSB .XLB
      DEF 1,I 
      XOR RS1 
      CPB RS2 
      SZA 
      JMP ZCHK
NOW   JSB .XLA      TIME=0, USE CURRENT 
      DEF $TIME 
      JSB .XLB
      DEF $TIME+1 
      JSB .XSA
      DEF TEMP1,I 
      LDA TEMP1 
      INA 
      JSB .XSB
      DEF 0,I 
      JSB .XLB
      DEF $WORK 
      JSB $SJS0     ADD TO TIME LIST
      DEF $TADD 
      JSB .XLB
      DEF $WORK 
      JSB $SJS0     TIME SCHEDULE NOW 
      DEF $TMSC 
EXIT  JSB $LIBX 
      DEF RTN 
* 
ZCHK  SZB,RSS 
      JMP NOW       POSITIVE ZERO 
      JSB .XLB      NON-ZERO START TIME 
      DEF $WORK 
      JSB $SJS0     ADD TO TIME LIST
      DEF $TADD 
      JMP EXIT
* 
* 
ER14  LDA .14       REQUIRED ID SEG NOT FOUND 
      JMP EREX
* 
ER18  LDA .18       PROGRAM NOT DORMANT 
      JMP EREX
* 
ER36  LDA .36       NO TIME PARAMETERS SPECIFIED
* 
EREX  STA ERRTN,I   STORE ERROR CODE
      JMP EXIT
* 
* 
SUSP  LDA DRTRY 
      JSB .XLB      SUSPEND FOR RETRY 
      DEF $SUSP 
      JSB .XSA
      DEF 1,I 
      JSB .XLA
      DEF $SBLN 
      JSB .XLB      SAVE AMOUNT OF SAM NEEDED 
      DEF $TMP1 
      JSB .XSA
      DEF 1,I 
      JSB .XLB
      DEF $XQT
      JSB $SJS1     SUSPEND CALLER
      DEF $LIST 
      OCT 61         FOR MEMORY 
      CLA 
      JSB .XSA      CLEAR PRIV COUNT
      DEF $PVCN 
      JSB $SJP
      DEF $XEQ
* 
* 
.2    DEC 2 
.3    DEC 3 
.4    DEC 4 
.7    DEC 7 
.10   DEC 10
.11   DEC 11
.14   DEC 14
.18   DEC 18
.36   DEC 36
N5    DEC -5
N27   DEC -27 
B77   OCT 77
HIGH8 OCT 177400
B160K OCT 160000
* 
RS1   OCT 25000 
RS2   OCT 177574
* 
DRTRY DEF RETRY 
DC.BF DEF C.BUF 
* 
TEMP0 NOP 
TEMP1 NOP 
TEMP2 NOP 
TEMP3 NOP 
ERRTN NOP 
PRMPT NOP 
RTN   NOP 
* 
      END 
                    