• Please review our updated Terms and Rules here

40th anniversary of the IBM PC 5150

But extra lines of code are needed to tell the system that the ROM the system sees isn't just a ROM but a data carrier as well. And that code needs to be integrated in the code of the XT-IDE. Which won't be that simple (at least for me). Rethinking things, is it worth the trouble? I don't think so. But just thinking about the whole idea was fun. And that matters in life.

I’m sort of lost about why you’d want/need to integrate XTIDE at all. A major point of those devices is that they’re already a self-contained mass storage device that has its own BIOS driver. (At least if you’re talking about the same DiskOnChips as I looked up the datasheet for. Technically it would be possible to erase that software but the docs I’ve seen say it was preloaded on all of them.) I mean, sure, it is an option (mostly for non-x86 applications) to drive them directly with external software, so you *could* replace the internal BIOS with XTIDE configured to hit its mass storage directly, but the benefits of doing so seem pretty elusive. It might save a small amount of RAM, I guess? (My vague understanding is the “BIOS” that’s on them basically loads the driver stub into conventional RAM, and from there it beats on the storage interface, the boot loader isn’t there all the time. But even then I think the driver is tiny, with a memory hit similar to the 1k that XTIDE steals in full operating mode.)

If I had one I’d probably plug it in once because I’m pretty sure I could make it work in the 32 pin socket my XT-CF cards have for SST flash chips instead of 28 pin EPROMs, but… eh? Maybe there’s some edge case it could be useful to make a board for.

EDIT: oh, I get it, maybe you mean you’d want to use one of these in place of the eeprom you’d normally use on an XTIDE card so it could hold the software to drive both itself and the XTIDE port? Because of how the from-the-factory BIOS thing works I suspect doing that would essentially mean having to run XTIDE from conventional RAM. Might only be a few K with the boot menus and stuff stripped out so… sure. But then you will need the proprietary programmer to wipe the bare metal.
 
Last edited:
Nice setup. But please give it a good clean. Looks very gross on that picture.

It looks pretty nice compared to some of the stuff I picked up from Computer Reset that was gathering dust for 30 years. I’m glad they saved the stuff all of those years, but some elbow grease will be needed for sure. :)

60189ADA-A33A-4833-A2DD-A1D8B0A20AD7.jpeg
 
Disqualified, that's an XT. :p

Technically mine is a late model 5150 256k motherboard with the 10/27/82 bios so I could add a 10MB hard drive and memory card boost to 640k.
Years ago, I put a top cover from an XT on it so it has an XT badge. I guess I also upped the PS to support a hard drive. I've had this for about 30 years. Oh well, couldn't sneak it past the judges :cool:
 
Last edited:
o7 Gratz on 40.

Here is my 5150, although it is from '84 (256KB "B" model, but it is still neither an XT or AT - since it is 63W PSU, bays are dual 5.25" 360K, and cassette port).

Hardly an expert at all, but I don't recognize the front panel in that photo. Is it some kind of cover for the floppies?
 
Yes, it is a cover plate that form-fits into the drive bay area (with a sort of styrafoam gasket that helps keep it in place securely). Unfortunately I don't have the matching keyboard cover.

My drives are disabled (no power plug) to avoid any wear and tear on them (since with the NIC, any files I want to add to the system I can do over FTP - certain setup/installs might require A: or B: letters, so usually I can just use "SUBST A: .", but that doesn't always work for certain picky installers - in those cases I can model the install in 86box and FTP over the results). NOTE: I don't need to set the dip switches to "0 drives" - I do still get a "601" error when booting since the drives aren't actually connected, but it continues to boot to C: anyway.

The XT-IDE has its own LED light - which you can tape over if you don't want that light, or extend if you want the "activity feedback" present. [ some people don't like that the dust cover blocks drive activity ]


I think the same cover is mentioned here:
IBM PC cover plate over drives - Vintage Computer Forum (vcfed.org)




