home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-12-28 | 50.7 KB | 2,644 lines |
- Newsgroups: alt.sources
- From: nelson@image.soe.clarkson.edu (Russ Nelson)
- Subject: showfc11, a face file viewer for the PC, version 1.1
- Message-ID: <1990Oct7.022155.13479@news.clarkson.edu>
- Date: Sun, 7 Oct 90 02:21:55 GMT
-
- Note that EGA or VGA is required.
- Note that showface.com is uuencoded.
-
- #!/bin/sh
- # shar: Shell Archiver (v1.22)
- #
- # Run the following text with /bin/sh to create:
- # COPYING
- # README
- # chrout.asm
- # decout.asm
- # digout.asm
- # getdig.asm
- # getnum.asm
- # pixel.asm
- # showface.asm
- # showface.com
- # skipblk.asm
- #
- echo "x - extracting COPYING (Text)"
- sed 's/^X//' << 'SHAR_EOF' > COPYING &&
- XRussell Nelson, Clarkson University.
- XCopyright, 1989, 1990, Russell Nelson
- X
- XThis program is free software; you can redistribute it and/or modify
- Xit under the terms of the GNU General Public License as published by
- Xthe Free Software Foundation, version 1.
- X
- XThis program is distributed in the hope that it will be useful,
- Xbut WITHOUT ANY WARRANTY; without even the implied warranty of
- XMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- XGNU General Public License for more details.
- X
- XYou are assumed to be able to find a copy of the GNU General Public
- XLicense; if not, write to the Free Software Foundation, Inc., 675
- XMass Ave, Cambridge, MA 02139, USA.
- X
- SHAR_EOF
- chmod 0644 COPYING || echo "restore of COPYING fails"
- echo "x - extracting README (Text)"
- sed 's/^X//' << 'SHAR_EOF' > README &&
- XThis is the readme file for showface, a PC program for viewing
- XFaceSaver(tm) format files as found on uunet.uu.net. It requires
- Xan EGA or VGA.
- X
- XThere is no documentation -- showface does what you expect. If you try
- Xsomething, and it doesn't work the way you would expect, send me mail
- X<nelson@sun.soe.clarkson.edu>.
- X
- XVersion 1.0: initial release
- X
- XVersion 1.1: split out graphics code into pixel.asm, added code to deal
- Xwith newline terminated files, added code to require presence of a
- XPicData header line, fixed a bug that caused only the first file to be
- Xdisplayed when using an EGA.
- X
- X
- XFaceSaver is a trademark of Metron Computerware, Ltd.
- SHAR_EOF
- chmod 0644 README || echo "restore of README fails"
- echo "x - extracting chrout.asm (Text)"
- sed 's/^X//' << 'SHAR_EOF' > chrout.asm &&
- X;put into the public domain by Russell Nelson, nelson@clutx.clarkson.edu
- X
- X public chrout
- Xchrout:
- X push ax ;print the char in al.
- X push dx
- X mov dl,al
- X mov ah,2
- X int 21h
- X pop dx
- X pop ax
- X ret
- SHAR_EOF
- chmod 0644 chrout.asm || echo "restore of chrout.asm fails"
- echo "x - extracting decout.asm (Text)"
- sed 's/^X//' << 'SHAR_EOF' > decout.asm &&
- X;put into the public domain by Russell Nelson, nelson@clutx.clarkson.edu
- X
- X public decout
- Xdecout:
- X mov si,ax ;get the number where we want it.
- X mov di,dx
- X or ax,dx ;is the number zero?
- X jne decout_nonzero
- X mov al,'0' ;yes - easier to just print it, than
- X jmp chrout ; to eliminate all but the last zero.
- Xdecout_nonzero:
- X
- X xor ax,ax ;start with all zeroes in al,bx,bp
- X mov bx,ax
- X mov bp,ax
- X
- X mov cx,32 ;32 bits in two 16 bit registers.
- Xdecout_1:
- X shl si,1
- X rcl di,1
- X xchg bp,ax
- X call addbit
- X xchg bp,ax
- X xchg bx,ax
- X call addbit
- X xchg bx,ax
- X adc al,al
- X daa
- X loop decout_1
- X
- X mov cl,'0' ;prepare to eliminate leading zeroes.
- X call byteout ;output the first two.
- X mov ax,bx ;output the next four
- X call wordout ;output the next four
- X mov ax,bp
- X jmp wordout
- X
- Xaddbit: adc al,al
- X daa
- X xchg al,ah
- X adc al,al
- X daa
- X xchg al,ah
- X ret
- X
- SHAR_EOF
- chmod 0644 decout.asm || echo "restore of decout.asm fails"
- echo "x - extracting digout.asm (Text)"
- sed 's/^X//' << 'SHAR_EOF' > digout.asm &&
- X;put into the public domain by Russell Nelson, nelson@clutx.clarkson.edu
- X
- X public dwordout, wordout, byteout, digout
- Xdwordout:
- X mov cl,'0' ;prepare to eliminate leading zeroes.
- X xchg ax,dx ;just output 32 bits in hex.
- X call wordout ;output dx.
- X xchg ax,dx
- Xwordout:
- X push ax
- X mov al,ah
- X call byteout
- X pop ax
- Xbyteout:
- X mov ah,al
- X shr al,1
- X shr al,1
- X shr al,1
- X shr al,1
- X call digout
- X mov al,ah
- Xdigout:
- X and al,0fh
- X add al,90h ;binary digit to ascii hex digit.
- X daa
- X adc al,40h
- X daa
- X cmp al,cl ;leading zero?
- X je digout_1
- X mov cl,-1 ;no more leading zeros.
- X jmp chrout
- Xdigout_1:
- X ret
- SHAR_EOF
- chmod 0644 digout.asm || echo "restore of digout.asm fails"
- echo "x - extracting getdig.asm (Text)"
- sed 's/^X//' << 'SHAR_EOF' > getdig.asm &&
- X;put into the public domain by Russell Nelson, nelson@clutx.clarkson.edu
- X
- X public get_digit
- Xget_digit:
- X;enter with al = character
- X;return nc, al=digit, or cy if not a digit.
- X cmp al,'0' ;decimal digit?
- X jb get_digit_1 ;no.
- X cmp al,'9' ;. .?
- X ja get_digit_2 ;no.
- X sub al,'0'
- X clc
- X ret
- Xget_digit_2:
- X cmp al,'a' ;hex digit?
- X jb get_digit_3
- X cmp al,'f' ;hex digit?
- X ja get_digit_3
- X sub al,'a'-10
- X clc
- X ret
- Xget_digit_3:
- X cmp al,'A' ;hex digit?
- X jb get_digit_1
- X cmp al,'F' ;hex digit?
- X ja get_digit_1
- X sub al,'A'-10
- X clc
- X ret
- Xget_digit_1:
- X stc
- X ret
- X
- X
- SHAR_EOF
- chmod 0644 getdig.asm || echo "restore of getdig.asm fails"
- echo "x - extracting getnum.asm (Text)"
- sed 's/^X//' << 'SHAR_EOF' > getnum.asm &&
- X;put into the public domain by Russell Nelson, nelson@clutx.clarkson.edu
- X
- X public get_number
- Xget_number:
- X mov bp,10 ;we default to 10.
- X jmp short get_number_0
- X
- X public get_hex
- Xget_hex:
- X mov bp,16
- X;get a hex number, skipping leading blanks.
- X;enter with si->string of digits,
- X; di -> dword to store the number in. [di] is not modified if no
- X; digits are given, so it acts as the default.
- X;return cy if there are no digits at all.
- X;return nc, bx:cx = number, and store bx:cx at [di].
- Xget_number_0:
- X call skip_blanks
- X call get_digit ;is there really a number here?
- X jc get_number_3
- X or al,al ;Does the number begin with zero?
- X jne get_number_4 ;no.
- X mov bp,8 ;yes - they want octal.
- Xget_number_4:
- X
- X xor cx,cx ;get a hex number.
- X xor bx,bx
- Xget_number_1:
- X lodsb
- X cmp al,'x' ;did they really want hex?
- X je get_number_5 ;yes.
- X cmp al,'X' ;did they really want hex?
- X je get_number_5 ;yes.
- X call get_digit ;convert a character into an int.
- X jc get_number_2 ;not a digit (neither hex nor dec).
- X xor ah,ah
- X cmp ax,bp ;larger than our base?
- X jae get_number_2 ;yes.
- X
- X push ax ;save the new digit.
- X
- X mov ax,bp ;multiply the low word by ten.
- X mul cx
- X mov cx,ax ;keep the low word.
- X push dx ;save the high word for later.
- X mov ax,bp
- X mul bx
- X mov bx,ax ;we keep only the low word (which is our high word)
- X pop dx
- X add bx,dx ;add the high result from earlier.
- X
- X pop ax ;get the new digit back.
- X add cx,ax ;add the new digit in.
- X adc bx,0
- X jmp get_number_1
- Xget_number_5:
- X mov bp,16 ;change the base to hex.
- X jmp get_number_1
- Xget_number_2:
- X dec si
- X mov [di],cx ;store the parsed number.
- X mov [di+2],bx
- X clc
- X jmp short get_number_6
- Xget_number_3:
- X cmp al,'?' ;did they ask for the default?
- X stc
- X jne get_number_6 ;no, return cy.
- X add si,2 ;skip past the question mark.
- X mov cx,-1
- X mov bx,-1
- X jmp get_number_2 ;and return the -1.
- Xget_number_6:
- X ret
- SHAR_EOF
- chmod 0644 getnum.asm || echo "restore of getnum.asm fails"
- echo "x - extracting pixel.asm (Text)"
- sed 's/^X//' << 'SHAR_EOF' > pixel.asm &&
- X; code to do graphics at 320x200x256 on both EGAs and VGAs.
- X
- Xaddress_list label word
- X;can't change es, di, dx, or ah.
- X;al and bx will get trashed, but they need not be preserved.
- Xopen_vid dw ?
- Xmove_right dw ?
- Xmove_up dw ?
- Xmove_down dw ?
- Xset_bit dw ?
- Xclose_vid dw ?
- Xuninit_vid dw ?
- Xaddress_end label word
- X
- Xega_adrs dw init_vid_ega, open_vid_ega, move_right_ega
- X dw move_up_ega, move_down_ega, set_bit_ega, close_vid_ega
- X dw uninit_vid_ega
- X
- Xvga_adrs dw init_vid_vga, open_vid_vga, move_right_vga
- X dw move_up_vga, move_down_vga, set_bit_vga, close_vid_vga
- X dw uninit_vid_vga
- X
- X
- Xinit_vid:
- X;test for VGA.
- X mov ax,1a00h
- X int 10h
- X cmp al,1ah
- X mov si,offset vga_adrs
- X ifndef FORCE_EGA
- X je have_vga
- X endif
- X mov si,offset ega_adrs
- Xhave_vga:
- X lodsw ;get the init_vid_* routine.
- X push ds
- X pop es
- X mov di,offset address_list
- X mov cx,(offset address_end - offset address_list) / 2
- X rep movsw
- X jmp ax ;jump to the proper init_vid routine.
- X
- X
- Xinit_vid_vga:
- X mov ax,13h ;put the screen into vga mode.
- X int 10h
- X
- X call pal_save ;save the palette
- X call pal_setgrey ;set to a gray palette.
- X
- X ret
- X
- Xuninit_vid_vga:
- X call pal_restore
- X
- X mov ax,3h ;put the screen into text mode.
- X int 10h
- X
- X ret
- X
- X
- Xinit_vid_ega:
- X mov ax,10h ;put the screen into ega mode.
- X int 10h
- X
- X mov ax,1000h ;change the palette entry for 7
- X mov bx,77Q*256 + 7 ; to 77 octal.
- X int 10h
- X
- X mov ax,1000h
- X mov bx,007Q*256 + 08h
- X int 10h
- X
- X mov ax,1000h
- X mov bx,010Q*256 + 09h
- X int 10h
- X
- X mov ax,1000h
- X mov bx,020Q*256 + 0ah
- X int 10h
- X
- X mov ax,1000h
- X mov bx,030Q*256 + 0bh
- X int 10h
- X
- X mov ax,1000h
- X mov bx,040Q*256 + 0ch
- X int 10h
- X
- X mov ax,1000h
- X mov bx,050Q*256 + 0dh
- X int 10h
- X
- X mov ax,1000h
- X mov bx,060Q*256 + 0eh
- X int 10h
- X
- X mov ax,1000h
- X mov bx,070Q*256 + 0fh
- X int 10h
- X
- X ret
- X
- X
- Xuninit_vid_ega:
- X mov ax,3h ;put the screen into text mode.
- X int 10h
- X
- X ret
- X
- X
- Xpal_save:
- X;Save existing palette
- X mov ax,1017h ;get all palette registers.
- X mov bx,0 ;first palette register.
- X mov cx,256 ;read all palette registers.
- X push ds
- X pop es
- X mov dx,offset save_dacs
- X int 10h
- X
- X ret
- X
- X
- Xpal_setgrey:
- X mov di,offset gray_dacs
- X mov al,0
- Xpal_setgrey_1:
- X mov cx,3 * 256 / 64 ;3 colors, 256 grays, 64 slots.
- X rep stosb
- X
- X inc al
- X cmp al,64
- X jb pal_setgrey_1
- X
- X mov dx,offset gray_dacs
- X jmp short pal_set
- X
- Xpal_restore:
- X mov dx,offset save_dacs
- Xpal_set:
- X mov ax,1012h ;set all palette registers.
- X mov bx,0 ;first palette register.
- X mov cx,256 ;read all palette registers.
- X push ds
- X pop es
- X int 10h
- X
- X ret
- X
- X
- Xopen_vid_vga:
- X;enter with cx,dx = point on screen.
- X;exit with es:di,ah -> byte/bit on screen.
- X mov ax,0a000h
- X mov es,ax
- X mov ax,320 ;width of screen.
- X mul dx
- X add ax,cx ;add the offset in.
- X mov di,ax ;remember our pointer.
- X ret
- X
- X
- Xmove_right_vga:
- X inc di
- X ret
- X
- Xmove_up_vga:
- X sub di,320 ;width of screen.
- X ret
- X
- Xmove_down_vga:
- X add di,320 ;width of screen.
- X ret
- X
- Xset_bit_vga:
- X mov es:[di],al
- X ret
- X
- Xclose_vid_vga:
- X ret
- X
- X
- Xopen_vid_ega:
- X;enter with cx,dx = point on screen.
- X;exit with es:di,ah -> byte/bit on screen.
- X mov ax,0a000h
- X mov es,ax
- X mov ax,640/8*2 ;bytes per scan line * scan lines per pixel
- X mul dx
- X mov di,ax
- X mov ax,cx ;/8*2
- X shr ax,1
- X shr ax,1
- X add di,ax
- X
- X mov dx,03ceh ;graphics controller
- X mov ax,0205h ;write mode 2.
- X out dx,al
- X inc dx
- X mov al,ah
- X out dx,al
- X dec dx
- X mov al,08h ;select bitmap register.
- X out dx,al
- X inc dx
- X
- X shl cx,1 ;compute the bit.
- X and cl,7
- X mov ah,80h
- X shr ah,cl
- X ret
- X
- X
- Xmove_right_ega:
- X shr ah,1 ;move right by a bit.
- X ror ah,1 ;move right by another bit,
- X adc di,0 ; and handle byte increment.
- X ret
- X
- X
- Xmove_up_ega:
- X sub di,80*2 ;width of screen.
- X ret
- X
- X
- Xmove_down_ega:
- X add di,80*2 ;width of screen.
- X ret
- X
- X
- Xset_bit_ega:
- X mov bl,al
- X xor bh,bh
- X
- X mov al,ah
- X out dx,al
- X mov al,ulpal[bx]
- X xchg es:[di],al ;store the palette value.
- X mov al,llpal[bx]
- X xchg es:[di+80],al ;store the palette value.
- X
- X shr ah,1 ;move right by a bit.
- X
- X mov al,ah
- X out dx,al
- X mov al,urpal[bx]
- X xchg es:[di],al ;store the palette value.
- X mov al,lrpal[bx]
- X xchg es:[di+80],al ;store the palette value.
- X
- X shl ah,1 ;restore the bit.
- X
- X ret
- X
- X
- Xclose_vid_ega:
- X mov al,0ffh ;mask = all ones.
- X out dx,al
- X dec dx
- X mov ax,0005h ;write mode 0
- X out dx,al
- X inc dx
- X mov al,ah
- X out dx,al
- X
- X ret
- X
- Xulpal db 20 dup(00h)
- X db 20 dup(09h)
- X db 20 dup(0bh)
- X db 20 dup(0fh)
- X db 20 dup(0fh)
- X db 20 dup(0fh)
- X db 20 dup(0fh)
- X db 20 dup(08h)
- X db 20 dup(08h)
- X db 20 dup(07h)
- X db 20 dup(07h)
- X db 20 dup(07h)
- X db 20 dup(07h)
- Xurpal db 20 dup(00h)
- X db 20 dup(00h)
- X db 20 dup(0ch)
- X db 20 dup(0eh)
- X db 20 dup(0fh)
- X db 20 dup(08h)
- X db 20 dup(08h)
- X db 20 dup(08h)
- X db 20 dup(08h)
- X db 20 dup(08h)
- X db 20 dup(08h)
- X db 20 dup(08h)
- X db 20 dup(07h)
- Xllpal db 20 dup(00h)
- X db 20 dup(0ch)
- X db 20 dup(0ch)
- X db 20 dup(0dh)
- X db 20 dup(0fh)
- X db 20 dup(0fh)
- X db 20 dup(08h)
- X db 20 dup(08h)
- X db 20 dup(08h)
- X db 20 dup(08h)
- X db 20 dup(08h)
- X db 20 dup(07h)
- X db 20 dup(07h)
- Xlrpal db 20 dup(00h)
- X db 20 dup(0ah)
- X db 20 dup(0bh)
- X db 20 dup(0bh)
- X db 20 dup(0fh)
- X db 20 dup(0fh)
- X db 20 dup(0fh)
- X db 20 dup(0fh)
- X db 20 dup(08h)
- X db 20 dup(08h)
- X db 20 dup(07h)
- X db 20 dup(07h)
- X db 20 dup(07h)
- X
- Xsave_dacs db 256 * 3 dup(?)
- Xgray_dacs db 256 * 3 dup(?)
- X
- X
- SHAR_EOF
- chmod 0644 pixel.asm || echo "restore of pixel.asm fails"
- echo "x - extracting showface.asm (Text)"
- sed 's/^X//' << 'SHAR_EOF' > showface.asm &&
- X;History:277,1
- X
- XMAJVER EQU 1 ;1.0
- XVERSION EQU 1
- X
- X; Russell Nelson, Clarkson University. December 24, 1989
- X; Copyright, 1989, Russell Nelson
- X
- X; This program is free software; you can redistribute it and/or modify
- X; it under the terms of the GNU General Public License as published by
- X; the Free Software Foundation, version 1.
- X;
- X; This program is distributed in the hope that it will be useful,
- X; but WITHOUT ANY WARRANTY; without even the implied warranty of
- X; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- X; GNU General Public License for more details.
- X;
- X; You should have received a copy of the GNU General Public License
- X; along with this program; if not, write to the Free Software
- X; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- X
- Xcode segment byte public
- X assume cs:code, ds:code
- X
- XHT equ 09h
- XCR equ 0dh
- XLF equ 0ah
- X
- Xfont_struc struc
- Xascent dw ? ;number of pixels above base line
- Xdescent dw ? ;number of pixels below base line
- XwidMax dw ? ;number of pixels wide
- Xleading dw ? ;number of pixels below descent and above ascent
- Xfont_struc ends
- X
- Xsegmoffs struc ; defines offs as 0, segm as 2
- Xoffs dw ?
- Xsegm dw ?
- Xsegmoffs ends
- X
- X org 80h
- Xphd_dioa label byte
- X
- X org 100h
- Xstart:
- X jmp start_1
- X
- Xno_ega_msg db "showface: You must have an EGA or VGA display.",CR,LF,'$'
- Xcopyleft_msg label byte
- X db "Face viewer version ",'0'+majver,".",'0'+version," Copyright 1990, Russell Nelson.",CR,LF
- X db "This program is free software; see the file COPYING for details.",CR,LF
- X db "NO WARRANTY; see the file COPYING for details.",CR,LF
- Xcrlf_msg db CR,LF,'$'
- X
- Xprompt_msg db "Filename: ",'$'
- X
- Xfile_not_found db "File not found",'$'
- Xread_trouble db "Trouble reading the file",'$'
- Xread_too_much db "The file is too large",'$'
- Xno_picdata db "This file doesn't have a PicData header, which means it probably isn't a face.",CR,LF,'$'
- Xbad_picdata db "This file has a PicData with x = 0 or x >320, or y = 0 or y >200, or z != 8",CR,LF,'$'
- X
- Xfirstn db "FirstName",0
- Xlastn db "LastName",0
- Xpicdata db "PicData",0
- Xfacedat db 0
- Xxsize dw ?,?
- Xysize dw ?,?
- Xdepth dw ?,?
- X
- Xffblk label byte
- Xff_reserved db 21 dup(?)
- Xff_attrib db ?
- Xff_ftime dw ?
- Xff_fdate dw ?
- Xff_fsize dd ?
- Xff_name db 13 dup(?)
- X
- Xour_fn db 64 dup(?)
- X
- X include pixel.asm
- X
- Xerror:
- X mov ah,9
- X int 21h
- X mov ax,4c0ah ; give errorlevel 10
- X int 21h
- X
- Xstart_1:
- X mov dx,offset copyleft_msg
- X mov ah,9
- X int 21h
- X
- X mov ax,1200h ;test for an EGA
- X mov bx,10h
- X mov cx,-1
- X int 10h
- X cmp cx,-1
- X jne start_4 ;go if we've got an EGA (or VGA).
- X mov dx,offset no_ega_msg
- X jmp error
- Xstart_4:
- X
- X mov dx,offset ffblk ;set up for wildcards.
- X mov ah,1ah
- X int 21h
- X
- X cld
- X mov si,offset phd_dioa+1
- X call skip_blanks ;end of line?
- X cmp al,CR
- X je start_2
- X
- X call find_files ;find all the files that match this spec.
- X jc error
- X
- X jmp short start_3 ;all done.
- X
- Xstart_2:
- X mov phd_dioa[0],128 ;get set for a line input dos call.
- X mov phd_dioa[1],0
- X mov phd_dioa[2],CR
- X
- X mov dx,offset prompt_msg ;prompt them for a filename.
- X mov ah,9
- X int 21h
- X
- X mov dx,offset phd_dioa ;read the line.
- X mov ah,0ah
- X int 21h
- X
- X mov al,LF ;obligingly line feed for them.
- X call chrout
- X
- X mov si,offset phd_dioa+2
- X call skip_blanks ;end of line?
- X cmp al,CR ;if so, we're done.
- X je start_3
- X
- X call find_files ;find all the files that match.
- X jnc start_5
- X mov ah,9 ;print the error message.
- X int 21h
- Xstart_5:
- X jmp start_2
- X
- Xstart_3:
- X mov ax,4c00h ;terminate.
- X int 21h
- X
- X
- Xfind_files:
- X;enter with si -> list of filenames (possibly w/ wildcards) to show.
- X;exit with cy, dx -> error message if we couldn't find one of the files.
- Xfind_name_end:
- X push ds
- X pop es
- X mov di,offset our_fn
- X mov dx,di
- Xfind_name_end_1:
- X lodsb ;find the end of the filename.
- X stosb
- X cmp al,'/' ;whenever we encounter a pathname char,
- X je find_name_end_4 ; remember it.
- X cmp al,'\'
- X jne find_name_end_3
- Xfind_name_end_4:
- X mov dx,di ;found a path char, remember it.
- Xfind_name_end_3:
- X cmp al,' '
- X je find_name_end_2
- X cmp al,HT
- X je find_name_end_2
- X cmp al,CR
- X jne find_name_end_1
- Xfind_name_end_2:
- X dec si ;point si to terminator.
- X push si ;->end of filename in input.
- X mov byte ptr [di-1],0 ;terminate pathname in our_fn.
- X mov di,dx ;->end of pathname in our_fn.
- X call skip_blanks
- X
- X mov dx,offset our_fn
- X mov ah,4eh ;find the first file.
- X mov cx,0 ;no special files
- Xfind_one_file:
- X int 21h ;find a file.
- X jc find_files_done
- X
- X push di
- X mov si,offset ff_name ;append the found name to the pathname.
- Xfind_one_file_1:
- X lodsb
- X stosb
- X or al,al
- X jne find_one_file_1
- X
- X mov dx,offset our_fn ;show a single file.
- X call show_face
- X
- X pop di
- X jc find_files_error
- X
- X mov ah,4fh ;find next file.
- X jmp find_one_file
- X
- Xfind_files_done:
- X pop si ;restore the terminator.
- X call skip_blanks ;end of line?
- X cmp al,CR
- X jne find_name_end ;no, more files to do.
- X
- X clc
- X ret
- Xfind_files_error:
- X pop si ;give up now if we can't find it.
- X ret
- X
- X
- Xshow_face:
- X;read the face info. from the file named in [dx].
- X;return cy, dx -> error message if something went wrong.
- X
- X call read_file
- X jnc show_face_1
- X ret
- Xshow_face_3:
- X mov dx,offset no_picdata
- X stc
- X ret
- Xshow_face_2:
- X mov dx,offset bad_picdata
- X stc
- X ret
- Xshow_face_1:
- X
- X mov di,offset picdata ;get the size of the image.
- X call find_header
- X jc show_face_3
- X
- X mov di,offset xsize ;get their image size.
- X call get_number
- X
- X mov di,offset ysize
- X call get_number
- X
- X mov di,offset depth
- X call get_number
- X
- X cmp xsize,0 ;incredibly small?
- X je show_face_2
- X cmp xsize,320 ;too wide?
- X ja show_face_2
- X
- X cmp ysize,0 ;incredibly small?
- X je show_face_2
- X cmp ysize,200 ;too high?
- X ja show_face_2
- X
- X cmp depth,8 ;we can only handle 8 bits per pixel.
- X jne show_face_2
- X
- X call init_vid
- X
- X mov di,offset firstn ;get their first name.
- X call find_header
- X jc show_face_4
- X
- X mov cx,xsize ;put it to the screen.
- X add cx,30
- X mov dx,10
- X call show_line
- X
- Xshow_face_4:
- X
- X mov al,' ' ;put a space between first and last names.
- X call show_char
- X
- X push cx ;now find the last name (but remember
- X push dx ; the xy position this time.
- X mov di,offset lastn
- X call find_header
- X pop dx
- X pop cx
- X jc show_face_5
- X
- X call show_line ;put the last name to the screen.
- X
- Xshow_face_5:
- X
- X mov di,offset facedat ;now put the face up.
- X call find_header
- X
- X mov dx,ysize
- X mov cx,0
- X call open_vid
- X
- X mov cx,ysize
- Xvga_line:
- X push cx
- X push ax
- X push di
- X mov cx,xsize
- Xvga_pel:
- X mov bh,ah ;preserve ah.
- X call get_byte
- X mov ah,bh
- X call set_bit
- X call move_right
- X loop vga_pel
- X pop di
- X pop ax
- X call move_up
- X pop cx
- X loop vga_line
- X
- X mov ah,7 ;wait for a key.
- X int 21h
- X
- X call close_vid
- X
- X call uninit_vid
- X
- X clc
- X ret
- X
- X
- Xshow_line:
- X;enter with si -> CR or LF terminated string to be printed, CX = x, DX = y.
- Xshow_line_0:
- X lodsb
- X cmp al,CR
- X je show_line_1
- X cmp al,LF
- X je show_line_1
- X push si
- X call show_char
- X pop si
- X jmp show_line_0
- Xshow_line_1:
- X ret
- X
- X
- Xchar_number db ? ;ASCII value of this character.
- Xchar_height dw ? ;height of this character
- Xchar_width db ? ;width of this character in pixels.
- Xchar_color db 0ffh ;color to paint this character.
- X
- Xshow_char:
- X;enter with cx,dx=position, al = character.
- X push cx
- X push dx
- X push es
- X mov char_number,al
- X
- X mov ax,system_font.ascent ;compute height of character.
- X add ax,system_font.descent
- X mov char_height,ax ;save it.
- X
- X mov si,offset system_font + (size font_struc)
- Xuse_font_1:
- X lodsw
- X xchg ah,al ;get the number (AH) and width (AL).
- X
- X or al,al ;zero width?
- X je use_font_3 ;yes, end of the font.
- X cmp ah,char_number ;is this the character?
- X je use_font_2 ;Yes, use it.
- X mov ah,0
- X add ax,7 ;round up to next nearest byte.
- X shr ax,1 ;and convert pixels
- X shr ax,1 ; to
- X shr ax,1 ; bytes.
- X push dx
- X mul char_height ;find the size.
- X pop dx
- X add si,ax ;move ahead by this size.
- X jmp use_font_1
- Xuse_font_3:
- X pop es
- X pop dx
- X pop cx
- X stc
- X ret
- Xuse_font_2:
- X mov char_width,al ;remember the width of the font.
- X
- X call open_vid
- X
- X mov cx,char_height
- Xshow_char_4:
- X push cx
- X push ax
- X push di
- X mov cl,char_width
- X xor ch,ch
- X mov al,80h
- X jmp short show_char_6
- Xshow_char_5:
- X ror al,1 ;move right in the source.
- X adc si,0
- X call move_right ;move right in the destination.
- Xshow_char_6:
- X test [si],al ;is this bit set?
- X je show_char_7
- X push ax
- X mov al,0ffh
- X call set_bit ;yes, set it.
- X pop ax
- Xshow_char_7:
- X loop show_char_5
- X inc si ;flush the rest of the bits in source.
- X pop di
- X pop ax
- X call move_down
- X pop cx
- X loop show_char_4 ;go do another line.
- X pop es
- X pop dx
- X pop cx
- X inc char_width
- X add cl,char_width ;move over.
- X adc ch,0
- X clc
- X ret
- X
- X
- Xhandle dw ?
- X
- Xread_file:
- X;enter with dx -> filename.
- X;return nc if all okay, or cy, dx -> error if any problems.
- X mov ax,3d00h ;open for reading.
- X int 21h
- X jnc read_file_found
- X mov dx,offset file_not_found
- X stc
- X ret
- X
- Xread_file_found:
- X mov handle,ax
- X
- X mov ah,3fh ;read the whole thing in.
- X mov bx,handle
- X mov cx,65535 - 200
- X sub cx,offset face_buffer
- X mov dx,offset face_buffer
- X int 21h
- X jnc read_okay
- X mov dx,offset read_trouble
- X stc
- X ret
- Xread_okay:
- X cmp ax,cx ;did we read all we asked for?
- X jne read_enough
- X mov dx,offset read_too_much
- X stc
- X ret
- Xread_enough:
- X mov ah,3eh ;close the file.
- X mov bx,handle
- X int 21h
- X
- X clc
- X ret
- X
- X
- Xget_byte:
- X;enter with si -> two hex digits (maybe some CR/LFs first...)
- X;exit with al = the byte.
- X lodsb ;get a character.
- X cmp al,CR ;ignore CR and LF.
- X je get_byte
- X cmp al,LF
- X je get_byte
- X call get_digit ;hex digits come in pairs.
- X shl al,1
- X shl al,1
- X shl al,1
- X shl al,1
- X mov ah,al ;shift the first nibble over.
- X lodsb ;get the second nibble
- X call get_digit
- X or al,ah ;combine and store.
- X ret
- X
- Xfind_header_ptr dw ?
- X
- Xfind_header:
- X;enter with di -> header name
- X;exit with nc,si -> header contents, or cy if not found.
- X mov find_header_ptr,di ;remember the pointer to their header.
- X push ds
- X pop es
- X mov si,offset face_buffer
- Xfind_header_0:
- X mov di,find_header_ptr
- X mov cx,30 ;no header name is >30 chars.
- X repe cmpsb ;compare the header chars.
- X cmp [si-1],byte ptr ':' ;if we didn't get as far as the colon,
- X jne find_header_1 ; they didn't match.
- X cmp [di-1],byte ptr 0 ;if we didn't get as far as the null,
- X jne find_header_1 ; they didn't match.
- X call skip_blanks
- X ret
- Xfind_header_1:
- X;scan to the next LF.
- X lodsb
- X cmp al,LF
- X jne find_header_1
- X cmp byte ptr [si],CR ;two crlf's in a row?
- X je find_header_2 ;yes, no more headers.
- X cmp byte ptr [si],LF ;two lf's in a row?
- X jne find_header_0 ;yes, no more headers.
- Xfind_header_2:
- X stc
- X ret
- X
- X include skipblk.asm
- X include getdig.asm
- X include getnum.asm
- X include chrout.asm
- X include decout.asm
- X include digout.asm
- X
- Xsystem_font label byte
- X font_struc <9, 3, 10, 1>
- X
- X db 20h,6
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 21h,4
- X db 01100000b
- X db 11110000b
- X db 11110000b
- X db 11110000b
- X db 11110000b
- X db 11110000b
- X db 01100000b
- X db 00000000b
- X db 01100000b
- X db 01100000b
- X db 00000000b
- X db 00000000b
- X
- X db 22h,7
- X db 00000000b
- X db 00000000b
- X db 11101110b
- X db 01100110b
- X db 11001100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 23h,6
- X db 00000000b
- X db 00000000b
- X db 01001000b
- X db 01001000b
- X db 11111100b
- X db 01001000b
- X db 11111100b
- X db 01001000b
- X db 01001000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 24h,6
- X db 00000000b
- X db 00000000b
- X db 00010000b
- X db 01111100b
- X db 11010000b
- X db 01111100b
- X db 00010110b
- X db 01111100b
- X db 00010000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 25h,6
- X db 00000000b
- X db 00000000b
- X db 11000000b
- X db 11001100b
- X db 00011000b
- X db 00110000b
- X db 01100000b
- X db 11001100b
- X db 00001100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 26h,6
- X db 00000000b
- X db 00000000b
- X db 01110000b
- X db 11011000b
- X db 11011000b
- X db 01110000b
- X db 11011100b
- X db 11011000b
- X db 01101100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 27h,4
- X db 00000000b
- X db 00000000b
- X db 00110000b
- X db 01100000b
- X db 11000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 28h,4
- X db 00000000b
- X db 00000000b
- X db 00110000b
- X db 01100000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 01100000b
- X db 00110000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 29h,4
- X db 00000000b
- X db 00000000b
- X db 11000000b
- X db 01100000b
- X db 00110000b
- X db 00110000b
- X db 00110000b
- X db 01100000b
- X db 11000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 2Ah,6
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00110000b
- X db 10110100b
- X db 01111000b
- X db 10110100b
- X db 00110000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 2Bh,6
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00110000b
- X db 00110000b
- X db 11111100b
- X db 00110000b
- X db 00110000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 2Ch,3
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 11100000b
- X db 11100000b
- X db 01100000b
- X db 11000000b
- X db 00000000b
- X db 00000000b
- X
- X db 2Dh,6
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 11111100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 2Eh,3
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 11100000b
- X db 11100000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 2Fh,7
- X db 00000000b
- X db 00000000b
- X db 00000110b
- X db 00001100b
- X db 00011000b
- X db 00110000b
- X db 01100000b
- X db 11000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 30h,7
- X db 01111100b
- X db 11001110b
- X db 11001110b
- X db 11010110b
- X db 11010110b
- X db 11010110b
- X db 11100110b
- X db 11100110b
- X db 01111100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 31h,7
- X db 01100000b
- X db 11100000b
- X db 01100000b
- X db 01100000b
- X db 01100000b
- X db 01100000b
- X db 01100000b
- X db 01100000b
- X db 11110000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 32h,7
- X db 01111100b
- X db 10000110b
- X db 00000110b
- X db 00000110b
- X db 00001100b
- X db 00011000b
- X db 00110000b
- X db 01100000b
- X db 11111110b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 33h,7
- X db 11111100b
- X db 00001100b
- X db 00011000b
- X db 00110000b
- X db 00001100b
- X db 00000110b
- X db 00000110b
- X db 11000110b
- X db 01111100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 34h,7
- X db 00011100b
- X db 00111100b
- X db 01101100b
- X db 11001100b
- X db 11001100b
- X db 11001100b
- X db 11111110b
- X db 00001100b
- X db 00001100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 35h,7
- X db 11111110b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11111100b
- X db 00000110b
- X db 00000110b
- X db 11000110b
- X db 01111100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 36h,7
- X db 01111100b
- X db 11000110b
- X db 11000000b
- X db 11000000b
- X db 11111100b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 01111100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 37h,7
- X db 11111110b
- X db 00000110b
- X db 00000110b
- X db 00001100b
- X db 00011000b
- X db 00110000b
- X db 00110000b
- X db 00110000b
- X db 00110000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 38h,7
- X db 01111100b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 01111100b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 01111100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 39h,7
- X db 01111100b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 01111110b
- X db 00000110b
- X db 00000110b
- X db 11000110b
- X db 01111100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 3Ah,3
- X db 00000000b
- X db 00000000b
- X db 11100000b
- X db 11100000b
- X db 00000000b
- X db 00000000b
- X db 11100000b
- X db 11100000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 3Bh,3
- X db 00000000b
- X db 00000000b
- X db 11100000b
- X db 11100000b
- X db 00000000b
- X db 00000000b
- X db 11100000b
- X db 11100000b
- X db 01100000b
- X db 11000000b
- X db 00000000b
- X db 00000000b
- X
- X db 3Ch,7
- X db 00000000b
- X db 00000000b
- X db 00000110b
- X db 00011100b
- X db 01110000b
- X db 11000000b
- X db 01110000b
- X db 00011100b
- X db 00000110b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 3Dh,6
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 11111110b
- X db 00000000b
- X db 00000000b
- X db 11111110b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 3Eh,7
- X db 00000000b
- X db 00000000b
- X db 11000000b
- X db 01110000b
- X db 00011100b
- X db 00000110b
- X db 00011100b
- X db 01110000b
- X db 11000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 3Fh,6
- X db 01111100b
- X db 11000110b
- X db 00000110b
- X db 00001100b
- X db 00011000b
- X db 00110000b
- X db 00110000b
- X db 00000000b
- X db 00110000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 40h,6
- X db 00000000b
- X db 00000000b
- X db 00111000b
- X db 01101100b
- X db 11011100b
- X db 11010100b
- X db 11011100b
- X db 11000000b
- X db 01111100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 41h,7
- X db 01111100b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11111110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 42h,7
- X db 11111100b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11111110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11111100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 43h,7
- X db 01111100b
- X db 11000010b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000010b
- X db 01111100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 44h,7
- X db 11111100b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11111100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 45h,6
- X db 11111100b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11111000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11111100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 46h,6
- X db 11111100b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11111000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 47h,7
- X db 01111100b
- X db 11000100b
- X db 11000000b
- X db 11000000b
- X db 11001110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 01111100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 48h,7
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11111110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 49h,2
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 4Ah,6
- X db 00001100b
- X db 00001100b
- X db 00001100b
- X db 00001100b
- X db 00001100b
- X db 00001100b
- X db 11001100b
- X db 11001100b
- X db 01111000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 4Bh,8
- X db 11000011b
- X db 11000110b
- X db 11001100b
- X db 11011000b
- X db 11110000b
- X db 11110000b
- X db 11011000b
- X db 11001100b
- X db 11000110b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 4Ch,6
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11111100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 4Dh,9
- X db 11000000b,10000000b
- X db 11100001b,10000000b
- X db 11110011b,10000000b
- X db 11011101b,10000000b
- X db 11001001b,10000000b
- X db 11000001b,10000000b
- X db 11000001b,10000000b
- X db 11000001b,10000000b
- X db 11000001b,10000000b
- X db 00000000b,00000000b
- X db 00000000b,00000000b
- X db 00000000b,00000000b
- X
- X db 4Eh,8
- X db 10000001b
- X db 11000001b
- X db 11100001b
- X db 10110001b
- X db 10011001b
- X db 10001101b
- X db 10000111b
- X db 10000011b
- X db 10000001b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 4Fh,7
- X db 01111100b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 01111100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 50h,7
- X db 11111100b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11111100b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 51h,7
- X db 01111100b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 01111100b
- X db 00000110b
- X db 00000000b
- X db 00000000b
- X
- X db 52h,7
- X db 11111100b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11111100b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 53h,7
- X db 01111100b
- X db 11000010b
- X db 11100000b
- X db 01110000b
- X db 00111000b
- X db 00011100b
- X db 00001110b
- X db 10000110b
- X db 01111100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 54h,6
- X db 11111100b
- X db 00110000b
- X db 00110000b
- X db 00110000b
- X db 00110000b
- X db 00110000b
- X db 00110000b
- X db 00110000b
- X db 00110000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 55h,7
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 01111100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 56h,7
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000100b
- X db 11111000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 57h,10
- X db 11001100b,11000000b
- X db 11001100b,11000000b
- X db 11001100b,11000000b
- X db 11001100b,11000000b
- X db 11001100b,11000000b
- X db 11001100b,11000000b
- X db 11001100b,11000000b
- X db 11001100b,10000000b
- X db 11111111b,00000000b
- X db 00000000b,00000000b
- X db 00000000b,00000000b
- X db 00000000b,00000000b
- X
- X db 58h,7
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 01111100b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 59h,6
- X db 11001100b
- X db 11001100b
- X db 11001100b
- X db 11001100b
- X db 01111000b
- X db 00110000b
- X db 00110000b
- X db 00110000b
- X db 00110000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 5Ah,8
- X db 11111111b
- X db 00000011b
- X db 00000110b
- X db 00001100b
- X db 00011000b
- X db 00110000b
- X db 01100000b
- X db 11000000b
- X db 11111111b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 5Bh,4
- X db 11110000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11110000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 5Ch,5
- X db 10000000b
- X db 10000000b
- X db 01000000b
- X db 01000000b
- X db 00100000b
- X db 00100000b
- X db 00010000b
- X db 00010000b
- X db 00001000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 5Dh,4
- X db 11110000b
- X db 00110000b
- X db 00110000b
- X db 00110000b
- X db 00110000b
- X db 00110000b
- X db 00110000b
- X db 00110000b
- X db 11110000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 5Eh,8
- X db 00000000b
- X db 00000000b
- X db 00010000b
- X db 00111000b
- X db 01101100b
- X db 11000110b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 5Fh,8
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 11111111b
- X db 00000000b
- X db 00000000b
- X
- X db 60h,6
- X db 00000000b
- X db 00000000b
- X db 11000000b
- X db 01100000b
- X db 00110000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 61h,7
- X db 00000000b
- X db 00000000b
- X db 01111100b
- X db 10000110b
- X db 01111110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 01111110b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 62h,7
- X db 11000000b
- X db 11000000b
- X db 11111100b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11111100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 63h,6
- X db 00000000b
- X db 00000000b
- X db 01111000b
- X db 11000100b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000100b
- X db 01111000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 64h,7
- X db 00000110b
- X db 00000110b
- X db 01111110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 01111110b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 65h,7
- X db 00000000b
- X db 00000000b
- X db 01111100b
- X db 11000110b
- X db 11000110b
- X db 11111110b
- X db 11000000b
- X db 11000110b
- X db 01111100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 66h,6
- X db 00111100b
- X db 01100000b
- X db 11110000b
- X db 01100000b
- X db 01100000b
- X db 01100000b
- X db 01100000b
- X db 01100000b
- X db 01100000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 67h,7
- X db 00000000b
- X db 00000000b
- X db 01111110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 01111110b
- X db 00000110b
- X db 10000110b
- X db 01111100b
- X
- X db 68h,7
- X db 11000000b
- X db 11000000b
- X db 11111100b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 69h,2
- X db 11000000b
- X db 00000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 6Ah,5
- X db 00000000b
- X db 00000000b
- X db 00011000b
- X db 00000000b
- X db 00011000b
- X db 00011000b
- X db 00011000b
- X db 00011000b
- X db 00011000b
- X db 00011000b
- X db 10011000b
- X db 01110000b
- X
- X db 6Bh,6
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11001100b
- X db 11011000b
- X db 11110000b
- X db 11110000b
- X db 11011000b
- X db 11001100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 6Ch,2
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 6Dh,10
- X db 00000000b,00000000b
- X db 00000000b,00000000b
- X db 11111111b,00000000b
- X db 11001100b,10000000b
- X db 11001100b,11000000b
- X db 11001100b,11000000b
- X db 11001100b,11000000b
- X db 11001100b,11000000b
- X db 11001100b,11000000b
- X db 00000000b,00000000b
- X db 00000000b,00000000b
- X db 00000000b,00000000b
- X
- X db 6Eh,7
- X db 00000000b
- X db 00000000b
- X db 11111100b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 6Fh,7
- X db 00000000b
- X db 00000000b
- X db 01111100b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 01111100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 70h,7
- X db 00000000b
- X db 00000000b
- X db 11111100b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11111100b
- X db 11000000b
- X db 11000000b
- X db 00000000b
- X
- X db 71h,7
- X db 00000000b
- X db 00000000b
- X db 01111110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 01111110b
- X db 00000110b
- X db 00000110b
- X db 00000000b
- X
- X db 72h,6
- X db 00000000b
- X db 00000000b
- X db 11011100b
- X db 11100000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 73h,6
- X db 00000000b
- X db 00000000b
- X db 01111000b
- X db 11000100b
- X db 11100000b
- X db 01111000b
- X db 00011100b
- X db 10001100b
- X db 01111000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 74h,4
- X db 01100000b
- X db 01100000b
- X db 11110000b
- X db 01100000b
- X db 01100000b
- X db 01100000b
- X db 01100000b
- X db 01100000b
- X db 00110000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 75h,7
- X db 00000000b
- X db 00000000b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 01111100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 76h,7
- X db 00000000b
- X db 00000000b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000100b
- X db 11111000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 77h,10
- X db 00000000b,00000000b
- X db 00000000b,00000000b
- X db 11001100b,11000000b
- X db 11001100b,11000000b
- X db 11001100b,11000000b
- X db 11001100b,11000000b
- X db 11001100b,11000000b
- X db 11001100b,10000000b
- X db 11111111b,00000000b
- X db 00000000b,00000000b
- X db 00000000b,00000000b
- X db 00000000b,00000000b
- X
- X db 78h,7
- X db 00000000b
- X db 00000000b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 01111100b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 79h,7
- X db 00000000b
- X db 00000000b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 11000110b
- X db 01111110b
- X db 00000110b
- X db 10000110b
- X db 01111100b
- X
- X db 7Ah,6
- X db 00000000b
- X db 00000000b
- X db 11111100b
- X db 00001100b
- X db 00011000b
- X db 00110000b
- X db 01100000b
- X db 11000000b
- X db 11111100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 7Bh,8
- X db 00000000b
- X db 00000000b
- X db 00111000b
- X db 01100000b
- X db 01100000b
- X db 11000000b
- X db 01100000b
- X db 01100000b
- X db 00111000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 7Ch,2
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 11000000b
- X db 00000000b
- X
- X db 7Dh,8
- X db 00000000b
- X db 00000000b
- X db 11100000b
- X db 00110000b
- X db 00110000b
- X db 00011000b
- X db 00110000b
- X db 00110000b
- X db 11100000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 7Eh,8
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 01100000b
- X db 10010010b
- X db 00001100b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X db 00000000b
- X
- X db 80h,0 ;end of the font.
- X
- Xface_buffer label byte
- X
- Xcode ends
- X
- X end start
- SHAR_EOF
- chmod 0644 showface.asm || echo "restore of showface.asm fails"
- echo "x - extracting showface.com (Binary)"
- sed 's/^X//' << 'SHAR_EOF' > s2_temp_.tmp &&
- Xbegin 600 showface.com
- XMZ?<-<VAO=V9A8V4Z(%EO=2!M=7-T(&AA=F4@86X@14=!(&]R(%9'02!D:7-P
- XM;&%Y+@T*)$9A8V4@=FEE=V5R('9E<G-I;VX@,2XQ($-O<'ER:6=H="`Q.3DP
- XM+"!2=7-S96QL($YE;'-O;BX-"E1H:7,@<')O9W)A;2!I<R!F<F5E('-O9G1W
- XM87)E.R!S964@=&AE(&9I;&4@0T]064E.1R!F;W(@9&5T86EL<RX-"DY/(%=!
- XM4E)!3E19.R!S964@=&AE(&9I;&4@0T]064E.1R!F;W(@9&5T86EL<RX-"@T*
- XM)$9I;&5N86UE.B`D1FEL92!N;W0@9F]U;F0D5')O=6)L92!R96%D:6YG('1H
- XM92!F:6QE)%1H92!F:6QE(&ES('1O;R!L87)G9214:&ES(&9I;&4@9&]E<VXG
- XM="!H879E(&$@4&EC1&%T82!H96%D97(L('=H:6-H(&UE86YS(&ET('!R;V)A
- XM8FQY(&ES;B=T(&$@9F%C92X-"B14:&ES(&9I;&4@:&%S(&$@4&EC1&%T82!W
- XM:71H('@@/2`P(&]R('@@/C,R,"P@;W(@>2`](#`@;W(@>2`^,C`P+"!O<B!Z
- XM("$](#@-"B1&:7)S=$YA;64`3&%S=$YA;64`4&EC1&%T80``````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM`````````````````````````````````````````````+P#9P25!)T$H@2G
- XM!-0$"@2G`T<$5@18!%T$8@1F!+,#N``:S1`\&KY[`W0#OFL#K1X'OUT#N0<`
- XM\Z7_X+@3`,T0Z&$`Z&\`P^B``+@#`,T0P[@0`,T0N``0NP<_S1"X`!"["`?-
- XM$+@`$+L)",T0N``0NPH0S1"X`!"["QC-$+@`$+L,(,T0N``0NPTHS1"X`!"[
- XM#C#-$+@`$+L/.,T0P[@#`,T0P[@7$+L``+D``1X'NO$(S1##O_$+L`"Y#`#S
- XMJO[`/$!R];KQ"^L#NO$(N!(0NP``N0`!'@?-$,.X`*".P+A``??B`\&+^,-'
- XMPX'O0`'#@<=``<,FB`7#P[@`H([`N*``]^*+^(O!T>C1Z`/XNLX#N`4"[D**
- XMQ.Y*L`CN0M'A@.$'M(#2[,/0[-#,@]<`PX'OH`##@<>@`,.*V#+_BL3NBH?A
- XM!":&!8J'Z08FAD50T.R*Q.Z*A^4%)H8%BH?M!R:&15#0Y,.P_^Y*N`4`[D**
- XMQ.[#```````````````````````````)"0D)"0D)"0D)"0D)"0D)"0D)"0L+
- XM"PL+"PL+"PL+"PL+"PL+"PL+#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/
- XM#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/
- XM#P\/#P\/#P\("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(
- XM"`@(!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'
- XM!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<`````````
- XM````````````````````````````````````````````#`P,#`P,#`P,#`P,
- XM#`P,#`P,#`P.#@X.#@X.#@X.#@X.#@X.#@X.#@\/#P\/#P\/#P\/#P\/#P\/
- XM#P\/"`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(
- XM"`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(
- XM"`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(
- XM"`@("`@("`@'!P<'!P<'!P<'!P<'!P<'!P<'!P``````````````````````
- XM````#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`T-
- XM#0T-#0T-#0T-#0T-#0T-#0T-#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/
- XM#P\/#P\/#P\/#P\/#P@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(
- XM"`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(
- XM"`@("`@("`@("`@("`@("`@("`@("`@'!P<'!P<'!P<'!P<'!P<'!P<'!P<'
- XM!P<'!P<'!P<'!P<'!P<'!P<'```````````````````````````*"@H*"@H*
- XM"@H*"@H*"@H*"@H*"@L+"PL+"PL+"PL+"PL+"PL+"PL+"PL+"PL+"PL+"PL+
- XM"PL+"PL+"PL/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/
- XM#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P@(
- XM"`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@'!P<'!P<'
- XM!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'
- XM!P<'!P<'!P<`````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM````````````````````````````````````````````````````````````
- XM``````````````````"T"<TAN`I,S2&Z-`&T"<TAN``2NQ``N?__S1"#^?]U
- XM!;H#`>O;NO("M!K-(?R^@0#HAP(\#70'Z$``<L3K-\8&@`"`Q@:!``#&!H(`
- XM#;KB`;0)S2&Z@`"T"LTAL`KH\@*^@@#H5`(\#70+Z`T`<P2T"<TAZ\FX`$S-
- XM(1X'OQT#B]>LJCPO=`0\7'4"B]<\('0(/`ET!#P-=>A.5L9%_P"+^N@6`KH=
- XM`[1.N0``S2%R%U>^$`.LJ@K`=?JZ'0/H$P!?<@ZT3^OE7NCO`3P-=:OXPU[#
- XMZ%<!<PO#NBL"^<.Z?`+YP[_=`NB>`7+NO^8"Z/H!O^H"Z/0!O^X"Z.X!@S[F
- XM`@!TVH$^Y@)``7?2@S[J`@!TRX$^Z@+(`'?#@S[N`@AUO.AU\[_*`NA<`7(-
- XMBP[F`H/!'KH*`.A8`+`@Z&D`45*_U`+H0`%:67(#Z$0`O^4"Z#,!BQ;J`KD`
- XM`/\670.+#NH"45!7BP[F`HK\Z/D`BN?_%F4#_Q9?`^+O7UC_%F$#6>+?M`?-
- XM(?\69P/_%FD#^,.L/`UT"SP*=`=6Z`D`7NOPPP````#_45(&HI00H;X2`P;`
- XM$J.5$+[&$JV&X`K`=!LZ)I00=!JT``4'`-'HT>C1Z%+W)I406@/PZ]X'6EGY
- XMPZ*7$/\670.+#I4045!7B@Z7$#+ML(#K"=#(@]8`_Q9?`X0$=`A0L/__%F4#
- XM6.+I1E]8_Q9C`UGBT@=:6?X&EQ`"#I<0@-4`^,,``+@`/<TA<P6Z[0'YPZ,<
- XM$;0_BQX<$;DW_X'I*ABZ*AC-(7,%NOP!^<,[P74%NA4"^<.T/HL>'!'-(?C#
- XMK#P-=/L\"G3WZ%$`T.#0X-#@T."*X*SH0P`*Q,,``(D^=A$>![XJ&(L^=A&Y
- XM'@#SIH!\_SIU"H!]_P!U!.@2`,.L/`IU^X`\#70%@#P*==CYPZP\('3[/`ET
- XM]T[#/#!R(#PY=P0L,/C#/&%R"#QF=P0L5_C#/$%R"#Q&=P0L-_C#^<.]"@#K
- XM`[T0`.C$_^C,_W)&"L!U`[T(`#/),]NL/'AT*#Q8="3HL_]R)#+D.\5S'E"+
- XMQ??AB\A2B\7WXXO86@/:6`/(@],`Z].]$`#KSDZ)#8E=`OCK$#P_^74+@\8"
- XMN?__N___Z^?#4%**T+0"S2%:6,.+\(OZ"\)U!+`PZ^DSP(O8B^BY(`#1YM'7
- XME>@:`)63Z!4`DQ+`)^+ML3#H(P"+P^@7`(O%ZQ.0$L`GAL02P">&Q,.Q,)+H
- XM`0"24(K$Z`$`6(K@T.C0Z-#HT.CH`@"*Q"0/!)`G%$`G.L%T!+'_ZX;#"0`#
- XM``H``0`@!@```````````````"$$8/#P\/#P8`!@8```(@<``.YFS```````
- XM```C!@``2$C\2/Q(2````"0&```0?-!\%GP0````)08``,#,!@S`P````F
- XM!@``<-C8<-S8;````"<$```P8,``````````*`0``#!@P,#`8#`````I!```
- XMP&`P,#!@P````"H&````,+1XM#``````*P8````P,/PP,``````L`P``````
- XM`.#@8,```"T&``````#\````````+@,`````````X.`````O!P``!@P8,`
- XM`````#`'?,[.UM;6YN9\````,0=@X&!@8&!@8/`````R!WR&!@8,!@_@``
- XM`#,'_`P8,`P&!L9\````-`<</&S,S,S^#`P````U!_[`P,#\!@;&?````#8'
- XM?,;`P/S&QL9\````-P?^!@8,`P,#`````X!WS&QL9\QL;&?````#D'?,;&
- XMQGX&!L9\````.@,``.#@``#@X``````[`P``X.```.#@8,```#P'```&''#`
- XM<!P&````/08```#^``#^```````^!P``P'`<!AQPP````#\&?,8!@P,``P
- XM````0`8``#ALW-3<P'P```!!!WS&QL;^QL;&Q@```$('_,;&QO[&QL;\````
- XM0P=\PL#`P,#`PGP```!$!_S&QL;&QL;&_````$4&_,#`P/C`P,#\````1@;\
- XMP,#`^,#`P,````!'!WS$P,#.QL;&?````$@'QL;&QO[&QL;&````20+`P,#`
- XMP,#`P,````!*!@P,#`P,#,S,>````$L(P\;,V/#PV,S&````3`;`P,#`P,#`
- XMP/P```!-"<"`X8#S@-V`R8#!@,&`P8#!@````````$X(@<'AL9F-AX.!````
- XM3P=\QL;&QL;&QGP```!0!_S&QL;\P,#`P````%$'?,;&QL;&QL9\!@``4@?\
- XMQL;&_,;&QL8```!3!WS"X'`X'`Z&?````%0&_#`P,#`P,#`P````50?&QL;&
- XMQL;&QGP```!6!\;&QL;&QL;$^````%<*S,#,P,S`S,#,P,S`S,#,@/\`````
- XM````6`?&QL;&?,;&QL8```!9!LS,S,QX,#`P,````%H(_P,!@P8,#_````
- XM6P3PP,#`P,#`P/````!<!8"`0$`@(!`0"````%T$\#`P,#`P,##P````7@@`
- XM`!`X;,8```````!?"````````````/\``&`&``#`8#``````````80<``'R&
- XM?L;&QGX```!B!\#`_,;&QL;&_````&,&``!XQ,#`P,1X````9`<&!G[&QL;&
- XMQGX```!E!P``?,;&_L#&?````&8&/P8&!@8&!@````9P<``'[&QL;&QGX&
- XMAGQH!\#`_,;&QL;&Q@```&D"P`#`P,#`P,#`````:@4``!@`&!@8&!@8F'!K
- XM!L#`P,S8\/#8S````&P"P,#`P,#`P,#`````;0H`````_P#,@,S`S,#,P,S`
- XMS,````````!N!P``_,;&QL;&Q@```&\'``!\QL;&QL9\````<`<``/S&QL;&
- XMQOS`P`!Q!P``?L;&QL;&?@8&`'(&``#<X,#`P,#`````<P8``'C$X'@<C'@`
- XM``!T!&!@\&!@8&!@,````'4'``#&QL;&QL9\````=@<``,;&QL;&Q/@```!W
- XM"@````#,P,S`S,#,P,S`S(#_`````````'@'``#&QL9\QL;&````>0<``,;&
- XMQL;&QGX&AGQZ!@``_`P8,`_````'L(```X8`8&`X````?`+`P,#`P,#`
- XCP,#`P`!]"```X#`P`PX````'X(````8)(,````````@```
- X`
- Xend
- SHAR_EOF
- echo "uudecoding file showface.com"
- uudecode < s2_temp_.tmp && rm -f s2_temp_.tmp &&
- chmod 0644 showface.com || echo "restore of showface.com fails"
- echo "x - extracting skipblk.asm (Text)"
- sed 's/^X//' << 'SHAR_EOF' > skipblk.asm &&
- X;put into the public domain by Russell Nelson, nelson@clutx.clarkson.edu
- X
- X public skip_blanks
- Xskip_blanks:
- X lodsb ;skip blanks.
- X cmp al,' '
- X je skip_blanks
- X cmp al,HT
- X je skip_blanks
- X dec si
- X ret
- X
- SHAR_EOF
- chmod 0644 skipblk.asm || echo "restore of skipblk.asm fails"
- exit 0
- --
- --russ (nelson@clutx [.bitnet | .clarkson.edu]) Russ.Nelson@$315.268.6667
- It's better to get mugged than to live a life of fear -- Freeman Dyson
-