Difference between revisions of "URTC-8 Universal RTC for Z80 computers"
(→Technical info) |
(→About uRTC-8) |
||
Line 6: | Line 6: | ||
== About uRTC-8 == | == About uRTC-8 == | ||
− | uRTC-8 is a universal RTC that can be connected via a Z80 | + | uRTC-8 is a universal RTC that can be connected via a [[UIDE_Universal_IDE_adapter_cards_for_Z-80_computers#Z80_Shims|Z80 Shim]] to any Z80 computer that has a socketed CPU. It is also compatible with the [[UIDE_Universal_IDE_adapter_cards_for_Z-80_computers#Machine-specific_expansion_port_adapters|uIDE-8 PcW expansion port adapters]]. Both of these connectivity options present a 40 way "Z80 Bus" and you can connect uRTC-8 to this bus, in parallel with other devices on the bus. |
+ | |||
+ | uRTC-8 uses an 8 bit comparator and a set of jumpers to enable I/O base address selection, just like uIDE-8. The RTC used is an Epson RTC72421 which has 16 registers, directly accessible via IN and OUT instructions. As a result, the base I/O address is a four bit number between 0000 and 1111 (0-15), putting the device at any of the I/O addresses 00h, 10h, 20h, 30h, 40h, 50h, 60h, 70h, 80h, 90h, A0h, B0h, C0h, D0h, E0h or F0h. From any of these base addresses to [base address + 0Fh] are the 16 registers of the Epson RTC. | ||
uRTC-8 is powered by the host computer, but also has a battery backed supply to maintain the time and date when the host is powered down. The battery is a common CR2032 3v button cell. | uRTC-8 is powered by the host computer, but also has a battery backed supply to maintain the time and date when the host is powered down. The battery is a common CR2032 3v button cell. |
Revision as of 08:57, 24 April 2019
Contents
What's an "RTC"?
In case you didn't know.. an "RTC" is a "Real Time Clock" - in this instance, a clock that maintains the time even when the host computer it is connected to is switched off. It is separate to the clock inside the computer; so, for example, the Amstrad CP/M Plus DATE.COM command prints the time and date from the internal clock only. However, it is the user's responsibility to enter the time and date each time the host computer is turned on if he/she wants DATE.COM to return the right information. Using an external RTC like uRTC-8, you can get the computer to perform this task automatically at each start up.
About uRTC-8
uRTC-8 is a universal RTC that can be connected via a Z80 Shim to any Z80 computer that has a socketed CPU. It is also compatible with the uIDE-8 PcW expansion port adapters. Both of these connectivity options present a 40 way "Z80 Bus" and you can connect uRTC-8 to this bus, in parallel with other devices on the bus.
uRTC-8 uses an 8 bit comparator and a set of jumpers to enable I/O base address selection, just like uIDE-8. The RTC used is an Epson RTC72421 which has 16 registers, directly accessible via IN and OUT instructions. As a result, the base I/O address is a four bit number between 0000 and 1111 (0-15), putting the device at any of the I/O addresses 00h, 10h, 20h, 30h, 40h, 50h, 60h, 70h, 80h, 90h, A0h, B0h, C0h, D0h, E0h or F0h. From any of these base addresses to [base address + 0Fh] are the 16 registers of the Epson RTC.
uRTC-8 is powered by the host computer, but also has a battery backed supply to maintain the time and date when the host is powered down. The battery is a common CR2032 3v button cell.
uRTC-8 is designed to work on the Z80 bus implemented by uIDE-8. The intention is that the board is connected to the Z80 bus in parallel to uIDE-8 to provide a means to set the host computer's clock at boot time, automatically. Initial implementation will be for the Amstrad PcW word processor.
Project status
As of this time (April 2019), the uRTC boards are designed and in fabrication. Work has started on the utilities.
Downloads
Along with the device itself, there are downloadable utilities:
- uRTC.COM allows the user to set and get the time on the RTC chip.
- uRTCTX.com transfers the time and date to the host computer's operating system (normally CP/M). If you have uIDE-8 installed, add a call to this program to your PROFILE.SUB and locate the program on an IDE partition so it loads and runs faster.
- uRTCTX.FID performs the same function as uRTCTX.COM, except as a FID (field installable driver). Use this to set the PcW system clock when booting into LocoScript (also works under CP/M but is slower to load than a copy of uRTCTX.COM that's sitting on a uIDE partition).
uRTC.COM
Use to set or display the time and date on uRTC-8.
usage: uRTC - show date and time from the RTC clock" uRTC [[day] [dd/mm/yy] [hh:mm[:ss]]] [-b ADDR]" set RTC day/date/time" -b ADDR specify alternative uRTC base I/O register" (default is A0)"
The following examples should illustrate its use:
A>uRTC Tue 10 Nov 2017 12:42:36 A>uRTC 18/12/18 Tue 18 Dec 2018 12:42:52 A>uRTC 17:05 Tue 18 Dec 2018 17:05:00 A>uRTC 17:05:55 Tue 18 Dec 2018 17:05:55 A>uRTC Tue 18 Dec 2018 17:05:13
uRTCTX.COM
A small utility that copies the time and date from uRTC-8 to the PCW's CP/M internal clock. Install it to the boot disk and call from PROFILE.SUB. If you have uIDE-8 installed, copy it to an IDE drive and call from PROFILE.SUB for improved speed.
uRTCTX.FID
A small FID that copies the time and date from uRTC-8 to the PCW's CP/M internal clock. Install it to the boot disk / start of day disk and it will run each time the PcW cold boots. (Note, requires CP/M Plus v.1.15 or higher).
Technical info
This is the technical application manual for the 72421 RTC chip used in uRTC-8.
Of particular interest are the 16 registers:
RTCBASE .equ 0A0h ; Default uRTC base I/O address rtc1sec .db RTCBASE+00h ; 1 second digit rtc10sec .db RTCBASE+01h ; 10 second digit rtc1min .db RTCBASE+02h ; 1 minute digit rtc10min .db RTCBASE+03h ; 10 minute digit rtc1hour .db RTCBASE+04h ; 1 hour digit rtc10hour .db RTCBASE+05h ; 10 hour digit (also AM/PM indicator) rtc1day .db RTCBASE+06h ; 1 day digit rtc10day .db RTCBASE+07h ; 10 day digit rtc1month .db RTCBASE+08h ; 1 month digit rtc10month .db RTCBASE+09h ; 10 month digit rtc1year .db RTCBASE+0Ah ; 1 year digit rtc10year .db RTCBASE+0Bh ; 10 year digit rtcweek .db RTCBASE+0Ch ; day of week rtccrtlD .db RTCBASE+0Dh ; control register D rtcctrlE .db RTCBASE+0Eh ; control register E rtcctrlF .db RTCBASE+0Fh ; control register F