OldComp.cz
https://oldcomp.cz/

ZX Spectrum bez softwarového vybavení
https://oldcomp.cz/viewtopic.php?f=41&t=5485
Stránka 12

Autor:  azorasoft [ 06.08.2017, 18:55 ]
Předmět příspěvku:  ZX Spectrum bez softwarového vybavení

Chtěl jsem se zeptat. Když si představím ZX Spectrum bez software, tzn. celá pamět od adresy 0 po 65535 obsahuje samé nuly, co se přesně stane když takové Spectrum zapnu do el. sítě a jakými hardwarovými prvky je to dáno? Představuji si, že se nějak inicializuje CPU (automaticky nebo je přiveden nějaký signál na nějaký PIN ?) a ten začně vykonávat kód od adresy 0 směrem k vyšším adresám. To tedy znamená, že vykoná 65535 instrukcí NOP a co se stane potom? A jaké je např. defaultní nastavení registrů, např. SP tedy kde začíná defaultně zásobník atd.

Byl by někdo schopen toho nějak uceleně a jednoduše popsat?

Autor:  Kubik [ 06.08.2017, 19:11 ]
Předmět příspěvku:  Re: ZX Spectrum bez softwarového vybavení

Pokud by tam byly same nuly, tak to bude porad dokola vykonavat NOP - ackoliv nevim, jestli je defaultne zapnute preruseni. Pokud ano, tak to po case zabloudi.
Nicmene:
- pokud vytahnes ROMku, tak na sbernici budou patrne nahodne hodnoty pri cteni prvnich 16KB
- obsah RAM po zapnuti je nahodny, nikoliv 00

Jinymi slovy - neda se rict, co udela Speccy bez ROMky :)

Autor:  misticjoe [ 06.08.2017, 22:08 ]
Předmět příspěvku:  Re: ZX Spectrum bez softwarového vybavení

Nevim, zda budes chtit moji odpoved, bo to vezmu strany Amigy. Nejaky zakladni kus kodu tam byt musi - treba bootstrap, aby se alespon provedl LOAD, abys natahl program, ktery uz bude delat vse po svem. Ale stejne budes muset k hw pristupovat pres nejake sve rutiny. Nevim, zda je to na Spectru cesta k lepsim zitrkum. :) ;)

Autor:  azorasoft [ 07.08.2017, 00:25 ]
Předmět příspěvku:  Re: ZX Spectrum bez softwarového vybavení

No mě šlo spíš o to na jakou adresu se skáče po zapnutí počítače a jaké jsou inicializační podmínky ohledně procesoru. Kdybych si např. chtěl napsat úplně vlastní ROM. Nebo třeba Azorados :-). Mám jakési kódy hotové, ale když je nahraju do spodních 8 kB ROM a napálím do DivIDE tak to nejede.

Autor:  faraon [ 07.08.2017, 05:35 ]
Předmět příspěvku:  Re: ZX Spectrum bez softwarového vybavení

Nejasně si vzpomínám že při RESETu se vynuluje PC a povolí přerušení. Nic víc, ani SP se snad nemění, ten je potřeba nastavit softwarově, protože procesor nemůže vědět jak velká RAM je v počítači instalovaná a kde zásobník bude.
Takže procesor se rozeběhne od adresy 0000, a bude provádět jeden NOP za druhým až do prvního přerušení, kdy skočí na začátek paměti a pojede to znovu. Pokud mezi tím stihne projet celý adresní prostor až do konce, šestnáctibitový PC normálně přeteče a začne se zase od 0000.

Autor:  microlan [ 07.08.2017, 07:16 ]
Předmět příspěvku:  Re: ZX Spectrum bez softwarového vybavení

No ale, jak dorazí na adresu 16k kde je náhodný obsah ram, tak se může dít cokoli

Autor:  faraon [ 07.08.2017, 08:30 ]
Předmět příspěvku:  Re: ZX Spectrum bez softwarového vybavení

azorasoft píše:
celá pamět od adresy 0 po 65535 obsahuje samé nuly

Předpokládám že to má nějak zajištěné. Ale pokud by na datovou sběrnici nebylo připojeného vůbec nic, nebudou tam spíš samé 255?

