• Please review our updated Terms and Rules here

IBM PC or XT: Just how much performance can you squeeze out?

lyonadmiral

Veteran Member
Joined
Jun 3, 2009
Messages
2,430
Location
Peru, New York
I'm just curious to see what is the most performance intensive thing that you have done either on your 5150 or 5160, without the use of accelerator cards or upgrade boards?
 
I guess I'm wondering what you're getting at. Why would you want to do something unusual, and what would that be?

People did spread sheets, word processing, accounting, and that sort of thing. Those with more serious computing needs would likely use more serious computers, or rent services - just like nowadays. :)
 
A couple of friends of mine did orbital mechanics simulation on a 5160 with an NDP installed. It was very slow, but it was faster than running it on an HP41C. When they got a 5170, there was a huge improvement. For other big jobs, think about big spreadsheets--that really sold the 5170.
 
One thing that comes to mind immediately for me is "8088 Corruption' -- requires a soundblaster card, but otherwise leverages a stock 5150 to do something truly amazing for the hardware -- full screen video playback. This work by Trixter (a member here) was partly what prompted me to go back and look at the old PC hardware for new releases in the first place!

http://www.oldskool.org/pc/8088_Corruption

My own Pac Man port actually rubs up against the hardware limits, and has a lot of snow on a real CGA (there just isn't enough CPU time left over to add anti-snow code to it) -- but remains playable even on the much slower PC Jr. (which lacks the snow problem).

http://www.deathshadow.com/pakuPaku

I love using the undocumented semi-graphics mode, because it is way 'out of spec' for the hardware.
 
Defo 8088 corruption. Jim has pushed it to 60 fps sustained, and by transferring direct from disk to graphics card RAM with DMA, and playing the audio from the graphics RAM (!) 15 fps at 160x100 should also be just about possible, albeit with considerable snow on the stock CGA adapter.
 
I've spent a lot of time making TCP/IP run as fast as it can on a nearly stock machine. The only thing extra is the Ethernet card, which adds extra capability but does not change the CPU power of the machine.

Using a raw TCP/IP socket with no writing to a hard drive I can make an XT send and receive data at about 90KB/sec. That is without cheating - all of the checksums and protocol work are being done. If you think about that it runs fast enough to fill memory in 7 seconds.

Running an FTP server on an XT is a workout for the machine. Managing multiple connections at the same time without dropping packets is difficult. It's not as sexy as a graphics demo though. ;-0
 
I'm just curious to see what is the most performance intensive thing that you have done either on your 5150 or 5160, without the use of accelerator cards or upgrade boards?

The most performance-intensive upgrades I've done on my 5160 have been through software -- writing better code, and understanding how DOS and the hardware works and using that knowledge to my advantage.

5150/5160 are limited greatly by I/O. Replacing a slow hard disk with a better/faster one (such as an XT-IDE or variant, or a Silicon Valley ADP50) is a great way to feel like you have a new computer. Seeks hurt, so if you can use a compactflash card as an IDE drive, do it (CF->IDE adapters are $5 on ebay).

I've sped up my 5160 by lowering the DRAM refresh frequency to gain a 1-2% speed boost, but that's mostly a party trick and not very useful. On my AT&T 6300, which is 8086-based, I remember it being more useful (like 5-6%) so I used to keep that trick in my autoexec.bat in the 1980s on that machine.

Here are some random tips to get the most speed out of a 5150 or 5160:


  1. Don't use disk caches unless you have a truly horrible slow hard drive. Even if the cache is based in hardware EMS, the memory speed of a 5150/5160 is so slow that the double-buffering of a cache is slower than just reading directly from disk.
  2. Increase BUFFERS in config.sys to the maximum (see tip #1). This is because DOS performs read caching using BUFFERS and will pull data (including directory and FAT reads) from those buffers if the data is already in there.
  3. Load NNANSI and turn on "fast" mode. This will speed up BIOS screen printing and ANSI scrolling by orders of magnitude. You can type "DIR" on a large directory and it will be done in 1 second. Default is compiled for 286+VGA but source is included, you can change two lines in the source and re-assemble it to produce an 8088+CGA version. (If you are scared of such activities, look for n_cga.com in ftp://ftp.oldskool.org/pub/misc/xtfiles.rar )
  4. Hardware EMS boards are useful if your application supports them (Lotus 1-2-3, Turbo Pascal, etc.). They are useful for print spooling too. Do not be tempted to use hardware EMS as a disk cache (see tip #1).

Sometimes the best speedups are simply working more efficiently:

  • Loading programs onto your XT via floppies sucks, but if you have a network card installed and the mTCP suite, you can do a mass FTP transfer to fill up the hard drive, unattended, and faster than floppies are anyway.
  • Switching editors can help too -- it sucks to have the keyboard buffer fill up and beep at you because the editor you're using is stupid slow on 8088.
  • Using NDOS or 4DOS as a command-line processor lets you work more efficiently using things like tab filename completion (ie. typing "wo<TAB>" will expand into "wordstar"), the ability to sequence on the same command-line (ie. you can type "d:\compiled\mytest1 ^ d:\compiled\mytest2 ^ fc /b output1 output2" and they'll run one after the other), command-line history and editing, and the ability to PUSH/POP directories (ie. "pushd c:\games\adventure\kq3" will take you there, and "popd" will take you back to where you were).

The only "magic bullet" that isn't a complete CPU accelerator board is an NEC V20 upgrade, which is an average speedup of 20% according to benchmarks. But you sacrifice some compatibility doing that.
 
One thing that comes to mind immediately for me is "8088 Corruption' -- requires a soundblaster card, but otherwise leverages a stock 5150 to do something truly amazing for the hardware -- full screen video playback.

Now at 60fps with no crashes -- snag the new version :)

My own Pac Man port actually rubs up against the hardware limits, and has a lot of snow on a real CGA (there just isn't enough CPU time left over to add anti-snow code to it) -- but remains playable even on the much slower PC Jr. (which lacks the snow problem).

http://www.deathshadow.com/pakuPaku

I'm going to return the love by saying that pakupaku is notable not only for the colorful arcade gameplay but also the wide range of sound support, something not normally seen in early arcade ports. Speaker, Tandy/PCjr, Adlib, CMS/Gameblaster, and Roland/MIDI are supported which is impressive, and all versions are faithful to the original.

I love using the undocumented semi-graphics mode, because it is way 'out of spec' for the hardware.

Have you given any thought to other CGA graphics tweaking? For example, it is easy to create a 256x200 mode which would allow you to use bytes for X coords and powers-of-two for dealing with widths. It is also possible to create a mode with two hardware pages, such as 256x128 ("widescreen") or 200x150 (same aspect ratio as 320x200 but a smaller window in the center of the screen). Having two video pages solves a lot of problems, but makes things harder for emulators and VGA cards.
 
I guess I'm wondering what you're getting at. Why would you want to do something unusual, and what would that be?

People did spread sheets, word processing, accounting, and that sort of thing. Those with more serious computing needs would likely use more serious computers, or rent services - just like nowadays. :)

A while ago, I saw the video where a gent was playing a full motion video (albeit in CGA) with sound on his 5150/60 and I just thought that was kind of neat.

Even though I cannot program (I did C++ years ago) I have been fascinated by machine language and I would be curious to see or know, what would be the most recent version of Windows that if recompiled in machine language could be made to run on a 5150/60. It's nothing anyone here could or would undertake so I am open to mere speculation.
 
I'm the gent who did the video on my 5150. You're welcome :)

Getting something to run optimally on an old machine isn't a matter of "recompiling" in assembly language, but rather writing code from scratch by someone who has both a detailed understanding of 1. the target hardware as well as 2. the problem that needs solving. With that information, I have some good news and some bad news for you:


  • The bad news: No version of windows will "recompile into machine code" and work on an 8088.
  • The good news: A company in the 1990s called Geoworks wrote a graphical environment, in assembly language, specifically optimized for what an 8088 PC platform could deliver. It required only 512K of RAM (but could use more), CGA (but could use more), and a hard disk. It used a resolution-independent display/printing subsystem comparable to Display Postscript. The first version of that environment was called Geoworks Ensemble, and you can view screenshots of it here: http://toastytech.com/guis/geos12.html

If you'd like to download floppy images of Geoworks Ensemble to try out on your own vintage hardware (386 or lower; 486s and higher have issues running the first versions), poke around ftp.oldskool.org in /pub/misc and I'm sure you'll find something.
 
On the other hand, Jim, it might be fun to emulate an 80286 on an 8088, paging from the hard disk. You could start the boot process in the morning and be greeted by the Windows display by the time you got home from work... :)

Never underestimate the power of a Turing-complete architecture.
 
On the other hand, Jim, it might be fun to emulate an 80286 on an 8088, paging from the hard disk. You could start the boot process in the morning and be greeted by the Windows display by the time you got home from work... :)

QEMU for the XT - like it :)
 
