home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / canada-remote-systems / c64 / utils / ace15-te.doc < prev    next >
Encoding:
Text File  |  2019-04-13  |  22.4 KB  |  421 lines

  1. ACE-128/64 TECHNICAL INFORMATION  for Release #15   [June 26, 1995]
  2. ------------------------------------------------------------------------------
  3. 1. INTRODUCTION
  4.  
  5. This document contains some technical information about ACE that may be of
  6. interest to technically inclined members of our audience.  Technical
  7. information about writing applications for ACE can be found in the
  8. Programmer's Reference Guide documentation, which should be available from
  9. the same place that you got this document.
  10.  
  11. 2. OVERVIEW MEMORY MAP
  12.  
  13. Note that the "ace128" and "ace64" programs are functionally identical, except
  14. that one is set up for the 128 and the other for the 64.  Thus, all of the
  15. appication binary programs will work with either "ace128" or "ace64".  LOAD
  16. and RUN the "ace" program and it will load the correct "kernel" for your
  17. computer.
  18.  
  19. Here is an overview memory map of ACE-128/64:
  20.  
  21. $0002-$007f = application work area (0.125K)
  22. $0080-$00ff = system zero-page storage (0.125K)
  23. $0100-$01ff = processor stack (0.25K)
  24. $0200-$0eff = system storage (3.25K)
  25. $0f00-$0fff = kernel-interface variables (0.25K)
  26. $1000-$12ff = system storage / free on the C64 (0.75K)
  27. $1300-$5fff = ACE kernel and device drivers (23.25K)
  28. $7000-$bfff = application area & stack (20K / configurable size)
  29. $c000-$edff = free memory (11K)
  30. $ee00-$eeff = modem receive buffer (0.25K / configurable size)
  31. $ef00-$efff = modem transmit buffer (0.25K)
  32. $f000-$f7ff = regular character set (2K)
  33. $f800-$fbff = vic 40-column screen (1K)
  34. $fc00-$feff = free memory (0.75K)
  35. $ff00-$ffff = system storage (0.25K)
  36.  
  37. or, if you're on a C64 with the soft-80 screen configured:
  38.  
  39. $c000-$c9ff = free memory (2K)
  40. $ca00-$caff = modem receive buffer (0.25K / configurable size)
  41. $cb00-$cbff = modem transmit buffer (0.25K)
  42. $cc00-$cfff = vic 40-column screen (1K)
  43. $d000-$d7ff = regular character set (2K)
  44. $d800-$dfff = soft-80 4-bit character set (2K)
  45. $e000-$ff3f = bitmapped screen (7.81K)
  46. $ff40-$ffff = system storage (0.19K)
  47.  
  48. When I get around to reorganizing the New ACE-128 memory map, it will look
  49. like the following:
  50.  
  51. RAM0  $0000  (256)   system zero page
  52. RAM0  $0100  (256)   system stack page
  53. RAM0  $0200  (512)   Commodore Kernal work areas / temporary storage
  54. RAM0  $0400  (1024)  forty-column-screen video RAM
  55. RAM0  $0800  (512)   ACE inter-bank system-call launch area
  56. RAM0  $0a00  (256)   Commodore Kernal work area
  57. RAM0  $0b00  (256)   ACE string buffer
  58. RAM0  $0c00  (256)   ACE work area
  59. RAM0  $0d00  (512)   ACE common-RAM code
  60. RAM0  $0f00  (256)   ACE status-variable storage
  61. RAM0  $1000  (2048)  eight-bit character set
  62. RAM0  $1800  (256)   exit-data buffer
  63. RAM0  $1900  (58880) Application-Program Area
  64. RAM0  $ff00  (256)   ACE system page
  65.  
  66. RAM1  $0000  (512)   inaccessible memory
  67. RAM1  $0200  (3584)  memory hidden beneath the 4K of common RAM -- dynamic alloc
  68. RAM1  $1000  (32768) ACE-kernel code + miscellaneous storage
  69. RAM1  $9000  (8192)  disk-cache space
  70. RAM1  $b000  (20224) dynamically-allocated memory
  71. RAM1  $ff00  (256)   ACE system page
  72.  
  73. ram-configuration registers: $ff01=RAM0, $ff02=RAM1 w/IO, $ff03=RAM1, $ff04=R1k
  74. call code:
  75.    open:  (6 bytes)
  76.       sta $ff02
  77.       jmp kernFileOpen
  78. return code:
  79.    return:  (5 bytes)
  80.       sta $ff01
  81.       clc
  82.       rts
  83.    returnError:  (12 bytes)
  84.       sta $ff01
  85.       sta error
  86.       ldx #$00
  87.       ldy #$00
  88.       sec
  89.       rts
  90.    internCall:  (10 bytes)
  91.       sta $ff01
  92.       jsr syswork+13
  93.       sta $ff02
  94.       rts
  95.    fetch string buffer
  96.    copy RAM0 to RAM0
  97.    copy RAM0 to RAMx
  98.    copy RAMx to RAM0
  99.    zpload from RAMx
  100.    zpstore to RAMx
  101.    load VDC from RAM0
  102.    store from VDC to RAM0
  103.    load VIC from RAM0
  104.    call CHROUT for RAM0
  105.    call CHRIN for RAM0
  106.    trigger REU transfer
  107.    trigger RAMLink transfer
  108.  
  109. 3. BOOTSTRAPPING
  110.  
  111. More explanation here later.
  112.  
  113. ace         - the kernel bootstrapper; can be run from either 64 or 128 mode
  114. ace128      - the kernel for the 128
  115. ace64       - the kernel for the 64
  116. config      - the configuration initializer
  117. .acerc      - the system configuration - this is data not an executable
  118. config.edit - configuration editor program (written in BASIC)
  119. acechr-commodore - regular Commodore character set
  120. acechr-iso8859-1 - ISO 8859-1 "8-bit" character set
  121. sh          - the command shell
  122. .ashrc      - the ACE-command-shell auto-execution shell script
  123.  
  124. 4. CONFIGURATION FILE FORMAT OVERVIEW
  125.  
  126. ACE-128/64 Configuration.sys file format
  127.  
  128. For devices: device slots "a" to "z" (offset 0 to 127, 32 entries):
  129.  
  130. 0 device driver type
  131.         0=Kernal non-disk    1=Kernal disk       2=console          3=null
  132.         4=ramdisk            5=parallel port     6=swiftlink
  133. 1 device primary address / sl:iopage / par:0=clean,1=network
  134. 2 device secondary address / sl:recvBufSize(1-27)
  135. 3 flags / kd:$80=device has CMD real-time clock
  136.  
  137. Other:
  138.  
  139. OFF  SIZ  DESC
  140. ---  ---  ----
  141. $80    1  ramlink device number
  142. $81    1  ramlink last logical bank allowed to use plus one (norm 255)
  143. $82    4  real-time clock devices to check [4], 255=unused, 254=SmartWatch
  144. $86    1  screen saver activation time (in minutes)
  145. $87    1  RTS assertion-to-modem-acceptance delay period (norm 40)
  146. $88    8  -unused-
  147. $90   12  default date in BDC YY:YY:MM:DD:hh:mm:ss:tt:tw:GH:gm:aa
  148. $9c    4  time-zone string: 3 char + null, lowercase
  149. $A0    1  C128 bank1 start free page (norm $04)
  150. $A1    1  C128 bank1 last free page plus one (norm $ff)
  151. $A2    1  C128 expanded internal memory type:
  152.           0=none, 1=Curcio-256K/512K, 2=Pessi-256K/512K/1024K
  153. $A3    1  C128 bank0 last allowed free page plus one (norm $ff)
  154. $A4    1  C64 soft-80 non-REU _minimum_ prescrolling amount (norm 5)
  155. $A5    1  C128 last internal bank allowed to use above 2, plus one (norm 8)
  156. $A6    1  C128 first REU bank allowed to use (norm 0)
  157. $A7    1  C128 last REU bank allowed to use plus one (norm 255)
  158. $A8    1  C128 top page of TPA (stack) (norm $c0)
  159. $A9    1  C128 VDC standard row count (norm 25)
  160. $AA    1  C128 kilobytes of VDC RAM (norm 16)
  161. $AB    1  C64 soft-80 REU-hardware-scroll prescroll amount (norm 1)
  162. $AC    1  C128 80-col prescroll amount (norm 99)
  163. $AD    1  C128 40-col prescroll amount (norm 99)
  164. $AE    1  C64 soft-80 software-scoll prescroll amount (norm 99)
  165. $AF    1  C64 40-col prescroll amount (norm 99)
  166. $B0    8  C128 80-col color palette: table of eight RGBI codes, offsets:
  167.           0=char,1=cursor,2=status,3=separat,4=hilite,5=alert,6=border,7=screen
  168. $B8    8  C128 40-col color palette
  169. $C0    1  C64 bitmap flags: $80=allow soft-80, $40=make default, $20=REU-scroll
  170. $C1    1  C64 last allowed page free plus one (norm $ff)
  171. $C2    1  C64 first REU bank allowed to use (norm 0)
  172. $C3    1  C64 last REU bank allowed to use (norm 255)
  173. $C4    1  C64 expanded internal memory type: 0=none, 1=Pessi-256K
  174. $C5    1  C64 end expanded internal memory banks plus one (norm 4)
  175. $C6    1  C64 top page of stack (norm $c0)
  176. $C7    1  video type: 0=NTSC, 1=PAL  (default 0)
  177. $C8    1  key repeat delay in jiffies (norm 20)
  178. $C9    1  key repeat rate in jiffies (norm 3)
  179. $CA    1  console color enable: $80=text, $40=color (default $80)
  180. $CB    1  input line scrollback line count (default 5)
  181. $CC    1  controller port #1 device: 0=none, 1=joystick, 2=mouse (default 2)
  182. $CD    1  controller port #2 device: 0=none, 1=joystick, 2=mouse (default 1)
  183. $CE    1  C128 VDC maximum number of allowed display rows
  184. $CF    1  C128 VDC normal-to-interlaced-crossover number of display rows
  185. $D0    8  C64 80-col color palette (for bitmapped hi-res 80-col screen)
  186. $D8    8  C64 40-col color palette
  187. $E0    1  RamLink-RAM partition number
  188. $E1   13  RamLink-RAM partition name string
  189. $EE    1  RamLink-Indirect-REU partition number
  190. $EF   17  RamLink-Indirect-REU partition name string
  191. $100  32  initial/home working directory ("a:")
  192. $120  32  user-definable keymatrix-table file, or null ("")
  193. $140  64  default shell executable-search-path string ("z:","a:",".:","b:"...)
  194. $180  64  configuration file .xxxrc search path ("z:", "a:", ".:")
  195. $1C0  32  temporary directory name (".:")
  196. $1E0  32  name of characterset to load on bootup ("acechr-commodore")
  197. $200   0  -END-
  198.  
  199. 5. CHARACTER-SET FILE FORMAT
  200.  
  201. Character sets are stored in a custom format: a 16-byte header followed by a
  202. 32-byte special-character palette followed by a 2048-byte 8-bit-wide
  203. characterset followed by a 2048-byte 4-bit-wide characterset.  The best way
  204. to edit this file is with a machine-language monitor.  I can't remember the
  205. exact format of the header right now, so I'll save that until next time.
  206. The character palette points to the characters that will be used for the
  207. codes $80 to $9f in the following displayable character set (Commodore+ISO):
  208.  
  209.           Craig's Handy ACE PETSCII OUTPUT Guide (including ISO-8859-1)
  210.  
  211.   0/00 ___rvs_@___   64/40 _____@_____  128/80 __bullet___  192/c0 _____`_____
  212.   1/01 ___rvs_a___   65/41 _____a_____  129/81 __v_line___  193/c1 _____A_____
  213.   2/02 ___rvs_b___   66/42 _____b_____  130/82 __h_line___  194/c2 _____B_____
  214.   3/03 ___rvs_c___   67/43 _____c_____  131/83 ___cross___  195/c3 _____C_____
  215.   4/04 ___rvs_d___   68/44 _____d_____  132/84 _tl_corner_  196/c4 _____D_____
  216.   5/05 ___rvs_e___   69/45 _____e_____  133/85 _tr_corner_  197/c5 _____E_____
  217.   6/06 ___rvs_f___   70/46 _____f_____  134/86 _bl_corner_  198/c6 _____F_____
  218.   7/07 _BEL/rvs_g_   71/47 _____g_____  135/87 _br_corner_  199/c7 _____G_____
  219.   8/08 ___rvs_h___   72/48 _____h_____  136/88 ___l_tee___  200/c8 _____H_____
  220.   9/09 _TAB/rvs_i_   73/49 _____i_____  137/89 ___r_tee___  201/c9 _____I_____
  221.  10/0a _BOL/rvs_j_   74/4a _____j_____  138/8a ___t_tee___  202/ca _____J_____
  222.  11/0b ___rvs_k___   75/4b _____k_____  139/8b ___b_tee___  203/cb _____K_____
  223.  12/0c ___rvs_l___   76/4c _____l_____  140/8c ___heart___  204/cc _____L_____
  224.  13/0d _CR_/rvs_m_   77/4d _____m_____  141/8d __diamond__  205/cd _____M_____
  225.  14/0e ___rvs_n___   78/4e _____n_____  142/8e ___club____  206/ce _____N_____
  226.  15/0f ___rvs_o___   79/4f _____o_____  143/8f ___spade___  207/cf _____O_____
  227.  16/10 ___rvs_p___   80/50 _____p_____  144/90 _s_circle__  208/d0 _____P_____
  228.  17/11 _VT_/rvs_q_   81/51 _____q_____  145/91 __circle___  209/d1 _____Q_____
  229.  18/12 ___rvs_r___   82/52 _____r_____  146/92 ___pound___  210/d2 _____R_____
  230.  19/13 ___rvs_s___   83/53 _____s_____  147/93 _CLS/check_  211/d3 _____S_____
  231.  20/14 _BS_/rvs_t_   84/54 _____t_____  148/94 ____pi_____  212/d4 _____T_____
  232.  21/15 ___rvs_u___   85/55 _____u_____  149/95 ____+/-____  213/d5 _____U_____
  233.  22/16 ___rvs_v___   86/56 _____v_____  150/96 __divide___  214/d6 _____V_____
  234.  23/17 ___rvs_w___   87/57 _____w_____  151/97 __degree___  215/d7 _____W_____
  235.  24/18 ___rvs_x___   88/58 _____x_____  152/98 _c_checker_  216/d8 _____X_____
  236.  25/19 ___rvs_y___   89/59 _____y_____  153/99 _f_checker_  217/d9 _____Y_____
  237.  26/1a ___rvs_z___   90/5a _____z_____  154/9a _solid_sq__  218/da _____Z_____
  238.  27/1b ___rvs_[___   91/5b _____[_____  155/9b __cr_char__  219/db _____{_____
  239.  28/1c ___rvs_\___   92/5c _____\_____  156/9c _up_arrow__  220/dc _____|_____
  240.  29/1d ___rvs_]___   93/5d _____]_____  157/9d _down_arro_  221/dd _____}_____
  241.  30/1e ___rvs_^___   94/5e _____^_____  158/9e _left_arro_  222/de _____~_____
  242.  31/1f _rvs_under_   95/5f _UNDERLINE_  159/9f _right_arr_  223/df ___HOUSE___
  243.  32/20 ___SPACE___   96/60 _A`_grave__  160/a0 _req space_  224/e0 _a`_grave__
  244.  33/21 _____!_____   97/61 _A'_acute__  161/a1 _!_invertd_  225/e1 _a'_acute__
  245.  34/22 _____"_____   98/62 _A^_circum_  162/a2 ___cent____  226/e2 _a^_circum_
  246.  35/23 _____#_____   99/63 _A~_tilde__  163/a3 ___pound___  227/e3 _a~_tilde__
  247.  36/24 _____$_____  100/64 _A"_dieres_  164/a4 __currency_  228/e4 _a"_dieres_
  248.  37/25 _____%_____  101/65 _A__ring___  165/a5 ____yen____  229/e5 _a__ring___
  249.  38/26 _____&_____  102/66 _AE________  166/a6 _|_broken__  230/e6 _ae________
  250.  39/27 _____'_____  103/67 _C,cedilla_  167/a7 __section__  231/e7 _c,cedilla_
  251.  40/28 _____(_____  104/68 _E`_grave__  168/a8 __umulaut__  232/e8 _e`_grave__
  252.  41/29 _____)_____  105/69 _E'_acute__  169/a9 _copyright_  233/e9 _e'_acute__
  253.  42/2a _____*_____  106/6a _E^_circum_  170/aa __fem_ord__  234/ea _e^_circum_
  254.  43/2b _____+_____  107/6b _E"_dieres_  171/ab _l_ang_quo_  235/eb _e"_dieres_
  255.  44/2c _____,_____  108/6c _I`_grave__  172/ac ____not____  236/ec _i`_grave__
  256.  45/2d _____-_____  109/6d _I'_acute__  173/ad _syl_hyphn_  237/ed _i'_acute__
  257.  46/2e _____._____  110/6e _I^_circum_  174/ae _registerd_  238/ee _i^_circum_
  258.  47/2f _____/_____  111/6f _I"_dieres_  175/af _overline__  239/ef _i"_dieres_
  259.  48/30 _____0_____  112/70 _D-_Eth_lr_  176/b0 __degrees__  240/f0 _o^x_Eth_s_
  260.  49/31 _____1_____  113/71 _N~_tilde__  177/b1 ____+/-____  241/f1 _n~_tilda__
  261.  50/32 _____2_____  114/72 _O`_grave__  178/b2 _2_supersc_  242/f2 _o`_grave__
  262.  51/33 _____3_____  115/73 _O'_acute__  179/b3 _3_supersc_  243/f3 _o'_acute__
  263.  52/34 _____4_____  116/74 _O^_circum_  180/b4 ___acute___  244/f4 _o^_circum_
  264.  53/35 _____5_____  117/75 _O~_tilde__  181/b5 ____mu_____  245/f5 _o~_tilde__
  265.  54/36 _____6_____  118/76 _O"_dieres_  182/b6 _paragraph_  246/f6 _o"_dieres_
  266.  55/37 _____7_____  119/77 __multiply_  183/b7 __mid_dot__  247/f7 __divide___
  267.  56/38 _____8_____  120/78 _O/_slash__  184/b8 __cedilla__  248/f8 _o/_slash__
  268.  57/39 _____9_____  121/79 _U`_grave__  185/b9 _1_supersc_  249/f9 _u`_grave__
  269.  58/3a _____:_____  122/7a _U'_acute__  186/ba __mas_ord__  250/fa _u'_acute__
  270.  59/3b _____;_____  123/7b _U^_circum_  187/bb _r_ang_quo_  251/fb _u^_circum_
  271.  60/3c _____<_____  124/7c _U"_dieres_  188/bc ____1/4____  252/fc _u"_dieres_
  272.  61/3d _____=_____  125/7d _Y'_acute__  189/bd ____1/2____  253/fd _y'_acute__
  273.  62/3e _____>_____  126/7e _cap_thorn_  190/be ____3/4____  254/fe _sm_thorn__
  274.  63/3f _____?_____  127/7f _Es-sed_B__  191/bf _?_invertd_  255/ff _y"_dieres_
  275.  
  276. The images of the characters in the charactersets each take up eighty bytes
  277. and are ordered as in the table above.  The 8-bit-wide is in the regular
  278. format, and the four-bit-wide images are arranged as two images of each
  279. character in the upper and lower nybbles of the eight bytes used to encode
  280. them.
  281.  
  282. 6. KEYMATRIX FILE FORMAT
  283.  
  284. The keymatrix file format is simply concatenation of seven arrays of 88
  285. bytes each.  The 88-byte arrays contain the character codes to generate for
  286. when a user pressed one of the following physical keys:
  287.  
  288.     \                           COLUMNS:
  289. ROWS:\
  290.       \    0       1       2       3       4       5       6       7
  291.        +-------+-------+-------+-------+-------+-------+-------+-------+ code
  292.    0   | DELETE| RETURN| RIGHT |  F7   |  F1   |  F3   |  F5   | DOWN  | (0)
  293.        +-------+-------+-------+-------+-------+-------+-------+-------+
  294.    1   |   3   |   W   |   A   |   4   |   Z   |   S   |   E   |L-SHIFT| (8)
  295.        +-------+-------+-------+-------+-------+-------+-------+-------+
  296.    2   |   5   |   R   |   D   |   6   |   C   |   F   |   T   |   X   | (16)
  297.        +-------+-------+-------+-------+-------+-------+-------+-------+
  298.    3   |   7   |   Y   |   G   |   8   |   B   |   H   |   U   |   V   | (24)
  299.        +-------+-------+-------+-------+-------+-------+-------+-------+
  300.    4   |   9   |   I   |   J   |   0   |   M   |   K   |   O   |   N   | (32)
  301.        +-------+-------+-------+-------+-------+-------+-------+-------+
  302.    5   |   +   |   P   |   L   |   -   |   .   |   :   |   @   |   ,   | (40)
  303.        +-------+-------+-------+-------+-------+-------+-------+-------+
  304.    6   |   \   |   *   |   ;   | HOME  |R-SHIFT|   =   |   ^   |   /   | (48)
  305.        +-------+-------+-------+-------+-------+-------+-------+-------+
  306.    7   |   1   |   _   |CONTROL|   2   | SPACE |COMMODR|   Q   | STOP  | (56)
  307.        +-------+-------+-------+-------+-------+-------+-------+-------+
  308.    8   | HELP  |   8   |   5   |  TAB  |   2   |   4   |   7   |   1   | (64)
  309.        +-------+-------+-------+-------+-------+-------+-------+-------+
  310.    9   |  ESC  |   +   |   -   |  LF   | ENTER |   6   |   9   |   3   | (72)
  311.        +-------+-------+-------+-------+-------+-------+-------+-------+
  312.   10   |  ALT  |   0   |   .   |  UP   | DOWN  | LEFT  | RIGHT |NO-SCRL| (80)
  313.        +-------+-------+-------+-------+-------+-------+-------+-------+
  314.  
  315. Note that the C128's keyboard has all eleven rows (0-10) whereas the C64's
  316. keyboard only has the first eight (0-7).  The entires with $00 mean that
  317. pressing the associated key does nothing.  There are multiple key matrices
  318. to produce the codes for use with various "shift" keys.  The order of the
  319. seven key matrices is:
  320.  
  321.     1. Normal (unshifted)
  322.     2. Shift
  323.     3. Commodore
  324.     4. Control
  325.     5. Alternate
  326.     6. CapsLock
  327.     7. Shift+Commodore
  328.  
  329. The character codes generated should correspond to the following table:
  330.  
  331.                 Craig's Handy ACE PETSCII INPUT Guide (ISO-8859-1)
  332.  
  333.   0/00 __<none>___   64/40 _____@_____  128/80 ___Ct-F1___  192/c0 __Sh-*__`__
  334.   1/01 _Ct-RETURN_   65/41 _____a_____  129/81 ___Co-1____  193/c1 _____A_____
  335.   2/02 __Sh-TAB___   66/42 _____b_____  130/82 ___Ct-F3___  194/c2 _____B_____
  336.   3/03 ___STOP____   67/43 _____c_____  131/83 __Sh-STOP__  195/c3 _____C_____
  337.   4/04 ___HELP____   68/44 _____d_____  132/84 __Sh-HELP__  196/c4 _____D_____
  338.   5/05 ___Ct-2____   69/45 _____e_____  133/85 ____F1_____  197/c5 _____E_____
  339.   6/06 __Sh-LEFT__   70/46 _____f_____  134/86 ____F3_____  198/c6 _____F_____
  340.   7/07 ___Sh-LF___   71/47 _____g_____  135/87 ____F5_____  199/c7 _____G_____
  341.   8/08 __Co-DEL___   72/48 _____h_____  136/88 ____F7_____  200/c8 _____H_____
  342.   9/09 ____TAB____   73/49 _____i_____  137/89 ____F2_____  201/c9 _____I_____
  343.  10/0a _LINEFEED__   74/4a _____j_____  138/8a ____F4_____  202/ca _____J_____
  344.  11/0b _Sh-RIGHT__   75/4b _____k_____  139/8b ____F6_____  203/cb _____K_____
  345.  12/0c ___Co-UP___   76/4c _____l_____  140/8c ____F8_____  204/cc _____L_____
  346.  13/0d __RETURN___   77/4d _____m_____  141/8d _Sh-RETURN_  205/cd _____M_____
  347.  14/0e _Sh-ESCAPE_   78/4e _____n_____  142/8e ___Ct-F5___  206/ce _____N_____
  348.  15/0f __Co-DOWN__   79/4f _____o_____  143/8f ___Ct-F7___  207/cf _____O_____
  349.  16/10 __Co-LEFT__   80/50 _____p_____  144/90 ___Ct-1____  208/d0 _____P_____
  350.  17/11 ___DOWN____   81/51 _____q_____  145/91 ____UP_____  209/d1 _____Q_____
  351.  18/12 ____RVS____   82/52 _____r_____  146/92 __RVS-OFF__  210/d2 _____R_____
  352.  19/13 ___HOME____   83/53 _____s_____  147/93 ____CLR____  211/d3 _____S_____
  353.  20/14 ____DEL____   84/54 _____t_____  148/94 ___INST____  212/d4 _____T_____
  354.  21/15 _Co-RIGHT__   85/55 _____u_____  149/95 ___Co-2____  213/d5 _____U_____
  355.  22/16 ___Ct-UP___   86/56 _____v_____  150/96 ___Co-3____  214/d6 _____V_____
  356.  23/17 __Ct-DOWN__   87/57 _____w_____  151/97 ___Co-4____  215/d7 _____W_____
  357.  24/18 __Ct-TAB___   88/58 _____x_____  152/98 ___Co-5____  216/d8 _____X_____
  358.  25/19 __Ct-LEFT__   89/59 _____y_____  153/99 ___Co-6____  217/d9 _____Y_____
  359.  26/1a _Ct-RIGHT__   90/5a _____z_____  154/9a ___Co-7____  218/da _____Z_____
  360.  27/1b ____ESC____   91/5b _____[_____  155/9b ___Co-8____  219/db __Sh-+__{__
  361.  28/1c ___Ct-3____   92/5c _____\_____  156/9c ___Ct-5____  220/dc __Sh-\__|__
  362.  29/1d ___RIGHT___   93/5d _____]_____  157/9d ___LEFT____  221/dd __Sh--__}__
  363.  30/1e ___Ct-6____   94/5e _____^_____  158/9e ___Ct-8____  222/de __Sh-^__~__
  364.  31/1f ___Ct-7____   95/5f _BACKARROW_  159/9f ___Ct-4____  223/df _Sh-BACKAR_
  365.  32/20 ___SPACE___   96/60 ___Alt-@___  160/a0 __Comm-@___  224/e0 __Ctrl-@___
  366.  33/21 _____!_____   97/61 ___Alt-A___  161/a1 __Comm-A___  225/e1 __Ctrl-A___
  367.  34/22 _____"_____   98/62 ___Alt-B___  162/a2 __Comm-B___  226/e2 __Ctrl-B___
  368.  35/23 _____#_____   99/63 ___Alt-C___  163/a3 __Comm-C___  227/e3 __Ctrl-C___
  369.  36/24 _____$_____  100/64 ___Alt-D___  164/a4 __Comm-D___  228/e4 __Ctrl-D___
  370.  37/25 _____%_____  101/65 ___Alt-E___  165/a5 __Comm-E___  229/e5 __Ctrl-E___
  371.  38/26 _____&_____  102/66 ___Alt-F___  166/a6 __Comm-F___  230/e6 __Ctrl-F___
  372.  39/27 _____'_____  103/67 ___Alt-G___  167/a7 __Comm-G___  231/e7 __Ctrl-G___
  373.  40/28 _____(_____  104/68 ___Alt-H___  168/a8 __Comm-H___  232/e8 __Ctrl-H___
  374.  41/29 _____)_____  105/69 ___Alt-I___  169/a9 __Comm-I___  233/e9 __Ctrl-I___
  375.  42/2a _____*_____  106/6a ___Alt-J___  170/aa __Comm-J___  234/ea __Ctrl-J___
  376.  43/2b _____+_____  107/6b ___Alt-K___  171/ab __Comm-K___  235/eb __Ctrl-K___
  377.  44/2c _____,_____  108/6c ___Alt-L___  172/ac __Comm-L___  236/ec __Ctrl-L___
  378.  45/2d _____-_____  109/6d ___Alt-M___  173/ad __Comm-M___  237/ed __Ctrl-M___
  379.  46/2e _____._____  110/6e ___Alt-N___  174/ae __Comm-N___  238/ee __Ctrl-N___
  380.  47/2f _____/_____  111/6f ___Alt-O___  175/af __Comm-O___  239/ef __Ctrl-O___
  381.  48/30 _____0_____  112/70 ___Alt-P___  176/b0 __Comm-P___  240/f0 __Ctrl-P___
  382.  49/31 _____1_____  113/71 ___Alt-Q___  177/b1 __Comm-Q___  241/f1 __Ctrl-Q___
  383.  50/32 _____2_____  114/72 ___Alt-R___  178/b2 __Comm-R___  242/f2 __Ctrl-R___
  384.  51/33 _____3_____  115/73 ___Alt-S___  179/b3 __Comm-S___  243/f3 __Ctrl-S___
  385.  52/34 _____4_____  116/74 ___Alt-T___  180/b4 __Comm-T___  244/f4 __Ctrl-T___
  386.  53/35 _____5_____  117/75 ___Alt-U___  181/b5 __Comm-U___  245/f5 __Ctrl-U___
  387.  54/36 _____6_____  118/76 ___Alt-V___  182/b6 __Comm-V___  246/f6 __Ctrl-V___
  388.  55/37 _____7_____  119/77 ___Alt-W___  183/b7 __Comm-W___  247/f7 __Ctrl-W___
  389.  56/38 _____8_____  120/78 ___Alt-X___  184/b8 __Comm-X___  248/f8 __Ctrl-X___
  390.  57/39 _____9_____  121/79 ___Alt-Y___  185/b9 __Comm-Y___  249/f9 __Ctrl-Y___
  391.  58/3a _____:_____  122/7a ___Alt-Z___  186/ba __Comm-Z___  250/fa __Ctrl-Z___
  392.  59/3b _____;_____  123/7b ___Alt-[___  187/bb __Comm-[___  251/fb __Ctrl-[___
  393.  60/3c _____<_____  124/7c ___Alt-\___  188/bc __Comm-\___  252/fc __Ctrl-\___
  394.  61/3d _____=_____  125/7d ___Alt-]___  189/bd __Comm-]___  253/fd __Ctrl-]___
  395.  62/3e _____>_____  126/7e ___Alt-^___  190/be __Comm-^___  254/fe __Ctrl-^___
  396.  63/3f _____?_____  127/7f _Alt-BAKAR_  191/bf _Comm-BKAR_  255/ff _Ctrl-BKAR_
  397.  
  398. 7. VBM FILE FORMAT
  399.  
  400. There are two VBM file formats in existence: Version #2 and Version #3.  For
  401. Version #3, there are two variations available: Compressed and Uncompressed.
  402. All VBM files begin with the following three-byte identifier: $42, $4d, $cb.
  403. This is followed by the version number, either $02 or $03, followed by the
  404. image width and height, each encoded in 16 bits in high/low order.
  405.  
  406. For Version #2 images, the image data follows, but Version #3 images have
  407. more header information: five bytes for the compression-encoding meta data
  408. followed by a two $00 bytes (reserved), followed by a 16-bit high/low field
  409. giving telling the length of the comment block, followed by up to 64K of
  410. comment text (in PETSCII), followed by the image data.  If the image is
  411. compressed, then the compression-encoding meta data is: the repeat code
  412. (usually $XX: for coding repetitions of any arbitrary image byte), the zero
  413. code (usually $XX, for coding three or more repetitions of the image-byte
  414. $00), the ... oh never mind.  I'll fill this in next time.  You can examine
  415. the C program to see how the images are encoded.
  416.  
  417. 8. CONCLUSION
  418.  
  419. Cool eh?
  420. ------------------------------------------------------------------------END---
  421.