CPCWiki forum

General Category => Amstrad CPC hardware => Topic started by: McArti0 on 00:01, 24 April 24

Title: Zilog Z84C0020PEG in my CPC not all works.
Post by: McArti0 on 00:01, 24 April 24
Done it.  ;D Zilog Z84C0020PEG in CPC.

Basically it consumes no energy. It is cold. 
According to the documentation, at 4MHz it consumes 20mA or 0.1W.

BASIC works.
keyboard works. 
GOTEK works.
CPM works.
Bomb Jack works.
Sound works

some undocumented instructions Z80 works.
I checked LD A,LY
v%=0:CALL &BFF8,&C912,0,&7DDD,@v%:PRINT v%
246
(LD A,LY : NOP: NOP: LD (DE),A : RET)

Pinball Dream without synchronization and bad noise screen
AY3 only produces noise.

Batman Forever many scenes don't work.
AY3 only produces noise.
The relay to the tape recorder is ticking.

That's all for now.
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: Prodatron on 13:04, 24 April 24
Thanks for reporting!
Very interesting, I would like to hear about more testings.
I wonder if the issues with BG-stuff are undocumented instructions or timing.
(btw I really like your Basic hacks!)
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: roudoudou on 14:55, 24 April 24
most of problems are due to (i guess) OUT (C),0 undocumented opcode which was fixed (or reassigned) in later versions
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: Prodatron on 16:23, 24 April 24
OUT (C),0 is used in all optimized AY routines, so yes, that makes sense with the corrupted sound.
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: McArti0 on 18:56, 24 April 24
OUT (c),0 working  :-* but like OUT (c),255   :picard: ;D

OUT &BC00,15: OUT &BD00,15: rem CURSOR REGISTER
?INP(&BFFF)
15
CALL &BFFC, &e9dd ,&c9 ,  &71ED,     &BD00, &100
REM             JP(IX)   RET   OUT(c),0    LD BC,&BD00
? INP(&BFFF)
255

Dear Zilog, does 1 CY really save you?  :-\

But SymbOS working  :D
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: andycadley on 19:17, 24 April 24
Isn't this a reasonably well known issue with CMOS Z80s ( I think I've seen speculation that, since the instruction was unintended, it's just a result of how internal signals value when floating differs between NMOS/CMOS)

There's also a slight difference in LD A,R/LD A,I behaviour according to @arnoldemu 

https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/z80-cpu-nmos-or-cmos/
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: McArti0 on 19:48, 24 April 24
Quote from: arnoldemu on 21:11, 06 January 16correct.
But I think nobody uses cmos.
Realy?  :D
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: Prodatron on 21:17, 24 April 24
Quote from: andycadley on 19:17, 24 April 24There's also a slight difference in LD A,R/LD A,I behaviour according to @arnoldemu

Quote from: McArti0 on 18:56, 24 April 24But SymbOS working  :D

Thanks, yery good to know!

SymbOS is using LD A,I/LD I,A a lot, so this part seems to be 100% the same for both Z80 versions.
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: McArti0 on 06:39, 25 April 24
I will be making a hardware patch in an inelegant version, i.e. shorting D0-7 from high to low. If anyone knows whether the CMOS output can withstand such frequent treatment, please write something.
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: andycadley on 08:18, 25 April 24
Quote from: Prodatron on 21:17, 24 April 24
Quote from: andycadley on 19:17, 24 April 24There's also a slight difference in LD A,R/LD A,I behaviour according to @arnoldemu

Quote from: McArti0 on 18:56, 24 April 24But SymbOS working  :D

Thanks, yery good to know!

SymbOS is using LD A,I/LD I,A a lot, so this part seems to be 100% the same for both Z80 versions.
According  to that thread it's a bug on the NMOS version only where the P/V flag gets cleared if an interrupt occurs while processing one of those instructions. I imagine caring about that is such an incredibly niche situation that nothing would be affected unless specifically testing for it.
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: VincentGR on 09:22, 25 April 24
Can you also test Relentless? (sound)
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: McArti0 on 11:04, 25 April 24
https://www.cpc-power.com/index.php?page=detail&onglet=dumps&num=10072

This?
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: VincentGR on 11:56, 25 April 24
Yes.
Quote from: McArti0 on 11:04, 25 April 24https://www.cpc-power.com/index.php?page=detail&onglet=dumps&num=10072

