home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-07-13 | 44.8 KB | 1,147 lines |
- Path: uunet!seismo!sundc!pitstop!sun!amdcad!ames!ll-xn!husc6!spdcc!m2c!necntc!ncoast!allbery
- From: dave@safari.UUCP
- Newsgroups: comp.sources.misc
- Subject: SHOW TERMINAL for VAX/VMS
- Keywords: vms, not-shar, not-c
- Message-ID: <4770@ncoast.UUCP>
- Date: 29 Sep 87 20:36:40 GMT
- Sender: allbery@ncoast.UUCP
- Lines: 1134
- Approved: allbery@ncoast.UUCP
- X-Archive: comp.sources.misc/8709/18
-
- An Improved VAX/VMS "SHOW TERMINAL" Display -D.A. Munroe
-
-
- How many times have you typed "SHOW TERMINAL" only to spend time
- hunting around the display for the set of characteristics you need to
- know about? This program not only displays terminal characteristics
- in a much more organized format, but also shows some additional ones
- such as modem signals. A sample display is shown below.
-
- The program is written in MACRO, so anyone with VAX/VMS can use it.
- Once installed as a foreign command, it behaves just like the regular
- "SHOW TERMINAL", with the exception that output cannot be sent to
- disk.
-
-
-
- Terminal: _TXD1: Owner process: TA1
- Device type: FT2 Username: TYPESETTING
-
-
- --- speed --- --- comm. line --- --- flow --- --- generic ---
- Transmit: 9600 Full duplex No Host sync Scope
- Receive: 9600 No Modem No TT sync No ANSI CRT
- No Autobaud No Dialup line No Read sync No DEC CRT
- No Set speed priv No Remote No Force XON No DEC CRT2
- No Hangup Type ahead No Block mode
- --- bits --- No Modify hangup Alt. type ahead No Edit mode
- Passall No Disconnect proc DMA No Advanced video
- Pasthru CR fill: 0 No Printer port
- No Escape LF fill: 0 No Soft characters
- Eightbit --- format --- No SIXEL graphics
- No Fallback Width: 80 No ReGIS graphics
- Odd Parity Page: 24 --- user/appl ---
- Terminate on errors No Wrap No Broadcast
- Lowercase Line editing
- Tab Overstrike editing
- --- security --- Form Numeric Keypad
- No Secure server No Echo MBX Enable
- No Sys. password No Local echo No Broadcast MBX
-
- ------------------------ Cut Here ---------------------------------
-
- .title TERM Improved "Show Terminal"
- ;----------------------------------------------------------------
- ; TERM 3/87 D.A. Munroe
- ;
- ; This utility improves upon the SHOW TERMINAL command,
- ; not only by displaying more terminal characteristics,
- ; but by showing those characteristics in terms of these
- ; basic categories:
- ;
- ; - transmission speed
- ; - bit interpretation
- ; - communication
- ; - terminal formatting
- ; - flow control
- ; - user and application settings
- ; - generic capabilities
- ;
- ; status:
- ; output can only be to a terminal, but the program is
- ; otherwise complete
- ;
- ;
- ; notes:
- ; should be installed or used with the priviliges: log_io,
- ; share, world, and sysprv.
- ;
- ; comments, corrections, and suggestions should be sent to:
- ;
- ; David A. Munroe
- ; Capital Cities Communications/ABC
- ; 7818 SE Stark Ave
- ; Portland, Oregon 97215
- ; (503) 251-7533
- ;
- ; uucp: ...tektronix!reed!omen!safari!dave
- ; ...ptsfa!safari!dave
- ; ...ihnp4!safari!dave
- ;
- ;
- ; Revision history:
- ;
- ; v1.00 13-Mar-87 dm Initial release
- ; v1.01 06-Apr-87 dm Use "Hardcopy" instead of "No Scope"
- ;
- ;------------------------------------------------------------------------
-
-
- ; Bring in definitions
- $DVIDEF ; for dvi item codes
- $DEVDEF ; for device characteristics
- $JPIDEF ; for device owner & username
- $DCDEF ; for device class request
- $TTDEF ; for basic characteristics
- $TT2DEF ; for extended characteristics
-
- ; macro to generate general purpose string descriptor
-
- .macro string_dsc buffer, size
- .word size ; output buffer size
- .byte DSC$K_DTYPE_T ; text data type
- .byte DSC$K_CLASS_S ; string descriptor class
- .address buffer ; address of output buffer
- .endm
-
- ; macro to generate general purpose item descriptor
-
- .macro item_dsc item, buffer, size, return_length_address
- .word size ; output buffer size
- .word item ; item code (e.g. $DVI$_*)
- .address buffer ; output buffer
- .address return_length_address
- .endm
-
-
-
- .ident \v1.01\ ; 06-Apr-1987, D.A. Munroe
- .psect CODE,nowrt,exe
- .entry TERM,^m<r2,r3,r4,r5,r6,r7,r8> ; movc3 stomps on r0..r5
-
- ;----------------------------------------------------------------
- ; Assign an I/O channel to SYS$OUTPUT
- ;----------------------------------------------------------------
-
- $assign_s -
- devnam = outdev_dsc,-
- chan = outdev_chan
-
- blbs r0,gcml
- brw exit
-
-
-
- ;----------------------------------------------------------------
- ; Look at the command line to determine the terminal
- ; under test. If TERM is invoked with a command
- ; line such as:
- ; $ TERM OPA0
- ;
- ; then the effect of calling lib$get_foreign is to
- ; put "OPA0" in tt_buff (via tt_dsc).
- ;----------------------------------------------------------------
-
- gcml: pushaw tt_len ; where to put length of terminal name
- clrl -(sp) ; no prompt string
- pushaq tt_dsc ; descriptor for terminal name
- calls #3,g^lib$get_foreign ; look at command line
- blbs r0,assn_term ; continue if ok
- brw exit
-
-
-
- ;----------------------------------------------------------------
- ; Assign an I/O channel to the terminal under test.
- ; If no terminal name was given, we use SYS$OUTPUT.
- ; We need to do this in order to give tt_chan to the
- ; $QIO, below.
- ;----------------------------------------------------------------
- assn_term:
- tstw tt_len ; any terminal specified?
- bneq 10$ ; branch if so
-
- ; otherwise use SYS$OUTPUT
- movc3 #outdev_size,outdev_dsc,tt_dsc
- movw outdev_chan,tt_chan
-
- 10$: $assign_s -
- devnam = tt_dsc,-
- chan = tt_chan
-
- blbs r0,20$
- brw exit
-
- 20$:
-
-
- ;----------------------------------------------------------------
- ; Get terminal characteristics associated with the
- ; device on tt_chan. The IO$_SENSEMODE request provides
- ; additional terminal characteristics than that given by
- ; $GETDVI
- ;----------------------------------------------------------------
- get_ch:
- $qiow_s -
- efn = #0,-
- chan = tt_chan,-
- func = #IO$_SENSEMODE,-
- iosb = sense_iosb,-
- p1 = ch_buff,-
- p2 = #ch_size
-
- blbs r0,10$
- brw exit
-
- 10$: movzwl sense_iosb,r0
- blbs r0,20$
- brw exit
- 20$:
-
-
- ;----------------------------------------------------------------
- ; If the terminal has the modem characteristic, look at
- ; the modem signals. This is also a good time to place
- ; those signals in the prototype screen.
- ;----------------------------------------------------------------
- get_modem_ch:
- bbs #TT$V_MODEM,ch_basic,5$
- brw 70$ ; branch if not modem
-
- 5$: $qiow_s -
- efn = #0,-
- chan = tt_chan,-
- func = #IO$_SENSEMODE!IO$M_RD_MODEM,-
- iosb = modem_iosb,-
- p1 = modem_buff
-
- blbs r0,10$
- brw exit
-
- 10$: movzwl modem_iosb,r0
- blbs r0,20$
- brw exit
-
- 20$: bbc #TT$V_DS_DSR,modem_buff+2,21$ ; show any modem signals
- movl dsr,dsr_msg
- 21$: bbc #TT$V_DS_RING,modem_buff+2,22$
- movl ri,ri_msg
- 22$: bbc #TT$V_DS_CARRIER,modem_buff+2,23$
- movl cd,cd_msg
- 23$: bbc #TT$V_DS_CTS,modem_buff+2,24$
- movl cts,cts_msg
- 24$: bbc #TT$V_DS_SECREC,modem_buff+2,25$
- movl srd,srd_msg
- 25$:
- 70$:
- ;----------------------------------------------------------------
- ; Deassign the channel
- ; (otherwise we will appear as the terminal owner)
- ;----------------------------------------------------------------
- deassign:
- $dassgn_s -
- chan = tt_chan
-
- blbs r0,10$
- brw exit
- 10$:
-
-
- ;----------------------------------------------------------------
- ; Get device information (e.g. terminal name)
- ;----------------------------------------------------------------
- dev_info:
- $getdviw_s -
- efn = #0,-
- devnam = tt_dsc,-
- itmlst = device_itemlist,-
- iosb = dvi_iosb
-
- blbs r0,30$
- brw exit
-
- 30$: movzwl dvi_iosb,r0
- blbs r0,40$
- brw exit
-
- 40$:
- movw devnam_retlen,r0
- beql 45$
- movc3 r0,devnam_buff,term_name
- brb 50$
-
- 45$: movc3 devnam2_retlen,devnam2_buff,term_name
- 50$:
-
-
- ;----------------------------------------------------------------
- ; Get terminal owner and username
- ;----------------------------------------------------------------
- job_info:
- tstl pid_buff ; does the terminal have an owner?
- bneq 20$ ; if so, find owner & username
- tstl pid2_buff ; else check secondary characteristics
- beql 10$ ; branch if really no owner
- movl pid2_buff,pid_buff ; set owner pid for $GETJPI call
- brb 20$ ; find owner & username
-
- ; arrive here if no owner
- 10$: movc3 #no_owner_size,no_owner_msg,owner_msg
- brb 70$
-
- 20$: $getjpiw_s -
- efn = #0,-
- pidadr = pid_buff,-
- itmlst = job_itemlist,-
- iosb = jpi_iosb
-
- blbs r0,30$
- brw exit
-
- 30$: movzwl jpi_iosb,r0
- blbs r0,40$
- brw exit
-
- ;----------------------------------------------------------------
- ; Although VMS blank fills the username, the process name
- ; is zero filled, so we have to move it from a separate
- ; buffer.
- ;----------------------------------------------------------------
- 40$: movc3 owner_retlen,owner_buff,owner_msg ; set owner name
-
- 70$:
-
-
- ;----------------------------------------------------------------
- ; Here we scan the basic and extended characteristics bits and
- ; modify the display accordingly. In order to understand the
- ; method used, we need to consider column alignment. For
- ; example:
- ;
- ; No Modem No TT Sync No ANSI CRT
- ; No Dialup line No Read sync No DEC CRT
- ;
- ; When the "No "-condition is not present, we cannot simply
- ; blank it out, because that would produce a ragged looking
- ; display:
- ;
- ; Modem No TT Sync ANSI CRT
- ; No Dialup line Read sync DEC CRT
- ;
- ; The following technique is efficient with both memory and
- ; time: a prototype screen in memory will have characteristics
- ; given in their "asserted" form, such as "Wrap" (as opposed
- ; to "No Wrap"). For "normal" characteristics, such as "Wrap",
- ; a clear bit indicates "No Wrap" and a set bit indicates "Wrap".
- ; We check the characteristic, and if it's set, we leave the
- ; screen alone. If it's clear, we move the text right by three
- ; characters and insert a "No ". Note that we couldn't have
- ; used the reverse method (with the prototype having the "No "
- ; initially, and moving the text left) since that would leave
- ; trailing characters on the right.
- ;
- ; Some characteristics are "inverted", such as "No Broadcast".
- ; Here, a clear bit means "Broadcast" and a set one means "No
- ; Broadcast". To handle this, we use a longword bit map to
- ; indicate whether a characteristic is normal or inverted, and
- ; decide what to do based on that. Also, some characteristics
- ; (such as those for parity) require special handling, so there
- ; is a longword bit map for those, too.
- ;----------------------------------------------------------------
-
- text_size = 15. ; excludes "No "
-
- clrl r6 ; r6 = bit index
- movab line1,r7 ; r7 = address of line1
- basic_loop:
- bbs r6,basic_special,60$ ; branch (ignore) if special
- bbc r6,basic_attr,20$ ; branch if inverted
- ; else attribute is normal
- bbs r6,ch_basic,60$ ; bit set means leave alone
- 10$: movzwl o_basic[r6],r8 ; grab offset to display entry
- addl2 r7,r8 ; get absolute pointer to it
- movc3 #text_size,(r8),3(r8) ; shift right 3 characters
- movw #^a\No\,(r8) ; insert "No"
- movb #^a\ \,2(r8) ; insert " "
- brb 60$
-
- 20$: bbs r6,ch_basic,10$ ; bit set means put in "No "
-
- 60$: aobleq #basic_count,r6,basic_loop
-
- ;----------------------------------------------------------------
- ; Loop for testing extended characteristics
- ;----------------------------------------------------------------
- clrl r6 ; clear bit index
- extend_loop:
- bbs r6,extend_special,60$ ; branch (ignore) if special
- bbc r6,extend_attr,20$ ; branch if inverted
- ; else attribute is normal
- bbs r6,ch_extend,60$ ; bit set means leave alone
- 10$: movzwl o_extend[r6],r8 ; grab offset to display entry
- addl2 r7,r8 ; get absolute pointer to it
- movc3 #text_size,(r8),3(r8) ; shift right 3 characters
- movw #^a\No\,(r8) ; insert "No"
- movb #^a\ \,2(r8) ; insert " "
- brb 60$
-
- 20$: bbs r6,ch_extend,10$ ; bit set means put in "No "
-
- 60$: aobleq #extend_count,r6,extend_loop
-
-
- ;----------------------------------------------------------------
- ; Here we put in special descriptions. For example,
- ; instead of "No Passall" we have "Interactive".
- ;----------------------------------------------------------------
- specials:
- ; passall/interactive
- bbs #TT$V_PASSALL,ch_basic,10$
- movc3 #interactive_size,interactive,passall_msg
-
- ; half/full duplex
- 10$: bbs #TT$V_HALFDUP,ch_basic,20$
- movc3 #fullduplex_size,fullduplex,halfduplex_msg
-
- ; insert/overstrike editing
- 20$: bbs #TT2$V_INSERT,ch_extend,30$
- movc3 #overstrike_size,overstrike,insert_edit_msg
-
- ; application/numeric keypad
- 30$: bbs #TT2$V_APP_KEYPAD,ch_extend,40$
- movc3 #numeric_size,numeric,keypad_msg
-
- ; mailbox disable/enable
- 40$: bbs #TT$V_MBXDSABL,ch_basic,50$
- movc3 #mbxenable_size,mbxenable,mbxdisable_msg
-
-
- DISMISS_PARITY = 1 ; TT$V_DISPARERR is defined as 9, it should be 1
-
- 50$: bbc #TT$V_PARITY,sense_iosb+6,60$ ; branch if no parity
- bbc #DISMISS_PARITY,sense_iosb+6,52$ ; branch if terminating on parity errors
- movc3 #dismiss_size,dismiss,parity_err_msg
- brb 54$
-
- 52$: movc3 #terminate_size,terminate,parity_err_msg
-
- 54$: bbs #TT$V_ODD,sense_iosb+6,56$ ; branch if odd parity
- movc3 #evenparity_size,evenparity,parity_msg
- brb 60$
-
- 56$: movc3 #oddparity_size,oddparity,parity_msg
- 60$:
- bbc #DEV$V_SPL,devchar_buff,70$ ; branch if not spooled
- movc3 spooldev_retlen,spooldev_buff,spooldev_msg
- movc3 #spooled_size,spooled,spooled_msg
-
- ; Scope/Hardcopy
- 70$: bbs #TT$V_SCOPE,ch_basic,77$
- movc3 #hardcopy_size,hardcopy,scope_msg
- 77$:
-
-
- ;----------------------------------------------------------------
- ; Format numerical values (baud rate, screen width, etc.)
- ;----------------------------------------------------------------
- format:
- ; transmit speed
- movzbl sense_iosb+2,r0 ; look up encoded baudrate
- movl baudrate[r0],r0 ; get numeric value of baudrate
- $fao_s -
- ctrstr = transmit_fmt,- ; descriptor for format control string
- outlen = out_len,- ; where to store length of formatted output
- outbuf = transmit_dsc,- ; descriptor for formatted output buffer
- p1 = r0 ; where the transmit speed resides
- blbs r0,10$
- brw exit
-
- 10$: ; receive speed
- tstb sense_iosb+3 ; receive speed same as transmit?
- bneq 15$ ; branch if different
- movc3 #transmit_size,transmit_val,receive_val
- brb 20$
-
- 15$: movzbl sense_iosb+3,r0 ; look up encoded baudrate
- movl baudrate[r0],r0 ; get numeric value of baudrate
- $fao_s - ; receive speed
- ctrstr = receive_fmt,-
- outlen = out_len,-
- outbuf = receive_dsc,-
- p1 = r0
- blbs r0,20$
- brw exit
-
- 20$: $fao_s - ; terminal page width
- ctrstr = width_fmt,-
- outlen = out_len,-
- outbuf = width_dsc,-
- p1 = ch_pgwid
- blbs r0,30$
- brw exit
-
- 30$: $fao_s - ; terminal page length
- ctrstr = page_fmt,-
- outlen = out_len,-
- outbuf = page_dsc,-
- p1 = ch_pglen
- blbs r0,40$
- brw exit
-
- 40$: $fao_s - ; CR fill
- ctrstr = cr_fill_fmt,-
- outlen = out_len,-
- outbuf = cr_fill_dsc,-
- p1 = sense_iosb+4
- blbs r0,50$
- brw exit
-
- 50$: $fao_s - ; LF fill
- ctrstr = lf_fill_fmt,-
- outlen = out_len,-
- outbuf = lf_fill_dsc,-
- p1 = sense_iosb+5
- blbs r0,60$
- brw exit
- 60$:
-
-
- ;----------------------------------------------------------------
- ; Find the terminal type
- ;
- ; Entries in the terminal list table have the form:
- ;
- ; .byte term_id
- ; .byte length_of_terminal_name
- ; .ascii \terminal_name\
- ;
- ; The last entry in the table has an id of 0
- ;
- ;----------------------------------------------------------------
- movb ch_type,r0 ; r0 is terminal id
- movab terminal_list,r1 ; r1 = ptr to list of id's
- 70$: movb (r1)+,r2 ; look at next id in table
- beql 75$ ; if entry = 0, not found
- cmpb r0,r2 ; terminal id matches entry?
- beql 75$ ; branch if match
- movzbl (r1)+,r2 ; for longw arith. with count
- addl2 r2,r1 ; skip to next entry
- brb 70$
- 75$: ; at match or "Unknown" entry
- movb (r1)+,r0 ; r0 = character count
- movc3 r0,(r1),term_type
-
-
- ;----------------------------------------------------------------
- ; Show prototype screen
- ;----------------------------------------------------------------
- $qiow_s -
- efn = #0,-
- chan = outdev_chan,-
- func = #IO$_WRITEVBLK,-
- iosb = write_iosb,-
- p1 = line1,-
- p2 = #screen_size,-
- p4 = #0
-
- blbc r0,exit
- movzwl write_iosb,r0
-
- exit: ret
-
-
- .psect RWDATA,wrt,noexe
- ;----------------------------------------------------------------
- ; Data structures for the $ASSIGN service
- ;----------------------------------------------------------------
- outdev_chan: .blkw
- outdev_dsc: .ascid \SYS$OUTPUT\
- outdev_size = . - outdev_dsc
-
- tt_chan: .blkw
-
- tt_buffsize = 32.
- tt_dsc: ; descriptor for the terminal
- tt_len: .word tt_buffsize ; in: tt_buff size; out: length of terminal name
- .byte DSC$K_DTYPE_T ; text data type
- .byte DSC$K_CLASS_S ; string descriptor class
- .address tt_buff ; address of terminal name
-
- tt_buff: .blkb tt_buffsize ; for name of terminal we're interested in
-
-
- ;----------------------------------------------------------------
- ; Data structures for the $GETDVI service
- ;
- ; If the terminal is spooled, the primary characteristics
- ; are for the intermediate device (i.e. the disk) and the
- ; secondary characteristics are those of the terminal
- ;----------------------------------------------------------------
- device_itemlist: ; list of addresses for items we want
- item_dsc -
- DVI$_DEVCHAR!DVI$C_SECONDARY,-
- devchar_buff,devchar_size,devchar_retlen
-
- item_dsc -
- DVI$_PID,-
- pid_buff,pid_size,pid_retlen
-
- item_dsc -
- DVI$_PID!DVI$C_SECONDARY,-
- pid2_buff,pid2_size,pid2_retlen
-
- item_dsc -
- DVI$_TT_PHYDEVNAM,-
- devnam_buff,devnam_size,devnam_retlen
-
- item_dsc -
- DVI$_TT_PHYDEVNAM!DVI$C_SECONDARY,-
- devnam2_buff,devnam2_size,devnam2_retlen
-
- item_dsc -
- DVI$_DEVNAM,-
- spooldev_buff,spooldev_size,spooldev_retlen
-
- .long 0
-
- ; data structures for device-independent characteristics
-
- devchar_buff: .blkl
- devchar_size = . - devchar_buff
- devchar_retlen: .blkw
-
- ; data structures for owner PID
-
- pid_buff: .blkl
- pid_size = . - pid_buff
- pid_retlen: .blkw
-
- ; data structures for owner PID
- ; (if primary pid was 0)
-
- pid2_buff: .blkl
- pid2_size = . - pid2_buff
- pid2_retlen: .blkw
-
- ; data structures for physical device name
-
- devnam_buff: .blkb 64
- devnam_size = . - devnam_buff
- devnam_retlen: .blkw
-
- ; data structures for physical device name
- ; (if devnam_retlen was 0)
-
- devnam2_buff: .blkb 64
- devnam2_size = . - devnam2_buff
- devnam2_retlen: .blkw
-
- ; data structures for name of spooling device (if any)
-
- spooldev_buff: .blkb 64
- spooldev_size = . - spooldev_buff
- spooldev_retlen:.blkw
-
- dvi_iosb: .blkq
-
-
- ;----------------------------------------------------------------
- ; Data structures for the $GETJPI service
- ;----------------------------------------------------------------
-
- MAX_PROC_NAME = 15
- MAX_USER_NAME = 12
-
- job_itemlist: ; list of addresses for items we want
- owner_dsc: item_dsc JPI$_PRCNAM,owner_buff,MAX_PROC_NAME,owner_retlen
- username_dsc: item_dsc JPI$_USERNAME,username_msg,MAX_USER_NAME,username_retlen
- .long 0
-
- owner_buff: .blkb MAX_PROC_NAME
- owner_retlen: .blkw
-
- username_retlen:.blkw
-
- jpi_iosb: .blkq
-
-
- ;----------------------------------------------------------------
- ; Data structures for the $QIO service
- ;----------------------------------------------------------------
- ch_buff: ; terminal characteristics buffer
- .byte DC$_TERM ; device class (input to $QIO)
- ch_type: .blkb ; terminal type (e.g. vt100)
- ch_pgwid: .blkw ; page width (max is 255)
- ch_basic: .blkb 3 ; basic characteristics
- ch_pglen: .blkb ; page length
- ch_extend: .blkl ; extended characteristics
- ch_size = . - ch_buff
-
- out_len: .blkl
- write_iosb: .blkq
- sense_iosb: .blkq
- modem_iosb: .blkq
- modem_buff: .blkq
-
-
- ;----------------------------------------------------------------
- ; Screen prototype
- ;
- ; Text descriptions which can have a "No " prefixed to
- ; them must be no longer than text_size bytes.
- ;----------------------------------------------------------------
-
- cr = ^o15
- lf = ^o12
-
- no_owner_msg: .ascii \no owner\
- no_owner_size = . - no_owner_msg
-
- line1:
- .ascii \Terminal: \
- term_name: .ascii \ \
- .ascii \Owner process: \
- owner_msg: .ascii \ \<cr><lf> ; should be MAX_PROC_NAME or larger
-
- line2:
- .ascii \Device type \
- term_type: .ascii \ \
- .ascii \Username: \
- username_msg: .ascii \ \<cr><lf> ; should be MAX_USER_NAME or larger
-
- line3:
- spooled_msg: .ascii \ \<cr><lf>
-
- line4: .ascii <cr><lf>
-
- line5:
- .ascii \--- speed --- --- comm. line --- \
- .ascii \--- flow --- --- generic ---\<cr><lf>
-
- line6:
- .ascii \Transmit: \
- transmit_val: .ascii \ \
- transmit_size = . - transmit_val
- halfduplex = . - line1
- halfduplex_msg: .ascii \Half duplex \
- hostsync = . - line1
- .ascii \Host sync \
- scope = . - line1
- scope_msg: .ascii \Scope \<cr><lf>
-
- line7:
- .ascii \Receive: \
- receive_val: .ascii \ \
- receive_size = . - receive_val
- modem = . - line1
- .ascii \Modem \
- ttsync = . - line1
- .ascii \TT sync \
- ansi = . - line1
- .ascii \ANSI CRT \<cr><lf>
-
- line8:
- autobaud = . - line1
- .ascii \Autobaud \
- dialup = . - line1
- .ascii \Dialup line \
- readsync = . - line1
- .ascii \Read sync \
- crt = . - line1
- .ascii \DEC CRT \<cr><lf>
-
- line9:
- set_speed = . - line1
- .ascii \Set speed priv \
- remote = . - line1
- .ascii \Remote \
- force_xon = . - line1
- .ascii \Force XON \
- crt2 = . - line1
- .ascii \DEC CRT2 \<cr><lf>
-
- line10:
- .ascii \ \
- hangup = . - line1
- .ascii \Hangup \
- type_ahead = . - line1
- .ascii \Type ahead \
- block = . - line1
- .ascii \Block mode \<cr><lf>
-
- line11:
- .ascii \--- bits --- \
- modhangup = . - line1
- .ascii \Modify hangup \
- altypeahd = . - line1
- .ascii \Alt. type ahead \
- edit_mode = . - line1
- .ascii \Edit mode \<cr><lf>
-
- line12:
- passall = . - line1
- passall_msg: .ascii \Passall \
- disconnect = . - line1
- .ascii \Disconnect proc \
- dma = . - line1
- .ascii \DMA \
- avo = . - line1
- .ascii \Advanced video \<cr><lf>
-
- line13:
- pasthru = . - line1
- .ascii \Pasthru \
- dsr_msg: .ascii \ \
- ri_msg: .ascii \ \
- cd_msg: .ascii \ \
- cts_msg: .ascii \ \
- srd_msg: .ascii \ \
- .ascii \CR fill: \
- cr_fill = . - line1
- cr_fill_val: .ascii \ \
- cr_fill_size = . - cr_fill_val
- printer = . - line1
- .ascii \Printer port \<cr><lf>
-
- line14:
- escape = . - line1
- .ascii \Escape \
- .ascii \ \
- .ascii \LF fill: \
- lf_fill = . - line1
- lf_fill_val: .ascii \ \
- lf_fill_size = . - lf_fill_val
- softchars = . - line1
- .ascii \Soft characters \<cr><lf>
-
- line15:
- eightbit = . - line1
- .ascii \Eightbit \
- .ascii \--- format --- \
- .ascii \ \
- sixel = . - line1
- .ascii \SIXEL graphics \<cr><lf>
-
- line16:
- fallback = . - line1
- .ascii \Fallback \
- .ascii \Width: \
- width_val: .ascii \ \
- width_size = . - width_val
- .ascii \ \
- regis = . - line1
- .ascii \ReGIS graphics \<cr><lf>
-
- line17:
- parity = . - line1
- parity_msg: .ascii \No Parity \
- .ascii \Page: \
- page_val: .ascii \ \
- page_size = . - page_val
- .ascii \--- user/appl --- \
- .ascii <cr><lf>
-
- line18:
- parity_err_msg: .ascii \ \
- wrap = . - line1
- .ascii \Wrap \
- broadcast = . - line1
- .ascii \Broadcast \
- .ascii <cr><lf>
-
- line19:
- .ascii \ \
- lowercase = . - line1
- .ascii \Lowercase \
- line_edit = . - line1
- .ascii \Line editing \
- .ascii <cr><lf>
-
- line20:
- .ascii \ \
- tab = . - line1
- .ascii \Tab \
- insert_edit = . - line1
- insert_edit_msg:.ascii \Insert editing \
- .ascii <cr><lf>
-
- line21:
- .ascii \--- security --- \
- form = . - line1
- .ascii \Form \
- keypad = . - line1
- keypad_msg: .ascii \Application keypad \
- .ascii <cr><lf>
-
- line22:
- secure = . - line1
- .ascii \Secure server \
- echo = . - line1
- .ascii \Echo \
- mbxdisable = . - line1
- mbxdisable_msg: .ascii \MBX Disable \
- .ascii <cr><lf>
-
- line23:
- syspassword = . - line1
- .ascii \Sys. password \
- local_echo = . - line1
- .ascii \Local echo \
- nobrdcstmbx = . - line1
- .ascii \Broadcast MBX \
-
- .ascii <cr>
- screen_size = . - line1
- .even
-
-
- ;----------------------------------------------------------------
- ; Alternate descriptions for special characteristics
- ;----------------------------------------------------------------
- interactive: .ascii \Interactive\ ; overwrites "passall"
- interactive_size = . - interactive
-
- fullduplex: .ascii \Full duplex\ ; overwrites "half duplex"
- fullduplex_size = . - fullduplex
-
- overstrike: .ascii \Overstrike editing\ ; overwrites "insert editing"
- overstrike_size = . - overstrike
-
- numeric: .ascii \Numeric keypad \ ; overwrites "application keypad"
- numeric_size = . - numeric
-
- mbxenable: .ascii \MBX Enable \ ; overwrites "MBX disable"
- mbxenable_size = . - mbxenable
-
- dismiss: .ascii \Dismiss parity errs\
- dismiss_size = . - dismiss
-
- terminate: .ascii \Terminate on errors\
- terminate_size = . - terminate
-
- hardcopy: .ascii \Hardcopy\
- hardcopy_size = . - hardcopy
-
- ; the even and odd parity messages overwrite "No Parity"
-
- evenparity: .ascii \Even Parity\
- evenparity_size = . - evenparity
-
- oddparity: .ascii \Odd Parity\
- oddparity_size = . - oddparity
-
- spooled: .ascii \Spooled to \
- spooldev_msg: .ascii \ \
- spooled_size = . - spooled
-
- dsr: .ascii \DSR \
- ri: .ascii \RI \
- cd: .ascii \CD \
- cts: .ascii \CTS \
- srd: .ascii \SRD \
-
-
- ;----------------------------------------------------------------
- ; offset_tables: o_basic, o_extend
- ;
- ; Entries in these tables are ordered by the TT$V and TT2$V
- ; bit numbers which represent terminal characteristics as
- ; known by VMS. The contents of an entry is the offset
- ; into the screen display for that characteristic.
- ;----------------------------------------------------------------
-
- UNUSED = 0 ; also flagged in the *_special masks
-
- o_basic: .word passall
- .word echo
- .word type_ahead
- .word escape
- .word hostsync
- .word ttsync
- .word UNUSED ; script
- .word lowercase
- .word tab
- .word wrap
- .word cr_fill
- .word lf_fill
- .word scope
- .word remote
- .word UNUSED ; holdscreen
- .word eightbit
- .word mbxdisable
- .word broadcast
- .word readsync
- .word form
- .word halfduplex
- .word modem
-
- basic_count = < . - o_basic > / 2 ; count of basic attributes
-
-
- o_extend: .word local_echo
- .word autobaud
- .word hangup
- .word modhangup
- .word nobrdcstmbx
- .word force_xon
- .word dma
- .word altypeahd
- .word set_speed
- .word UNUSED ; dclmailbx
- .word UNUSED ; dcloutbnd
- .word UNUSED ; dclctrlc
- .word line_edit
- .word insert_edit
- .word fallback
- .word dialup
- .word secure
- .word disconnect
- .word pasthru
- .word syspassword
- .word sixel
- .word softchars
- .word printer
- .word keypad
- .word ansi
- .word regis
- .word block
- .word avo
- .word edit_mode
- .word crt
- .word crt2
-
- extend_count = < . - o_extend > / 2 ; count of extended attributes
-
-
- ;----------------------------------------------------------------
- ; bit masks: basic_special, basic_attr
- ; extend_special, extend_attr
- ;
- ; Entries in these masks are ordered by the TT$V and TT2$V
- ; bit numbers which represent terminal characteristics as
- ; known by VMS. The contents of an entry determines how
- ; the state of a bit affects the display.
- ;
- ; For basic_special and extend_special:
- ;
- ; 0 = not special
- ; 1 = special display handling required
- ;
- ; For basic_attr and extend_attr:
- ;
- ; 1 = "normal attribute" where the characteristic
- ; bit means:
- ; 0 => put in "No "
- ; 1 => leave alone
- ;
- ; 0 = "inverted attribute" where the characteristic
- ; bit means:
- ; 0 => leave alone
- ; 1 => put in "No "
- ;
- ;----------------------------------------------------------------
-
-
- basic_special: .long ^b0100010101110001000001
- basic_attr: .long ^b1111011111111111111001
-
- extend_special: .long ^b0000000100000000010111000000000
- extend_attr: .long ^b1111111111111111111111111111111
-
-
- ;----------------------------------------------------------------
- ; Data structures for $FAO
- ;----------------------------------------------------------------
- transmit_fmt: .ascid \!SL\
- receive_fmt: .ascid \!SL\
- width_fmt: .ascid \!SW\
- page_fmt: .ascid \!SB\
- cr_fill_fmt: .ascid \!SB\
- lf_fill_fmt: .ascid \!SB\
-
- transmit_dsc: string_dsc transmit_val, transmit_size
- receive_dsc: string_dsc receive_val, receive_size
- width_dsc: string_dsc width_val, width_size
- page_dsc: string_dsc page_val, page_size
- cr_fill_dsc: string_dsc cr_fill_val, cr_fill_size
- lf_fill_dsc: string_dsc lf_fill_val, lf_fill_size
-
-
- ;----------------------------------------------------------------
- ; Baud rate table -- ordered by TT$C_BAUD_*
- ;----------------------------------------------------------------
-
- baudrate: .long 0, 50, 75, 110, 134, 150, 300, 600, 1200, 1800, 2000, 2400
- .long 3600, 4800, 7200, 9600, 19200, 38400
-
-
- ;----------------------------------------------------------------
- ; Terminal type is indicated by a terminal-id number.
- ; These numbers have a large range and are not contiguous,
- ; so we have a macro to generate entries in the terminal
- ; type lookup table.
- ;----------------------------------------------------------------
-
- .macro term_entry term_id,term_name,?l1,?l2
- .byte term_id
- .byte l2 - l1 ; indicates length of name
- l1: .ascii \term_name\
- l2:
- .endm
-
- terminal_list:
-
- term_entry 1,VT05
- term_entry 2,VK100
- term_entry 3,VT173
- term_entry 10,TEK401x
- term_entry 16,FT1
- term_entry 17,FT2
- term_entry 18,FT3
- term_entry 19,FT4
- term_entry 20,FT5
- term_entry 21,FT6
- term_entry 22,FT7
- term_entry 23,FT8
- term_entry 32,LA36
- term_entry 33,LA120
- term_entry 34,LA34
- term_entry 35,LA38
- term_entry 36,LA12
- term_entry 37,LA100
- term_entry 38,LQP02
- term_entry 39,LA84
- term_entry 40,LA210
- term_entry 41,LN03
- term_entry 42,LN01K
- term_entry 43,LA80
- term_entry 64,VT52
- term_entry 65,VT55
- term_entry 96,VT100
- term_entry 97,VT101
- term_entry 98,VT102
- term_entry 99,VT105
- term_entry 100,VT125
- term_entry 101,VT131
- term_entry 102,VT132
- term_entry 103,VT80
- term_entry 110,<VT200 Series>
- term_entry 111,<Pro Series>
- term_entry 0,Unknown
-
- .end TERM
-
- ;----------------- end of posting ------------------------
-