It would be interesting to get some accurate measurements and replicate this as a 3D model for 3D printing. I see that as a future thing: manufacturers offering more 3D models of products and having the option to just print your own at home. It's not just to save in shipping, but it saves them having to warehouse inventory of product for servicing (where you have to guess how many replacement orders will be needed, then waste like 1000sqft of storage on stuff that may end up never needed). Like say a little plastic bracket is lost, or a whole TV remove control, different grips for a game pad. Applies for certain automotive parts - imagine printing like a whole fuel pump or air intake valve. You'd still need to order appropriate size o-rings. "metal" printing is getting better every year. Woods, plastic - and of course possibly even tissues/organs. [ im not sure if the metal printing is good enough yet for any kind of pressurized applications - and maybe not fine enough for small things like screws - but it's getting there ]


EDIT:
But the question is: will manufacturers be willing to share their STL or 3D models? It's like trying to (IP) protect music and software files. I respect all the IP laws and the need to protect and fairly compensate innovators and creators - except we play this game of just waiting for copyrights to expire, so an idea takes like 10+ years to really come to market It's a dilema going on since the 1830s - I studied on the patents for making upright pianos (the mechanism for striking keys and the graduate transition to iron frames). Or back then, maybe an office fire would wipe out patent records - there was an Irish guy who had to reapply for a patent after a certain fire in the 1840s (meanwhile folks in France were selling pianos with his mechanism). Uprights probably could have been common as early as 1830s, but didn't until about the 1860s-1880s (which then so many were built, that market kind of crashed). [ I consider the upright piano as the first home-media machine, and music sheets being sort of analogous to "software" - so their history has been interesting to me ]

I also read about Chappell & Co, who sort of pioneered the concept of protecting the work of composers [ Chappell is still part of Warner Brothers, related to the group that was protecting "The Birthday Song" until fairly recently - Chapell alleged sponsored Beethoven {protected his works legally from unlicensed duplication}, or there was a great IP debate when the Player Pianos came along in the 1910s ]. That's all interesting to me, because it's basically the same battle/concept Bill Gates presented in his letter in 1975 (just that was Software instead of a music composition - both forms of creative work; it's a nice idea that information should be free, but composers and programmers do still need to eat).

All this makes me curious about IBM and making the IBM PC so "open" - like they weren't bothered by Compaq reverse engineering their BIOS, opening the path to so many clones. Quite generous, but probably more to that story, as always.
 
Last edited:
voidstar78 said:
Except I can't find a way to WRITE the program to tape (the 5150CAXX.EXE program didn't work for me
What kind of issues did you encounter while using the application? A week ago or so, I made a couple of modifications that allow the app to run on low-RAM systems such as 64K
 
I'll have to try again. My recollection is it seemed I was able to save something (the cassette rolled and took awhile to write some data), but I was never able to read back what it is had written. And I was configured to 256KB RAM at the time. I'll give it another try soon.
 
I still have my 5150 with 64K motherboard serial 0155185. I think that revision won't even boot from a HD controller because of the ROM.
 
What kind of issues did you encounter while using the application? A week ago or so, I made a couple of modifications that allow the app to run on low-RAM systems such as 64K

Sir deanimator , I am very excited to report that 5150CAXX did work for me tonight! I re-downloaded it and used the 07/26/2021 version.

I was able to save my CDIR.EXE (15536 bytes) to tape, and loaded it back. From the tape counter, it took the counter from "20 to 32" (so 12 spins on the counter). I started at 20 to be sure I was past any clear portion at the front of the tape.

I'm using a stock 8088 @ 4.77mhz, and I did run 5150CAXX from the XT-IDE HDD and under DRDOS 3.341.

The only slight issue I'd say is: when loading it back, it just sat the "Loading..." prompt and it wasn't clear that it had found anything. I just let the tape keep rolling. Is there no way to output an indicator that some data had been found? (or even a counter of the number of bytes loaded).



That's pretty exciting. Sorry if what I am about to ask is already explained at your website:

- is the format used to save "compatible" with Cassette BASIC ? (i.e. is the format rather proprietary to each program that implements such capability? or is it basically just a ROM call, so applications using that will get the same "format" for free?)

- if so, then a feature to be added is: allow an option to have any saved content be pre-fixed with a "header program" that allows the subsequent content to be loaded using Cassette BASIC. When activated, this feature would presume the content is a .COM and so the pre-fixed "loader" do just assume the next set of data is to be poked starting at 0x100 (this being similar to how the IBM Diagnostic cassette program is arranged)

(attached is the IBM Diagnostic pre-loader for reference - the DATA statements corresponding to a POKEd assembly sequence to invoke the subsequent loading of the appropriate number of bytes; this DATA sequence just needs to be updated with the user-defined byte sequence) [ one can reformat the DATA sequence and run that in an 8088 disassembler, it's not super complex - one of the constants in there corresponds to the length of the IBM Diagnostic program, which is something to be patched for more general usage ]
 

Attachments

  • IBM_BASIC_DIAGNOSTICS_LOADER.txt
    1.4 KB · Views: 2
Last edited:
I still have my 5150 with 64K motherboard serial 0155185. I think that revision won't even boot from a HD controller because of the ROM.

It a few hoops to go through, but you could get this program running...

- Finding (or building) a cassette interface cable is a pain too (unless you already have one).
- The HxC disk emulator might be a little pricey, but with that you can use the PCDOS 2.10 180KB image available at WinWorld to boot
- Have to be willing to run WinImage (Win10 only?) to create a 2nd 180KB image, or modify the PCDOS 2.10 boot disk to add the 5150CAXX program to it


If you already have a physical boot disk... Well then getting 5150CAXX.EXE onto a physical disk is some extra hoops (like having an extra 5.25" drive laying around, for starters -- without having to remove one from the 5150). Easiest to first ask if anyone can cut you disk (in 180KB format - although maybe that old BIOS would support 360KB). Not sure if any version of INTERLINK would run on 64KB (plus same issue, you'd have to physically hold a disk that has INTERLINK already on it).


The HxC was a little intimidating to me at first (it supports a lot of systems, and the creators don't natively speak English, so it doesn't quite hold your hand on how to setup for the IBM PC -- but I have gotten responses from their support, so they are still around and active - but for example, it can support an A: and B: drive both, even without a funky cable that has a twist in it). But it is a little pricey. Next weekend, hopefully I'll get time to verify that I can use the HxC off the external floppy adapters (but then you have to make your own 37-pin to 34-pin adapter, I still haven't a found a ready-made source of those -- but if it works, I'll be posting some step by step instructions on it -- and that'll be good, since then you can use an HxC without mucking with the original drives of a 5150 A model).
 
I'm happy you got it working :)
The application had three main "revisions"; the first was a DOS .COM application that couldn't load full 64K segments due to memory limits. This was fixed in the "second revision" when I made a DOS .EXE instead, but EXEs are defaultly memory hungry (64K for code, 64K for data and stack segments allocated by default) + it had a timing issue as it didn't disable the IRQs during tape operations (I kind of relied on the BIOS to do this) and various DOS drivers/TSRs were then responsible for a mis-sync. The third revision fixed both problems + added an option to dump or load tape directly into arbitrary memory segments, so you could dump the ROM BIOS, or even video RAM, to cassette.

The format of saving the data to tape just contains the blank tape "leader" followed by raw binary data with CRC every 256 bytes (5150CAXX relies on BIOS INT15h to operate the cassette). There's no dedicated "LOAD" command to search for a particular data header; in order to preserve the interface (this way, the application can read both BASIC and any raw data from the tape, i.e. not just one). To run a BASIC application though, you need to save it to a file and interpret it with DOS BASIC.COM or perhaps GWBASIC - 5150CAXX does not contain a BASIC interpreter that otherwise runs in memory.

There's a 10 second leeway for 5150CAXX to find the tape leader signal. Unfortunately, ROM-BIOS does not provide any callback for me to inform the user about how many bytes were read succesfully (or not) right until the tape operation is finished, as the tape operation doesn't use an IRQ. If this signal is nowhere to be found, the application will end with a "No data on tape, or no valid tape present" error and go back to the DOS command line. So, if you keep seeing the "Loading..." message after 10 seconds, 5150CAXX is parsing the tape just fine.
 
It kinda bugs me how nearly every photo celebrating the PC being introduced in 1981 shows it with the 5153 color monitor, which wasn't introduced until 1983.

Mine has the latest dated ROM, 256K motherboard, two full height floppies, and the monochrome display. Relatively limited hardware, but historically pristine.
 
Who in 1981 would have predicted that we would still be using a direct descendant of the IBM PC 40 years later? Just for fun, I made a DOS 1.0 floppy, and successfully booted it in a system that's modern enough to run Windows 10.
 
Oh, it's multiple ways to get a floppy attached to a modern USB.
How to Read a Floppy Disk on a Modern PC or Mac (howtogeek.com)

The HxC can also emulate both 5.25" or 3.5" images fairly seamlessly (you use the little LED display to flip between images, and don't have to mess with any dip switches if it's a 5.25" image or a 3.5" image).

And "modern" is subjective - anything since 2010, or since 2000? Some old Gateway in 1993 was the last pre-built PC I ever bought - all my desktops have been custom assembled since then (but not the laptops). Although now that Fry's has closed shop everywhere - that won't be a fun anymore. That new UEFI stuff can make it hard to boot the "antique" software anymore.

Can you SYS DOS 1.0 onto a 3.5" 720K floppy? USB 3.5's are pretty easy to find.
 
Back
Top