Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Игры (http://zx-pk.ru/forumdisplay.php?f=5)
-   -   RUSSIAN SOFTWARE and real ZX (http://zx-pk.ru/showthread.php?t=8656)

VELESOFT 19th October 2008 16:34

RUSSIAN SOFTWARE and real ZX
 
Russian ZX games is writed on russian ZX clones and support hardware feature TURBO OFF ( for ZX clone ZS SCORPION ). Russian ZX clone ZS SCORPION use software switching of TURBO cpu mode 3.5MHz and 7.0 MHz:
Read port #7FFD = CPU turbo 7MHz (turbo on)
Read port #1FFD = CPU run at 3.5MHz (turbo off)

Write only ports #7FFD and #1FFD is used on ZS SCORPION for memory paging and reading this ports is used for CPU TURBO mode switching.

On ZX Spectrum +2A and +3 is port #7FFD and #1FFD(with different functions) used too for memory paging. Read of this ports is not supported and CPU read data from floating bus ( value #FF ). Software TURBO switching routines for ZS SCORPION is on ZX+2A/+3 models ignored (without effect) and software run always at original ZX speed (3.5 MHz)

Problem with this russian software is on original ZX Spectrum 128 / +2 (grey) models. This computers contain hardware bug - after read port #7FFD will ZX crash (data from floating bus is writed to paging port).
Read port #7FFD = on ZX128/+2 write to paging port data from floating bus (can't be use)
Read port #1FFD = on ZX128/+2 write to paging port data from floating bus (can't be use)
ZX128/+2 use paging port #7FFD only. Hardware use incomplette port adressation (accept only A15=0 + A1=0 and port adress #1FFD is same as port #7FFD). If any russian software use read of port #7FFD of #1FFD, then real ZX128/+2 will crash. For fixed this problem you must remove instruction IN ?,(C) if BC=#1FFD or #7FFD.

This is critical routines ("?" = any register A,B,C,D,E,H,L):
LD BC,#1FFD
IN ?,(C)

LD BC,#7FFD
IN ?,(C)

LD A,#1F
IN A,(#FD)

LD A,#7F
IN A,(#FD)

If you remove this IN instructions from russian games/demos/utilities then will possible use this software also on ZX128/+2 and all other ZX models (+2A/+3 and russian ZX clones)

This is my fixed TAP version of Dizzy 'B' Treasure Island game with removed instruction IN A,(C). Version for all ZX128 models(ZX128/+2/+2A/+3/russian clones):
http://www.worldofspectrum.org/shows...sureIsland.gif
http://velesoft.speccy.cz/other/dizzy-b_fixed.zip

This is original release(crash on ZX128/+2):
http://www.worldofspectrum.org/infos...cgi?id=0015211

And this is my fixed TAP ( ! ! ! ) version of WALKER game:
http://velesoft.speccy.cz/kmouse/kmgames/walker-scr.gifhttp://velesoft.speccy.cz/kmouse/kmg...alker-game.gif
http://velesoft.speccy.cz/kmouse/kmg...emo-km.tap.zip

This is original release(crash on ZX128/+2):
http://www.worldofspectrum.org/infos...cgi?id=0013118

tmp_online 19th October 2008 17:00

Народ, о чем примерно идет речь? А то я ни-бум-бум в заморском...

TomCaT 19th October 2008 17:22

Won't I be impudent if I would translate this shortly?

Я наберусь наглости и кратко переведу.
Отечественные ZX игры пишутся на клонах и поддерживают аппаратное(?) TURBO выкл. Русский клон ZS SCORPION использует программное переключение TURBO cpu режима - 3.5МГц / 7.0 МГц:
Чтение порта #7FFD = CPU турбо 7MHz (turbo on)
Чтение порта #1FFD = CPU работает на 3.5MHz (turbo off)

Т.е. запись для управления страницами, а чтение для переключения скорости.

На ZX Spectrum +2A / +3 порты #7FFD и #1FFD тоже используются для управления страницами. Чтение не поддерживается, а CPU читает данные с висящей шины ( значение #FF ). Программное переключение игнорируется (без последствий), программа всегда работает на обычной ZX скорости (3.5 MHz).

Проблема с отечественными программами - на оригинальных ZX Spectrum 128 / +2 (серый) моделях. В этих компьютерах прячется аппаратный баг - после чтения порта #7FFD программа теряет работоспособность (данные с висящей шины ЗАПИСЫВАЮТСЯ в порт страниц).
Чтение и #7FFD, и #1FFD дает этот результат из-за неполной адресации порта (достаточно того, что A15=0 + A1=0), адреса этих портов одинаковы. Если отечественная программа читает #7FFD или #1FFD, то настоящие ZX128/+2 упадут. Для исправления проблемы следует убирать IN ?,(C) если BC=#1FFD или #7FFD.

Это критические куски ("?" = любой рег. общего назначения):
LD BC,#1FFD
IN ?,(C)

LD BC,#7FFD
IN ?,(C)

LD A,#1F
IN A,(#FD)

LD A,#7F
IN A,(#FD)

Если убирать эти INы из русских игр/дем/утилит/ их можно будет использовать на ZX128/+2. И на всех других оригинальных моделях (+2A/+3 и русских клонах(?) )

(дальше ссылки на фиксы)

VELESOFT 20th October 2008 00:39

problem with FAST and SLOW(contended) memory
 
Russian games/demos designed for ZX clones run on original ZX128 models with different speed and can crash. :v2_frown:

More ZX clones use fast access to contended(with ULA/videoram) memory. Original ZX Spectrum models use slow access to contended memory(ULA slow-down CPU).

adress space on original ZX128/+2(grey model): :v2_thumb:
#0000-#3FFF = zx rom (fast memory)
#4000-#7FFF = videoram 1 (slow memory contended with ula)
#8000-#BFFF = fast memory
#C000-#FFFF = memory paging area (pages 0,2,4,6 = fast / pages 1,3,5,7 = slow)
128kB memory = 64kB fast mem. + 64kB slow mem.

adress space on original ZX128+2A/+3: :v2_wacko:
#0000-#3FFF = zx rom (fast memory)
#4000-#7FFF = videoram 1 (slow memory contended with ula)
#8000-#BFFF = fast memory
#C000-#FFFF = memory paging area (pages 0,1,2,3 = fast / pages 4,5,6,7 = slow)
128kB memory = 64kB fast mem. + 64kB slow mem.

RESULT:
Different ZX128 models/clones use different layout of slow and fast memory pages !!! For example - Animation effect run in VERA game(in menu) incorrect on real ZX128/+2 (incorrect animations and problem with cursor).
http://velesoft.speccy.cz/other/vera.gif
Animation code work with slow memory pages. More russian demos use too slow(on real ZX) pages and crash. Any russian software work only on ZX128/+2 and other only on ZX128+2A/+3 because this models use different numbers of slow memory pages. Russian ZX clones use all memory pages fast and software work always correct at full speed. If coders will accept also memory layout for orig.ZX models, russian software can work too on this computers. Disk loader can detect type of used ZX model and load critical timing routines only to fast memory pages and other data to slow memory.

RESULT:
More russian games/demos can run on different ZX models only if you rewrite numbers of memory pages on instructions OUT (?),A (OUT #7FFD,xx). This is easy way for best compatibility. :v2_yahoo:

VELESOFT

rasmer 20th October 2008 01:17

Давно бы уже пора понять, что как делали под совковые клоны, так и будут делать...

Raydac 20th October 2008 01:35

Quote:

Originally Posted by VELESOFT (Post 159871)
Russian games/demos designed for ZX clones run on original ZX128 models with different speed and can crash.

It is a great information for us and thank you very much for your research.. but I think that it would be preferably to make a separated document about those differences and to collect all information into the document (which you can place in the network) else all information will be just lost..

Добавлено через 37 секунд
Quote:

Originally Posted by rasmer (Post 159880)
Давно бы уже пора понять, что как делали под совковые клоны, так и будут делать...

врядли он поймет что у нас воистину суверенный ZX-Spectrum :)

VELESOFT 20th October 2008 02:04

And bad value of I register(adress of IM2 table) causes on original ZX 128/+2 models raining(snow) effect in screen: :v2_crazy:
http://velesoft.speccy.cz/other/blackraven-raining.png

If russian software/demos will use I register in range #0-#3F or #80-#BF then software will run correct (without screen raining) on real ZX models.

VELESOFT

rasmer 20th October 2008 02:06

Да пойми ты наконец (а я прекрасно знаю, что русский ты понимаешь), что нам АБСОЛЮТНО ПАРАЛЛЕЛЬНО что у вас на "ваших спектрумах" что-то идёт нетак...

goodboy 20th October 2008 02:08

Quote:

Originally Posted by rasmer (Post 159890)
нам АБСОЛЮТНО ПАРАЛЛЕЛЬНО

кому-это нам ???

rasmer 20th October 2008 02:09

не заставляй отвечать на ТУПЫЕ вопросы...


All times are GMT +4. The time now is 12:04.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.