• Please review our updated Terms and Rules here

Most advanced BIOS that works on a IBM 5150 to support the cassette interface

rodney

Experienced Member
Joined
Jul 14, 2022
Messages
259
Hello everyone,

I am working on a project to recreate the IBM 5150 in a more expanded modern form, similar to my other projects.
This project will be done by my daughter so I am using this as an educational CAD design example.

The reason why I am especially interested in this 5150 Personal Computer based design is because the 5150 has the cassette port capability which to me is very interesting to have and to do some testing with to see what's possible using tapes.

The cassette function is using pins on the PPI ports which in the 5160 and following are dedicated to other system functions.
So adding a cassette port to an XT is not an easy option either, though perhaps through some logic and BIOS switching additions but it would require at least modifying the PPI related circuits etc, I don't like hacking an existing PCB which is already a finished design.

The idea of having a cassette interface in a new PC compatible computer(except the PPI port differences) I simply find that very cool and retro, even though back in the day probably no one used this function as I have heard some comments about before. However from a retro enthousiast perspective today it's a lot more interesting.

The project will not be a copy of the design, I plan to integrate some other stuff as well such as a cassette monitor speaker circuit for some cool cassette saving noise and of course a normal full memory range of 640kb using SRAM and the 128k UMB RAM, single ROM chip, XT-IDE etc., and I will change the DMA timing logic as well.

After doing the XT projects, I must say it's rather interesting to look at the 5150 circuits since I can spot the differences right away.
They even used two delay ICs instead of the single one in the XT.
Recently I was looking at a Taiwanese Turbo XT clone mainboard and I was looking for the delay IC, which... isn't there. They created the CAS/RAS timing in another way. Probably using a sequence of gates of which the timing is pretty stable and known, or using some D flipflops.

Does anyone here perhaps know what the most modern BIOS would be that is compatible with a 5150 system which would still support to use a cassette in BASIC?

Also I wonder if anyone has ever seen a program that can store DOS files using a cassette tape.
I haven't seen such an example yet but that would be really fun and cool to try out.

Kind regards,

Rodney
 
The final 5150 BIOS from 1982 still supported the cassette port.

Are you planning on having the cassette port be the only interface for the system? There were a few parallel port to cassette adapters which could work with up to 486 systems but all the ones I know of require software on disk to handle the cassette.

http://boginjr.com/it/sw/dev/5150caxx/ is a recent software development to handle saving a file on cassette. There were others but lacking source code and without English documentation might make those less useful.
 
MTM Scientific (Clinton, Michigan USA) would be a good resource.

Reverse engineering the original IBM 5150 (5-slot, ISA) motherboard was a substantial undertaking, as we found some differences between the 'official' circuit diagrams and actual board construction.
Additionally, you can imagine the complexity of trouble-shooting this board and verifying its correct operation!
Not to mention the logistical challenge of sourcing the original vintage electronic parts, which continues to be very challenging.

==
He created an IBM 5150 PC Retro Kit — New Gerbers for 5150 Motherboard production
as well as a DIAGNOSTIC ROM.
That Kit is now Sold Out

IMG_4592.jpeg

IMG_4591.jpeg
 
Last edited:
Hi w9gb,

Thanks for your reply.
I had a look at the web page, it looks cool and it's a great effort from the looks of it.

We will be doing something similar to make a mainboard, however we will be making a more modern version with full range SRAM and ROM in a single chip etc, stripping the parity and DRAM stuff out and we will redesign some other areas which I feel could be improved, or which I would do differently for design preference reasons.

I didn't see a newer BIOS image there on the site and for the diagnostics ROM they linked to the Minuszerodegrees website.

Anyway great to hear from you, interesting link and thanks!

Kind regards,

Rodney
 
IBM's ROM BASIC uses int 15 to interface with the cassette, and doesn't care about the actual hardware. You could support a different type of cassette interface with an option ROM.
 
Hi acgs,

Thanks for your reply!

I saw the youtube video and read the thread which is interesting.
Also the video by VWestlife I had come across before.

I will note your list of game titles, definately I should have a try to find those which should definately appeal to my daughter.

Loading from tape, the volume level is indeed an important issue, which I will be checking in much detail using a scope to optimize this aspect. Also I will do more research in terms of good tape input/output level adjustment and signal cleanup methods, perhaps using a Schmitt trigger gate to clean up the input signal. Though I will also have a try with the original circuits or slight adaptations of that.

I remember many years ago doing the ZX81 design from various schematics combined and experimenting with a cassette tape recorder, which also worked quite well after finding the right component values in the passive input filters.

My version of the 5150 will contain all the typical PC expansions like a floppy drive, harddisk etc. because I want to combine every type of storage in one single system.

Funny to see a TV RF modulator for display on the Advance 86 system.

