HPLX Pages

Posted 2009.02.28 10.40 in Computers/Internet/Technology

Please Note: This blog entry was consolidated from a group of separate pages about the HPLX Palmtop. I no longer use the HP 200LX, but I still have very fond memories of it.

This is the HP 200LX Palmtop. It’s a PDA (Personal Digital Assistant) – and so much more! Yes, it has a suite of PIM (Personal Information Manager) applications, but it’s also a full-fledged PC-XT running MS-DOS 5.0. It was introduced by HP in 1994, and discontinued some time in the late 1990’s.

Its PIM applications made it a powerful and capable solution for many busy businesspeople, and it’s MS-DOS operating system and XT architecture enabled it to run most of the thousands upon thousands of programs available for DOS.

My 200LX is actually a bit of a mishmash of parts. Once I decided to make it my main PDA, I bought a few more of them off eBay so I’d have a supply of spare parts to keep me going, incase of problems. With a couple almost-complete units, I was able to pick and choose the best components, to end up with what I have now: A double-speed overclocked unit, with 8MB of memory, a good screen, and the keyboard overlay with the markings to remind me how to make accented characters.

In the software, I have figured out how to ‘delete’ the built-in PIM apps from the menu (pictured to the right). The apps are in ROM so they can’t be actually deleted from memory, and they’re all instantly accessable by pressing the dedicated keys on the keypad, so I didn’t see any need cluttering up the menu with them. Instead, I have several custom databases and a couple other programs available to me on the menu.

200lx menu closeup
In the picture above, the program icons visible on my 200LX are as follows:

The standard HP 200LX file manager application.
The standard HP 200LX More Applications menu that is currently visible.
Good old gwbasic, just like back in the 1980s at school.
A NoteTaker database I created to keep track of work stuff; like network settings, router settings, various goals and projects, et cetera.
A custom Database I created, to keep track of passwords, registration codes, account numbers, et cetera. The database itself is encrypted and password protected. I made up GSafe to replicate the functionality of the GeekSafe program that was available for the Newton MP2100.
A simple program I wrote to generate random passwords. You tell it how many characters, what types of characters (upper case, lower case, numbers, symbols) and provide an optional seed string, and it will give you a random password. Handy for setting up accounts for new users. Note: you can download PassGen for your own use, on my Soft Hacks page. PassGen is based on my PassGenR software for the Newton MP2100.
The standard HP 200LX hexidecimal calculator program.
The standard HP 200LX setup application.
A NoteTaker database I created to keep track of various notes and schedules et cetera, for my activities with my local Amateur Radio club, and our ARES group.
A NoteTaker database I created to store miscelleneous personal notes and stuff. Encrypted and password protected.
A custom Database I created to keep track of my wine cellar inventory, and my wine tasting notes. I created my Cellar database to replicate (and build on) the WineCellar software that I had bought for my Newton MP2100.
A NoteTaker database that contains my entire “Liber Umbrarum et Lux” (book of shadows and light). Some folks like to read their Bible on their palmpilot, I read my Liber Umbrarum on my 200LX.
The original Infocom adventure game “Hitchhikers Guide to the Galaxy”.

Update: In February 2009, I’ve finally retired my beloved palmtop.  After several life-saving surgeries, I have run low on replacement parts and maintaining a working 200LX was becoming more and more difficult.  At the same time, other options have presented themselves.  I have migrated the majority of my data to an iPod Touch, and am learning to code for the Touch / iPhone.

My 200LX has now entered the Retirement phase, and is living in relative peace and quiet. It still functions, but is only called-upon now and then.

Deleting ROM Applications from Menu

