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 / SCAN22.LBR / SCAN22.PZT / SCAN22.PAT
Text File  |  1990-05-15  |  21KB  |  502 lines

  1. ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  2. ; *                                                               *
  3. ; *                           S C A N                             *
  4. ; *                                                               *
  5. ; *          A ZCPR3-Compatible Buffered Bi-directional           *
  6. ; *           Video-oriented Text File Display Utility            *
  7. ; *               For Text and Library Member Files               *
  8. ; *                                                               *
  9. ; *                     Copyright (c) 1988-90                     *
  10. ; *                              by                               *
  11. ; *                          Terry Hazen                          *
  12. ; *                     21460 Bear Creek Road                     *
  13. ; *                      Los Gatos, CA 95030                      *
  14. ; *                                                               *
  15. ; *                Voice.......... (408) 354-7188                 *
  16. ; *                Zee-Machine.... (408) 245-1420                 *
  17. ; *                Ladera Znode... (213) 670-9465                 *
  18. ; *                                                               *
  19. ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  20. ;
  21. ;
  22. ; Latest Revision
  23. ; ---------------
  24. ;
  25. ; Version 2.2 - 05/18/90   See SCAN22.HIS for revision details.
  26. ;
  27. ;================================================================
  28. ;
  29. ; Equates
  30. ;
  31. OFF     EQU     0
  32. ON      EQU     0FFh
  33.  
  34. BS      EQU     8       ; Backspace character
  35. TAB     EQU     9       ; Tab character
  36. CR      EQU     13      ; Carriage return character
  37. ESC     EQU     27      ; Escape character
  38. SPACE   EQU     32      ; Space character
  39. ;
  40. HELP    EQU     13B5h   ; Start of help screen overlay
  41.  
  42.  
  43.         ORG     010Bh   ; Start of patch area
  44. ;=================================================================
  45. ;
  46. ; SCAN has several locations near the beginning of the program
  47. ; that can be patched using DDT, DDTZ, PATCH, ZPATCH, etc, to
  48. ; alter the operation of the program to suit the user.  The
  49. ; following tables list these patch locations and their
  50. ; distribution defaults.
  51. ;
  52. ; There are also several other ways to configure SCAN.  Some of
  53. ; SCAN.COM's more common user-configurable settings may be
  54. ; changed by using ZCNFG14.COM and the configuration file
  55. ; SCAN.CFG.  The syntax is:
  56. ;
  57. ;       ZCNFG comfile[.COM]] [configfile[.CFG]]
  58. ;
  59. ; This file, SCAN.PAT, is also the source code for an overlay
  60. ; file.  It may be renamed to OVERLAY.Z80, for example, edited to
  61. ; configure your copy of SCAN22.COM the way you want it,
  62. ; assembled to OVERLAY.HEX and then overlaid on SCAN22.COM using
  63. ; MLOAD or MYLOAD:
  64. ;
  65. ;      A0>MLOAD SCAN.COM=SCAN22.COM,OVERLAY.HEX
  66. ;
  67. ; See the 'Extended Z3TCAP' section, below, for information on
  68. ; the structure of the new VLIB4D extended Z3TCAP.  TCSRC13.DOC
  69. ; contains information on using TCSRC13.COM, a utility that
  70. ; allows you to quickly and easily create commented VLIB4D
  71. ; extended Z3TCAP source code files from existing TERMNAME.Z3T
  72. ; files or from the Z3TCAP in your environment.  Such a source
  73. ; code file may then be edited to add the extended features for
  74. ; your terminal, and assembled to a COM file (renamed to a Z3T
  75. ; file.)  It may then be installed into SCAN or into your
  76. ; environment.
  77. ;
  78. ;================================================================
  79. ;
  80. ; Terminal Lines and Columns
  81. ; --------------------------
  82. ;
  83. ; SCAN provides internal locations for the number of lines and
  84. ; columns your terminal displays.  In ZCPR3 environments, SCAN
  85. ; will look first for the value in the internal location and if
  86. ; a non-zero value is found, SCAN will take that value.  If the
  87. ; internal value is zero, SCAN will take the value from the ZCPR3
  88. ; environment.  For use in non-ZCPR3 environments or to override
  89. ; the values in your ZCPR3 environment, patch these values to
  90. ; match your terminal.
  91. ;
  92. ; Since terminals and terminal setups vary widely, the new
  93. ; VLIB4D extended Z3TCAP also includes two terminal configuration
  94. ; bytes that define such things as whether the terminal is set to
  95. ; automatically wrap lines when a character is displayed in the
  96. ; last column and whether the terminal is set to automatically
  97. ; scroll the display up one line when a character is displayed in
  98. ; the last column of the last line.  The value of these bytes
  99. ; will depend not only on your type of terminal, but on how you
  100. ; have it set up.
  101. ;
  102. ; To help avoid problems with terminals doing autowrap and
  103. ; creating unwanted extra lines in the SCAN display, SCAN checks
  104. ; the second terminal configuration byte and won't place
  105. ; characters in the last column position in its displays if it
  106. ; finds that the terminal either automatically wraps or scrolls.
  107. ;
  108. ; If you use a standard Z3TCAP, for example, and it has a space
  109. ; (20h) character in the last terminal name byte (in other words,
  110. ; no terminal configuration byte), SCAN will assume that your
  111. ; terminal is set to automatically wrap and scroll, and won't use
  112. ; the last display column.  If you do want your SCAN display to
  113. ; use the last column, you can either patch the proper
  114. ; configuration byte for your terminal and setup into your Z3TCAP
  115. ; or you can just patch the internal columns byte to the number
  116. ; of your terminal columns + 1 and SCAN will use that value - 1
  117. ; as the last column in its display.
  118. ;
  119. ;     Default   Location  Purpose
  120. ;================================================================
  121. DB      0       ; 010Bh ; Number of display lines.
  122. DB      0       ; 010Ch ; Number of display columns.
  123.  
  124. ;
  125. ; Screen Overlap
  126. ; --------------
  127. ;
  128. ; You may specify the overlap, the number of lines from a
  129. ; previous screen displayed on a new screen when paging the
  130. ; display by screens.  The overlap helps you orient yourself when
  131. ; you move to a new display screen.  WordStar 3.0, for example,
  132. ; uses an overlap of 5 lines and WordStar 4.0 uses an overlap of
  133. ; 3 lines.
  134. ;
  135. ;     Default   Location  Purpose
  136. ;================================================================
  137. DB      3       ; 010Dh ; The number of lines from previous
  138.                         ; screen displayed on new screen.
  139. ;
  140. ; Display Modes
  141. ; -------------
  142. ;
  143. ; You may select the default display mode by setting either the
  144. ; WordStar or the ZCPR3 byte to ON (FFH).  Only one mode should
  145. ; be selected as the default.  If both modes are set to ON, the
  146. ; default will be the WordStar display mode.  Patch both bytes to
  147. ; OFF (00h) to select the basic vanilla display mode as the
  148. ; default.
  149. ;
  150. ;     Default   Location  Purpose
  151. ;================================================================
  152. DB      ON      ; 010Eh ; Default to WordStar display mode.
  153. DB      OFF     ; 010Fh ; Default to ZCPR3 display mode.
  154.  
  155. ;
  156. ; Found String Display Line
  157. ; -------------------------
  158. ;
  159. ; You may specify the line on which SCAN displays the search
  160. ; string when it is found.  SCAN is distributed with the WordStar
  161. ; 3.0 and 4.0 default of line 13.
  162. ;
  163. ;     Default   Location  Purpose
  164. ;================================================================
  165. DB      13      ; 0110h ; Found string displayed on line 13 (0Dh)
  166.  
  167. ;
  168. ; Wildcard String Search Character
  169. ; --------------------------------
  170. ;
  171. ; Like WordStar, SCAN recognizes a wildcard character in the
  172. ; search string, matching any single character in the text.  The
  173. ; default wildcard character is WordStar's wildcard character ^A
  174. ; (01h).  This means that you can't search for the ^A (01H)
  175. ; character in the text, which is used in some ZCPR3 files to
  176. ; turn on video highlighting.  You may patch a different wildcard
  177. ; character in the location below.  Pick a character not usually
  178. ; found in the text you normally search.  The tilde (~) character
  179. ; is one suggestion.
  180. ;
  181. ;     Default   Location  Purpose
  182. ;================================================================
  183. DB      'A'-40h ; 0111h ; Default is WordStar character (^A=01h)
  184.  
  185. ;
  186. ; Processor Speed
  187. ; ---------------
  188. ;
  189. ; To use terminals requiring terminal control sequence delays in
  190. ; non-ZCPR3 environments, you may patch the clock speed of your
  191. ; processor, in megahertz, in the location below.  If the value
  192. ; is left at 0, the default speed is assumed to be 4 MHZ.  This
  193. ; value affects only the delay timing loops.
  194. ;
  195. ;     Default   Location  Purpose
  196. ;================================================================
  197. DB      0       ; 0112h ; Processor speed (4 MHZ default).
  198.  
  199. ;
  200. ; Printer Initialization String
  201. ; -----------------------------
  202. ;
  203. ; If you wish to set your printer to a specific type face or mode
  204. ; whenever you send it text from SCAN, you may patch in a printer
  205. ; initialization sequence (6 bytes maximum).  Note that this
  206. ; sequence is sent to the printer each time printer output is
  207. ; selected.
  208. ;
  209. ;     Default   Location  Purpose
  210. ;================================================================
  211. DB  0,0,0,0,0,0 ; 0113h ; Printer initialization sequence,
  212.                         ; 6 bytes maximum.
  213. DB      0       ; 0119h ; - Termination.
  214.  
  215. ;
  216. ; Library Fence Character
  217. ; -----------------------
  218. ;
  219. ; Although not usually patched, you may also customize the
  220. ; library file display fence character.
  221. ;
  222. ;     Default   Location  Purpose
  223. ;================================================================
  224. DB      ' '     ; 01AFh ; Leading space.
  225. DB      '| '    ; 0120h ; Library display fence character
  226.                         ; and trailing space.
  227.  
  228. ;
  229. ; Extended Z3TCAP
  230. ; ---------------
  231. ;
  232. ; SCAN takes the terminal control sequences it needs from a
  233. ; Z3TCAP (Zcpr3 Terminal CAPabilities) area, located either
  234. ; internally or in the ZCPR3 environment.  SCAN first looks to
  235. ; see if the internal Z3TCAP contains a terminal definition (the
  236. ; first byte of the Z3TCAP must be a non-space (20h) character.)
  237. ; If no terminal definition is found internally, and if SCAN is
  238. ; running in a ZCPR3 environment, it looks for a terminal
  239. ; definition in the ZCPR3 Z3TCAP.  If no terminal definition is
  240. ; found, SCAN can't operate properly and will quit with an error
  241. ; message.
  242. ;
  243. ; The new VLIB4D extended ZCPR3 Z3TCAP includes provisions for
  244. ; delete line and insert line sequences as well as several other
  245. ; new terminal functions.  SCAN uses delete line and insert line
  246. ; terminal control sequences, if they are present in the current
  247. ; Z3TCAP, to help speed up screen redisplay when scrolling the
  248. ; display forward or backward one line.  If no sequences are
  249. ; found, SCAN will create the new display by refreshing the whole
  250. ; screen, which takes slightly longer.  It is not absolutely
  251. ; necessary to use an extended Z3TCAP that contains delete and
  252. ; insert line sequences, but you will get faster and more
  253. ; WordStar-like screen displays if you do.
  254. ;
  255. ; To allow SCAN to run in a non-ZCPR3 environment, the user must
  256. ; patch a Z3TCAP file (TERMNAME.Z3T) containing the control
  257. ; sequences for his terminal into SCAN at the location below.
  258. ; The utility SCANINST is provided to install a Z3TCAP from the
  259. ; menu of available terminal definitions contained in the
  260. ; standard ZCPR3 file, Z3TCAP.TCP, into SCAN's internal Z3TCAP or
  261. ; to install a specified TERMNAME.Z3T Z3TCAP file into SCAN.  See
  262. ; SCANINST.DOC for more information.
  263. ;
  264. ; If you patch all required Z3TCAP control sequences and
  265. ; parameters internally, you can use the same copy of SCAN in
  266. ; both CP/M and ZCPR3 environments, as, for example, when
  267. ; switching among a variety of different NZCOM systems, including
  268. ; a vanilla CP/M base system.
  269. ;
  270.         ORG     200h            ; Start of internal Z3TCAP
  271. ;
  272. ; The first character in the terminal name must not be a space.
  273. ;
  274. TERMNAME:
  275.         DB      '             ' ; Name of terminal (13 chars)
  276. ;
  277. GOFF:   DB      GOELD-TERMNAME  ; Graphics offset from Z3TCAP start
  278. ;
  279. ; Terminal configuration bytes B14 and B15 are defined and bits assigned
  280. ; as follows.  The remaining bits are not currently assigned.  Set these
  281. ; bits according to your terminal configuration.  SCAN only checks the
  282. ; bits marked '*', below:
  283. ;
  284. ;     * B14 b7: Z3TCAP Type.... 0 = Standard TCAP  1 = Extended TCAP
  285. ;
  286. ;       bit:    76543210
  287. B14:    DB      10000000B       ; Configuration byte B14
  288. ;
  289. ;       B15 b0: Standout....... 0 = Half-Intensity 1 = Reverse Video
  290. ;       B15 b1: Power Up Delay. 0 = None           1 = Ten-second delay
  291. ;     * B15 b2: No Auto Wrap... 0 = Auto Wrap      1 = No Auto Wrap
  292. ;     * B15 b3: No Auto Scroll. 0 = Auto Scroll    1 = No Auto Scroll
  293. ;       B15 b4: ANSI........... 0 = ASCII          1 = ANSI
  294. ;
  295. ;       bit:    76543210
  296. B15:    DB      00000000B       ; Configuration byte B15
  297. ;
  298. ; Single character arrow keys or WordStar diamond.  SCAN doesn't use
  299. ; these arrow keys.
  300. ;
  301.         DB      0               ; Cursor up
  302.         DB      0               ; Cursor down
  303.         DB      0               ; Cursor right
  304.         DB      0               ; Cursor left
  305. ;
  306. ; Delays (in ms) after sending terminal control strings
  307. ;
  308.         DB      0               ; CL delay
  309.         DB      0               ; CM delay
  310.         DB      0               ; CE delay
  311. ;
  312. ; Strings start here
  313. ;
  314. CL:     DB      0               ; Home cursor and clear screen
  315. CM:     DB      0               ; Cursor motion macro
  316. CE:     DB      0               ; Erase from cursor to end-of-line
  317. SO:     DB      0               ; Start standout mode
  318. SE:     DB      0               ; End standout mode
  319. TI:     DB      0               ; Terminal initialization
  320. TE:     DB      0               ; Terminal deinitialization
  321. ;
  322. ; Extensions to standard Z3TCAP
  323. ;
  324. LD:     DB      0               ; Delete line at cursor position
  325. LI:     DB      0               ; Insert line at cursor position
  326.  
  327. ;--------------------------------------------------------------------
  328. ;
  329. ; NOTE:  SCAN doesn't use any of the remaining strings or characters
  330. ; in the Z3TCAP.  They are included here for reference only.
  331. ;
  332. CD:     DB      0               ; Erase from cursor to end-of-screen
  333. ;
  334. ; The attribute string contains the four command characters to set
  335. ; the following four attributes for this terminal in the following
  336. ; order:        Normal, Blink, Reverse, Underscore
  337. ;
  338. SA:     DB      0               ; Set screen attributes macro
  339. AT:     DB      0               ; Attribute string
  340. RC:     DB      0               ; Read current cursor position
  341. RL:     DB      0               ; Read line until cursor
  342. ;
  343. ; Graphics TCAP area
  344. ;
  345. GOELD:  DB      0               ; Graphics On/Off delay in ms
  346. ;
  347. ; Graphics strings
  348. ;
  349. GO:     DB      0               ; Graphics mode On
  350. GE:     DB      0               ; Graphics mode Off
  351. CDO:    DB      0               ; Cursor Off
  352. CDE:    DB      0               ; Cursor On
  353. ;
  354. ; Graphics characters
  355. ;
  356. GULC:   DB      0               ; Upper left corner
  357. GURC:   DB      0               ; Upper right corner
  358. GLLC:   DB      0               ; Lower left corner
  359. GLRC:   DB      0               ; Lower right corner
  360. GHL:    DB      0               ; Horizontal line
  361. GVL:    DB      0               ; Vertical line
  362. GFB:    DB      0               ; Full block
  363. GHB:    DB      0               ; Hashed block
  364. GUI:    DB      0               ; Upper intersect
  365. GLI:    DB      0               ; Lower intersect
  366. GIS:    DB      0               ; Mid intersect
  367. GRTI:   DB      0               ; Right intersect
  368. GLTI:   DB      0               ; Left intersect
  369. ;
  370. ;  Fill remaining space with zeros
  371. ;
  372.          REPT   128-($-TERMNAME)
  373.         DB      0
  374.          ENDM
  375.  
  376. ;
  377. ; Command Customization
  378. ; ---------------------
  379. ;
  380. ; SCAN supports the ZPATCH commands 'T'=top of file, 'B'=bottom
  381. ; of file, '>'=forward one page and '<'=back one page, as
  382. ; well as the extensions '.'=forward one line and ','=back one
  383. ; line as an alternate command set.
  384. ;
  385. ; For users prefering the BGii TYPE command set, the library
  386. ; SCAN22BG.LBR contains SCAN22BG.COM and SCAN22BG.Z80 (an overlay
  387. ; file) that modify SCAN to make SCAN's alternate commands more
  388. ; BGii-compatible.
  389. ;
  390. ; For those users who hate WordStar commands and want to use a
  391. ; different command set, a limited degree of command
  392. ; customization is provided.  Many WordStar commands are two-
  393. ; character commands and not easily changed to one-character
  394. ; commands, so command customization patching is limited to
  395. ; several of the one-character commands.  For example, SCAN uses
  396. ; <RET> to move the display ahead one line and SPACE to move the
  397. ; display ahead one page (for easier 'tapping' when casually
  398. ; viewing files.)  Some users, however, may prefer to reverse
  399. ; these commands and use <RET> to move ahead one page and SPACE
  400. ; to move ahead one line.
  401. ;
  402. ; SCAN automatically capitalizes command characters when they are
  403. ; entered.  If entered commands are characters between A and Z,
  404. ; they are also made into control characters by subtracting 40h
  405. ; from them ('A'-40h = 01h, 'Z'-40h = 1Ah.)  Therefore, all
  406. ; letter commands patched at the locations below must be patched
  407. ; as the capital letter - 40h.  All other command characters are
  408. ; used exactly as entered.
  409. ;
  410. ; When SCAN gets a command, it tries to match it with the command
  411. ; list starting at 280h.  If you change a command to one that
  412. ; appears later in the list, the later use of the command will be
  413. ; automatically preempted, as the command search will end with
  414. ; the first match.  For example, using TAB to back up one page
  415. ; (at 284h) will automatically preempt its original use to scroll
  416. ; the screen right (at 28Ah).  Since a command letter may be
  417. ; entered with or without the control key being pressed, patching
  418. ; a command to 'E'-40h (^E or 05h) means, for example, that
  419. ; entering e, E or ^E gives the same result.
  420. ;
  421. ; To keep the size of SCAN.COM below 6k, the commands below
  422. ; marked '(alternate)' do not appear in the HELP screen command
  423. ; summary.  Note that any changed commands will not be
  424. ; automatically reflected in the SCAN HELP screen.  However, the
  425. ; HELP screen may also be patched to match your new configuration
  426. ; (see the section on the HELP screen, below.)
  427. ;
  428. ;     Default   Location  Purpose
  429. ;================================================================
  430. DB      'U'-40h ; 0280  ; Cancel commands
  431.  
  432. DB      'T'-40h ; 0281h ; Top of file (alternate)
  433. DB      'B'-40h ; 0282h ; Bottom of file (alternate)
  434.  
  435. DB      'R'-40h ; 0283h ; Up (back) one page
  436. DB      '<'     ; 0284h ; Up (back) one page (alternate)
  437.  
  438. DB      ','     ; 0285h ; Up (back) one line (alternate)
  439. DB      'W'-40h ; 0286h ; Up (back) one line
  440. DB      'E'-40h ; 0287h ; Up (back) one line (alternate)
  441.  
  442. DB      'S'-40h ; 0288h ; Scroll display left
  443. DB      BS      ; 0289h ; Scroll display left (alternate)
  444.  
  445. DB      'D'-40h ; 028Ah ; Scroll display right
  446. DB      TAB     ; 028Bh ; Scroll display right (alternate)
  447.  
  448. DB      'Z'-40h ; 028Ch ; Down (forward) one line
  449. DB      'X'-40h ; 028Dh ; Down (forward) one line (alternate)
  450. DB      CR      ; 028Eh ; Down (forward) one line (alternate)
  451. DB      '.'     ; 028Fh ; Down (forward) one line (alternate)
  452.  
  453. DB      '>'     ; 0290h ; Down (forward) one page (alternate
  454. DB      'C'-40h ; 0291h ; Down (forward) one page
  455. DB      SPACE   ; 0292h ; Down (forward) one page (alternate)
  456.  
  457. DB      ESC     ; 0293h ; Exit
  458.  
  459. DB      'F'-40h ; 0294h ; Find string (alternate)
  460. DB      'L'-40h ; 0295h ; Find again (alternate)
  461.  
  462. DB      'P'-40h ; 0296h ; Printer toggle
  463. DB      'V'-40h ; 0297h ; Video mode toggle (alternate)
  464.  
  465.  
  466.       ORG     HELP
  467. ;
  468. ; Excerpt from Command Menu Help Screen
  469. ; -------------------------------------
  470. ;
  471. ; Due to the order of display, the screen segments below may not
  472. ; seem to be in the order you may expect to see them.  When
  473. ; modifying the HELP screen, you must not add or subtract any
  474. ; characters.  Work within the given quotes only.
  475. ;
  476.         DB      '^QR -- Start of File',0,7,41
  477.         DB      '^QF -- Find String',0,8,10
  478.         DB      '^R -- Up One Screen',0,8,42
  479.         DB      '^L -- Find Again',0,9,10
  480.         DB      '^W -- Up One Line',0,9,42
  481.         DB      '^U -- Cancel Find',0,11,10
  482.         DB      '^S <--L Display R--> ^D',0
  483.  
  484.         ORG     HELP+0B3h
  485.         DB      '^Z -- Down One Line',0,13,42
  486.         DB      '^P -- Printer',0,14,10
  487.         DB      '^C -- Down One Screen',0,14,41
  488.         DB      '^KW -- File Output',0,15,9
  489.         DB      '^QC -- End of File',0,15,41
  490.         DB      '^OD -- Video Mode',0,16,43
  491.         DB      '/ -- Help/Text',0
  492.  
  493.         ORG     HELP+0140h
  494.         DB      '^KR -- Read New File',0,19,8
  495.         DB      '^K0-9 - Set Marker',0,19,41
  496.         DB      '^KD,^KQ -- EXIT',0,20,8
  497.         DB      '^Q0-9 - Go to Marker',0,20,41
  498.         DB      'ESC,^KX -- EXIT',0
  499.  
  500. ;================================================================
  501.         END     ; Patch area
  502.