Autor:  kelley12 [ 07.08.2017, 09:21 ]
Předmět příspěvku:  Re: ZX Spectrum bez softwarového vybavení

Po resetu se u Z80 vynuluje registr PC (=čitač programu), takže hledá první instrukci na adrese 0x0000h a všechno další se odvíjí podle toho, co na ní najde - pokud tam nenajde žádnou rozumnou instrukci, nebude se dít nic, CPU bude zmatený a nic to dělat nebude. Po resetu se taky Stack Pointer nastaví na 0xFFFFh a vynulují se registry A a F, zakáže se přerušení a nastaví se do módu 0 - to je definováno v dokumentaci k Z80. Co se bude dít, až PC narazí na adresu např. 16k, aby program "nevlezl" na vyšší adresy, záleží čistě na programátorovi (skok na začátek, smyčka, skok do podprogramu...). Stejně tak je už pak starost programátora, jaký bude obsah RAM při inicializaci mikropočítače, jestli ho nechá náhodný, nebo vynuluje nebo "vyefkuje", nebo něco jiného...

Autor:  Busy [ 07.08.2017, 09:34 ]
Předmět příspěvku:  Re: ZX Spectrum bez softwarového vybavení

azorasoft píše:
No mě šlo spíš o to na jakou adresu se skáče po zapnutí počítače a jaké jsou inicializační podmínky ohledně procesoru.

RTFM !!!

Vsetko je v oficialnej dokumentacii (Z80-CPU datasheet), len treba nebyt lenivy a precitat si to.
Signalom RESET procesor vynuluje registre PC, IFF0 a IFF1. To znamena, ze po skonceni aktivnej urovne signalu RESET procesor zacne vykonavat program od adresy 0 pricom prerusenie ma zakazane. Ak mas cely adresovy priestor 64kB zaplneny nulami, potom procesor stale dokola vykonava same NOPy az do nemoty. PC je normalny 16-bitovy registrer ako BC,DE,HL,SP,IX,IY... cize ak ma hodnotu #FFFF a inkrementne sa (po vykonani NOPu na adrese #FFFF) tak nadobudne hodnotu 0 a program normalne pokracuje od adresy 0 (*). Stavy ostatnych registrov su irelevantne pretoze kvoli samym nopom a zakazanemu preruseniu sa s ostatnymi registrami vobec nebude pracovat.
azorasoft píše:
Kdybych si např. chtěl napsat úplně vlastní ROM. Nebo třeba Azorados :-).
Nebol Azorados uz ako hotovy prezentovany na niektorom JHcone ?
azorasoft píše:
Mám jakési kódy hotové, ale když je nahraju do spodních 8 kB ROM a napálím do DivIDE tak to nejede.
Toto vyzera na chybu medzi stolickou a klavesnicou :) Skontroluj ci mas DivIDE spravne nastavene a za akych podmienok sa ti namapuje do dolnych 16kB namiesto romky, aby sa procesor vobec dostal k tvojmu kodu.

______________________________
(*) Poznamka pod ciarou: Pretecene registra PC sa bezne vyuziva v IM2 handleroch - do I sa nastavi hodnota napr. #3B, na adrese #3BFF je (v standartnych romkach) #FFFF cize pri preruseni CPU skoci na adresu #FFFF. Tu je nejaka instrukcia skoku, bud JR alebo JP. Ked CPU nacita operacny kod JR alebo JP, uplne normalne inkrementne register PC (PC bude mat nulovu hodnotu) a tak isto uplne normalne (cize z adresy 0 kedze PC ma nulovu hodnotu) nacita argument skokovej instrukcie a skoci na prislusne miesto. Na zaciatku romky je DI, XOR A co je #F3 #AF, cize JR #F3 skoci o kusok nazad, a JP #AFF3 skoci na adresu #AFF3.

Autor:  Busy [ 07.08.2017, 09:41 ]
Předmět příspěvku:  Re: ZX Spectrum bez softwarového vybavení