The “More Applications” menu in a stock 200LX has a bunch of icons that I personally will never use. Particularily annoying to me are all of the green hardware button applications also take up an Icon space in the More Apps menu. This is redundant and wasteful, to me. There’s only a limited number of Icons anyhow, which makes it even worse that it comes full of un-deletable hard-coded ones.
Fortunately it’s not that hard to get rid of them after all, if you have a hex editor.
Close the More Applications program – in fact close the whole System Manager so you are in just DOS. The file you want to work with is c:\_dat\appmgr.dat. Make a backup of it. Then open it in your favorite DOS-based hex editor.
This file is basically a database of fixed-length, which can hold up to 32 entries.  The entries are 115 bytes long, and most (but not all) begin with a hex number, from 00 to 1F (0 to 31). Viewing this file in your hex editor, you’ll see the App Name as it appears in the app manager, and the program name or path depending if it’s a built-in application or one you’ve added.  There is some ‘code’ preceeding and trailing this, which can include stuff like the hotkeys to launch the app, the icon index, etc.

To remove an app that you can’t delete the normal way, just null its entry out.  The safest way to do this is first move the app you want to remove to the end of the list.  Then exit the app manager, edit the appmgr.dat file in your hex editor, and null out its 115 bytes to 0x00 (hex 00). Once you have nulled it out, when you restart the App Manager, you will see the builtin app is gone, and now that ‘slot’ is available for you to reuse for your own apps.

Re-Assigning Green Hardware Keys

The hard-wired green keys do lots of great stuff, but a few of them are things I don’t like or will never use. Particularily frustrating for me is the NoteTaker / Memo key. I never use Memos, but I use NoteTaker all the time. And the Quicken and Lotus keys… I never use those at all, ever, period. Fortunately there’s a built-in program that lets you re-assign, disable, or tinker with these keys!

The program is Key200. You can read all about it at d:\bin\key200.txt. Here’s the quick version though:
Add the following line to your autoexec.bat: D:\bin\key200.com c:\_dat\key200.ini Then create c:\_dat\key200.ini and you can get started. My key200.ini file looks like this:

^More More : More ^More Menu ^Menu A ^A T ^T Enter ^Enter
Memo : Ctrl Memo ^Memo ^Ctrl
123 : Ctrl 123 ^123 ^Ctrl
Quick :
Ctrl Quick :
Ctrl Appt :
Ctrl More :

What all this means is: The first line captures two More presses in a row, and shuts down the System Manager. The second line re-assigns the Memo key to Ctrl Memo which is NoteTaker – so whether I Ctrl or not, I get NoteTaker when I use the Memo key. The third line re-assigns 123 to Ctrl 123 which is DOS – so both Ctrl 123 and just 123 give me DOS. The remaining lines de-activate keys – Quick, Ctrl Quick, Ctrl Appt, and Ctrl More, are all disabled. Those keystrokes now do nothing.

What you can see is we’re using names of the green keys, plus the control key. A ^ infront of the key name means it is released. So Memo ^Memo means press memo then release memo.

All this is explained in d:\bin\key200.txt but what is really cool is this – instead of disabling keys you don’t use, you can re-assign them to do things that are completely different. What you do is create a bunch of Macros, using the Macro program (Ctrl More). Then use key200.ini to reassign an green key, to a macro key! So anything you can do with a Macro, you can launch from a single green-key press.
I’d give you some examples, but my Macro program is disabled 🙂

PassGen Program
I hadn’t thought to include this originally, but it was requested so here it is. PassGen is a little program I wrote, to generate random passwords. It’s not for cracking or hacking. It’s for system or network admins who have to constantly issue random passwords to users.

What it does is ask if you want to use a seed, then asks how many characters the password should be, then if it should include Upper Case, lower case, numeric, and punctuation characters. Then it spits out a random string that fits the parameters it was given.

It’s super-simple. The only thing that needs explanation is the seed part. If you give it a seed string, it will use that seed as the start of the random generator. This is not truly random, but it’s pretty random. If you use the same seed and same parameters, you will always get the same result string.
So if you use your first name as the string, select an 8-character password with lower-case and numeric characters, then every time you use those parameters you will get the same result. This is handy if you need to recover a password, and you remember what params you used.

If you don’t use a seed string, then it will mash something up internally that is a lot more random. You won’t be able to rebuild the password though, which is the point of not using a seed string.

PassGen is a compiled Basic program, it’s about 28k in size, it is offered here for free as in beer, use it, enjoy it, but I retain the copyrights. It should work on any DOS system but is written for the HP 200LX. The zip file includes an icon for the 200LX More Applications program. There are no warranties, expressed or implied, and I am not responsible for any problems you may experience from using this software.


