Komentáře v rubrice: Assembler
Time to face the music armed with this great ionrfamtion.
zdá se že v tabulce chybějí "nedokumentované" instrukce :) jako třeba LD IXH,A, nebo divočiny typu LD C,SET 6,(IX+d) či strašidelný LD,C,SLA(IX+d) :)
Reti je totež jako napsat ei a pak ret ;-) ale asi se tim ušetří nějakej ten bajt...
pro KDE4 je stále stejná cesta k souboru.
Jasne ze se hodi, kdo si to ma po tech letech spani u PC pamatovat.
Nairamova je přeci jen trochu jiná.
Nakou takovou delal i nairam ne?
Už ji mám vytištěnou. Docela pěkná tabulka. Povědomá, někdy dříve už jsem se s ní musel potkat.
a ja mam zase Smultron pro OS X :)
Neprogramujem, ale moju jednorazovu potrebu pod Windowsom dobre splnil Syn Text Editor. A urcite existuje aj nieco lepsie. Kto chce najst, ten urcite aj najde :)
Díky za ten zvýrazňovač, jen jsem si ho přesunul do section="Assembler"...
Mimochodem PSPad je oproti Kate úplně hrozný...
Zdar.
Nechcem tu začať nejakú flame, len si dovolím nesúhlasiť s tvrdením, že na Win nie je žiadny použiteľný editor.
Ja Linuxom nevládnem, takže to samozrejme nemôžem zodpovedne porovnať, ale pre Win existuje, podľa môjho názoru, veľmi solídny "vývojársky" free editor PSPad http://www.pspad.com/ , ktorý poskytuje zvýrazňovanie syntaxe pre množstvo rôznych jazykov a samozrejme poskytuje aj možnosť vytvárať si vlastné zvýrazňovače, ktoré je možné zviazať s príslušným kompilátorom s nastavením chybového parsera.
Adresa zacatku je ta, kde ten kod zacina. Ve zdrojaku by melo byt oznaceno jako org. Pred vlastni zdrojak zadej org "adresa" a tu pak dej jako adresu zacatku.
mam takovej dotaz ;-)
bin2tap soubor.bin -a adresa_zacatku -b
jak poznat co mam zadat misto_adresa zacatek?
dik
[18] Napiš mi, ať přijdem na slovo, které nám tam hapruje.
teda napsat sem prispevek je peklo, porad to pise, ze je vyhodnocen jako spam! :)
Nuž, keďže to nemám ako vyskúšať a overiť, tak môžem iba teoreticky zauvažovať :-)
Rutinu GET_AKTPAR a jej volanie by som nahradil rutinou napr. GET_NEXTPART, ktorá by postupne prechádzala tabuľkou PART_TABLE a pripravila adresu ďalšieho oddielu z tabuľky (preskakovala by oddiely 252 a 253). Zaroveň by na tomto mieste začínala dalšia vonkajšia slučka, ktora by vlastne prechádzala cez všetky nájdené oddiely. Samozrejme, pred tým musí byť pomocou služby 4 pripravená počiatočná adresa PART_TABLE pre rutinu GET_NEXTPART.
V časti, kde sa pomocou služby 16 hľadá ďalší disk na aktuálnom oddieli a pri neúspechu skáče na návesie RETURN, by sa skočilo na začiatok novej slučky. Na navestie RETURN by sa skočilo, ak by rutina GET_NEXTPART prešla cez všetky oddiely.
Teda, prešli by sa všetky "platné" oddiely bez ohľadu na práve vybraný.
Tak to bola moja teoretická úvaha, snáď správna a zrozumiteľná .... :-)
Ahoj Romane. Děkuji ti za tvoje připomínky. A to myslím vážně, protože jsem nepředpokládal, že by snad někdo ten zdroják až takhle studoval. Velice mě to těší.
Ještě dodatek: chyby jsem tam nechal, laskavý čtenář si je případně opraví sám a může si zkusit třeba i něco navíc. Mě osobně by třeba zajímalo, jak by se laskavý čtenář vypořádal s problémem výběru jiného oddílu.
I napriek tomu, ze je to velmi dobre a pekne napisane, neodpustim si pripomienky podobneho razu ako v druhom pokracovani "serialu".
Rovnako ako na konci v minule spomenutej rutine COMPARE je nepotrebna instrukcia 'xor a', tak aj v rutine FIND_FILE su na konci zbytocne instrukcie 'ld a,e' a 'or a', kedze instrukcia 'add hl,de' neovplyvnuje Zero flag a instrukcia 'djnz xyz' neovplyvnuje ziadne flagy. Teda po neuspesnom hladani NEBUDE Zero priznak nastaveny, co sa od tejto rutiny ocakava.
Tak isto je navestie PATCH_RET zbytocne a aj prislusna instrukcia 'xor a', pretoze v tomto mieste je vdaka vysledku rutiny COMPARE a nasledujucim instrukciam, ktore flagy nemenia, priznak Zero uz nastaveny.
Tak snad ma neukamenujete... :-)
Jeste malickost - jde to udelat bez ztraty presnosti - misto odcitani stale puleneho totalu budeme odecitat porad ten samy total, ale dvojnasobit ten zbytek ;>.
Xor, su vůl, teď vidím podmínku - djnz - jasně, pokračuje se jen se z, netřeba nastavovat... aaachjo !
Tuhle poznámku jsem nepochopil - xor a na konci COMPARE je nutnost. jedna věc je ret nz (vrací se při nz) a druhá věc je xor a, ret, která se vrací se z. Nutné je právě proto, že incy nemění z.
To s tim CLS je ale pravda.
Pekneee. Uz ked som cital tvoj dokument popisujuci sluzby MDOS3, tak som vedel, ze takto sa k MDOSu mali postavit v Skalici. Je vidiet, ako jednoducha myslienka znacne sprehladni a zjednodusi vysledny kod. Uz mi chyba iba divIDE (alebo emulator, ktory ho regulerne podporuje :-), aby som sa vytesoval este viac.
Dovolim si ale dve poznamky, ktore usetria 2 byty :-) Podprogram CLS moze byt ukonceny 'jp PRINT'.
Podprogram COMPARE nepotrebuje na konci instrukciu 'xor a', kedze instrukcie 'inc de', 'inc hl' a 'djnz COMPARE' nemenia priznak Z (ak teda nie je potrebene mat v registri A nulu, samozrejme).
Tyjo, esli dobře chápu, tohle je live přenos z tvorby programu. Realtime rulez!
Jsem zvědav, jestli tu najdu i seznam nadávek pořízený ve chvíli, kdy program nefunguje tak, jak má :o)
Ahoj Dexi, jsem rád, že alespoň jednomu člověku moje rutina připadá zajímavá. To mě těší.
Cool!
Po delší době na webu opět něco kapku nového (aspoň pro mne) a zajímavého (aspoň pro mne)...
Mno tak hlásím, že úkol konečně splněn. (více než po roce, haňba na mne!)
A este chcem doplnit ze s vyuzitim prikazu PLOT x, y, cize som to mal ovela jednoduchsie nez s pouzitim POKE v BASICu.
Ja som si tiez spravil domacu ulohu o tej dvojnasobnej vyske znakov, ale v BASICu. To mna asi zabijete lebo to co tu pisem sem ani nepatri.
Pri hexadecimalnych cislach sa moze vyuzit vlastnost, ze kazda cislica zabera presne 4 bity (4 bity sa odborne nazyvaju nibel). Napriklad cislo 1EE7h bude v binarnom vyjadreni vyzerat ako:
0001 1110 1110 0111
Skuste vyuzit tuto vlastnost, rutinka na vypis takychto cisiel je velmi jednoducha. V podstate nou mozete vypisat lubovolne dlhe hexadecimalne cislo.
Podobne rutiny sa daju napisat na kazdu ciselnu sustavu so zakladom 2^x.
fakt se stydim; jeste jsem na to nesahl - zastrelte me...
...doprekladam pro sweeta co mam prelozit a pak MUSIM ukol udelat i kdybych nemel tyden spat, jist, vylucovat a tak vubec...
Xor, jsem debil.
Ja si nevsiml, ze cumim do nemaskovatelneho preruseni.
Ale stejne jsem ted z toho zmaten ako lesna vcelka.
Navrat z preruseni pres RETN?
To je nejaka specialita Assu, nebo mi uz hrabe a blbe si to pamatuju?
Ja bych se totiz vracel z preruseni pres RETI.
Fakt ted nevim...
dex of MB-Maniax
Nebudes zatracen, protoze nam as nevymlouvas. Neprikazujes nam nahravat z tape.
sweet of ci5
No tak, nebudte na nej zli.
Chtel jen rict, ze lepsi, nez pouzivat Ass, je kodovat rovnou na Spectru.
A vite prece, ze ani ja Ass nepouzivam - snad nebudu kvuli tomu zatracen :o)
dex of MB-Maniax
to zilogator: No jejda átributy za to můžou. A je to venku. Nebylo to nic tajnýho. :)))
P.S. ten refresh timming u 4116 platí 2ms. ;) To, že to museli u ZX očůrat na tom nic nemění. :))
Chytří kluci jste tady. :)
pospa: Dej si studeny obklad. normalni DRAM cipy vydrzi bez refreshe okolo 2 sekund, 2ms je ale hodne nizka hodnota, jaka ani v katalozich nebyvala.
Ostatne, refresh videoram navrhari zajistovali z CPU, v dobe neaktivni ULA, pokud sis nevsiml u Issue 1. Krom toho, v dobe vycitani obrazu existuje tedy 8ms pauza, kdy je ULA neaktivni, takze by take nerefreshovala, prohazeni/neprohazeni.
Skutecny duvod zprehazeni vuci ULA je page-read mode, kdy musi mit pixely pod atributem tutez ras adresu, jako atribut, aby se usetril jeden /RAS cyklus. To stale jeste ale neni duvod, protoze CPU mohl mit stejne permutovane adresy v MPLX. Duvodem zde byla snaha mit VRAM kompaktni, a strach z refreshe v dobe NEAKTIVNI ULA.
Btw. POSPA, pokud vis o HW hovnajs, nedrazdi kobru bosou nohou - prohazena VRAM ma z hlediska refreshe, prave diky zachovavani /RAS hodnoty, DALEKO VETSI PERIODU OBCERSTVOVANI, nez by mela bez nej. Takze tesne vedle, a priste se nehadej, pokud NIC nevis.
to zilogator: Aha, takže zase žádná odpověď. Už si zvykám. Místo toho jenom vytáčky, "psal jsem to na pandoře...". Ehm, tak potom si dejte do http://ci5.speccy.cz/index.hatlamatla link na tu pandóru a nemusíte se s tím tady zatěžovat.
Stačilo napsat třeba: "Ty ... každej přece ví, že videoram ZX Spectra je tvořena obvody dynamických RAM 4116 a ty potřebují refresh cyklus každé 2ms. Refresh je naadresování sedmi LSB bitů RAS t.j. 128 adres. Jak jinak to stihnout než přeskládáním adres mikrolinek videoram?"
Nebo je to supertajná informace? :))
Nebo to tady nikdo netuší?
V archívu dokumentací jsem našel všechno možné, ale cracker Trolera/Lamače jaksi jako by neexistoval. Doporučuji Vám se po tomto velmi elegantním kousku hw poohlédnout, stojí to za námahu. Možná budete mít potíž se sháněním jednoho vysoce sofistikovaného čipu. :) Nápověda: hledejte v časopise Sdělovací Technika druhé půli osmdesátých let. :)))
Komentář ke KEY-SCAN není úmyslně kvůli následujícímu sedmému dílu. Potřebuju poradit s domácím úkolem, abych vylepšené řešení vložil do MDOS3.
Taky zkus najít v příkladu ze 7.dílu chybu. Je tam a to taková, že je na první pohled zkušeného programátora vidět. Je to takový testík, který prověří, zda ty rutinky někdo zkusil pustit.
Pospa: Nejsi jedno velke, ale jen ucho. Psal jsem to na konferenci (pandora), pokud te to zajima. Ale mel jsem dojem, ze jsi si jisty v kramflecich, a ono ne, jak se zda...
sweet: "KEY_SCAN...uplny prepis rutiny z ROM...beztak stejne nevim jak funguje..." Potřebuješ snad s něčím poradit?
zilogator: povídej, jsem jedno velké ucho. Ale kopi mi prosímtě pošli do mejlu, mohlo by se stát, že to tady někdo smázne a já se nic nedozvím. ;)
POSPA: Chces to vysvetlit opravdu, ale opravdu do detailu? ;) Ale vesely, natoz moudry z toho nebudes, jak tak koukam.
Copak Cukrouši, nelíbil se ti můj přispěvek?
Mily pospo (nabo jak se to sklonuje), tvoje prirovnani programovani na ZX s jezenim nizkotucneho jogurtu je velmi z cestne. Jelikoz jezeni nizkotucnych jogurtu je ouplne na kokot a neprispiva to zdravi (nebot kazdej vi, ze spravne jidlo, ma bejt pripalene, tucne a plne cholesterolu), kdezto programovani na ZXku je velmi navykove a jedine a prave programovani.
To co jsi napsal beru spise jako ulet retardovaneho jedince a jedine co te zachranilo pred osobni navstevou me malickosti byl nasledujici prispevek ktery jsi napsal :-)
Vez ze ZX Spectrum je ten jediny a pravy pocitac.
Hawg domluvil jsem :)
ja, Kazatel Logout, pravy hlas Jedine a Vecne Symbiozy pravim: odstup Satane, jehoz jmeno budiz prokleto a zapomenuto, a neber nam vymozenosti doby, k nim ZX Spectrum diky sve Genialni Nesmrtelnosti evolvovalo ! CompactFlash jest Mediem Posvatnym, divIDE Zarizenim Jedinecnym a AS Nastrojem Bozim; Cokoliv co napomaha Developmentu Svatemu budiz Blahoreceno !!!
Ve vodě jseš ty. Ačkoliv nejsem hw guru, tuto informaci od Busyho jsem si zapamatoval. Jestli máš na věc jiný názor, tak si ho laskavě nech pro sebe a nepředváděj nám tady divadýlko.
to mikez:
1) Tvoji první větu jsem nepochopil. Opravdu.
2) Jestli ti někdo cokoli přikazuje proti tvé vůli, je to především věc vás dvou. Já Vám nic nepřikazoval.
3) Třetí věta mi taky nic neříká.
Shrnuto mi vychází obrázek o tobě jako nuly z nulotýmu.
to all:
Pokud můj příspěvek zde někoho urazil, omlouvám se. Příště se zdržím vulgarizmů. Snažil jsem se použít smajlíků pro zlehčení příspěvku.
Jsem velmi rád, že vidím žijící web o fenoménu ZX. Já sám jsem svoje první Spectrum postavil v roce 1987 o rok dřív to byl osmibit s I8080 vybavený mikrobasicem bratří Smutných. Rád bych vám zde přispěl, ale zásoby kazet s "úžasnými projekty" jsou nenávratně pryč, jediné co mi zbylo jsou zásoby HW: můj první ZX postavený na kopii desky Issue2, originál ZX48 s crackerem Lamač - Troler - Císař, PLUSko, 81 a nějaké díly. :)
Pokud budu k nějakému probíranému tématu něco vědět, ozvu se.
Omlouvám se za off topic.
P.S. nemáte (snad) někdo k okopírování komentovaný výpis MikroBasicu ? :)
Kdepák, samá voda. :)))
pospa: strasne rychlo sa odjeb do pyce. nemam rad totalitu, aby nam nejaky niemand prikazoval ako mame programovat.
a ked uz nahravat do zx, tak jedine klincom: http://www.zeroteam.sk/gfx/photos/kliniec.jpg