• Please review our updated Terms and Rules here

RTC ISA 8 bits (Very Low Profile)

spark2k06

Experienced Member
Joined
Mar 10, 2017
Messages
65
Location
Barakaldo (Spain)
I share a variant of the SMBacker RTC design:

RTC8088.png


Gerbers availables on OSHPark

This design consists of a very low profile ISA card, which has the port 70h mapped as fixed. Soon Sergey's Micro8088 project will have support for it.
 
Now I offer this product through Tindie for whom you may be interested, kit or fully assembled:

https://www.tindie.com/products/spark2k06/rtc-isa-8-bits-very-low-profile/

I have modified the micro8088 BIOS to make it compatible with it (version 0.9.7), and Sergey has optimized and improved the code. Until he decides to make it public in your GitHub repository, I leave it available in mine, as well as the instructions for its flashing:

https://github.com/spark2k06/micro_8088/tree/master/BIOS

However, this board can be used on any other PC with an ISA port and appropriate management software.
 
New design removing discrete logic and replacing it with an SPLD:

4l5t81hm_o31hZGK-TIgPwvxxjzrGwF-ueV0VP_lUGaFG_X72n1-JrpB_3X2AQm-OL-DuXcocGXkDe7Qw1H5iNBpRxLvhkN3iBiSUotEj6V5hREqXk2n2wSm4LpMiA6EtYhd63cQ5Vs=w1047-h759-no


I still have to check the connections and routing before ordering PCBs but I think that this way everything is much cleaner in a similar space. Both the DS12885 and the ATF16V8B will go in socket, and although I have the SPLD code ready for it to work on the standard RTC 70h port, it could be programmed by anyone to work on another port.

Once I have confirmed the correct working of the PCB, I will make the sources and gerbers public in my GitHub directory, apart from leaving them available for purchase both in kit and full assembled in my Tindie store.
 
Last edited:
I still have to check the connections and routing before ordering PCBs but I think that this way everything is much cleaner in a similar space. Both the DS12885 and the ATF16V8B will go in socket, and although I have the SPLD code ready for it to work on the standard RTC 70h port, it could be programmed by anyone to work on another port.

Hi,

Nice work but I am not sure what need/problem you are addressing? What I mean is if you want to add in just an RTC and you want to have absolute minimum profile you would go with one of the under BIOS RTC boards. If you want to replace the Dallas RTC and provide CMOS then again there are PCBs that replace that chip directly. Only time I could see this being useful is if you have a soldered RTC/Dallas chip and you do not want to unsolder it.Then you could plug it into an ISA slot but you give up an ISA slot.... So what am I missing?
 
Hi,

Nice work but I am not sure what need/problem you are addressing? What I mean is if you want to add in just an RTC and you want to have absolute minimum profile you would go with one of the under BIOS RTC boards. If you want to replace the Dallas RTC and provide CMOS then again there are PCBs that replace that chip directly. Only time I could see this being useful is if you have a soldered RTC/Dallas chip and you do not want to unsolder it.Then you could plug it into an ISA slot but you give up an ISA slot.... So what am I missing?

The machine to which it is intended is an XT, and I think that not everyone has RTC unlike AT. In my case, and more specifically, I built it to use it on my Micro8088, to which I modified its BIOS to make use of it but it could be used in any XT through an application or by modifying its BIOS, in any case, using port 70h:

uYNeCfHdDiTRoWw-V8-lWRPkVfspv9d8jaiXqO_6K26cpPrFkzICr9PQJU6w_TdYtZze3cXjfZHZR8qyGa-_YF_u02zNPb9K03nCjTcrB1hZCLWRz2iwWTVj5uB6TfDuhqmvk_gXtNQ=w1574-h885-no


Edit:

Okay, I see there are other ways to add RTC, in any case, mine would be one more.
 
Last edited:
The machine to which it is intended is an XT, and I think that not everyone has RTC unlike AT.

...

Okay, I see there are other ways to add RTC, in any case, mine would be one more.

Yes and they take far less space then this design. What is needed in the 5150/5160 class machines is a ROM (or CPU) interposer design that allows for a battery holder. Most of the "vintage/original" designs were with a self contained battery so are no good any more. However, there were some even back then that allowed for a battery....

Edit: The FDC interposer is a new one to me. Interesting idea although I'd be worried if it would cause problems with such things as XT-FDC, or Copy II PC Option boards.
 
Now available in Tindie, soon will publish the gerbers, the Kicad project and the SPLD files.

https://www.tindie.com/products/spark2k06/rtc-isa-8-bits-v2-very-low-profile-spld/

New design removing discrete logic and replacing it with an SPLD:

4l5t81hm_o31hZGK-TIgPwvxxjzrGwF-ueV0VP_lUGaFG_X72n1-JrpB_3X2AQm-OL-DuXcocGXkDe7Qw1H5iNBpRxLvhkN3iBiSUotEj6V5hREqXk2n2wSm4LpMiA6EtYhd63cQ5Vs=w1047-h759-no


I still have to check the connections and routing before ordering PCBs but I think that this way everything is much cleaner in a similar space. Both the DS12885 and the ATF16V8B will go in socket, and although I have the SPLD code ready for it to work on the standard RTC 70h port, it could be programmed by anyone to work on another port.

Once I have confirmed the correct working of the PCB, I will make the sources and gerbers public in my GitHub directory, apart from leaving them available for purchase both in kit and full assembled in my Tindie store.
 
Yes and they take far less space then this design. What is needed in the 5150/5160 class machines is a ROM (or CPU) interposer design that allows for a battery holder. Most of the "vintage/original" designs were with a self contained battery so are no good any more. However, there were some even back then that allowed for a battery....

