Shevek <[EMAIL PROTECTED]>wrote
in reply for CLAUDIO MASSAO KAWATA :
>> Third (the first really MSX related topic): does anybody know
>> how the Z80's "R" register works? It controls the "REFRESH" sign
>> of the CPU, but when is it generated?
Ok, refresh cycle occours when M1 turns high, for 2 cycles T
of CPU (Signetics Z80 family data sheet) after fetch cycle.
Fetch cycle is the cycle(s) of instruction aquisition.
>> When it counts "zero"? It
>> wouldn't be very smart, 'cause the register can be set by soft...
>> So...?
>The R-register is increased after every refresh, for old memory-modules.
OLD ???? For EVER dinamic memmory. Only SRAM don't need them.
Try this program:
INIT: DI
LD A, F0
OUT (AA), A ; Line zero of keyboard matrix
Destruction:
LD R, A
IN A, (A9)
CPL
JP Z, Destruction
EI
RET
If you press "0-7" keys quickly (no more delay than 3 secs),
your MSX returns at operation prompt. Maybe you entire RAM
use NovRAMs ICs for retain valid data ...
>They had to be refreshed in parts. For the module, to see which part would
>be refreshed, the code would be on the data-bus (or the lower 8 bit of the
>address bus, I don't remember).
Lower 7 bits of address bus (A0-A6) are used to select the
row of memmory cells "refreshed". During the cycle, the
A8-A15 carry contents of bits 0-7 of I register.
>This is what the Refresh-register (R for
>short) is used for. I believe a refresh is done once every machine cycle,
>so you can calculate the value of R.
Machine cycle period is T (1/clock). Ex:
" LD A,B " needs 4 T-cycles for execution, 1 M1-cycle inside;
" LD A,(HL) " needs 7 T-cycles, 2 M1-cycle inside;
" INC (IX+dd) " needs 23 T-cycles, 6 M1-cycle inside.
> I don't see the use of setting the
>R-register, except if you program a Z80 (not a MSX) without memory and you
>need just one more byte.
"R" improved (automatic) auto-increment.
Why not use for "time/delay" counter when DI (interruption
disable) on subroutines ?
>If you use it as memory, you really have to watch
>your timing very much. Mostly it is used as a random generator(...)
The brazilian game "Orpheus" (like Space Invaders/Hype)
explain these technique (Ed. Aleph).
>The Z380,
>which will most probably be the CPU in the next MSX (if there will be
>any), does not change the value of R.
On Z180 register R counting M1 cycles, but R not used on refresh.
Z380/Z382 also implements R register.
(sorry for my bad english)
Regards from Brazil,
_______________ _ _ _______________ _______________________
| | |_| |_ __ _ __ | WALTER BERNARDO NUNES |
| /|| |_ _| \| |/ / | [EMAIL PROTECTED] |
\ / || | | | _| / / Graduacao Fisica-UFRGS |
\ / || |_| |_ |_| | /__________________________|
\__/______||___|___|___|_|_ / MSX pra geracao que nao vai
___________________________________ mandar o mundo pelos ares.
/"\
\ / CAMPANHA DA FITA ASCII - CONTRA MAIL HTML
X ASCII RIBBON CAMPAIGN - AGAINST HTML MAIL
/ \
****
MSX Mailinglist. To unsubscribe, send an email to [EMAIL PROTECTED] and put
in the body (not subject) "unsubscribe msx [EMAIL PROTECTED]" (without the
quotes :-) Problems? contact [EMAIL PROTECTED] (www.stack.nl/~wiebe/mailinglist/)
****