512VI1
ZXNet echo conference «hardware.zx»
From Max Melnikov → To Eugene Palenock 7 September 2000
Hello, Eugene Palenock.
· ·· --- /■▀■//[ Local time 12:46 ].∙---- -- -···
· ·· --- <·∙.■[ Eugene Palenock and All ].∙---- -- -···
· ·· --- ■▄■/[ Discussing 512VI1 ].∙---- -- -···
EP> Need a dock for the subject registers... Forgot the assignment of bits #A-#D...
I don’t remember where I got it, but here it is:
*** as if the beginning of the file 512VI1.DOC ***
╔═════════════════════════╗
║ ║
║ CLOCK IN YOUR COMPUTER ║
║ ║
╚═════════════════════════╝
We present to your attention a description
microcircuit 512VI1, produced by Minsk
association "INTEGRAL". It is intended
for those who have some work experience
those with Speccy or similar filling
swarms It will also be useful to the program
to the misters who decided to support this revision
Speccy. In the next issue of ZX-ELEMENT there will be
a diagram of connecting VI1 to
ZX, driver and assignment of internal cells
RAM in which the configuration will be written
computer.
This miniature device is designed to work in combination with
ve microprocessor systems as part
real-time owls with alarm clock, cali-
for nothing and RAM with a capacity of 50 bytes. By connecting
VI1 to your Speccy, you will be able to display
display the time and date on the screen, making it easier to count
time intervals, etc. 50 bytes of memory
enough to save the current configurationguration of the machine (no need to poke
determine the amount of RAM, the address of the extended port
nya, etc.).
512VI1 is made in a DIP-24 package according to
CMOS technology. Supply voltage from 3
up to 8V, current consumption no more than 50 µA.
Connect +5V from Speccy and +3V from the battery
ek through diode isolation - and everything is ok! Lo-
logical levels are TTL, outputs hold currents
loads up to 10mA. With quartz at 32768 Hz
write or read cycle time not less than
1µs and increases to 5µs when powered
from +3V.
From a microprocessor (MP) point of view
VI1 is 64 memory cells with addresses from
00H to 3FH, which are writable and
reading. Exceptions - cells with addresses 0CH
and 0DH, high-order bits of cells 00H and 0AH -
they can only be read. MP writes to
VI1 initial values of time and date, yes-
gives a start command. After this, enough
accurately count cell values to obtain
current time and date. Due to lack
any standard for Speccy ports you-
share 64 addresses for one device without
conflicts with previously created bells and whistles
extremely difficult. (Example - on many machines
atoit 580BB55A-printer port and KEMPSTON-
joystick, addresses 1FH, 3FH, 5FH, 7FH. And in
ZX-FORMAT-6 SOUND DRIVE scheme appears,
landed at addresses 0FH-7FH. And if the author doesn't
provided a request in the SETUP of my program
addresses of new devices or disabling them,
then problems with hardware are inevitable. But it's megot distracted). Therefore VI1 is connected via
ports 00DFH-register address entry and 00BFH
-writing/reading data, which is completely ana-
logical to the PROFI computer.
A small digression regarding the clock
and PROFI. In one of the magazines there was information
information that PROFI manufacturers have
power the clock to the KEMPSTONE-MOUSE ports, due to
Why doesn't a mouse breathe? Apparently the person who wrote this
I'm not familiar with VI1. Mouse port - xxDFH, hours -
00DFH. The high bytes of the address are different
with full addressing. In addition, the mouse
is read-only, and port 00DFH is
owls for recording only. So when arose
in the event of glitches, take a soldering iron and make
normal I/O port decoder.
The table shows the VI1 memory card:
┌─────┬───────────────────┐
│Address│ Data │ Registers A-D
├─────┼───────────────────┤
│00H │Seconds. │ for a task
│01H │Alarm seconds.│ operating mode
│02H │Minutes. │ microcircuits.
│03H │Alarm minutes. │ More details
│04H │Clock. │ will be considered
│05H │Alarm clock. │ ren below.
│06H │Day of the week. │ Purpose of the device
│07H │Number. │ tal regi-
│08H │Month. │ the line is clear from
│09H │Year. │ tables.
├─────┼───────────────────┤
│0AH │Register A. │
│0BH │Register B. │
│0CH │Register C. │
│0DH │Register D. │
├─────┼───────────────────┤│0EH- │General RAM │
│ 3FH │appointments. │
└─────┴───────────────────┘
VI1 is connected to the MP system through two
directional multiplexed bus
data-addresses. When working with VI1 after two
port it connects to the Z80 data bus.
A coupling circuit works with the control lines.
zheniya, forming the necessary signals when
when the input port address decoder is triggered
yes-conclusion.
Below is a symbol and description of
512VI1 pin assignment:
┌───┬───┬───┐ Vss-supply voltage
22─┤PS │ │Vss├─24 nia.
18─┤RES│RTC│ │ GND-common.
├───┤ │ │ AD0-AD7-multiplex-
04─┤AD0│ │GND├─12 bidirectional
05─┤AD1│ │ │ new address/data bus
06─┤AD2│ │ │ new.
07─┤AD3│ │ │ OSC1-clock input
08─┤AD4│ │ │ generator (TG).
09─┤AD5│ │ │ OSC2-TG output.
10─┤AD6│ │ │ CKFS-setting coefficient
11─┤AD7│ │ │ division ratio for selecting
├───┤ │ │ CKOUT stroke.
14─┤AS │ │ │ CKOUT signal TG for
17─┤DS │ ├───┤ use in others
15─┤R/W│ │IRQ├─19 devices. He post-
13─┤CE │ ├───┤ solders directly
├───┤ │SQW├─23 (CKFS=1) or through de-
20─┤CKFS CKOUT├─21 casts per 4 (CKFS=0).
├───┤ ├───┤ SQW signal TG, supplying
02─┤OSC1 OSC2├─03 via a divider.
└───┴───┴───┘ Signal resolution and
The division coefficient is set by the MP during the program.
framing registers A-D.IRQ request for MP interruption when an
events that require software
boots. This is the end of the update cycle
formations in registers 00H-09H (occurs
every second), the alarm goes off.
It is possible to generate requests with a frequency
signal at the SQW output. Exit completed by
open drain circuit. Due to lack
in Speccy interrupt controller this output
together with SQW can be used for
sound signal when triggered
alarm clock
RESET-reset. Resets to original state
nodes VI1, responsible for communication with the MP
when a logical "0" is applied. No interference
MP's involvement in the work of VI1 at this time is not
perhaps. For clock, calendar and RAM cells
no effect. Pulse duration is logical
"0" at least 5 µs when turning on the pi-
tania.
PS power sensor input. It is connected
in such a way that the voltage across it is
dropped to zero even with short-term use
power failure. After the resumption of supply
power supply logical "0" on this pin
must last at least 5 µs. When
this is the most significant bit of register D automatically
is set to "0". The unit can be set
update only by reading this register
ra. This fact allows us to determine the
accuracy of information in cells VI1.
CE - chip selection. When applying logical
"1" AD bus, DS and R/W inputs are disconnected from
MP, power consumption is reduced. Low-which level is set during the action
impulse AS and remains unchanged until the windows
read/write cycle. Allowed
permanent connection of the output to the common
wire.
AS address strobe. Served as a posi-
solid pulse if there is an address on
AD bus. Based on the pulse cutoff, the address is recorded -
is transferred to the internal buffer VI1. At the same time
the level at the DS-strobe input is analyzed
data, which determines further logic
work VI1. If this level is "0",
then during a positive pulse DS
data will be written/read according to
with the level at the R/W input - reading when
"1", and the entry is at "0".
If this level is "1" - for reading
a negative pulse DS is supplied (to the input
de R/W "1"), and for writing negative
a pulse is sent to the R/W input (to DS "1").
This sophisticated logic allows
connect VI1 to various MPs.
Now is the time to talk about the program
framing the microcircuit, that is, about the work
with registers A-D. The symbols are shown below.
the significant bits of registers and their descriptions
sanitization.
The symbol "*" denotes the digits that
These can only be read.
Register A:
UIP* (bit D7) Log. "1" means that
runs or will occur in 244µs cycle
updating time information. Sig-
The RESET cash has no effect on it. Record-
save log "1" to the SET bit of register B,
you can disable updating and therebyWe reset the UIP to "0".
DU0-DU2 (bits D4-D6) The code is written here
010, corresponding to quartz per frequency
32768Hz.
RS0-RS3 (bits D0-D3) Code 0000 prohibits
appearance of a signal at the SQW output. Other
Some codes will give a signal with a frequency of 2
up to 8192Hz. What frequency is what code
responsible? Below is a list of frequencies
for codes from 0001 to 1111 (in hertz):
256, 128, 8192, 4096, 2048, 1024, 512,
256, 128, 64, 32, 16, 8, 4, 2.
Register B:
SET (bit D7) Log. "1" in this bit is written
decides to update time information
nor, giving the opportunity to write down the necessary
data into registers 00H-09H. Log. "0"
allows VI1 to start timing.
PIE (bit D6) Enables periodic interrupts
house specified by the RS0-RS3 bits of the regi-
page A. Can be reset by signal
RESET.
AIE (bit D5) Enables wake-up interrupts
flax Can be reset by signal
RESET.
UIE (bit D4) Enable window interrupt
at the beginning of the update cycle. Maybe
reset by the RESET signal.
SQWE (bit D3) Enables signal output to
SQW output. The signal may be reset
scrap RESET.
DM (bit D2) "1" means that data about yes-
those and times are represented in binary
form, "0" - in binary decimal. Change
Deleting this register without overwriting
data in registers 00H-09H is not possible.
24/12 (bit D1) "1" sets 24 hoursowl mode, "0" - 12-hour counting mode
that time. In 12 hour mode the time
afternoon (PM) is marked by one
in the most significant digit of the clock register 04H.
DSE (bit D0) "1" enables automatic transfer to
summer time. Last Sunday
April after 01:59:59 automatically
is set to 03:00:00, and then
her Sunday in October after 01:59:59
is set to 01:00:00. By entry "0"
you prohibit auto translation.
Register C.
IRQF* (bit D7) Interrupt request flag.
Set when the condition is met
PF*PIE+AF*AIE+UF*UIE=1 Simultaneously on
pin IRQ is set low
level. The flag is reset when read
register C or a RESET signal.
PF* (bit D6) Set to "1" according to
ntu signal on the internal divider,
selected according to ranks
RS0-RS3 of register A. The flag is reset
by reading register C or by RESET signal.
In my opinion, this flag can be used
for counting time intervals of long
lasting less than 1 second.
AF* (bit D5) The flag is set when
falling of the current time with time,
specified in the alarm clock registers. Flag
reset by reading register C or
RESET signal.
UF* (bit D4) The flag is set to "1"
after the end of each update cycle,
nia. The flag is reset by reading the registerpa C or the RESET signal.
Register D:
VRT* (bit D7) The flag is set to "0"
when the PS input is low. "1" us-
can only be adjusted by reading the re-
hyster D.
Well, we're done with the theory. Now I give
instructions for working with VI1.
ATTENTION! When working with VI1, use
only full port addressing, which reduces
increased risk of conflicts
with all the hardware that is already in your
car. Access to registers VI1 is two-stage
chat: first write the address to port 00DFH
the desired register, then through port 00BFH
writing or reading data. It is possible that on
turbocharged Speccy will have to be introduced before
additional NOP commands after writing ad-
register res so that VI1 has an agreed-upon
1µs in the description for preparation for application
to him/issuing data. In the absence of a turbo pro-
I couldn’t believe it, although the experience of fiddling with
by our mikrukhs says that in their
descriptions usually indicate not the best
parameters and extra NOPs will not be needed
all VI1. But, considering that computers have turbochargers
now up to 14MHz, in my driver I have this
I'll take it into account.
After turning on the power, register A is charged
the code corresponding to the application is written
to the desired quartz and the required frequency at the output
de SQW (or frequency of periodic interruptions)
niy). For quartz at 32768Hz and SQW frequency
512Hz is code 00100111 (27H). Then in re-
register B, the code is entered with "1" in the highest order -row to prevent the clock from running. The rest
the digits determine the time counting mode and
generation of interrupt requests. For example,
code 10000010 (82H) sets 24-hour
owl counting mode without automatic translation to
summer time with binary decimal pres-
data transfer; all interrupts are disabled
and outputting a signal to the SQW output.
After this, in the cells of the clock, calendar and
alarm clock, the data from which
The countdown begins. Values must be entered
in the format specified in the relevant
digits of register B. For example: decimal
the number 11 corresponds to 00001011 (0BH) in
binary code or 00010001 (11H) in binary
but-decimal. In 12 hour time mode
afternoon corresponds to "1" in senior
digit of the clock register. For example, the code
00000111 (07H) corresponds to time seven
o'clock in the morning, and the code 10000111 (87H) is seven
o'clock in the evening.
Days of the week are coded as follows: 1-Sunday-
Nye, 2-Monday, etc. If disabled
automatic changeover for daylight saving time, then use
There is an encoding in which 1 is Monday
flax, and 7 is Sunday. Months are coded
as usual: January 1, February 2, etc. Year
specified by the last two digits - 1998
written as 98 (62H).
Having set the initial values, we allow
clock progress. To do this, the code in register B is
change the same, but with zero in the highest order -
row. If necessary, you can allowall or part of the interrupts and signal output
to the SQW output. The first data update will be
det 0.5s after writing "0" to bit D7
register "B" and then every second.
Z80 equal to 3.5 MHz. If necessary, analyze
lyse several C register flags, then
remember its meaning - all the flags after
register reads will be reset. Reading flag
ga from register D will help you determine
Has the supply voltage been lost and, if so,
then you will have to program VI1 again.
Well, I wrote everything I could. Outside the window
night and really want to sleep. If you dis-
they fought with all the nonsense that I wrote here -
sal-excellent. And if not, write, ask
questions. I'll help as much as I can.
Based on materials from "Radio Yearbook-1989"
typed the text in the "WINWORD" editor
Alexander SAM.
───────────────────── ─────────────────────
*** as if the end of the file 512VI1.DOC ****
Sincerely, Max Melnikov... aka HighLander... aka Uncle Maximka...
.·∙.■▀■▄■...[ProDiGy]...[GirlS]...[MetaLlicA]...■▀■▄■.∙·.
`∙..∙·---──·─//─..[UnrEAl TouRNameNt]..─/─·──---·∙..∙','180