home *** CD-ROM | disk | FTP | other *** search
/ Garbo / Garbo.cdr / pc / source / showfc11.lzh / showfc11
Text File  |  1990-10-12  |  52KB  |  2,638 lines

  1.  
  2. #!/bin/sh
  3. # shar:    Shell Archiver  (v1.22)
  4. #
  5. #    Run the following text with /bin/sh to create:
  6. #      COPYING
  7. #      README
  8. #      chrout.asm
  9. #      decout.asm
  10. #      digout.asm
  11. #      getdig.asm
  12. #      getnum.asm
  13. #      pixel.asm
  14. #      showface.asm
  15. #      showface.com
  16. #      skipblk.asm
  17. #
  18. echo "x - extracting COPYING (Text)"
  19. sed 's/^X//' << 'SHAR_EOF' > COPYING &&
  20. XRussell Nelson, Clarkson University.
  21. XCopyright, 1989, 1990, Russell Nelson
  22. X
  23. XThis program is free software; you can redistribute it and/or modify
  24. Xit under the terms of the GNU General Public License as published by
  25. Xthe Free Software Foundation, version 1.
  26. X
  27. XThis program is distributed in the hope that it will be useful,
  28. Xbut WITHOUT ANY WARRANTY; without even the implied warranty of
  29. XMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  30. XGNU General Public License for more details.
  31. X
  32. XYou are assumed to be able to find a copy of the GNU General Public
  33. XLicense; if not, write to the Free Software Foundation, Inc., 675
  34. XMass Ave, Cambridge, MA 02139, USA.
  35. X
  36. SHAR_EOF
  37. chmod 0644 COPYING || echo "restore of COPYING fails"
  38. echo "x - extracting README (Text)"
  39. sed 's/^X//' << 'SHAR_EOF' > README &&
  40. XThis is the readme file for showface, a PC program for viewing
  41. XFaceSaver(tm) format files as found on uunet.uu.net.  It requires
  42. Xan EGA or VGA.
  43. X
  44. XThere is no documentation -- showface does what you expect.  If you try
  45. Xsomething, and it doesn't work the way you would expect, send me mail
  46. X<nelson@sun.soe.clarkson.edu>.
  47. X
  48. XVersion 1.0: initial release
  49. X
  50. XVersion 1.1: split out graphics code into pixel.asm, added code to deal
  51. Xwith newline terminated files, added code to require presence of a
  52. XPicData header line, fixed a bug that caused only the first file to be
  53. Xdisplayed when using an EGA.
  54. X
  55. X
  56. XFaceSaver is a trademark of Metron Computerware, Ltd.
  57. SHAR_EOF
  58. chmod 0644 README || echo "restore of README fails"
  59. echo "x - extracting chrout.asm (Text)"
  60. sed 's/^X//' << 'SHAR_EOF' > chrout.asm &&
  61. X;put into the public domain by Russell Nelson, nelson@clutx.clarkson.edu
  62. X
  63. X    public    chrout
  64. Xchrout:
  65. X    push    ax            ;print the char in al.
  66. X    push    dx
  67. X    mov    dl,al
  68. X    mov    ah,2
  69. X    int    21h
  70. X    pop    dx
  71. X    pop    ax
  72. X    ret
  73. SHAR_EOF
  74. chmod 0644 chrout.asm || echo "restore of chrout.asm fails"
  75. echo "x - extracting decout.asm (Text)"
  76. sed 's/^X//' << 'SHAR_EOF' > decout.asm &&
  77. X;put into the public domain by Russell Nelson, nelson@clutx.clarkson.edu
  78. X
  79. X    public    decout
  80. Xdecout:
  81. X    mov    si,ax            ;get the number where we want it.
  82. X    mov    di,dx
  83. X    or    ax,dx            ;is the number zero?
  84. X    jne    decout_nonzero
  85. X    mov    al,'0'            ;yes - easier to just print it, than
  86. X    jmp    chrout            ;  to eliminate all but the last zero.
  87. Xdecout_nonzero:
  88. X
  89. X    xor    ax,ax            ;start with all zeroes in al,bx,bp
  90. X    mov    bx,ax
  91. X    mov    bp,ax
  92. X
  93. X    mov    cx,32            ;32 bits in two 16 bit registers.
  94. Xdecout_1:
  95. X    shl    si,1
  96. X    rcl    di,1
  97. X    xchg    bp,ax
  98. X    call    addbit
  99. X    xchg    bp,ax
  100. X    xchg    bx,ax
  101. X    call    addbit
  102. X    xchg    bx,ax
  103. X    adc    al,al
  104. X    daa
  105. X    loop    decout_1
  106. X
  107. X    mov    cl,'0'            ;prepare to eliminate leading zeroes.
  108. X    call    byteout            ;output the first two.
  109. X    mov    ax,bx            ;output the next four
  110. X    call    wordout            ;output the next four
  111. X    mov    ax,bp
  112. X    jmp    wordout
  113. X
  114. Xaddbit:    adc    al,al
  115. X    daa
  116. X    xchg    al,ah
  117. X    adc    al,al
  118. X    daa
  119. X    xchg    al,ah
  120. X    ret
  121. X
  122. SHAR_EOF
  123. chmod 0644 decout.asm || echo "restore of decout.asm fails"
  124. echo "x - extracting digout.asm (Text)"
  125. sed 's/^X//' << 'SHAR_EOF' > digout.asm &&
  126. X;put into the public domain by Russell Nelson, nelson@clutx.clarkson.edu
  127. X
  128. X    public    dwordout, wordout, byteout, digout
  129. Xdwordout:
  130. X    mov    cl,'0'            ;prepare to eliminate leading zeroes.
  131. X    xchg    ax,dx            ;just output 32 bits in hex.
  132. X    call    wordout            ;output dx.
  133. X    xchg    ax,dx
  134. Xwordout:
  135. X    push    ax
  136. X    mov    al,ah
  137. X    call    byteout
  138. X    pop    ax
  139. Xbyteout:
  140. X    mov    ah,al
  141. X    shr    al,1
  142. X    shr    al,1
  143. X    shr    al,1
  144. X    shr    al,1
  145. X    call    digout
  146. X    mov    al,ah
  147. Xdigout:
  148. X    and    al,0fh
  149. X    add    al,90h    ;binary digit to ascii hex digit.
  150. X    daa
  151. X    adc    al,40h
  152. X    daa
  153. X    cmp    al,cl            ;leading zero?
  154. X    je    digout_1
  155. X    mov    cl,-1            ;no more leading zeros.
  156. X    jmp    chrout
  157. Xdigout_1:
  158. X    ret
  159. SHAR_EOF
  160. chmod 0644 digout.asm || echo "restore of digout.asm fails"
  161. echo "x - extracting getdig.asm (Text)"
  162. sed 's/^X//' << 'SHAR_EOF' > getdig.asm &&
  163. X;put into the public domain by Russell Nelson, nelson@clutx.clarkson.edu
  164. X
  165. X    public    get_digit
  166. Xget_digit:
  167. X;enter with al = character
  168. X;return nc, al=digit, or cy if not a digit.
  169. X    cmp    al,'0'            ;decimal digit?
  170. X    jb    get_digit_1        ;no.
  171. X    cmp    al,'9'            ;. .?
  172. X    ja    get_digit_2        ;no.
  173. X    sub    al,'0'
  174. X    clc
  175. X    ret
  176. Xget_digit_2:
  177. X    cmp    al,'a'            ;hex digit?
  178. X    jb    get_digit_3
  179. X    cmp    al,'f'            ;hex digit?
  180. X    ja    get_digit_3
  181. X    sub    al,'a'-10
  182. X    clc
  183. X    ret
  184. Xget_digit_3:
  185. X    cmp    al,'A'            ;hex digit?
  186. X    jb    get_digit_1
  187. X    cmp    al,'F'            ;hex digit?
  188. X    ja    get_digit_1
  189. X    sub    al,'A'-10
  190. X    clc
  191. X    ret
  192. Xget_digit_1:
  193. X    stc
  194. X    ret
  195. X
  196. X
  197. SHAR_EOF
  198. chmod 0644 getdig.asm || echo "restore of getdig.asm fails"
  199. echo "x - extracting getnum.asm (Text)"
  200. sed 's/^X//' << 'SHAR_EOF' > getnum.asm &&
  201. X;put into the public domain by Russell Nelson, nelson@clutx.clarkson.edu
  202. X
  203. X    public    get_number
  204. Xget_number:
  205. X    mov    bp,10            ;we default to 10.
  206. X    jmp    short get_number_0
  207. X
  208. X    public    get_hex
  209. Xget_hex:
  210. X    mov    bp,16
  211. X;get a hex number, skipping leading blanks.
  212. X;enter with si->string of digits,
  213. X;    di -> dword to store the number in.  [di] is not modified if no
  214. X;        digits are given, so it acts as the default.
  215. X;return cy if there are no digits at all.
  216. X;return nc, bx:cx = number, and store bx:cx at [di].
  217. Xget_number_0:
  218. X    call    skip_blanks
  219. X    call    get_digit        ;is there really a number here?
  220. X    jc    get_number_3
  221. X    or    al,al            ;Does the number begin with zero?
  222. X    jne    get_number_4        ;no.
  223. X    mov    bp,8            ;yes - they want octal.
  224. Xget_number_4:
  225. X
  226. X    xor    cx,cx            ;get a hex number.
  227. X    xor    bx,bx
  228. Xget_number_1:
  229. X    lodsb
  230. X    cmp    al,'x'            ;did they really want hex?
  231. X    je    get_number_5        ;yes.
  232. X    cmp    al,'X'            ;did they really want hex?
  233. X    je    get_number_5        ;yes.
  234. X    call    get_digit        ;convert a character into an int.
  235. X    jc    get_number_2        ;not a digit (neither hex nor dec).
  236. X    xor    ah,ah
  237. X    cmp    ax,bp            ;larger than our base?
  238. X    jae    get_number_2        ;yes.
  239. X
  240. X    push    ax            ;save the new digit.
  241. X
  242. X    mov    ax,bp            ;multiply the low word by ten.
  243. X    mul    cx
  244. X    mov    cx,ax            ;keep the low word.
  245. X    push    dx            ;save the high word for later.
  246. X    mov    ax,bp
  247. X    mul    bx
  248. X    mov    bx,ax            ;we keep only the low word (which is our high word)
  249. X    pop    dx
  250. X    add    bx,dx            ;add the high result from earlier.
  251. X
  252. X    pop    ax            ;get the new digit back.
  253. X    add    cx,ax            ;add the new digit in.
  254. X    adc    bx,0
  255. X    jmp    get_number_1
  256. Xget_number_5:
  257. X    mov    bp,16            ;change the base to hex.
  258. X    jmp    get_number_1
  259. Xget_number_2:
  260. X    dec    si
  261. X    mov    [di],cx            ;store the parsed number.
  262. X    mov    [di+2],bx
  263. X    clc
  264. X    jmp    short get_number_6
  265. Xget_number_3:
  266. X    cmp    al,'?'            ;did they ask for the default?
  267. X    stc
  268. X    jne    get_number_6        ;no, return cy.
  269. X    add    si,2            ;skip past the question mark.
  270. X    mov    cx,-1
  271. X    mov    bx,-1
  272. X    jmp    get_number_2        ;and return the -1.
  273. Xget_number_6:
  274. X    ret
  275. SHAR_EOF
  276. chmod 0644 getnum.asm || echo "restore of getnum.asm fails"
  277. echo "x - extracting pixel.asm (Text)"
  278. sed 's/^X//' << 'SHAR_EOF' > pixel.asm &&
  279. X; code to do graphics at 320x200x256 on both EGAs and VGAs.
  280. X
  281. Xaddress_list    label    word
  282. X;can't change es, di, dx, or ah.
  283. X;al and bx will get trashed, but they need not be preserved.
  284. Xopen_vid    dw    ?
  285. Xmove_right    dw    ?
  286. Xmove_up        dw    ?
  287. Xmove_down    dw    ?
  288. Xset_bit        dw    ?
  289. Xclose_vid    dw    ?
  290. Xuninit_vid    dw    ?
  291. Xaddress_end    label    word
  292. X
  293. Xega_adrs    dw    init_vid_ega, open_vid_ega, move_right_ega
  294. X        dw    move_up_ega, move_down_ega, set_bit_ega, close_vid_ega
  295. X        dw    uninit_vid_ega
  296. X
  297. Xvga_adrs    dw    init_vid_vga, open_vid_vga, move_right_vga
  298. X        dw    move_up_vga, move_down_vga, set_bit_vga, close_vid_vga
  299. X        dw    uninit_vid_vga
  300. X
  301. X
  302. Xinit_vid:
  303. X;test for VGA.
  304. X    mov    ax,1a00h
  305. X    int    10h
  306. X    cmp    al,1ah
  307. X    mov    si,offset vga_adrs
  308. X  ifndef FORCE_EGA
  309. X    je    have_vga
  310. X  endif
  311. X    mov    si,offset ega_adrs
  312. Xhave_vga:
  313. X    lodsw                ;get the init_vid_* routine.
  314. X    push    ds
  315. X    pop    es
  316. X    mov    di,offset address_list
  317. X    mov    cx,(offset address_end - offset address_list) / 2
  318. X    rep    movsw
  319. X    jmp    ax            ;jump to the proper init_vid routine.
  320. X
  321. X
  322. Xinit_vid_vga:
  323. X    mov    ax,13h            ;put the screen into vga mode.
  324. X    int    10h
  325. X
  326. X    call    pal_save        ;save the palette
  327. X    call    pal_setgrey        ;set to a gray palette.
  328. X
  329. X    ret
  330. X
  331. Xuninit_vid_vga:
  332. X    call    pal_restore
  333. X
  334. X    mov    ax,3h            ;put the screen into text mode.
  335. X    int    10h
  336. X
  337. X    ret
  338. X
  339. X
  340. Xinit_vid_ega:
  341. X    mov    ax,10h            ;put the screen into ega mode.
  342. X    int    10h
  343. X
  344. X    mov    ax,1000h        ;change the palette entry for 7
  345. X    mov    bx,77Q*256 + 7        ;  to 77 octal.
  346. X    int    10h
  347. X
  348. X    mov    ax,1000h
  349. X    mov    bx,007Q*256 + 08h
  350. X    int    10h
  351. X
  352. X    mov    ax,1000h
  353. X    mov    bx,010Q*256 + 09h
  354. X    int    10h
  355. X
  356. X    mov    ax,1000h
  357. X    mov    bx,020Q*256 + 0ah
  358. X    int    10h
  359. X
  360. X    mov    ax,1000h
  361. X    mov    bx,030Q*256 + 0bh
  362. X    int    10h
  363. X
  364. X    mov    ax,1000h
  365. X    mov    bx,040Q*256 + 0ch
  366. X    int    10h
  367. X
  368. X    mov    ax,1000h
  369. X    mov    bx,050Q*256 + 0dh
  370. X    int    10h
  371. X
  372. X    mov    ax,1000h
  373. X    mov    bx,060Q*256 + 0eh
  374. X    int    10h
  375. X
  376. X    mov    ax,1000h
  377. X    mov    bx,070Q*256 + 0fh
  378. X    int    10h
  379. X
  380. X    ret
  381. X
  382. X
  383. Xuninit_vid_ega:
  384. X    mov    ax,3h            ;put the screen into text mode.
  385. X    int    10h
  386. X
  387. X    ret
  388. X
  389. X
  390. Xpal_save:
  391. X;Save existing palette
  392. X    mov    ax,1017h        ;get all palette registers.
  393. X    mov    bx,0            ;first palette register.
  394. X    mov    cx,256            ;read all palette registers.
  395. X    push    ds
  396. X    pop    es
  397. X    mov    dx,offset save_dacs
  398. X    int    10h
  399. X
  400. X    ret
  401. X
  402. X
  403. Xpal_setgrey:
  404. X    mov    di,offset gray_dacs
  405. X    mov    al,0
  406. Xpal_setgrey_1:
  407. X    mov    cx,3 * 256 / 64        ;3 colors, 256 grays, 64 slots.
  408. X    rep    stosb
  409. X
  410. X    inc    al
  411. X    cmp    al,64
  412. X    jb    pal_setgrey_1
  413. X
  414. X    mov    dx,offset gray_dacs
  415. X    jmp    short pal_set
  416. X
  417. Xpal_restore:
  418. X    mov    dx,offset save_dacs
  419. Xpal_set:
  420. X    mov    ax,1012h        ;set all palette registers.
  421. X    mov    bx,0            ;first palette register.
  422. X    mov    cx,256            ;read all palette registers.
  423. X    push    ds
  424. X    pop    es
  425. X    int    10h
  426. X
  427. X    ret
  428. X
  429. X
  430. Xopen_vid_vga:
  431. X;enter with cx,dx = point on screen.
  432. X;exit with es:di,ah -> byte/bit on screen.
  433. X    mov    ax,0a000h
  434. X    mov    es,ax
  435. X    mov    ax,320            ;width of screen.
  436. X    mul    dx
  437. X    add    ax,cx            ;add the offset in.
  438. X    mov    di,ax            ;remember our pointer.
  439. X    ret
  440. X
  441. X
  442. Xmove_right_vga:
  443. X    inc    di
  444. X    ret
  445. X
  446. Xmove_up_vga:
  447. X    sub    di,320            ;width of screen.
  448. X    ret
  449. X
  450. Xmove_down_vga:
  451. X    add    di,320            ;width of screen.
  452. X    ret
  453. X
  454. Xset_bit_vga:
  455. X    mov    es:[di],al
  456. X    ret
  457. X
  458. Xclose_vid_vga:
  459. X    ret
  460. X
  461. X
  462. Xopen_vid_ega:
  463. X;enter with cx,dx = point on screen.
  464. X;exit with es:di,ah -> byte/bit on screen.
  465. X    mov    ax,0a000h
  466. X    mov    es,ax
  467. X    mov    ax,640/8*2        ;bytes per scan line * scan lines per pixel
  468. X    mul    dx
  469. X    mov    di,ax
  470. X    mov    ax,cx            ;/8*2
  471. X    shr    ax,1
  472. X    shr    ax,1
  473. X    add    di,ax
  474. X
  475. X    mov    dx,03ceh        ;graphics controller
  476. X    mov    ax,0205h        ;write mode 2.
  477. X    out    dx,al
  478. X    inc    dx
  479. X    mov    al,ah
  480. X    out    dx,al
  481. X    dec    dx
  482. X    mov    al,08h            ;select bitmap register.
  483. X    out    dx,al
  484. X    inc    dx
  485. X
  486. X    shl    cx,1            ;compute the bit.
  487. X    and    cl,7
  488. X    mov    ah,80h
  489. X    shr    ah,cl
  490. X    ret
  491. X
  492. X
  493. Xmove_right_ega:
  494. X    shr    ah,1            ;move right by a bit.
  495. X    ror    ah,1            ;move right by another bit,
  496. X    adc    di,0            ;  and handle byte increment.
  497. X    ret
  498. X
  499. X
  500. Xmove_up_ega:
  501. X    sub    di,80*2            ;width of screen.
  502. X    ret
  503. X
  504. X
  505. Xmove_down_ega:
  506. X    add    di,80*2            ;width of screen.
  507. X    ret
  508. X
  509. X
  510. Xset_bit_ega:
  511. X    mov    bl,al
  512. X    xor    bh,bh
  513. X
  514. X    mov    al,ah
  515. X    out    dx,al
  516. X    mov    al,ulpal[bx]
  517. X    xchg    es:[di],al        ;store the palette value.
  518. X    mov    al,llpal[bx]
  519. X    xchg    es:[di+80],al        ;store the palette value.
  520. X
  521. X    shr    ah,1            ;move right by a bit.
  522. X
  523. X    mov    al,ah
  524. X    out    dx,al
  525. X    mov    al,urpal[bx]
  526. X    xchg    es:[di],al        ;store the palette value.
  527. X    mov    al,lrpal[bx]
  528. X    xchg    es:[di+80],al        ;store the palette value.
  529. X
  530. X    shl    ah,1            ;restore the bit.
  531. X
  532. X    ret
  533. X
  534. X
  535. Xclose_vid_ega:
  536. X    mov    al,0ffh            ;mask = all ones.
  537. X    out    dx,al
  538. X    dec    dx
  539. X    mov    ax,0005h        ;write mode 0
  540. X    out    dx,al
  541. X    inc    dx
  542. X    mov    al,ah
  543. X    out    dx,al
  544. X
  545. X    ret
  546. X
  547. Xulpal    db    20 dup(00h)
  548. X    db    20 dup(09h)
  549. X    db    20 dup(0bh)
  550. X    db    20 dup(0fh)
  551. X    db    20 dup(0fh)
  552. X    db    20 dup(0fh)
  553. X    db    20 dup(0fh)
  554. X    db    20 dup(08h)
  555. X    db    20 dup(08h)
  556. X    db    20 dup(07h)
  557. X    db    20 dup(07h)
  558. X    db    20 dup(07h)
  559. X    db    20 dup(07h)
  560. Xurpal    db    20 dup(00h)
  561. X    db    20 dup(00h)
  562. X    db    20 dup(0ch)
  563. X    db    20 dup(0eh)
  564. X    db    20 dup(0fh)
  565. X    db    20 dup(08h)
  566. X    db    20 dup(08h)
  567. X    db    20 dup(08h)
  568. X    db    20 dup(08h)
  569. X    db    20 dup(08h)
  570. X    db    20 dup(08h)
  571. X    db    20 dup(08h)
  572. X    db    20 dup(07h)
  573. Xllpal    db    20 dup(00h)
  574. X    db    20 dup(0ch)
  575. X    db    20 dup(0ch)
  576. X    db    20 dup(0dh)
  577. X    db    20 dup(0fh)
  578. X    db    20 dup(0fh)
  579. X    db    20 dup(08h)
  580. X    db    20 dup(08h)
  581. X    db    20 dup(08h)
  582. X    db    20 dup(08h)
  583. X    db    20 dup(08h)
  584. X    db    20 dup(07h)
  585. X    db    20 dup(07h)
  586. Xlrpal    db    20 dup(00h)
  587. X    db    20 dup(0ah)
  588. X    db    20 dup(0bh)
  589. X    db    20 dup(0bh)
  590. X    db    20 dup(0fh)
  591. X    db    20 dup(0fh)
  592. X    db    20 dup(0fh)
  593. X    db    20 dup(0fh)
  594. X    db    20 dup(08h)
  595. X    db    20 dup(08h)
  596. X    db    20 dup(07h)
  597. X    db    20 dup(07h)
  598. X    db    20 dup(07h)
  599. X
  600. Xsave_dacs    db    256 * 3 dup(?)
  601. Xgray_dacs    db    256 * 3 dup(?)
  602. X
  603. X
  604. SHAR_EOF
  605. chmod 0644 pixel.asm || echo "restore of pixel.asm fails"
  606. echo "x - extracting showface.asm (Text)"
  607. sed 's/^X//' << 'SHAR_EOF' > showface.asm &&
  608. X;History:277,1
  609. X
  610. XMAJVER    EQU    1    ;1.0
  611. XVERSION    EQU    1
  612. X
  613. X;  Russell Nelson, Clarkson University.  December 24, 1989
  614. X;  Copyright, 1989, Russell Nelson
  615. X
  616. X;   This program is free software; you can redistribute it and/or modify
  617. X;   it under the terms of the GNU General Public License as published by
  618. X;   the Free Software Foundation, version 1.
  619. X;
  620. X;   This program is distributed in the hope that it will be useful,
  621. X;   but WITHOUT ANY WARRANTY; without even the implied warranty of
  622. X;   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  623. X;   GNU General Public License for more details.
  624. X;
  625. X;   You should have received a copy of the GNU General Public License
  626. X;   along with this program; if not, write to the Free Software
  627. X;   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  628. X
  629. Xcode    segment    byte public
  630. X    assume    cs:code, ds:code
  631. X
  632. XHT    equ    09h
  633. XCR    equ    0dh
  634. XLF    equ    0ah
  635. X
  636. Xfont_struc    struc
  637. Xascent    dw    ?            ;number of pixels above base line
  638. Xdescent    dw    ?            ;number of pixels below base line
  639. XwidMax    dw    ?            ;number of pixels wide
  640. Xleading    dw    ?            ;number of pixels below descent and above ascent
  641. Xfont_struc    ends
  642. X
  643. Xsegmoffs    struc            ; defines offs as 0, segm as 2
  644. Xoffs        dw    ?
  645. Xsegm        dw    ?
  646. Xsegmoffs    ends
  647. X
  648. X    org    80h
  649. Xphd_dioa    label    byte
  650. X
  651. X    org    100h
  652. Xstart:
  653. X    jmp    start_1
  654. X
  655. Xno_ega_msg    db    "showface: You must have an EGA or VGA display.",CR,LF,'$'
  656. Xcopyleft_msg    label    byte
  657. X db "Face viewer version ",'0'+majver,".",'0'+version," Copyright 1990, Russell Nelson.",CR,LF
  658. X db "This program is free software; see the file COPYING for details.",CR,LF
  659. X db "NO WARRANTY; see the file COPYING for details.",CR,LF
  660. Xcrlf_msg    db    CR,LF,'$'
  661. X
  662. Xprompt_msg    db    "Filename: ",'$'
  663. X
  664. Xfile_not_found    db    "File not found",'$'
  665. Xread_trouble    db    "Trouble reading the file",'$'
  666. Xread_too_much    db    "The file is too large",'$'
  667. Xno_picdata    db    "This file doesn't have a PicData header, which means it probably isn't a face.",CR,LF,'$'
  668. 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,'$'
  669. X
  670. Xfirstn    db    "FirstName",0
  671. Xlastn    db    "LastName",0
  672. Xpicdata    db    "PicData",0
  673. Xfacedat    db    0
  674. Xxsize    dw    ?,?
  675. Xysize    dw    ?,?
  676. Xdepth    dw    ?,?
  677. X
  678. Xffblk    label    byte
  679. Xff_reserved    db    21 dup(?)
  680. Xff_attrib    db    ?
  681. Xff_ftime    dw    ?
  682. Xff_fdate    dw    ?
  683. Xff_fsize    dd    ?
  684. Xff_name        db    13 dup(?)
  685. X
  686. Xour_fn        db    64 dup(?)
  687. X
  688. X    include    pixel.asm
  689. X
  690. Xerror:
  691. X    mov    ah,9
  692. X    int    21h
  693. X    mov    ax,4c0ah        ; give errorlevel 10
  694. X    int    21h
  695. X
  696. Xstart_1:
  697. X    mov    dx,offset copyleft_msg
  698. X    mov    ah,9
  699. X    int    21h
  700. X
  701. X    mov    ax,1200h        ;test for an EGA
  702. X    mov    bx,10h
  703. X    mov    cx,-1
  704. X    int    10h
  705. X    cmp    cx,-1
  706. X    jne    start_4            ;go if we've got an EGA (or VGA).
  707. X    mov    dx,offset no_ega_msg
  708. X    jmp    error
  709. Xstart_4:
  710. X
  711. X    mov    dx,offset ffblk        ;set up for wildcards.
  712. X    mov    ah,1ah
  713. X    int    21h
  714. X
  715. X    cld
  716. X    mov    si,offset phd_dioa+1
  717. X    call    skip_blanks        ;end of line?
  718. X    cmp    al,CR
  719. X    je    start_2
  720. X
  721. X    call    find_files        ;find all the files that match this spec.
  722. X    jc    error
  723. X
  724. X    jmp    short start_3        ;all done.
  725. X
  726. Xstart_2:
  727. X    mov    phd_dioa[0],128        ;get set for a line input dos call.
  728. X    mov    phd_dioa[1],0
  729. X    mov    phd_dioa[2],CR
  730. X
  731. X    mov    dx,offset prompt_msg    ;prompt them for a filename.
  732. X    mov    ah,9
  733. X    int    21h
  734. X
  735. X    mov    dx,offset phd_dioa    ;read the line.
  736. X    mov    ah,0ah
  737. X    int    21h
  738. X
  739. X    mov    al,LF            ;obligingly line feed for them.
  740. X    call    chrout
  741. X
  742. X    mov    si,offset phd_dioa+2
  743. X    call    skip_blanks        ;end of line?
  744. X    cmp    al,CR            ;if so, we're done.
  745. X    je    start_3
  746. X
  747. X    call    find_files        ;find all the files that match.
  748. X    jnc    start_5
  749. X    mov    ah,9            ;print the error message.
  750. X    int    21h
  751. Xstart_5:
  752. X    jmp    start_2
  753. X
  754. Xstart_3:
  755. X    mov    ax,4c00h        ;terminate.
  756. X    int    21h
  757. X
  758. X
  759. Xfind_files:
  760. X;enter with si -> list of filenames (possibly w/ wildcards) to show.
  761. X;exit with cy, dx -> error message if we couldn't find one of the files.
  762. Xfind_name_end:
  763. X    push    ds
  764. X    pop    es
  765. X    mov    di,offset our_fn
  766. X    mov    dx,di
  767. Xfind_name_end_1:
  768. X    lodsb                ;find the end of the filename.
  769. X    stosb
  770. X    cmp    al,'/'            ;whenever we encounter a pathname char,
  771. X    je    find_name_end_4        ;  remember it.
  772. X    cmp    al,'\'
  773. X    jne    find_name_end_3
  774. Xfind_name_end_4:
  775. X    mov    dx,di            ;found a path char, remember it.
  776. Xfind_name_end_3:
  777. X    cmp    al,' '
  778. X    je    find_name_end_2
  779. X    cmp    al,HT
  780. X    je    find_name_end_2
  781. X    cmp    al,CR
  782. X    jne    find_name_end_1
  783. Xfind_name_end_2:
  784. X    dec    si            ;point si to terminator.
  785. X    push    si            ;->end of filename in input.
  786. X    mov    byte ptr [di-1],0    ;terminate pathname in our_fn.
  787. X    mov    di,dx            ;->end of pathname in our_fn.
  788. X    call    skip_blanks
  789. X
  790. X    mov    dx,offset our_fn
  791. X    mov    ah,4eh            ;find the first file.
  792. X    mov    cx,0            ;no special files
  793. Xfind_one_file:
  794. X    int    21h            ;find a file.
  795. X    jc    find_files_done
  796. X
  797. X    push    di
  798. X    mov    si,offset ff_name    ;append the found name to the pathname.
  799. Xfind_one_file_1:
  800. X    lodsb
  801. X    stosb
  802. X    or    al,al
  803. X    jne    find_one_file_1
  804. X
  805. X    mov    dx,offset our_fn    ;show a single file.
  806. X    call    show_face
  807. X
  808. X    pop    di
  809. X    jc    find_files_error
  810. X
  811. X    mov    ah,4fh            ;find next file.
  812. X    jmp    find_one_file
  813. X
  814. Xfind_files_done:
  815. X    pop    si            ;restore the terminator.
  816. X    call    skip_blanks        ;end of line?
  817. X    cmp    al,CR
  818. X    jne    find_name_end        ;no, more files to do.
  819. X
  820. X    clc
  821. X    ret
  822. Xfind_files_error:
  823. X    pop    si            ;give up now if we can't find it.
  824. X    ret
  825. X
  826. X
  827. Xshow_face:
  828. X;read the face info. from the file named in [dx].
  829. X;return cy, dx -> error message if something went wrong.
  830. X
  831. X    call    read_file
  832. X    jnc    show_face_1
  833. X    ret
  834. Xshow_face_3:
  835. X    mov    dx,offset no_picdata
  836. X    stc
  837. X    ret
  838. Xshow_face_2:
  839. X    mov    dx,offset bad_picdata
  840. X    stc
  841. X    ret
  842. Xshow_face_1:
  843. X
  844. X    mov    di,offset picdata    ;get the size of the image.
  845. X    call    find_header
  846. X    jc    show_face_3
  847. X
  848. X    mov    di,offset xsize        ;get their image size.
  849. X    call    get_number
  850. X
  851. X    mov    di,offset ysize
  852. X    call    get_number
  853. X
  854. X    mov    di,offset depth
  855. X    call    get_number
  856. X
  857. X    cmp    xsize,0            ;incredibly small?
  858. X    je    show_face_2
  859. X    cmp    xsize,320        ;too wide?
  860. X    ja    show_face_2
  861. X
  862. X    cmp    ysize,0            ;incredibly small?
  863. X    je    show_face_2
  864. X    cmp    ysize,200        ;too high?
  865. X    ja    show_face_2
  866. X
  867. X    cmp    depth,8            ;we can only handle 8 bits per pixel.
  868. X    jne    show_face_2
  869. X
  870. X    call    init_vid
  871. X
  872. X    mov    di,offset firstn    ;get their first name.
  873. X    call    find_header
  874. X    jc    show_face_4
  875. X
  876. X    mov    cx,xsize        ;put it to the screen.
  877. X    add    cx,30
  878. X    mov    dx,10
  879. X    call    show_line
  880. X
  881. Xshow_face_4:
  882. X
  883. X    mov    al,' '            ;put a space between first and last names.
  884. X    call    show_char
  885. X
  886. X    push    cx            ;now find the last name (but remember
  887. X    push    dx            ;  the xy position this time.
  888. X    mov    di,offset lastn
  889. X    call    find_header
  890. X    pop    dx
  891. X    pop    cx
  892. X    jc    show_face_5
  893. X
  894. X    call    show_line        ;put the last name to the screen.
  895. X
  896. Xshow_face_5:
  897. X
  898. X    mov    di,offset facedat    ;now put the face up.
  899. X    call    find_header
  900. X
  901. X    mov    dx,ysize
  902. X    mov    cx,0
  903. X    call    open_vid
  904. X
  905. X    mov    cx,ysize
  906. Xvga_line:
  907. X    push    cx
  908. X    push    ax
  909. X    push    di
  910. X    mov    cx,xsize
  911. Xvga_pel:
  912. X    mov    bh,ah            ;preserve ah.
  913. X    call    get_byte
  914. X    mov    ah,bh
  915. X    call    set_bit
  916. X    call    move_right
  917. X    loop    vga_pel
  918. X    pop    di
  919. X    pop    ax
  920. X    call    move_up
  921. X    pop    cx
  922. X    loop    vga_line
  923. X
  924. X    mov    ah,7            ;wait for a key.
  925. X    int    21h
  926. X
  927. X    call    close_vid
  928. X
  929. X    call    uninit_vid
  930. X
  931. X    clc
  932. X    ret
  933. X
  934. X
  935. Xshow_line:
  936. X;enter with si -> CR or LF terminated string to be printed, CX = x, DX = y.
  937. Xshow_line_0:
  938. X    lodsb
  939. X    cmp    al,CR
  940. X    je    show_line_1
  941. X    cmp    al,LF
  942. X    je    show_line_1
  943. X    push    si
  944. X    call    show_char
  945. X    pop    si
  946. X    jmp    show_line_0
  947. Xshow_line_1:
  948. X    ret
  949. X
  950. X
  951. Xchar_number    db    ?        ;ASCII value of this character.
  952. Xchar_height    dw    ?        ;height of this character
  953. Xchar_width    db    ?        ;width of this character in pixels.
  954. Xchar_color    db    0ffh        ;color to paint this character.
  955. X
  956. Xshow_char:
  957. X;enter with cx,dx=position, al = character.
  958. X    push    cx
  959. X    push    dx
  960. X    push    es
  961. X    mov    char_number,al
  962. X
  963. X    mov    ax,system_font.ascent    ;compute height of character.
  964. X    add    ax,system_font.descent
  965. X    mov    char_height,ax        ;save it.
  966. X
  967. X    mov    si,offset system_font + (size font_struc)
  968. Xuse_font_1:
  969. X    lodsw
  970. X    xchg    ah,al            ;get the number (AH) and width (AL).
  971. X
  972. X    or    al,al            ;zero width?
  973. X    je    use_font_3        ;yes, end of the font.
  974. X    cmp    ah,char_number        ;is this the character?
  975. X    je    use_font_2        ;Yes, use it.
  976. X    mov    ah,0
  977. X    add    ax,7            ;round up to next nearest byte.
  978. X    shr    ax,1            ;and convert pixels
  979. X    shr    ax,1            ; to
  980. X    shr    ax,1            ; bytes.
  981. X    push    dx
  982. X    mul    char_height        ;find the size.
  983. X    pop    dx
  984. X    add    si,ax            ;move ahead by this size.
  985. X    jmp    use_font_1
  986. Xuse_font_3:
  987. X    pop    es
  988. X    pop    dx
  989. X    pop    cx
  990. X    stc
  991. X    ret
  992. Xuse_font_2:
  993. X    mov    char_width,al        ;remember the width of the font.
  994. X
  995. X    call    open_vid
  996. X
  997. X    mov    cx,char_height
  998. Xshow_char_4:
  999. X    push    cx
  1000. X    push    ax
  1001. X    push    di
  1002. X    mov    cl,char_width
  1003. X    xor    ch,ch
  1004. X    mov    al,80h
  1005. X    jmp    short show_char_6
  1006. Xshow_char_5:
  1007. X    ror    al,1            ;move right in the source.
  1008. X    adc    si,0
  1009. X    call    move_right        ;move right in the destination.
  1010. Xshow_char_6:
  1011. X    test    [si],al            ;is this bit set?
  1012. X    je    show_char_7
  1013. X    push    ax
  1014. X    mov    al,0ffh
  1015. X    call    set_bit            ;yes, set it.
  1016. X    pop    ax
  1017. Xshow_char_7:
  1018. X    loop    show_char_5
  1019. X    inc    si            ;flush the rest of the bits in source.
  1020. X    pop    di
  1021. X    pop    ax
  1022. X    call    move_down
  1023. X    pop    cx
  1024. X    loop    show_char_4        ;go do another line.
  1025. X    pop    es
  1026. X    pop    dx
  1027. X    pop    cx
  1028. X    inc    char_width
  1029. X    add    cl,char_width        ;move over.
  1030. X    adc    ch,0
  1031. X    clc
  1032. X    ret
  1033. X
  1034. X
  1035. Xhandle    dw    ?
  1036. X
  1037. Xread_file:
  1038. X;enter with dx -> filename.
  1039. X;return nc if all okay, or cy, dx -> error if any problems.
  1040. X    mov    ax,3d00h        ;open for reading.
  1041. X    int    21h
  1042. X    jnc    read_file_found
  1043. X    mov    dx,offset file_not_found
  1044. X    stc
  1045. X    ret
  1046. X
  1047. Xread_file_found:
  1048. X    mov    handle,ax
  1049. X
  1050. X    mov    ah,3fh            ;read the whole thing in.
  1051. X    mov    bx,handle
  1052. X    mov    cx,65535 - 200
  1053. X    sub    cx,offset face_buffer
  1054. X    mov    dx,offset face_buffer
  1055. X    int    21h
  1056. X    jnc    read_okay
  1057. X    mov    dx,offset read_trouble
  1058. X    stc
  1059. X    ret
  1060. Xread_okay:
  1061. X    cmp    ax,cx            ;did we read all we asked for?
  1062. X    jne    read_enough
  1063. X    mov    dx,offset read_too_much
  1064. X    stc
  1065. X    ret
  1066. Xread_enough:
  1067. X    mov    ah,3eh            ;close the file.
  1068. X    mov    bx,handle
  1069. X    int    21h
  1070. X
  1071. X    clc
  1072. X    ret
  1073. X
  1074. X
  1075. Xget_byte:
  1076. X;enter with si -> two hex digits (maybe some CR/LFs first...)
  1077. X;exit with al = the byte.
  1078. X    lodsb                ;get a character.
  1079. X    cmp    al,CR            ;ignore CR and LF.
  1080. X    je    get_byte
  1081. X    cmp    al,LF
  1082. X    je    get_byte
  1083. X    call    get_digit        ;hex digits come in pairs.
  1084. X    shl    al,1
  1085. X    shl    al,1
  1086. X    shl    al,1
  1087. X    shl    al,1
  1088. X    mov    ah,al            ;shift the first nibble over.
  1089. X    lodsb                ;get the second nibble
  1090. X    call    get_digit
  1091. X    or    al,ah            ;combine and store.
  1092. X    ret
  1093. X
  1094. Xfind_header_ptr    dw    ?
  1095. X
  1096. Xfind_header:
  1097. X;enter with di -> header name
  1098. X;exit with nc,si -> header contents, or cy if not found.
  1099. X    mov    find_header_ptr,di    ;remember the pointer to their header.
  1100. X    push    ds
  1101. X    pop    es
  1102. X    mov    si,offset face_buffer
  1103. Xfind_header_0:
  1104. X    mov    di,find_header_ptr
  1105. X    mov    cx,30            ;no header name is >30 chars.
  1106. X    repe    cmpsb            ;compare the header chars.
  1107. X    cmp    [si-1],byte ptr ':'    ;if we didn't get as far as the colon,
  1108. X    jne    find_header_1        ;  they didn't match.
  1109. X    cmp    [di-1],byte ptr 0    ;if we didn't get as far as the null,
  1110. X    jne    find_header_1        ;  they didn't match.
  1111. X    call    skip_blanks
  1112. X    ret
  1113. Xfind_header_1:
  1114. X;scan to the next LF.
  1115. X    lodsb
  1116. X    cmp    al,LF
  1117. X    jne    find_header_1
  1118. X    cmp    byte ptr [si],CR    ;two crlf's in a row?
  1119. X    je    find_header_2        ;yes, no more headers.
  1120. X    cmp    byte ptr [si],LF    ;two lf's in a row?
  1121. X    jne    find_header_0        ;yes, no more headers.
  1122. Xfind_header_2:
  1123. X    stc
  1124. X    ret
  1125. X
  1126. X    include    skipblk.asm
  1127. X    include    getdig.asm
  1128. X    include    getnum.asm
  1129. X    include    chrout.asm
  1130. X    include    decout.asm
  1131. X    include    digout.asm
  1132. X
  1133. Xsystem_font    label    byte
  1134. X    font_struc    <9, 3, 10, 1>
  1135. X
  1136. X    db    20h,6
  1137. X    db    00000000b
  1138. X    db    00000000b
  1139. X    db    00000000b
  1140. X    db    00000000b
  1141. X    db    00000000b
  1142. X    db    00000000b
  1143. X    db    00000000b
  1144. X    db    00000000b
  1145. X    db    00000000b
  1146. X    db    00000000b
  1147. X    db    00000000b
  1148. X    db    00000000b
  1149. X
  1150. X    db    21h,4
  1151. X    db    01100000b
  1152. X    db    11110000b
  1153. X    db    11110000b
  1154. X    db    11110000b
  1155. X    db    11110000b
  1156. X    db    11110000b
  1157. X    db    01100000b
  1158. X    db    00000000b
  1159. X    db    01100000b
  1160. X    db    01100000b
  1161. X    db    00000000b
  1162. X    db    00000000b
  1163. X
  1164. X    db    22h,7
  1165. X    db    00000000b
  1166. X    db    00000000b
  1167. X    db    11101110b
  1168. X    db    01100110b
  1169. X    db    11001100b
  1170. X    db    00000000b
  1171. X    db    00000000b
  1172. X    db    00000000b
  1173. X    db    00000000b
  1174. X    db    00000000b
  1175. X    db    00000000b
  1176. X    db    00000000b
  1177. X
  1178. X    db    23h,6
  1179. X    db    00000000b
  1180. X    db    00000000b
  1181. X    db    01001000b
  1182. X    db    01001000b
  1183. X    db    11111100b
  1184. X    db    01001000b
  1185. X    db    11111100b
  1186. X    db    01001000b
  1187. X    db    01001000b
  1188. X    db    00000000b
  1189. X    db    00000000b
  1190. X    db    00000000b
  1191. X
  1192. X    db    24h,6
  1193. X    db    00000000b
  1194. X    db    00000000b
  1195. X    db    00010000b
  1196. X    db    01111100b
  1197. X    db    11010000b
  1198. X    db    01111100b
  1199. X    db    00010110b
  1200. X    db    01111100b
  1201. X    db    00010000b
  1202. X    db    00000000b
  1203. X    db    00000000b
  1204. X    db    00000000b
  1205. X
  1206. X    db    25h,6
  1207. X    db    00000000b
  1208. X    db    00000000b
  1209. X    db    11000000b
  1210. X    db    11001100b
  1211. X    db    00011000b
  1212. X    db    00110000b
  1213. X    db    01100000b
  1214. X    db    11001100b
  1215. X    db    00001100b
  1216. X    db    00000000b
  1217. X    db    00000000b
  1218. X    db    00000000b
  1219. X
  1220. X    db    26h,6
  1221. X    db    00000000b
  1222. X    db    00000000b
  1223. X    db    01110000b
  1224. X    db    11011000b
  1225. X    db    11011000b
  1226. X    db    01110000b
  1227. X    db    11011100b
  1228. X    db    11011000b
  1229. X    db    01101100b
  1230. X    db    00000000b
  1231. X    db    00000000b
  1232. X    db    00000000b
  1233. X
  1234. X    db    27h,4
  1235. X    db    00000000b
  1236. X    db    00000000b
  1237. X    db    00110000b
  1238. X    db    01100000b
  1239. X    db    11000000b
  1240. X    db    00000000b
  1241. X    db    00000000b
  1242. X    db    00000000b
  1243. X    db    00000000b
  1244. X    db    00000000b
  1245. X    db    00000000b
  1246. X    db    00000000b
  1247. X
  1248. X    db    28h,4
  1249. X    db    00000000b
  1250. X    db    00000000b
  1251. X    db    00110000b
  1252. X    db    01100000b
  1253. X    db    11000000b
  1254. X    db    11000000b
  1255. X    db    11000000b
  1256. X    db    01100000b
  1257. X    db    00110000b
  1258. X    db    00000000b
  1259. X    db    00000000b
  1260. X    db    00000000b
  1261. X
  1262. X    db    29h,4
  1263. X    db    00000000b
  1264. X    db    00000000b
  1265. X    db    11000000b
  1266. X    db    01100000b
  1267. X    db    00110000b
  1268. X    db    00110000b
  1269. X    db    00110000b
  1270. X    db    01100000b
  1271. X    db    11000000b
  1272. X    db    00000000b
  1273. X    db    00000000b
  1274. X    db    00000000b
  1275. X
  1276. X    db    2Ah,6
  1277. X    db    00000000b
  1278. X    db    00000000b
  1279. X    db    00000000b
  1280. X    db    00110000b
  1281. X    db    10110100b
  1282. X    db    01111000b
  1283. X    db    10110100b
  1284. X    db    00110000b
  1285. X    db    00000000b
  1286. X    db    00000000b
  1287. X    db    00000000b
  1288. X    db    00000000b
  1289. X
  1290. X    db    2Bh,6
  1291. X    db    00000000b
  1292. X    db    00000000b
  1293. X    db    00000000b
  1294. X    db    00110000b
  1295. X    db    00110000b
  1296. X    db    11111100b
  1297. X    db    00110000b
  1298. X    db    00110000b
  1299. X    db    00000000b
  1300. X    db    00000000b
  1301. X    db    00000000b
  1302. X    db    00000000b
  1303. X
  1304. X    db    2Ch,3
  1305. X    db    00000000b
  1306. X    db    00000000b
  1307. X    db    00000000b
  1308. X    db    00000000b
  1309. X    db    00000000b
  1310. X    db    00000000b
  1311. X    db    11100000b
  1312. X    db    11100000b
  1313. X    db    01100000b
  1314. X    db    11000000b
  1315. X    db    00000000b
  1316. X    db    00000000b
  1317. X
  1318. X    db    2Dh,6
  1319. X    db    00000000b
  1320. X    db    00000000b
  1321. X    db    00000000b
  1322. X    db    00000000b
  1323. X    db    00000000b
  1324. X    db    11111100b
  1325. X    db    00000000b
  1326. X    db    00000000b
  1327. X    db    00000000b
  1328. X    db    00000000b
  1329. X    db    00000000b
  1330. X    db    00000000b
  1331. X
  1332. X    db    2Eh,3
  1333. X    db    00000000b
  1334. X    db    00000000b
  1335. X    db    00000000b
  1336. X    db    00000000b
  1337. X    db    00000000b
  1338. X    db    00000000b
  1339. X    db    00000000b
  1340. X    db    11100000b
  1341. X    db    11100000b
  1342. X    db    00000000b
  1343. X    db    00000000b
  1344. X    db    00000000b
  1345. X
  1346. X    db    2Fh,7
  1347. X    db    00000000b
  1348. X    db    00000000b
  1349. X    db    00000110b
  1350. X    db    00001100b
  1351. X    db    00011000b
  1352. X    db    00110000b
  1353. X    db    01100000b
  1354. X    db    11000000b
  1355. X    db    00000000b
  1356. X    db    00000000b
  1357. X    db    00000000b
  1358. X    db    00000000b
  1359. X
  1360. X    db    30h,7
  1361. X    db    01111100b
  1362. X    db    11001110b
  1363. X    db    11001110b
  1364. X    db    11010110b
  1365. X    db    11010110b
  1366. X    db    11010110b
  1367. X    db    11100110b
  1368. X    db    11100110b
  1369. X    db    01111100b
  1370. X    db    00000000b
  1371. X    db    00000000b
  1372. X    db    00000000b
  1373. X
  1374. X    db    31h,7
  1375. X    db    01100000b
  1376. X    db    11100000b
  1377. X    db    01100000b
  1378. X    db    01100000b
  1379. X    db    01100000b
  1380. X    db    01100000b
  1381. X    db    01100000b
  1382. X    db    01100000b
  1383. X    db    11110000b
  1384. X    db    00000000b
  1385. X    db    00000000b
  1386. X    db    00000000b
  1387. X
  1388. X    db    32h,7
  1389. X    db    01111100b
  1390. X    db    10000110b
  1391. X    db    00000110b
  1392. X    db    00000110b
  1393. X    db    00001100b
  1394. X    db    00011000b
  1395. X    db    00110000b
  1396. X    db    01100000b
  1397. X    db    11111110b
  1398. X    db    00000000b
  1399. X    db    00000000b
  1400. X    db    00000000b
  1401. X
  1402. X    db    33h,7
  1403. X    db    11111100b
  1404. X    db    00001100b
  1405. X    db    00011000b
  1406. X    db    00110000b
  1407. X    db    00001100b
  1408. X    db    00000110b
  1409. X    db    00000110b
  1410. X    db    11000110b
  1411. X    db    01111100b
  1412. X    db    00000000b
  1413. X    db    00000000b
  1414. X    db    00000000b
  1415. X
  1416. X    db    34h,7
  1417. X    db    00011100b
  1418. X    db    00111100b
  1419. X    db    01101100b
  1420. X    db    11001100b
  1421. X    db    11001100b
  1422. X    db    11001100b
  1423. X    db    11111110b
  1424. X    db    00001100b
  1425. X    db    00001100b
  1426. X    db    00000000b
  1427. X    db    00000000b
  1428. X    db    00000000b
  1429. X
  1430. X    db    35h,7
  1431. X    db    11111110b
  1432. X    db    11000000b
  1433. X    db    11000000b
  1434. X    db    11000000b
  1435. X    db    11111100b
  1436. X    db    00000110b
  1437. X    db    00000110b
  1438. X    db    11000110b
  1439. X    db    01111100b
  1440. X    db    00000000b
  1441. X    db    00000000b
  1442. X    db    00000000b
  1443. X
  1444. X    db    36h,7
  1445. X    db    01111100b
  1446. X    db    11000110b
  1447. X    db    11000000b
  1448. X    db    11000000b
  1449. X    db    11111100b
  1450. X    db    11000110b
  1451. X    db    11000110b
  1452. X    db    11000110b
  1453. X    db    01111100b
  1454. X    db    00000000b
  1455. X    db    00000000b
  1456. X    db    00000000b
  1457. X
  1458. X    db    37h,7
  1459. X    db    11111110b
  1460. X    db    00000110b
  1461. X    db    00000110b
  1462. X    db    00001100b
  1463. X    db    00011000b
  1464. X    db    00110000b
  1465. X    db    00110000b
  1466. X    db    00110000b
  1467. X    db    00110000b
  1468. X    db    00000000b
  1469. X    db    00000000b
  1470. X    db    00000000b
  1471. X
  1472. X    db    38h,7
  1473. X    db    01111100b
  1474. X    db    11000110b
  1475. X    db    11000110b
  1476. X    db    11000110b
  1477. X    db    01111100b
  1478. X    db    11000110b
  1479. X    db    11000110b
  1480. X    db    11000110b
  1481. X    db    01111100b
  1482. X    db    00000000b
  1483. X    db    00000000b
  1484. X    db    00000000b
  1485. X
  1486. X    db    39h,7
  1487. X    db    01111100b
  1488. X    db    11000110b
  1489. X    db    11000110b
  1490. X    db    11000110b
  1491. X    db    01111110b
  1492. X    db    00000110b
  1493. X    db    00000110b
  1494. X    db    11000110b
  1495. X    db    01111100b
  1496. X    db    00000000b
  1497. X    db    00000000b
  1498. X    db    00000000b
  1499. X
  1500. X    db    3Ah,3
  1501. X    db    00000000b
  1502. X    db    00000000b
  1503. X    db    11100000b
  1504. X    db    11100000b
  1505. X    db    00000000b
  1506. X    db    00000000b
  1507. X    db    11100000b
  1508. X    db    11100000b
  1509. X    db    00000000b
  1510. X    db    00000000b
  1511. X    db    00000000b
  1512. X    db    00000000b
  1513. X
  1514. X    db    3Bh,3
  1515. X    db    00000000b
  1516. X    db    00000000b
  1517. X    db    11100000b
  1518. X    db    11100000b
  1519. X    db    00000000b
  1520. X    db    00000000b
  1521. X    db    11100000b
  1522. X    db    11100000b
  1523. X    db    01100000b
  1524. X    db    11000000b
  1525. X    db    00000000b
  1526. X    db    00000000b
  1527. X
  1528. X    db    3Ch,7
  1529. X    db    00000000b
  1530. X    db    00000000b
  1531. X    db    00000110b
  1532. X    db    00011100b
  1533. X    db    01110000b
  1534. X    db    11000000b
  1535. X    db    01110000b
  1536. X    db    00011100b
  1537. X    db    00000110b
  1538. X    db    00000000b
  1539. X    db    00000000b
  1540. X    db    00000000b
  1541. X
  1542. X    db    3Dh,6
  1543. X    db    00000000b
  1544. X    db    00000000b
  1545. X    db    00000000b
  1546. X    db    11111110b
  1547. X    db    00000000b
  1548. X    db    00000000b
  1549. X    db    11111110b
  1550. X    db    00000000b
  1551. X    db    00000000b
  1552. X    db    00000000b
  1553. X    db    00000000b
  1554. X    db    00000000b
  1555. X
  1556. X    db    3Eh,7
  1557. X    db    00000000b
  1558. X    db    00000000b
  1559. X    db    11000000b
  1560. X    db    01110000b
  1561. X    db    00011100b
  1562. X    db    00000110b
  1563. X    db    00011100b
  1564. X    db    01110000b
  1565. X    db    11000000b
  1566. X    db    00000000b
  1567. X    db    00000000b
  1568. X    db    00000000b
  1569. X
  1570. X    db    3Fh,6
  1571. X    db    01111100b
  1572. X    db    11000110b
  1573. X    db    00000110b
  1574. X    db    00001100b
  1575. X    db    00011000b
  1576. X    db    00110000b
  1577. X    db    00110000b
  1578. X    db    00000000b
  1579. X    db    00110000b
  1580. X    db    00000000b
  1581. X    db    00000000b
  1582. X    db    00000000b
  1583. X
  1584. X    db    40h,6
  1585. X    db    00000000b
  1586. X    db    00000000b
  1587. X    db    00111000b
  1588. X    db    01101100b
  1589. X    db    11011100b
  1590. X    db    11010100b
  1591. X    db    11011100b
  1592. X    db    11000000b
  1593. X    db    01111100b
  1594. X    db    00000000b
  1595. X    db    00000000b
  1596. X    db    00000000b
  1597. X
  1598. X    db    41h,7
  1599. X    db    01111100b
  1600. X    db    11000110b
  1601. X    db    11000110b
  1602. X    db    11000110b
  1603. X    db    11111110b
  1604. X    db    11000110b
  1605. X    db    11000110b
  1606. X    db    11000110b
  1607. X    db    11000110b
  1608. X    db    00000000b
  1609. X    db    00000000b
  1610. X    db    00000000b
  1611. X
  1612. X    db    42h,7
  1613. X    db    11111100b
  1614. X    db    11000110b
  1615. X    db    11000110b
  1616. X    db    11000110b
  1617. X    db    11111110b
  1618. X    db    11000110b
  1619. X    db    11000110b
  1620. X    db    11000110b
  1621. X    db    11111100b
  1622. X    db    00000000b
  1623. X    db    00000000b
  1624. X    db    00000000b
  1625. X
  1626. X    db    43h,7
  1627. X    db    01111100b
  1628. X    db    11000010b
  1629. X    db    11000000b
  1630. X    db    11000000b
  1631. X    db    11000000b
  1632. X    db    11000000b
  1633. X    db    11000000b
  1634. X    db    11000010b
  1635. X    db    01111100b
  1636. X    db    00000000b
  1637. X    db    00000000b
  1638. X    db    00000000b
  1639. X
  1640. X    db    44h,7
  1641. X    db    11111100b
  1642. X    db    11000110b
  1643. X    db    11000110b
  1644. X    db    11000110b
  1645. X    db    11000110b
  1646. X    db    11000110b
  1647. X    db    11000110b
  1648. X    db    11000110b
  1649. X    db    11111100b
  1650. X    db    00000000b
  1651. X    db    00000000b
  1652. X    db    00000000b
  1653. X
  1654. X    db    45h,6
  1655. X    db    11111100b
  1656. X    db    11000000b
  1657. X    db    11000000b
  1658. X    db    11000000b
  1659. X    db    11111000b
  1660. X    db    11000000b
  1661. X    db    11000000b
  1662. X    db    11000000b
  1663. X    db    11111100b
  1664. X    db    00000000b
  1665. X    db    00000000b
  1666. X    db    00000000b
  1667. X
  1668. X    db    46h,6
  1669. X    db    11111100b
  1670. X    db    11000000b
  1671. X    db    11000000b
  1672. X    db    11000000b
  1673. X    db    11111000b
  1674. X    db    11000000b
  1675. X    db    11000000b
  1676. X    db    11000000b
  1677. X    db    11000000b
  1678. X    db    00000000b
  1679. X    db    00000000b
  1680. X    db    00000000b
  1681. X
  1682. X    db    47h,7
  1683. X    db    01111100b
  1684. X    db    11000100b
  1685. X    db    11000000b
  1686. X    db    11000000b
  1687. X    db    11001110b
  1688. X    db    11000110b
  1689. X    db    11000110b
  1690. X    db    11000110b
  1691. X    db    01111100b
  1692. X    db    00000000b
  1693. X    db    00000000b
  1694. X    db    00000000b
  1695. X
  1696. X    db    48h,7
  1697. X    db    11000110b
  1698. X    db    11000110b
  1699. X    db    11000110b
  1700. X    db    11000110b
  1701. X    db    11111110b
  1702. X    db    11000110b
  1703. X    db    11000110b
  1704. X    db    11000110b
  1705. X    db    11000110b
  1706. X    db    00000000b
  1707. X    db    00000000b
  1708. X    db    00000000b
  1709. X
  1710. X    db    49h,2
  1711. X    db    11000000b
  1712. X    db    11000000b
  1713. X    db    11000000b
  1714. X    db    11000000b
  1715. X    db    11000000b
  1716. X    db    11000000b
  1717. X    db    11000000b
  1718. X    db    11000000b
  1719. X    db    11000000b
  1720. X    db    00000000b
  1721. X    db    00000000b
  1722. X    db    00000000b
  1723. X
  1724. X    db    4Ah,6
  1725. X    db    00001100b
  1726. X    db    00001100b
  1727. X    db    00001100b
  1728. X    db    00001100b
  1729. X    db    00001100b
  1730. X    db    00001100b
  1731. X    db    11001100b
  1732. X    db    11001100b
  1733. X    db    01111000b
  1734. X    db    00000000b
  1735. X    db    00000000b
  1736. X    db    00000000b
  1737. X
  1738. X    db    4Bh,8
  1739. X    db    11000011b
  1740. X    db    11000110b
  1741. X    db    11001100b
  1742. X    db    11011000b
  1743. X    db    11110000b
  1744. X    db    11110000b
  1745. X    db    11011000b
  1746. X    db    11001100b
  1747. X    db    11000110b
  1748. X    db    00000000b
  1749. X    db    00000000b
  1750. X    db    00000000b
  1751. X
  1752. X    db    4Ch,6
  1753. X    db    11000000b
  1754. X    db    11000000b
  1755. X    db    11000000b
  1756. X    db    11000000b
  1757. X    db    11000000b
  1758. X    db    11000000b
  1759. X    db    11000000b
  1760. X    db    11000000b
  1761. X    db    11111100b
  1762. X    db    00000000b
  1763. X    db    00000000b
  1764. X    db    00000000b
  1765. X
  1766. X    db    4Dh,9
  1767. X    db    11000000b,10000000b
  1768. X    db    11100001b,10000000b
  1769. X    db    11110011b,10000000b
  1770. X    db    11011101b,10000000b
  1771. X    db    11001001b,10000000b
  1772. X    db    11000001b,10000000b
  1773. X    db    11000001b,10000000b
  1774. X    db    11000001b,10000000b
  1775. X    db    11000001b,10000000b
  1776. X    db    00000000b,00000000b
  1777. X    db    00000000b,00000000b
  1778. X    db    00000000b,00000000b
  1779. X
  1780. X    db    4Eh,8
  1781. X    db    10000001b
  1782. X    db    11000001b
  1783. X    db    11100001b
  1784. X    db    10110001b
  1785. X    db    10011001b
  1786. X    db    10001101b
  1787. X    db    10000111b
  1788. X    db    10000011b
  1789. X    db    10000001b
  1790. X    db    00000000b
  1791. X    db    00000000b
  1792. X    db    00000000b
  1793. X
  1794. X    db    4Fh,7
  1795. X    db    01111100b
  1796. X    db    11000110b
  1797. X    db    11000110b
  1798. X    db    11000110b
  1799. X    db    11000110b
  1800. X    db    11000110b
  1801. X    db    11000110b
  1802. X    db    11000110b
  1803. X    db    01111100b
  1804. X    db    00000000b
  1805. X    db    00000000b
  1806. X    db    00000000b
  1807. X
  1808. X    db    50h,7
  1809. X    db    11111100b
  1810. X    db    11000110b
  1811. X    db    11000110b
  1812. X    db    11000110b
  1813. X    db    11111100b
  1814. X    db    11000000b
  1815. X    db    11000000b
  1816. X    db    11000000b
  1817. X    db    11000000b
  1818. X    db    00000000b
  1819. X    db    00000000b
  1820. X    db    00000000b
  1821. X
  1822. X    db    51h,7
  1823. X    db    01111100b
  1824. X    db    11000110b
  1825. X    db    11000110b
  1826. X    db    11000110b
  1827. X    db    11000110b
  1828. X    db    11000110b
  1829. X    db    11000110b
  1830. X    db    11000110b
  1831. X    db    01111100b
  1832. X    db    00000110b
  1833. X    db    00000000b
  1834. X    db    00000000b
  1835. X
  1836. X    db    52h,7
  1837. X    db    11111100b
  1838. X    db    11000110b
  1839. X    db    11000110b
  1840. X    db    11000110b
  1841. X    db    11111100b
  1842. X    db    11000110b
  1843. X    db    11000110b
  1844. X    db    11000110b
  1845. X    db    11000110b
  1846. X    db    00000000b
  1847. X    db    00000000b
  1848. X    db    00000000b
  1849. X
  1850. X    db    53h,7
  1851. X    db    01111100b
  1852. X    db    11000010b
  1853. X    db    11100000b
  1854. X    db    01110000b
  1855. X    db    00111000b
  1856. X    db    00011100b
  1857. X    db    00001110b
  1858. X    db    10000110b
  1859. X    db    01111100b
  1860. X    db    00000000b
  1861. X    db    00000000b
  1862. X    db    00000000b
  1863. X
  1864. X    db    54h,6
  1865. X    db    11111100b
  1866. X    db    00110000b
  1867. X    db    00110000b
  1868. X    db    00110000b
  1869. X    db    00110000b
  1870. X    db    00110000b
  1871. X    db    00110000b
  1872. X    db    00110000b
  1873. X    db    00110000b
  1874. X    db    00000000b
  1875. X    db    00000000b
  1876. X    db    00000000b
  1877. X
  1878. X    db    55h,7
  1879. X    db    11000110b
  1880. X    db    11000110b
  1881. X    db    11000110b
  1882. X    db    11000110b
  1883. X    db    11000110b
  1884. X    db    11000110b
  1885. X    db    11000110b
  1886. X    db    11000110b
  1887. X    db    01111100b
  1888. X    db    00000000b
  1889. X    db    00000000b
  1890. X    db    00000000b
  1891. X
  1892. X    db    56h,7
  1893. X    db    11000110b
  1894. X    db    11000110b
  1895. X    db    11000110b
  1896. X    db    11000110b
  1897. X    db    11000110b
  1898. X    db    11000110b
  1899. X    db    11000110b
  1900. X    db    11000100b
  1901. X    db    11111000b
  1902. X    db    00000000b
  1903. X    db    00000000b
  1904. X    db    00000000b
  1905. X
  1906. X    db    57h,10
  1907. X    db    11001100b,11000000b
  1908. X    db    11001100b,11000000b
  1909. X    db    11001100b,11000000b
  1910. X    db    11001100b,11000000b
  1911. X    db    11001100b,11000000b
  1912. X    db    11001100b,11000000b
  1913. X    db    11001100b,11000000b
  1914. X    db    11001100b,10000000b
  1915. X    db    11111111b,00000000b
  1916. X    db    00000000b,00000000b
  1917. X    db    00000000b,00000000b
  1918. X    db    00000000b,00000000b
  1919. X
  1920. X    db    58h,7
  1921. X    db    11000110b
  1922. X    db    11000110b
  1923. X    db    11000110b
  1924. X    db    11000110b
  1925. X    db    01111100b
  1926. X    db    11000110b
  1927. X    db    11000110b
  1928. X    db    11000110b
  1929. X    db    11000110b
  1930. X    db    00000000b
  1931. X    db    00000000b
  1932. X    db    00000000b
  1933. X
  1934. X    db    59h,6
  1935. X    db    11001100b
  1936. X    db    11001100b
  1937. X    db    11001100b
  1938. X    db    11001100b
  1939. X    db    01111000b
  1940. X    db    00110000b
  1941. X    db    00110000b
  1942. X    db    00110000b
  1943. X    db    00110000b
  1944. X    db    00000000b
  1945. X    db    00000000b
  1946. X    db    00000000b
  1947. X
  1948. X    db    5Ah,8
  1949. X    db    11111111b
  1950. X    db    00000011b
  1951. X    db    00000110b
  1952. X    db    00001100b
  1953. X    db    00011000b
  1954. X    db    00110000b
  1955. X    db    01100000b
  1956. X    db    11000000b
  1957. X    db    11111111b
  1958. X    db    00000000b
  1959. X    db    00000000b
  1960. X    db    00000000b
  1961. X
  1962. X    db    5Bh,4
  1963. X    db    11110000b
  1964. X    db    11000000b
  1965. X    db    11000000b
  1966. X    db    11000000b
  1967. X    db    11000000b
  1968. X    db    11000000b
  1969. X    db    11000000b
  1970. X    db    11000000b
  1971. X    db    11110000b
  1972. X    db    00000000b
  1973. X    db    00000000b
  1974. X    db    00000000b
  1975. X
  1976. X    db    5Ch,5
  1977. X    db    10000000b
  1978. X    db    10000000b
  1979. X    db    01000000b
  1980. X    db    01000000b
  1981. X    db    00100000b
  1982. X    db    00100000b
  1983. X    db    00010000b
  1984. X    db    00010000b
  1985. X    db    00001000b
  1986. X    db    00000000b
  1987. X    db    00000000b
  1988. X    db    00000000b
  1989. X
  1990. X    db    5Dh,4
  1991. X    db    11110000b
  1992. X    db    00110000b
  1993. X    db    00110000b
  1994. X    db    00110000b
  1995. X    db    00110000b
  1996. X    db    00110000b
  1997. X    db    00110000b
  1998. X    db    00110000b
  1999. X    db    11110000b
  2000. X    db    00000000b
  2001. X    db    00000000b
  2002. X    db    00000000b
  2003. X
  2004. X    db    5Eh,8
  2005. X    db    00000000b
  2006. X    db    00000000b
  2007. X    db    00010000b
  2008. X    db    00111000b
  2009. X    db    01101100b
  2010. X    db    11000110b
  2011. X    db    00000000b
  2012. X    db    00000000b
  2013. X    db    00000000b
  2014. X    db    00000000b
  2015. X    db    00000000b
  2016. X    db    00000000b
  2017. X
  2018. X    db    5Fh,8
  2019. X    db    00000000b
  2020. X    db    00000000b
  2021. X    db    00000000b
  2022. X    db    00000000b
  2023. X    db    00000000b
  2024. X    db    00000000b
  2025. X    db    00000000b
  2026. X    db    00000000b
  2027. X    db    00000000b
  2028. X    db    11111111b
  2029. X    db    00000000b
  2030. X    db    00000000b
  2031. X
  2032. X    db    60h,6
  2033. X    db    00000000b
  2034. X    db    00000000b
  2035. X    db    11000000b
  2036. X    db    01100000b
  2037. X    db    00110000b
  2038. X    db    00000000b
  2039. X    db    00000000b
  2040. X    db    00000000b
  2041. X    db    00000000b
  2042. X    db    00000000b
  2043. X    db    00000000b
  2044. X    db    00000000b
  2045. X
  2046. X    db    61h,7
  2047. X    db    00000000b
  2048. X    db    00000000b
  2049. X    db    01111100b
  2050. X    db    10000110b
  2051. X    db    01111110b
  2052. X    db    11000110b
  2053. X    db    11000110b
  2054. X    db    11000110b
  2055. X    db    01111110b
  2056. X    db    00000000b
  2057. X    db    00000000b
  2058. X    db    00000000b
  2059. X
  2060. X    db    62h,7
  2061. X    db    11000000b
  2062. X    db    11000000b
  2063. X    db    11111100b
  2064. X    db    11000110b
  2065. X    db    11000110b
  2066. X    db    11000110b
  2067. X    db    11000110b
  2068. X    db    11000110b
  2069. X    db    11111100b
  2070. X    db    00000000b
  2071. X    db    00000000b
  2072. X    db    00000000b
  2073. X
  2074. X    db    63h,6
  2075. X    db    00000000b
  2076. X    db    00000000b
  2077. X    db    01111000b
  2078. X    db    11000100b
  2079. X    db    11000000b
  2080. X    db    11000000b
  2081. X    db    11000000b
  2082. X    db    11000100b
  2083. X    db    01111000b
  2084. X    db    00000000b
  2085. X    db    00000000b
  2086. X    db    00000000b
  2087. X
  2088. X    db    64h,7
  2089. X    db    00000110b
  2090. X    db    00000110b
  2091. X    db    01111110b
  2092. X    db    11000110b
  2093. X    db    11000110b
  2094. X    db    11000110b
  2095. X    db    11000110b
  2096. X    db    11000110b
  2097. X    db    01111110b
  2098. X    db    00000000b
  2099. X    db    00000000b
  2100. X    db    00000000b
  2101. X
  2102. X    db    65h,7
  2103. X    db    00000000b
  2104. X    db    00000000b
  2105. X    db    01111100b
  2106. X    db    11000110b
  2107. X    db    11000110b
  2108. X    db    11111110b
  2109. X    db    11000000b
  2110. X    db    11000110b
  2111. X    db    01111100b
  2112. X    db    00000000b
  2113. X    db    00000000b
  2114. X    db    00000000b
  2115. X
  2116. X    db    66h,6
  2117. X    db    00111100b
  2118. X    db    01100000b
  2119. X    db    11110000b
  2120. X    db    01100000b
  2121. X    db    01100000b
  2122. X    db    01100000b
  2123. X    db    01100000b
  2124. X    db    01100000b
  2125. X    db    01100000b
  2126. X    db    00000000b
  2127. X    db    00000000b
  2128. X    db    00000000b
  2129. X
  2130. X    db    67h,7
  2131. X    db    00000000b
  2132. X    db    00000000b
  2133. X    db    01111110b
  2134. X    db    11000110b
  2135. X    db    11000110b
  2136. X    db    11000110b
  2137. X    db    11000110b
  2138. X    db    11000110b
  2139. X    db    01111110b
  2140. X    db    00000110b
  2141. X    db    10000110b
  2142. X    db    01111100b
  2143. X
  2144. X    db    68h,7
  2145. X    db    11000000b
  2146. X    db    11000000b
  2147. X    db    11111100b
  2148. X    db    11000110b
  2149. X    db    11000110b
  2150. X    db    11000110b
  2151. X    db    11000110b
  2152. X    db    11000110b
  2153. X    db    11000110b
  2154. X    db    00000000b
  2155. X    db    00000000b
  2156. X    db    00000000b
  2157. X
  2158. X    db    69h,2
  2159. X    db    11000000b
  2160. X    db    00000000b
  2161. X    db    11000000b
  2162. X    db    11000000b
  2163. X    db    11000000b
  2164. X    db    11000000b
  2165. X    db    11000000b
  2166. X    db    11000000b
  2167. X    db    11000000b
  2168. X    db    00000000b
  2169. X    db    00000000b
  2170. X    db    00000000b
  2171. X
  2172. X    db    6Ah,5
  2173. X    db    00000000b
  2174. X    db    00000000b
  2175. X    db    00011000b
  2176. X    db    00000000b
  2177. X    db    00011000b
  2178. X    db    00011000b
  2179. X    db    00011000b
  2180. X    db    00011000b
  2181. X    db    00011000b
  2182. X    db    00011000b
  2183. X    db    10011000b
  2184. X    db    01110000b
  2185. X
  2186. X    db    6Bh,6
  2187. X    db    11000000b
  2188. X    db    11000000b
  2189. X    db    11000000b
  2190. X    db    11001100b
  2191. X    db    11011000b
  2192. X    db    11110000b
  2193. X    db    11110000b
  2194. X    db    11011000b
  2195. X    db    11001100b
  2196. X    db    00000000b
  2197. X    db    00000000b
  2198. X    db    00000000b
  2199. X
  2200. X    db    6Ch,2
  2201. X    db    11000000b
  2202. X    db    11000000b
  2203. X    db    11000000b
  2204. X    db    11000000b
  2205. X    db    11000000b
  2206. X    db    11000000b
  2207. X    db    11000000b
  2208. X    db    11000000b
  2209. X    db    11000000b
  2210. X    db    00000000b
  2211. X    db    00000000b
  2212. X    db    00000000b
  2213. X
  2214. X    db    6Dh,10
  2215. X    db    00000000b,00000000b
  2216. X    db    00000000b,00000000b
  2217. X    db    11111111b,00000000b
  2218. X    db    11001100b,10000000b
  2219. X    db    11001100b,11000000b
  2220. X    db    11001100b,11000000b
  2221. X    db    11001100b,11000000b
  2222. X    db    11001100b,11000000b
  2223. X    db    11001100b,11000000b
  2224. X    db    00000000b,00000000b
  2225. X    db    00000000b,00000000b
  2226. X    db    00000000b,00000000b
  2227. X
  2228. X    db    6Eh,7
  2229. X    db    00000000b
  2230. X    db    00000000b
  2231. X    db    11111100b
  2232. X    db    11000110b
  2233. X    db    11000110b
  2234. X    db    11000110b
  2235. X    db    11000110b
  2236. X    db    11000110b
  2237. X    db    11000110b
  2238. X    db    00000000b
  2239. X    db    00000000b
  2240. X    db    00000000b
  2241. X
  2242. X    db    6Fh,7
  2243. X    db    00000000b
  2244. X    db    00000000b
  2245. X    db    01111100b
  2246. X    db    11000110b
  2247. X    db    11000110b
  2248. X    db    11000110b
  2249. X    db    11000110b
  2250. X    db    11000110b
  2251. X    db    01111100b
  2252. X    db    00000000b
  2253. X    db    00000000b
  2254. X    db    00000000b
  2255. X
  2256. X    db    70h,7
  2257. X    db    00000000b
  2258. X    db    00000000b
  2259. X    db    11111100b
  2260. X    db    11000110b
  2261. X    db    11000110b
  2262. X    db    11000110b
  2263. X    db    11000110b
  2264. X    db    11000110b
  2265. X    db    11111100b
  2266. X    db    11000000b
  2267. X    db    11000000b
  2268. X    db    00000000b
  2269. X
  2270. X    db    71h,7
  2271. X    db    00000000b
  2272. X    db    00000000b
  2273. X    db    01111110b
  2274. X    db    11000110b
  2275. X    db    11000110b
  2276. X    db    11000110b
  2277. X    db    11000110b
  2278. X    db    11000110b
  2279. X    db    01111110b
  2280. X    db    00000110b
  2281. X    db    00000110b
  2282. X    db    00000000b
  2283. X
  2284. X    db    72h,6
  2285. X    db    00000000b
  2286. X    db    00000000b
  2287. X    db    11011100b
  2288. X    db    11100000b
  2289. X    db    11000000b
  2290. X    db    11000000b
  2291. X    db    11000000b
  2292. X    db    11000000b
  2293. X    db    11000000b
  2294. X    db    00000000b
  2295. X    db    00000000b
  2296. X    db    00000000b
  2297. X
  2298. X    db    73h,6
  2299. X    db    00000000b
  2300. X    db    00000000b
  2301. X    db    01111000b
  2302. X    db    11000100b
  2303. X    db    11100000b
  2304. X    db    01111000b
  2305. X    db    00011100b
  2306. X    db    10001100b
  2307. X    db    01111000b
  2308. X    db    00000000b
  2309. X    db    00000000b
  2310. X    db    00000000b
  2311. X
  2312. X    db    74h,4
  2313. X    db    01100000b
  2314. X    db    01100000b
  2315. X    db    11110000b
  2316. X    db    01100000b
  2317. X    db    01100000b
  2318. X    db    01100000b
  2319. X    db    01100000b
  2320. X    db    01100000b
  2321. X    db    00110000b
  2322. X    db    00000000b
  2323. X    db    00000000b
  2324. X    db    00000000b
  2325. X
  2326. X    db    75h,7
  2327. X    db    00000000b
  2328. X    db    00000000b
  2329. X    db    11000110b
  2330. X    db    11000110b
  2331. X    db    11000110b
  2332. X    db    11000110b
  2333. X    db    11000110b
  2334. X    db    11000110b
  2335. X    db    01111100b
  2336. X    db    00000000b
  2337. X    db    00000000b
  2338. X    db    00000000b
  2339. X
  2340. X    db    76h,7
  2341. X    db    00000000b
  2342. X    db    00000000b
  2343. X    db    11000110b
  2344. X    db    11000110b
  2345. X    db    11000110b
  2346. X    db    11000110b
  2347. X    db    11000110b
  2348. X    db    11000100b
  2349. X    db    11111000b
  2350. X    db    00000000b
  2351. X    db    00000000b
  2352. X    db    00000000b
  2353. X
  2354. X    db    77h,10
  2355. X    db    00000000b,00000000b
  2356. X    db    00000000b,00000000b
  2357. X    db    11001100b,11000000b
  2358. X    db    11001100b,11000000b
  2359. X    db    11001100b,11000000b
  2360. X    db    11001100b,11000000b
  2361. X    db    11001100b,11000000b
  2362. X    db    11001100b,10000000b
  2363. X    db    11111111b,00000000b
  2364. X    db    00000000b,00000000b
  2365. X    db    00000000b,00000000b
  2366. X    db    00000000b,00000000b
  2367. X
  2368. X    db    78h,7
  2369. X    db    00000000b
  2370. X    db    00000000b
  2371. X    db    11000110b
  2372. X    db    11000110b
  2373. X    db    11000110b
  2374. X    db    01111100b
  2375. X    db    11000110b
  2376. X    db    11000110b
  2377. X    db    11000110b
  2378. X    db    00000000b
  2379. X    db    00000000b
  2380. X    db    00000000b
  2381. X
  2382. X    db    79h,7
  2383. X    db    00000000b
  2384. X    db    00000000b
  2385. X    db    11000110b
  2386. X    db    11000110b
  2387. X    db    11000110b
  2388. X    db    11000110b
  2389. X    db    11000110b
  2390. X    db    11000110b
  2391. X    db    01111110b
  2392. X    db    00000110b
  2393. X    db    10000110b
  2394. X    db    01111100b
  2395. X
  2396. X    db    7Ah,6
  2397. X    db    00000000b
  2398. X    db    00000000b
  2399. X    db    11111100b
  2400. X    db    00001100b
  2401. X    db    00011000b
  2402. X    db    00110000b
  2403. X    db    01100000b
  2404. X    db    11000000b
  2405. X    db    11111100b
  2406. X    db    00000000b
  2407. X    db    00000000b
  2408. X    db    00000000b
  2409. X
  2410. X    db    7Bh,8
  2411. X    db    00000000b
  2412. X    db    00000000b
  2413. X    db    00111000b
  2414. X    db    01100000b
  2415. X    db    01100000b
  2416. X    db    11000000b
  2417. X    db    01100000b
  2418. X    db    01100000b
  2419. X    db    00111000b
  2420. X    db    00000000b
  2421. X    db    00000000b
  2422. X    db    00000000b
  2423. X
  2424. X    db    7Ch,2
  2425. X    db    11000000b
  2426. X    db    11000000b
  2427. X    db    11000000b
  2428. X    db    11000000b
  2429. X    db    11000000b
  2430. X    db    11000000b
  2431. X    db    11000000b
  2432. X    db    11000000b
  2433. X    db    11000000b
  2434. X    db    11000000b
  2435. X    db    11000000b
  2436. X    db    00000000b
  2437. X
  2438. X    db    7Dh,8
  2439. X    db    00000000b
  2440. X    db    00000000b
  2441. X    db    11100000b
  2442. X    db    00110000b
  2443. X    db    00110000b
  2444. X    db    00011000b
  2445. X    db    00110000b
  2446. X    db    00110000b
  2447. X    db    11100000b
  2448. X    db    00000000b
  2449. X    db    00000000b
  2450. X    db    00000000b
  2451. X
  2452. X    db    7Eh,8
  2453. X    db    00000000b
  2454. X    db    00000000b
  2455. X    db    00000000b
  2456. X    db    01100000b
  2457. X    db    10010010b
  2458. X    db    00001100b
  2459. X    db    00000000b
  2460. X    db    00000000b
  2461. X    db    00000000b
  2462. X    db    00000000b
  2463. X    db    00000000b
  2464. X    db    00000000b
  2465. X
  2466. X    db    80h,0            ;end of the font.
  2467. X
  2468. Xface_buffer    label    byte
  2469. X
  2470. Xcode    ends
  2471. X
  2472. X    end    start
  2473. SHAR_EOF
  2474. chmod 0644 showface.asm || echo "restore of showface.asm fails"
  2475. echo "x - extracting showface.com (Binary)"
  2476. sed 's/^X//' << 'SHAR_EOF' > s2_temp_.tmp &&
  2477. Xbegin 600 showface.com
  2478. XMZ?<-<VAO=V9A8V4Z(%EO=2!M=7-T(&AA=F4@86X@14=!(&]R(%9'02!D:7-P
  2479. XM;&%Y+@T*)$9A8V4@=FEE=V5R('9E<G-I;VX@,2XQ($-O<'ER:6=H="`Q.3DP
  2480. XM+"!2=7-S96QL($YE;'-O;BX-"E1H:7,@<')O9W)A;2!I<R!F<F5E('-O9G1W
  2481. XM87)E.R!S964@=&AE(&9I;&4@0T]064E.1R!F;W(@9&5T86EL<RX-"DY/(%=!
  2482. XM4E)!3E19.R!S964@=&AE(&9I;&4@0T]064E.1R!F;W(@9&5T86EL<RX-"@T*
  2483. XM)$9I;&5N86UE.B`D1FEL92!N;W0@9F]U;F0D5')O=6)L92!R96%D:6YG('1H
  2484. XM92!F:6QE)%1H92!F:6QE(&ES('1O;R!L87)G9214:&ES(&9I;&4@9&]E<VXG
  2485. XM="!H879E(&$@4&EC1&%T82!H96%D97(L('=H:6-H(&UE86YS(&ET('!R;V)A
  2486. XM8FQY(&ES;B=T(&$@9F%C92X-"B14:&ES(&9I;&4@:&%S(&$@4&EC1&%T82!W
  2487. XM:71H('@@/2`P(&]R('@@/C,R,"P@;W(@>2`](#`@;W(@>2`^,C`P+"!O<B!Z
  2488. XM("$](#@-"B1&:7)S=$YA;64`3&%S=$YA;64`4&EC1&%T80``````````````
  2489. XM````````````````````````````````````````````````````````````
  2490. XM````````````````````````````````````````````````````````````
  2491. XM`````````````````````````````````````````````+P#9P25!)T$H@2G
  2492. XM!-0$"@2G`T<$5@18!%T$8@1F!+,#N``:S1`\&KY[`W0#OFL#K1X'OUT#N0<`
  2493. XM\Z7_X+@3`,T0Z&$`Z&\`P^B``+@#`,T0P[@0`,T0N``0NP<_S1"X`!"["`?-
  2494. XM$+@`$+L)",T0N``0NPH0S1"X`!"["QC-$+@`$+L,(,T0N``0NPTHS1"X`!"[
  2495. XM#C#-$+@`$+L/.,T0P[@#`,T0P[@7$+L``+D``1X'NO$(S1##O_$+L`"Y#`#S
  2496. XMJO[`/$!R];KQ"^L#NO$(N!(0NP``N0`!'@?-$,.X`*".P+A``??B`\&+^,-'
  2497. XMPX'O0`'#@<=``<,FB`7#P[@`H([`N*``]^*+^(O!T>C1Z`/XNLX#N`4"[D**
  2498. XMQ.Y*L`CN0M'A@.$'M(#2[,/0[-#,@]<`PX'OH`##@<>@`,.*V#+_BL3NBH?A
  2499. XM!":&!8J'Z08FAD50T.R*Q.Z*A^4%)H8%BH?M!R:&15#0Y,.P_^Y*N`4`[D**
  2500. XMQ.[#```````````````````````````)"0D)"0D)"0D)"0D)"0D)"0D)"0L+
  2501. XM"PL+"PL+"PL+"PL+"PL+"PL+#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/
  2502. XM#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/
  2503. XM#P\/#P\/#P\("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(
  2504. XM"`@(!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'
  2505. XM!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<`````````
  2506. XM````````````````````````````````````````````#`P,#`P,#`P,#`P,
  2507. XM#`P,#`P,#`P.#@X.#@X.#@X.#@X.#@X.#@X.#@\/#P\/#P\/#P\/#P\/#P\/
  2508. XM#P\/"`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(
  2509. XM"`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(
  2510. XM"`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(
  2511. XM"`@("`@("`@'!P<'!P<'!P<'!P<'!P<'!P<'!P``````````````````````
  2512. XM````#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`T-
  2513. XM#0T-#0T-#0T-#0T-#0T-#0T-#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/
  2514. XM#P\/#P\/#P\/#P\/#P@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(
  2515. XM"`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(
  2516. XM"`@("`@("`@("`@("`@("`@("`@("`@'!P<'!P<'!P<'!P<'!P<'!P<'!P<'
  2517. XM!P<'!P<'!P<'!P<'!P<'!P<'```````````````````````````*"@H*"@H*
  2518. XM"@H*"@H*"@H*"@H*"@L+"PL+"PL+"PL+"PL+"PL+"PL+"PL+"PL+"PL+"PL+
  2519. XM"PL+"PL+"PL/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/
  2520. XM#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P@(
  2521. XM"`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@'!P<'!P<'
  2522. XM!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'!P<'
  2523. XM!P<'!P<'!P<`````````````````````````````````````````````````
  2524. XM````````````````````````````````````````````````````````````
  2525. XM````````````````````````````````````````````````````````````
  2526. XM````````````````````````````````````````````````````````````
  2527. XM````````````````````````````````````````````````````````````
  2528. XM````````````````````````````````````````````````````````````
  2529. XM````````````````````````````````````````````````````````````
  2530. XM````````````````````````````````````````````````````````````
  2531. XM````````````````````````````````````````````````````````````
  2532. XM````````````````````````````````````````````````````````````
  2533. XM````````````````````````````````````````````````````````````
  2534. XM````````````````````````````````````````````````````````````
  2535. XM````````````````````````````````````````````````````````````
  2536. XM````````````````````````````````````````````````````````````
  2537. XM````````````````````````````````````````````````````````````
  2538. XM````````````````````````````````````````````````````````````
  2539. XM````````````````````````````````````````````````````````````
  2540. XM````````````````````````````````````````````````````````````
  2541. XM````````````````````````````````````````````````````````````
  2542. XM````````````````````````````````````````````````````````````
  2543. XM````````````````````````````````````````````````````````````
  2544. XM````````````````````````````````````````````````````````````
  2545. XM````````````````````````````````````````````````````````````
  2546. XM````````````````````````````````````````````````````````````
  2547. XM````````````````````````````````````````````````````````````
  2548. XM````````````````````````````````````````````````````````````
  2549. XM````````````````````````````````````````````````````````````
  2550. XM````````````````````````````````````````````````````````````
  2551. XM````````````````````````````````````````````````````````````
  2552. XM````````````````````````````````````````````````````````````
  2553. XM````````````````````````````````````````````````````````````
  2554. XM````````````````````````````````````````````````````````````
  2555. XM````````````````````````````````````````````````````````````
  2556. XM````````````````````````````````````````````````````````````
  2557. XM``````````````````"T"<TAN`I,S2&Z-`&T"<TAN``2NQ``N?__S1"#^?]U
  2558. XM!;H#`>O;NO("M!K-(?R^@0#HAP(\#70'Z$``<L3K-\8&@`"`Q@:!``#&!H(`
  2559. XM#;KB`;0)S2&Z@`"T"LTAL`KH\@*^@@#H5`(\#70+Z`T`<P2T"<TAZ\FX`$S-
  2560. XM(1X'OQT#B]>LJCPO=`0\7'4"B]<\('0(/`ET!#P-=>A.5L9%_P"+^N@6`KH=
  2561. XM`[1.N0``S2%R%U>^$`.LJ@K`=?JZ'0/H$P!?<@ZT3^OE7NCO`3P-=:OXPU[#
  2562. XMZ%<!<PO#NBL"^<.Z?`+YP[_=`NB>`7+NO^8"Z/H!O^H"Z/0!O^X"Z.X!@S[F
  2563. XM`@!TVH$^Y@)``7?2@S[J`@!TRX$^Z@+(`'?#@S[N`@AUO.AU\[_*`NA<`7(-
  2564. XMBP[F`H/!'KH*`.A8`+`@Z&D`45*_U`+H0`%:67(#Z$0`O^4"Z#,!BQ;J`KD`
  2565. XM`/\670.+#NH"45!7BP[F`HK\Z/D`BN?_%F4#_Q9?`^+O7UC_%F$#6>+?M`?-
  2566. XM(?\69P/_%FD#^,.L/`UT"SP*=`=6Z`D`7NOPPP````#_45(&HI00H;X2`P;`
  2567. XM$J.5$+[&$JV&X`K`=!LZ)I00=!JT``4'`-'HT>C1Z%+W)I406@/PZ]X'6EGY
  2568. XMPZ*7$/\670.+#I4045!7B@Z7$#+ML(#K"=#(@]8`_Q9?`X0$=`A0L/__%F4#
  2569. XM6.+I1E]8_Q9C`UGBT@=:6?X&EQ`"#I<0@-4`^,,``+@`/<TA<P6Z[0'YPZ,<
  2570. XM$;0_BQX<$;DW_X'I*ABZ*AC-(7,%NOP!^<,[P74%NA4"^<.T/HL>'!'-(?C#
  2571. XMK#P-=/L\"G3WZ%$`T.#0X-#@T."*X*SH0P`*Q,,``(D^=A$>![XJ&(L^=A&Y
  2572. XM'@#SIH!\_SIU"H!]_P!U!.@2`,.L/`IU^X`\#70%@#P*==CYPZP\('3[/`ET
  2573. XM]T[#/#!R(#PY=P0L,/C#/&%R"#QF=P0L5_C#/$%R"#Q&=P0L-_C#^<.]"@#K
  2574. XM`[T0`.C$_^C,_W)&"L!U`[T(`#/),]NL/'AT*#Q8="3HL_]R)#+D.\5S'E"+
  2575. XMQ??AB\A2B\7WXXO86@/:6`/(@],`Z].]$`#KSDZ)#8E=`OCK$#P_^74+@\8"
  2576. XMN?__N___Z^?#4%**T+0"S2%:6,.+\(OZ"\)U!+`PZ^DSP(O8B^BY(`#1YM'7
  2577. XME>@:`)63Z!4`DQ+`)^+ML3#H(P"+P^@7`(O%ZQ.0$L`GAL02P">&Q,.Q,)+H
  2578. XM`0"24(K$Z`$`6(K@T.C0Z-#HT.CH`@"*Q"0/!)`G%$`G.L%T!+'_ZX;#"0`#
  2579. XM``H``0`@!@```````````````"$$8/#P\/#P8`!@8```(@<``.YFS```````
  2580. XM```C!@``2$C\2/Q(2````"0&```0?-!\%GP0````)08``,#,&#!@S`P````F
  2581. XM!@``<-C8<-S8;````"<$```P8,``````````*`0``#!@P,#`8#`````I!```
  2582. XMP&`P,#!@P````"H&````,+1XM#``````*P8````P,/PP,``````L`P``````
  2583. XM`.#@8,```"T&``````#\````````+@,`````````X.`````O!P``!@P8,&#`
  2584. XM`````#`'?,[.UM;6YN9\````,0=@X&!@8&!@8/`````R!WR&!@8,&#!@_@``
  2585. XM`#,'_`P8,`P&!L9\````-`<</&S,S,S^#`P````U!_[`P,#\!@;&?````#8'
  2586. XM?,;`P/S&QL9\````-P?^!@8,&#`P,#`````X!WS&QL9\QL;&?````#D'?,;&
  2587. XMQGX&!L9\````.@,``.#@``#@X``````[`P``X.```.#@8,```#P'```&''#`
  2588. XM<!P&````/08```#^``#^```````^!P``P'`<!AQPP````#\&?,8&#!@P,``P
  2589. XM````0`8``#ALW-3<P'P```!!!WS&QL;^QL;&Q@```$('_,;&QO[&QL;\````
  2590. XM0P=\PL#`P,#`PGP```!$!_S&QL;&QL;&_````$4&_,#`P/C`P,#\````1@;\
  2591. XMP,#`^,#`P,````!'!WS$P,#.QL;&?````$@'QL;&QO[&QL;&````20+`P,#`
  2592. XMP,#`P,````!*!@P,#`P,#,S,>````$L(P\;,V/#PV,S&````3`;`P,#`P,#`
  2593. XMP/P```!-"<"`X8#S@-V`R8#!@,&`P8#!@````````$X(@<'AL9F-AX.!````
  2594. XM3P=\QL;&QL;&QGP```!0!_S&QL;\P,#`P````%$'?,;&QL;&QL9\!@``4@?\
  2595. XMQL;&_,;&QL8```!3!WS"X'`X'`Z&?````%0&_#`P,#`P,#`P````50?&QL;&
  2596. XMQL;&QGP```!6!\;&QL;&QL;$^````%<*S,#,P,S`S,#,P,S`S,#,@/\`````
  2597. XM````6`?&QL;&?,;&QL8```!9!LS,S,QX,#`P,````%H(_P,&#!@P8,#_````
  2598. XM6P3PP,#`P,#`P/````!<!8"`0$`@(!`0"````%T$\#`P,#`P,##P````7@@`
  2599. XM`!`X;,8```````!?"````````````/\``&`&``#`8#``````````80<``'R&
  2600. XM?L;&QGX```!B!\#`_,;&QL;&_````&,&``!XQ,#`P,1X````9`<&!G[&QL;&
  2601. XMQGX```!E!P``?,;&_L#&?````&8&/&#P8&!@8&!@````9P<``'[&QL;&QGX&
  2602. XMAGQH!\#`_,;&QL;&Q@```&D"P`#`P,#`P,#`````:@4``!@`&!@8&!@8F'!K
  2603. XM!L#`P,S8\/#8S````&P"P,#`P,#`P,#`````;0H`````_P#,@,S`S,#,P,S`
  2604. XMS,````````!N!P``_,;&QL;&Q@```&\'``!\QL;&QL9\````<`<``/S&QL;&
  2605. XMQOS`P`!Q!P``?L;&QL;&?@8&`'(&``#<X,#`P,#`````<P8``'C$X'@<C'@`
  2606. XM``!T!&!@\&!@8&!@,````'4'``#&QL;&QL9\````=@<``,;&QL;&Q/@```!W
  2607. XM"@````#,P,S`S,#,P,S`S(#_`````````'@'``#&QL9\QL;&````>0<``,;&
  2608. XMQL;&QGX&AGQZ!@``_`P8,&#`_````'L(```X8&#`8&`X````?`+`P,#`P,#`
  2609. XCP,#`P`!]"```X#`P&#`PX````'X(````8)(,````````@```
  2610. X`
  2611. Xend
  2612. SHAR_EOF
  2613. echo "uudecoding file showface.com"
  2614. uudecode < s2_temp_.tmp && rm -f s2_temp_.tmp &&
  2615. chmod 0644 showface.com || echo "restore of showface.com fails"
  2616. echo "x - extracting skipblk.asm (Text)"
  2617. sed 's/^X//' << 'SHAR_EOF' > skipblk.asm &&
  2618. X;put into the public domain by Russell Nelson, nelson@clutx.clarkson.edu
  2619. X
  2620. X    public    skip_blanks
  2621. Xskip_blanks:
  2622. X    lodsb                ;skip blanks.
  2623. X    cmp    al,' '
  2624. X    je    skip_blanks
  2625. X    cmp    al,HT
  2626. X    je    skip_blanks
  2627. X    dec    si
  2628. X    ret
  2629. X
  2630. SHAR_EOF
  2631. chmod 0644 skipblk.asm || echo "restore of skipblk.asm fails"
  2632. exit 0
  2633. --
  2634. --russ (nelson@clutx [.bitnet | .clarkson.edu])  Russ.Nelson@$315.268.6667
  2635. It's better to get mugged than to live a life of fear -- Freeman Dyson
  2636.  
  2637.  
  2638.