;      JAMIT.LIT
;
;
;

      SEARCH  SYS
      SEARCH  SYSSYM
      SEARCH  TRM

      AUTOEXTERN

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

      BUFSIZ=400.                     ;allow for at least 400 char buffer

      PHDR    -1,PV$RPD,PH$REE!PH$REU
START: GETIMP  400.,A3                 ; ALLOCATE MEMORY MODULE
      PUSH    A3                      ; SAVE BEGINNING OF BUFFER FOR LATER
      JOBIDX  A0                      ; GET JCB ADDRESS
      CLR     D2                      ; CLEAR THE CONTROL CHARACTER FLAG
      MOV     #BUFSIZ,D4              ; SET UP OUR CHARACTER COUNTER
      CLR     D5                      ; CLEAR MODE FLAG FOR SINGLE LINE
;
; CHECK FOR INPUT ON SAME LINE AS JAMIT COMMAND (SINGLE LINE MODE)
;
      BYP                             ; GET PAST BLANKS AND TABS
      LIN                             ; AT END OF LINE
      BNE     FRC3                    ; IF NOT, THEN SINGLE LINE INPUT
      INC     D5                      ; ELSE SET MODE TO MULTIPLE LINE
;
; GET ANOTHER LINE OF INPUT (MULTIPLE LINE MODE)
;
FRC2:  KBD                             ; GET ANOTHER LINE OF INPUT
      CTRLC   FRCX                    ; ON CONTROL/C EXIT
      BYP                             ; GET PAST BLANKS AND TABS
      LIN                             ; ANYTHING ON THIS LINE ?
      BEQ     FRC4                    ; IF NOT, GO TO FORCE OPERATION
;
; PUT CHARACTERS TO BE FORCED INTO LOCAL BUFFER
;
FRC3:  MOVB    @A2,(A3)+               ; PUT NEXT CHARACTER INTO LOCAL BUFFER
      DEC     D4                      ; DECREMENT CHARACTER COUNT
      BEQ     FRC4                    ; DONE IF NO MORE ROOM IN BUFFER
      CMPB    (A2)+,#15               ; IS THIS THE END OF THE LINE ?
      BNE     FRC3                    ; NO
      TST     D5                      ; ARE WE IN SINGLE LINE MODE ?
      BNE     FRC2                    ; NO
;
; TRANSFER CHARACTERS FROM LOCAL BUFFER TO TERMINAL INPUT BUFFER
;
FRC4:  NEG     D4                      ; CALCULATE NUMBER OF CHARS. IN BUFFER
      ADD     #BUFSIZ,D4
      BEQ     FRCX                    ; DONE IF NONE
      POP     A3                      ; POINT TO BUFFER BEGINNING AGAIN
      MOV     JOBTRM(A0),A5           ; POINT TO TRMDEF
      ORW     #T$XLT!T$ILC!T$DAT,T.STS(A5)    ; SET NOECHO, IMAGE MODE, DATA TRANSPARENCY, & ENABLE LOWER CASE
FRC5:  MOV     JOBTRM(A0),A5           ; POINT TO TRMDEF FOR THIS JOB
      MOVB    (A3)+,D1                ; PICK UP THE CHARACTER TO OUTPUT
      CMPB    D1,#10                  ; SEE IF LINE FEED
      BNE     FRC6                    ; IF NOT, PUT IT OUT
      CMPB    -1(A3),#15              ; SEE IF LAST ONE WAS A CARRIAGE RETURN
      BEQ     FRC7                    ; IF SO, NO NEED FOR LINEFEED
FRC6:  TRMICP                          ; PROCESS CHARACTER
FRC7:  SOB     D4,FRC5                 ; LOOP BACK TILL DONE
FRCX:  EXIT                            ; ALL DONE HERE
      END