This?
Yes.
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: McArti0 on 17:38, 25 April 24
Quote from: VincentGR on 09:22, 25 April 24Can you also test Relentless? (sound)
GamePlay work. Sound noise (Intro and Game).
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: VincentGR on 17:54, 25 April 24
Thank you.
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: McArti0 on 20:34, 25 April 24
Hardcore Hardware Patch Z84C - OUT(C),0 (https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgjOCmC0AcIAYB0CDMAmALANgKxewHZVdZVMBOQ8EXETVWmMMAKDFwRGku3FTDpumMHzAChXTIlqt0Cajwpj0sLtFyZpgtfRAARbHIXDl4dGY1bzZ6ftzHFvfqu6btGeHcyPTY8tJWHtZ2CL5K-oR8QfxRevqE4c7iFEIxKUJ2qElmYJhYbtZ5BXboOWJa6u7glfFsHIwRNQjwPKLN8FK0shzqIv7W0KioA9JckrIA7sLt4oIz-q5h020VLQv82FxhAB7cqFT8+Pu41OK4dNIFhGAAFuwX+yP8g+i4ozJh8ookQr2Bv3A7y8IAAsmxvvsENpakNoUDsCCAJIAeQASgBFVgrdAFPKYdSoeH47bhURcMCEVzQeTwSmuOwQkzQcngbCWWls2wGMqQllbNnYQKc0RC+LZPms0QYbgi7AyuyJSUC8nqOUILr6L7MqXA2XrDiI+I+ZUU3DPGkG818OwOU1A+GWumcaR2IwAF24+JqsFa3v+NBZ9CQFFDYYopAoWjDwfDYdIsAoB1D4A1IAAJpAAGYAQwArgAbd2sT0sor4dT+62BiCYENxiOJ6MpoZIXARzgIUT5bDYLBgGB0tOZ3OF4ulqvHMvaPUQIN1huNqOUFuoNsdjXd9C9-uD1NcEf5oslr3l2CBf1bCle2MNyPNij7dcXTdC7d9kR7sDD7NH8en7RsHaac2RlOda3rON7xXR8FzvX0kxjb8D1-McTxA7s-SKXttBvOCoKbGDbwIxNk0fZCM1Q48J2w3QMPZMQ8Mg8NoJjfCWIQsj90o0dqIA8AbjSf0qTpJjF1YlN2PjTikJ-XjixWYT5no3Rln40Q6MvTBOmxdShSwwD2jU+jgKrc9EF0jDSAvctjmMychPLeQLMUpzKyKbSdIAcy9eZ6T9PzCGsUlFNcAMWT8l0XK9MLqwiv5q3s2KjXihEdNCukr18v4sqSzKZVS6VJEsnRBQvPycOilkwoY7KuT4ezIsdFgEueRrWuiFq0qqrrDQCnK03atk00K+VisUiqCt6yqhtFcqcrMWbasKkSerC1aVqWSzcRhdYaQJDoLIAJ3U-IbJhX0ZGQsJen2I08neO66VQOJxhkBwVhGZ64iGZ5xFe8JUHMh7oiBmcjWkABhAAZABpVgkROBLHUBEHPjbWQ+WIMQsugQhgayxlwmxoFzLx4HrPiXlmRJvruHx8GQX0CUab+qLyZneFFWJv6gOiBm2XaUIebEC40gFjhjm8EWgQtCXq1tGWOGcjmgWct1ieJEZ1Al7W9Bh+Gsb+zAqXp4GTcyEBUUxJWzrNmESjBNhoe4RFnUdIhkbGGRcwLABnSBujCF3oDdwXok98OrpAX2A6D1gQ7DhoI9N5Po9jwO6GD13LsltJI7z9Oc39zOLMT3O9VD1O9W2GPi7jrOE5z50yYLyna4z+Py8ykaC9yn369LsI0WbtX1A-MeZCEN4NTTdAMfnug1w4ChoXbHBvyoNq21YEe8a1gUq7+PW3oJWe55AeeGpQchV7wWBOAOX08EfZAHD32m7aPmoCjeztZ8vpfJANo2wvQflsC4YAH5vGoMgQg796bG1Nt-PIps-7nzelfRASBtyUlDEDQghBQx5CjNg9kGCKGblYCdPGbMPYV3hBSWe1DEGixVknCsV1mE0NpnFDhbV9xhB4WzKcHC7KCJYbQ0WKUOFGiYRqSRvDW4V3MvIoRrDhrj1zv3a6ijebASTnzLhCiABG9NjhzDSO8M4vYIC7HpiINk5o3BEKcTaS+UMAAKkNoAAC1zyQwALYAHs-asD2FYHK1I3g4wEHoAoAAJHMR10yTGSZAAAOn7AADjmd0ABjW4WSUQAFUAAqWSAAUkMACUAAaexQxMB0FEKcWUrjRRdAKAAUX0Fkm4Dw0g7R-udEZU9iKLjjD0PsTwPhDHuqoN6h4xzQALJAdMNBa7IC7KwHy8y6SLKeuYMUpJRBDIOuIV4BoLB8CEMsosqz1mbPRjsvZIobn6gOapCyZz1J6wwnbO5VF3SPI2XYl5bA97+n+dC4KMgDpZ3Rg4YJIBYB-HhSwCAWcUCzyoHgPsiKIAG1YCisgzyvqEC4Ni8+eL3hvGjuCElqLcJcApVS7BNKoh0sJSAAA9NbLEpKIDgpECwIOOKNS0oJdHfQABBMpsrWBAA)

