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.
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!)
most of problems are due to (i guess) OUT (C),0 undocumented opcode which was fixed (or reassigned) in later versions
OUT (C),0 is used in all optimized AY routines, so yes, that makes sense with the corrupted sound.
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
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/
Quote from: arnoldemu on 21:11, 06 January 16correct.
But I think nobody uses cmos.
Realy? :D
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.
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.
Quote from: Prodatron on 21:17, 24 April 24Quote 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.
Can you also test Relentless? (sound)
https://www.cpc-power.com/index.php?page=detail&onglet=dumps&num=10072
This?
Yes.
Quote from: McArti0 on 11:04, 25 April 24https://www.cpc-power.com/index.php?page=detail&onglet=dumps&num=10072
This?
Yes.
Quote from: VincentGR on 09:22, 25 April 24Can you also test Relentless? (sound)
GamePlay work. Sound noise (Intro and Game).
Thank you.
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.
Would be nice to know if this will work! Good luck! :) :) :)
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:
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.
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.
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?
@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.
PinballDream on Z84 CMOS.
https://youtu.be/UVNUD9qRbSI
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?
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.
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.
Quote from: McArti0 on 12:21, 30 May 24Quote 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 24Quote 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.
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.
@Benedikt @andycadley There is still the matter of replacing RD and WR in this situation, it is not known when. :D
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
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.
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 !!! :)
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.
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.
retro makeshift and on Scope
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) !!!