home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
ENTERPRS
/
CPM
/
UTILS
/
S
/
V.LBR
/
V.DOC
< prev
Wrap
Text File
|
1986-04-03
|
7KB
|
266 lines
v.doc vers. 0.6 4/12/90 Bridger Mitchell (Plu*Perfect Systems)
V -- quad-directional Z-System file viewer
V now supports multiple files, with usage:
V filespec1 ... filespecN
A filespec is an ambiguous filename and type, preceded by an optional
DU: or DIR: specification. Some valid filespecs are:
*.DOC
WORK:MENU??.TXT
A15:*.*
FOO.BAR
V maintains a ring of all matching files. ^X will move to the
next file; ^R moves back to the previous file. ^C exits the
program. Because the ring is virtual, V should work on any size
disk, regardless of the number of directory entries. (These and all
other control commands may be rebound; see below).
A list of excluded filespecs is tested; files such as COM, REL, LBR,
!!!TIME&.DAT, etc. will be skipped automatically. You can extend this
table by patching near the start of V.
V uses an in-memory cache to make the most recently read sectors
of a file available for re-viewing without additional disk reads.
This allows reverse viewing of crunched files, up to the limit
of available memory. If, when going in reverse, the cache is
exhausted, V will automatically restart the uncrunching process
from the beginning of the file and display the first lines.
Viewing of adjacent lines/screens is rapid for both ascii and
crunched files. Going to the End is also quick in ascii, but
results in some delay uncrunching a large file -- the entire
file must be uncrunched first.
TERMCAP requirements
The termcap requirement is the addition of three strings to the
standard Z-System termcap. These definitions are already setup
in files of type ".NZT" (New Z-System Termcap), available on
major Z-Nodes. If your terminal isn't already there, you can add
definitions following the initialization and deinitialization
strings.
NOTE: This uses the STANDARD termcap specification (not the
one in experimental use in early 1989 by J. W. Wright).
Here's an example for the Wyse-50.
DEFB 'TERMINALNAME' ; 13 bytes
db 0 ; reserved
[ ... next part of termcap omitted...]
DEFB ESC,')',0 ; SO - Standout on string
DEFB ESC,'(',0 ; SE - Standout end string
DEFB 0 ; TI - Terminal init string
DEFB 0 ; TE - Terminal de-init string
;
; 3 extensions to standard TCAP follow immediately after "TE"
;
DEFB ESC,'R',0 ; DL - Line Delete
DEFB ESC,'E',0 ; IL - Line Insert
DEFB ESC,'Y',0 ; CD - Clear to End of Screen String
;
; ... the rest of the termcap ...
CONFIGURATION
You can change the keys that control V by assembling a modified
version of the code below and
;
; offsets from 100h for configuration areas
;
CONFIGBUF equ 20h
HELPBUF equ 80h
EXCLUDEBUF equ 200h
SPACE equ 20h
TAB equ 09h
CR equ 0dh
LF equ 0ah
; 1. These are the bindings that control the V screen. In addition
; to the one to three keys for each command, V automatically
; picks up the cursor-control keys ("arrow" keys) from the
; Z-System tcap and uses them, in addition to the bindings in
; these tables.
;
; 2. To change the bindings, set the equates for your preferences,
; reassemble this file to HEX, and overlay onto V.COM.
;
; 3. Enter exactly 3 bytes for each binding. Use uppercase for all
; keys. V automatically converts a typed lower case key to upper case.
; Use a nul to indicate the absence of a binding.
;
; 4. Edit the help screen to match your choice of bindings.
;
K_up1 equ ','
K_up2 equ 'P'-'@'
K_up3 equ 0
; and, automatically, Z3TCP's left arrow key
;
k_pgup1 equ '<'
K_pgup2 equ TAB
K_pgup3 equ 'Z'-'@'
; and, automatically, Z3TCP's left arrow key
K_dn1 equ '.'
K_dn2 equ SPACE
K_dn3 equ 'N'-'@'
; and, automatically, Z3TCP's up arrow key
K_pgdn1 equ '>'
K_pgdn2 equ CR
K_pgdn3 equ 'V'-'@'
; and, automatically, Z3TCP's down arrow key
;
K_left1 equ 'L'
K_left2 equ 'A'-'@'
K_left3 equ 0
;
K_rt1 equ 'R'
K_rt2 equ 'E'-'@'
K_rt3 equ 0
;
K_beg1 equ 'B'
K_beg2 equ 0
K_beg3 equ 0
;
K_end1 equ 'E'
K_end2 equ 0
K_end3 equ 0
;
K_goto1 equ 'G'
K_goto2 equ 'S'
K_goto3 equ 0
;
K_nxtf1 equ 'X'-'@'
K_nxtf2 equ 0
K_nxtf3 equ 0
;
K_prvf1 equ 'R'-'@'
K_prvf2 equ 0
K_prvf3 equ 0
;
K_exit1 equ 'C'-'@'
K_exit2 equ 0
K_exit3 equ 0
;
;
subttl '---------- KEY BINDINGS ----------'
;
; Each V function has three possible key values.
; V ignores case.
; If you use fewer than three keys, use nulls for the remainder.
;
;; org CONFIGBUF
;
beginconfig:
;
db '__UP:'
k.up: db K_up1,K_up2,K_up3 ; Scroll one line up
;
db 'PGUP:'
k.pgup:db K_pgup1,K_pgup2,K_pgup3 ; Scroll one page (screen) up
;
db '__DN:'
k.down: db K_dn1,K_dn2,K_dn3 ; Scroll one line down
;
db 'PGDN:'
k.pgdown:db K_pgdn1,K_pgdn2,K_pgdn3 ; Scroll one page (screen) down
;
db 'LEFT:'
k.left: db K_left1,K_left2,K_left3 ; Scroll to left
;
db 'RGHT:'
k.right:db K_rt1,K_rt2,K_rt3 ; Scroll to right
;
db 'BEGN:'
k.begin:db K_beg1,K_beg2,K_beg3 ; Display beginning of file
;
db '_END:'
k.end: db K_end1,K_end2,K_end3 ; Display end of file
;
db 'GOTO:'
k.goto: db K_goto1,K_goto2,K_goto3 ; Goto (search) for string
;
db 'NXTF:'
k.nextfile:db K_nxtf1,K_nxtf2,K_nxtf3 ; View next file
;
db 'PRVF:'
k.prevfile:db K_prvf1,K_prvf2,K_prvf3 ; View previous file
;
db 'EXIT:'
k.exit:db K_exit1,K_exit2,K_exit3 ; Exit from V.
;
.list
configlen equ $-beginconfig
;
test0 equ HELPBUF-CONFIGBUF-configlen
ds HELPBUF-CONFIGBUF-configlen
.xlist
subttl '---------- HELP AND USAGE ----------'
;
;; org HELPBUF
;
; Edit the message to correspond to the key bindings.
;
helpmessage:
;
db 'V commands (in addition to Z-System arrow keys):',cr,lf
db lf
db '1 line down . SP ^N 1 line up , ^P',cr,lf
db '1 page down > CR ^V 1 page up < ^Z',cr,lf
db 'n pages digit n pages digit',cr,lf
db lf
db 'right R left L',cr,lf
db 'beginning B end E',cr,lf
db 'next file ^X prev. file ^R',cr,lf
db 'goto/search G exit ^C',cr,lf
db 0
;
helpmsglen equ $-helpmessage
.list
;!!! ERROR -- help message is too long.
test2 equ EXCLUDEBUF-HELPBUF-helpmsglen
ds EXCLUDEBUF-HELPBUF-helpmsglen
;
.xlist
subttl '---------- FILE EXCLUSION LIST ----------'
;
;
exclude_cnt:
db ??excnt ;; number of items in list
.xlist
exclude_tbl:
; ruler: '--11 bytes-'
db '!!!TIME&DAT'
db '????????SWP'
db '????????BIN'
db '????????C?M'
db '????????R?L'
db '????????Z?L'
db '?????????Y?'
db '????????LBR'
db '????????BSX'
db '????????RSX'
rept 5*11 ;; space for more
db 0FFh ;; list terminator
endm
??excnt equ ($-exclude_tbl)/11
db 0
;
; end vkeys.lib
1 line up