ASMB
   HED .               ***  T M S   L I N K  ***
      NAM $LTMS,7 92080-1X109 REV.2026  791107
  SPC 3 
**********************************************************************
*                                                                    *
*     NAME:   $LTMS     TMS LINK                                     *
*     SOURCE: &$LTMS    92080-18109                                  *
*     BINARY: %$LTMS    ----NONE---    PART OF  $TMSLB  92080-12100  *
*                                                                    *
*     PGMR:   FRANCOIS GAULLIER                                      *
*                                                                    *
**********************************************************************
      SPC 2 
*     **************************************************************
*     * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978.  ALL RIGHTS    *
*     * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- *
*     * PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH-  *
*     * OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.  *
*     **************************************************************
   SKP
* 
  SPC 3 
* 
* 
*     THIS PROGRAM IS A PART OF THE TERMINAL MONITOR SOFTWARE (TMS),
*     IT IS USE TO INTERACT WITH THE TMS FROM A EXTERNAL DEVICE.
*       USING TMSL, ONE CAN LAUNCH A PROCESS ON A GIVEN DEVICE, 
*       STOP OR ABORT THE TMS APPLICATION.
* 
*                *RU,TMSL [, [LU] [,T.U.S NAME]  ]
* 
*   WHERE:
*         LU       IS THE LOGICAL UNIT ON WHICH THE PROCESS 'T.U.S. NAME' 
*                  WILL BE LAUNCH.
*                  THE LU MAY BE OMITTED, IN WHICH CASE THE CURRENT ONE 
*                  WILL BE USED.
*                  IF LU = 97,98,OR 99 THE TMS APPLICATION IS STOPPED OR
*                  ABORTED. 
* 
*         TUS NAM  TMS-USER-SUBROUTINE NAME THAT WILL BE LAUNCH ON
*                  THE LOGICAL UNIT LU. 
*                  IF OMITTED THE FOLLOWING PROMPT IS GIVEN ON THE
*                  DEVICE:
*                       "T.U.S. NAME [,LU ]  ? "
*                  AND TMSL WAIT FOR THE ANSWER.
* 
*   NOTE: 
*     IF THERE IS NO STRING PASSING (I.E.: SHEDULE FROM A PROGRAM 
*     WITHOUT GIVING A STRING TO BE PASSED), THE FIVE PARAMETERS ARE
*     CHECKED.
*                                 OR
*       P1        IS 97, 98, OR 99         P1        IS LU
*       P2,P3,P4  D'ONT CARE               P2,P3,P4  IS THE T.U.S.
*       P5        MUST BE -1               P5        MUST BE -2 
* 
* 
*********************************************** F. GAULLIER  (HPG) ***
   SPC 3
      ENT $LTMS 
      EXT RMPAR,EXEC,PNAME,$PARS,REIO 
      IFZ 
      EXT DBUGR 
      XIF 
      SUP 
  SPC 2 
LU    NOP 
LUI   NOP           LU + ECHO BIT 
ECLAS OCT 0         EXTERNAL CLASS I O WORD 
ABTCD DEC 17        ABORT CODE
STPCD DEC 20        TMS STOP CODE 
SABCD DEC 26
LNKCD DEC 18        TMS-LINK CODE 
MES   ASC 13, /XXXXX: ILLEGAL SCHEDULE
      ASC 5,REQUEST ! 
MESA  ASC 11,T.U.S. NAME [,LU] ? _
.MES1 DEF MES+1 
IP    BSS 33
IB    BSS 8 
IBLEN DEC -16 
* 
SCODE EQU IB
STKPT EQU IB+7
  SPC 2 
$LTMS NOP 
      IFZ 
      JSB DBUGR 
      DEF *+2 
      DEF D1
      XIF 
      JSB RMPAR     RETREIVE PRG PARAMETERS 
      DEF *+2 
      DEF IP
* 
      LDA IP        INIT LU WITH PARAM 1
      STA LU
* 
      CMA,INA       IF(LU<3 OR LU>63) LU=1
      ADA D3
      CMA 
      STA L.001 
      LDA LU
      CMA,INA 
      ADA D63 
      IOR L.001 
      LDB D1        GET DEFAULT LU
      SSA           OK ?
      STB LU        NO, SET DEFAULT LU
* 
      LDA .D1       INIT SPECIAL FLAG 
      STA .NAME 
   SPC 1
      JSB EXEC      GET STRING REQUEST
      DEF *+5 
      DEF D14       STRING RQ 
