home *** CD-ROM | disk | FTP | other *** search
/ The Pier Shareware 6 / The_Pier_Shareware_Number_6_(The_Pier_Exchange)_(1995).iso / 002 / zipkey44.zip / ZIPKEY.DOC < prev    next >
Text File  |  1994-10-03  |  134KB  |  2,950 lines

  1. ZIPKEY zipcode directory program  V3.03        October 3, 1994
  2.  
  3. The entire package is Copyright 1989--1994 Eric Isaacson.
  4. All rights reserved.
  5.  
  6.    Eric Isaacson Software
  7.    416 E. University Ave.
  8.    Bloomington, IN 47401-4739
  9.    (812)339-1811
  10.  
  11. PLEASE read Chapter 1 for legal terms, how to register/subscribe
  12. for the package, and the overview of the program.  Just type
  13. ZIPKEY if you don't like reading manuals.
  14.  
  15. This DOC file is an entire manual-- over 50 pages.  I have
  16. formatted this file so that it can be printed at 10cpi with
  17. margins.  To save space, I don't have a left margin in the file.
  18. You'll need to set your printer to a one-inch left margin to have
  19. room to punch holes for a ring binder.
  20.  
  21. If you got ZIPKEY from an XYZ software house, that advertises
  22. great software for $5 per disk, and you are now confused as to
  23. your rights, you might ask the following
  24.  
  25. QUESTION: "What's going on here?  Have I already bought the
  26.   program, or what?"
  27.  
  28. ANSWER: Well, no, not exactly.  You've bought a disk that has
  29.   great software on it; unless you legally purchased the
  30.   registered version of ZIPKEY, you haven't bought the software
  31.   yet.  ZIPKEY, like most major software offered by the
  32.   $5-per-disk distribution houses, is free-distribution software
  33.   (also known as "shareware", or "user-supported software").
  34.   That means I retain the rights to ZIPKEY, but I choose to let
  35.   people pass the evaluation copy around.  I have no business
  36.   relationship with any distribution houses in the U.S.; I don't
  37.   get a penny of the $5 (or whatever) you paid them for the disk
  38.   containing ZIPKEY.  So I need and expect to be paid by you,
  39.   because I make my living out of making and supporting shareware
  40.   products.
  41.  
  42.   Some distribution houses do a pretty poor job of revealing the
  43.   shareware nature of the software they sell.  If you thought you
  44.   had purchased the software free and clear, you might feel
  45.   justified in being angry with them for having misled you.  And
  46.   you might look around for houses that do a better job of
  47.   informing the public.  But I hope you'll take the time to
  48.   consider everybody's role in the shareware marketing scene; if
  49.   you do, I think you'll conclude that although you may have been
  50.   misled, you haven't really been cheated out of anything.
  51.  
  52.   Shareware is great for authors like me, who have spent all
  53.   their years in their computer holes, learning to be great
  54.   programmers, and no time in business school learning marketing
  55.   and distribution techniques.  We simply cast our programs to
  56.   the winds.  They are distributed at practically no cost to us.
  57.   That's why we can charge a lot less than the cost of
  58.   "commercial" software.
  59.                                                               0-2
  60.  
  61.   Shareware is also great for customers like you.  You can try
  62.   out the software before paying for it.  You'll know that a
  63.   successful shareware product is good, because only satisfied
  64.   customers pay for it.  The existence of shareware infuses
  65.   healthy competition into the entire software market, for both
  66.   price and quality.  In the case of ZIPKEY, I'm utterly
  67.   convinced that you'll never find a better value for a zipcode
  68.   directory, anywhere.
  69.  
  70.   Finally, let's consider the distribution houses.  They provide
  71.   a legitimate service, for which they charge a reasonable price.
  72.   The best houses act as librarians, evaluating and cataloguing
  73.   software.  Most pay thousands of dollars for advertising.
  74.   Their cut is far less than the distributor's cut for
  75.   "commercial" software (they prosper because their volume is
  76.   bigger and their support responsibilities are smaller).  Most
  77.   customers for the distribution houses are repeat customers, who
  78.   are aware of, and happy with, what they are getting.  If it
  79.   weren't for your XYZ House, you might never have heard of
  80.   ZIPKEY, or might never have figured out where to obtain it.
  81.  
  82.   So I hope you'll be happy with shareware, and actively desire
  83.   to support it.  You'll feel good about promoting a healthy
  84.   situation for everybody.  And you'll encourage the best
  85.   programmers in the world to keep writing for you, instead of
  86.   for the big corporations.
  87.  
  88. Now that I've said that, let's move on to the package.   The
  89. ZIPKEY evaluation package consists of the program ZIPKEY.EXE, the
  90. database file ZIPKEY.OVL, this manual ZIPKEY.DOC, and ZPROG.DOC,
  91. a supplement for programmers.
  92.  
  93.  
  94.  
  95. TABLE OF CONTENTS
  96.  
  97.  
  98. CHAPTER 1  INTRODUCTION AND LEGAL TERMS
  99.  
  100. Installing ZIPKEY from Floppy to Hard Drive                 1-1
  101. Overview of This Manual                                     1-1
  102. Overview of ZIPKEY                                          1-2
  103. What ZIPKEY Doesn't Do                                      1-3
  104. Operating Requirements                                      1-3
  105. Legal Terms                                                 1-3
  106. Legal Conditions for Free Distribution                      1-5
  107. Sources and Copyright Status of ZIPKEY's Database           1-6
  108. Difference Between the Evaluation and Registered Versions   1-7
  109. Naming Conventions for Distribution                         1-7
  110. About the Author                                            1-8
  111. How to Contact Me                                           1-8
  112.                                                               0-3
  113.  
  114. CHAPTER 2  LOOKING UP ZIPCODES
  115.  
  116. Demonstration Mode                             2-1
  117. Signon Window                                  2-1
  118. Zipcode Search                                 2-2
  119. Arrow and Paging Keys During Zipcode Search    2-3
  120. State and City Search                          2-4
  121. Multiple Zipcode Cities                        2-5
  122. City Only Search                               2-6
  123. Moving From State to State                     2-7
  124. Unabbreviation                                 2-8
  125. Telephone Area Code Search                     2-8
  126. Repeat Last Zipcode                            2-8
  127.  
  128.  
  129. CHAPTER 3  ZIPKEY CONFIGURATION
  130.  
  131. Determining Your Configuration Needs      3-1
  132. How to Create a ZC File                   3-2
  133. Default Options                           3-2
  134. Memory Model                              3-3
  135. Intermediate Results                      3-4
  136. Slow Down Keyboard                        3-4
  137. Window Characteristics                    3-5
  138. Monochrome and Color Window Settings      3-6
  139. Hotkey Configuration                      3-6
  140. Hotkey Name                               3-6
  141. Zipcode Source                            3-8
  142. Format of City/State/Zip Keystrokes      3-10
  143. Multiple Hotkeys                         3-13
  144. Exit Keys                                3-13
  145. Configuration Editing Menu               3-15
  146. Named Configuration Files                3-15
  147. Modifying Configuration Files            3-16
  148. More Hotkey Examples                     3-16
  149. Conclusion                               3-17
  150.  
  151.  
  152. CHAPTER 4  RUNNING MEMORY-RESIDENT ZIPKEY
  153.  
  154. Placing ZIPKEY Resident in Memory                  4-1
  155. Correcting Your Configuration                      4-2
  156. Removing a Previously Resident ZIPKEY              4-3
  157. Replacing a Previously Resident ZIPKEY             4-3
  158. Making ZIPKEY Permanently Available                4-4
  159. ZIPKEY and Other Memory-Resident Programs          4-4
  160. Finding ZIPKEY Files on Your Disk                  4-5
  161.  
  162.  
  163. CHAPTER 5 GENERATING AN ORDER FORM
  164.  
  165. Automatic Order-Form Generation            5-1
  166. ZIPKEY's Schedule of Prices                5-1
  167. Gathering Your Order Information           5-2
  168. Answering the Order-Form Questionnaire     5-3
  169. Possible Amendments to the Total Price     5-3
  170.                                                               0-4
  171.  
  172. CHAPTER 6 PROGRAMMATIC INTERFACE
  173.  
  174. INDEX
  175.  
  176. CHAPTER 1   INTRODUCTION AND LEGAL TERMS
  177.  
  178.  
  179. Installing ZIPKEY from Floppy to Hard Drive
  180.  
  181. To install ZIPKEY on your hard drive, place the diskette
  182. containing ZIPKEY into your A or B drive and type either
  183. A:INSTALL or B:INSTALL to your DOS command prompt, depending on
  184. which diskette drive you used. The INSTALL program will prompt
  185. you for the various installation options.
  186.  
  187.  
  188. Overview of This Manual
  189.  
  190. Welcome to ZIPKEY!  I've tried to make the ZIPKEY program as
  191. self-explanatory as possible, so that you won't need to consult
  192. this manual very much.  You may simply wish to run INSTALL to set
  193. up the program on your hard drive, and go from there.  But ZIPKEY
  194. is a complex program with a fair number of sophisticated
  195. features.  If you'd like to explore every nook and cranny of
  196. ZIPKEY's functionality, you'll want to read this manual.  It
  197. describes ZIPKEY in more detail than the built-in documentation,
  198. and provides examples you can work through as you read.
  199.  
  200. Some of this manual (especially in Chapters 2 and 3) tries to do
  201. double duty, as both a tutorial and a reference guide.  A
  202. tutorial is intended to be read from start to finish; it may
  203. contain a thread of discussion that runs from section to section.
  204. A reference guide is intended to be consulted a section at a
  205. time, to look up specific facts; it may repeat information so
  206. that the user doesn't need to read the whole manual to obtain the
  207. desired fact.  I've tried to keep the tutorial-vs.-reference
  208. annoyances to a minimum: the continuing (tutorial) threads are
  209. restricted to the more elaborate examples presented; I hope they
  210. are easy enough to pick up when you consult a section as a
  211. reference.  And I have tried to organize things to keep
  212. repetitions to a minimum, so you can read the manual as a
  213. tutorial.
  214.  
  215. I would, of course, like you to read this first chapter,
  216. including the legal terms and conditions pertaining to the
  217. program.  Then, if you're just getting started with ZIPKEY, you
  218. should read through Chapter 2 while running ZIPKEY in
  219. demonstration mode, to follow the examples and gain a familiarity
  220. with all of ZIPKEY's search capabilities.  Chapter 3 tells you
  221. how to configure ZIPKEY for memory-resident use, and Chapter 4
  222. tells you how to set up the files on your computer so that ZIPKEY
  223. is permanently available.  Chapter 5 gives you details about
  224. ZIPKEY's built-in facility for creating an order form to
  225. subscribe to ZIPKEY and regularly receive fresh data.  Chapter 6
  226. is for computer programmers who wish to access ZIPKEY's functions
  227. from within their programs.
  228.                                                               1-2
  229.  
  230. Overview of ZIPKEY
  231.  
  232. ZIPKEY is a complete city-level directory of 5-digit United
  233. States zipcodes, 3-digit telephone area codes, and time zones,
  234. combined with a keyboard enhancement program.  The goal of ZIPKEY
  235. is to provide enough power and flexibility so that no one with an
  236. IBM-PC (or hardware-compatible computer) will ever again have to
  237. manually type in the name of a United States city or town (at
  238. least not one big enough to have its own zipcode).
  239.  
  240. When run as an ordinary program, ZIPKEY allows you to instantly
  241. access any of the 42000+ zipcodes in the directory, searching by
  242. zipcode, state-and-city, city-only, or area code.  If you want to
  243. use ZIPKEY just to occasionally look up a zipcode or area code,
  244. you simply choose main-menu option 2 (or just type ZIPS to your
  245. DOS command prompt) and follow the prompts.
  246.  
  247. ZIPKEY achieves its full power when placed resident in memory.
  248. In this mode, you can invoke ZIPKEY from within any other program
  249. (a word processor, a data-base manager, etc.).  You can type just
  250. a 5-digit zipcode, and ZIPKEY will fool the program you're
  251. running into thinking that you have typed any or all of the
  252. following: the city name, the state name and/or abbreviation, the
  253. zipcode, the area code, the time zone, and any other combination
  254. of fixed keystrokes.  This "keystroke output" can be in any
  255. format that you wish.
  256.  
  257. ZIPKEY is completely configurable.  You can specify any
  258. combination of keystrokes (the "hotkey") that will invoke ZIPKEY
  259. when you're running another program.  You can also specify
  260. alternate hotkeys to allow differing sources of zipcode
  261. specifications (repeat the last zipcode, use a fixed sequence of
  262. first digits, or get the zipcode from your screen), and/or a
  263. differing format when ZIPKEY feeds the city/state/zip back
  264. through your keyboard.  You may have up to 99 different hotkeys.
  265. Your configuration is stored in a disk file, which is
  266. automatically read by ZIPKEY whenever it is invoked.
  267.  
  268. ZIPKEY has a sophisticated abbreviation algorithm, allowing you
  269. to specify a limit to the length of the city name, so that it
  270. will fit into a fixed field.
  271.  
  272. ZIPKEY's database is based on data from numerous sources,
  273. including the U.S. Postal Service.  It has been extensively
  274. cross-checked to ensure accuracy and consistency.  The data is
  275. highly compressed, so it won't occupy very much space on your
  276. disk or in memory.  The compression method was custom-designed
  277. for this database, providing for maximum compaction while
  278. retaining instant access.  It occupies less than 128K bytes (less
  279. than 3 bytes per entry), small enough to allow placement of the
  280. data base in either LIM-EMS or main memory.  But access to the
  281. data is fast enough so that it is perfectly reasonable to leave
  282. the database on your hard or RAM disk.
  283.                                                               1-3
  284.  
  285. What ZIPKEY Doesn't Do
  286.  
  287. ZIPKEY's database doesn't contain street names, so ZIPKEY can't
  288. tell you the exact zipcode for a street address within a city
  289. that has more than one zipcode.  Such a database would occupy
  290. many megabytes, even with ZIPKEY's rate of compression.  Right
  291. now I consider that too big for mass distribution; but when the
  292. technology improves (e.g., when writable CD-ROMs are
  293. commonplace), I may offer such a database.
  294.  
  295. ZIPKEY has been tested against all the major database managers,
  296. word processors, and spreadsheets, and works fine with the vast
  297. majority of them. But there are some programs that ZIPKEY is
  298. incompatible with.  Here are the problems that I know about and
  299. haven't been able to solve:  Keystroke playback doesn't work
  300. within Microsoft Works 1.0, which apparently ignores the usual
  301. keyboard drivers in your computer; but you can make Works 2.0
  302. work either by choosing "Text" in "Works Settings", or
  303. configuring ZIPKEY to work in graphics mode. ProKey 2.1 causes
  304. problems, but 4.0 works fine.  Microsoft Word 4.0 doesn't allow
  305. typeahead within ZIPKEY's window so you must either disable
  306. intermediate results or type slowly -- Word 5.0 solved this
  307. problem.  NamePal 1.4 has a bug that limits playback to 15
  308. keystrokes.
  309.  
  310.  
  311.  
  312. Operating Requirements
  313.  
  314. ZIPKEY requires an IBM-PC, IBM-PC AT, or 100% hardware-compatible
  315. computer with at least 256K bytes of memory, running MS-DOS V2.0
  316. or later.  A hard disk is not required but is recommended unless
  317. you have lots of memory to store ZIPKEY's data when it is
  318. resident.
  319.  
  320. Most of the "clone" computers work fine running ZIPKEY.  The
  321. areas of compatibility needed are in the memory-mapping of the
  322. video interface, the BIOS variables and buffers managing both
  323. video and keyboard, the timer-interrupt hardware, and the
  324. keyboard-interrupt mechanism.  Some computers are compatible
  325. except for the mapping of internal codes passed from the keyboard
  326. to the computer.  For those computers, ZIPKEY will work properly
  327. except during configuration, when the wrong names are displayed
  328. for the hotkeys.
  329.  
  330.  
  331. Legal Terms
  332.  
  333. ZIPKEY is a copyrighted work -- it is not and never has been in
  334. the public domain.  Each release of the ZIPKEY program comes in
  335. two versions: ZIPKEY.EXE, the evaluation copy, may be copied and
  336. distributed to others, subject to the conditions I'm about to
  337. describe.  The other version ZIPKEY.COM, the registered user's
  338. copy, is subject to the same legal restrictions as
  339. traditionally-distributed ("commercial") software.  Neither
  340. version has any physical copy-protection schemes.
  341.                                                               1-4
  342.  
  343. WARNING: Before installing this or ANY new software, you should
  344. BACK UP any valuable data on your computer system.  ZIPKEY has
  345. been extensively tested on numerous different machines, and it is
  346. believed to be reliable and non-harmful.  However, software is
  347. the most complicated kind of product there is.  No mortal human
  348. can be absolutely and completely certain that a piece of
  349. complicated software will work on any given machine.  So you are
  350. completely responsible for determining the fitness or usability
  351. of this package.  I will not be liable for damages of any kind,
  352. including but not limited to lost sales or profits, arising from
  353. any failure of this package to perform as expected.
  354.  
  355. If you have the evaluation copy ZIPKEY.EXE, I hereby grant you
  356. permission to install this version of ZIPKEY in its
  357. memory-resident mode for up to one month.  After that, you must
  358. either remove ZIPKEY from your system, or subscribe -- option 5
  359. of the main menu (described in detail in Chapter 5) will create
  360. an order form for you.
  361.  
  362. If you have the registered copy ZIPKEY.COM, you may install it
  363. only on those computers servicing the keyboards you have
  364. licensed.  You may make copies for backup and archival purposes.
  365. You may not allow the registered copy to be run from more
  366. keyboards than you have licensed.  The license for running ZIPKEY
  367. in its non-memory resident (demonstration) mode is permanent --
  368. you don't need to renew unless and until you want fresh data.
  369. The license for running ZIPKEY in its memory-resident mode
  370. (hotkeys, key playback, and/or program interface) is paid by the
  371. year, according to the rate schedule published in Chapter 5, and
  372. built into the order-form section of ZIPKEY, option 5 of ZIPKEY's
  373. main menu.
  374.  
  375. A simple registration for a single keyboard, with printed manual
  376. and one disk with the latest data, is $30.  Update disks are $25
  377. apiece.  Again, the license is permanent if you use ZIPKEY only
  378. in demonstration mode; it is good for one year if you use ZIPKEY
  379. in memory-resident mode.
  380.  
  381. If you are a casual user -- only calling up ZIPKEY occasionally
  382. in non-memory-resident mode for private, non-commercial use --
  383. then your subscription is optional.  You may send however much
  384. money you feel the program is worth to you.  If you send $30
  385. ($31.50 in Indiana), you'll get the printed manual and a disk
  386. with the registered version of the program and the most current
  387. database.  Your support is much appreciated, and will encourage
  388. the continued production of high-quality "try before you buy"
  389. software.
  390.  
  391. I reserve the legal right to change legal terms and prices for
  392. future versions without prior notice.  At the present time I have
  393. no plans to change prices until inflation has seriously reduced
  394. the value of the dollar (say, when the price of unleaded regular
  395. gasoline goes over $1.50).  I will never consider you committed
  396. to a higher price before being advised of the price-- you'll
  397. always have the option to cancel your subscription and receive a
  398. refund for unused time.
  399.                                                               1-5
  400.  
  401. Legal Conditions for Free Distribution
  402.  
  403. Here are the conditions for free distribution of the evaluation
  404. version of ZIPKEY:
  405.  
  406. 1. You may copy the disk-file version of this manual, the
  407.    evaluation version ZIPKEY.EXE, and any version of ZIPKEY.OVL
  408.    more than six months old, and give them to anyone who accepts
  409.    all the legal terms spelled out in this chapter.  The copies
  410.    you distribute must be complete and unmodified.  You are
  411.    specifically prohibited from distributing the ZIPKEY.OVL data
  412.    in any unpacked format, or any format other than ZIPKEY.OVL.
  413.  
  414.    Each ZIPKEY.OVL file that I distribute begins with a copyright
  415.    message containing the date after which the file can be
  416.    distributed freely.
  417.  
  418. 2. No part of ZIPKEY may be sold to anyone without my prior
  419.    written permission.  If the package is distributed on a
  420.    diskette, any fees collected must be specified as
  421.    materials/handling, and may not exceed $10 for the diskette.
  422.    Thus, I am allowing shareware distribution houses to
  423.    distribute the evaluation version of ZIPKEY, as long as they
  424.    don't try to deceive their customers into thinking they have
  425.    bought the full rights to the program.
  426.  
  427. 3. I reserve the right to prohibit specific individuals and/or
  428.    companies from distributing any or all of my copyrighted
  429.    works.  If I exercise this right, I shall inform such
  430.    individuals/companies in writing, by certified letter.
  431.  
  432.    So far, I have exercised this right against only one company,
  433.    Sizzleware.  They received a prohibition against distributing
  434.    my A86/D86 packages after they marked the packages Public
  435.    Domain in their catalog, and then neglected to change the
  436.    entry in the next catalog.  The subsequent catalog was
  437.    published three months after I wrote them and they wrote back
  438.    saying they would make the change.  It is my impression that
  439.    this was sheer carelessness on their part; but the mistake,
  440.    particularly after they were notified and had three months to
  441.    correct it, was a grave one.  I considered the prohibition
  442.    necessary to protect my copyright.  The prohibition was lifted
  443.    when they published a catalog with a corrected entry for
  444.    A86/D86.
  445.                                                               1-6
  446.  
  447. Sources and Copyright Status of ZIPKEY's Database
  448.  
  449. ZIPKEY's database consists of over 42000 zipcode entries,
  450. covering over 31000 different cities and towns.  It was created
  451. using numerous different references, most notably the data files
  452. provided by the U.S. Postal Service correlated against the cities
  453. and zipcodes from the 150000-entry database of a fair-sized mail
  454. order firm.  The latter "real-world" data provided much better
  455. accuracy in terms of the city names people actually use for their
  456. own addresses, as opposed to the Postal Service's
  457. officially-designated "primary city" for a zipcode.  The
  458. following references were also used, as a part of an extensive
  459. cross-checking and verification effort:
  460.  
  461.    * maps and lists from several dozen telephone directories
  462.  
  463.    * U.S. Census data files
  464.  
  465.    * USPS National Five-Digit Zip Code & Post Office Directory
  466.  
  467.    * AAA Road Atlas
  468.  
  469.    * Rand McNally Commercial Atlas and Marketing Guide
  470.  
  471.    * National Atlas of the United States of America
  472.  
  473.    * Rand McNally Road Atlas
  474.  
  475.    * Bellcore Telephone Area Code Directory
  476.  
  477.    * ATT's ZIP-PHONE files
  478.  
  479. The resulting ZIPKEY database differs by thousands of entries
  480. from any database that could be derived by mechanical means from
  481. any of the sources I have mentioned.  It is much more accurate
  482. than any of the sources for its purpose: to provide the city name
  483. actually used by the most people in a given zipcode.
  484.  
  485. So the ZIPKEY database contains a large body of information that
  486. is public knowledge, but at the same time represents a
  487. substantial creative compilation effort.  It enjoys the same
  488. copyright protection as other reference works, such as
  489. dictionaries, that contain compilation effort.  You may use the
  490. ZIPKEY database as a reference source, but you cannot simply
  491. unpack and publish the database without independently
  492. cross-checking and verifying the entire work, and adding
  493. substantial effort to make it your own.  If you do such
  494. unverified publishing, you will be in violation of federal
  495. criminal copyright law.
  496.                                                               1-7
  497.  
  498. Note that a skilled programmer can use ZIPKEY's programmatic
  499. interface to unpack ZIPKEY.OVL into an ASCII format.  Again, I
  500. emphasize that the data in ASCII still contains my creative
  501. compilation effort, and is still under my copyright.  You may
  502. create and manipulate such a data file from the keyboards for
  503. which ZIPKEY is licensed, but you are specifically prohibited
  504. from distributing such data to non-licensed computers, or in any
  505. printed format.
  506.  
  507.  
  508. Difference Between the Evaluation and Registered Versions
  509.  
  510. The evaluation copy of ZIPKEY has full functionality.  The only
  511. differences between the evaluation and registered versions are as
  512. follows:
  513.  
  514. 1. The evaluation version is distributed as an EXE file, and the
  515.    registered version is distributed as a COM file.
  516.  
  517. 2. The version number, that appears on the console when ZIPKEY is
  518.    run and also on the signon popup window, has an "e" appended
  519.    to it for the evaluation copy.
  520.  
  521. 3. Some of the help messages of the program are different, to
  522.    reflect the program's registered vs. evaluation status.  But
  523.    there is no missing information in the evaluation copy.
  524.  
  525. 4. When you issue the ZIPKEY 4 command (typically in AUTOEXEC.BAT
  526.    when the computer is started up), the evaluation copy of
  527.    ZIPKEY will check dates before it executes your command to
  528.    place ZIPKEY resident in memory.  If it is now the second
  529.    month after you have created a ZC file, ZIPKEY reminds you
  530.    that you need to register, and invites you to fill out an
  531.    order form.  You can type N to the invitation and ZIPKEY will
  532.    go resident normally and work just fine.  I'm just hoping
  533.    you'll get tired of having to type that N every time you start
  534.    your computer, and send for the registered copy.
  535.  
  536. 5. The evaluation copy will refuse to read a ZIPKEY.OVL database
  537.    whose free distribution is not yet allowed (less than six
  538.    months old).  If everyone follows the distribution rules, this
  539.    prohibition should never be encountered.  If you do encounter
  540.    it, type DATE to the DOS prompt to make sure your own date is
  541.    set correctly!
  542.  
  543.  
  544. Naming Conventions for Distribution
  545.  
  546. I have abandoned a previous request that the program-and-manual
  547. be in a separate file from the data.  It has proved to be too
  548. confusing, and with inexpensive 14400-baud modems available, it
  549. isn't burdensome to download everything at once.
  550.                                                               1-8
  551.  
  552. So I recommend the distribution file name be either ZIPKEY, or
  553. ZIPKEYym, where y is the last digit of the year of the data, and
  554. m is the month of the data (1=Jan, ... , A=Oct B=Nov C=Dec).  The
  555. extension of the file will, of course, reflect the compression
  556. program used.
  557.  
  558. Examples: ZIPKEY45.ZIP will be the PKZIPped version containing
  559. the 5/94 data.  ZIPKEY5C.ARJ will be the ARJ-compressed file
  560. containing the 12/95 data.  If you prefer not to have version
  561. information in file names, you can use just ZIPKEY.ZIP.
  562.  
  563.  
  564. About the Author
  565.  
  566. I am a professional software author.  I have been programming for
  567. myself since 1965, and professionally since 1975.  I worked for
  568. Intel Corporation for several years, first as a subcontractor,
  569. then as an employee, and then as an independent contractor.  I
  570. have also done contract work for numerous other software firms.
  571. In 1986 I started marketing programs directly to the public,
  572. releasing my A86 assembler and D86 debugger packages as
  573. shareware.  I have been making a living from shareware receipts
  574. since 1987, supporting myself, my wife, and my daughter.
  575.  
  576. In the summer of 1988 I was persuaded by a friend that the world
  577. needed a zipcode-directory and keyboard-enhancement program.  I
  578. naively thought I could complete the program in about ten weeks.
  579. At my level of experience I should have known better-- the first
  580. release took about seven months of full-time work.  The resulting
  581. product is much more powerful and elaborate than the original
  582. vision.  The extra time spent also reflects the difference
  583. between a software tool and a professional-quality software
  584. product -- self-documentation, internal error detection for
  585. "bullet-proof" operation, configurability to anticipate a wide
  586. range of uses, and extensive testing in the field to enhance the
  587. program's design as well as its reliability.
  588.  
  589. ZIPKEY has been a tremendous success, and now accounts for a
  590. majority of my shareware income.  I will continue to update
  591. ZIPKEY's database every month for the forseeable future.
  592.  
  593.  
  594. How to Contact Me
  595.  
  596. I have no plans to move from my present location at least through
  597. the millennium.  So you can write to:
  598.  
  599.     Eric Isaacson Software
  600.     416 East University Ave.
  601.     Bloomington, IN 47401-4739
  602.  
  603. or call (812)339-1811.
  604.  
  605. Sorry, I can't guarantee to return everybody's long distance
  606. calls.  If you'd like to be SURE I'll get back to you, please
  607. invite me to call you back collect, or tell me to charge the cost
  608. of the call to your credit card.
  609.                                                               1-9
  610.  
  611. I now have my own section, GO ZIPKEY, on CompuServe.  My Internet
  612. mail address is 71333.3154@compuserve.com.
  613.  
  614. If you have extraordinary difficulty contacting me, write the ASP
  615. Ombudsman, 545 Grover Road, Muskegon, MI 49442-9427.  He'll also
  616. try to mediate any business problems people might have with
  617. shareware authors or distributors.
  618.  
  619. PLEASE contact me if you find bugs in my programs; I'll fix them!
  620. I accept bug reports from anyone, registered or non-registered,
  621. no questions asked.  It's very frustrating to hear about people
  622. telling each other about bugs, and not telling me.  I still await
  623. Greg Wettstein's A86 bug list.
  624.  
  625. CHAPTER 2   LOOKING UP ZIPCODES
  626.  
  627.  
  628. In this chapter we'll explore all of ZIPKEY's search
  629. capabilities, accessible from ZIPKEY's popup window.  As you read
  630. along, you can execute the examples given from ZIPKEY's
  631. demonstration mode, which pops up the ZIPKEY window without
  632. placing ZIPKEY permanently resident in your computer's memory.
  633. Occasionally I'll talk about what happens in the keystroke
  634. playback sequence, which occurs in ZIPKEY's memory-resident mode.
  635. Those features will show themselves after you've configured
  636. ZIPKEY and then made the program resident in memory, as described
  637. in Chapters 3 and 4.
  638.  
  639.  
  640. Demonstration Mode
  641.  
  642. You can enter ZIPKEY's demonstration mode by selecting option 2
  643. from ZIPKEY's main menu, or directly from the DOS command prompt
  644. by typing
  645.  
  646.    ZIPKEY 2
  647.  
  648. followed by the Enter key.  If there is enough memory, ZIPKEY
  649. will load the entire zipcode database into memory for the
  650. demonstration.  If you are running ZIPKEY from a floppy disk,
  651. this will take a few seconds (but the subsequent searches will be
  652. breathtakingly fast if you're accustomed to floppy access speeds
  653. for data lookup).  After the data is loaded, ZIPKEY's window will
  654. pop up onto your screen, with the ZIPKEY signon message.  As long
  655. as any ZIPKEY window is on the screen, it will tell you what
  656. ZIPKEY expects you to be typing next, at or near the blinking
  657. cursor.  Whenever the popup window is visible (whether in
  658. demonstration mode or memory-resident mode), you can return to
  659. the signon window by pressing the Home key, or you can pop away
  660. the window by pressing the Esc key.
  661.  
  662. Whenever a zipcode specification is complete, ZIPKEY invites you
  663. to confirm the entry by typing the Enter key.  In demonstration
  664. mode, this will simply return you to the signon window, ready to
  665. type another specification.  Later, when you make ZIPKEY
  666. memory-resident, the confirming Enter will initiate the keystroke
  667. playback sequence, in which ZIPKEY fools your computer (and
  668. whatever program you are running) into thinking you have typed a
  669. complete city/state/zip combination.
  670.  
  671.  
  672. Signon Window
  673.  
  674. The signon window contains information establishing my copyright
  675. and advertising my name and address.  It also tells whether you
  676. are running the evaluation copy of the program or the registered
  677. user's copy.  This information exists to remind you that ZIPKEY
  678. is not in the public domain, and that I appreciate being paid for
  679. my efforts.  But it doesn't waste your time-- you can start
  680. typing your zipcode specification right away.
  681.  
  682. The blinking cursor appears just beyond the prompt indicating
  683. each of the four types of zipcode search available to you:
  684.                                                               2-2
  685.  
  686. 1. If you type a digit (0 through 9), ZIPKEY treats it as the
  687.    start of a zipcode to look up.
  688.  
  689. 2. If you type a letter, ZIPKEY assumes you are typing a
  690.    two-letter state abbreviation, to be followed by a city name.
  691.  
  692. 3. If you type a question mark, you are signalling ZIPKEY that a
  693.    city name without a state will follow.  For convenience, the
  694.    unshifted / does the same thing.
  695.  
  696. 4. If you type a left square bracket [, you are signalling ZIPKEY
  697.    that a telephone area code will follow.  For convenience, the
  698.    shifted { does the same thing.
  699.  
  700. There is a fifth specification type, not mentioned explicitly on
  701. the window: the quote mark " to repeat the last zipcode.
  702.  
  703. We'll discuss each search type individually in the following
  704. sections.
  705.  
  706.  
  707. Zipcode Search
  708.  
  709. The zipcode search is simple: you type in a five-digit zipcode,
  710. and ZIPKEY instantly tells you the associated city, if there is
  711. one, with its state and area code.  If the zipcode isn't in the
  712. directory, ZIPKEY will tell you and try to make a guess as to
  713. what city it might be. You can either accept the guess with a
  714. confirming Enter key, correct the entry with the backspace key,
  715. or explore nearby zipcodes with the arrow keys (described
  716. shortly).
  717.  
  718. ZIPKEY is so fast that it can afford to display intermediate
  719. results as you type each digit of the zipcode.  Most people will
  720. ignore these results when typing in most zipcodes-- they are
  721. frills added to make ZIPKEY a little more convenient (and more
  722. fun).
  723.  
  724. To demonstrate this, type the zipcode 47125, pausing after each
  725. digit to see what ZIPKEY tells you.  After the first digit, you
  726. get a lost of all the states whose zipcodes begin with 4.  After
  727. the second digit, you get a list of the 10 possible 3-digit
  728. regions beginnning with those 2 digits.  After 3 digits, ZIPKEY
  729. lists the main city, area codes, and time zones for the region
  730. selected.  After 4 digits, ZIPKEY lists the 10 possible 5-digit
  731. zipcodes and their cities.  Finally, after 5 digits, you get all
  732. the information ZIPKEY has for the zipcode given.
  733.  
  734. In demonstration mode, you can type either the Enter key or the
  735. Home key to begin another search; the Esc key will exit the
  736. program. Later, when you run ZIPKEY as a memory-resident program,
  737. the Enter key acts as a confirmation of the zipcode given,
  738. causing ZIPKEY to pop away the window and play the
  739. city/state/zipcode combination through your keyboard.  The
  740. guessed city will be used if the zipcode did not exist.  If you
  741. don't want the guessed city to be used, you exit via the Esc key,
  742. and type in the city/state/zip yourself.
  743.                                                               2-3
  744.  
  745. The 2- and 3-digit display reflects the fact that zipcodes are
  746. organized around three-digit regions: all non-local mail is
  747. sorted according to region, and shipped to a main center for that
  748. region.  Only when the mail reaches the regional center is it
  749. sorted by the last two zipcode digits.  Most cities listed by
  750. ZIPKEY are the postal service's regional centers for those three
  751. digits, but many are not.  The exceptions are the regions
  752. surrounding large cities, in which the cities themselves have
  753. their own first-three digits.  The postal service considers the
  754. large city to be the regional center; ZIPKEY will instead
  755. typically give the name of a large suburb within that region.
  756. For example, the postal service's regional center for 471 is
  757. Louisville, KY, which handles the mail for nearby areas across
  758. the Ohio River in Indiana.  ZIPKEY gives the main city for 471 as
  759. Jeffersonville, IN, because it gives a better sense of where the
  760. region is.
  761.  
  762. A handy feature of ZIPKEY is that it displays the current time in
  763. the city you've looked up.  To do this, ZIPKEY must know the
  764. timezone in which your computer resides.  This is specified when
  765. you run the INSTALL program that comes on the ZIPKEY diskette.
  766. If it isn't specified correctly, you can rerun INSTALL to get it
  767. right.
  768.  
  769.  
  770. Arrow and Paging Keys During Zipcode Search
  771.  
  772. To allow exploration of ZIPKEY's database, ZIPKEY allows you to
  773. use the up-arrow, down-arrow, PgUp, and PgDn keys at any time
  774. during the entry of a zipcode.  These keys either add or subtract
  775. 1 from the value already typed, letting you "move" through the
  776. database.
  777.  
  778. The up-arrow key subtracts 1 from the digits typed (reflecting
  779. the fact that if the zipcodes were listed in order on a page, the
  780. zipcodes would decrease as you move physically up the page).  The
  781. down-arrow key adds one to the digits typed.  For example, if you
  782. type the single digit 0 to ZIPKEY's signon window, you'll get the
  783. list of states whose zipcodes begin with 0.  You can now press
  784. the down-arrow key repeatedly, to get the states lists for 1, 2,
  785. 3, etc.  You can go backwards by pressing the up-arrow key.
  786. Likewise, you can type the two digits 00 to ZIPKEY's signon
  787. window, then press down-arrow repeatedly to get successive lists
  788. of main region cities.  The value will increment from 09 to 10,
  789. so that the entire list of regions can be cycled through with 100
  790. presses of the down-arrow key.  You get similar results after 3,
  791. 4 and 5 digits -- the 4-digit case is most useful, letting you
  792. page through the individual cities in order.  Holding the
  793. down-arrow key down for auto-repeat with 4 digits typed will give
  794. you a sense of the sheer size of ZIPKEY's database, all packed
  795. into your computer's memory.
  796.                                                               2-4
  797.  
  798. The PgUp and PgDn keys don't provide any radically new
  799. functionality over the up- and down-arrow keys: they simply work
  800. because you might subconsciously think you are in a
  801. word-processor, and expect them to work.  If you press PgUp or
  802. PgDn after 1, 2, or 4 digits are pressed, you get exactly the
  803. same action as the corresponding arrow key.  If you press PgUp or
  804. PgDn after 3 or 5 digits are pressed, ZIPKEY will drop you back
  805. to the 2- and 4-digit cases, respectively, to give you the
  806. "paging" action you might have expected.  If you have configured
  807. ZIPKEY not to display intermediate results (see Chapter 3 for how
  808. to do this), the PgUp and PgDn keys will temporarily enable the
  809. intermediate-results display.
  810.  
  811. Note that these "exploration" keys do not place you into any
  812. special mode: when the typed zipcode increments or decrements, it
  813. is just as if you had typed in the new digits in the first place,
  814. and you can continue typing the zipcode from the new value.  For
  815. example, any of the following keystroke sequences will get you
  816. from the signon window to zipcode 12345:
  817.  
  818.    12345
  819.    0{down}2345
  820.    2{up}2345
  821.    119{down}{down}{down}{down}45
  822.  
  823.  
  824. State and City Search
  825.  
  826. Now we'll discuss the case in which you know the city and state,
  827. and you want to look up the zipcode.  For this case, you start
  828. from ZIPKEY's signon window, and type the two-letter abbreviation
  829. for the desired state.  If you don't remember what the
  830. abbreviation is, don't worry: just type the first letter of the
  831. state's name, and you'll get a display of all the states, with
  832. their abbreviations, that begin with that letter.
  833.  
  834. Your entry of either the state code or the city name can be in
  835. either lower-case or upper-case: ZIPKEY doesn't care.  I give
  836. them in upper case in the following paragraphs just to make them
  837. easier for you to read.
  838.  
  839. After you type the two-letter state abbreviation, ZIPKEY prompts
  840. you for the city name.  As you type the city, ZIPKEY will look up
  841. all cities within that state that start with the letters you have
  842. typed so far.  As soon as there are 50 or fewer matching cities
  843. (usually after only one or two letters), ZIPKEY generates a
  844. display of matching cities.
  845.                                                               2-5
  846.  
  847. For example, suppose you need to know the zipcode for Robinson,
  848. Illinois.  When you see the ZIPKEY signon window, you can type IL
  849. for Illinois, followed by the city name.  There are more than 50
  850. towns in Illinois whose name begins with R, so you don't get a
  851. display if you type just R.  But after you type the second letter
  852. O, a display is generated.  You may continue typing the city name
  853. until there is only one city left.  Or, once there is a display
  854. of cities, you can type a digit to select one of the cities on
  855. the list.  In the database current to this writing, Robinson is
  856. on the line numbered 3 in the RO display, so the complete
  857. specification ILRO3 will select Robinson.  In the ROB display
  858. Robinson moves up to number 2, so that ILROB2 would also select
  859. Robinson.  Robinson is the only city in Illinois starting with
  860. ROBI, so ILROBI would also select Robinson.
  861.  
  862. If there are more than ten cities in the generated display,
  863. you'll see PgDn displayed off the end of the tenth city.  This is
  864. your indication that the PgDn key will give you more cities.  If
  865. you type PgDn once, you'll get the second ten cities that match
  866. what you've typed so far.  A PgUp appears above the top right of
  867. the cities list, to signal that you can now page back to the
  868. first ten cities.  If there are still more cities beyond this
  869. group of ten, the PgDn indicator will remain.  For example,
  870. suppose you want to view all cities in Oregon whose name begins
  871. with the letter B.  You type ORB to the ZIPKEY signon window,
  872. followed by several PgDn keys to reveal several pages of Oregon
  873. "B"-cities.
  874.  
  875.  
  876. Multiple Zipcode Cities
  877.  
  878. If you perform a city search for a city having more than one
  879. zipcode, ZIPKEY will give you the complete list of zipcodes for
  880. that city, but it can't tell you which zipcode matches your
  881. address -- that's beyond the scope of ZIPKEY's city-level data
  882. base.  In this case, once the search has narrowed down to the
  883. single city, ZIPKEY invites you to complete the zipcode with the
  884. trailing digits it needs to resolve the multiple-zip ambiguity.
  885. In ZIPKEY's demonstration mode, this will serve no purpose other
  886. than to show you how the window will work in memory-resident
  887. mode.  In memory-resident mode, the digits you type are needed to
  888. provide the complete zipcode in the keystroke playback of
  889. city/state/zip.  If you type a confirming Enter at a time that
  890. ZIPKEY is prompting you to complete the digits of a zipcode,
  891. ZIPKEY will fill out the zipcode with 0's, just as you might do
  892. when addressing an envelope with a zipcode whose final digits you
  893. don't know.
  894.                                                               2-6
  895.  
  896. For example, suppose you wish to look up the zipcode for
  897. Worcester, MA.  You type MAWORCES to the ZIPKEY signon window,
  898. which is more than enough to narrow the display to the single
  899. city.  Worcester has numerous different zipcodes, all beginning
  900. with 016.  ZIPKEY places the blinking cursor after the common
  901. digits 016, and invites you to complete the zipcode.  If you type
  902. 01, the prompt changes to a confirming Enter, and you'll get a
  903. keystroke playback of 01601 as the zipcode.  If you type Enter
  904. right away instead of 01, you'll get 01600 as the zipcode.  The
  905. Postal Service will send your first-class later to region 016,
  906. where it goes to a "don't know the zip" bin for special
  907. processing.
  908.  
  909. A note about the list of zipcodes for a city: it consists of a
  910. sequence of either individual zipcodes or zipcode ranges.  In a
  911. zipcode range, the first and last zipcodes are always valid
  912. zipcodes for the city displayed.  There will be no zipcodes in
  913. the range that represent a city different than the one displayed.
  914. However, there may be zipcodes within the range that are
  915. undefined.  For example, in the database current at this writing,
  916. the range 01613-55 for Worcester, MA represents a range running
  917. from 01613 to 01655.  You can view the range in detail if you
  918. switch back to zipcode lookup: type Home to return you to
  919. ZIPKEY's signon window, then type 0161 followed by four presses
  920. of the down-arrow key.  You'll see that there aren't any
  921. non-Worcesters between 01613 and 01655, but that most of the
  922. range is undefined.
  923.  
  924.  
  925. City-Only Search
  926.  
  927. ZIPKEY also allows you to search for a city name without
  928. specifying the state.  To use this feature, you type a question
  929. mark to the ZIPKEY signon window.  ZIPKEY will prompt for the
  930. city name, and tell you to press the Enter key when you want the
  931. search to begin.  This search requires ZIPKEY to walk through the
  932. entire zipcode database, which is too slow to display
  933. intermediate results.  You may type either a partial name (the
  934. first few characters), or a complete name.  When you press the
  935. Enter key, ZIPKEY will change the state display to the first
  936. state containing a matching city name, and list the matching
  937. cities.
  938.  
  939. If there are no matching cities, ZIPKEY tells you, and invites
  940. you to correct the entry with the backspace key.  Remember, you
  941. don't have to type the whole city name-- the first few letters
  942. may narrow the possibilities enough for you to find your city
  943. without risking a misspelling.
  944.                                                               2-7
  945.  
  946. Let's do a sample city-only search.  There's a commercial on TV
  947. in which a woman tells how they prepare Shredded Wheat back home
  948. in Nome.  A co-worker replies, "I didn't know you were from
  949. Alaska.", to which the woman replies, "I'm not; I'm from Nome,
  950. Texas."  As a vigilant ZIPKEY user, you wish to know if there are
  951. any other Nomes out there.  You type ?NOME followed by the Enter
  952. key to the ZIPKEY signon window.  ZIPKEY displays the first
  953. state, Alaska, containing a Nome.  Now read on to the next
  954. section to see how to get the other Nomes.
  955.  
  956.  
  957. Moving From State to State
  958.  
  959. The city-only search just described will give you just the first
  960. state containing a matching city.  To move on to subsequent
  961. states, you press the down-arrow key.  So, from our previous
  962. example, when you have Nome, Alaska selected, you press the
  963. down-arrow key to find the next state containing a matching city.
  964. ZIPKEY reveals a hitherto-unrevealed Nome, in North Dakota.
  965. Pressing down-arrow again moves the display to the Nome, Texas of
  966. the Shredded-Wheat woman.  Another down-arrow cycles us back to
  967. Alaska, so we conclude that there are exactly three Nomes in the
  968. database.
  969.  
  970. What happens when there is a state containing a matching city,
  971. but that is the only such state?  If you press down-arrow, ZIPKEY
  972. will take several seconds to try to find another state, then
  973. return to the same display.  You can tell that the search is
  974. complete because the blinking cursor goes to the state code
  975. during the search, then returns to the city name when the search
  976. is over.
  977.  
  978. Again, I've tried to minimize the number of special modes in
  979. which you can be.  When you perform a city-only search, and reach
  980. the first state, it is just as if you had typed that state's code
  981. instead of ? in the first place.  Conversely, if you type a
  982. state-and-city specification, you can move to other states with
  983. that same city specification by pressing the down-arrow key to
  984. move to the next state; or the up-arrow key to move to the
  985. previous state containing a matching city.
  986.                                                               2-8
  987.  
  988. Unabbreviation
  989.  
  990. For consistency and completeness, ZIPKEY's data base stores all
  991. city names in a totally unabbreviated form, spelling out words
  992. such as Saint, Sainte, Fort, Mount, North, South, East, and West.
  993. (The one exception is the word "National" in cities containing
  994. the phrase "National Park", which is stored as "Ntl".  I wanted
  995. to minimize the number of excessively long city names.)  The
  996. unabbreviated forms will not cause a problem for you if you need
  997. to fit your city name into a fixed field, because ZIPKEY does a
  998. good job of abbreviating names as necessary to fit in such fields
  999. (details are in Chapter 3).  But you might forget to spell out a
  1000. name such as St. Louis when typing a city specification that you
  1001. would like ZIPKEY to search.  So ZIPKEY allows the abbreviations
  1002. St, Ste, Ft, Mt, N, S, E, and W for the above-mentioned full
  1003. names.  The abbreviations must be followed by a period or a space
  1004. for ZIPKEY to accept them.
  1005.  
  1006. For example, suppose you type MNST to the ZIPKEY signon window.
  1007. You'll get a list of Minnesota cities beginning with ST, and none
  1008. with Saint.  But if you now type a period or space, ZIPKEY will
  1009. switch to a list of Saint cities.
  1010.  
  1011.  
  1012. Telephone Area Code Search
  1013.  
  1014. You may use ZIPKEY to find out what geographical area is
  1015. associated with a given telephone area code.  Simply type a left
  1016. square bracket [ followed by a three-digit area code.  If an area
  1017. code is the only code for its state, you'll be told the name of
  1018. that state.  If there are other area codes within the state,
  1019. ZIPKEY will give a list of sample cities, to give you an idea of
  1020. what part of the state your area code covers.
  1021.  
  1022. Note that for APO/FPO and Pacific territories, ZIPKEY returns an
  1023. "area code" of 011 -- that's actually the direct-dial access code
  1024. for overseas. Since 011 is not a true area code, the [ search
  1025. doesn't recognize 011: I didn't think it was worth the special
  1026. coding necessary.
  1027.  
  1028.  
  1029. Repeat Last Zipcode
  1030.  
  1031. Finally, we cover a fifth specification that can be typed from
  1032. ZIPKEY's signon window-- a double-quotes mark " to call up the
  1033. last zipcode returned.  This option exists to accommodate hotkeys
  1034. that repeat the last zipcode specified, and also hotkeys that
  1035. play back a keystroke sequence unrelated to any zipcode.  These
  1036. possibilities are covered, with examples, in Chapter 3, in the
  1037. fixed-keystrokes option of the Zipcode Source section.
  1038.                                                               2-9
  1039.  
  1040. Typing the quotes mark " causes ZIPKEY to display the previous
  1041. zipcode, city, and state found, and immediately prompt for the
  1042. confirming Enter key.  The "previous" zipcode specification
  1043. starts out nonsense (Aaron, AL 00000 in the current database at
  1044. this writing) until a real zipcode is looked up.  The "previous"
  1045. specification does not change if a lookup is cancelled via Home
  1046. or Esc -- it changes only after the confirming Enter or alternate
  1047. exit key is pressed.
  1048.  
  1049. CHAPTER 3   ZIPKEY CONFIGURATION
  1050.  
  1051.  
  1052. In this chapter we discuss how you can tailor ZIPKEY to your
  1053. specific needs.  You can choose where the zipcodes are stored
  1054. when ZIPKEY is loaded into your computer's memory, which keys you
  1055. will press to invoke ZIPKEY, the location and color of the ZIPKEY
  1056. popup window, and the format for the city/state/zip combination
  1057. to be played back though your keyboard.
  1058.  
  1059. These adjustable selections for ZIPKEY are stored in a special
  1060. file on your disk, called a ZC (for ZIPKEY Configuration) file.
  1061. Every time ZIPKEY is placed resident in your computer's memory, a
  1062. ZC file is automatically read, to determine all of the
  1063. configuration choices you made.
  1064.  
  1065.  
  1066. Determining Your Configuration Needs
  1067.  
  1068. Before you attempt to create a ZC file, you should spend a little
  1069. time exploring how you are currently typing in addresses.  In
  1070. order to let ZIPKEY fool the computer into thinking you have
  1071. typed in a complete city/state/zip, you'll have to tell ZIPKEY
  1072. exactly what you type-- this can include preliminary positioning
  1073. keystrokes, intervening keystrokes for punctuation, spacing, or
  1074. further positioning, and trailing keystrokes for termination or
  1075. still more positioning.
  1076.  
  1077. For example, suppose that you use two different programs to enter
  1078. addresses: a database management program and a word processor.
  1079. Before you try to configure ZIPKEY, you should invoke each
  1080. program and type in a sample address.  You enter the database
  1081. manager, which puts an address template onto the screen.  You
  1082. type in a name and an address, noticing that you use the Enter
  1083. key to move from field to field.  You press the Enter key to
  1084. reach the start of the city field.  At this point, you should
  1085. count the number of available spaces in the city field.  If this
  1086. is visually difficult, the sample name you type can assist you:
  1087. type Xxxx xxxx xxxx xxxx etc. to mark spaces.  Let's suppose
  1088. there are 17 spaces available.  Make a note of this number:
  1089. ZIPKEY will need it.  You press the Enter key to advance the
  1090. cursor to the two-letter state abbreviation field.  You type a
  1091. sample two-letter state code, and notice that the cursor
  1092. automatically advances to the zipcode field without your typing
  1093. Enter -- such a detail is important for the accurate recording of
  1094. the keystroke sequence.  Then you type the five-digit zipcode and
  1095. notice that another Enter is required to advance the cursor to
  1096. the telephone field. Finally, you type the area code, a minus
  1097. sign (hyphen), and the telephone number.  So the exact keystroke
  1098. sequence for getting from the last field before the city to the
  1099. hyphen after the area code is:
  1100.  
  1101. {Enter}C{Enter}AZ{Enter}T-
  1102.  
  1103. where the variable parts of the entry are denoted by the letters
  1104. C,A,Z,T.  Again, the lack of an {Enter} between A and Z reflects
  1105. the fact that the cursor moves automatically from the state
  1106. abbreviation to the zipcode field.
  1107.                                                               3-2
  1108.  
  1109. Now you discard the sample record you have created, exit your
  1110. database manager, and invoke your word processor.  You use this
  1111. program to type letters: addresses are typed in as a letterhead.
  1112. The format consists of the city name, a comma, a space, the
  1113. two-letter state abbreviation, a space, the zipcode, and two
  1114. Enter keys.  In our notation, this is
  1115.  
  1116. C, A Z{Enter}{Enter}
  1117.  
  1118. with no limitation to the length of the city name.  You have now
  1119. gathered the information needed for a ZIPKEY specification.  You
  1120. can exit your word processor and invoke ZIPKEY's configuration
  1121. option, described in the next section.
  1122.  
  1123.  
  1124. How to Create a ZC File
  1125.  
  1126. You create a ZC file by selecting ZIPKEY main menu option 3,
  1127. "Configure ZIPKEY for memory-resident use".  You may also go
  1128. directly to this option from DOS's command prompt, by typing
  1129. ZIPKEY 3 followed by the Enter key.  If you've never configured
  1130. ZIPKEY before, you will immediately be given the configuration
  1131. questionnaire, as described in the following sections.  If you
  1132. have already configured ZIPKEY, you will be given the
  1133. configuration editing menu.  You can repeat the entire
  1134. configuration by choosing option 1, "Replace entire
  1135. configuration."
  1136.  
  1137.  
  1138. Default Options
  1139.  
  1140. The following sections describe each configuration option you'll
  1141. encounter.  Before we begin each option, however, let's discuss a
  1142. feature that covers the entire ZIPKEY configuration process: the
  1143. default option.
  1144.  
  1145. In most situations during ZIPKEY configuration, ZIPKEY attempts
  1146. to discern what option it thinks you are most likely to select.
  1147. It will display that option underneath the current cursor
  1148. position as it waits for your response.  If you wish to select
  1149. this default option, you may do so explicitly by retyping the
  1150. already-displayed selection.  But you can also select the default
  1151. option by simply pressing the Enter key.
  1152.  
  1153. If you are respecifying a previously-existing configuration, the
  1154. default options will be those from the old file.  You can press
  1155. Enter for those sections that you don't want to change.  If you
  1156. are configuring for the first time, the default is the option
  1157. that I think most people will choose.  If you are confused by an
  1158. option and aren't sure what to select, press Enter to get the
  1159. default setting.
  1160.                                                               3-3
  1161.  
  1162. Memory Model
  1163.  
  1164. ZIPKEY consists of two parts: the ZIPKEY program that controls
  1165. ZIPKEY's functions, and the database that contains the zipcodes
  1166. themselves.  When you make ZIPKEY resident, the program always
  1167. goes into your main computer memory -- it occupies about 22000
  1168. bytes (22K of the 640K available in most late-model computers).
  1169. Unless you use an outside utility such as LOADHI, you don't have
  1170. any choice as to where the ZIPKEY program is stored.  However,
  1171. you do have a choice as to where the database (occupying about
  1172. 128K) is stored:
  1173.  
  1174. 1. You may have the database stored in Lotus-Intel-Microsoft
  1175.    expanded (EMS) memory.  This is a special kind of memory,
  1176.    provided by add-on boards such as Intel's AboveBoard, designed
  1177.    to break the 640K memory capacity "barrier" of the IBM-PC
  1178.    family.
  1179.  
  1180.    If you're not sure whether your system has EMS memory, don't
  1181.    worry: ZIPKEY determines this for you, and makes this option
  1182.    the default if there is sufficient EMS memory available to
  1183.    load the database.
  1184.  
  1185.    If this option is available to you, it is usually the best.
  1186.    It allows the fastest access to the database without occupying
  1187.    main memory, and it avoids any potential problems resulting
  1188.    from attempting to access the disk from a popup utility.
  1189.  
  1190. 2. You may keep the database on your disk, causing ZIPKEY to
  1191.    access the database file every time it looks up a zipcode.
  1192.    This option is slower than the other two options, but not too
  1193.    slow: only two disk read operations (maximum 400 bytes and
  1194.    usually much less) are required to look up each zipcode entry.
  1195.    On a hard disk this takes a small fraction of a second.
  1196.  
  1197. 3. You may load the database into main memory.  This allows the
  1198.    same fast access as the EMS option (maybe even a shade
  1199.    faster), but it means that every other program running on your
  1200.    computer will have 128K bytes less memory to work with.  There
  1201.    are many situations in which this won't be a problem: for
  1202.    example, if the computer is dedicated as a workstation for
  1203.    order entry, you can experiment to see if it works just as
  1204.    well with ZIPKEY's data stored in main memory.  If it does,
  1205.    fine: you get the fastest access without having to buy an EMS
  1206.    memory board.
  1207.  
  1208. There is an additional question if you did not choose to keep the
  1209. data on the disk (you chose EMS or main memory instead).  ZIPKEY
  1210. asks if you will be running Desqview after making ZIPKEY
  1211. resident.  This option will force ZIPKEY to make an additional
  1212. compatibility check before popping up its window (the check is
  1213. made anyway if the data comes from the disk).  Even if you don't
  1214. run Desqview, if you have problems with ZIPKEY in EMS or
  1215. main-memory mode, but not in disk-mode, you should try answering
  1216. Y to this question.
  1217.                                                               3-4
  1218.  
  1219. Intermediate Results
  1220.  
  1221. As an added convenience (and also for fun!) ZIPKEY is capable of
  1222. displaying what it knows about the specification you have typed
  1223. so far.  For example, if you have typed in exactly 4 of the 5
  1224. digits of a zipcode, ZIPKEY will display a list of the 10
  1225. possibilities for the fifth digit.  If you type a partial
  1226. specification and then use the up-arrow, down-arrow, PgUp, and
  1227. PgDn keys, you can "explore" the database.
  1228.  
  1229. There are two reasons why you might want to suppress the display
  1230. of intermediate results: first, to avoid the time it takes to
  1231. look them up.  If you are getting the zipcode data from a slow
  1232. disk, or you are running on an older slow (4.77 MHz) computer,
  1233. then the results are likely to lag a bit behind your typing.  The
  1234. lag is typically no more than about a second-- it's a matter of
  1235. taste whether this is acceptable to you.  The second reason for
  1236. suppressing intermediate results is purely a matter of taste: you
  1237. might be visually annoyed by all that unused information flashing
  1238. past as you type.  If that is the case, however, you may wish to
  1239. choose the option (described later) of taking zipcodes from the
  1240. screen -- that way you can arrange for ZIPKEY's window not to pop
  1241. up at all, which absolutely minimizes the visual distraction.
  1242.  
  1243.  
  1244. Slow Down Keyboard
  1245.  
  1246. This option insures that ZIPKEY doesn't provide keystrokes too
  1247. fast for your program to successfully digest.  To be on the
  1248. conservative side, you should select Y for this option when you
  1249. configure ZIPKEY for the first time.  Then, after you have ZIPKEY
  1250. working, you can try changing this option to N, so that the
  1251. entire city/state/zip combination appears instantaneously in your
  1252. program.
  1253.  
  1254. Two programs that definitely need Y are the Condor database
  1255. system, and older versions of the Wordstar word processor.
  1256.  
  1257. If you select N when you needed Y, you'll see missing keystrokes
  1258. in the playback of city/state/zip.  The problem exists in some
  1259. modern programs, but it is most common in older programs.  The
  1260. problem was made widespread when Borland, in its Turbo Pascal
  1261. version 2, published a recommended procedure for programs to
  1262. fetch keystrokes from the computer.  The procedure involved
  1263. fetching each keystroke two or three times, relying on the fact
  1264. that no human could type the next key before such multiple
  1265. fetches were made.  This programming method did not foresee the
  1266. advent of keyboard enhancement programs such as SmartKey, ProKey,
  1267. and now ZIPKEY, that simulate keyboard typing at computer speeds.
  1268.                                                               3-5
  1269.  
  1270. Window Characteristics
  1271.  
  1272. This section of ZIPKEY's configuration allows you to adjust the
  1273. visual characteristics of ZIPKEY's popup window.
  1274.  
  1275. ZIPKEY tries to present you with a window that is both easily
  1276. noticed and unobtrusive.  To be easily noticed, ZIPKEY pops a
  1277. window with a different color than the underlying screen (reverse
  1278. video for monochrome monitors).  To be unobtrusive, ZIPKEY avoids
  1279. popping up in a location that would cover up the current cursor
  1280. location on the screen.
  1281.  
  1282. For windows configuration, ZIPKEY simultaneously pops up two
  1283. windows.  The main window shows where ZIPKEY usually pops up.
  1284. The alternate window shows where ZIPKEY pops up if the main
  1285. window would cover the current cursor position.   You can
  1286. eliminate the alternate window (thus disabling the cursor-dodging
  1287. feature) by pressing the F5 key, which toggles the alternate
  1288. window on and off.  You'll need to disable the alternate window
  1289. if you want the main window to pop up in the middle of the
  1290. screen, where there isn't room on either side for an alternate
  1291. window.  You can swap the main and alternate windows by pressing
  1292. the F6 key.
  1293.  
  1294. During this configuration window display, you can use the arrow
  1295. keys (Up, Down, Left, or Right) to move the main window.  You
  1296. cannot move the alternate window directly, but you can
  1297. temporarily swap the main and alternate windows with F6, move the
  1298. temporarily-main window, and then reswap with F6 again.
  1299.  
  1300. The remaining function keys are used to adjust the colors for the
  1301. popup window.  The internal numeric codes for the colors are
  1302. displayed, so that you can manually record the settings if you
  1303. wish.  There are two function keys for each setting: one to
  1304. decrement the numeric code, the other to increment the code.  F1
  1305. and F2 change the window color (sometimes called the "background"
  1306. color) usually displayed.  F3 and F4 change the text
  1307. ("foreground") color.  If most of the underlying screen (actually
  1308. a diagonal sample of cells, to save time) is the same background
  1309. color as the window's main color, then ZIPKEY uses the alternate
  1310. color, displayed on only four lines of the main configuration
  1311. window.  The alternate window color is adjusted by F7 and F8; the
  1312. text color by F9 and F10.
  1313.  
  1314. When you have completed adjusting the windows to your taste, you
  1315. press the Enter key to pop away the configuration windows, and
  1316. move on to the next stage of configuration.
  1317.                                                               3-6
  1318.  
  1319. Monochrome and Color Window Settings
  1320.  
  1321. If you are installing ZIPKEY on multiple computers, some with
  1322. monochrome screens and others with color screens, then you should
  1323. create your ZC file on one type of screen, and modify it for
  1324. window colors on another computer with the other type of screen.
  1325. ZIPKEY stores separate color codes for monochrome and color
  1326. screens.  When it is run, ZIPKEY detects whether you have color
  1327. or monochrome.  If you have a color screen, ZIPKEY uses the
  1328. selections you configured on a color screen; if you have a
  1329. monochrome screen, ZIPKEY uses the other selections you made on
  1330. monochrome.  Thus, you don't need to have a different ZC file for
  1331. your monochrome vs. color computers.
  1332.  
  1333.  
  1334. Hotkey Configuration
  1335.  
  1336. All of the options described up to now are general settings--
  1337. they determine the overall characteristics of ZIPKEY, that don't
  1338. depend on which hotkey was pressed to invoke ZIPKEY.  Now we'll
  1339. discuss the characteristics specific to hotkeys -- they change
  1340. depending on the keystroke combination used to invoke ZIPKEY.
  1341.  
  1342. We recall the example spelled out in the section "Determining
  1343. Your Configuration Needs" earlier in this chapter.  In that
  1344. example, you will invoke ZIPKEY in two different contexts: from
  1345. within a database manager, and also from within a word processor.
  1346. The format for typing city/state/zipcode differs in the two
  1347. contexts.  In the following sections, we'll present one method of
  1348. handling the difference: we'll define two different hotkey
  1349. combinations to invoke ZIPKEY.  One hotkey is to be used while in
  1350. the database manager, and the other hotkey is to be used while in
  1351. the word processor.  Later, we'll talk about other ways to handle
  1352. the difference (with alternate exit keys, or with alternate named
  1353. ZC files).
  1354.  
  1355.  
  1356. Hotkey Name
  1357.  
  1358. The first part of a hotkey specification is its name-- the
  1359. combination of keystrokes you will use to invoke ZIPKEY.  To
  1360. detect hotkeys, ZIPKEY monitors the signals coming directly from
  1361. the keyboard into your computer, so that ZIPKEY can tell when you
  1362. have pressed keys simultaneously.  You should select some
  1363. combination of keys that won't be pressed for any purpose other
  1364. than invoking ZIPKEY.  Often you won't need a combination: you
  1365. might find some individual keys on your keyboard that are
  1366. otherwise unused.  Here are some ideas for hotkeys you can use:
  1367.  
  1368. 1. You can use the 5 key on the numeric keypad.  Of course, you
  1369.    should only choose this if you habitually keep Numlock off.
  1370.    Otherwise, you wouldn't be able to use the keypad to type any
  1371.    numbers containing the digit 5.
  1372.  
  1373. 2. Other individual keys that are seldom used are the F11 and F12
  1374.    keys on the newer-generation keyboards, and the SysReq key on
  1375.    the AT keyboard.
  1376.                                                               3-7
  1377.  
  1378. 3. If the computer using ZIPKEY is dedicated to a single purpose,
  1379.    such as order entry, you might have a printing key on your
  1380.    keyboard, such as the back-quote key, that is almost never
  1381.    used.  You can make this key a ZIPKEY hotkey without causing
  1382.    too much inconvenience.  If you do so, you may wish to define
  1383.    Alt-backquote as a special hotkey that produces a back-quote
  1384.    (how to do this is discussed later).
  1385.  
  1386. 4. Exotic combinations of the shifting keys (Shift, Ctrl, Alt),
  1387.    possibly combined with a single non-shifting key, are often
  1388.    used as hotkeys to invoke memory-resident programs.  Examples:
  1389.    Ctrl-RightShift, both Shift keys, Ctrl-Shift-Z, or both Shift
  1390.    keys and Z.  A couple of cautions are in order here: First, if
  1391.    there are other memory-resident programs residing
  1392.    simultaneously with ZIPKEY, you must insure that every
  1393.    programs' hotkeys can be detected by that program.  For
  1394.    example, Ctrl-Alt-Z wouldn't be a good ZIPKEY hotkey if you
  1395.    have Sidekick, because Sidekick would pop in when it saw the
  1396.    Ctrl-Alt.  Second, you should be aware that ZIPKEY
  1397.    distinguishes between left and right shifting keys.  If you
  1398.    don't want ZIPKEY to distinguish, you can define identical
  1399.    hotkeys with each combination.
  1400.  
  1401. 5. If you've used up all the obvious sequences, ZIPKEY allows
  1402.    combinations not usually seen in hotkeys; namely, you can have
  1403.    more than one non-shifting key.  A mnemonic choice would be
  1404.    the Z and C keys pressed simultaneously-- they're close
  1405.    together but not adjacent so the combination won't be pressed
  1406.    accidentally.  This hotkey requires an extra consideration:
  1407.    from the computer's point of view, the keys will never be
  1408.    simultaneous: one code will always be received before the
  1409.    other.  ZIPKEY doesn't care which key comes first, as long as
  1410.    the second key is pressed before the first one is released.
  1411.    But before ZIPKEY can pop up, one of the two keycodes will be
  1412.    seen by the program (e.g. the database manager or word
  1413.    processor) that you're running.  So an unwanted Z or C will be
  1414.    displayed. You handle this in your returned city/state/zip
  1415.    keystroke sequence, by specifying the first returned keystroke
  1416.    to be the backspace key, wiping out the Z or C.
  1417.  
  1418.    Another caution is in order for the most exotic sequences:
  1419.    some keyboards get confused by more than two non-shifting keys
  1420.    pressed simultaneously, and don't deliver all the codes to the
  1421.    computer for ZIPKEY to see. ZIPKEY lets you verify that your
  1422.    sequence is being received correctly, by echoing the sequence
  1423.    for confirmation.  You can experiment with various
  1424.    combinations to see what works, before confirming the name for
  1425.    your hotkey.
  1426.  
  1427. The echoing of your hotkey is based on the internal codes
  1428. delivered by the IBM-PC and 100%-compatible keyboards.   Most
  1429. keyboards are compatible with the IBM-PC, but some aren't.  For
  1430. those keyboards, the echoed names won't match the names of the
  1431. keys as you know them.  However, as long as the echoing is
  1432. consistent (you get the same thing on several tries), the hotkey
  1433. will work correctly when you use ZIPKEY.
  1434.                                                               3-8
  1435.  
  1436. Recalling our database/word processing example: let's assume you
  1437. have a newer-generation keyboard with F11 and F12 keys.  You'll
  1438. use F11 for the database hotkey and F12 for the word processing
  1439. hotkey.  So the first time you are prompted for a hotkey name,
  1440. type the F11 key for the name, and Y to confirm the name.
  1441.  
  1442.  
  1443. Zipcode Source
  1444.  
  1445. Once you have confirmed the name of a hotkey, ZIPKEY next asks
  1446. for the first action it should take when you have pressed the
  1447. hotkey.  There are four choices: first, ZIPKEY can simply pop up
  1448. its window and wait for the operator to type a zipcode
  1449. specification.  Second, ZIPKEY can look at the contents of the
  1450. video display, to find a zipcode that already appears on the
  1451. screen.  Third, ZIPKEY can pretend that it has popped up its
  1452. window and that a fixed sequence of zipcode specification
  1453. keystrokes has already been typed. Finally, ZIPKEY can look at
  1454. the last 16 keystrokes typed, and use the last 5 digits typed as
  1455. the zipcode to be searched.  Let's consider each choice in turn:
  1456.  
  1457. 1. The popup-window option is the simplest and most
  1458.    commonly-used.  There are no further configuration choices you
  1459.    need to make for this option.
  1460.  
  1461. 2. The video screen option is used when the zipcode has already
  1462.    been typed at the time ZIPKEY is invoked.  You can use this
  1463.    option to create a hotkey that verifies existing address
  1464.    records, or to create a data-entry scenario in which ZIPKEY's
  1465.    window normally doesn't pop up at all, and so is the most
  1466.    unobtrusive.
  1467.  
  1468.    If you choose to take the zipcode from the video screen,
  1469.    ZIPKEY will look for five consecutive digits on the same line
  1470.    as the cursor, or on an immediately adjacent line, above or
  1471.    below the current line.  If no five-digit sequence is seen,
  1472.    ZIPKEY will pop up a window just as if option 1 had been
  1473.    selected.  If a five-digit sequence is seen but it isn't a
  1474.    valid zipcode, ZIPKEY will pop up its window with that
  1475.    zipcode, and tell you that the city wasn't found.  For the
  1476.    final possibility, a valid five-digit zipcode, you have an
  1477.    option: you can have ZIPKEY pop up its window so that you can
  1478.    confirm the city, or you can have ZIPKEY automatically play
  1479.    back the city/state/zip sequence without popping up at all.
  1480.    If you want to allow the possibility of using alternate exit
  1481.    keys (described later), you must choose to have ZIPKEY always
  1482.    pop up the window.
  1483.  
  1484.    What happens if there is more than one five-digit sequence on
  1485.    the screen? ZIPKEY uses the first sequence it finds, searching
  1486.    in the following order: first, it starts five characters
  1487.    beyond the current cursor position, looking backwards to the
  1488.    start of the current line.  Then it looks from the current
  1489.    cursor position forwards to the end of the current line.  Then
  1490.    it looks backwards from the end to the start of the line above
  1491.    the current cursor position.  Finally, it looks from the start
  1492.    to the end of the line below the current cursor position.
  1493.                                                               3-9
  1494.  
  1495. 3. The fixed-keystroke option is used for a number of
  1496.    special-purpose applications.  For example, if a large number
  1497.    of addresses that you type are in a local area in which the
  1498.    first three zipcode digits are always the same, you may wish
  1499.    to define a hotkey with a fixed-keystroke sequence consisting
  1500.    of those three digits.  Or, if your data-entry scenario
  1501.    includes typing the zipcode twice (as a part of an ID number,
  1502.    then later as a part of the address), you may wish to define
  1503.    an option 1 (popup) hotkey for the first instance of the
  1504.    zipcode, then another, option 3 hotkey for the second
  1505.    instance, with a fixed-keystroke string of "{Enter} to repeat
  1506.    the zipcode.  Finally, you can use this option to make hotkeys
  1507.    to generate keystroke sequences having nothing to do with
  1508.    zipcodes.  To do this, you again use "{Enter} as the fixed
  1509.    input sequence, so that the ZIPKEY window doesn't pop up.
  1510.    Then you specify a playback sequence that doesn't use any of
  1511.    the zipcode entries -- I'll give an example at the end of this
  1512.    chapter.
  1513.  
  1514.                                                              3-10
  1515.  
  1516.    When you choose this option, ZIPKEY prompts you for the fixed
  1517.    keystroke sequence.  Remember, this is a sequence of keys that
  1518.    you could have typed if ZIPKEY's window had popped up.  Thus,
  1519.    it should follow ZIPKEY's popup syntax: either a sequence of
  1520.    digits for a zipcode, or a two-letter state code followed
  1521.    optionally by a (partial or complete) city name, or a
  1522.    question-mark followed by a city name, or the double-quotes
  1523.    mark " to repeat the last zipcode.
  1524.  
  1525.    Note that the Enter key can be included in the keystroke
  1526.    sequence.  Thus you must use another key to tell ZIPKEY right
  1527.    now that you've finished typing the keystroke sequence.  I
  1528.    have chosen the * character as the signal for this, as it
  1529.    isn't a part of ZIPKEY's popup syntax.
  1530.  
  1531.    A common mistake is to confuse this fixed keystroke sequence
  1532.    with the sequence of keys intended to be played back through
  1533.    your keyboard.  If, for example, you provide Bloomington, IN
  1534.    47401* here, ZIPKEY will pretend you had typed BLOO etc. when
  1535.    its window popped up. ZIPKEY is forgiving about BL not being a
  1536.    proper state code, and will switch to a city-only search for
  1537.    the string given.  However, the comma and all the follows will
  1538.    be part of the city name being searched, so the search will
  1539.    fail.  You should instead provide the simpler fixed sequence
  1540.    47401{Enter}* and give a playback sequence (described shortly)
  1541.    that causes the desired fixed city/state/zip combination.
  1542.  
  1543. 4. The last-keystrokes option is the only one you can use if you
  1544.    wish to type in zipcodes from within graphics programs such as
  1545.    Borland Reflex or Ventura Desktop Publisher.  ZIPKEY cannot
  1546.    pop up when your video display is in graphics mode; nor can it
  1547.    read the contents of the screen.  With this option, you type
  1548.    the zipcode first, before pressing the ZIPKEY hotkey.  ZIPKEY
  1549.    can replace the zipcode typed with the city/state/zip, without
  1550.    the window ever needing to pop up.  If the zipcode isn't
  1551.    already placed correctly when it is typed, you need to begin
  1552.    your playback sequence with bbbbb to wipe out the zipcode.
  1553.  
  1554. In the database management example, you'll choose option 1, to
  1555. pop up a window and wait for the operator to type in the zipcode.
  1556.  
  1557.  
  1558. Format of City/State/Zip Keystrokes
  1559.  
  1560. In normal ZIPKEY usage, after the zipcode has been specified and
  1561. the Enter key is typed to confirm the city found, ZIPKEY will
  1562. fool the computer into thinking a complete city/state/zip
  1563. combination has been typed.  You specify the format for this
  1564. combination now, during the specification of your hotkey.
  1565.  
  1566. The sequence usually consists of variable parts (city, state,
  1567. zip, area code, time zone) that depend on the zipcode, combined
  1568. with fixed parts: the keystrokes that separate the variable
  1569. parts, such as spaces, punctuation marks, and positioning keys.
  1570. As you specify the sequence, you type most of the fixed parts
  1571. (spaces, commas, Enter, Tab, arrow keys, etc.) just as you want
  1572. them played back.  For each variable part, you substitute a
  1573. letter (which you can type in either upper- or lower-case) from
  1574. the following list:
  1575.                                                              3-11
  1576.  
  1577. C  causes the name of the city to be generated.  ZIPKEY will
  1578.    abbreviate the name as necessary to fit it into a fixed-sized
  1579.    field.  When you type the C now at configuration time, a
  1580.    window pops up, prompting you to follow the C with the
  1581.    two-digit width you would like the city to fit into. You
  1582.    should type 99 if there is no limit.  A limit of 15 will give
  1583.    you reasonable results in all cases.  A limit less than 15
  1584.    will make some entries undecipherable and/or ambiguous.  A
  1585.    limit of 19 will cause all but a few cities not to be
  1586.    abbreviated at all.  The longest city name in the database is
  1587.    King and Queen Court House (Virginia), which has 26
  1588.    characters.
  1589.  
  1590.    If you type a limit less than 99, ZIPKEY will then ask you to
  1591.    specify whether the playback should follow the city name with
  1592.    a sequence of spaces (or right-arrows, or whatever) to fill
  1593.    out the fixed field.  Most database managers (including the
  1594.    one in our example) won't require this -- they let you type a
  1595.    single key, such as Enter or Tab, to advance to the next
  1596.    field. You would typically need this padding only if you are
  1597.    using a simple text editor to maintain a fixed-field database.
  1598.    If you need the padding, type F followed by the padding
  1599.    character (typically the space bar).  If you don't need the
  1600.    padding, type N and continue the playback sequence by
  1601.    providing the character needed (Enter, Tab, etc.) to advance
  1602.    beyond the city field.
  1603.  
  1604. A  causes the two-letter state abbreviation (in capital letters)
  1605.    to be generated.
  1606.  
  1607. Z  causes the five-digit zipcode to be generated.  There is one
  1608.    case -- a city search which returned multiple zipcodes in
  1609.    which the operator didn't complete the zipcode -- that 0's are
  1610.    provided to complete the zipcode.
  1611.  
  1612. T  causes the three-digit telephone area code to be generated.
  1613.  
  1614. H  causes a two-digit number indicating the time zone to be
  1615.    generated.  The number represents the number of hours beyond
  1616.    the Internation Date Line: 04 for Pacific, 07 for Eastern,
  1617.    etc.
  1618.  
  1619. D  causes a single keystroke to be generated, that indicates
  1620.    whether the city observes daylight savings time in the summer.
  1621.    You follow the D with two keystrokes: the one you want output
  1622.    if it is observed, followed by the one you want output if it
  1623.    isn't.  For example, DYN will output a Y if it is, an N if it
  1624.    isn't.
  1625.  
  1626. In addition to the above commonly-used letters, ZIPKEY offers the
  1627. following letters for more special purposes:
  1628.                                                              3-12
  1629.  
  1630. B  causes a backspace to be generated.  This is on this list so
  1631.    you can use the backspace key right now to correct your
  1632.    configuration entry.  You will begin your playback sequence
  1633.    with B if the hotkey name was something like Z C, which causes
  1634.    one letter to escape to the application program.  You can also
  1635.    begin the playback sequence with BBBBB if you used option 2 or
  1636.    option 4 above to read a just-typed zipcode, and you wish to
  1637.    replace the zip with city/state/zip in the playback sequence.
  1638.  
  1639. L  causes the next character to be literalized -- that is, it is
  1640.    output as-is even though it might be on this list.  You can
  1641.    and should literalize all letters played back, just in case
  1642.    future versions of ZIPKEY add new letters to this list.  You
  1643.    can also literalize the * character to cause it to be played
  1644.    back instead of being interpreted as the terminator to this
  1645.    sequence.  For example, you may wish to embellish our
  1646.    word-processing example by appending LDLeLaLr followed by a
  1647.    space to the playback, causing "Dear " to be generated below
  1648.    the letterhead.
  1649.  
  1650. R  is used to retreat back across a variable-length city name.
  1651.    This would be used in a special case in which an address is
  1652.    being generated that might be indented on the page by an
  1653.    unknown amount.  Some text editors might require you to
  1654.    left-arrow back to the start of the name, then down-arrow to
  1655.    the next line to be aligned with the city-line.  You follow
  1656.    the R with the left-arrow key, or whatever other key you wish
  1657.    to be repeated by the length of the city name.
  1658.  
  1659. S  causes the full name of the state to be generated.  Most
  1660.    people will not use S, but instead use A to generate the
  1661.    two-letter abbreviation.
  1662.  
  1663. W  causes the computer to wait until the next 1/18th-second timer
  1664.    tick before generating the next keystroke.  This is an
  1665.    alternative to the keyboard slowdown option.  Some
  1666.    applications require an extra-slow playback at one particular
  1667.    point -- perhaps at the beginning, or at some point at which
  1668.    the program switches screens or accesses your disk. At those
  1669.    points, you may need to insert one or more W's into the
  1670.    playback sequence.
  1671.  
  1672. Just as with the fixed input specification, you can include the
  1673. Enter key as part of the sequence of keystrokes.  So you signal
  1674. ZIPKEY that the sequence is complete with the * character.
  1675.  
  1676. Returning to our database example, recall that the keystroke
  1677. sequence used for entering the city/state/zip/areacode
  1678. combination was
  1679.  
  1680. {Enter}C{Enter}AZ{Enter}T-
  1681.                                                              3-13
  1682.  
  1683. This is what you should type when ZIPKEY asks for the keystroke
  1684. playback sequence.  When you type C, ZIPKEY asks for the maximum
  1685. city width-- you should give the field width 17.  Then ZIPKEY
  1686. tells you to type F if you need padding, and N if you don't.  You
  1687. don't need padding, so you type N.  The complete specification
  1688. you type, including the terminating *, is
  1689.  
  1690. {Enter}C17N{Enter}AZ{Enter}T-*
  1691.  
  1692.  
  1693. Multiple Hotkeys
  1694.  
  1695. As a more advanced option, ZIPKEY allows you to define multiple
  1696. hotkeys.  (The limit is 99, which I hope is much more than anyone
  1697. will ever need.)  When you are setting up a new configuration
  1698. file, ZIPKEY will invite you to define another hotkey after the
  1699. first hotkey specification is complete.  You may also add hotkeys
  1700. at any point later in time, by selecting the appropriate option
  1701. in the configuration editing menu.
  1702.  
  1703. In our example, you answer Y to the invitation to define another
  1704. hotkey, and name the second hotkey F12.  You again choose zipcode
  1705. source option 1, to pop up the window and wait for keyboard
  1706. input.  The keystroke return sequence for word processing,
  1707. including the 99 for unlimited width and the terminating *, is
  1708.  
  1709. C99, A Z{Enter}{Enter}*
  1710.  
  1711.  
  1712. Exit Keys
  1713.  
  1714. Here is another option for more advanced users.  We've just seen
  1715. that one way to specify different keystroke playback sequences is
  1716. to define a different hotkey for each sequence.  Another way is
  1717. to define one or more alternate ZIPKEY exit keys.
  1718.  
  1719. The normal method for confirming a zipcode and initiating key
  1720. playback is the Enter key.  If you have defined an alternate exit
  1721. key, you can press that alternate key instead of Enter to confirm
  1722. a zipcode.  The keystroke playback sequence is associated with
  1723. the exit key, and so remains the same no matter what hotkey was
  1724. used to invoke ZIPKEY.
  1725.                                                              3-14
  1726.  
  1727. Since the function keys (F1, F2, etc.) have no other meaning at
  1728. the moment you are about to exit the ZIPKEY window, they are good
  1729. choices for alternate exit keys.  Let's consider our
  1730. database-and-word processing example.  Suppose you don't have a
  1731. new-generation keyboard with F11 and F12 keys, and you don't like
  1732. exotic keystroke combinations.  So you wish to define only one
  1733. hotkey, numeric 5.  You decide that most addresses will be typed
  1734. in through the database manager, so you specify the database
  1735. return sequence {Enter}C17N{Enter}AZ{Enter}T-* for the hotkey.
  1736. It will be played back whenever the Enter key is used to confirm
  1737. a zipcode.  For word processing, you define an alternate exit key
  1738. F1, and specify the word-processing sequence C99,  A
  1739. Z{Enter}{Enter}* as the playback sequence for F1.  Then, whenever
  1740. an address is being typed to the word processor, it is confirmed
  1741. with F1 instead of Enter, to get the alternate playback.
  1742.  
  1743. You can, of course, have both multiple hotkeys and alternate exit
  1744. keys. This would be desirable, for example, if you wanted to have
  1745. a number of different input combinations (e.g. popup a window
  1746. immediately, take the zipcode from the screen, and several
  1747. different fixed keystroke combinations for different localities),
  1748. combined with a number of different playback sequences.  You
  1749. would define a different hotkey for each input possibility, and
  1750. an alternate exit key for each playback sequence (except the most
  1751. commonly-used sequence, which you specify for every hotkey as the
  1752. sequence used when Enter is pressed to confirm an entry).
  1753.  
  1754. Another usage of exit keys is to handle exceptional cases of
  1755. address entry. Two examples come to mind.  First, you may wish to
  1756. define an exit key for cases in which ZIPKEY's city doesn't match
  1757. the city you wish to type. Alas, the existence of zipcodes
  1758. covering two cities makes this a possibility. You can define a
  1759. key sequence that fills in everything except the city, and leaves
  1760. your cursor at the city field ready for entry.  That way you're
  1761. still saving keystrokes having used ZIPKEY.  Second, you could
  1762. define an exit key that facilitates the entry of 9-digit (ZIP+4)
  1763. codes.  ZIPKEY doesn't have any information about 9-digit
  1764. zipcodes-- that database would occupy over 25 megabytes, even
  1765. with ZIPKEY's rate of compression.  But you can define an exit
  1766. key to handle 9-digit address entry, by specifying a key sequence
  1767. that outputs a hyphen after the zipcode, and leaves the cursor
  1768. positioned after that hyphen.  Then you can type the first 5
  1769. digits to ZIPKEY, and the final 4 digits after the window pops
  1770. away.  In the coming years, when 9-digit zips appear in the
  1771. majority of addresses, you can make this sequence the main hotkey
  1772. sequence, and the 5-digit case a special exit key sequence.
  1773.                                                              3-15
  1774.  
  1775. Configuration Editing Menu
  1776.  
  1777. After your configuration specification is complete, ZIPKEY goes
  1778. to the configuration editing menu.  This menu allows you to
  1779. display and/or modify the configuration choices you have made.
  1780. There are the general options (memory, intermediate results, slow
  1781. keyboard, and all the window settings), the hotkey names, and the
  1782. exit key names and playback sequences.  Again, the default values
  1783. for the general options are the values you chose before -- if you
  1784. wish to change just a single option, choose "General options" and
  1785. then just keep pressing Enter until that setting comes up.
  1786.  
  1787. Option 6 of the configuration menu allows you to generate your
  1788. own quick reference card. I do not provide a printed
  1789. quick-reference card as a part of the ZIPKEY software package,
  1790. because much of the useful information contained on that card is
  1791. specific to your configuration.  Instead, this option prepares a
  1792. quick-reference document containing the configuration
  1793. information, that you can print out yourself.  The file is
  1794. written as ZIPKEY.ZQR (ZQR stands for Zipkey Quick Reference) on
  1795. your current disk directory.  You may wish to edit the document
  1796. for formatting before printing it; or you can simply type to the
  1797. DOS prompt the command COPY ZIPKEY.ZQR PRN.
  1798.  
  1799.  
  1800. Named Configuration Files
  1801.  
  1802. The final action in the configuration process is to save the ZC
  1803. (Zipkey Configuration) file to your disk, so that ZIPKEY can read
  1804. it every time you make ZIPKEY resident in memory.  If you will
  1805. have only one configuration, you should use the default file
  1806. name, ZIPKEY.ZC.
  1807.  
  1808. You may, however, wish to have different configurations, either
  1809. for different users or for different computing contexts.  In our
  1810. example, this would be a third way to provide a different
  1811. playback sequence for the database manager vs. word processor
  1812. case.  You could configure a single hotkey for the database, and
  1813. name its ZC file DATA.ZC.  Then you could make another
  1814. configuration, named WORD.ZC, with a single hotkey for the word
  1815. processor. Before entering the database manager, you always load
  1816. ZIPKEY using DATA.ZC; before entering the word processor, you
  1817. load ZIPKEY using WORD.ZC.
  1818.  
  1819. When ZIPKEY asks you for the name of the configuration file, you
  1820. do not need to type the file-name extension .ZC, but you can if
  1821. you want.  Any extension other than .ZC will be ignored, and .ZC
  1822. will be used.
  1823.  
  1824. The ZQR file produced by the quick reference document generation
  1825. option is always named after the ZC file.  For example, the ZQR
  1826. file for DATA.ZC is DATA.ZQR.
  1827.                                                              3-16
  1828.  
  1829. Modifying Configuration Files
  1830.  
  1831. You may modify a configuration file at any time, by selecting
  1832. option 3 from the main menu, or by invoking ZIPKEY 3 from the DOS
  1833. command prompt.  You may also include the name of the ZC file in
  1834. the DOS command prompt.  For example, ZIPKEY 3 DATA will cause
  1835. ZIPKEY to look for DATA.ZC. If the ZC file you wish to modify is
  1836. not found, ZIPKEY initiates a brand new configuration sequence,
  1837. but the first choice (Memory model) give you the option of
  1838. retyping the configuration file name in case you mistyped it.
  1839.  
  1840. The default choice in the configuration editing menu tells you if
  1841. you have made any modifications to the file.  If it is 8 (abort,
  1842. exiting without saving), you haven't modified the file.  If it is
  1843. 7 (disk save), you have.
  1844.  
  1845.  
  1846. More Hotkey Examples
  1847.  
  1848. Here are the complete configuration specifications for a few of
  1849. the scenarios mentioned earlier in this chapter.  To work the
  1850. examples in this section, type ZIPKEY 3, then either walk through
  1851. a configuration process until you get to the "Hotkey name"
  1852. prompt, or select option 3, "Hotkey settings", of the
  1853. configuration editing menu.
  1854.  
  1855. First, let's configure so that the zipcode comes from the screen,
  1856. and the ZIPKEY window doesn't pop up at all if the zipcode is
  1857. found.  When prompted for the hotkey name, press the back-quote
  1858. key.  Select option 2, "From the zipcode near the current cursor
  1859. position on the screen."  Then type N, you don't want the screen
  1860. to pop up for confirmation if the zipcode is found.  For the
  1861. playback sequence, we'll assume that you want to erase the
  1862. just-typed zipcode and replace it with a letterhead: type
  1863.  
  1864. BBBBBC99, A Z{Enter}
  1865.  
  1866. and terminate with the * key.
  1867.  
  1868. Because we used a displaying key (the backquote key) as the
  1869. hotkey in the previous example, let's define another hotkey that
  1870. generates a backquote.  When prompted for the hotkey name, type
  1871. Alt-backquote.  Select option 3, fixed string, for the zipcode
  1872. source.  ZIPKEY then asks for the fixed specification, and you
  1873. type the double-quotes key " followed by {Enter} and the
  1874. terminating * key.  Your keystroke playback sequence then has
  1875. nothing to do with zipcodes: it is simply the backquote key
  1876. followed by the terminating * key.  Now if you need to generate a
  1877. back-quote, you can type Alt-backquote.
  1878.                                                              3-17
  1879.  
  1880. Next, let's handle the case in which a zipcode is typed twice:
  1881. once as a part of an identification code, and then later as a
  1882. part of the address.  When prompted for the hotkey name, type the
  1883. Z and the 1 keys simultaneously.  For the zipcode source, choose
  1884. option 1, "The operator types it in after the window is popped
  1885. up."  Since you used two non-shifting keys, one of the keys will
  1886. have been fed to your application program: you now wipe it out by
  1887. beginning the playback sequence with B.  Since the city and state
  1888. name aren't part of the identification code, the playback is just
  1889. the backspace and the zipcode: BZ followed by the terminating *
  1890. key.  Next you specify a second hotkey, named with the Z and 2
  1891. keys.  Since you are repeating the zipcode just looked up for the
  1892. identification code, you specify option 3, fixed string, as the
  1893. zipcode source.  ZIPKEY then asks for the fixed specification,
  1894. and you again type the double-quotes key " followed by {Enter}
  1895. and the terminating * key.  Then you type the keystroke playback
  1896. sequence: C17N{Enter}AZ{Enter}T- followed by the terminating *
  1897. key.
  1898.  
  1899. Finally, let's do an example in which we provide a fixed field on
  1900. a simple text editor.  The city field will be 19 characters wide,
  1901. starting at column 33 on a line, which is the fourth tab stop.
  1902. It will be followed by the state abbreviation and the zipcode.
  1903. For the hotkey name, press both Shift keys, then press the Z key.
  1904. Choose option 1 as the zipcode source.  For the playback
  1905. sequence, we assume that the Home key will put the cursor at the
  1906. start of the current line, so you can specify
  1907.  
  1908.    {Home}{Tab}{Tab}{Tab}{Tab}C19F A Z*
  1909.  
  1910. which will leave the cursor just beyond the zipcode.
  1911.  
  1912.  
  1913. Conclusion
  1914.  
  1915. This concludes the description of ZIPKEY configuration.  In the
  1916. next chapter we'll discuss how to arrange the ZC file together
  1917. with the other ZIPKEY files, so that ZIPKEY is permanently
  1918. available to you.
  1919.  
  1920. As you have seen, ZIPKEY has a wide array of options.  There is
  1921. often more than one method of handling a given configuration
  1922. requirement.  Which method you choose is often simply a matter of
  1923. personal taste.  If you are intimidated by the choices, then keep
  1924. things simple to start out with.  Like any complex program,
  1925. ZIPKEY will serve you best if you let yourself become familiar
  1926. with it before trying to exploit every feature.
  1927.  
  1928. CHAPTER 4   RUNNING MEMORY-RESIDENT ZIPKEY
  1929.  
  1930.  
  1931. This chapter assumes you have some familiarity with DOS concepts
  1932. and commands-- for example, it assumes you know what a
  1933. subdirectory is, and how to copy a file to a subdirectory.  If
  1934. you aren't very familiar with DOS (you run straight to your
  1935. word-processor and stay there when you turn your computer on),
  1936. you may need to have a DOS-knowledgeable person assist you.
  1937.  
  1938.  
  1939. Placing ZIPKEY Resident in Memory
  1940.  
  1941. In Chapter 3 we discussed how to create a ZC file to configure
  1942. ZIPKEY to your specific needs.  Once you have done so, you are
  1943. ready to run ZIPKEY as a memory-resident program.  You do so by
  1944. selecting option 4 of the ZIPKEY main menu.  You can also do so
  1945. directly from the DOS command prompt, by issuing the command
  1946.  
  1947.       ZIPKEY 4
  1948.  
  1949. followed by the Enter key.  If you have a ZC file named something
  1950. other than ZIPKEY, you include the ZC file name on the command
  1951. line.  For example, if you have a ZC file named DATA, either of
  1952. the following command lines will load ZIPKEY as a memory resident
  1953. program, using the configuration file DATA.ZC:
  1954.  
  1955.    ZIPKEY 4 DATA
  1956.    ZIPKEY DATA 4
  1957.  
  1958. The process of loading ZIPKEY as a memory-resident program causes
  1959. your computer to exit the ZIPKEY program, and return you to the
  1960. DOS command prompt.  You are now ready to run any other programs
  1961. you choose, but ZIPKEY is still in your computer's memory, ready
  1962. to be activated at any time by the hotkey or hotkeys you chose
  1963. when you configured ZIPKEY as described in Chapter 3.
  1964.  
  1965. As an example, let's assume you have defined a ZC file with the
  1966. two hotkeys we discussed in Chapter 3: one, F11, for use within
  1967. your database manager, and the other, F12, for use within your
  1968. word processor.  Having loaded ZIPKEY as a memory-resident
  1969. program, you can now enter either your database manager or your
  1970. word processor to see if ZIPKEY works.  You reenter your database
  1971. manager, just as you did before you configured ZIPKEY, to type in
  1972. a sample address.  Just as before, the database manager puts an
  1973. address template onto the screen.  You type in a sample name and
  1974. street address; but instead of typing the Enter that will advance
  1975. you to the city field, you type the F11 hotkey instead.  The
  1976. ZIPKEY window pops onto the screen, inviting you to type a
  1977. zipcode specification.  (If it doesn't, see the section "ZIPKEY
  1978. and Other Memory-Resident Programs", later in this chapter.)  You
  1979. may type any specification as described in Chapter 2.
  1980.                                                               4-2
  1981.  
  1982. For most business applications, you will already have the zipcode
  1983. available to you, and you will be using ZIPKEY to make the data
  1984. entry faster and more accurate.  You type in a zipcode, 31625,
  1985. and get the city Barney, GA for confirmation.  You confirm with
  1986. the Enter key.  Now, if you defined your keystroke playback
  1987. sequence to duplicate what you would have typed to your database,
  1988. you should see the city, state, and zip fields of your address
  1989. template filled with the correct values.
  1990.  
  1991. What do you do if the template is not filled correctly?  You need
  1992. to determine if you got the keystroke playback sequence right.
  1993. If the city/state/zip appears to be there but is in the wrong
  1994. fields, then it's likely that you got your cursor-positioning
  1995. keys wrong -- either too many or not enough.  You should repeat
  1996. the exact keystroke sequence used to enter city/state/zip, and
  1997. make sure that is the sequence specified to ZIPKEY's
  1998. configuration.  You can get a listing of what you specified by
  1999. printing out the ZQR (Zipkey Quick Reference) file that you can
  2000. create via option 7 of the ZIPKEY configuration editing menu.
  2001. For example, if you created ZIPKEY.ZQR, type the command
  2002.  
  2003.    COPY ZIPKEY.ZQR PRN
  2004.  
  2005. to the DOS command prompt, and the listing will be sent to your
  2006. printer.
  2007.  
  2008. If ZIPKEY appears to be playing back only every second or third
  2009. letter of the city/state/zip, then your program needs the
  2010. keyboard slowdown option, one of the general option settings of
  2011. the configuration.
  2012.  
  2013. In any case, if a configuration change needs to be made, follow
  2014. the instructions in the next sections to replace with a new
  2015. configuration.
  2016.  
  2017. Having checked out the database manager, you need to move on to
  2018. the word processor.  You exit the database and invoke the word
  2019. processor.  You type a sample name and street address.  Instead
  2020. of typing a city name, you press the F12 key, and the ZIPKEY
  2021. window pops up once again.  Now type 23054 to get the entry Fife,
  2022. VA.  When you press the confirming Enter key, the complete
  2023. specification Fife, VA 23054 appears, the cursor is positioned at
  2024. the second line below.  Again, if you didn't get the right
  2025. results, you need to figure out whether you got the playback
  2026. sequence right.
  2027.  
  2028.  
  2029. Correcting Your Configuration
  2030.  
  2031. If your check-out of memory-resident ZIPKEY revealed some changes
  2032. you need to make in the configuration, you may do so by typing
  2033.  
  2034.    ZIPKEY 3
  2035.                                                               4-3
  2036.  
  2037. followed by the ZC file name if it isn't ZIPKEY, to the DOS
  2038. command prompt.  The choice "General options" followed by several
  2039. presses of the Enter key will get you to the "Slow down keyboard"
  2040. option, which you can change to Y if your program was missing
  2041. regularly-spaced keystrokes.  You may wish to temporarily slow
  2042. down the keyboard even if this wasn't the problem, so that you
  2043. can more easily watch the playback to diagnose how you got the
  2044. sequence wrong.
  2045.  
  2046. The option "Hotkey settings" will change the keystroke playback
  2047. sequence for a specific hotkey.  You need to repeat the
  2048. specification sequence, giving the hotkey name, zipcode source,
  2049. and the corrected playback sequence.
  2050.  
  2051. When you have made your changes, you can type Enter to the ZIPKEY
  2052. configuration menu, to execute default option 7, the disk save,
  2053. which puts you back to the ZIPKEY main menu.   Press Enter again
  2054. to execute default option 4, to make the new ZIPKEY configuration
  2055. resident.
  2056.  
  2057.  
  2058. Removing a Previously Resident ZIPKEY
  2059.  
  2060. You may reverse the ZIPKEY 4 command with option 7 of the main
  2061. menu, which can be executed directly from DOS with the ZIPKEY 7
  2062. command.  This option removes ZIPKEY from memory.  If there have
  2063. been no other memory-resident programs placed after ZIPKEY, the
  2064. memory occupied by ZIPKEY is freed back for your other programs
  2065. to use.  In some systems, such as those running Sidekick, a short
  2066. stub of 200-300 bytes must be retained by ZIPKEY after its
  2067. removal.
  2068.  
  2069.  
  2070.  
  2071. Replacing a Previously Resident ZIPKEY
  2072.  
  2073. In most cases, you do not need to remove resident ZIPKEY in order
  2074. to make a new configuration resident.  You can simply repeat the
  2075. command to place ZIPKEY resident -- either option 4 from ZIPKEY's
  2076. main menu, or the DOS command ZIPKEY 4 followed by the ZC file
  2077. name if it isn't ZIPKEY. You may replace after you have modified
  2078. the ZC file already installed, or you may replace to change ZC
  2079. files.  ZIPKEY will detect that it was already resident, and
  2080. simply substitute the new configuration.  You'll be back at the
  2081. DOS command prompt, ready to invoke ZIPKEY within your programs
  2082. again.
  2083.  
  2084. There are only two situations in which you need to execute ZIPKEY
  2085. 7 to change configurations:
  2086.  
  2087. 1. If you change the location of ZIPKEY's database -- EMS memory
  2088.    vs. stay-on-disk vs. main memory -- this one change will be
  2089.    ignored when resident ZIPKEY is replaced, and not take effect
  2090.    until after resident ZIPKEY is removed.
  2091.                                                               4-4
  2092.  
  2093. 2. If the new ZC file is more than 256 bytes bigger than the
  2094.    first ZC file made resident, ZIPKEY will tell you that the new
  2095.    ZC file is too big, and the new configuration will not take
  2096.    effect.  ZC files are usually much smaller than 256 bytes, so
  2097.    unless you have unusually complicated configurations, you
  2098.    won't have this problem.  If you do, you should make sure that
  2099.    your largest ZC file is loaded first when your computer starts
  2100.    up.
  2101.  
  2102.  
  2103. Making ZIPKEY Permanently Available
  2104.  
  2105. The MS-DOS operating system has a mechanism that allows you to
  2106. specify that certain programs should be run every time your
  2107. computer is started.  You create a file called AUTOEXEC.BAT, on
  2108. the same disk drive from which the operating system is loaded.
  2109. If you have a hard disk system, this is usually drive C.
  2110. AUTOEXEC.BAT is a text file, containing lines that you might type
  2111. to the DOS command prompt to run programs.  Every time your
  2112. computer is started, MS-DOS reads the AUTOEXEC.BAT file and
  2113. pretends that the first commands you typed into your computer are
  2114. the commands in that file.
  2115.  
  2116. ZIPKEY's INSTALL program will, with your approval, modify your
  2117. AUTOEXEC.BAT file to include a line that will install ZIPKEY
  2118. whenever your computer is started.  If you didn't elect to do so
  2119. when you first installed ZIPKEY, you may rerun INSTALL at any
  2120. time, to add the line.
  2121.  
  2122.  
  2123. ZIPKEY and Other Memory-Resident Programs
  2124.  
  2125. If you have other memory-resident programs placed at the same
  2126. time as ZIPKEY, you may need to experiment a little to determine
  2127. the best order in which to load the programs.  You would do so by
  2128. moving the ZIPKEY line within the AUTOEXEC.BAT file, by using a
  2129. text editor such as the program EDIT that comes with recent
  2130. versions of DOS.
  2131.  
  2132. Memory-resident programming is extremely tricky, and the
  2133. techniques are non-standardized and poorly documented.  A
  2134. resident program must monitor all the keyboard's signals to the
  2135. computer, while passing those signals to all the other resident
  2136. programs as well.  I believe ZIPKEY does a good job of this,
  2137. passing along every keystroke received except for its own
  2138. hotkeys.  But other memory-resident programs may not do a good
  2139. job: they may prevent certain keystrokes from being seen by
  2140. ZIPKEY, so that a ZIPKEY hotkey won't pop up ZIPKEY's window.
  2141. They may even become extremely confused and freeze up your
  2142. computer when ZIPKEY is invoked, forcing you to shut down and
  2143. restart the computer.
  2144.                                                               4-5
  2145.  
  2146. A specific example: Borland's Sidekick (the program SK) insists
  2147. that it be made resident after other resident programs such as
  2148. ZIPKEY, and with good reason.  You can get away with running one
  2149. program after SK that monitors keystrokes directly, but if you
  2150. run two such programs, SK locks out the first program and usually
  2151. locks out your keyboard as well.  So if you run ZIPKEY after SK,
  2152. and then run a text editor such as BRIEF or XYWrite, your
  2153. computer locks up.  If you make sure ZIPKEY appears before SK in
  2154. your AUTOEXEC.BAT file, there is no such problem.
  2155.  
  2156. A reverse example: Borland's SUPERKEY program must be run before
  2157. ZIPKEY. If you run SUPERKEY after ZIPKEY, the last keystroke you
  2158. typed to ZIPKEY's pop-up window (typically Enter) will be seen by
  2159. your program as well.
  2160.  
  2161. If ZIPKEY works in its demonstration mode (ZIPKEY 2), but not in
  2162. memory-resident mode (ZIPKEY 4), you should try ZIPKEY with all
  2163. other memory-resident programs removed.  You do this by renaming
  2164. your AUTOEXEC.BAT file to something else. For example, if your
  2165. current directory contains AUTOEXEC.BAT, you can issue the
  2166. command
  2167.  
  2168.    REN AUTOEXEC.BAT AUTOEXEC
  2169.  
  2170. to temporarily remove the .BAT extension from the file.  Then
  2171. shut down and restart your computer.  When the computer is
  2172. restarted, make ZIPKEY resident via ZIPKEY 4, and try to invoke
  2173. it with a hotkey.  If ZIPKEY now works, you know that some other
  2174. memory-resident program is interacting poorly with ZIPKEY.  You
  2175. can invoke the other memory-resident programs one at a time,
  2176. trying ZIPKEY after each one, to find the culprit. It's possible
  2177. that they will all load successfully and ZIPKEY will still work
  2178. -- in that case, you simply place the ZIPKEY invocation at the
  2179. start of the AUTOEXEC.BAT file, so it is loaded first.
  2180.  
  2181. When you have sorted things out, don't forget to rename your
  2182. AUTOEXEC file back to AUTOEXEC.BAT.
  2183.  
  2184.  
  2185. Finding ZIPKEY Files on Your Disk
  2186.  
  2187. When you set up ZIPKEY to be permanently available, you need to
  2188. make sure that the ZIPKEY files are placed on your disk where
  2189. they can be found.  This section describes how to do so.
  2190.  
  2191. Normally, when you give the name of a disk file to your computer,
  2192. you must let the computer know where it can find the file.  If
  2193. the file is on a floppy drive, you give the letter of the drive;
  2194. for example, A:ZIPKEY.OVL.  If the file is on a hard disk drive,
  2195. you might also need to name a subdirectory on the drive; for
  2196. example, C:\ZIPKEY\ZIPKEY.OVL.  To reduce this burden, DOS
  2197. maintains a "current drive" and "current directory", which act as
  2198. the defaults if you don't give a drive letter or subdirectory.
  2199. For example, the commands
  2200.  
  2201.     C:
  2202.     CD \ZIPKEY
  2203.                                                               4-6
  2204.  
  2205. make C the current drive and \ZIPKEY the current directory, so
  2206. you can refer to ZIPKEY.OVL instead of C:\ZIPKEY\ZIPKEY.OVL.
  2207.  
  2208. DOS's command processor adds an additional embellishment to the
  2209. current-drive-and-directory concept.  When you issue a command
  2210. such as ZIPKEY to DOS, it will look for the program file
  2211. ZIPKEY.COM first in the current directory.  If it doesn't find
  2212. ZIPKEY.COM there, it can be instructed to look in other default
  2213. directories, until ZIPKEY.COM is found.  You specify the list of
  2214. other default directories by the PATH (or SET PATH=) command,
  2215. placed into your AUTOEXEC.BAT file.  For example, your
  2216. AUTOEXEC.BAT file might contain the line
  2217.  
  2218.     PATH C:\DOS;C:\UTILS
  2219.  
  2220. or the equivalent line
  2221.  
  2222.     SET PATH=C:\DOS;C:\UTILS
  2223.  
  2224. to specify that programs may be found in the directories C:\DOS
  2225. and C:\UTILS as well as the current directory.
  2226.  
  2227. For convenience, ZIPKEY also recognizes the PATH command to find
  2228. its auxiliary files: ZIPKEY.OVL and the ZC file.  For example, if
  2229. your AUTOEXEC.BAT does contain the previously-mentioned PATH
  2230. specification, you may place ZIPKEY.COM, ZIPKEY.OVL, and your ZC
  2231. files into the C:\UTILS subdirectory.  Just make sure that the
  2232. PATH command in your AUTOEXEC.BAT comes before your ZIPKEY
  2233. command.  Then you won't have to worry about what the current
  2234. directory is when ZIPKEY is invoked.
  2235.  
  2236. Alternatively, if you want to keep ZIPKEY by itself on your disk,
  2237. you can provide the full path name on the ZIPKEY invocation line.
  2238. For example, you can place ZIPKEY.COM (evaluation version is
  2239. ZIPKEY.EXE), ZIPKEY.OVL, and *.ZC into a directory called \ZIPKEY
  2240. on the C drive, and make ZIPKEY resident with the command
  2241.  
  2242.    C:\ZIPKEY\ZIPKEY 4
  2243.  
  2244. If your version of MS-DOS is V3.0 or later, ZIPKEY will look in
  2245. the directory of its invoked program to find the ZIPKEY.OVL and
  2246. .ZC files.  On older versions of MS-DOS, you will need to change
  2247. the current drive and directory to ZIPKEY's directory so that
  2248. ZIPKEY can find its auxiliary files.
  2249.  
  2250. The only crucial factor here is the file-finding situation at the
  2251. time ZIPKEY goes resident (the ZIPKEY 4 command).  After that,
  2252. you may change the current drive and/or directory to anything you
  2253. want, and ZIPKEY will always find the files it needs.  The only
  2254. exception: if you run ZIPKEY from a floppy disk and you have
  2255. configured ZIPKEY to take its data from the disk, you cannot
  2256. remove the disk containing ZIPKEY.OVL-- it must still be there so
  2257. ZIPKEY can read it.
  2258.                                                               4-7
  2259.  
  2260. When deciding whether to place ZIPKEY into a PATH directory, you
  2261. may wish to consider the ease with which you would like ZIPKEY to
  2262. be invoked for modifying and reloading configurations.  With
  2263. ZIPKEY in a PATH directory, it can be invoked at any time without
  2264. changing the current directory.  If you modify an existing ZC
  2265. file, ZIPKEY will find and rewrite the file wherever it is.  (New
  2266. ZC files are always written to the current directory.)  This is a
  2267. powerful and convenient feature.  On the other hand, if you have
  2268. untutored users on your computer for which you consider such
  2269. power too dangerous, you may deliberately place ZIPKEY in a
  2270. non-PATH directory, to make careless modifications a little more
  2271. difficult.
  2272.  
  2273. CHAPTER 5   GENERATING AN ORDER FORM
  2274.  
  2275.  
  2276. Automatic Order-Form Generation
  2277.  
  2278. Because ZIPKEY is widely available on an evaluation basis, I felt
  2279. it necessary to make it easy for people to realize that ZIPKEY
  2280. isn't free.  So ZIPKEY has a special option 5 on its main menu to
  2281. generate an order for based on your usage, disk requirements, and
  2282. method of payment.  You may also execute this option directly
  2283. from the DOS command prompt, by issuing the command
  2284.  
  2285.    ZIPKEY 5
  2286.  
  2287. followed by the Enter key.  You'll also be invited to generate an
  2288. order form when making ZIPKEY resident (using the ZIPKEY 4
  2289. command), in two circumstances:
  2290.  
  2291. 1. If your data is 13 or more months old, you'll be warned that
  2292.    it's out of date.  The postal service regularly makes changes
  2293.    to its zipcodes, so that you need fresh data to insure
  2294.    continued accuracy.  I'll be releasing new ZIPKEY.OVL files
  2295.    based on those changes monthly.  You are required to
  2296.    resubscribe and receive a new disk at least once a year; and
  2297.    you can elect to receive disks more often if you wish.
  2298.  
  2299. 2. If you are running the evaluation version of ZIPKEY, and it is
  2300.    now the second month or later following the first creation of
  2301.    your ZC file, you'll be reminded that your evaluation period
  2302.    has expired, and invited to fill out an order form.
  2303.  
  2304. In either case, if you choose Y to the order-form invitation, you
  2305. will initiate the interactive session described in this chapter,
  2306. after which ZIPKEY will go resident as intended, and AUTOEXEC.BAT
  2307. (if that's where ZIPKEY was invoked from) will complete itself.
  2308.  
  2309. If you press N to the invitation, the order-form procedure is
  2310. skipped, and the computer continues normally, making ZIPKEY
  2311. resident and working just fine.  I'm not going to beat you over
  2312. the head with a club; I'm trusting that you'll answer Y
  2313. eventually.
  2314.  
  2315.  
  2316. ZIPKEY's Schedule of Prices
  2317.  
  2318. The pricing scheme for ZIPKEY is a little unusual in that it
  2319. involves the maximum, not the sum, of two fees.  The basic,
  2320. single-keyboard registration is $30, which buys you a printed
  2321. manual, a disk, and a year's license to run ZIPKEY in
  2322. memory-resident mode.  I felt that if you want disks more often
  2323. than once a year, you should pay more.  And if you wanted to
  2324. license more keyboards you should pay more.  But I also felt that
  2325. if you chose either price-increasing option, you should
  2326. automatically be entitled to the other at no extra cost.  I can't
  2327. explain it beyond that -- it's simply what seems fair to me.
  2328. Hopefully I can implement this scheme without too much confusion,
  2329. thanks to ZIPKEY's ability to figure out your subscription price
  2330. for you.
  2331.                                                               5-2
  2332.  
  2333. So your subscription fee is the greater of two qualifying
  2334. amounts: the materials fee and the license fee.
  2335.  
  2336. The materials fee is $25 for every diskette mailed to you, plus
  2337. $5 for every printed manual mailed to you.  You may copy the
  2338. contents of a single disk onto all computer systems for which you
  2339. have licensed ZIPKEY, so you do not need to order multiple copies
  2340. of the same diskette.
  2341.  
  2342. The license fee depends on the number of keyboards accessing
  2343. ZIPKEY.  Keyboards using ZIPKEY only in its demonstration mode
  2344. (ZIPKEY 2) have a one-time, perpetual license fee fee of $10.
  2345. Keyboards using ZIPKEY as a memory-resident program (hotkeys, key
  2346. playback, and/or program interface) have a sliding scale of
  2347. annual fees: $25 for the first keyboard, $20 each for the second
  2348. and third keyboards, $15 each for the next five keyboards, and
  2349. $10 each for all subsequent keyboards.
  2350.  
  2351. Again, the total charge is the maximum, NOT the sum, of the
  2352. materials and license fees.  This means, for example, that if you
  2353. would like to receive disks quarterly (materials fee $100), you
  2354. may license 5 memory-resident keyboards (license fee $95) for no
  2355. extra charge.  Conversely, if you license a lot of keyboards, you
  2356. may be able to receive disks more often for no extra charge.
  2357.  
  2358.  
  2359. Gathering Your Order Information
  2360.  
  2361. Before answering ZIPKEY's order form questions, you should take a
  2362. census of the number of keyboards you wish to license.  (I refer
  2363. to keyboards, not computers, to resolve questions raised by
  2364. networks.)  The non-resident keyboards are those from which
  2365. ZIPKEY is accessible, and from which occasional ZIPKEY 2 commands
  2366. are issued to look up zipcodes in demonstration mode, but which
  2367. the ZIPKEY 4 command is never issued.  The resident keyboards are
  2368. those for which ZIPKEY 4 is issued, and use any or all of the
  2369. following: hotkeys, keystroke playback, or the programmatic
  2370. interface.  If you use the programmatic interface to produce an
  2371. unpacked zipcode database file from ZIPKEY.OVL, then you must
  2372. also license any keyboards that access that database file, even
  2373. if they don't run ZIPKEY directly.
  2374.  
  2375. You should also decide how you will pay for your order, by
  2376. obtaining either a purchase order number or a credit card number
  2377. (Visa, Mastercard, or American Express), or by seeing to it that
  2378. you can obtain a prepaid check.  Keep in mind that you must be
  2379. either an established customer, a Fortune 1000 corporation, an
  2380. accredited school, or a government agency to issue a non-prepaid
  2381. purchase order.  Also, there is a $5 surcharge for non-prepaid
  2382. purchase orders under $100.
  2383.                                                               5-3
  2384.  
  2385. Answering the Order-Form Questionnaire
  2386.  
  2387. Now you're ready to answer the order-form questionnaire.  You'll
  2388. first be asked the number of non-resident, then resident
  2389. keyboards you are licensing. If this is a simple, one-keyboard
  2390. registration, you'll answer 1 for one of them and 0 for the
  2391. other.  If you are renewing a license, you don't need to
  2392. redeclare the non-resident keyboards-- their license is
  2393. permanent.  You do need to redeclare the resident keyboards.
  2394.  
  2395. What about keyboards that change resident vs. non-resident
  2396. status?  You declare the newly resident keyboards, and not the
  2397. newly non-resident ones.
  2398.  
  2399. Next, ZIPKEY asks for the number of printed manuals you'd like.
  2400. You may order any number from zero up to the number of keyboards
  2401. being licensed.
  2402.  
  2403. Next, ZIPKEY asks for the number of years you are paying for.  I
  2404. expect almost everyone to answer 1 to this question; but I myself
  2405. like to pay off my utilities bills for months in advance, so
  2406. maybe somebody out there will be like that.
  2407.  
  2408. ZIPKEY then asks for the number of disks per year to be
  2409. delivered.  This number multiplied by the previous number gives
  2410. the total number of disks you are paying for with this order.
  2411. You'll get one disk immediately, and the rest in evenly-spaced
  2412. periods.  The disk to be shipped exactly one year from now is
  2413. part of next year's order.
  2414.  
  2415. You are then give a choice of disk type.  Choice 1 is the
  2416. older-generation, 360K flexible-sleeve floppy.  Choice 2 is the
  2417. newer (PS/2 style) hard-shell, 720K disk.
  2418.  
  2419. You are then prompted for your name, address, and telephone
  2420. number, followed by the choices for method of payment.  If you
  2421. choose a credit card or purchase order number, you'll be prompted
  2422. for the additional information.
  2423.  
  2424. After the payment information is given, the order form is
  2425. complete.  The only remaining choice is whether to send the form
  2426. directly to the printer, or to a disk file or device.  Make sure
  2427. your printer is turned on before sending it to the printer.
  2428.  
  2429.  
  2430. Possible Amendments to the Total Price
  2431.  
  2432. The order form that ZIPKEY outputs includes the total price of
  2433. the package calculated for you.  There are only two things that
  2434. could add to the total:
  2435.  
  2436. 1. If your shipping address is in Indiana and you are not exempt,
  2437.    you must add sales tax (5% at this writing) to the total.
  2438.  
  2439. 2. If your shipping address is overseas, add $2 per disk and $3
  2440.    per manual to cover extra postage.  There is no extra charge
  2441.    for postage on domestic orders.
  2442.  
  2443. CHAPTER 6   PROGRAMMATIC INTERFACE
  2444.  
  2445.  
  2446. If you are writing a computer program and wish to call ZIPKEY
  2447. from your program, you may do so.  The complete descriptions of
  2448. the function calls, with sample calling code, is given in the
  2449. file ZPROG.DOC on your disk.  The following chart gives the
  2450. overview of calls to ZIPKEY's INT 179 (hex B3), as a quick
  2451. reference when you are writing your code:
  2452.  
  2453. INT 179 with AH=
  2454.  
  2455. 070H   ZK_VERSION sets AX,CL,DX to version information
  2456. 071H   ZK_ABBR_ST converts abbr. BX to state code AL
  2457. 072H   ZK_ST_ABBR converts state code BL to abbr. AX
  2458. 073H   ZK_ST_NAME outputs state BL's name to ES:DI
  2459. 074H   ZK_ZIP_DIGITS outputs zipcode DXCH to ES:DI
  2460. 075H   ZK_ZIP_ST sets AL=state BX=area code for zipcode DXCH
  2461. 076H   ZK_ZIP_CITY outputs city name DXCH to ES:DI
  2462. 077H   ZK_ZIP_KEYS plays exit key #BX for zipcode DXCH
  2463. 078H   ZK_STCITY_ZIP sets BH to #cities DS:SI for state BL
  2464. 079H   ..or ZK_CITY_ZIP for any state starting with BL
  2465. 07AH   ..then ZK_CASE_ZIP sets DXCL-CH to case #BL
  2466. 07BH   ZK_SAVE sets BX,CX,DX to ZIPKEY's context; BL=city width
  2467. 07CH   ..then ZK_RESTORE restores ZIPKEY's context
  2468. 07DH   ZK_POPUP pops up as if hotkey #BL were pressed
  2469. 07EH   ZK_REGION_CITY outputs region DX to ES:DI; sets AL=state
  2470. 07FH   ZK_SWITCH BL=0/1/2/3 en/dis/show/togg hotkeys; 6=newprog
  2471. 080H   ZK_AREA_ST converts area code BX to state AL, 1st region DX
  2472.  
  2473. If Carry is returned, then if AL=
  2474.  
  2475.    0FDH  ZIPKEY is busy.
  2476.    0FEH  Illegal AH function number.
  2477.    0FFH  Search failed without even a suggested value.
  2478.  
  2479. INDEX                                                  7-1
  2480. A-specifier for playback, 3-11
  2481. Aaron, AL, 2-9
  2482. abbreviating a city name, 3-11
  2483. abbreviation, 2-letter, playback, 3-11
  2484. abbreviations in database, 2-8
  2485. abbreviations, state, finding, 2-4
  2486. aborting a search (Esc), 2-1
  2487. about the author, 1-8
  2488. AboveBoard, 3-3
  2489. address, my, 1-8
  2490. aligning to a city name, 3-12
  2491. Alt key in hotkeys, 3-7
  2492. Alt-backquote hotkey example, 3-16
  2493. alternate exit keys, 3-13
  2494. alternate hotkeys, 3-13
  2495. alternate window, 3-5
  2496. amendments to total price, 5-3
  2497. answering the order-form questionnaire, 5-3
  2498. area code playback, 3-11
  2499. area code search, 2-8
  2500. area code sources, 1-6
  2501. ARJ files, 1-8
  2502. arrow keys during configuration, 3-5
  2503. arrow keys during state/city search, 2-7
  2504. arrow keys during zipcode search, 2-3
  2505. ASP Ombudsman, 1-9
  2506. asterisk during fixed key entry, 3-10
  2507. asterisk, literal playback, 3-12
  2508. atlas sources, 1-6
  2509. author, contacting, 1-8
  2510. AUTOEXEC.BAT file, 4-4
  2511. automatic ZIPKEY residence, 4-4
  2512. availability, permanent, 4-4
  2513. B-specifier for playback, 3-12
  2514. back-quote hotkey, 3-7
  2515. backing up your data, 1-4
  2516. backquote hotkey example, 3-16
  2517. backspace and escaped hotkey code, 3-7
  2518. backspace generation on playback, 3-12
  2519. Barney, GA example, 4-2
  2520. big cities, zipcodes for, 2-5
  2521. biography, 1-8
  2522. blank-padding example , 3-17
  2523. blank-padding of city name, 3-11
  2524. Borland Reflex, 3-10
  2525. Borland TSRs, 4-5
  2526. Borland, 3-4
  2527. bugs, reporting, 1-9
  2528. buying a copy of ZIPKEY, 5-1
  2529. C-specifier for playback, 3-11
  2530. calling ZIPKEY from programs, 6-1
  2531. cancelling a window (Esc), 2-1
  2532. capacity of cities display, 2-4
  2533. case sensitivity, 2-4
  2534. charges for ZIPKEY, 5-1
  2535. cities display capacity, 2-4
  2536. cities, guessed, 2-2
  2537.                                                        7-2
  2538. cities, large, zipcodes for, 2-5
  2539. cities, listing, 2-3
  2540. city name in playback, 3-11
  2541. city name, abbreviating, 3-11
  2542. city name, changing from ZIPKEY's, 3-14
  2543. city name, longest in database, 3-11
  2544. city only search, 2-6
  2545. city-only failed find, 2-6
  2546. city/state/zip format, 3-10
  2547. club, beat over the head with, 5-1
  2548. color of window, 3-5
  2549. color vs. monochrome video modes, 3-6
  2550. COM vs. EXE file, 1-7
  2551. compilation copyright, 1-6
  2552. completing a zipcode, 2-5
  2553. CompuServe section, 1-9
  2554. conditions for distribution, 1-5
  2555. Condor compatibility, 3-4
  2556. configuration editing menu, 3-15
  2557. configuration, creating, 3-2
  2558. configuration, large, 4-4
  2559. configurations, replacing resident, 4-3
  2560. configuring ZIPKEY, 3-1
  2561. consistent hotkey name, 3-7
  2562. contacting me, 1-8
  2563. contents, 0-2
  2564. copying ZIPKEY to hard drive, 1-1
  2565. copyright of database, 1-6
  2566. correcting hotkeys, 4-3
  2567. correcting keyboard slowdown, 4-3
  2568. correcting your configuration, 4-2
  2569. Ctrl key in hotkeys, 3-7
  2570. current drive and directory, 4-5
  2571. cursor during next-state search, 2-7
  2572. customizing ZIPKEY, 3-1
  2573. D-specifier for playback, 3-11
  2574. data source, changing, 4-3
  2575. data, possible sources of, 3-3
  2576. database example, playback, 3-12
  2577. database manager example, 3-1
  2578. database, sources and copyright, 1-6
  2579. daylight savings flag playback, 3-11
  2580. Dear example, 3-12
  2581. default options during configuration, 3-2
  2582. demonstration mode, 2-1
  2583. Desqview awareness, 3-3
  2584. determining needs, 3-1
  2585. differences, evaluation vs. registered, 1-7
  2586. directories, sources, 1-6
  2587. disabling other resident programs, 4-5
  2588. disk storage of zipcodes, 3-3
  2589. diskettes, charge for, 5-2
  2590. disks, 3.5" vs. 5.25", 5-3
  2591. disks, number ordered, 5-3
  2592. display of hotkey name, wrong, 3-7
  2593. display of intermediate results, 3-4
  2594. distribution conditions, 1-5
  2595.                                                        7-3
  2596. distribution houses, shareware, 0-1
  2597. distribution naming conventions, 1-7
  2598. down-arrow during city search, 2-7
  2599. down-arrow during zipcode search, 2-3
  2600. East, unabbreviation, 2-8
  2601. editing menu, configuration, 3-15
  2602. electronic mail, 1-9
  2603. EMS memory, 3-3
  2604. EMS mode, problems with, 3-3
  2605. Enter key during configuration choices, 3-2
  2606. Enter key during fixed key entry, 3-10
  2607. Enter key during playback specification, 3-12
  2608. Enter key in demonstration mode, 2-1
  2609. error codes, ZIPKEY program, 6-1
  2610. errors on city name, coping with, 3-14
  2611. escaping from a window, 2-1
  2612. evaluation copy of ZIPKEY, 1-3
  2613. evaluation period, length of, 1-4
  2614. evaluation vs. registered differences, 1-7
  2615. EXE vs. COM file, 1-7
  2616. existing zipcode, looking up, 3-8
  2617. exit keys, alternate, 3-13
  2618. expiration of evaluation, 5-1
  2619. expiration of subscription, 5-1
  2620. exploration keys, 2-4
  2621. F-specifier example , 3-17
  2622. F-specifier following city width, 3-11
  2623. F11 and F12 as hotkeys, 3-6
  2624. fees for using ZIPKEY, 5-1
  2625. Fife, VA example, 4-2
  2626. files, how ZIPKEY finds, 4-5
  2627. finding a city only, 2-6
  2628. finding state abbreviations, 2-4
  2629. finding state/city, 2-4
  2630. finding zipcodes, 2-2
  2631. finding ZIPKEY files on your disk, 4-5
  2632. fixed field example, 3-17
  2633. fixed zipcode, 3-9
  2634. fixed-keystroke source for hotkey, 3-9
  2635. format of city/state/zip playback, 3-10
  2636. Fort, unabbreviation, 2-8
  2637. frequency of disk updates, 5-3
  2638. full name of state, playback, 3-12
  2639. function keys during configuration, 3-5
  2640. function keys, exiting ZIPKEY with, 3-13
  2641. gasoline, unleaded, 1-4
  2642. gathering order information, 5-2
  2643. general option settings, definition, 3-6
  2644. generating an order form, 5-1
  2645. GO ZIPKEY on CompuServe, 1-9
  2646. graphics mode usage, 3-10
  2647. guessed cities, 2-2
  2648. H-specifier for playback, 3-11
  2649. hard drive, copying ZIPKEY to, 1-1
  2650. Home key, 2-1
  2651. home time zone, setting, 2-3
  2652. hotkey configuration, 3-6
  2653.                                                        7-4
  2654. hotkey echoing, wrong display, 3-7
  2655. hotkey name, 3-6
  2656. hotkey, definition, 1-2
  2657. hotkeys, more than one, 3-13
  2658. how to contact me, 1-8
  2659. how to create a ZC file, 3-2
  2660. how to order, 5-1
  2661. incompatible programs with ZIPKEY, 1-3
  2662. indented addresses, 3-12
  2663. inflation and my prices, 1-4
  2664. INSTALL program, 1-1
  2665. INSTALL, setting time zones with, 2-3
  2666. installing ZIPKEY from floppy, 1-1
  2667. Intel, 1-8
  2668. Intel, 3-3
  2669. interfacing your programs to ZIPKEY, 6-1
  2670. interference of other programs, 4-4
  2671. intermediate results for zipcode, 2-2
  2672. intermediate results, city-only, 2-6
  2673. intermediate results, suppressing, 3-4
  2674. Internet address, my, 1-9
  2675. interrupt, ZIPKEY, 6-1
  2676. invoice, generating, 5-1
  2677. Jeffersonville example, 2-3
  2678. key slowdown via W, 3-12
  2679. keyboard interference, 4-4
  2680. keyboard slowdown, 3-4
  2681. keyboards, licensing, 5-2
  2682. keystroke playback sequence, 3-10
  2683. keystrokes, determining, 3-1
  2684. King and Queen Court House, VA, 3-11
  2685. L-specifier for playback, 3-12
  2686. large cities, zipcodes for, 2-5
  2687. large configuration, changing to, 4-4
  2688. last-keystrokes source for hotkey, 3-10
  2689. Left vs. Right keys, 3-7
  2690. legal conditions for distribution, 1-5
  2691. legal terms, 1-3
  2692. length of city name, specifying, 3-11
  2693. length of subscription, 5-3
  2694. letters, fixed playback, 3-12
  2695. liabilities, 1-4
  2696. license length, 1-4
  2697. license, how to obtain, 5-1
  2698. LIM-EMS memory, 3-3
  2699. limitations, 1-3
  2700. listing cities, 2-3
  2701. listing regions, 2-2
  2702. listing states, 2-2
  2703. literalizing during playback, 3-12
  2704. local zipcode option, 3-9
  2705. location of window, 3-5
  2706. longest city name in database, 3-11
  2707. looking up a city only, 2-6
  2708. looking up a zipcode, 2-1
  2709. looking up state abbreviations, 2-4
  2710. looking up state/city, 2-4
  2711.                                                        7-5
  2712. looking up zipcodes, 2-2
  2713. Lotus-Intel-Microsoft memory, 3-3
  2714. Louisville example, 2-3
  2715. lower vs. upper sensitivity, 2-4
  2716. mail, electronic, 1-9
  2717. main city of a region, 2-3
  2718. main memory for zip data, 3-3
  2719. main memory mode, problems with, 3-3
  2720. main menu option 2, 2-1
  2721. main menu option 3, 3-2
  2722. main menu option 4, 4-1
  2723. main menu option 5, 5-1
  2724. main menu option 7, 4-3
  2725. making ZIPKEY permanently available, 4-4
  2726. manual, overview, 1-1
  2727. manuals, charge for, 5-2
  2728. materials fee, 5-2
  2729. maximum city name size, 3-11
  2730. memory model, 3-3
  2731. memory model, changing, 4-3
  2732. memory requirements, 1-3
  2733. memory-resident mode, definition, 1-2
  2734. memory-resident mode, running, 4-1
  2735. memory-resident programs, other, 4-4
  2736. memory-resident use, configuring, 3-2
  2737. Microsoft Word 4.0 problem, 1-3
  2738. Microsoft Works, 1-3
  2739. Microsoft, 3-3
  2740. might-be cities, 2-2
  2741. missing characters, correcting, 3-4
  2742. missing playback keys, 4-2
  2743. modifications, see if you made, 3-16
  2744. modifying configuration files, 3-16
  2745. money, how to send, 5-1
  2746. monochrome vs. color video modes, 3-6
  2747. more hotkey examples, 3-16
  2748. Mount, unabbreviation, 2-8
  2749. moving from state to state, 2-7
  2750. MS-DOS version dependence, 4-6
  2751. multiple configuration files, 3-15
  2752. multiple hotkeys, 3-13
  2753. multiple-zipcode cities, 2-5
  2754. N-specifier following city width, 3-11
  2755. name of hotkey, wrong display, 3-7
  2756. named configuration files, 3-15
  2757. naming conventions for distribution, 1-7
  2758. National Park abbreviation, 2-8
  2759. nine-digit zipcodes, entering, 3-14
  2760. Nome example, 2-7
  2761. North, unabbreviation, 2-8
  2762. Ombudsman, ASP, 1-9
  2763. operating requirements, 1-3
  2764. order form invitation, 1-7
  2765. order form, generating, 5-1
  2766. other memory-resident programs, 4-4
  2767. overseas 011 area code, 2-8
  2768. overseas postage, 5-3
  2769.                                                        7-6
  2770. overview of manual, 1-1
  2771. overview of ZIPKEY, 1-2
  2772. OVL file, how ZIPKEY finds, 4-6
  2773. OVL too new, 1-7
  2774. padding example, 3-17
  2775. padding of a city name, 3-11
  2776. paging keys, cities search, 2-5
  2777. paging keys, zipcode search, 2-3
  2778. PATH command, 4-6
  2779. PATH directory, putting ZIPKEY in, 4-7
  2780. payment for ZIPKEY, 5-1
  2781. permanent memory-residency, 4-4
  2782. PgDn/PgUp in cities search, 2-5
  2783. PgDn/PgUp keys, zipcode search, 2-4
  2784. playback keys, missing, 4-2
  2785. playback of keystrokes, specifying, 3-10
  2786. playback unrelated to zipcodes, 3-16
  2787. pop-up window option for hotkey, 3-8
  2788. postage, adding overseas, 5-3
  2789. price notification policy, 1-4
  2790. price, amendments to, 5-3
  2791. prices, schedule of, 5-1
  2792. printed manuals, charge for, 5-2
  2793. printout of configuration (ZQR), 3-15
  2794. problems with main not disk mode, 3-3
  2795. programmatic interface, 6-1
  2796. prohibitions, specific, 1-5
  2797. Prokey 2.1 incompatibility, 1-3
  2798. ProKey, 3-4
  2799. publishing database, don't, 1-7
  2800. purchase orders, qualifying for, 5-2
  2801. question mark, 2-6
  2802. questionnaire, order-form, 5-3
  2803. quick-reference document, 3-15
  2804. quitting a search (Esc), 2-1
  2805. quotes mark at signon window, 2-8
  2806. R-specifier for playback, 3-12
  2807. ranges of zipcodes, 2-6
  2808. reference guide, definition, 1-1
  2809. references for database, 1-6
  2810. Reflex, Borland, 3-10
  2811. regions, definition of, 2-3
  2812. regions, listing, 2-2
  2813. registered copy of ZIPKEY, 1-3
  2814. registering, how to, 5-1
  2815. release date, 0-1
  2816. removing ZIPKEY from memory, 4-3
  2817. repeat last zipcode, 2-8
  2818. repeat zipcode, example, 3-17
  2819. repeat-zipcode hotkeys, 3-9
  2820. replacing a resident ZIPKEY, 4-3
  2821. requirements for operation, 1-3
  2822. resident programs, disabling other, 4-5
  2823. resident programs, other, 4-4
  2824. resident vs. non-resident, changing, 5-3
  2825. resident, making ZIPKEY permanently, 4-4
  2826. restarting computer, when needed, 4-3
  2827.                                                        7-7
  2828. retreat to start of city name, 3-12
  2829. Right vs. Left keys, 3-7
  2830. Robinson, IL example, 2-5
  2831. running memory-resident ZIPKEY, 4-1
  2832. S-specifier for playback, 3-12
  2833. Saint(e), unabbreviation, 2-8
  2834. sales tax, adding, 5-3
  2835. samples for keystrokes, 3-1
  2836. schedule of prices, 5-1
  2837. screen distractions, 3-4
  2838. screen, zipcode from, 3-8
  2839. search: city to state/zip, 2-6
  2840. search: state/city to zip, 2-4
  2841. search: zip to city, 2-2
  2842. send money, how to, 5-1
  2843. SET PATH command, 4-6
  2844. shareware, nature of, 0-1
  2845. Shift keys in hotkeys, 3-7
  2846. shredded wheat example, 2-6
  2847. Sidekick and removing ZIPKEY, 4-3
  2848. Sidekick must be after ZIPKEY, 4-5
  2849. Sidekick, 3-7
  2850. signon window, 2-1
  2851. signon window, quotes mark, 2-8
  2852. signon window, returning to, 2-1
  2853. six-months prohibition, 1-7
  2854. Sizzleware, 1-5
  2855. slow down keyboard, 3-4
  2856. slowdown via W specifier, 3-12
  2857. SmartKey, 3-4
  2858. sources of database, 1-6
  2859. sources of ZIPKEY's data, 3-3
  2860. South, unabbreviation, 2-8
  2861. speed of zipcode lookup, 3-4
  2862. state abbreviations, finding, 2-4
  2863. state name playback, 3-12
  2864. state-and-city search, 2-4
  2865. states, listing, 2-2
  2866. streets, lack of, 1-3
  2867. subscribe, how to, 5-1
  2868. Superkey must be before ZIPKEY, 4-5
  2869. surcharge for purchase orders, 5-2
  2870. SysReq hotkey, 3-6
  2871. system requirements, 1-3
  2872. T-specifier for playback, 3-11
  2873. table of contents, 0-2
  2874. tax, adding, 5-3
  2875. telephone area code playback, 3-11
  2876. telephone area code search, 2-8
  2877. telephone directories, 1-6
  2878. time zone display, 2-3
  2879. time zone playback, 3-11
  2880. time zone, setting your own, 2-3
  2881. too many cities display, 2-4
  2882. total price, amendments to, 5-3
  2883. trouble: computer freezes up, 4-4
  2884. trouble: many playback keys missed, 4-2
  2885.                                                        7-8
  2886. trouble: playback in wrong fields, 4-2
  2887. trouble: window doesn't pop up, 4-4
  2888. TSRs (memory resident programs), 4-4
  2889. Turbo Pascal, 3-4
  2890. tutorial, definition, 1-1
  2891. two-letter state abbreviation, playback, 3-11
  2892. typeahead in Word 4.0, 1-3
  2893. U. S. Census, 1-6
  2894. unabbreviation, 2-8
  2895. undefined zipcodes within ranges, 2-6
  2896. uninstalling (removing) ZIPKEY, 4-3
  2897. unleaded regular gas, 1-4
  2898. unpacked database, licensing, 5-2
  2899. unpacking the database, 1-7
  2900. up-arrow during city search, 2-7
  2901. up-arrow during zipcode search, 2-3
  2902. updates, frequency of, 5-3
  2903. upper vs. lower sensitivity, 2-4
  2904. Ventura Desktop Publisher, 3-10
  2905. version number with "e", 1-7
  2906. video modes: color vs. monochrome, 3-6
  2907. video screen, zipcode from, 3-8
  2908. W-specifier for playback, 3-12
  2909. West, unabbreviation, 2-8
  2910. Wettstein, Greg, 1-9
  2911. what ZIPKEY doesn't do, 1-3
  2912. width of city name, specifying, 3-11
  2913. window characteristics, 3-5
  2914. window prompts, 2-1
  2915. Worcester, MA example, 2-6
  2916. Word 4.0 typeahead, 1-3
  2917. word processor example, 3-2
  2918. Wordstar compatibility, 3-4
  2919. Works, Microsoft, 1-3
  2920. wrong city, coping with, 3-14
  2921. wrong display of hotkey name, 3-7
  2922. Z and C hotkey, 3-7
  2923. Z-specifier for playback, 3-11
  2924. ZC file, how to create, 3-2
  2925. ZC file, large, 4-4
  2926. ZC files, how ZIPKEY finds, 4-6
  2927. zero zipcode output, 2-9
  2928. zeroes to complete a zipcode, 2-5
  2929. ZIP files, 1-8
  2930. ZIP+4 codes, entering, 3-14
  2931. zip-to-city search, 2-2
  2932. zipcode from screen, 3-8
  2933. zipcode from screen, example, 3-16
  2934. zipcode playback, 3-11
  2935. zipcode source for a hotkey, 3-8
  2936. ZIPKEY 2 command, 2-1
  2937. ZIPKEY 3 command, 3-2
  2938. ZIPKEY 4 command, 4-1
  2939. ZIPKEY 5 command, 5-1
  2940. ZIPKEY 7 command, 4-3
  2941. ZIPKEY and other resident programs, 4-4
  2942. ZIPKEY configuration, 3-1
  2943.                                                        7-9
  2944. ZIPKEY in computer's memory, 3-3
  2945. ZIPKEY interrupt, 6-1
  2946. ZIPKEY.COM vs. ZIPKEY.EXE, 1-7
  2947. ZK_ program calls, 6-1
  2948. ZQR file, 3-15
  2949. ZQR file, name of, 3-15
  2950.