;       LFORCE.SBR
;       VER 1.0         8611.00
;
;       ALLOWS USER TO FORCE A LINE OF INFO AS
;       ANOTHER USERS OUTPUT BUFFER
;
;       PROPRIETARY PROGRAM MATERIAL
;
;       THIS MATERIAL IS THE PROPERTY OF JEFF STUYVESANT,
;       12307 PACIFIC AVE, APT 2,MAR VISTA, CALIF. ,90066
;       PERMISSION TO COPY AND USE IS GRANTED FOR
;       NON-PROFIT USES ONLY.
;
;       Copyright (c) 1986 JEFF STUYVESANT


       SEARCH  SYS
       SEARCH  SYSSYM
       SEARCH  TRM

       OBJNAM .SBR

       RADIX 8.


VMAJOR  =       1.
VMINOR  =       0.
VSUB    =       0.
VEDIT   =       0.
VWHO    =       0.

;EQUATES
       T%NAM   =4

       A%TNAM  =4
       A%STR   =16

       O%TYPE  =-2
       O%LEN   =4

       PHDR    -1,0,PH$REE!PH$REU

; BASIC PARAMETER MEMORY LAYOUT

;       BASE:   ; 0(A3)         PARAMETERS IN LIST (TOTAL)

       ; TERMINAL NAME
;       TYPE    ; 2(A3)         FIRST PARAMETER
;       ABS ADR ; 4(A3)
;       LEN     ;10(A3)

       ; STRING
;       TYPE    ;14(A3)         SECOND
;       ABS ADR ;16(A3)
;       LEN     ;22(A3)


       CMPW    @A3,#2                  ; check for only two vars
       BNE     1$

       CMP     A%TNAM+O%LEN(A3),#6     ; check for name length
       BNE     USAGE

       CMPW    A%TNAM+O%TYPE(A3),#2    ; check for name type
       BNE     USAGE

       CMPW    A%STR+O%TYPE(A3),#2     ; check for string type
1$:     BNE     USAGE

       MOV     A%TNAM(A3),A2           ; get addr of term name
       FILNAM  @A4,XXX                 ; set job name packed into free memory
       BEQ     USAGE
       MOV     TRMDFC,A5               ; point to first trm control block
2$:
       CMM     T%NAM(A5),@A4           ; names match?
       BEQ     5$                      ;   NO  - keep looking
       MOV     @A5,A5                  ; POINT TO NEXT
       BEQ     3$                      ; if zero ain't no moor
       BR      2$                      ;   YES - done looking
3$:     CRLF
       TYPECR  <? Terminal not found.>
       BR      SLEEP


5$:     ; GET HERE WITH TRMDEF POINTER
       ADD     #10,A5                  ; point to TCB
       MOV     A%STR(A3),A0            ; get string pointer
       ; A2 POINTS TO OUT MESSAGE

       MOV     #-1,D3                  ; preset counter
100$:   INC     D3                      ; inc counter
       CMPB    (A0)+,#0.               ; at end of line?
       BNE     100$                    ; br if not

       MOV     A%STR(A3),D1            ; set up for TRMBFQ

       JLOCK                           ; LOCK SYSTEM insure whole message

       TRMBFQ                          ; send message

       JUNLOK                          ; UNLOCK system
       RTN                             ; back to basic

USAGE:  TYPECR  <USAGE: XCALL LFORCE Termname,String>
SLEEP:  SLEEP   300                     ; insure message is seen
       RTN                             ; back to basic


       END