nelson@sun.soe.clarkson.edu (Russ Nelson) (09/27/90)
#!/bin/sh # shar: Shell Archiver (v1.22) # # Run the following text with /bin/sh to create: # README # chrout.asm # decout.asm # digout.asm # getdig.asm # getnum.asm # showface.asm # showface.com # skipblk.asm # sed 's/^X//' << 'SHAR_EOF' > README && XThis is the readme file for showface, a PC program for viewing Xface files as found on uunet.uu.net:/faces. It requires an EGA or VGA. X SHAR_EOF chmod 0644 README || echo "restore of README fails" 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" 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" 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 retSHAR_EOF chmod 0644 digout.asm || echo "restore of digout.asm fails" 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" 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" sed 's/^X//' << 'SHAR_EOF' > showface.asm && X;History:610,1 X XMAJVER EQU 1 ;1.0 XVERSION EQU 0 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",'$' X Xfirstn db "FirstName",0 Xlastn db "LastName",0 Xpicdata db "PicData",0 Xfacedat db 0 Xxsize dw ?,? Xysize 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 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 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 if we couldn't find one of the files. Xfind_name_end: 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,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 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 if we can't open the file. X X call read_file X jnc show_face_1 X ret Xshow_face_1: X X mov di,offset picdata ;get the size of the image. X call find_header 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;test for VGA. X mov ax,1a00h X int 10h X cmp al,1ah X je have_vga X X jmp have_ega X Xhave_vga: X 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 mov di,offset firstn ;get their first name. X call find_header X X mov cx,130 ;put it to the screen. X mov dx,10 X call show_name X X mov al,' ' ;put a space between first and last names. X call write_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 X call show_name ;put the last name to the screen. X X mov di,offset facedat ;now put the face up. X call find_header X X mov ax,0a000h X mov es,ax X mov cx,ysize X mov ax,320 ;get the bottom line. X mul cx X mov di,ax Xvga_line: X push cx X mov cx,xsize Xvga_pel: X call get_byte X stosb X loop vga_pel X sub di,xsize ;back to the left margin. X sub di,320 ;move up a line. X pop cx X loop vga_line X X mov ah,7 ;wait for a key. X int 21h X X call pal_restore ;restore the original palette. X X mov ax,3h ;put the screen into text mode. X int 10h X X clc X ret X Xhave_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 mov di,offset facedat X call find_header X X mov ax,0a000h X mov es,ax X mov cx,ysize ;get the bottom line. X mov ax,640/8*2 ;bytes per scan line * scan lines per pixel X mul cx X mov di,ax X xor bh,bh 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 Xega_line: X push cx X push di X mov ah,80h ;start at left margin. X mov cx,xsize Xega_pel: X push ax X call get_byte ;get a byte into bl where we can use X mov bl,al ; it for indexing into dithers... X pop ax 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 ror ah,1 ;move right by another bit, X adc di,0 ; and handle byte increment. X X loop ega_pel X pop di X sub di,80*2 ;move up a line. X pop cx X loop ega_line X 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 mov ah,7 ;wait for a key. X int 21h X X mov ax,3h ;put the screen into text mode. X int 10h X X clc X ret X X Xshow_name: X;enter with si -> CR terminated string to be printed, CX = x, DX = y. Xshow_name_0: X lodsb X cmp al,CR X je show_name_1 X push si X call write_char X pop si X jmp show_name_0 Xshow_name_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 Xwrite_char: X;enter with cx,dx=position, al = character. X push cx X push dx X push es X mov char_number,al X call compute_address 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 mul char_height ;find the size. 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 mov cx,char_height Xwrite_char_4: X push cx X push di X mov cl,char_width X xor ch,ch X mov ah,80h X jmp short write_char_6 Xwrite_char_5: X ror ah,1 ;move right in the source. X adc si,0 X call move_right ;move right in the destination. Xwrite_char_6: X test [si],ah ;is this bit set? X je write_char_7 X call set_bit ;yes, set it. Xwrite_char_7: X loop write_char_5 X inc si ;flush the rest of the bits in source. X pop di X call move_down X pop cx X loop write_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 Xcompute_address: X;enter with cx,dx = point on screen. X;exit with es:di,dh -> 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: X inc di X ret X Xmove_down: X add di,320 ;width of screen. X ret X Xset_bit: X mov al,char_color X mov es:[di],al 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 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 jne find_header_0 ;yes, no more headers. X stc X ret 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 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 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" 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+@HD1F%C92!V:65W97(@=F5R<VEO;B`Q+C`@0V]P>7)I9VAT(#$Y.3`L XM(%)U<W-E;&P@3F5L<V]N+@I4:&ES('!R;V=R86T@:7,@9G)E92!S;V9T=V%R XM93L@<V5E('1H92!F:6QE($-/4%E)3D<@9F]R(&1E=&%I;',N"DY/(%=!4E)! XM3E19.R!S964@=&AE(&9I;&4@0T]064E.1R!F;W(@9&5T86EL<RX*"B1&:6QE XM;F%M93H@)$9I;&4@;F]T(&9O=6YD)%1R;W5B;&4@<F5A9&EN9R!T:&4@9FEL XM9214:&4@9FEL92!I<R!T;V\@;&%R9V4D1FER<W1.86UE`$QA<W1.86UE`%!I XM8T1A=&$````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM``````````D)"0D)"0D)"0D)"0D)"0D)"0D)"PL+"PL+"PL+"PL+"PL+"PL+ XM"PL/#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<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<' XM!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P`````````````````````````````` XM```````````````````````,#`P,#`P,#`P,#`P,#`P,#`P,#`X.#@X.#@X. XM#@X.#@X.#@X.#@X.#P\/#P\/#P\/#P\/#P\/#P\/#P\("`@("`@("`@("`@( XM"`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@( XM"`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@( XM"`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`<'!P<'!P<' XM!P<'!P<'!P<'!P<'```````````````````````````,#`P,#`P,#`P,#`P, XM#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#0T-#0T-#0T-#0T-#0T-#0T- XM#0T/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/"`@( XM"`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@( XM"`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@( XM"`@("`@("`<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<' XM!P<```````````````````````````H*"@H*"@H*"@H*"@H*"@H*"@H*"PL+ XM"PL+"PL+"PL+"PL+"PL+"PL+"PL+"PL+"PL+"PL+"PL+"PL+"P\/#P\/#P\/ XM#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/ XM#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/"`@("`@("`@("`@("`@("`@( XM"`@("`@("`@("`@("`@("`@("`@("`<'!P<'!P<'!P<'!P<'!P<'!P<'!P<' XM!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!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`````````````````````````````````````````````````````````+0) XMS2&X"DS-(;HT`;0)S2&X`!*[$`"Y___-$(/Y_W4%N@,!Z]NZ3P*T<A_+Z! XM`.A6`SP-=`?H0`!RQ.LWQ@:``(#&!H$``,8&@@`-NN(!M`G-(;J``+0*S2&P XM"NC!`[Z"`.@C`SP-=`OH#0!S!+0)S2'KR;@`3,TAOWH"B]>LJCPO=`0\7'4" XMB]<\('0$/`UU[$Y6QD7_`(OZNGH"M$ZY``#-(7(75[YM`JRJ"L!U^KIZ`N@3 XM`%]R#K1/Z^5>Z,<"/`UUM/C#7L/H_P%S`<._/@+H4`*_1P+HW@*_2P+HV`*X XM`!K-$#P:=`/K9Y"X$P#-$.A<`NAJ`K\K`N@G`KF"`+H*`.@<`;`@Z"D!45*_ XM-0+H$0):6>@*`;]&`N@&`K@`H([`BPY+`KA``??AB_A1BPY'`NC/`:KB^BL^ XM1P*![T`!6>+JM`?-(>@K`K@#`,T0^,.X$`#-$+@`$+L'/\T0N``0NP@'S1"X XM`!"["0C-$+@`$+L*$,T0N``0NPL8S1"X`!"[#"#-$+@`$+L-*,T0N``0NPXP XMS1"X`!"[#SC-$+]&`NA_`;@`H([`BPY+`KB@`/?AB_@R_[K.`[@%`NY"BL3N XM2K`([D)15[2`BPY'`E#H,@&*V%B*Q.Z*A[H")H8%BH?"!":&15#0[(K$[HJ' XMO@,FA@6*A\8%)H9%4-#,@]<`XLQ?@>^@`%GBO+#_[DJX!0#N0HK$[K0'S2&X XM`P#-$/C#K#P-=`=6Z`D`7NOTPP````#_45(&HOL.Z&X`H681`P9H$:/\#KYN XM$:V&X`K`=!DZ)OL.=!BT``4'`-'HT>C1Z/<F_`X#\.O@!UI9^<.B_@Z+#OP. XM45>*#OX.,NVT@.L(T,R#U@#H,`"$)'0#Z#``XN]&7^@D`%GBVP=:6?X&_@X" XM#OX.@-4`^,.X`*".P+A``??B`\&+^,-'PX''0`'#H/\.)H@%PP``N``]S2%S XM!;KM`?G#HY0/M#^+'I0/N3?_@>G2%KK2%LTA<P6Z_`'YPSO!=06Z%0+YP[0^ XMBQZ4#\TA^,.L/`UT^SP*=/?H@0#0X-#@T.#0X(K@K.AS``K$PP``B3[N#[[2 XM%HL^[@^Y'@#SIH!\_SIU"H!]_P!U!.A$`,.L/`IU^X`\#77=^<.X%Q"[``"Y XM``$>![K*!LT0P[_*";``N0P`\ZK^P#Q`<O6ZR@GK`[K*!K@2$+L``+D``1X' XMS1##K#P@=/L\"73W3L,\,'(@/#EW!"PP^,,\87((/&9W!"Q7^,,\07((/$9W XM!"PW^,/YP[T*`.L#O1``Z,3_Z,S_<D8*P'4#O0@`,\DSVZP\>'0H/%AT).BS XM_W(D,N0[Q7,>4(O%]^&+R%*+Q??CB]A:`]I8`\B#TP#KT[T0`.O.3HD-B5T" XM^.L0/#_Y=0N#Q@*Y__^[___KY\-04HK0M`+-(5I8PXOPB_H+PG4$L##KZ3/` XMB]B+Z+D@`-'FT=>5Z!H`E9/H%0"3$L`GXNVQ,.@C`(O#Z!<`B\7K$Y`2P">& XMQ!+`)X;$P[$PDN@!`))0BL3H`0!8BN#0Z-#HT.C0Z.@"`(K$)`\$D"<40"<Z XMP70$L?_KAL,)``,`"@`!`"`&````````````````(01@\/#P\/!@`&!@```B XM!P``[F;,`````````",&``!(2/Q(_$A(````)`8``!!\T'P6?!`````E!@`` XMP,P8,&#,#````"8&``!PV-APW-AL````)P0``#!@P``````````H!```,&#` XMP,!@,````"D$``#`8#`P,&#`````*@8````PM'BT,``````K!@```#`P_#`P XM`````"P#````````X.!@P```+08``````/P````````N`P````````#@X``` XM`"\'```&#!@P8,``````,`=\SL[6UM;FYGP````Q!V#@8&!@8&!@\````#(' XM?(8&!@P8,&#^````,P?\#!@P#`8&QGP````T!QP\;,S,S/X,#````#4'_L#` XMP/P&!L9\````-@=\QL#`_,;&QGP````W!_X&!@P8,#`P,````#@'?,;&QGS& XMQL9\````.0=\QL;&?@8&QGP````Z`P``X.```.#@`````#L#``#@X```X.!@ XMP```/`<```8<<,!P'`8````]!@```/X``/X``````#X'``#`<!P&''#````` XM/P9\Q@8,&#`P`#````!`!@``.&S<U-S`?````$$'?,;&QO[&QL;&````0@?\ XMQL;&_L;&QOP```!#!WS"P,#`P,#"?````$0'_,;&QL;&QL;\````10;\P,#` XM^,#`P/P```!&!OS`P,#XP,#`P````$<'?,3`P,[&QL9\````2`?&QL;&_L;& XMQL8```!)`L#`P,#`P,#`P````$H&#`P,#`P,S,QX````2PC#QLS8\/#8S,8` XM``!,!L#`P,#`P,#`_````$T)P(#A@/.`W8#)@,&`P8#!@,&`````````3@B! XMP>&QF8V'@X$```!/!WS&QL;&QL;&?````%`'_,;&QOS`P,#`````40=\QL;& XMQL;&QGP&``!2!_S&QL;\QL;&Q@```%,'?,+@<#@<#H9\````5`;\,#`P,#`P XM,#````!5!\;&QL;&QL;&?````%8'QL;&QL;&QL3X````5PK,P,S`S,#,P,S` XMS,#,P,R`_P````````!8!\;&QL9\QL;&Q@```%D&S,S,S'@P,#`P````6@C_ XM`P8,&#!@P/\```!;!/#`P,#`P,#`\````%P%@(!`0"`@$!`(````703P,#`P XM,#`P,/````!>"```$#ALQ@```````%\(````````````_P``8`8``,!@,``` XM``````!A!P``?(9^QL;&?@```&('P,#\QL;&QL;\````8P8``'C$P,#`Q'@` XM``!D!P8&?L;&QL;&?@```&4'``!\QL;^P,9\````9@8\8/!@8&!@8&````!G XM!P``?L;&QL;&?@:&?&@'P,#\QL;&QL;&````:0+``,#`P,#`P,````!J!0`` XM&``8&!@8&!B8<&L&P,#`S-CP\-C,````;`+`P,#`P,#`P,````!M"@````#_ XM`,R`S,#,P,S`S,#,P````````&X'``#\QL;&QL;&````;P<``'S&QL;&QGP` XM``!P!P``_,;&QL;&_,#``'$'``!^QL;&QL9^!@8`<@8``-S@P,#`P,````!S XM!@``>,3@>!R,>````'0$8&#P8&!@8&`P````=0<``,;&QL;&QGP```!V!P`` XMQL;&QL;$^````'<*`````,S`S,#,P,S`S,#,@/\`````````>`<``,;&QGS& XMQL8```!Y!P``QL;&QL;&?@:&?'H&``#\#!@P8,#\````>P@``#A@8,!@8#@` XM``!\`L#`P,#`P,#`P,#``'T(``#@,#`8,##@````?@@```!@D@P```````"` X!``!\ X` Xend SHAR_EOF uudecode < s2_temp_.tmp && rm -f s2_temp_.tmp && chmod 0644 showface.com || echo "restore of showface.com fails" 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