This link in the thread is interesting because it leads to a GitHub page by Jac Goudsmit who published some BASICODE source files.
Also he mentions some details about the PC cassette interface and mentions about a TSR program which can restore the BIOS INT 15h routine which is supporting the cassette interfacing for systems missing the cassette code in BIOS. I have downloaded his information from GitHub and stored it with my project files for later testing.

Anyway, I will be looking forward to the end results of our project which I will share in this forum later as well.

Thanks for your reply and your previous posts in that thread, it's all interesting subject matter.

Kind regards,

Rodney
 
Hi Plasma,

Thanks for your reply and mention of INT 15h, which I also just read about in the GitHub page I listed above.
Apparently if the BIOS is missing this routine, it can be loaded by a .COM file as a DOS TSR as well.

I will be searching for more similar software which we can try out later on the system.
I see about using an option ROM, I will keep an eye out for this as well.
Making other tape interfaces is definately also an option for later to try on my XT system.

I just checked the source code for the Phatcode Turbo XT BIOS by Ya`akov Miles and Jon Petrosky and saw that it does support the cassette interface and INT 15h, and the 5150 specifically so I will definately have a look at that as well in more detail. This BIOS is actually at the moment the BIOS which has the best functionality on my XT design. I have some hope in the GLaBIOS project by user 640KB however it is hard work for him and the biggest problem is to keep it under 8kb. The biggest problem I found in his BIOS is the support for my AT keyboard in XT mode, copy paste in DOS using SHIFT key, and that Norton Commander 5.0 won't run. If he ever has the time to fix these, I will definately prefer his excellent fast and beautiful looking BIOS I keep checking for his news but I am afraid it's a difficult matter and he is very busy doing a lot of other requested work and improvements.

From the source code of the Phatcode Turbo XT BIOS it can be deduced which ports it supports, which could possibly be changed to other ports as well, if recompiling can succeed which is sometimes an issue if too many options are enabled. Building a custom dedicated cassette port would be relatively easy from the hardware side of things, however the issue would remain to get the software support to work.

Anyway, the 5150 project will be done regardless, I think the PPI pins won't cause big problems to get it working and in worst case I can still use the 5150 BIOS though I am not thinking that it will come to that at this moment.

Kind regards,

Rodney
 
The XT reassigned the cassette 5150 PPI pin to the control motherboard switches but left a pin as a spare. You could go the other way and assign the unused pin to the cassette port and retain full compatibility with the XT.
 
I have some hope in the GLaBIOS project by user 640KB however it is hard work for him and the biggest problem is to keep it under 8kb. The biggest problem I found in his BIOS is the support for my AT keyboard in XT mode, copy paste in DOS using SHIFT key, and that Norton Commander 5.0 won't run. If he ever has the time to fix these, I will definately prefer his excellent fast and beautiful looking BIOS I keep checking for his news but I am afraid it's a difficult matter and he is very busy doing a lot of other requested work and improvements.
Not sure about the keyboard problem or Norton Commander, but I believe 5150 cassette is in the release build now: https://glabios.org/
 
After doing the XT projects, I must say it's rather interesting to look at the 5150 circuits since I can spot the differences right away.
I created a web page, at [here], that details differences. There are quite a few differences listed in the 'Motherboard' section of that page.
 
Hi Plasma,

Thanks for your reply and mention of INT 15h, which I also just read about in the GitHub page I listed above.
Apparently if the BIOS is missing this routine, it can be loaded by a .COM file as a DOS TSR as well.

I will be searching for more similar software which we can try out later on the system.
I see about using an option ROM, I will keep an eye out for this as well.
Making other tape interfaces is definately also an option for later to try on my XT system.

I just checked the source code for the Phatcode Turbo XT BIOS by Ya`akov Miles and Jon Petrosky and saw that it does support the cassette interface and INT 15h, and the 5150 specifically so I will definately have a look at that as well in more detail. This BIOS is actually at the moment the BIOS which has the best functionality on my XT design. I have some hope in the GLaBIOS project by user 640KB however it is hard work for him and the biggest problem is to keep it under 8kb. The biggest problem I found in his BIOS is the support for my AT keyboard in XT mode, copy paste in DOS using SHIFT key, and that Norton Commander 5.0 won't run. If he ever has the time to fix these, I will definately prefer his excellent fast and beautiful looking BIOS I keep checking for his news but I am afraid it's a difficult matter and he is very busy doing a lot of other requested work and improvements.

From the source code of the Phatcode Turbo XT BIOS it can be deduced which ports it supports, which could possibly be changed to other ports as well, if recompiling can succeed which is sometimes an issue if too many options are enabled. Building a custom dedicated cassette port would be relatively easy from the hardware side of things, however the issue would remain to get the software support to work.

Anyway, the 5150 project will be done regardless, I think the PPI pins won't cause big problems to get it working and in worst case I can still use the 5150 BIOS though I am not thinking that it will come to that at this moment.

Kind regards,

Rodney
The Phat Code BIOS supports the 5150 but has no cassette functions due to space limitations. I had cassette emulation in an option ROM at one point, with floppy read/write via int 15h about 80% done. (So you could save to disk in ROM BASIC.) But I lost the code and never got motivated to restart it.