On the other hand, Jim, it might be fun to emulate an 80286 on an 8088, paging from the hard disk. You could start the boot process in the morning and be greeted by the Windows display by the time you got home from work... :)

Never underestimate the power of a Turing-complete architecture.

I've thought about doing this myself, running a modern 64-bit Windows on my XT. The XT would simulate the CPU and L1/L2 cache and it would pass cache lines via serial link to and from a modern PC which acts as the main RAM and hard drive.

It would probably take decades to boot though, so I might have to run part of the simulation on the modern machine and when switch it to running on the XT after it's booted.
 
Nope, for LZ4 data. That code is finished, but I can speed up the format in other ways so that's what I'm working on today. I'll post everything to a web page when finished.
 
  • The bad news: No version of windows will "recompile into machine code" and work on an 8088.
  • The good news: (...) Geoworks Ensemble,


(1) is not quite correct. Windows 1.0 actually does run on 8088-based PCs. Granted, that's not a modern version of Windows, but it's a version of Windows. And arguably, provided you could get (i.e. buy) the Windows 1.0 source code off Microsoft, you could "recompile it into machine code".

(2) I tried GeoWorks Ensemble back in the days. What made me reject it was its text editor/word processing program's lack of a search and replace function. Did they ever fix that? Is there any version of GeoWorks Ensemble that doesn't lack that crucial (for me, must-have) feature? And would that version still run on a 5150?
 
Back
Top