Re: Manual de montaje del superupgrade
Publicado: 16 Ago 2014, 01:04
Thanks a lot, velesoft.
Your suggestions will be a great help.
Your suggestions will be a great help.
Retroinformática y consolas entre amigos sin complejos
https://www.va-de-retro.com/foros/
It is possible to disable SA17 and SA18. we have two jumpers to do it.velesoft escribió:In GAL A equations I see some bugs.
1) small compatibility with ZX128 memory - none memory pages mirroring
2) it's not ZX16 to ZX512kB expansion, but it's add 512kB = 16kB+512kB
3) impossibility disable 512kB may cause incompatibility with other software for ZX128 (some 128k software crash is you use paging bits D6 and D7)
Here is fixed equations for your GAL A: (100% memory compatibility with Pentagon 512kB)
[anchor= goto=]SA14 = A14*A15*BANK0
+ A14*/A15
SA15 = A14*A15*BANK1
+ /A14*A15
SA16 = A14*A15*BANK2
+ A14*/A15
/SA17 = A14*A15*BANK3
SA18 = A14*A15*BANK4[/anchor]
If you set address lines SA17 and SA18 to log.0, then my equations will 100% compatible with memory paging on ZX128. Will work also software which use memory mirroring (ram page 5 is mirrored on address 16384, ram page 2 is mirrored on address 32768). If any games use mirroring to page 5 (=set 7FFD to value 5 and write from address 49152) then upgrade will detect it and write data to correct ram, you can't see correct videoram data, but CPU will always read 100% correct data. Software always detect this memory upgrade as 100% compatible, only visual data in first videoram (on TV out) can be some times different.
Yes, it's possible because memory databus(videoram) in range 16384-32767 is connect with CPU via resistors 470 Ohm.wilco2009 escribió:About the equations, I have to read them in detail. It is very interesting that you say about mirroring page 5. I thought it is not possible without internal modifications in the Speccy.
Código: Seleccionar todo
DISABLE_ROMA14 = !( COND & !COND2 & !D5 & RESET & !COND3
# !COND & RESET & !DISABLE_ROMA14
# COND2 & RESET & !DISABLE_ROMA14
# RESET & COND3 & !DISABLE_ROMA14 );
DISABLE_ROMA15 = !( COND & !COND2 & RESET & !COND3 & !D6
# !COND & RESET & !DISABLE_ROMA15
# COND2 & RESET & !DISABLE_ROMA15
# RESET & COND3 & !DISABLE_ROMA15 );
DIS_DIVIDE = !( COND & !COND2 & RESET & !COND3 & !D7
# !COND & RESET & !DIS_DIVIDE
# COND2 & RESET & !DIS_DIVIDE
# RESET & COND3 & !DIS_DIVIDE );
ROMA14_2 = ( COND & !COND2 & RESET & D0 & !COND3
# ROMA14_2 & DISABLE_ROMA14
# ROMA14 & !DISABLE_ROMA14 );
ROMA15_2 = ( COND & !COND2 & RESET & D1 & !COND3
# ROMA15_2 & DISABLE_ROMA15
# ROMA15 & !DISABLE_ROMA15 );
ROMA16 = ( COND & !COND2 & RESET & !COND3 & D2
# !COND & RESET & ROMA16
# COND2 & RESET & ROMA16
# RESET & COND3 & ROMA16 );
ROMA17 = ( COND & !COND2 & RESET & !COND3 & D3
# !COND & RESET & ROMA17
# COND2 & RESET & ROMA17
# RESET & COND3 & ROMA17 );
ROMA18 = ( COND & !COND2 & RESET & !COND3 & D4
# !COND & RESET & ROMA18
# COND2 & RESET & ROMA18
# RESET & COND3 & ROMA18 );