home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 1 / 1869 < prev    next >
Encoding:
Text File  |  1990-12-28  |  46.1 KB  |  2,447 lines

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