Supporting NEC PC-8201A / PC-8300
Laptop Computer Owners Since 1999


Welcome to Web 8201!    Here you will find megabytes of file downloads in all categories from games, system utilities, productivity applications, and much more!    Also, there is a library of scanned user manuals, service manuals, as well as technical documents and links to important resources!    You also should be aware of the Model 100 Mailing List maintained over at Bitchin100.com. It is for all "Model T" computer enthusiasts (not only the TRS-80 Model 100) and has many owners of the NEC PC-8201A and PC-8300 to share experiences with! Link is on the front page here.

This little corner of cyberspace is dedicated to supporting the NEC PC-8201A & PC-8300 laptops. These, along with their sister machines (TRS-80 Model 100 & 102, Olivetti M-10, Kyocera KC85) represent the world's first laptop computers. They might have been first on the block, but their usefulness remains even today. They're only 3.4 pounds, and the size of a 3-ring binder. There is no boot-up time -- as soon as you turn it on, you're at the main menu where you can select programs and data files. They can store a good amount of text, so you can write anything from simple notes to letters to book chapters. You can format and print it out directly by attaching a printer, or you can upload it to your desktop through the serial port. You can write programs. You can play games. You can dial into BBS's and other on-line services. You can use it as a calculator. You can create spreadsheets. You can track appointments and meetings. You can do MANY of the tasks other people do with their $2000 Windows laptop computers, and yet it runs continuously for over 18 hours on four AA batteries.
Picture courtesy of Tezza
Current news from the Web 8201 project:

 
WebRom with Teeny++ Posted: 10/5/2026

There is a retro-computing enthusiast in the UK named Sarah Libman who came up with LibRom, a TRS-80 Model 100 replacement system ROM that has Teeny embedded in place of the cassette load/save code. Teeny is a very lightweight Tandy Portable Disk Drive client originally from Ron Wiesen, which takes around 750 bytes of RAM. The LibRom port of Teeny is actually called Teeny+ as it has some conveniences added, like the ability to just type "L FILE.BA" and not have to do a bunch of space padding.

