home *** CD-ROM | disk | FTP | other *** search
/ Computerspiele Selbermachen / computerspieleselbermachen.iso / pv3d / list.asm < prev    next >
Assembly Source File  |  1993-06-13  |  37KB  |  1,043 lines

  1.         Page    80,132
  2.         Title   LIST --- Display contents of ASCII file
  3.  
  4.         Comment |
  5.  
  6. Command LIST
  7. ----------------
  8.  
  9.  Purpose:  To display the contents of an ASCII file, line by
  10.            line, with operator positioning commands.
  11.  
  12.  Format:   LIST  [d:][path]filename[.ext]
  13.  
  14.  Remarks:  An ASCII file of any size may be listed.
  15.  
  16.         On the COMMAND line, enter a letter or control key:-
  17.  
  18.         Letter(s)       Control key     Function
  19.         -----------     ------------    ------------------------
  20.                         Enter           continue to next page
  21.         Q, X            ESCape          terminate and exit to DOS
  22.         T               HOME            restart from first block (top)
  23.         B               END             skip to end of file (bottom)
  24.         D               PgDn            scroll down one page
  25.         U               PgUp            scroll up one page
  26.         H or ?          F1              list commands (HELP)
  27.         L               left arrow      scroll left 20 columns
  28.         R               right arrow     scroll right 20 columns
  29.         P               up arrow        up one (previous) line
  30.         N               down arrow      down one (next) line
  31.  
  32.         /text                           find 'text'
  33.         A               F3              find next occurance of 'text'
  34.  
  35.                         ctl-HOME        restart from CURRENT block
  36.                         ctl-PgUp        restart from first block (TOP)
  37.                         ctl-PgDn        skip to end of file (BOTTOM)
  38.                         ctl-left-arrow  reset scroll to column 1
  39.  
  40.                         F1              Help
  41.                         F3              Find next
  42.                         F10             Exit
  43.         ALT S                           Strip/Don't strip MSBit             -DS
  44.         ALT C                           Display/Don't display chars 0-31    -DS
  45.  
  46.  Restrictions:
  47.         All positioning is relative to the current block in
  48.         storage. The size of the block depends on the amount of
  49.         memory available, up to 64K.
  50.  
  51.         The maximum record length currently allowed is 255.
  52.  
  53.         Logical records (ending in LF and/or CR) are placed
  54.         into the DOS screen buffer - mono or color display.
  55.         (patched, prior version didn't accept records ending in CR only)    -DS
  56.  
  57.         PC-DOS Version 2.0 or later is required.
  58.  
  59.         ANSI.SYS is NOT required.
  60.  
  61.  Scanning for text:
  62.         To scan for a character string, type a slash (/)
  63.         followed by one or more (up to 32) characters. The
  64.         scan text, but not the slash, is displayed on the
  65.         command line. The entire file, from the current line,
  66.         is scanned.
  67.  
  68.         If the text is found, the line containing it is displayed
  69.         as a blinking line.
  70.  
  71.         If the text is NOT found, an error message is displayed
  72.         and the display remains unchanged.
  73.  
  74.  Screen attributes:
  75.         There are three classes of attributes used. One for
  76.         normal display lines - lines 2 to 24, another for
  77.         special lines - lines 1 and 25, and a third for the
  78.         background color.
  79.  
  80.         These attributes may be changed by using DEBUG:
  81.  
  82.          at offset 11C = 09     ;special lines, hi-lighted or lt.blue
  83.          at offset 11D = 02     ;normal lines, green
  84.          at offset 11E = 00     ;background, black
  85.  
  86.         If these values don't match, you have a different version.
  87.         ----------------------------------------------------------
  88.  
  89.         Written by Vernon Buerg for the IBM PC using DOS 2.0,
  90.         and is supplied for public domain use. Not for sale or hire.
  91.  
  92.         Commands ALT S and ALT C added by David Schwartz, Jan. 1985     -DS
  93.         Force ASCII 8 BIT by Default By Lecointe Ludovic Juin 1993      -LL
  94.         Change: non-displayed control characters no longer occupy a     -DS
  95.                 screen display space.                                   -DS
  96.  
  97.         Version 6.0, Jan. 23, 1985 ( Version 1.5, June 2, 1984)         -DS
  98. |
  99.         Page
  100.  
  101. Bios    Segment At 40h                  ;DOS data area
  102.         Db      16 Dup (?)
  103. Flag    Dw      ?                       ;Hardware features
  104.         Db      56 Dup (?)
  105. Cols    Dw      ?                       ;Columns on screen
  106.         Db      23 Dup (?)
  107. A6845   Dw      ?                       ;Base addr for active card
  108. Bios    Ends
  109.  
  110.  
  111. Cseg    Segment Para Public 'CODE'
  112.         Assume  CS:Cseg,DS:Cseg,ES:Nothing
  113.         Org     100h
  114. List    Proc    Far
  115.         Mov     DX,Offset Stackx        ;Local stack
  116.         Mov     SP,DX
  117.         Push    DS                      ;Standard linkage
  118.         Xor     AX,AX                   ; for DOS return
  119.         Push    AX
  120.         Mov     AH,30h                  ;Check for
  121.         Int     21h                     ; DOS 2.0 or later
  122.         Cmp     AL,2
  123.         Jb      TooBad
  124.         Jmp     Start
  125.  
  126. TooBad: Mov     DX,Offset Sorry         ;Say Version 2 required
  127.         Mov     AH,9
  128.         Int     21h
  129.         Ret
  130.         Page
  131. ;       Constants and work areas
  132.  
  133. Special Db      09h                     ;Attribute for attention
  134. Normal  Db      02h                     ;Normal display attribute
  135. Foregrd Db      07h                     ;Fill attribute
  136. Blink   Equ     0Fh                     ;Hilite for FIND (143h blinks)
  137.  
  138. CR      Equ     0Dh
  139. LF      Equ     0Ah
  140. EOF     Equ     1Ah
  141. Eor     Equ     1                       ;End-of-record
  142. Nodata  Equ     2                       ;null record
  143.  
  144. Crt_Col Dw      0                       ;Columns for display monitor
  145. Crt_Buf Dw      0                       ;Addr of display buffer
  146. Crt_Prt Dw      0                       ;Addr of display port
  147.  
  148. Index   Dw      0                       ;Current record address
  149. Reclen  Dw      0                       ; length
  150. Row     Db      2                       ; display row
  151. Col     Db      1                       ; display column
  152. Attr    Db      02h                     ; screen attribute
  153. Blknum  Db      0                       ; block number
  154. Scroll  Dw      0                       ;Scroll left/right amount
  155. First   Dw      0                       ;Ptr to top line on screen
  156. Current Dw      0                       ;Ptr to top after UP one
  157. Last    Dw      0                       ;Ptr to last record
  158.  
  159. Recaddr Dw      0                       ;addr of i/o buffer
  160. Handle  Dw      0                       ;File handle from open
  161. Psize   Dw      16                      ;Size of a paragraph
  162. Blksize Dw      0                       ;File read size
  163.  
  164. Switch1 Db      0
  165. Switch2 Db      0
  166. Numlf   Db      1                       ;line feed count
  167. Numcr   Db      0                       ;C/R count
  168.  
  169. ;char_msk  db     07fh                  ; character mask (7Fh or FFh)        -DS
  170. char_msk  db     0ffh                  ; character mask (7Fh or FFh)        -LL
  171. min_disp  db     ' '                   ;lowest ord char to display(0 or ' ')-DS
  172.  
  173. TextMax Db      32                      ;Keyboard buffer
  174. TextLen Db      0
  175. TextBuf Db      32 Dup (0)              ;Scan text
  176.  
  177. Prompt  Db      'Command:'
  178. Spaces  Db      32 Dup (32)             ;Scan text entered
  179.         Db      'Keys: PgUp PgDn Arrows ESC=exit ?=Help '
  180. Pr_Len  Equ     This Byte - Prompt
  181.  
  182. TextMsg Db      '*** Text not found ***'
  183. EofMsg  Db      '   *** End-of-file ***'
  184. EofLen  Equ     This Byte - EofMsg
  185.  
  186. Work    Db      'LIST '                 ;current logical record             -DS
  187. Keyin   Db      64                      ;keyboard buffer size
  188. Keyout  Db      0                       ; and length read
  189. Filenm  Db      76 Dup (0)              ;d:path\filename.ext
  190.  
  191. Askfile Db      13,10,'Enter filename: $'
  192. Openmsg Db      '  Open failed, return code='
  193. Opencod Dw      '00'
  194.         Db      '$'
  195. Code2   Db      'File not found $'
  196. Code3   Db      'Path not found $'
  197. Code4   Db      'Too many files $'
  198. Code5   Db      'Access denied  $'
  199. Sorry   Db      Cr,Lf,'Sorry, DOS 2.0 or later required',Cr,Lf,'$'
  200.  
  201.         Org     offset Work+256
  202. Workx   Equ     $-Work
  203. Stack   Db      6