OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 19.04.2024, 23:23

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 5 ] 
Autor Zpráva
 Předmět příspěvku: Softwarová detecke typu ZX rom
PříspěvekNapsal: 05.01.2015, 23:08 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1614
Has thanked: 31 times
Been thanked: 357 times
Nedávno se mě autor Esxdosu ptal, jestli nevím o nějaké rutině detekující typ ZX romky. O ničem takovém nevím, inu tak jsem se úkolu ujal sám. Úkolem bylo napsat pokud možno co nejkratší rutinu, která vrátí typ romky. V době, kdy se detekce spouští, je nastavený USR0 režim se 48rom (OUT 8189,4 + OUT 32765,16). Ušetřit by se dalo tím, pokud by šlo romku rozpoznat jen z aktuálně nastavené romky a bez jakéhokoli dalšího stránkování. Vzal jsem ty nejběžnější originální typy romek a vykradl z nich 16kB část se 48basicem. Pak už jen probíhalo dlouhé porovnánání obsahu jednotlivých binárek. A jak jsem zjistil, opravdu se u každého typu romky liší i blok se 48rom. Napsal jsem tedy celkem krátkou rutinu, ale k odzkoušení už nedošlo. Přesto věřím, že fungovat bude.

Rutina detekuje:
ZX 48 rom
ZX 128 rom
ZX 128+2 rom english
ZX 128+2 rom spanish
ZX 128+2 rom french
ZX 128+3 rom v4.0 eng
ZX 128+3 rom v4.0 spanish
ZX 128+3 rom v4.1

Ale asi lepší řešení by bylo udělat kontrolní součet a podle výsledku označit rom.

Ale když už jsem se s tím psal, tak tady je:

Kód:
Here is small routine for detect zx rom type from 48basic rom. Not tested...
I compare 48rom pages from all original zx roms. Only original ZX Spectrum 48 contain byte #BF at address (#004B). If byte is different, then it's not Spectrum48...
Next test detect +2A/+3 models(roms). On all +3 roms are at address (#0013 and #0014) different bytes than #FF...
Last test detect ZX128 and all +2 roms at address (#09AC).
Routine return value B=0-7 for ZX model/rom type or B=255 for unknown model. Routine is small, but detection will correct only on original ZX roms. On modified ZX roms can be all different....
 
        LD      BC,#1FFD
        LD      A,#4
        OUT     (C),A
        LD      B,#7F
        LD      A,#10
        OUT     (C),A
       
        LD      B,0
       
        LD      A,(#4B)
        CP      #BF
        RET     Z  ;B=0 FOR ZX48ROM
       
        INC     B
        LD      A,(#13)
        CP      #A7
        RET     Z  ;B=1 FOR ZX128+3_V40_ENGLISH
       
        INC     B
        LD      A,(#14)
        CP      #FC
        RET     Z  ;B=2 FOR ZX128+3_V40_SPANISH
        INC     B
        CP      #15
        RET     Z  ;B=3 FOR ZX123+3_V41
       
        INC     B
        LD      A,(#9AC)
        CP      #2C
        RET     Z  ;B=4 FOR ZX128_ORIGINAL
        INC     B
        CP      #26
        RET     Z  ;B=5 FOR ZX128+2_ENGLISH
        INC     B
        CP      #43
        RET     Z  ;B=6 FOR ZX128+2_FRENCH
        INC     B
        CP      #79
        RET     Z  ;B=7 FOR ZX128+2_SPANISH
       
        LD      B,255
        RET        ;B=255 FOR UNKNOWN ROM

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Softwarová detecke typu ZX rom
PříspěvekNapsal: 10.01.2015, 14:27 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1614
Has thanked: 31 times
Been thanked: 357 times
Rutina je uz odzkousena a funguje dobre. V TAP i se zdrojakem je zde:

http://www.worldofspectrum.org/forums/showthread.php?p=812238#post812238

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Softwarová detecke typu ZX rom
PříspěvekNapsal: 10.01.2015, 15:00 
Offline
Pan Generální
Uživatelský avatar

Registrován: 11.06.2013, 15:27
Příspěvky: 3053
Has thanked: 2202 times
Been thanked: 905 times
S OpenSE ROM asi ESXDOS funguje, a jak s Plus3e?

http://sourceforge.net/projects/sebasic ... E%20BASIC/
http://www.retrowiki.es/fororw/viewtopic.php?t=30630

http://www.worldofspectrum.org/zxplus3e/

Dalsi dobre romky na test :-)

http://busy.speccy.cz/tvorba/bsrom.htm

http://mdfs.net/Software/Spectrum/Harston/

http://www.wearmouth.demon.co.uk/SEA/seach.htm

http://k1.spdns.de/Vintage/Sinclair/82/ ... ollier%29/

_________________
// na co myslím, když sedím u oldkompů: režim


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Softwarová detecke typu ZX rom
PříspěvekNapsal: 10.01.2015, 16:38 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1614
Has thanked: 31 times
Been thanked: 357 times
SCjoe píše:


S jakyma romkama funguje esxdos odzkousene nemam. Minimalne s tema originalnima ze ZX jede vzdy. At uz je v ZX romka 64kB nebo 32kB ci 16kB, esxdosu je to fuk, protoze pri restartu/esetu vzdy spousti USR0 rezim s pristrankovanou 48rom a ta je treba konkretne u +3e uplne stejna jako v original +2A/+3. +3e rom ma upravene rutiny v jinych castech romky mimo 48rom, podle me +3 dos a syntax rom...

SCjoe píše:


Bohuzel je ESXDOS vazan na pevnych mapovacich bodech divide/divmmc, ktere jsou delane pouze pro 48rom (tak to tehdy Zilog udelal). Pro spravny beh systemu musi byt tedy pristrankovana 48rom at uz pracujeme na jakemkoli modelu ZX. To dela 128editor a ostatni +3 romky nepouzitelne(nebo pouzitelne s omezenim). Drive jsem upravil system FATWARE i pro 128rom. DIVIDE mapovani na 128romku neni stavene, ale s pomoci ruznych softwarovych patchu v systemu bylo mozne nakonec divide provozovat i na ZX128. Pro kazdou verzi 128 a +2 rom bylo ale nutne napsat samostatny software. Pro +2A a +3 romky je problem prakticky neresitelny bez uprav hardware divide nebo zx romky samotne. Nova verze esxdosu bude stale fungovat jen se 48rom, ale bude umet i nahravani pri aktivnim 128basicu. Prave proto je treba ta detekce romky, aby system mohl provest fast reset zx ram a vytvorit systemove promenne. TAP soubory pak bude mozne nahravat pri aktivnim 128 basicu. Nechapu proc to delaj, ale nektery novy software/hry nejde spustit z USR0 rezimu a vyzaduje 128basic.

Co je ruznych odvozenin 48romek tyce, tak jsem v emulatoru zkousel nejruznejsi modifikovane 48romky vcetne BS-ROM a detekovaci rutina vzdy pozna, ze jde o original 48 rom.

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Softwarová detecke typu ZX rom
PříspěvekNapsal: 10.01.2015, 17:31 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1614
Has thanked: 31 times
Been thanked: 357 times
Kdyz uz jsme u tech romek, tak mam doma upravenou 128rom pro praci s divide bez uprav. Jde o to, ze jsem ve zdrojaku 128editoru premistil nektere rutiny mimo mapovaci oblasti divide a do techto oblasti jsem premistil jen neskodne texty a tabulky, kde zadny kod nebezi. Takova romka muze v pohode pouzivat 128editor, aniz by se z toho system v divide zhroutil. A jeji 48basic je stale stejny, detekovatelny jako original 128rom.

Romku tam nenajdete, ale je tam TAPka, ktera original ZX128 romku napatchuje a ulozi na pasku jako pouzitelnou rom image 32kB.
http://www.worldofspectrum.org/forums/showthread.php?p=685394#post685394

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 5 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 6 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz