VOGONS


First post, by superfury

User metadata
Rank l33t++
Rank
l33t++

I've tested the IBM PC XT RTC with TIMER.COM v1.2, which seems to work without problems. I also want to test the RTC that's on the AT motherboard emulation, but MS-DOS 5.0a doesn't seem to use the on-board RTC? It seems like it just uses the time that's generated by IRQ0 ticks? Is there a way to actually test the IBM PC AT RTC chip?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 1 of 4, by vladstamate

User metadata
Rank Oldbie
Rank
Oldbie

The Landmark AT (5170) test bios will test the RTC. It will also test the alarm feature and expect it to fire at the correct time.

YouTube channel: https://www.youtube.com/channel/UC7HbC_nq8t1S9l7qGYL0mTA
Collection: http://www.digiloguemuseum.com/index.html
Emulator: https://sites.google.com/site/capex86/
Raytracer: https://sites.google.com/site/opaqueraytracer/

Reply 2 of 4, by vladstamate

User metadata
Rank Oldbie
Rank
Oldbie

Also CheckIT does it too.

YouTube channel: https://www.youtube.com/channel/UC7HbC_nq8t1S9l7qGYL0mTA
Collection: http://www.digiloguemuseum.com/index.html
Emulator: https://sites.google.com/site/capex86/
Raytracer: https://sites.google.com/site/opaqueraytracer/

Reply 3 of 4, by superfury

User metadata
Rank l33t++
Rank
l33t++

Just managed to fix the CMOS date in the latest commit. Now both MS-DOS and CheckIt! Diagnostics detect it correctly.

The Date Comparison and Real-time clock alarm check out correctly(passed tests). The other two(time-based) tests fail(1.35 apart).

CheckIt! Diagnostics also displays the actual system time of Windows(which is taken at GMT). MS-DOS gives me a time a bit from the start of emulation, while the RTC gives the correct GMT time. Any idea what's going wrong? Why does MS-DOS count from midnight(when the emulator is started)?

Edit: The current source code: https://bitbucket.org/superfury/unipcemu/src/ … MOS.c?at=master

Edit: Btw, the CPU runs at about 75% speed on my AT emulation(using a Intel i7-4790K 4.0GHz CPU). Does this have anything to do with MS-DOS not taking the time set in the RTC(although the date is taken)?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 4 of 4, by superfury

User metadata
Rank l33t++
Rank
l33t++

The Landmark AT test BIOS says that the RTC Interrupt(Using the Periodic Interrupt) isn't working correctly ("1 FAILED" is reported). I see the timer (which runs at double the rate, at 64kHz to be able to create a square wave at 32kHz), which is timing out(generating interrupts) at increasing values from: 0x7F, 0x1FF, 0x7F, 0xFF, 0x7F, 0x3FF, 0x7F, 0xFF, 0x7F, 0x1FF, 0x7F, 0xFF, 0x7F, 0xFFF, 0x7F, 0xFF, 0x7F, 0x1FF, 0x7F, 0xFF, 0x7F, 0x3FF, 0x7F, 0xFF, 0x7F, 0x1FF, 0x7F, 0xFF, 0x7F, 0x7FF, 0x7F, 0xFF, 0x7F, 0x1FF, 0x7F, 0xFF, 0x7F, 0x3FF, 0x7F, 0xFF, 0x7F, 0x1FF, 0x7F, 0xFF, 0x7F, 0x1FFF, 0x7F, 0xFF, 0x7F, 0x1FF, 0x7F, 0xFF, 0x7F, 0x3FF, 0x7F, 0xFF, 0x7F, 0x1FF, 0x7F, 0xFF, 0x7F, 0x7FF, 0x7F, 0xFF, 0x7F, 0x1FF, 0x7F, 0xFF, 0x7F, 0x3FF, 0x7F, 0xFF, 0x7F, 0x1FF, 0x7F, 0xFF ... When testing the Real Time Clock Interrupt test of the BIOS.

Also a little question: what happens on an AT CMOS chip with 64 bytes of RAM installed, when bytes 64-127 are read? Does it simply wrap to 0-63? Or do they map to unexisting(always 0x00/0xFF)?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io