Oznámení

Sbalit
Aktuálně žádná oznámení.

Zpátky do škamen

Sbalit
X
 
  • Filtr
  • Čas
  • Zobrazit
Vymazat vše
new posts

    Zpátky do škamen

    Ahoj.
    Nejsem si jistý, jestli je vhodné něco takového sem psát, ale chtěl jsem se podělit o své krátké zkušenosti s programováním Amigy (té staré OCS/ECS) po dvaceti letech. Třeba se mé psaní bude hodit někomu, kdo by si chtěl také po dlouhé době zadovádět a naprogramovat si nějakou tu "demo" blbůstku. Nebo si připomenout staré časy. A nebo si to přečte někdo, kdo v assembleru na Amize nikdy neprogramoval, chtěl by si to vyzkoušet a hledá nějakou relativně snadnou a "bezbolestnou" cestu (rok 2020).

    Naposledy jsem programoval na Amize někdy kolem roku 1999/2000. Tehdy jsem s kamarády udělal krátké intro Ten.
    Krátce potom jsem svou Amigu prodal. V té době jsem už pracovně i soukromně několik let používal PC.
    Jelikož se ale loni sešla stará parta kolem skupiny Vectors a diskmagu Guru, přišel impuls připomenout si "staré dobré časy" našeho mládí a pokusit se udělat nějakou malou produkci pro další plánované setkání.
    Protože Amigu nemám a narychlo se těžko něco shání (nemluvě o ceně a nutnosti zajistit, aby vše pohodlně jelo), bylo mi jasné, že budu muset využít emulátor. A že si budu muset zase přečíst dokumentaci. Hodně dokumentace. K emulátoru, k zákaznickým čipům, k CPU 68000. Znovu si najít všechny informace. A všechno (skoro všechno) se znovu zase učit.

    Před 20 a více lety jsem programoval v legendárním ASMOne. Zjistil jsem, že poslední aktualizovaná verze je 1.48. Download ze stránek Coppershade.
    Bohužel ve WinUAE (nakonfigurovaném jako základní A1200 s 4MB fast RAM) mi při krátkých testech nefungoval dobře debugger. Photonův upravený ASMOne překřtěný na ASMTwo zase dokáže překládat pouze instrukce základní 68000. A v této rané fázi jsem si ještě nebyl jistý, jestli si práci trochu neulehčím a nesáhnu po 68020+. Naštěstí se ukázalo, že další klon - AsmPro 1.17 - funguje správně i v debuggeru, zvládá celou instrukční sadu všech 68k procesorů a navíc má jednoduchý syntax-highlighting. Bohužel jsem záhy zjistil, že psát delší program v jeho editoru je už nad mé síly.
    Po těch dlouhých letech jsem si až příliš zvykl na komfort práce v jiných operačních systémech, na možnost mít pohodlně vedle sebe otevřených více oken s více zdrojáky, mít systémový clipboard, vícenásobné undo/redo, vybírat blok textu směrovými klávesami, mít klávesové zkratky pro copy/cut/paste, na které jsem zvyklý... Prostě zvyk je železná košile. Ne že by to v emulátoru na Amize nějak nešlo, ale příliš často jsem sahal na nesprávné klávesy kdykoliv jsem chtěl s kursorem skočit na začátek nebo konec řádku, o stránku výš, nebo na začátek celého dokumentu. Pochopil jsem, že by to bylo trápení. Naštěstí existuje alternativa, o které se odvážím tvrdit, že je pro svátečního amigistu, jako jsem já, naprosto skvělá:
    Microsoft Visual Studio Code + Amiga-Assembly addon.

    VSCode je jednoduchý editor pro programátory od Microsoftu, který však s Visual Studiem sdílí jen část názvu. Je free, je open-source, je multiplatformní (Windows, MacOS, Linux) a neinstaluje se. Je plně konfigurovatelný a není vytvořen pro žádný specifický programovací jazyk. To umožňuje, aby k němu mohl být vytvořen addon Amiga-Assembly, který umožňuje několik věcí:
    • Integrace Motorola 68k assembleru (vasm) + linkeru (vlink)
    • Syntax highlighting (instrukce, operandy, symboly, čísla, komentáře, ...)
    • Integrace emulátoru (FS-UAE nebo WinUAE)
    • Debugging, trace, breakpoints, je možno se dívat na obsah registrů i paměti a na aktuální copper-list instrukce

    Instalace je snadná:
    1. Stáhnout VSCode
    2. Nakopírovat kamkoliv
    3. Přímo z VSCode nainstalovat addon Amiga-Assembly (případně se dá stáhnout a nainstalovat i externě)
    4. Ze stránek Amiga-Assembly stáhnou ukázkový projekt
    5. Otevřít projekt ve VSCode a programovat.
    Projekt s Amiga-Assembly je adresář, který obsahuje: *.code-workspace (nastavení assembleru a linkeru), adresář .vscode se souborem launch.json (obsahuje konfigurace pro spuštění a debugování výsledného programu v emulátoru) a adresář bin (obsahuje assembler, linker, emulátor).

    Jak to celé funguje?
    Addon zajistí (kromě podpůrných věcí jako je syntax-highlighting) tyto funkce:
    • Assembler vasm se spustí pokaždé, když se editovaný zdroják bude ukládat. Je možno se podívat, jestli vše proběhlo v pořádku, nebo se vyskytly nějaké chyby. Výsledkem assemblování je soubor *.o, který se standardně ukládá do adresáře build.
    • Linker vlink se spustí, pokud se vyžádá Build projektu -- buď tlačítkem, nebo v menu, nebo klávesovou zkratkou (konfigurovatelné). Build přeloží všechny zdrojáky (standardně vše *.s) v projektu, vytvoří objektové soubory *.o a všechny slinkuje dohromady a vzniklý standardní Amiga executable ve formátu amiga-hunk nakopíruje do adresáře s připraveným bootovatelným harddiskem -- dh0 se startup-sequence, která zajistí spuštění našeho programu.
    • F5 (případně tlačítko v levé liště nástrojů) spustí emulátor. Podle vybrané konfigurace jde buď o prosté spuštění a nebo spuštění s debuggerem. Podle konfigurace se použije buď FS-UAE nebo WinUAE (doporučují WinUAE). Při debugování je možné do programu vložit breakpointy, a v případě zastavení je možno program krokovat. Vše je zcela standardní tak, jak je zvyklý každý programátor (klávesy F5, Shift-F5, F10, F11, F9 pro různé funkce, viz. menu).

    Výhod oproti nativnímu programování přímo na Amize (nebo v emulátoru) je několik:
    • Obvyklé prostředí, na které je člověk už dlouhá léta zvyklý
    • Plně konfigurovatelný editor s obvyklými klávesovými zkratkami a funkcemi
    • Rychlost assembleru, linkeru, editoru.
    • Neexistence nutnosti rebootovat. Kdo si zavzpomíná na své nesystémové programování na Amize, tak si jistě vybaví i nutnost resetovat Amigu při každém pokusu a chybě v programu (protože ty byly obvykle fatální). To zde odpadá, protože každé spuštění nastartuje emulátor. To je však (podle vašeho počítače a nastavení) velmi rychlé.
    • Možnost debugovat a při tom vidět obraz na Amize. V případě nesystémového programování byl tohle docela problém. Buď jste viděli co copper-list právě zobrazuje, nebo jste viděli a debugovali váš kód (v případě zákazu přerušení však bylo i to problematické).
    • V případě použití WinUAE přístup k jeho skvělému debuggeru, který dokáže zobrazit přesné časování, využití DMA a aktivitu jednotlivých čipů. Taky podporuje simulaci printf funkce -- tedy možnost z vašeho nativního Amiga kódu vypisovat formátovaný text na výstup systému, ve kterém běží emulátor.
    A pak už nic nebrání tomu si něco velmi pohodlně na Amize naprogramovat. V případně nesystémového programování (přímo na železo) je samozřejmě nutné si přečíst Amiga Hardware Reference Manual. Skvělé jsou různé tipy a triky (a vůbec celá diskuze) na EAB (sekce Coders a nejlépe Coders.Asm/Hardware).
    Moc příjemné připomenutí si toho, jak se to celé kdysi programovalo, je k vidění na YT kanálu Photona/Scoopex.
    Ten v ukázkách používá svůj upravený ASMTwo přímo na Amize, takže je to i hezké porovnání způsobů práce. Odkaz na jeho web jsem tady už uvedl (Coppershade).
    Tady je dokumentace k instrukční sadě 68k i s časováním (pro základní 68000 je to snadné, časování u vyšších modelů je kvůli cache bohužel mnohem složitější).
    A v případě, že byste chtěli programovat něco v systému, nebo si práci trochu ulehčit ve standardním C/C++, je k dispozici skvělý addon Amiga C/C++ Compile, Debug & Profile od Bartmana/Abyss.

    Nevýhody oproti programování na Amize pod emulátorem mne po pravdě žádné nenapadají. Snad jedině pokud si někdo chce připomenout, jak se přesně vše ovládalo, pro ten pocit nostalgie. Srovnávat s programováním na skutečném železe z výše uvedených důvodů příliš nemůžu. Pocit nostalgie u skutečné Amigy a u skutečného PAL rozlišení (předpokládám pořádné demo-retro a tedy žádné RTG! 😉 ) je určitě ještě větší. Ale nakolik je to po tak dlouhé době strávené v mnohem pokročilejších editorech a prostředích dlouhodobě příjemné je diskutabilní. Já jsem se po osobní zkušenosti už nedokázal k ASMOne vrátit. Rozhodně ne k programování 14 zdrojáků se 150kB textu, z nichž se naše poslední produkce skládá.

    Byl jsem mile překvapen, jak je v současnosti snadné znovu naskočit zpátky k programování pro Amigu. Po své (sice ještě krátké) zkušenosti si troufnu tvrdit, že je to snažší než kdysi. Většina lidí v první polovině devadesátých let u nás k programování používala buď assembler ASMOne (a jeho odvozeniny Seka, Trash apod.) nebo DevPac. A z vyšších jazyků kromě Basiců bylo k systémovému programování asi nejlepší jen SAS/C (dříve jako Aztec nebo Lattice). Ten byl schopen do určité míry překládat i C++ kód, ale byl velmi pomalý. Později pak ještě přišlo StormC, které mělo i své IDE, ale s tím jsem už neměl osobní zkušenost.
    Nejsem si jistý, jestli se situace na staré Amize od té doby nějak zlepšíla. Zejména co se týče C++ překladačů. Použití addonů do VSCode a programování v externím prostředí tak může být velmi zajímavá varianta i pro systémové programátory. Ale to musí posoudit někdo jiný. Mé zájmy končí u zákaznických čipů OCS/ECS/AGA, nesystémového programování (kompletní převzetí přerušení a zobrazování) a assembleru. VSCode+Amiga-Assembly+WinUAE k tomu stačí.
    Naposledy upravil Defor; 24.11.2020, 14:12:23.

    #2
    Já používám Asm-Pro, jen verzi 1.18 Určitě co píšeš má opodstatnění. I tak zatím používám tenhle editor pod emulací. Mám ho i na A1200, tu ale zapínám málokdy na nějaké závěrečné testy toho co naprogramuji. Práce s bloky textu mi fungují Amiga+C, Amiga+V, Označení bloku textu Amiga+B. Emulace se někdy kousne=guru, ale jedná se o závazné chyby, které jsou alespoň zatím u mně méně časté. Programuji nesystémově. Restart emulace je dle mne celkem svižný. Debugger na celý kód nepoužívám. Jen když si chci být jistý nějakou instrukcí tak ji zahrnu do krátkého vedlejšího kódu a tam si ji otestuji. Ten degugger se i tak seká v rámci trasování u většího programu, alespoň mně. Já se již naučil trasovat můj kód pohledem. S obrazem nedělám tak uvidím. Zatím jen Paula a instrukce. Hledám chybu i tak, že vkládám nějakou instrukci na různé části kódu a odsleduji si, kde se chyba vyskytne. U práci se zvukem to jde takhle celkem dělat. Ostatní uvidím. Ono i tak stravim minimálně polovinu času přemýšlením jak co dám dohromady vůči programování, nebo hledání chyby v programu.

    A jinak zdar, hlásí se lama v ASM
    Amiga - PMD 85

    Komentovat


      #3
      Co se tyce Ccka tak tu mame uz mnoho let GCC a to az do verze 8.3 myslim a nebo VBCC. Oboji lze pouzit jak na realnem zeleze (ale tedy s HD a vice pameti) nebo jako cross compiler, podobne jako pouzivas vasm...

      BTW #1 StormC V4 uz pouzivalo StormGCC compiler
      BTW #2 Na systemove programovani byl pouzitelny i BlitzBasic (ten se take stale vyviji)
      BTW #3 Jeste se tu pouzivalo i Ecko.

      Komentovat


        #4
        Ono k programování na skutečném železe je ještě potřeba dodat, že Amiga má klávesnici s podivnou ergonomií a kdo je zvyklý na běžnou PC klávesku, která má odezvu stisknuté klávesy, tak na Amize psát moc dlouho nevydrží. To sice může vyřešit nová klávesnice od Kippera, jenže stojí 200 dolarů.
        "Venku leje. Naimpregnuju si hlavu pivem." (Červ, 2023)

        Komentovat


          #5
          Autorem citovaného textu je ExiE Přejít na původní příspěvek
          Co se tyce Ccka tak tu mame uz mnoho let GCC a to az do verze 8.3 myslim a nebo VBCC. Oboji lze pouzit jak na realnem zeleze (ale tedy s HD a vice pameti) nebo jako cross compiler, podobne jako pouzivas vasm...

          BTW #1 StormC V4 uz pouzivalo StormGCC compiler
          BTW #2 Na systemove programovani byl pouzitelny i BlitzBasic (ten se take stale vyviji)
          BTW #3 Jeste se tu pouzivalo i Ecko.
          Dík za doplnění.
          Když jsem si něco málo o céčku na současné Amize četl (nebyl to můj cíl, přece jen mě zajímá víc assembler) nabyl jsem dojmu, že u klasických 68k Amig se gcc používá spíše cross-platform, protože překlad na reálné Amize už je přece jen pomalý. Ale osobně to neznám. Bartmanův vscode addon používá gcc10, takže pro zájemce určitě stojí za vyzkoušení.
          Na vbcc jsem taky narazil. Asi proto že je od stejného autora jako vasm. Dokonce i autor Amiga-Assembly udělal pokusně addon, který tenhle překladač integruje do vscode, podobně jako vasm. Bohužel vbcc je pouze ANSI-C, což může být pro někoho zvyklého na C++ problém. Ale aspoň je velmi rychlý (opět, osobně nemám zkušenosti).
          Předpokládám, že situace je zcela odlišná na PPC Amigách a těch různých nových OS.Ale to je pro mne úplná španělská vesnice.

          P.S.: Pro mne je to taková pěkná nostalgie. Pamatuju si, že v devadesátých letech jsem chtěl (a potřeboval) programovat na Amize v céčku. Ale chtěl jsem i nějaký debugger. V té době ho mělo prakticky jen SAS/C. Měl jsem vše nějak nakonfigurované společně s GoldEdem a byl jsem velmi spokojený. Prostě hezké vzpomínky. Až později přišlo StormC. Ale to jsem už Amigu nepoužíval.

          Komentovat


            #6
            Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
            Já používám Asm-Pro, jen verzi 1.18 Určitě co píšeš má opodstatnění. I tak zatím používám tenhle editor pod emulací. Mám ho i na A1200, tu ale zapínám málokdy na nějaké závěrečné testy toho co naprogramuji. Práce s bloky textu mi fungují Amiga+C, Amiga+V, Označení bloku textu Amiga+B. Emulace se někdy kousne=guru, ale jedná se o závazné chyby, které jsou alespoň zatím u mně méně časté. Programuji nesystémově. Restart emulace je dle mne celkem svižný. Debugger na celý kód nepoužívám. Jen když si chci být jistý nějakou instrukcí tak ji zahrnu do krátkého vedlejšího kódu a tam si ji otestuji. Ten degugger se i tak seká v rámci trasování u většího programu, alespoň mně. Já se již naučil trasovat můj kód pohledem. S obrazem nedělám tak uvidím. Zatím jen Paula a instrukce. Hledám chybu i tak, že vkládám nějakou instrukci na různé části kódu a odsleduji si, kde se chyba vyskytne. U práci se zvukem to jde takhle celkem dělat. Ostatní uvidím. Ono i tak stravim minimálně polovinu času přemýšlením jak co dám dohromady vůči programování, nebo hledání chyby v programu.

            A jinak zdar, hlásí se lama v ASM
            Ahoj. Určitě nejlepší je prostě to, co člověku nejvíc vyhovuje, v čem se mu dobře dělá a na co je zvyklý. Moje první cesta vedla k ASMOne, protože to byl v letech 92-96 můj "každodenní chleba" - obrovský a vlastně i jediný koníček. Seka Assembler, pak ASMOne, pak TRASH'emOne (nějaký klon s "fixy") a pak zase ASMOne v mnoha iteracích (obvykle neoficiálních). Krásné časy Ale jak jsem psal - zjistil jsem, že mi v emulátoru nefunguje debugger. A protože mi bylo jasné, že se všechno zase budu muset učit, tak pro mne byl docela důležitý. Pak jsem narazil na zmiňovaný AsmTwo a AsmPro. Pokud bych měl programovat na reálném železe nebo v emulátoru, tak bych asi sáhl po tom AsmPro. Já to v něm i nějakou dobu zkoušel, ale ono je šílené jak si člověk po dvaceti letech programování téměř výlučně ve Visual Studiu (od verze 5 až po stávající 2019 jsme používal vždy několik let úplně všechny) zvykne na všechny ty klávesové zkratky. To už je prostě "muscle memory". V emulátoru mi tak prsty hledaly "PageUp/PageDown", blok jsem vybíral "Shift+cursor-arrows", po řádku jsem chtěl skákat pomocí "Home" a "End" atd. atd. Nemluvě o kolečku myši pro scrollování textem a na F2/Shift-F2, které jsem si zvykl používat pro bookmarks.
            Celý ten můj příspěvek je vlastně jen vyjádřením velmi pozitivních dojmů z programování pro Amigu za pomocí VSCode a addonů. A že by to mohlo potěšit i někoho dalšího, pro něhož by už v dnešní době mohl být problém vrátit se k prostředí editorů (a assemblerů) na reálné Amize. A při tom by to byla škoda.

            Debugger je určitě dobrá pomůcka, ale samozřejmě se nedá používat vždy a není dobré se na něho moc spoléhat. Ale byl jsem velmi příjemně překvapený, že v Amiga-Assembly funguje velmi spolehlivě, což je fajn. Ve verzi 0.20 jen byl problém v tom, že FS-UAE mělo velmi zpomalenou emulaci, když byl debuger aktivní. Autor o tom věděl, ale myslím si, že to nedokázal opravit. Každopádně s verzí 0.21 přišlo i WinUAE (je možno si vybrat mezi ním a FS-UAE) a tam jede emulace bez zpomalení. I proto jsem v textu uvedl, že doporučuji WinUAE. Ale hlavně jsem rád kvůli tomu, že WinUAE má samo v sobě skvělý debugger. A navíc i simulaci "printf" funkce: Z kódu se dají zapisovat hodnoty na adresu $BFFF00 (a adresu formátovacího řetězce do $BFFF04) a do log okna se to pak vytiskne. To je skoro lepší než celý debugger!

            Programováni zdar!

            P.S.: Všichni jsme lamy. Když si čtu příspěvky těch borců na EAB/Coders, tak si připadám hodně méněcenný 😉
            Naposledy upravil Defor; 25.11.2020, 10:53:55.

            Komentovat


              #7
              Autorem citovaného textu je Defor Přejít na původní příspěvek
              Předpokládám, že situace je zcela odlišná na PPC Amigách a těch různých nových OS.Ale to je pro mne úplná španělská vesnice.
              Nejlepe je na tom MorphOS. Nejen ze je nejmodernejsi a neboji se zmen, ale maji tam par aktivnich vyvojaru, kteri jdou do vetsich projektu. Tam maji vedle podpory C/C++ i ObjectiveC.

              Co se tyce te rychlosti vysledneho kodu u C++ hrozne zalezi co za moznosti C++ pouzijes. Ale pokud vyvojar vi co dela, tak mu to C++ muze vyrazne ulehcit zivot a na rychlosti se to nijak zasadne nepozna ani na 68k Amize.

              ---
              Jj, na EAB najdes skutecne par super chytrych lidi, kteri to sypou z rukavu jako kdyby poslednich 30 let kazdy den nedelali nic jineho
              Naposledy upravil ExiE; 25.11.2020, 15:22:03.

              Komentovat


                #8
                Defor Ahoj, díky, že jsi to tu napsal. Zrovna zkouším začít. Váhám jaký Assembler použiji a vypadá to na ASMPro
                Amiga 1200 Infinitiv tower, TF1260@50MHz, OS 3.1.4, PPaint7.3, RoadShow
                Projects: The Lost Forest, still in progress

                Komentovat


                  #9
                  ASMpro je fajn, má to své mouchy, v poslední době jak jsem začal používat v programu souběžně 2 zdrojové kódy, tak pokud uděláš změnu v kódu, který máš načteny přes include, tak se tahle změna v kompilaci přímo v ASMpro pomocí "a" (tedy ne exe soubor) neprojeví ani když načítaný soubor přes include je po změně uložený. Musí se vyjít z ASMpro a opět nastartovat. Pak již se změna projeví. Třeba něco dělám špatně, ale mně se to takhle chová a tohle mně celkem prudí, je to otravný úplně vycházet kvůli tomu z ASMpro.

                  Edit: To chování je v emulací WinUAE...Na Real Amize zatím ještě nevím, je to dost nový že to takhle dělám.
                  Naposledy upravil Lisiak; 27.03.2024, 19:07:17.
                  Amiga - PMD 85

                  Komentovat

                  Zpracovávám...
                  X