Someone tell me if the CMOS output can be shorted with impunity.
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: GUNHED on 11:26, 26 April 24
Would be nice to know if this will work! Good luck!  :) :) :)
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: McArti0 on 08:23, 27 April 24
I measured the short-circuit current of the Z84c data line. 20mA.
8x20=160 mA. 750ns pulse 160mA (0.8W). 

I will do it, but don't do it at home.  :P

ps. Or maybe I won't.  :picard:
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: McArti0 on 09:16, 27 April 24
Softcore Hardware Patch Z84C - OUT(C),0 (https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgjOCmC0Ac4DYB0swHYAsYsIKxlg1yPBFxAwGYyYwwAoMXABhGgwE4FxKwAmNjh78QrDGTL0+zNIK7g+sVtGLj+SiiAAiCKTLnd+8lRjV954rbj2z28sJUVtVPJ5Yw2DPU858OflsyedoaUaNwmamHclmjBnKEcApE8SZpalPH2GHziKdi56XxZhqbKLtgYYtoMTNQh4FXw7GClzPDV5NZMykL+eZSUoT6sAl30AO6CrcLJfY4dk9NtzfMIrEEAHmyUHLIOuMmUuPvH5OKFaGAAFoy45NCDw3l8uM+iktK2xwI9A4fgN7wcQAWQYXx2zDUZUhaiBmgAkgB5ABKAEUltA+IVKspKFDGlVRJ5cqxWjMwGlyTEatAAMYABzpJKJTEI4CpuHZlj49KZLLJ91+nIBlkofOZENJgOkHN+h2qWjQEoFjVg8Epvww6vSzBVUtZREMVKN6Qw+v00oKahNhUsuAtsitu2Fvxd6QQKqmWJxTTYVr9QQATiA+Gg3T5HN5xGTmHG7niEBrTY8kzxwh8BKxrN6hhrojshunuEEIY92dg3jsK-DxABhAAyAGl6AidgC-u2tVWNkhxmW0EXWnG2GgK+tFeD9NBB4YuXkx3DudpigOh-CZzW02LgrPAQTN3CCbFd0OEDND4gZoFT3OAZemKLtB413Oiw-cEX7beZcpF7+PV3AkHHWUcKyGapGxbV9GnDMDoTg8RkXRH9rXgxo7RAMF6AbNgkw1Fg8gQODOw2EAADMAEMABsAGdIAkIJcOgfCrwiYjfnPEtSCouiGPIJi8J1Op2JIz9uIgXj6MYnChII+8OMBAEyQomjpIE2SWOEjdFKYNMyKk-jiWY1i2SIsT2QMtSjMErSNQnPCSIcqy+JklE5IAlicQVTNQxYONRj7UMgsoJAmA4KFcA4DBz2YPYi2YPt6HcmdgIgxy3VA0YKACgLQ2CkskGYShOGYPBYBYXZ1TwDhRCSlK9zQliSJyGN8v8vKBD4JAYj7MIKvWe4CEOE46rQawGqHDA4OarU4OyjqRy6nq6r4c80A4DhKFgNANo4bBorqhAIty06AoYEMZ3XA9TMIj4wAC+hLsany7IA2N42e9d31uhLwEer672SW7lP+z7R3XNM3r0joweDCG53ZaH53ugGEcQEdoecuGnvR6kPPxj6ggAI1HDteGSN59gQc9iW2GcsEQT88LCJmaUKAAtQg6wAWwAe1o+h6eITinCxKtWl4TRCgACUooMABMJnlyAAB1aIZSiABc6WudWkQAVQAFXVgAKOsAEoABoth2EhWlGrENsQUCLnEABRLR1auRgECOIcSoGNN1GyhXICogBXaitegajIAV0gyMS5gGAAcx2YPFETDU1raoJWmSZ0fCxdoFHkAQw8j6PY-jxOPmTtP-VLowImkHONA2X3knUDC8h7kDQ-Dyio5juOE4gJOioYb1+9avCohGTEEAX8Qo36YkpjXwOQC3jNS30Ml3UeN00ksXQITJGFj8JRVrAvtVmjX7VgWfTxBXfNfxN1N-ASRz-lyVD-SWRxOJRh3PfVoGhr6QMVKuA+4BwyP1+Ig9IDAtahhItvMMJ9fiJx6oMGQ4VWjRWOMwASPUWCbQ4IQDgxAwhxlqg9Vgldh7R3oOnRQ+Y0j4iiGkTuCdnRpFeIkLqIAWEj3oAIw0hRhG93yuIthUjL5VlkZWbgFch4SKUQ-PypQdQaKrlrSRoZWQ+VUWYsRmjFEmMFACcxdjLGGOMVaFG5j2QGNYUY7R+NVFcXkVYoxUxfEzDcTGJYoTdFKSzOEiWQpIlMFlEEIJsTZSqOfhveJ6S0k9hiaUFREs55JMyTIiW7p87Mx9NCQo0BZ6FAWpIdONSnADzYP3BY9dPDL1SL8EQDhT7aE9IySU+gum4nAL0mE9pHQgFGekugWodTuGmaMr+8zARfm0HqIZnSlxqF6SjWIyy1AIDXr0k5AgxRHMQBoNZMCihXPQM03pKDLBgBVOFe67pRnuggLKJhZ14yby1KXXeJYlhPyrE-Uu5TaqXyJLM1koYiYAruLCnRszhJIrhiioF+5V7djBR89+3AVlDixf8nFO95QAk-gSGF90UYrIrOSgFj1cXDlYJ-ZSqL7rnJmccteLLWVFLXsveAoqRz0rJEmVgoyZWkD+cKkVnF5Ciu1MSIlCCnCjJQb85FZ1wXIMjCqsFfMyAQAnhQOgEByG5T2HgP2AlSBQXoGajsHw8xoGzHVO14Q3ivHulhBgbrqCWs9d65OAV7X+qdRAAA9MhDEbqVJiGtYxIqUa-WOsDVoAAgkbXNrqQBXDrpsVAKcxg+szQ6gN1REoPFaNwEt1BI1xk4FQjtnbNrcX0nVBt+0ZniqrXGXIWAqjZtYBzd2KIkSe3oEAA)

