;      TRMTYP.SBR
;              SUBROUTINE TO DETERMINE & PASS BACK TO BASIC THE
;                      TYPE OF THE TERMINAL ATTACHED TO THE CURRENT JOB.
;
;              VERSION 1.0 - 03/03/84 - D. EICHBAUER
;              VERSION 1.1 - 09/08/84 - ALSO RETURN TERMINAL CHARACTERISTICS
;                      AS AN OPTION.  D.E.
;
;
;                      PROPRIETARY PROGRAM MATERIAL
;
;      THIS MATERIAL IS THE PROPERTY OF DALE A. EICHBAUER,
;      692 E. FREELAND ROAD, MERRILL, MICHIGAN, 48637.  PERMISSION
;      TO COPY & USE IS GRANTED FOR NON-PROFIT USES ONLY.
;
;
;
;
;      FORMAT OF CALL IS:  XCALL TRMTYP,ENTRY (,CHARACTERISTICS,ROWS,COLUMNS,
;              COLORS,FOREGROUND,BACKGROUND)
;              WHERE ENTRY IS A STRING AT LEAST 6 LONG.  UPON RETURNING
;              TO BASIC, ENTRY WILL CONTAIN NAME OF TERMINAL TYPE.
;              CHARACTERISTICS IS A "STRING" AT LEAST 20 CHARACTERS LONG
;              WHICH WILL BE FILLED WITH "T" & "F" FLAGS BASED ON THE
;              CHARACTERISTICS OF THE PARTICULAR TERMINAL.
;              ROWS IS THE NUMBER OF ROWS SUPPORTED BY THE TERMINAL.
;              COLUMNS IS THE NUMBER OF COLUMNS SUPPORTED BY THE TERMINAL.
;              COLORS IS THE NUMBER OF DIFFERENT COLORS SUPPORTED BY THE
;              TERMINAL.
;              FOREGROUND IS THE CURRENT FOREGROUND COLOR NUMBER.
;              BACKGROUND IS THE CURRENT BACKGROUND COLOR NUMBER.
;
;      TERMINAL FLAGS FROM SYSSYM AS OF AMOS/L VERSION 1.2:
;
;              TD$ALP  =       1       ; HAS ALTERNATE PAGE
;              TD$BLF  =       2       ; HAS BLOCK FILL
;              TD$KID  =       4       ; HAS COLUMN INSERT/DELETE
;              TD$CLR  =       10      ; HAS COLOR CAPABILITY
;              TD$MLT  =       20      ; HAS MULTI-KEY (FUNCTION KEY) TRANSLATION
;              TD$AMS  =       40      ; AN ALPHATERMINAL (ADDRESSABLE STATUS LINES)
;              TD$STS  =       100     ; HAS STATUS LINE
;              TD$SPL  =       200     ; HAS HORIZONTAL SPLIT SCREEN
;              TD$EOL  =       400     ; HAS ERASE TO END OF LINE
;              TD$EOS  =       1000    ; HAS ERASE TO END OF SCREEN
;              TD$UND  =       2000    ; HAS UNDERSCORE
;              TD$BLN  =       4000    ; HAS BLINK
;              TD$DIM  =       10000   ; HAS DIM
;              TD$RVA  =       20000   ; HAS REVERSE VIDEO
;              TD$CID  =       40000   ; HAS CHARACTER INSERT/DELETE
;              TD$LID  =       100000  ; HAS LINE INSERT/DELETE
;              TD$PRT  =       200000  ; HAS PRINTER SUPPORT
;              TD$132  =       400000  ; HAS 80/132 COLUMN SUPPORT
;              TD$SMT  =       1000000 ; HAS SMOOTH SCROLL
;              TD$BOX  =       2000000 ; HAS "BOX" COMMANDS
;              TD$LCL  =       200
;              TD$NEW  =       2000
;              TD$TCH  =       4000
;
;      CHARACTERISTICS BLOCK LAYOUT AS RETURNED BY TRMCHR:
;              TC.FLG  =       0       ; THE ABOVE FLAGS
;              TC.ROW  =       4       ; A WORD CONTAINING # OF ROWS
;              TC.COL  =       6       ; A WORD CONTAINING # OF COLUMNS
;              TC.CLR  =       10      ; A WORD CONTAINING # OF COLORS
;              TC.FGC  =       12      ; A WORD CONTAINING CURRENT FOREGROUND
;              TC.BGC  =       14      ; A WORD CONTAINING CURRENT BACKGROUND
;              TC.WNR  =       16      ; RESERVED FOR FUTURE USE
;              TC.WNC  =       20      ; RESERVED FOR FUTURE USE
;              TC.SPR  =       22      ; SIX BYTES OF SPARE AREA
;              TC.CMP  =       32      ; RESERVED FOR FUTURE USE
;              TC.SIZ  =       32      ; CURRENT SIZE OF THIS BLOCK
;              TC.SZC  =       132     ; TOTAL SIZE OF THIS BLOCK



      SEARCH  SYS
      SEARCH  SYSSYM

      AUTOEXTERN

      OBJNAM TRMTYP.SBR

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

