; 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 .