Edit: The FDC interposer is a new one to me. Interesting idea although I'd be worried if it would cause problems with such things as XT-FDC, or Copy II PC Option boards.

here's an example from back then of a CPU interposer design with a battery holder:
https://books.google.com/books?id=iS8EAAAAMBAJ&ppis=_e&lpg=PA38&ots=7_Ba8fNJqA&pg=PA38#v=onepage

and here's an example of the floppy interposer version:
https://books.google.com/books?id=k3Wu-GT3NdIC&ppis=_e&lpg=PA78&ots=Mqff32AjBO&pg=PA78#v=onepage
 
Yes and they take far less space then this design. What is needed in the 5150/5160 class machines is a ROM (or CPU) interposer design that allows for a battery holder. Most of the "vintage/original" designs were with a self contained battery so are no good any more.

If you don't care about the port 70h RTC functionality (which I can't imagine is very important for an XT-class machine without BIOS support) and just want a thing to set the time at boot there is a user here that makes "Smartwatch" work-alikes that have external battery holders. They use the same chip as you'd find in the old under-ROM "zero slot clocks". Whether they'd fit a given machine is going to depend a lot on the layout of the BIOS sockets, of course.

I can speak from experience that the DS1215/1216/1315 chips used on these devices are *very* simple to design onto a board. You could probably *almost* get away with "dead-bug"-ing one along with its crystal and battery directly onto a ROM chip, although the resulting spaghetti would be pretty atrocious. It would make some real sense for someone to offer a version of the XT-IDE card that includes one. (There's nothing magical that requires it to live under a motherboard ROM, it works fine under an option ROM as well. That's how I implemented it.)
 
The machine to which it is intended is an XT, and I think that not everyone has RTC unlike AT. In my case, and more specifically, I built it to use it on my Micro8088, to which I modified its BIOS to make use of it but it could be used in any XT through an application or by modifying its BIOS, in any case, using port 70h:

My generic RTC program supports the AT clock mapping in an XT, so it should work with your card.
http://www.minuszerodegrees.net/rtc/david_m/CLOCK.zip
 
My generic RTC program supports the AT clock mapping in an XT, so it should work with your card.
http://www.minuszerodegrees.net/rtc/david_m/CLOCK.zip


I have tested your solution and for those XT systems that do not have the adapted BIOS it is perfectly valid:

feW7fT4BsahUXQomc40HG7sI70PXV4hrDZVDAUhNCDSMET4-twZwb5JMhqJToEnUQrOf3FUiJCUZsSphBeCYAa2jLFazJTzoJa_Kec3nwewWduFODCS7jDR2OeNmlFvSbqA3ChFYdHQ=w1203-h903-no


However, if Sergey's XT-CF-Lite board is used or similar:

http://www.malinov.com/Home/sergeys-projects/xt-cf-lite

Select a port that does not conflict because your solution confuses it with RTC MM-58167 and does not find the true RTC of port 0x70:

S6WqCvKzDeOrkpJISErpqAVdnx0geptwIFJ7ILULkhiGiq9DFKYYGJQl6uE-B-bWSdpTltKWepQyfbLg7FkARji8hNUvHZdKF11CsEI2A2OP6_3_HLs85yLmEYCMlnZbTBlO1o3b0RA=w1203-h903-no
 
Last edited:
I ordered one of these for my Turbo XT Clone. I was interested in it mainly due to its very low profile and my board does not have enough clearance around ROM chips to use another thing. Unfortunately the board uses an Acer chipset (M1101) that repurposed AT RTC I/O ports (70h & 71h) so I wasn't able to make the card work. Spark2k06 was very kind and had a lot of patience helping me to pinpoint the origin of the problem and sending a redesigned card using a different set of I/O ports (240h & 241h) to solve the problem. I have written an utility in Turbo Pascal (4.0 or higher) to configure the card. Here it is with the source code for those interested:

View attachment rtc.zip

I/O ports are defined as constants in the declaration section of the program. There is very little error checking but I have been using it successfully for some time. Feel free to use/improve it as you like.
 
A new version of the above utility translated into C language:

View attachment 60613

there is no functional changes.

I'm working on a similar card for my 5160. I initially tested it with debug and was planing to write something in assembly and decided to give your program a try and both versions of your program work perfectly. Thanks for sharing this.

Which version of Microsoft C was used to compile your C version?
 
I used MSC 6.0a because it directly supports the tiny memory model. The compiler driver (CL) options are in a comment.
 
Thanks for the info, working on getting it installed, 1.2mb disk images on a system that only supports 360k.

I did find a bug though. It stopped working for me and I couldn't figure out why. It kept indicating that the battery was bad. This occurred after making modifications to attempt xt slot 8 support, so I assumed I somehow caused a problem with the hardware. Checking the hardware and accessing it via debug.exe, I could find no problems.

The D register provides battery status at bit 7, 1 for good, 0 for bad, with all other bits always being read as 0. Checking via debug.exe returned 0x80 when a good battery was installed and 0x00 when a bad one was, as expected. I noticed that the if statement seemed reversed as well, proceeding when this bit was 0 and low battery when 1, which didn't seem right.

It turns out the wrong register is being checked, register E (14/DIAGNOSE in the code), this is the first byte of the DS1288x's non-volatile memory. I (and you) must have happened to have a 0x00 at this location, causing the if statement to be true.

Since this is usable nvram, I wrote a 0x00 to 0xE and it started working again.

I think the following needs to be changed from:

if (!(RTCRead(DIAGNOSE) & 128)) {

to:

if (RTCRead(STATUSD)) {

This should evaluate as true when the battery is good (0x80) and false when it is not (0x00). I think the bitwise and can be left out because the lower bits will always be 0.
 
Back
Top