The stock 200LX contains two clock crystals, one for the CPU and one for the Real Time Clock. The one that runs the CPU runs at just over 15MHz, but it’s frequency divided so the CPU actually runs at roughly 7.5MHz. Mind-bogglingly slow by today’s standards, but pretty darn fast for a 1996 PC XT that you can fit in your pocket.

As usual though, more speed is better, and the 200LX is no exception. This is, IMHO, a relatively simple over-clocking procedure. It is simply a crystal swap and then adding a TSR program (Terminate and Stay Resident). The reason that we need the TSR program is that the CPU clock also controls signalling to the LCD screen. At double-speed, the CPU and other processes run just fine, but the signal to the screen can vary between mildly skewed to completely unreadable. The TSR program simply does some magic with the screen controls so that the display looks correct.

The only aspect of this overclock which is slightly troublesome is that the crystal size used in the 200LX is not the usual rectangular can. It’s a tiny cylindrical can that looks exactly like a 32kHz watch crystal. These small size crystals seem to be hard to find in anything other than the 32kHz watch speed. They are out there, you just have to hunt for them.

The other thing that has to be kept in mind is that the stock crystal is just under 16MHz… so a 32MHz replacement is actually a bit faster than 2x. This is important because there are two different TSR programs for fixing the screen – one for exactly doubled crystals, and one for 32MHz crystals. The 32MHz ones are cheaper because they are appearantly a stocked or more-commonly available crystal. I’m using a 32MHz crystal myself and have not had any trouble with it, ever, so I don’t know what the advantage is to getting the more expensive one.

Performing the actual overclock is quite easy, for anyone with advanced soldering skills. Just unsolder and remove the existing crystal, then solder in the new one. Of course, first back up your HP 200LX to a memory card etc, and have your memory card ready to go with the TSR program preloaded, so when you put your 200LX back together and reboot, you can fix the screen skew right away.

200lx menu closeup


Memory Upgrades

The stock 200LX was available initially with 1MB, then 2MB, and finaly as high as 4MB. The 1MB unit was, IMHO, kind of useless. 2MB is really the minimum. The reason is this: The memory in the 200LX is divided between your actual system RAM and your ‘hard drive’… in other words, the 200LX uses its memory as a RAM-Disk. So if you have just the 1MB unit, and you allocate 640kB to DOS, that leaves less than 400kB for use as your C:\ drive — enough for some basic PIM info, such as some phone contacts and appointments, but that’s about it.

Not surprisingly, expanding the 200LX memory was always an important matter. Upgrades are available in sizes from 2MB up to 96MB. You can plug in a 2MB or 4MB daughter-card, for the quickest and simplest upgrade. 8MB and upwards, required soldering and wiring, in order to access additional address lines from the CPU. And the 64MB and 96MB upgrades required further partitioning, into 2 or more RAM-Disks.

Personally, my 200LX is an 8MB unit and I’ve never used more than 3MB. I’d be fine with a 4MB unit. For what I use it for, I can’t see myself ever needing to get into the double-digits of memory. However, I know there are power-users out there that do make full use of their 200LXes and that need all the power and storage space that they can get.


Back-Lighting, Front-Lighting Solutions

The only real technical hindrance to the 200LX is the lack of any kind of supplemental lighting for the screen. The stock screen is fairly good as far as contrast and reflectivity, and will work in somewhat low light. But in the dark, or near-dark, forget it.

Several front-lighting solutions have been devised including ones that used the serial port for powering a LED on a wire. A true Backlighting solution has been devised in recent years, but requires a very high level of skill to install, and is not without risks.

As much as a backlit 200LX would be nice, I have decided it is not worth the cost and the risk. For me, I will stick with my stock screen and simply not use it in the dark.


Blinky Light

Unbelievable – two years now, and still no blinky light. I know how to do it – drive it off the serial port, just like I did on the Newton. So why haven’t I done it?

