OldComp.cz

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


Právě je 28.03.2024, 11:20

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




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 18 ]  Přejít na stránku Předchozí  1, 2
Autor Zpráva
PříspěvekNapsal: 05.11.2015, 09:19 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
tomascz píše:
Jak píšou na straně 202 Komentovaného výpisu ZX Rom, "Je zajímavé, že registrový pár IY je znovu nastaven na svou původní hodnotu po návratu přes STACK-BC, ale důležitý ukazatel na poslední literál, který je v H’L‘, obnoven není. Proto pro úspěšný návrat do BASICu musí zrcadlové HL obsahovat adresu instrukce "end-calc" v podprogramu SCANNING, která je na adrese #2758."
Ano, je to jedna z chyb v romke. Register IY sa pouziva na adresaciu systemoviek, preto musi byt nastaveny na #5C3A. Autori romky nezabudli na moznost ze ho uzivatel zmeni a nevrati nazad, preto hned ako uplne prva instrukcia v romke sa vykona prave to LD IY,#5C3A. Ale popritom uplne zabudli na HL' - asi ich nenapadlo, ze uzivatelsky program moze urobit aj EXX. :shrug:
tomascz píše:
Jj, normálně bych to udělal stejně, ale chtěl jsem mít zdrojáky křišťálově čisté ;-)
Ja si zase pod pojmom krystalovo cisty zdrojak predstavujem nieco kde nie su rozne do oci bijuce neefektivity tohto typu :poke: :lol:


Nahoru
 Profil  
 
PříspěvekNapsal: 05.11.2015, 10:51 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
tomascz píše:
mborik128 píše:
tomascz píše:
Jj, normálně bych to udělal stejně, ale chtěl jsem mít zdrojáky křišťálově čisté ;-)
To je nejaky zvlastny typ trollingu? :scratched:
Dobře, tak mohl jsem použít ozačení "zdroják jasný naprosto každému", ale grossův výrok mi přišel podobně vhodný, navíc i mírně vtipný :-)
Existuje niekto, komu je jasne ld a,255 : ld (iy+0),a ale ma problem pochopit ld (iy+0),255 ??? :?: :shock:


Nahoru
 Profil  
 
PříspěvekNapsal: 05.11.2015, 12:02 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 08.07.2013, 00:28
Příspěvky: 1554
Has thanked: 485 times
Been thanked: 634 times
No, já už bych možná zbytečnou debatu ukončil a řeknu jen, že konkrétně u těchto dvou zmiňovaných instrukcí byl můj původní záměr opravdu mít hodnotu 255 jak na adrese (IY+0), tak v akumulátoru - jednoduše proto, že se mi nechtělo bádat, jestli rutina v ROMce testuje akumulátor nebo (IY+0). Proto tedy nebyla použita přímo instrukce "Ld (IY+N),M". Žel bohu pro získání "Ok, 0:1" nezabírala ani jedna varianta - až ta třetí s HL' a Exx...
Kombinace Call a Ret je samozřejmě jasně zdrcnutelná do JP, resp. JR. Protože ale se ptám v sekci "ZX Spectrum začátečníci", bral jsem ohled na to, že Ret na konci rutiny je pro každého jasnějším signálem jejího konce než JP.
Tím bych tedy debatu ukončil. Získání celého kladného čísla jsem nakonec vyrobil kombinací všech zde zmíněných postupů, tj. svého (filtrování kláves 0-9), busyho (buffrování vstupu) a Val (kalkulátor). Případ Val(""), který opět produkuje Nonsense, řeším tím, že jako prvním znakem v buffru je natvrdo znak nula a uživatelův ciferný text začíná až na pozici "Buffer+1" - příkaz Val(Buffer) tedy vždy vyhodnotí minimálně text "0" (signál nesmyslu v oboru celých kladných čísel). Mohl bych testovat rovnou, jestli délka vstupního řetězce je nulová, ale to je věcí konečné optimalizace - aktuálně řeším další věci.
Zpracování chyb (tj. odchytávání výjimek jak poradil busy) tedy momentálně nevyužívám - bude se ale hodit pro odchytávání výjimek produkovaných MDOSem v utilitě, na které teď dělám.

_________________
より良い競争相手からソフトウェアを購入する (。◕‿‿◕。)
Ďábel se skrývá v detailu (staré technické rčení)


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ů: 18 ]  Přejít na stránku Předchozí  1, 2

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 2 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