home *** CD-ROM | disk | FTP | other *** search
- Name trunc
- Title
- page ,132
- comment /
-
- This program is a filter that reads a file and truncates each
- line at the character on the parmline or the eol char <CR>.
- If there is not parameter lines will be truncated at the first
- space (which includes leading spaces as well.)
-
- /
- ;===================================================================
- code segment public
- ;===================================================================
- ;
- ; command line is at 80h of psp - first byte is length
- ;
- org 80h
- parmsize db ?
- parm db 7fh dup (?)
- ;
- ; .com starts at 100h - but must jump around any data area
- ;
- org 100h ; com file starts here
- assume cs:code,ds:code,es:code
- trunc:
- jmp clear
- ;===================================================================
- ;
- ; data area for .com programs
- ; Uncomment (**) statements and comment (&&) statements
- ; if you need two different buffers.
- ;
- inchar db ?
- ;
- ;===================================================================
- clear:
- ;
- ; start of actual code is here (clear)
- ;
- ;
- ; Read a character. If it compares to the current character of the
- ; parmline, loop through the end of the line (CR/LF).
- ;
- ; Check parameter line for a character. If none, insert a space.
- ;
- cmp parmsize,2h ; if no characters, insert a space.
- jge parmok
- mov parm+1,' ' ; tack on the space
-
- ; These two i/o parameters are constants.
- ;
- parmok:
- lea dx,inchar ; offset of inchar
- mov cx,1h ; get 1 character
- again:
- ;
- ; read a character
- ;
- xor bx,bx ; zero is handle of standard input
- lea dx,inchar ; offset of inchar
- mov ah,3fh ; read a file/device function
- int 21h ; invoke the function
- ;
- ; if carry set of ax=0 exit
- ;
- jc oops ; i/o error
- and ax,ax ; set flags
- jz oops ; eof
- ;
- ; compare character against parmline.
- ;
- mov al,parm+1 ; load character
- cmp al,inchar
- jne output ; if characters don't match, output
- ;
- ; Character matched - now read characters until <cr> is seen.
- ;
- skip:
- xor bx,bx ; zero is handle of standard input
- mov cx,1h ; get 1 character
- mov ah,3fh ; read a file/device function
- int 21h ; invoke the function
- ;
- ; if carry set of ax=0 exit
- ;
- jc oops ; i/o error
- and ax,ax ; set flags
- jz oops ; eof
- ;
- ; look for <cr>
- ;
- cmp inchar,0dh ; if inchar is <cr>, start i/o again.
- jne skip ; otherwise skip it.
- output:
- mov bx,1h ; standard output handle
- mov ah,40h ; dx still points at inchar
- int 21h ; call dos output function
- jmp again ; repeat cycle
- oops:
- int 20h ; return to dos
- code ends
- end trunc