After reviewing the construction of LibRom 1.1, I took on the task of implementing a similar thing for the NEC PC-8201A. In my implementation of LibRom (which I'm calling WebRom), I've added directory navigation using the directory mode extensions supported by Backpack, LaddieAlpha, mComm, and others. In addition to supporting the "L FILE.BA", "S FILE.DO", "K FILE.CO" type of commands that the LibRom flavor of Teeny+ implements, in WebRom you now also can navigate folders with "CD FOLDER", "CD ..", as well as list files with "LS", giving you a usable shell-like interface. To fit all of this, in addition to nuking the cassette code, it required also excising the WAND: support routines. As I never use cassette for storage nor use a bar-code reader, it made sense to remove that stuff in favor an actual command line interface for loading/saving files.

WebRom v1.1 NEC system rom replacement!  Press F5 to jump into Teeny++
WebRom v1.1 NEC system rom replacement! Press F5 to jump into Teeny++, which replaces the bytes-free number at that function key position, which you'll see has been moved up to the top of the screen next to the TELCOM stat display.
Diving into folders!
Ascending back out.
Let's at least load a file, shall we?

After you're done you just type "m" to exit back to the main menu. This makes my NEC main menu incredibly useful, and now I no longer have to have a dedicated disk-rom like TS-DOS or SARDOS loaded. That's a great thing because, these days, I'm loving using my new SuperROM-NEC option rom. I'm still doing a ton of testing with this but I do plan to make WebRom available to the NEC computing public sometime soon! Just giving you a sneak peek for now.



SuperROM for NEC 8201/8300! Posted: 9/29/2026

For a while now I've been porting SuperROM, PCSG's classic 32 KB option ROM for the TRS-80 Model 100, over to the NEC PC-8201A and PC-8300. It's far enough along now that all four applications run without any flaws I've hit yet, so I want to tell the whole story: how it started, why it was harder (and, in one crucial way, easier) than it looked, and, because this is where I need help, where it stands and how you can pitch in.

What SuperROM is

SuperROM is a single 32 KB option ROM that puts four applications behind one menu on the Model 100 (and Tandy 200):

  • Lucid: a spreadsheet
  • Write Rom: a word processor, with printing
  • Thought: an idea / outline processor
  • Lucid Data: a relational database with forms entry and searching

The NEC PC-8201A and PC-8300 are close cousins of the Model 100: same 8085 CPU, and the same 32 KB Kyocera system-ROM architecture underneath. That family resemblance is the whole reason a port is even thinkable, but the differences, as always, are where the work lives.

How it started

It began as just an investigation of all of the math routines that Stephen Adolph was trying to find in the NEC system ROM, during his first attempts at exploring creation of a SuperROM for the NEC. It was clear early on that shims would be needed for all of the math routines, because the two machines store floating-point numbers in different internal formats (and at different precision). SuperROM is a fixed 32 KB image that can't grow, so the scary question was whether there'd even be room for the shims without sacrificing something, like one of the four apps (shudder!).

As I dug into SuperROM itself, I started finding pockets of dead space: small runs of unused 0xFF bytes scattered through the ROM. It gradually became clear there was probably just enough room to hand-write the shims the NEC needed.

And then, OCD took over:

SuperROM main menu running on the NEC PC-8201A
SuperROM's main menu, running on the NEC PC-8201A.

The one mechanism everything rests on

Here's the good news that makes the whole project tractable. An option ROM is banked in over the bottom 32 KB of memory, which means that while it's running it can't actually see the system ROM it needs to call. SuperROM solves this the classic Kyocera way: a tiny pair of stubs that live in RAM (which stays visible in either bank state). SuperROM reaches every system routine through a single disciplined mechanism: a software interrupt (RST 1) with the target address written inline right behind it. That lands in a handler that flips the bank latch to swap the system ROM back in, calls the routine, then swaps the option ROM back in and returns to the caller with all registers and flags intact. From the calling side, a banked-out system call looks completely local.

Because there are essentially no other ways SuperROM calls the system ROM, the port is, on paper, a giant find-and-replace: swap every Model 100 ROM address for its NEC equivalent, swap every RAM variable address, done. That's genuinely true for about 90% of the bytes. It's the other 10% that turned into a months-long detective story.

(Porting the trampoline itself was step zero. The mechanism is identical on the NEC, but the bank latch isn't: the Model 100 writes one I/O port and keeps a shadow copy in RAM, while the NEC writes a different port and can read the latch straight back. I padded the NEC stub with a couple of no-ops so it stays byte-for-byte the same length as the Model 100's, which quietly turns every reference into those stubs into one uniform offset instead of an edit at every site.)

Why "just find-and-replace" is a trap

The catch is that an address only looks like a system call in the places an automated tool actually walks. SuperROM is full of code that hands the CPU a system address by other means: trampolining "by hand" (pushing a target and jumping straight into the bank-out stub, with no RST 1 for a scanner to notice), writing an address one byte at a time as two separate immediate loads, or storing a whole table of addresses that some later computed jump indexes into. None of those look like a system call, so they sail through untranslated, and then the ported ROM calls a Model 100 address on a machine where that address is something else entirely.

That's exactly how the clock-tick interrupt handlers, the Write Rom editor launch, and new-file creation all ended up bouncing into the wrong NEC routine. Each one was a runtime-only bug (a crash or a garbage screen), and each needed its own little detective story (and often its own purpose-built scanner) to find.

My favorite: 7 + 2 came out 7. Lucid dispatches every arithmetic operator by looking its routine up in a hidden table of addresses and jumping there. That table was untranslated, so on the NEC "add" jumped to whatever happened to live at the Model 100's "add" address, which did nothing, and the second operand just evaporated. It presented as a floating-point bug. It was really a jump table hiding in plain sight as data.

The floating-point wall that wasn't

Floating point was the scariest item going in, and many of you will know exactly why. Not only do the two machines store numbers differently, they run different Microsoft BASIC dialects, assembled at different times from different sources, so the entire math library came out arranged differently. Add, subtract, multiply, divide, compare, the integer/float conversions, number-to-text formatting, and the whole transcendental set (square root, log, exp, sin, cos, tan, arctangent, random) all sit at different addresses on the NEC, and several are different implementations with their own calling conventions. There is no 1:1 table you can just apply.

If Lucid did its own math on the raw number bytes, this would have meant re-implementing an entire floating-point engine by hand. It turned out Lucid is smarter than that: it delegates all the actual math to the system ROM and only ever touches raw numbers to move them around or to pull out a plain integer. That one fact collapsed "rewrite floating point" down to a short list of surgical fixes:

  • The routines that copy an 8-byte number around had no NEC equivalent, so I hand-wrote a ~35-byte one into unused ROM space and pointed the copy sites at it.
  • The 16-bit integer that lives inside a floating-point number sits at a different offset on the two machines, so a dozen spots had to reach two bytes further over.
  • Negating a number flips a sign bit that lives in a different byte on each machine (an early wrong guess had −A1 proudly returning +7).
  • There's no power routine that fits SuperROM's calling convention, so X^Y is computed the classic way, EXP(Y × LOG(X)), in another hand-written stub. That one ate a good chunk of the contiguous free space I had.

None of that is a rewrite. But finding the boundary (which byte-level touches are format-safe and which aren't) was most of the work, and it only became clear by auditing every single place Lucid reaches into a number. Proving each math routine then meant running it: 7+2 = 9.00, SQR(7) = 2.65, EXP(1) = 2.72, and on down the list. I've also verified the spreadsheet functions: +SUM(A1:A4), +REF("other-sheet.CA",F6), even the +TBL() lookup.

The Lucid spreadsheet with data filled in, running on the NEC
Lucid running on the NEC, with formulas and lookups working.

When the machines simply disagree

Some differences aren't address swaps at all; they're genuine design disagreements that needed a small bridge of new logic:

  • No internal modem on the NEC, so Write Rom's auto-dial is switched off, but the actual file transfer, which goes over the serial port, keeps working.
  • "A RAM file" is a different device number on the two machines, which quietly derailed creating a new document until a nine-byte stub asked for the right one.
  • The main-menu file list looked for a long time like it lived in CPU registers on the NEC, and that wrong belief defeated several attempts at file auto-launch. It was wrong: the routine that actually launches a selection reads the cursor straight out of memory, exactly mirroring the Model 100. The port had simply mapped one variable to a garbage address. Once I stopped trusting the belief and disassembled the system's own launch routine, the fix was about 40 bytes, and now selecting a Lucid .CA from the main menu opens it directly in Lucid, and a Thought .CT opens in Thought, just like on the Model 100.
  • Data files are not directly interchangeable. A Lucid .CA or Thought .CT file carries machine-specific pointers in its header (the menu-launch pointer, plus a few embedded RAM addresses), so a file made on the Model 100 has to be translated before the NEC will open it correctly. I've written a small converter that rewrites those header pointers between the two formats. One caveat it flags but can't fix: cached floating-point cell values are stored in each machine's native number format; formula and table cells recalc themselves on load and self-correct, but a literally-typed number may need to be re-entered after conversion.
  • Function keys, directories, dates, and the banner all diverge in small, specific ways. One current cosmetic gap: the NEC has no day-of-week table, so the day name in date displays is a blank placeholder for now.

The one that reads like a magic trick: the Write Rom file-list cursor wouldn't move between files, so I wrote a shim to bridge a NEC routine's register-style result back into the memory location SuperROM reads. First try: left-arrow worked, right-arrow did nothing. The system routine decides direction by reading CPU status flags left over from a subtraction, and my shim did a little arithmetic that clobbered those flags on the way in; left-arrow happened to survive, right-arrow didn't. One extra instruction to restore the flags, and both worked. That's the whole project in miniature: 90% mechanical, and the last 10% is understanding a 40-year-old routine well enough to know which CPU flag it's reading and why.

How it's actually debugged

All of this runs against two VirtualT emulators side by side, a Model 100 as the "known-good oracle" and the NEC as the patient, talking to a debugger over a socket so I can freeze both at the same spot, dump the same registers and memory, and watch for the exact instruction where the NEC's behavior peels away from the Model 100's. Fix that divergence, rebuild, byte-diff the new ROM against the old to prove only the bytes I meant to change changed, then re-run a disassembler over the whole thing to make sure no data got mistaken for code. Then back to the emulators to confirm it on real behavior. (Huge thanks to Ken Pettit, whose VirtualT and its debug socket made every bit of this possible.)

Along the way the project grew its own toolkit: a macro-aware tracer that actually understands SuperROM's inline-operand tricks, a "shape matcher" that locates a Model 100 routine's twin in the NEC ROM by its opcode skeleton and then validates the match, an emitter that applies the translation map with verify-before-write, and a family of little audit scripts, each one built to catch one of those invisible bug classes after it bit me.

Where it stands

This is honestly still an alpha, a 32 KB ROM full of clever 1980s assembly tricks running on a machine it was never written for, but it's in a genuinely exciting place:

  • All four apps launch.
  • Lucid: working for everything I've thrown at it: arithmetic, the math functions, and the spreadsheet functions (+SUM, +REF, +TBL). Needs more testing, but solid so far.
  • Lucid Data: working, including forms entry and searching, and an intermittent data-corruption bug (traced to a stale build artifact in my own toolchain, of all things) is now fixed.
  • Thought: looks solid; I can't find any differences in outline formatting or features between the Model 100 version and the NEC port.
  • Write Rom: the shell works and is verified: open, edit, exit, new-file create, and file-list cursor navigation. But the bulk of its word-processing and printing code is a large body of essentially untested territory. This is my biggest concern right now.

Note: SuperROM-NEC changes two function-key assignments so the ROM behaves the way an NEC PC-8201/8201A/8300 owner expects, rather than the way the original Tandy Model 100 SuperROM did. As you know, the NEC keyboard has no dedicated PRINT key — the Model 100 has one, and SuperROM's printing functions were built around a user pressing it. The NEC also has ten function keys (F1–F10, the upper five reached with SHIFT) where the Model 100 has only eight, and NEC owners are used to pressing F10 (SHIFT-F5) to back out of a ROM application. So SuperROM-NEC moves EXIT to F10 and, since there is no PRINT key to fall back on, relocates PRINT to F8. You'll have to remember that SHIFT-F5 gets you out of SuperROM-NEC, as there's no on-screen hint for this; there wasn't space for it.

The ask: I'm looking for testers

If you know SuperROM well on the Model 100 or Tandy 200, I could really use your help shaking this out on the NEC. Right now I'm focused on testing under VirtualT (the build loads as an option ROM in the PC-8201A / PC-8300), so no hardware is required and there's nothing to risk.

Where I most need eyes:

  • Write Rom: hammer the word processor and especially the printing features (print specs, headers/footers, and document "sending"). This is the biggest block of unverified code.
  • The .CT → Thought auto-launch end-to-end with a real Thought file, and the behavior with a full directory.
  • The .CA → Lucid auto-launch end-to-end with a real spreadsheet file, and the behavior with a full directory.
  • Anything in Lucid, Lucid Data, or Thought that behaves differently than you remember it on the Model 100 or T200: that's exactly the kind of surprise I want to hear about.

One thing you don't need to report: the day-of-week name in date displays is a known cosmetic gap. The NEC has no day-of-week table, so for now it shows a blank placeholder rather than "Mon", "Tue", and so on. It's on my list.

Thanks for reading, and thanks to Stephen Adolph, whose math-routine hunt kicked this whole thing off, and Ken Pettit, whose VirtualT is the workbench the entire port was built on. I'm genuinely thrilled with where this is, and I'd love company for the last mile.

If you're interested in testing, use the "Contact me" link below.



Replacement NEC System ROM --- With LINE() command! Posted: 9/20/2026
For those of you familiar with running any type of graphics program or game on the NEC, you probably know about the LINE(x,y)-(x1,y1) command. And if you know about the LINE command, you also must know that LINE.CO is required implement the command in N82-Basic. The TRS-80 Model 100 has the command built in, but the guys at NEC pulled the LINE code from the system ROM in favor of a larger BASIC interpreter.

Now, Kurt McCullum and I did collaborate on embedding LINE() load functionality into the SARDOS 1.73 option ROM, which does allow you to load in LINE() into a temporary RAM space in upper RAM and have it available in BASIC by a POKE and EXEC. But, there are times you might want a different option ROM to be loaded other than SARDOS 1.73, like the Ultimate ROM II for instance, whereby you would lose that capability of easy access to LINE() in BASIC and instead you have to LINE.CO loaded in your precious RAM. With this system ROM replacement, you now have LINE() all the time.

For years I'd been dreaming of a way to embed the LINE code in the system ROM. But the machine code that implements the LINE command in BASIC takes about 200 bytes of space, and the NEC system ROM is jam packed.. I would have to replace 200 bytes of existing code in order to accomplish what I wished. I am certainly not willing to live without TEXT or TELCOM!! So it was not going to be easy. Not only that, but it was doubtful that I could find large, contiguous chunks of reclaimable space even if I *could* decide what features I wanted to obliterate.

Finally, I was able to come up with a scheme that satisfied the requirements. I never use the cassette anymore, and neither do I use the bar-code reader interface. I was able to split the LINE code in half, and divide it between the areas that support those two interfaces.

A bit of additional modification to the cold-start routine, to point the H.GLINE hook in upper memory to my ROM-based LINE machine code, and voila! LINE is now always available!

If you really have no need to use the bar-code reader, and you would never use a cassette recorder for storage, then you too can gain the benefit of having the LINE command built into BASIC. Say goodbye to loading LINE.CO into your precious RAM again! Contact me if you would like either the ROM image or a ready-to-use burned EPROM. Take care!


Ultrascreen for the NEC and Tandy 200! Posted: 9/5/2026
Back in 2007, after getting in touch with Ultrasoft and the original Ultrascreen author, Daniel Born, I was able to make Ultrascreen100 available to everyone who has a TRS-80 Model 100. What used to be a commercial product became freely available up on Club 100 in my Personal Library, thanks to both Daniel Born & Richard Eckerlin. Ultrascreen100 is also available here in the File Downloads area. Many years back, I floated the idea on Model 100 Mailing list: could Ultrascreen100, that wonderful 1987 Ultrasoft TSR that squeezes a 60-column × 10-line display out of the Model 100's LCD, ever be brought to the NEC machines? I've picked this project up and put it back down more times than I can count. Today I can finally say it's real: UltrascreenNEC is working on hardware.

In addition, I'm announcing the availability of Ultrascreen200! Where Ultrascreen100 and UltrascreenNEC give you 60 columns by 10 lines, Ultrascreen200 gives you 60 columns by 21. BASIC, TEXT, TELCOM, ADDRSS and SCHEDL all run in that roomy 60-column display; SCREEN 0 and SCREEN 1 flip between 40 and 60 columns on the fly; and it installs and uninstalls cleanly with a CLEAR 0,MAXRAM which gives you a "REMOVE Ultrascreen? (Y/N)" confirmation. (For the NEC version, it is CLEAR 0,62336)

Ultrascreeen is available in our file download area.

Planet Protector Prize has been won! Posted: 10/29/2023
It took a couple of decades, but someone finally played and beat the NEC version of the Planet Protector game, and won a free XPROM chip!

And the winner is: Renee Rickert

Congratulations, Renee!


Side project for a dead Model 100 Posted: 4/22/2023
I had a TRS-80 Model 100 with a dead motherboard, and decided to morph it into a Linux machine with a wide display. I felt it was a great way to give the machine a chance at a new life. The keyboard is actually from a Tandy 102 (also dead), which has an even better feel to it.

    

You can read more about the project here.


Come be a part of the community on the Model 100 Mailing List! Posted: 6/26/2020
The Model 100 Mailing List is meant for all users of the original Model T notebook computers, from the TRS-80 Model 100, Tandy 102 & 200, Olivetti M-10, Kyocera KC-85, and NEC PC-8201A & PC-8300.

There are hundreds of members on the list, and if you are not yet a part of the community, you really should consider it. This is the place where announcements of new hardware and software are made when they become available. It's where you'll hear about things like the new REX# & REXCPM products for your computer. Come be a part of it!


NEC PC-8300 128K System EPROM! Posted: 6/14/2020
Did you end up with an NEC PC-8300 off of eBay that no longer has it''s original system ROM, and instead has some sort of dedicated "industrial" application ROM installed?

Well now you can restore the functionality of your NEC PC-8300 to its original state with a solution illustrated right here in the tech area.

You will end up with a modified 32-pin chip installed into your 28-pin socket that looks like this:


Memory Map Database! Posted: 7/19/2017
I've finally created a memory map database and imported my original NEC <-> M100 memory map cross reference data. This will be a community-managed database! If you a registered member on Web 8201, you can add new entries and edit existing ones as long as you are logged in.

Eventually I will have export capabilities that let you create .SYM files for disassemblers, and other include files as needed, to permit robust ROM and .CO software examination.

Supported platforms: TRS-80 Model 100/102, NEC PC-8201A/8300, Olivetti M-10, Tandy 200, and Kyocera K-85. Feel free to check it out, and contribute if you can. We need more cross reference data to these other platforms and your help will be essential in this effort!


Who says your Model T can only have one Option ROM at a time? Posted: 3/14/2016
REX - The ultimate option ROM/RAM add-on! Tired of only having one option ROM installed in your Model 100 or NEC? Introducing REX, the add-on that plugs right into your existing ROM socket and delivers 768 Kbytes of flexible flash storage, all selectable by some very robust software written by Steve Adolph. You need one of these babies. Visit the online store run by Gregory McGill, ArcadeShopper.com, to place an order!

Greg also has 8K RAM modules, power supplies, and various other items for sale for your Model T, so be sure to check it out.

  • Fits into your standard Option ROM socket
  • Stores up to 768 KBytes of ROM images, selectable via software
  • Available for the Model 100, Model 102, and Model 200. (NEC version called the "REX3" also available for special order -- contact Stephen Adolph directly.)


Ultrascreen100, an amazing software utility Posted: 11/23/2007
Ultrascreen100 was the most significant display enhancement ever to come along for the Model 100. It switches your display into a smaller font and gives you 60 columns by 10 lines, and as you can see from the screenshot in the picture gallery, it is still perfectly legible even with the reduced font size. That's 600 characters you get on the screen at one time, versus the standard 320. Even more, the Ultrascreen100 software was *very* smoothly integrated with the machine. The Main menu is always in the standard 40x8 mode, but when you jump into BASIC, TEXT, or TELCOM, you automatically switch into the 60x10 mode. Compared to Travelling Software's View80, which only gives you a 60x8 screen and requires activation through an extra step in their ROM software, Ultrascreen100 was clearly the better choice. If you have a Model 100 and you're interested in this utility, it is now freely available for download.

Now wait a minute, why am I on the subject of a Model 100 program here at Web 8201? *HUGE smirk* Well, you see, it's like this: A fortunate series of events has recently gotten me in touch with Daniel Born, the author of this software. If you know me, and my history in the Model T computing community, then I probably don't even need to mention what is about to come into reality. All I can say is, stay tuned! There's more news to be told in the near future.


Tips on creating software that runs across multiple Model-T platforms Posted: 1/2/2005
The "Model-T" name is used to refer to the entire family of the Kyocera notebooks, which include the TRS-80 Model 100 and the NEC PC-8201A.

The two BASIC dialects differ slightly, along with their ROM & upper-RAM addresses. However, it certainly is possible to write a program that runs on both platforms, completely unchanged. If you''re interested in this concept, check out this page: Designing Cross-Compatible programs for the Model 100 & NECs.


Announcing the NEC PC-8401A / PC-8500 File Area! Posted: 11/21/2004
Web8201 now has a file download area for the CP/M based vintage notebooks from NEC, known as the PC-8401A (Starlet) and PC-8500. If you have any technical information or a collection of files that you would like to submit, please contact me at my email address listed at the bottom of this page. Your contributions will be much appreciated!

Replacement system ROMs Posted: 3/29/2003
If you've obtained the NEC PC-8201A or PC-8300, but it has a custom system ROM because it was used in some dedicated application, there really isn't much you can do with the machine. What you really need is a replacement system ROM that has the original NEC operating system.

I can help you with this! Just contact me at the email address shown at the bottom of this page and we can work out the details.


Custom Option ROMs Posted: 7/7/2001
WEB 8201 now provides the service of creating custom option ROMs for the NEC PC-8201A and PC-8300 computers. Click on "Custom Option ROMs!" on the menu for more details.



Contact me


Tech Docs | Files | Kyocera FAQ | Support Resources | Links |




The Original Laptop Computer . . . 1983

Copyright © 1999-2026 by Gary J. Weber. All Rights Reserved.
All other copyrights and trademarks property of their respective owners.