If you just want the original cassette functions as they were in the IBM BIOS, it should be pretty easy to slap together an option ROM from the 5150 listings.
 
Does anyone here perhaps know what the most modern BIOS would be that is compatible with a 5150 system which would still support to use a cassette in BASIC?
I have some hope in the GLaBIOS project by user 640KB however it is hard work for him and the biggest problem is to keep it under 8kb
Hey Rodney,

Yes, GLaBIOS does fully implement the IBM compatible INT 15h cassette support on the 5150 builds you can get from the GH: https://github.com/640-KB/GLaBIOS/releases

640KB
 
Hi modem7,

Thanks for your links, I had not seen those pages yet and just had a look.

We are still at the beginning of the project, starting with first creating the exact schematic in Kicad, except the DRAM circuits.
In the following phase we will be making various changes and additions.
We will check everything against your list as well.

Kind regards,

Rodney
 
Hi Plasma,

Thanks for your elaboration of the Phat Code BIOS, I didn't realise that you were one of the co-creators of this code, great to talk with you here. I am running the Phat Code BIOS in my XT PC mainboard since my first revisions of the design, a big change compared to the original Phoenix BIOS I found in my reference Taiwanese Turbo XT mainboard which was very limited indeed in comparison.

Space is limited in the BIOS so I understand the problem.

With your experience I am sure it's more simple and doable, for me it will be hard to code anything or modify code, because I have zero experience at the moment in this. Definately I will hope to do it via option ROM code which is easy to implement in the combined single ROM BIOS I am planning which has some empty space available for option ROMs.

Your description sounds tempting, I may have a look at this and experiment with some code but I doubt I can easily be able to implement it as you describe. I saw some executables in the BASICODE GitHub, maybe those are doing what is necessary, and I could adapt that source code as well to run in an option ROM instead of using it as a TSR program as is currently done in that GitHub.

Definately an option ROM would be a good solution as it sounds.

Thanks for your reply,

Kind regards,

Rodney
 
Hi 640KB,

Thanks for your reply, we will test your 5150 GLaBIOS on our prototype as well once we have built a prototype.

I am still thinking about which way to go on the design, there are a lot of good tips here and we will consider everything carefully.
I think we will probably keep a functionally similar design of the original PPI port configuration for compatibility reasons with existing BIOS code.

Kind regards,

Rodney
 
Hi Plasma,

You make a good point. I am unfortunate to not own an original XT keyboard(yet) which tend to be rather expensive to obtain so I can only use my AT/XT mode switchable enhanced Cherry keyboard at the moment. Also this layout is the standard for so many years, using it is rather automatic and intuitive which other layouts will not be anyway, so that is another annoyance when in fact using a XT keyboard.

Speaking of annoying, the serial ball mouse is also lacking in accuracy and rather annoying to use it compared to an optical mouse, I recently found the USB to serial mouse conversion project by LimeProgramming (Adam) on GitHub and adapted it to a simplified version using TTL level serial connection to my COM2 UART and found this to be an excellent improvement far beyond what I was expecting. A definate recommendation for any retro PC which doesn't have a PS/2 mouse port!

Kind regards,

Rodney
 
Hi krebizfan and Makefile,

Thanks for your replies. I will be saving this thread with my project notes.

I see about the GLaBIOS supporting the cassette port of the 5150 as 640KB also pointed out. It's nice to know I could support a cassette in this way using GLaBIOS.

I need to think about everything first and could still choose a different option which is to use a different new I/O port altogether for the cassette interface. It depends on how difficult or easy it will be to modify existing BIOS code to control the cassette functions using a different I/O port.

I don't need the parity and RAM capacity setting related pins on the PPI either, so those would be available to use as well if the BIOS were able to be modified for a custom version related to the PPI and tape usage. Additionally, stripping out the parity check and refresh code may also make some more space in the BIOS, I don't know, this route is rather unclear at the moment.
I am not experienced in programming yet and I don't want to end up with a non working prototype. I don't know if I would be able to make the modifications necessary. I could try it out using a simple adapter card on an XT though if I were able to compile some custom solutions somehow.

Possibly I will be keeping the PPI layout in 5150 configuration in my first revision just for initial testing purposes.
Since that's more compatible with BIOS or BIOS/TSR/option ROM combinations which are aready able to support the 5150 cassette now without any modifications to the code.

Making changes carries the risk that I would need to absolutely modify code to get it to work, I don't know if and when I would be able to do that kind of thing. If that were possible for me to do already, I would have included a cassette port on my previous XT designs because I really wanted one. It was a disappointment to discover IBM dropped the cassette support by changing the pin assignments on the 5160 PPI. For them it made sense but for me as a retro enthousiast it's a pity of course.

Anyway, we will first complete the exact schematic so we still have some time to consider what changes to make for the actual prototype.

Kind regards,

Rodney
 
Back
Top