Led 022005
 

Pro všechny naše příklady a úkoly budeme potřebovat nějak přeložit zdrojový text do spustitelné podoby. Vzhledem k tomu, že se dnes již nepoužívá metoda programování přímo na speccy, i my se budeme učit používat PC (Pomocný Computer).

Nejprve budeme potřebovat nějaký slušný textový editor. Na Linuxu je jich spousty, pro začátek stačí Kate, Kwrite nebo obyčejný mc. Windows uživatelé musí nejprve stahnout něco normálního, notepad se dá přinejhorším použít.

Pak musíme stáhnout vlastní překladač. Tady používáme AS (http://john.ccac.rwth-aachen.de:8000/as/index.html). AS vyprodukuje soubor s binárním obsahem, takže ještě musíme mít program bin2tap (http://zeroteam.sk/utils.html).

Nakonec potřebujeme slušný emulátor, na kterém si přeložený kód vyzkoušíme. Pro Windows znám jen RealSpec a pro Linux se zdá býti slušný Fuse, ale RealSpecu nešahá ani po kolena, bohužel.

Soubory se zdrojovými texty ukládáme s příponou a80, na začátek textu vkládáme toto:

          cpu  z80undoc
          relaxed on

První direktiva oznámí překladači, jaký je použitý jazyk (překladač umí více jazyků) a druhý umožní používat pro zápis hexa a binárních čísel něco podobného jako PROMETHEUS (toto se hodí hlavně při převodu zdrojáků z PROMETHEA do ASu):

      ld   hl,$25AB      ;hexa číslo
      ld   a,%10101010   ;binární číslo
      ld   a,@15         ;osmičkové číslo

Jinak lze pro zápis čísel použít tyto syntaxe:

      ld   hl,10000        ;dekadicky
      ld   de,25ABh        ;hexadecimálně
      ld   a,1001b         ;binární zápis
      ld   b,15o           ;osmičková soustava

Další odlišnost od PROMETHEA je zápis retězců:

      db  "Text1"         ;normální text
      db  "Text",'a'+128  ;text s posledním invertovaným znakem

      db  'A'             ;pouze jeden znak
      dw  65535           ;16 bitové číslo
      db  255             ;8 bitové číslo
      ds  16              ;definuje prostor 16 bytů

Zdrojový kód přeložíme příkazem takto:

  • Linux: asl soubor.a80 -L -E soubor.err
  • Windows: as soubor.a80 -L -E soubor.err

Toto vyprodukuje soubor s koncovkou .p, ze kterého je třeba vyrobit binárku:

  • Linux: p2bin soubor.p -r $-$
  • Windows: p2bin soubor.p -r $-$

Z binárky vyrobíme pomocí bin2tap TAPku už se zaváděcím Basicem, abychom si ušetřili práci:

  • Linux i windows: bin2tap soubor.bin -a adresa_zacatku -b

Pak už jen nasměrujeme emulátor na výslednou TAPku a sledujeme výplod naší usilovné práce.

Za domácu úlohu si skúste preložiť nasledujúci text:

sum.a80:

      cpu z80undoc
      relaxed on

MAIN  ld  a,h
      and 31
      ld  h,a
      ld  de,16384
      ld  bc,6144
      ldir
      ld  a,191
      in  a,(254)
      rra
      jr  c,MAIN
      ret

Tiež si vyskúšajte zapísať čísla v rôznych číselných sústavách, zapísať chybné čísla (napríklad 16384 nahraďte 16i) alebo chybné inštrukcie (ldir zameňte za ldiruj) a sledujte chybové hlásenia.

  21 komentáre na “0.díl: příprava assembleru”

  1. je to astraal masaker; mb-maniax supports seriál !!!

  2. Jen tak dal … tesim se na dalsi dily 🙂

  3. Pro Linux jsem si připravil krátký skript, co ze zdrojového textu vygeneruje TAPku i se zaváděcím Basicem:

    #!/bin/sh

    asl $1.a80 -L -E $1.err

    p2bin $1.p -r $-$ -l 0

    if [ "$3" = "" ]

    then

    bin2tap $1.bin -o $1.tap -b -a $2 -c $(($2-1)) -r $2

    else

    bin2tap $1.bin -o $1.tap -b -a $2 -c $3 -r $2

    fi

    rm -f $1.p $1.bin

    První parametr je název zdrojáku bez přípony a druhý je startovní adresa, třetí parametr je nepovinný a je to adresa pro CLEAR. Pokud nebude zadán, bude adresa vypočítána (2.parametr-1).

    příklad: makebas test 25000 nebo makebas test 25000 24575.

  4. domacu ulohu uz mate odskusanu?

  5. Super vec. Preco je koniec (Domaca uloha) v slovenskom jazyku, ked ostatny clanok je v cestine?

  6. odskusam, nastudujem a vratim sa s vysledkami. Sweet, dik za clanok, mantaci ako ja to potrebuju!

  7. domaca uloha je v slovencine preto, lebo som ju pisal ja. serial pripravuje Sweet a ja s nim spolupracujem.

  8. Tak jsem to odzkousel, ukazal babicce, vsem sousedkam, jednomu bezdomovcovi pred barakem (vyzral mi kokot flasku rumu) a vsem se to libilo 🙂 tesim se na dalsi priklady 🙂

  9. Tak doufam, ze ukazujes babicce, vsem sousedkam, jednomu bezdomovcovi pred barakem vsechny ostatni dily, kdyz se jim to tak libi.

  10. Chlapi, to snad nemyslíte vážně. Zkoušet programovat spektrum na emulátoru? To je jako honit si péro u časopisu, žrát jogurt bez tuku nebo chlemtat kafe bez kofeinu. Styďte se.

    Skočte si k babičce na půdu, opraště Merkura nbo Oravan (barevnej) zapněte ZX, loudněte (zásadně z magneťáku, běda jak někdo použije flašku) GENS a MONS, a tak po týdnu probdělých večerů můžete mluvit o tom, že jste začali programovat ZX. :)))))))

  11. 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

  12. 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 ? 🙂

  13. 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 !!!

  14. 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 🙂

  15. 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

  16. Nebudes zatracen, protoze nam as nevymlouvas. Neprikazujes nam nahravat z tape.

    sweet of ci5

  17. Mno tak hlásím, že úkol konečně splněn. (více než po roce, haňba na mne!)

  18. teda napsat sem prispevek je peklo, porad to pise, ze je vyhodnocen jako spam! 🙂

  19. [18] Napiš mi, ať přijdem na slovo, které nám tam hapruje.

  20. mam takovej dotaz 😉

    bin2tap soubor.bin -a adresa_zacatku -b

    jak poznat co mam zadat misto_adresa zacatek?

    dik

  21. 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.

Je nám líto, ale formulář pro přidávání komentářů je momentálně uzavřen.