; OFFSETS FROM A3 FOR PARAMETERS PASSED FROM BASIC

      PARMS=0
      TYPE.1=2                ; TERMINAL NAME
      ADD.1=4
      SIZE.1=10
      TYPE.2=14               ; CHARACTERISTICS
      ADD.2=16
      SIZE.2=22
      TYPE.3=26               ; ROWS
      ADD.3=30
      SIZE.3=34
      TYPE.4=40               ; COLUMNS
      ADD.4=42
      SIZE.4=46
      TYPE.5=52               ; COLORS
      ADD.5=54
      SIZE.5=60
      TYPE.6=64               ; FOREGROUND
      ADD.6=66
      SIZE.6=72
      TYPE.7=76               ; BACKGROUND
      ADD.7=100
      SIZE.7=104









      PHDR    -1,PV$RPD,PH$REE!PH$REU

      BR      START
      ASCII   / COPYRIGHT (C) 1983, 1984 DALE A. EICHBAUER /
      EVEN
START: TSTW    @A3                     ; MAKE SURE AT LEAST ONE PARAMETER
      JLE     BASIC                   ; ELSE ERROR
      CLEAR   @A4,100                 ; CLEAR OUR FREE SPACE
      JOBIDX  A6
      MOV     JOBTRM(A6),A1           ; POINT TO TRMDEF
      MOV     16(A1),A1               ; NOW GET ADDRESS OF TRM DRIVER
      SUB     #4,A1                   ; STEP BACK 4 BYTES FOR NAME
      MOV     ADD.1(A3),A2            ; GET ADDRESS OF BASIC STRING
      UNPACK
      UNPACK
      CMPW    PARMS(A3),#1            ; SEE IF ONLY NAME DESIRED
      JEQ     BASIC                   ; IF SO, GET BACK
      TRMCHR  @A4                     ; GET THE CHARACTERISTICS
      MOV     SIZE.2(A3),D1           ; GET THE ARGUMENT SIZE
      CMP     D1,#20.                 ; SEE IF AT LEAST 20 LONG
      BLT     BASIC                   ; IF NOT, GET OUT
      MOV     #20.,D1                 ; SET OUR LOOP FOR 20
      MOV     ADD.2(A3),A1            ; POINT TO OUR VARIABLE
      MOV     @A4,D2                  ; GET THE TERMINAL CHARACTERISTICS FLAGS

LOOP:  ROR     D2                      ; SHIFT THE LOW BIT INTO THE CARRY
      BCC     FALSE                   ; IF CLEAR, THEN FALSE ATTRIBUTE
      MOVB    #'T,(A1)+               ; MAKE THIS ONE TRUE
      BR      STEP                    ;
FALSE: MOVB    #'F,(A1)+               ; MAKE THIS ONE FALSE
STEP:  SOB     D1,LOOP                 ; LOOP BACK TILL DONE
      CMPW    PARMS(A3),#2            ; SEE IF LAST PARAMETER
      BEQ     BASIC                   ; IF SO, ALL DONE
      MOV     ADD.3(A3),A1            ; GET ADDRESS OF ROW PARAMETER
      MOVB    TC.ROW(A4),(A1)+        ; GET THE FIRST BYTE
      MOVB    TC.ROW+1(A4),(A1)+      ; THEN THE SECOND
      CMPW    PARMS(A3),#3            ; SEE IF LAST PARAMETER
      BEQ     BASIC                   ; IF SO, ALL DONE
      MOV     ADD.4(A3),A1            ; GET ADDRESS OF COLUMN PARAMETER
      MOVB    TC.COL(A4),(A1)+        ; GET THE FIRST BYTE
      MOVB    TC.COL+1(A4),(A1)+      ; THEN THE SECOND
      CMPW    PARMS(A3),#4            ; SEE IF LAST PARAMETER
      BEQ     BASIC                   ; IF SO, ALL DONE
      MOV     ADD.5(A3),A1            ; GET ADDRESS OF COLOR PARAMETER
      MOVB    TC.CLR(A4),(A1)+        ; GET THE FIRST BYTE
      MOVB    TC.CLR+1(A4),(A1)+      ; THEN THE SECOND
      CMPW    PARMS(A3),#5            ; SEE IF LAST PARAMETER
      BEQ     BASIC                   ; IF SO, ALL DONE
      MOV     ADD.6(A3),A1            ; GET ADDRESS OF FOREGROUND PARAMETER
      MOVB    TC.FGC(A4),(A1)+        ; GET THE FIRST BYTE
      MOVB    TC.FGC+1(A4),(A1)+      ; THEN THE SECOND
      CMPW    PARMS(A3),#6            ; SEE IF LAST PARAMETER
      BEQ     BASIC                   ; IF SO, ALL DONE
      MOV     ADD.7(A3),A1            ; GET ADDRESS OF BACKGROUND PARAMETER
      MOVB    TC.BGC(A4),(A1)+        ; GET THE FIRST BYTE
      MOVB    TC.BGC+1(A4),(A1)+      ; THEN THE SECOND
BASIC: RTN

      ASCII   / COPYRIGHT (C) 1983, 1984 DALE A. EICHBAUER /
      EVEN

      END