This version is an adapter between Z84C and socket. I wanted to avoid it, but 0.8W scares me.

QS3244 is fine bus gate.

Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: McArti0 on 21:29, 15 May 24
External hardware Z84C for OUT (c),0 working and ALL SOFT WORKING  :o ;D :P 8)

Semi HARDCORE version.

Hardware patch converts OUT(c),0 [ED 71] to IN(c) [ED 70] next pushing 00 on the data bus and forcing RD Hi and WR Lo.  short circuit current ~2x20 mA CMOS outputs are very strong.

Correct The WR and RD signals should be gated.

Now I'm waiting to see what goes first: the RD and WR outputs in the Z80 or the forcing outputs in the SLG

The patch was sewn into the SLG46826v-DIP

Maybe someone would like to create such an interface in the version between Z84cmos and the socket?

Hardware Patch Z84C SemiHardcore emulated (https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgjOCmC0AcIAYB0YCsswBYDMA2B+quA7FjuCKiOajGGAFBoIjQBMR4mC80YAnGy49E1UagZsExVh1zhsxedGwJMCpWIAiuSdNmcw2Qa1XqjJ9VolSZ7Q5jbqVark+2Y9duV26nXZCxWCF4G8ljEQi7mmJHaxKH24ZiwvGZcqdrYiT5oUv7mqPlWbDmGqHgF4BXyVoxo2GHVrnyazOpB4kyoLK3JftD8-SwsjSwSAO6sAkJYInwmgYgMU33NzmBtmJwhAB7TqDJkvPRH2xDq7qQAFt1Ug8PTj0IhttNgs-i99J+46uoAWUYbzA4SI8FB4FwfzEAEkAPIAJQAiitqBCeh1fCM0Xw2BDYlEhlw4q99HxMOYvtNKVCYeoAMIAGQA0olIixQQhekoIdS6uz8mhYM5edURdpSm9oBzqrheGK0PKsoLOZjWIr1VYEtLZaDITLlfraiAtGS7HrUEUNUarUIrJ5dUKajaMZUrDZyZb8oaMcVTbppSRZngedajPgxMy2bqAoSNeH4+oESjErBiR9uax+LTM50gQwmaxcOUWn81a4RiAAGYAQwANgBnSCUZZF6Al8K4A3lqGQzk1hvN1shdud6qVDt+BryAd1pstqij4vla1TtXWudDxdtldg5XruXwKvz4dLwt78XOXvCrEsU875cdwzUw9cqv37cjhiIy95XqoIsRRVkIHDclmbBIFQkFUNgKCAWogGYN2CD8MQlTIBIv4dnEEa9DeoaiPa4HgSAoFILOSAINgmD8AQ6A9MYqQlvwiBQT+GoSvQa56nkRFkT0pHkfIqBIJSqCOJE0JsDJqjHkgsDEFhGpxnEb7xiwoGCRBZEUeASCkGoMnQrg-ASZSYwKdsDAAE4qYUZalliYDgbZ9nVD647-qILncm5MoBC6z5ghh4CuXZAWFGuXl2j54XuUqvAxcqnLxZFV5-ugzlpcQASvl51KpX5EW5VSPYvv2YV+QARhqlRGB8rBEEcJAyHsKmsaCFTFggVBdSa7gAFoigyAC2AD2jYMPs0RQmZYWfPw8CXOoAAStY2QAJhMG2QAAOo2AAOtYAC4AMbXAdw2YAyALwgAygd8IAKoACoHQAFAyACUAA07VwL8USQqCJZiO4ACiWgHaQTC4ESjx8I1FigSAm2QHWACu9YndA9aQJtFAflRjAAObvCGJhIyGmg4qCLzYuijNCOjWM43jBNE6IyAIGTTNLCkbh3nDsy5ts-QeZpaMY7W2O4-jhMQMTvPdI0eJ8lm6skgzYyUKrrCUhCYAStAhthaSZFdPTphCmovT4vA-AmCzMtyxzivc2xKvk6b2BCE7UQ4P7tPLNbpsg3bBt+yAAeW6zsvswrXMjCTuJmy5amYBHpKJEH4DG84ecfNHgL1FaBsRwM2D1ZHy1IE7DeN03-DTQbxBHGovA4BALmoBcZHqFDtyrLR4QuYXGa9bOaeT-Mo8LR03S9PP4-L5XIGthIDRNW048Gxme9S1Qnp2IcY+ee4PydFowLkmfYUDPD5iRyUiT3y57gdpfCDuFY2TSvfIY+F3BAPiG-NoU9izf04MEcB4QeBJW-pkB0cCY5Uyfmg+0poT473kGhZQGD8HaF0MwXBVUu6z2PCAESess5qw-uYQigxFiEQYWIKhbBFD50aBwY+VB4DyF4URLhnIjCe05LlUQfBZAXiRvVGiGw+JGFpCeL8552yCAhEw9M4RCJbgXN+aULlMhYE-vQeqjh-gBkSMYgknA5HJBgdgmxCCMgnAjG4jwLiTHdmUOYrskJYFGNcSjd48jLCmh1OSWxkswlgn9Fof+0SQmxQcdUa0r9gkmKynEjKApsLEC4k4BUQpin8TAkJXS8g4KKWQqofgxhJJZ02GxRSOC4AZksdmfEQsxAFh9g7TBshMigLpjCQYPTvJwBhN5Nhd5PYPmWKsWA0cpkrNmOqEIqxe66J6XwSBRhaa4n8QoRqaSPiwBxNsjxFz7bTnxFcnyDyfKUjppckAqyf7OE+ZfNiPcSIAqKoCxIqy2AGneR8QJppb52FWQXVgEL4WZPJHCtciKMmmiSbC2YXyEWpV-pEkFswylwE5GUoJKLZiZjxfnBJjpKVhUyKSxly1nHSk+fYiFkCrAkPeRy5Q-KiYoCqoCrMvlgXG1GDiplnyTF-JFaKhVJEmB8qpT6OFQp5XisVdq5VkqPlUrXKi2YWrRWkV1a5fVcKTbWvMKas1QKAUqqleAMFAriUg3tWapVlrVWusFioYlgslbCotSRH1fkphkphGS6OWynlxtdVmeNZLk35xSmiURKVuHTyjTmnyh9M350rObF4RaM4M1Xks2Q9z3lkrrUvKEqVMiyo4V0IsPyYjP3cKogx6iDX50TOYPivazy7ltb4fOEpR2PgvKCkGuY3ULLUeOoNBJzBlJnd+KYraB07OrbujVjz62ckjLc6tXJXUQrPYWqYMxYn3oamWu9LDkaLGkGW0hMoimax0UmqsutJicQ3QGwpG7+y4jA1O0UXER0cW-RuzWeopAbwqTpSC8hiAk3hpwwCqhNhSCXApJSaIyAPqAvkEIX6QapJmbFKW4wGCwihBOPxIVZxsWPqR-cfJWMXp408I81aHjrBpWgTcuIIW0aimW5jvo5rKHWQp7mVFqJ6zk0p0ExI4CrN8SprjWdWLBgUCYeUWiTAsFgKEYzpj1AYNs8Q6zuFxbUMvi5j0TnRaZHsykVlWh6UyBs3p+zemKWBdwsYIQ9nItgLeDZ4CrnCgJKxdQ3CsV7OxWReFjZEoMsSgFNKZCw6TZFddSXEA0ZjlbDMW0BRwnNi6NpGsKt8bZpVsDalPwKbGZa3fKHd5+zL4xf2SYmLKd-kOojVRgbbCHMjYJD2r1OqzXOumLirA9iYkbY48gCb3qw3Te+Ot3za2TEnfG1NsVK39WDaS0d7JlGluAqm6t276TgYpM3E9gFL2buzZyfNjKF2DtXdFa92benAfGhU3t5bYPtkHNfPuxK9WDngjW+UDCxy0eTmR5s7HTkMfJBzgjhwalkevNRw4AYFORCtdpycA5ihp7b3OX7Rnhh2f8S49KP9oSJnmawSmVEaAIAdOSPMEUBI6eWy49sxYlPmuU-aikUWxI+7JCdtQgeIBERaFbikHuzVKDOkkYI9QAB1REdxhkQkjuwEQVb4DtMGRWm2qU4il1xOkdrrvI5UZzAimZiuMCPD7vkRZMEHUAswDABIyzg3cF4JczkSflgzROR8Ega3yAfEkStXXABBAEWhYT3QvGR7bk6lj6LHfGy9bvH0fuWG8YNLpg3QisQWUX-MEuV4S0fVT0fuQQCA9G5yzzzTgCAuGRYfxWXC8bXgDEGS6NfaEFxvi1dkjIOD5kBj6myLZMqMvvj4w9Y7vquqV3+Opg39cDfrH29H0ukfxxhmEgO0WLiD7jSohFn9qn4o4+7o616zpWrhi4AlwgxQEMy7aXaOp6p8qQHEhZxdgZjfbhoHZojYBcTz4fJ4Exo4GEHqC4FUgNp37H6CI+JEGUF8gwhkF0iLwdqQHRx+ynqJoQAAHjooHVJCimQ7aDh9rp7UCqDgC5RUDISdS5QCI65W4G7YA9x-AXBgygi0jm66767y44o04QJdaqjCAKhGhp5e7jQfKdSiDNKj5ezgT4JEAcA+QVasgMBmFZxczL6SJEYkR2HwxLgUAAD0i+ZhhgoguwGAvMG+Nh3IPhDhDGUE0w-Ao+1SURXyWc3Avhogg0EMiI8IUMLhHyA4QQqErEXhthSg9hfhjAZhUBXM3AWufUP8YkPk+REktRxRKRSgbADSOYFQHwDRkEzkDAQAA)