.D1   DEF D1        GET 
      DEF IB        BUFFER
      DEF IBLEN     BUFFER LENGTH 
      SZA           GET OK ?
      JMP LTM70     NO, CHECK IF FROM TIME LIST 
      LDA SCODE     YES, CHECK REQUEST CODE 
      SZA,RSS       INITIALIZATION ?
      JMP LTM50     YES, GO INIT
      CPA ABTCD     IS IT ABORT ? 
      JMP LTM60     YES, TERMINATE PROGRAM
   SPC 2
*                   NOT FROM TMSYS, MUST BE FROM
*                   USER REQUEST "RU,...."
* 
      LDA ECLAS     CHECK THAT CLASS STILL OK 
      SZA,RSS       OK ?
      JMP LTM90     IF NOT, REPORT ERROR
  SPC 1 
      LDA .IP12     SET POINTER 
      STA .NAME 
      LDA .IP8
      STA .LU 
      JMP PARSE     GO PARSE BUFFER 
  SPC 1 
*                   REQUEST T.U.S AND LU
* 
LTM10 JSB EXEC      PRINT "T.U.S. NAME [,LU] ?" 
      DEF *+5 
      DEF D2
      DEF LU
      DEF MESA
      DEF DM21
* 
      LDA LU
      IOR =B400 
      STA LUI       LU + ECHO 
      JSB REIO      READ THE ANSWER 
      DEF *+5       BUT BE SWAPPABLE
      DEF D1
      DEF LUI 
.IB   DEF IB
      DEF IBLEN 
      SZB,RSS       INPUT ? 
      JMP LTM95     NO, TERMINATE THE PROGRAM 
* 
      LDA .IP       SET POINTER 
      STA .NAME 
      LDA .IP4
      STA .LU 
* 
PARSE LDA .IB       RECALL BUFFER ADR 
      JSB $PARS     AND DO THE PARSE
.IP   DEF IP        STORE RESULT
* 
      DLD .LU,I     GET TYPE & DATA 
      CPA D1        NUMBER DEFINE ? 
      JMP LTM14     YES, KEEP IT
      SZA           LU DEFAULTED ?
      JMP LTM90     NO, REPORT ERROR
      LDB LU        YES, GET DEFAULT LU 
* 
LTM14 CPB D99       IS IT ABORT REQUEST ? 
      JMP LTM40     YES, GO DO IT 
      CPB D98       IS IT STOP REQUEST ?
      JMP LTM41     YES, GO DO IT 
      CPB D97       IS IT "SOFT ABORT" REQUEST ?
      JMP LTM42 
      LDA .NAME,I   RECALL NAME TYPE
      CPA DM1       SPECIAL ERROR FLAG ?
      JMP LTM90     YES, REPORT ERROR 
      CPA DM2       SPECIAL FLAG ?
      JMP LTM27     YES, LAUNCH THE T.U.S.
      CPA D2        IS TUS NAME ASCII ? 
      RSS           YES, SEND REQUEST TO TMSYS
      JMP LTM10     NO, ASK AGAIN 
      STB IP        SET LU FOR THE LAUNCH 
      LDA .NAME 
      INA           GET ADDR OF NAME
      LDB .IP1      AND MOVE NAME INTO IP 
      MVW D3
LTM27 LDA LNKCD     GET TMS-LINK CODE 
  SPC 1 
LTM30 STA TEMP      SET TMS-CODE NUMBER 
      LDA ECLAS     LAST CHECK THAT THE CLASS 
      SZA,RSS       IS STILL OK 
      JMP LTM80     CLASS NOT DEFINED !  ERROR
      JSB EXEC      SEND INFO TO TMSYS
      DEF *+8 
      DEF NAB20     WRITE/READ NO ABORT 
      DEF D0
      DEF IP
      DEF D4        BUFFER LEN
      DEF D0
      DEF TEMP      TMS-CODE NUMBER 
      DEF ECLAS     CLASS WORD
      JMP LTM80     ERROR RETURN !! 
  SPC 1 
LTM38 JSB EXEC      TERMINATE PROGRAM 
      DEF *+9       WITH 'SAVE SUSPENSION POINT' OPTION 
      DEF D6
      DEF D0        CURRENT PROGRAM 
      DEF D1        'SAVE SUSP. POINT' OPTION 
      DEF D0        1ST PARAM 
      DEF D0        1ND PARAM 
      DEF D0        3RD PARAM 
      DEF D0        4TH PARAM 
      DEF D0        5TH PARAM 
   SPC 1
********************************************************************* 
  SPC 1 
      JMP $LTMS     RESTART FORM BEGINING 
  SPC 3 