Well… for one thing I’ve been too busy using my 200LX to tinker around with it. For another, I’ve got lots of other blinky lights to amuse myself with — including some truly dangerous ones. So I don’t really need one on my 200LX.

So, I won’t say that I’ll never do it… but it’s not planned for any time soon. Maybe when/if my current 200LX finaly falls apart and I have to set up a new one, I’ll revisit the blinky light modification.


Intel Hornet 80186-compatible computer-on-a-chip
Up to 640kb (DOS maximum)
RAM Disk(*):
From 384kB to 3.4Mb
CGA & Hercules Compatible
LCD panel, 640×200 pixels, 4 grays
1-note, multi-octave range piezo beeper
80 mini-keys with tactile feedback
Built-in RAM disk (C-drive); Built-in ROM disk (D-drive); Optional PCMCIA card (A-drive)
I/O Ports:
RS232 serial (proprietary 10-pin port); IR
One PCMCIA slot
MS-DOS 5.0 & PIM apps burned in 3MB ROM
2x AA batteries (Alkaline, MiMH or NiCD); CR2032 lithium backup battery; 12vdc external power
Size 6.25 x 3.5 x 1 inches (closed); Weight < 1 pound including batteries & PCMCIA card

(*) RAM and RAM disk share physical memory. The HP200LX was sold in 1MB, 2MB, or 4MB configurations.

When closed, the 200LX is about the size of a wallet. It fits nicely into a purse, briefcase, or even a large portfolio. It is a tad long for a shirt pocket, and you really wouldn’t want to carry it about with you in a pant-pocket — or if you do, don’t sit down!

Running for about 30 hours (non-stop) on a pair of AA batteries, I find I get a month out of it before I get low-battery warnings. If you do get caught-short though, there is a memory back-up battery, a CR-2032 Lithium coin cell, which will keep your memory going for days, or even weeks, without loss. Of course, it’s always a good idea to replace or recharge the batteries as soon as they are low.

HP reccommends that you change the CR2032 backup battery every year, although some people have gone for several years with the same one. It probably makes a difference though, how fast you change / recharge your main cells when they are low.

The HP 200LX will accept Alkeline, NiMH, or NiCD batteries. If using either of the two rechargable kinds, it can even charge the batteries itself if you are using the 6VDC adaptor.

On the left-hand side of the 200LX, there is a normal PCMCIA slot, which can accept normal cards designed for that format. I am pretty sure it is a 16-bit slot, but it is limited to a maximum of 150 mA of current. This means that a lot of cards out there are not going to work, such as network or wireless cards. The other limitation on card use, is software. The 200LX is a DOS device, so for a given card, you need DOS drivers. Again, this rules out many current cards.

There are of course a lot of cards which do work just fine. Flash memory cards work just fine. (Not the Newton-compatible ones, the other / modern kind.) SRAM cards also work fine. Some modem cards work, and a few network cards work. Compact-Flash memory cards work, with the appropriate adaptor. I’ve used both CF and full-sized Flash cards without any trouble. I’ve never used a modem or network card with my 200LX, as those are functions I do not require of a PDA.

The 200LX has all its I/O ports on the right-hand size of the case. Towards the back, is the D/C power jack. This jack has it’s polarity reversed compared to most typical generic adaptors, so it is important to use only the correct HP power adaptor, or ensure that whatever adaptor you use, has its polarity set correctly. Otherwise you risk damaging the 200LX’s motherboard. Units damaged this way will typically function on battery power but the DC port is fried (unless later repaired.)

Next to the DC jack is the Serial Port. Although this port is electrically equivalent to a 9-pin RS-232 D-Sub connector, it is physically different and smaller. It is a 10-pin port, arranged in two rows of five pins. The pins follow a standard 1/10 inch spacing. The 10th pin is the ‘chassis ground’ which takes the role of the shield, in a traditional RS-232 connector.

Nearest the front of the unit is a dark red plastic ‘window’ which hides the I/R port and the memory backup-battery slot. The I/R port is not, unfortunately, IrDA compatible. The 200LX was designed and built prior to the IrDA standard. Instead, the 200LX uses a somewhat proprietary, obsoleted HP IR protocol.

Leave a Comment