Greetings to All McArti0.

Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: Benedikt on 21:55, 15 May 24
Quote from: McArti0 on 21:29, 15 May 24Hardware patch converts OUT(c),0 [ED 71] to IN(c) [ED 70] next pushing 00 on the data bus and forcing RD Hi and WR Lo.  short circuit current ~2x20 mA CMOS outputs are very strong.

Correct The WR and RD signals should be gated.
Wouldn't it be possible to just put XORs in the /WR and /RD lines to selectively invert them?
Title: Re: Zilog Z84C0020PEG in my CPC not all works. PATCH and ALL WORKS.
Post by: McArti0 on 22:12, 15 May 24
@Benedikt
I didn't want to make an interface between the socket and the z80 at all costs. Fun for 80 pins.
Besides, in my micro fpga I have no free input left and only one gate.
I used SLG46826 because it has NVM configuration. I could probably fit everything in 46533 but there is OTP (PROM)

It is enough to confirm that OUT (C),0 is the only significant compatibility problem.
Title: Zilog Z84C0020PEG in my CPC - ALL WORKS!
Post by: McArti0 on 22:16, 16 May 24
PinballDream on Z84 CMOS.

https://youtu.be/UVNUD9qRbSI
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: Benedikt on 09:59, 30 May 24
While your hardware fix is remarkable, I am wondering about the feasibility of a hybrid fix:

What would happen if we replaced all occurrences of ED 71 in RAM with ED 70 and added a pull-down resistor network to the data bus?
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: McArti0 on 12:21, 30 May 24
Quote from: Benedikt on 09:59, 30 May 24added a pull-down resistor network to the data bus
less than 1.4 kOhm for TTL inputs to notice this as Lo. it is not good idea. 3.6mA for all Hi data signal.
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: andycadley on 12:36, 30 May 24
Quote from: Benedikt on 09:59, 30 May 24What would happen if we replaced all occurrences of ED 71 in RAM with ED 70 and added a pull-down resistor network to the data bus?
You'd have to know which ED 71 byte sequences were intended to be code and not just arbitrary data.
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: Benedikt on 16:41, 30 May 24
Quote from: McArti0 on 12:21, 30 May 24
Quote from: Benedikt on 09:59, 30 May 24added a pull-down resistor network to the data bus
less than 1.4 kOhm for TTL inputs to notice this as Lo. it is not good idea. 3.6mA for all Hi data signal.
In that case, only the two extremes are possible: Your hardware fix or a pure software fix.
A pure software fix could e.g. replace OUT (C),0 with RST 6. Memory mapping could obviously be an issue.

Quote from: andycadley on 12:36, 30 May 24
Quote from: Benedikt on 09:59, 30 May 24What would happen if we replaced all occurrences of ED 71 in RAM with ED 70 and added a pull-down resistor network to the data bus?
You'd have to know which ED 71 byte sequences were intended to be code and not just arbitrary data.
The risk is fortunately only 1/65536, because it is a two-byte sequence.
If the primitive, exhaustive approach turns out to be impractical, a more sophisticated option would involve code scanning.