*                   OPERATOR REQUEST TO ABORT/STOP THE
*                   TMS APPLICATION 
* 
LTM40 CLA 
      STA IP+1
      LDA ABTCD     GET ABORT CODE
      JMP LTM30     AND SEND REQUEST TO TMSYS 
  SPC 1 
LTM41 LDA STPCD     GET STOP CODE 
      JMP LTM30     AND SEND REQUEST TO TMSYS 
  SPC 1 
LTM42 LDA SABCD     GET "SOFT ABORT" CODE 
      JMP LTM30     AND SEND REQUEST TO TMSYS 
  SKP 
*                   TMSYS INITIALISE THIS PROGRAM:
*                   SAVE LOCALLY THE CLASS I/O WORD, AND
*                   TERMINATE WITH 'SAVE SUSP. POINT' OPTION. 
* 
LTM50 LDA STKPT     RECALL STKPT
      CPA =B100001  IS IT OK ?
      RSS           YES CONTINUE
      JMP LTM90     NO, REPORT ERROR
      LDA ECLAS     VERIFY THAT THE CLASS IS
      SZA           NOT ALREADY DEFINED 
      JMP LTM80     THE CLASS WAS DEFINED ! ERROR 
      LDA IP+1      RECALL 2ND PARAM
      STA ECLAS     TO INIT THE CLASS I/O WORD
      JMP LTM95     AND TERMINATE 'SAVE SUS. PT' IF OK
  SPC 2 
*                   TMSYS STOP THE APPLICATION: 
*                   TERMINATE THIS PROGRAM WITHOUT ANY OPTION.
* 
LTM60 LDA IP+1      TMSYS REQUEST TO STOP APPL., CHECK
      CPA ECLAS     IF CLASS STILL OK ? 
      JMP LTM99     YES, TERMINATE WITH NO OPTION 
      JMP LTM90     NO,REPORT ERROR 
  SPC 3 
*                   SHEDULE WITHOUT STRING PASSING: 
* 
LTM70 LDA .IP4      NO STRING PASSES, CHECK FROM
      STA .NAME     'ETMSP', SET SPECIAL ERROR FLAG 
      LDB IP        RECALL FIRST PARAM. 
      LDA IP+4      RECALL 5TH PARAM. 
      SZA,RSS       NOT DEFINED ? 
      JMP LTM10     YES, ASK TUS & LU 
      SSA,RSS       SPECIAL REQUEST FLAG ?
      JMP LTM90     NO, REPORT ERROR
      JMP LTM14     YES, TRY TO DO THE REQUEST
  HED  ERROR PROCESSING 
LTM80 CLA           RESET THE CLASS I/O WORD
      STA ECLAS 
      LDA .NAME,I   RECALL FLAG 
      CPA DM1       SPECIAL SOP/ABORT RQ ?
      JMP LTM95     YES, TMS ALREADY STOPPED
* 
LTM90 LDA .MES1     REPORT ERROR
      STA T.001 
      JSB PNAME 
      DEF *+2 
T.001 DEF T.001,I 
      LDA MES+3     MERGE THE ":" 
      IOR A:
      STA MES+3 
      JSB EXEC      PRINT ERROR MESSAGE 
      DEF *+5 
      DEF D2
      DEF LU
      DEF MES 
      DEF D18 
* 
LTM95 LDA ECLAS     TERMINATE PROGRAM WITH CURRENT OPTION 
      SZA           CALL I/O WORD DEFINED ? 
      JMP LTM38     YES, TERMINATE 'SAVE SUSP. PT.' 
  SPC 1 
LTM99 CLA           RESET THE CLASS I/O WORD
      STA ECLAS     IN CASE OF PROGRAM BEING CORE RESIDENT
      JSB EXEC
      DEF *+2 
      DEF D6
   SKP
A:    OCT 72        ":" 
L.001 NOP 
TEMP  NOP 
NAB20 OCT 100024
* 
.IP1  DEF IP+1
.IP4  DEF IP+4
.IP8  DEF IP+8
.IP12 DEF IP+12 
.LU   NOP 
.NAME NOP 
DM21  DEC -21 
DM2   DEC -2
DM1   DEC -1
D0    DEC 0 
D1    DEC 1 
D2    DEC 2 
D3    DEC 3 
D4    DEC 4 
D6    DEC 6 
D14   DEC 14
D18   DEC 18
D63   DEC 63
D97   DEC 97
D98   DEC 98
D99   DEC 99
      END 
                    