kelley12 píše:
Po resetu se u Z80 vynuluje registr PC (=čitač programu), takže hledá první instrukci na adrese 0x0000h a všechno další se odvíjí podle toho, co na ní najde - pokud tam nenajde žádnou rozumnou instrukci, nebude se dít nic, CPU bude zmatený a nic to dělat nebude.
;) :) :D :lol: Tak toto ma dostaloooooooo :jump: :P Zmeteny CPU, to je tak kraasne napisane ze doteraz ma boli branica :clap:

Ale k veci. Mas pravdu, ze resetom sa vynuluje PC a ze po resete CPU vykona prvu instrukciu na adrese 0.
Ale, ak sa teda mozem opytat, aky bajt, s akou hodnotou by mal CPU z tejto adresy nacitat, aby to nebola ziadna rozumna instrukcia a aby CPU bol z toho zmeteny, a aby sa tym padom dalej nedialo nic ? :poke:

Autor:  kelley12 [ 07.08.2017, 10:10 ]
Předmět příspěvku:  Re: ZX Spectrum bez softwarového vybavení

Pokud nebude na adrese 0000 nalezena žádná paměť, bude chování CPU zcela náhodné a nedefinova(tel)né. Nevím co je na tom k smíchu.

Autor:  Jiiira [ 07.08.2017, 10:11 ]
Předmět příspěvku:  Re: ZX Spectrum bez softwarového vybavení

Busy píše:
azorasoft píše:
No mě šlo spíš o to na jakou adresu se skáče po zapnutí počítače a jaké jsou inicializační podmínky ohledně procesoru.

RTFM !!!

Vsetko je v oficialnej dokumentacii (Z80-CPU datasheet), len treba nebyt lenivy a precitat si to.

Ano, od čtení dokumentace by měl začít. Už jen proto, že chtít s takovouto hloubkou nevědomosti psát (jakýkoli) OS, to je mission impossible. :roll:

Autor:  Busy [ 07.08.2017, 10:54 ]
Předmět příspěvku:  Re: ZX Spectrum bez softwarového vybavení

kelley12 píše:
Pokud nebude na adrese 0000 nalezena žádná paměť, bude chování CPU zcela náhodné a nedefinova(tel)né. Nevím co je na tom k smíchu.
K smiechu je to ze CPU bude zmeteny :) A ze sa nebude diat nic, rozhodne nie je pravda.

Tak isto nie je pravda, ze spravanie CPU bude nahodne a nedefinovane. CPU bude poctivo, presne podla specifikacie, vykonavat instrukcie ktore nacita z datovej zbernice. Spravanie CPU je teda deterministicke a presne dane. V pripade, ktory popisuje azorasoft (celá pamět od adresy 0 po 65535 obsahuje samé nuly) bude stale dokola vykonavat NOPy ako som pisal vyssie.

V pripade, ze na ZX Spektre nie je osadena romka, CPU z datovej zbernice nacita bud hodnotu #FF (lebo odpory o +5V) alebo bajt z videoramky ktory bol zrovna citany Ulou kvoli zobrazovaniu a tento bajt normalne regulerne vykona ako instrukciu. V pripade bajtov #FF (ktorych bude drviva vecsina) je to instrukcia RST #38, takze bude stale skakat na tuto adresu, pricom zasobnikom bude postupne dokola prepisovat celu ramku. V pripade nacitania hodnoty z videoramky vykona instrukciu danu obsahom videoram takze skakanie na #38 nebude kontinualne, ale bude prerusovane sporadickym vykonanim nejakej inej instrukcie.

A vznikne z toho krasny farebny flower-wall :joint:

Autor:  kelley12 [ 07.08.2017, 12:04 ]
Předmět příspěvku:  Re: ZX Spectrum bez softwarového vybavení

OK - beru... zanedbal jsem obvody okolo a myslel jsem jen holý procesor v luftě. Procesor bude od adresy 0000 dělat to, co mu nacpou okolní obvody (ULA a spol.) na datovou sběrnici, sohlasím.

Autor:  azorasoft [ 08.08.2017, 00:52 ]
Předmět příspěvku:  Re: ZX Spectrum bez softwarového vybavení

Citace:
Nebol Azorados uz ako hotovy prezentovany na niektorom JHcone ?


Byl. Ale to byl mborikuv fake.

Stránka 12 Všechny časy jsou v UTC + 1 hodina [ Letní čas ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/