On a side note, I find it a bit strange that Pinball Dreams even relies on OUT (C),0, considering that the port is from 2019 and that CMOS Z80s from Zilog had been around since 1985 and were the only ones still manufactured in 2019.
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: andycadley on 17:31, 30 May 24
Quote from: Benedikt on 16:41, 30 May 24The risk is fortunately only 1/65536, because it is a two-byte sequence.
If the primitive, exhaustive approach turns out to be impractical, a more sophisticated option would involve code scanning.

Well 1/65536 probably isn't great odds of you have 65536 bytes of RAM. Plus there are things like compressed code or even dynamic code modification etc.

Quote from: Benedikt on 16:41, 30 May 24On a side note, I find it a bit strange that Pinball Dreams even relies on OUT (C),0, considering that the port is from 2019 and that CMOS Z80s from Zilog had been around since 1985 and were the only ones still manufactured in 2019.

CMOS Z80s were never used in CPCs and the OUT(C),0 instruction saves not only a small amount of execution time but also potentially an entire register. It's not really very surprising that it will occur a lot in performance critical code.
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: McArti0 on 18:07, 30 May 24
@Benedikt @andycadley 

There is still the matter of replacing RD and WR in this situation, it is not known when. :D
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: McArti0 on 00:07, 20 September 24
HardwarePatch Z80 out(c),0 softcore version II (https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgjOCmC0AcIAYB0YBMBmMA2DWAsGeA7AngJxHggCsIe6NMYYAUGNQiNOVuJqlzzY+aRHRo0WqBJW5leaWJ2jU8ecKiXiAIlikzB8jUZVrjvddur7ZPPpq6r1YdA8t4bhhejOnnP9UsETzlvIl4-PnCdIhC7FzIBSISBS3Q4ozACdWTsnVQMhTVlJ3BinVZ2BlCyhHhuYSy6sXVaa3ZlIW9fdHRu9U4BNpYAd0FG-nHvB2CxhqLm+b4sTmCADy50Cj5qJPRqShdqWnVUdSIwAAs2Y82+vl9Uan6xa2lZfYEOnM-wZ-h1ABZVjvLioM5lPDKcHOf7iACSAHkAEoARU8Z04YCIDjAiXAOIBIG0YGgAGMAA5kjFQ8BYLR4r70ziWVDkqk0rFYVzgfHYHlpdnU0GYv6wZx86jimJCzl-e6M+UWYkIWUi2lZWDwRWaonaPBqgyirIavnlSzUQ2UY1bL58206LCyuYw2r1Y1Q+DBDqbellZ6+7XoaKDCTWOZ9IPRaC9MK8YKgmPSrIBpOwv3qADCABkANIseGbXZ-UhFr54AOrJDDRNEBUrZREZMNiohOsKKU5Juw6WstsKuHQbt-DPE9K1gelofJjiBYmxCcKLDCafOZfK7QJgxDgfF1d-Yvufsd+77qobt7b9t-aRcYfsW+WPS10suFZ35N9FkgHP5xdlHEP2cYhUhAJE0WPMoITPPIgVYbMuHpbVZ0QwDvjETgADMAEMABsAGdIAkYIEOgJC6RXLA0PXMQIBwgiiNoEjEK1JVUK+ah7ixEB6MI4iWFI8j2D3KiOOLbjeMYxABJY5C-TItC4VWHi8L4piZLI1j2GlBSOOlZTJP4wStJbXS6QQZSsNUqTgmRWSb2UHBYVvUMngsiyQFQatPO89AUGoMhSACvBlwQCguOrFg7KHV8v3Y5ZlNSdz3M8nz4yQBAfECrApQ4LYtRyshEEi6KhLyMysghUMOGS1KvN4LAUDqHKMFgPElCqYqniiu8FRA+KskA6rktcpB0tQZciDIMh0FgIgprILIyAGMbApG9aEFYAAnXqOynISUKxdyWB2ncO1vTTkJc8BjtO69z3sh6josk7doPJIDvEm6Xrugd5IOv1nuCX6Ox0g79O+4G3uwDzLvM5SwFu6GaLh7BhCBlgACM72LFxRBUKi6WXaSNiHIQ6U4xDgwp5UIQALXFTMAFsAHt8JYUnVCZBxoCeJdMHECEAAlsK2gATEZRcgAAdfCKWwgAXMlLllxEAFUABVZYACkzABKAAadZNgrCnZFQKaie-CEAFFtFli42BwO4XhjP1FFDMXIBwgBXXCFegXDIDFqhLIy1gAHNAw0LQ3e1CaBmk7AkhtR5mjQIwBC933-cD4PQ4w8OWCj3n09QExpHjrRVidpJFCgnJ67fT3vewv2A6DkOIDDzbRi4JvyvwB4Bj7sj-DMHkXDMWYQEngJZ6+YN408LEHRjRf8SfFfIWUSfzWJS9KCxPBWPXspWKPUEsU4iJJ5vnQtyPsUfj0udtAXAwuR5M-+VA7Rx0-nSWOk9mT5G3tiHmk9CStlBEPFI4BRDwKfFaEAcDyjMHLLSC0KC0FaUQSfPUBpKTCgMHA++GC2JBBwT2ZwiDOwymIZ4OB3IviIJYTodA1CgFYjYVoVkXCIHakQdAywpJGHsCKqvfEcCHQQFvIjDaL0xh72aHPEMfc94BhUV6G4kid6oOAhqTyQMNq6NogQgx59tTGMhqY5RHFSyaOXhI2i98yEKhsQoxRGixICDvqWb0AVXHSjIcmTxiilEL3hlE4SAhAl6N-pYxJciTHrR8XSE+MSWzxNoqA5hDJwkRPSdgIwIDMk5KxNAuB0CUm2LSfYgkE8mRGGCIWVG5V7p5E4MMCMuMKwRD5v6ZeLoAwpgGRCSqI9sbQERjseAWkiDlI0bFfEvx4Ez3QK+coazygbK2axHZrE9mwnuGs++xzn6z1xvQi5iS1nsNuaA+51dlnOGgWs6BGzcbvNxqAr5TItD3J5P8ukPIzn6Q0dc6UZyuKQo4qcvpRy4VWKuZgmuyi+m0jWQ6YIUdsWrNxpMGuGxMnYlgAICalTYAnE8qcWWaxZbIkgAAO0gPhbC+FZaolcBWDmmxXx1iKtwN5BBBbqEIvLLaisZb4QZggWWABleE2gbaywAEJqwVVjTymy5kL21IsnRYwLZfEWacaiLSzHGneQK3EhTvHGotbwE1GSdEuONE818oDaleLsZ5aimSXUwxru6jU7DNlrknvav1QaWxBuOHEq1Gp6ERsuT6iJM943FnjQEpN19TmvnIdG+p-qHHmvLJWPNKLU26ioPIjNVaTScBreg4tI0+5Bv6aWt00lHXlmaEGpeScgk2lWSsr4bbkodrQvPQd6jCxzzMIO6exVhidV5hM8qA8qqz1eMXfuuI4ozMPSu42pgIDYDmibbUWBApipAAqlmmElYsy2jKgAbpALa+EACWLNmWy3hPCFgLM6BFW7nQZgEAmIZXchQHKOAmJUF-CBug3EWRhXgDBiDSVd3AlQ9QC9YhIwkGIrBiy8HnhPFoiAAA9OBdEoHSUtCg2R5KlHEM0e0AAQQ1tx1Dt6C5rDaptIYxV2PhCo0hlatAZlYAakVBgyBkrkGmmp9TGn4yoK08gWTeIIDyd3cp9yZwhBQk45wOmNtkSIjtiwIAA)

Better work with interrupt. Not mask input vector at MODE 2 when last opcode is 71h - LD (HL),C
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: Benedikt on 18:43, 20 September 24
I am curious: Would this still work if M1 and IORQ were latched on a clock pulse/edge?
If so, this could also work with a slightly more period-accurate ATF16V8 GAL controlling the bus transceivers.
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: McArti0 on 20:41, 20 September 24
Quote from: Benedikt on 18:43, 20 September 24I am curious: Would this still work if...
https://www.falstad.com/circuit/circuitjs.html

is free for all !!! :)
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: BSC on 22:31, 20 September 24
Quote from: Benedikt on 16:41, 30 May 24What would happen if we replaced all occurrences of ED 71 in RAM with ED 70 and added a pull-down resistor network to the data bus?
You would break all code which uses ld (hl),c (&71) after an instruction that uses &ed as an operand, for example ld a,&ed -> &3e,&ed.

You would also break all code which happens to jump to (jp or call), load from or store data at &71ed, like ld a,(&71ed).

You would probably also break more code of which I am too lazy to think about.

And you would invalidate all data which happens to contain a sequence of &ed &71 for whatever reason.
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: McArti0 on 21:52, 21 March 25
1kOhm works and reduces the nRD and nWR surge current from 38mA to 3.8mA
This mod allows the CMOS OUT (C),0 Hardware patch to be safely mounted in the MX4.
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: McArti0 on 10:11, 22 March 25
 retro makeshift and on Scope
Title: Re: Zilog Z84C0020PEG in my CPC not all works.
Post by: McArti0 on 20:18, 25 March 25
Quote from: McArti0 on 21:52, 21 March 251kOhm works and reduces the nRD and nWR surge current from 38mA to 3.8mA
But to turn on PinballDreams 2019 you need 680 Ohm resistors  (5,6mA) !!!
Powered by SMFPacks Menu Editor Mod