Oznámení

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

Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

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

    #91
    O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

    Z toho si nic nedělej, já byl ve čtvrtek na Python (již jsem jednou byl) konferenci, přišel jsem o hodinu později, no a škoda že jsem nepřišel o 2 a půl hodiny později. Nepočítal jsem s tím, že to bude tak oficiální, byl jsem tam na něčem domluven s jedním guru v rámci Pythonu mimo tému konference (co bych pak chtěl použít na Amize pro lepší práci s grafikou). Konference kvůli zahraniční návštevě byla z 90 procent v angličtině. Takže jsem nejenom nerozuměl probírané oblasti, ale ani řeči. Připil jsem se tam 2 pivami a pak již pořešil co jsem potřeboval.

    Další perlička. Skok v rámci AmigaPythonu do assembleru musí být jednoduchý, jen to musím odsledovat, ještě přesně nevím, jak se to dělá. Můj druhý dotaz na guru:

    Já: "Jak se dělá zkok z Pythonu do assembleru?"
    On: "Co prosím?"

    Python na PC nepodporuje přímý skok do assembleru, tohle umožňuje AmigaPython (díky za tuhle možnost).
    Naskýtá se otázka: Umožnuje AmigaPython přímý skok do C tak jako Python na PC?

    I tak je pro mne zatím zajímavěší možnost z AmigaPythonu škočit do Assembleru.
    Amiga - PMD 85

    Komentovat


      #92
      O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

      Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
      ...alespoň v režimu emulace ve Win-UAE se v ražimu NTSC chová jinak než v PALu v rámci zalamování řádku. V PALU se posune řádek o úroveň výš až na konci obrazovky. Pokud ale zalomíme v Pythonu řádek u NTSC, posouvá se o úroveň výše vždy, i když jsme v 1. řádku. Proto se musí kurzor (vozík) posunout před samotným zalomením řádku o 1 úroveň výše, aby se třeba text v rámci pozice, kterou udávám každému písmenu zvlášť zobrazoval v jednom řádku.
      Tak opět mne doběhl můj vlastní program. Tenhle výrok beru zpět. NTSC tedy neposouvá řádek při jeho zalomení o úroveň výše i když jsme třeba v 1. řádku.

      V rámci zobrazení v PALu schovávám na pozadí kurzor v posledním řádku. V rámci NTSC je ale nižší rozlišení a i o 1 řádek méně a proto se mi posouval kurzor o 1 pozici, v NTSC se začala obrazovka rolovat o 1 řádek dříve.
      Amiga - PMD 85

      Komentovat


        #93
        O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

        C:

        Potřeboval bych jen nasměrovat, na co se mám v rámci C zaměřit, když potřebuji pracovat s grafikou v rámci hry na klasické Amize. Tedy asi režim PAL LOW RES. Tedy co je nutné vědět na to, aby jsem s grafikou v tomhle režimu pro nějakou hru mohl pracovat. To co se ohledem téhle tématiky s tímhle konkrétním problémem (problémy) týče bych ale rád měl co nejpodrbněji popsané. Tedy co nejpodrobněji popsán program (syntaxi). Stačí mi říči, co si mám třeba z knihy Amiga Profi o grafice nastudovat, aby jsem se zatím nemusel proloskávat o grafice něčím, co není zcela nutné pro můj aktuální záměr. Nebo odkaz na jinou literaturu, pokud je názornější než kniha Amiga Profi (počítám s angličtinou). To samé platí i o animaci pro hru.

        Díky moc!
        Amiga - PMD 85

        Komentovat


          #94
          O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

          Ja by som ti doporučoval robiť priamo a len v assembleri. Tam získaš rýchlosť pre vykonávanie programu a budeš mať prístup k celému HW Amigy. Vyššie programovacie jazyky majú síce svoje pozitíva. Ale na relatívne pomalom počítači akým je Amiga je benefit rýchlosti vykonávania natívneho strojového kódu značným prínosom.
          A1230, A1260, A600, Furia EC02, S628, A2K | ZX 81, Spectrum 48, 48+, 128, +2A, +2B | Sord M5 | C 64 |Atari 1040 STFM, 800 XE, XL | Didaktik Kompakt, M, Gama | Ondra | PMD 85 | PP 01 | Sharp MZ-721

          Komentovat


            #95
            O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

            Ale rozhodně bude pro Lisiaka přechod z Pythonu na C mnohem lehčí a pochopitelnější, než skočit přímo do assembleru.

            S Amiga Profi asi chybu neuděláš, při tom jejím převodu jsem celkem dost věcí pochopil i já a při kompilaci ukázkových souborů ohledně grafiky se to hýbalo taky celkem solidně. Pár dobrých článků najdeš i v Amiga Review, na začátek je to určitě celkem solidní přísun informací.
            Pegasos II (1266MHz), 2048MB RAM, Radeon 9250 (256MB), HDD 200GB, USB 2.0, ZIP250 USB, USB floppy, SB Live!, HP LaserJet 1100, AmigaOS 4.1 Final Edition

            Komentovat


              #96
              O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

              Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
              C: Potřeboval bych jen nasměrovat...
              Na uvod ti odporucam stiahnut si AUTODOCS 3.x guide, v ktorom mas popis funkcii vsetkych kniznic systemu 3.x - ake su vstupne a vystupne parametre, popis co dana funkcia robi a tak. Je dobre to mat vzdy po ruke ( ja to mam vyhodene na ploche ). Dalej by si si mohol skusit nastudovat intuition v ktorom sa dozvies okrem ineho ako otvorit obrazovku a okno ( OpenScreenTags() a OpenWindowTags(), CloseScreen() a CloseWindow() ) - s tym by som zacal. Potom mozes preist ku graphics.library, v ktorej su funkcie pre pracu s grafikou a pre teba vhodne vykreslovanie blitter objektov (BOBov). Neskor by si pridal double buffe,atd....
              Amiga 1200T (E/Box)+BlizzardPPC 603p/363+060/66+BVision PPC+256MB+KS3.1+Cocolino+Lyra 2+Fast Ata MK-IV+320GB WD Blue 3200AAJB PATA HDD(PFS3)+dvdrw+dvd+cf2ide
              Amiga 1200+BlizzardPPC 603e/210+040/25+128MB+KS3.1+CF4GB(PFS3)

              Komentovat


                #97
                O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                Pro mojom rýchlom prieskume som na netu AUTODOCS 3.X GUIDE nenašiel, možeš mi dať prosím nejaké odkazy na to, čo si mi doporučil naštudovať?

                EDIT: keď sme načali túto tému v diskusii, už dlho mám v hlave na Teba 1 otázku (mimo ďalšie ). V akom percentuálnom rozmezí sa Ti darí urýchliť program v C prepísaný do assembleru. Predpokladím, že to nebude 1 číslo, ale určitý rozsah.
                Naposledy upravil Lisiak; 15.05.2015, 19:47:44.
                Amiga - PMD 85

                Komentovat


                  #98
                  O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                  Nachadza sa to napriklad aj na Amiga Developer CD 2.1, kde mas aj NDK (Native Developer Kit),atd.

                  Tu je nan odkaz:

                  Amiga Developer CD v2.1 - November 1999 (1999)(Haage & Partner).zip

                  Co sa tyka knihy Amiga Profi, teraz som ju zbezne presiel. Je to fajn kniha akurat niektore veci uz sa na novsich systemoch 3.x mozu robit jednoduchsie...
                  Amiga 1200T (E/Box)+BlizzardPPC 603p/363+060/66+BVision PPC+256MB+KS3.1+Cocolino+Lyra 2+Fast Ata MK-IV+320GB WD Blue 3200AAJB PATA HDD(PFS3)+dvdrw+dvd+cf2ide
                  Amiga 1200+BlizzardPPC 603e/210+040/25+128MB+KS3.1+CF4GB(PFS3)

                  Komentovat


                    #99
                    O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                    OK a to si mám vypálit na CD, dá sa v tom nejako čítať/listovať? Já som s ISO obrazom CD na Amige/PC nikdy moc nerobil... .
                    Amiga - PMD 85

                    Komentovat


                      O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                      Amiga C:

                      Tak jsem si dnes opět našel čas na mé první hrátky s C. Měl jsem za to, že konstrukci otevření obrazovky jsem již porozuměl minule, ale pletl jsem se. Dnes jsem se na ni opět díval a neměl jsem v ní celkem jasno. Asi jsem trochu zmagořenej z Pythonu, kde definice funkce (podprogram) musí být před samotným programem. Nekteré primitivní věci člověk nevidí, je zvyklý sa na ně koukat jinak. Řekl jsem si, že z 1. příkladu, z knihy Amiga Profi vyhodím otevření okna. Ponechám tedy jen otevření obrazovky. Vyhodil jsem z programu i potřebnou věc, tak jsem dnes chybu napravil a konečně se mi program zdál být OK, tak jsem se pomocí SAS C6.50 vrhl na kompilaci. Udělal jsem si kopii adresáře STARTER_PROJECT a nazval ji S_PROJECT. Dal tam upraven program v Pythoním editoru pojmenovaný S.C. Nepovedlo se mi najít, jak se pod emulací stiskne PRAVÁ AMIGA+B, tak jsem to zkompiloval pomocí ikony BUILD. Po spuštění programu bylo jen krátké probliknutí obrazovky. Tak jsem si z Amiga Pythonu spustil program v C a přidal k tomu počkání na stisk klávesy. Obraz problikl a pak se čekalo na stisk klávesy . OK, přidal jsem do DELAY_FUNC pár nul (5 ) ) a provedl kompilaci. Po spuštění programu se mi otevřela obrazovka WB, pár vteřin zůstala otevřená a pak se zavřela. Je to sice jednoduché upravení programu, ale funguje mi to na 1. pokus .

                      Zde je mnou upravený program, kde není otevření okna v obrazovce, ale jen otevření obrazovky:

                      Code:
                      #include "exec/types.h"
                      #include "intuition/intuition.h"
                      
                      struct IntuitionBase *IntuitionBase;
                      struct Window *Window;
                      struct Screen *Screen;
                      
                      #define INTUITION_REV 0
                      
                      main()
                      {
                        ULONG flags;
                        SHORT x,y,w,h,d;
                        USHORT mode;
                        UBYTE *name,c0,c1;
                        VOID delay_func();
                        IntuitionBase=(struct IntuitionBase *)
                          OpenLibrary ("intuition.library",INTUITION_REV);
                      
                        if(IntuitionBase==NULL)
                          exit ( FALSE );
                      
                        name="Custom Screen";
                        y=0;
                        w=320;
                        h=200;
                        d=5;
                        c0=0x00;
                        c1=0x01;
                        mode=NULL;
                      
                        Screen=(struct Screen *) make_screen(y,w,h,d,c0,c1,mode,name);
                        delay_func (10000000);
                        CloseScreen ( Screen );
                      }
                      
                      make_screen (y,w,h,d,color0,color1,mode,name )
                      SHORT y,w,h,d;
                      UBYTE color0,color1,*name;
                      USHORT mode;
                      {
                        struct NewScreen NewScreen;
                      
                        NewScreen.LeftEdge=0;
                        NewScreen.TopEdge=y;
                        NewScreen.Width=w;
                        NewScreen.Height=h;
                        NewScreen.Depth=d;
                        NewScreen.DetailPen=color0;
                        NewScreen.BlockPen=color1;
                        NewScreen.ViewModes=mode;
                        NewScreen.Type=CUSTOMSCREEN;
                        NewScreen.Font=NULL;
                        NewScreen.DefaultTitle=name;
                        NewScreen.Gadgets=NULL;
                        NewScreen.CustomBitMap=NULL;
                      
                        return (OpenScreen(&NewScreen));
                      }
                      
                      VOID
                      delay_func (factor)
                      int factor;
                      
                      {
                        int loop;
                        for (loop=0;loop<factor*1000;loop++);
                        return;
                      }
                      Amiga - PMD 85

                      Komentovat


                        O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                        Funkcie (podprogramy) mozes mat pred hlavnou funkciou (main) aj za nou aj v inom subore, to je jedno. Z vyhodenia okna ti tam este ostala deklaracia struktury struct Window *window; ktora je tam zbytocne ale na to by mal prist aj kompiler a aj na to, ze ti tam chybaju prototypy funkcii. Ta funkcia Delay je riadna divocina - prazdny cyklus. Mohol si tam dat aspon WaitTOF(); . Program sa da napisat aj "modernejsim" sposobom - intuition.library netreba otvarat a typy premennych pouzitych v definicii funkcii sa mozu pisat rovno k premennym.

                        Uvediem maly priklad ako by som upravil tvoju delay funkciu:

                        Code:
                        void delay_func (int factor) 
                        {   
                            int loop;   
                            for(loop=0;loop<factor;loop++)
                            WaitTOF();
                            return;
                        }
                        alebo

                        Code:
                        void delay_func (int factor) 
                        {   
                            while(factor) {
                            factor--; 
                            WaitTOF();
                            }
                            return;
                        }
                        ale mozes pouzit aj systemovu funkciu na cakanie Delay(cas v ms);

                        Tu je priklad "modernejsieho" otvorenia obrazovky:

                        Code:
                        #include "proto/exec.h"
                        #include "proto/intuition.h"
                        #include "proto/dos.h"
                        
                                 struct Screen *screen=NULL;
                        
                        void main()
                        {
                                 screen=OpenScreenTags(NULL,
                                 SA_Left,        0,
                                 SA_Top,         0,
                                 SA_Width,       320,
                                 SA_Height,      200,
                                 SA_Depth,       5,
                                 SA_Title,       "Custom Screen",
                                 SA_Type,        CUSTOMSCREEN,
                                 SA_AutoScroll,  FALSE,
                                 SA_Overscan,    OSCAN_STANDARD,
                                 SA_VideoControl,NULL,
                                 SA_MinimizeISG, TRUE,
                                 SA_DisplayID,   PAL_MONITOR_ID|LORES_KEY,
                                 TAG_DONE);
                                 
                                 if(!screen) return;
                        
                                 Delay(250);
                        
                                 if(screen) CloseScreen(screen);
                        }
                        Amiga 1200T (E/Box)+BlizzardPPC 603p/363+060/66+BVision PPC+256MB+KS3.1+Cocolino+Lyra 2+Fast Ata MK-IV+320GB WD Blue 3200AAJB PATA HDD(PFS3)+dvdrw+dvd+cf2ide
                        Amiga 1200+BlizzardPPC 603e/210+040/25+128MB+KS3.1+CF4GB(PFS3)

                        Komentovat


                          O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                          DJM:

                          OK,

                          Ja budem zatiaľ písať podprogram vždy pred hlavným programom tak ako som sa to naučil v Pythone. Aj z dovodu možného prvého písania práve v Pythone a potom prepisovania do C.

                          ..."struct Window *window;"... ) Tá horná definícia mi unikla, díky za upozornenie!

                          Funkcii Delay som "len" pridal 5 núl, aby som uvidel, ako sa mi otvorí okno a nebolo len rýchle prebliknutie obrazu v programe. Inak je to takto všetko písané v Amiga Profi... . Ja na svoju divočinu v rámci C ešte len čakám . Myslím, že v rámci Pythonu a Amigy už som svoje poslanie splnil.

                          Ten príklad modernejšieho otvorenia obrazovky samozrejme budem používať. Ja len, že Amiga Profi mi vyhovuje, ako je písaná. Viem, že si písal, že dané veci idú urobiť aj jednoduchšie, pre mna je ale doležité ich vobec vedieť urobiť a preto sa držím radšej tej knihy. Keď poskytneš ľahšie sposoby použitia grafiky a testu stisknutia klávesnice budem len rád. Nechcem sa teraz zasekať ťahaním týchto príkladov z GUIDE, ktoré si mi poskytol. Kniha je pre mňa oveľa prehladnejšia a tak sa radšej držím nej.
                          Amiga - PMD 85

                          Komentovat


                            O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                            Tak jsem si zkompiloval program od DJM, pomocí knižnice OpenScreenTags(). Zatím jsem pro jednoduchost ponechal pouze prvních 5 SA_ parametrů. Tedy posledním je DEPTH, kterým určuji počet barev (tedy na vše ostatní možná přišel kompiler, protože program funguje).

                            Když řeknu někde blbost prosím opravit! V rozlišení HI-RES je možné zadat parametr DEPTH s číslem 4 = 16 barev. 5 je pro 32 barev a v LO-RES je strop 6 = 64 barev (možná s nějakým omezením).

                            V AUTODOCS 3.x guide jsem si našel knižnici OpenScreenTagList(), kde se odkazuje i na OpenScreenTags(). Pokusil jsem se tam najít parametr pro 2 věci:
                            -zlikvidování horní lišty
                            -znemožnění posunu okna WB směrem dolů


                            Pár parametrů jsem zkusil, ale nepomohlo. U nějakých parametrů se to tvářilo, že je nezná. Možná je podporuje právě OpenScreenTagList(). Ale když jsem v programu pouze změnil knižnice, tedy jsem zadal screen=OpenScreenTagList(NULL... ) tak mne kompiler hezky pozdravil. Struktura je dle všeho jiná. Nevím, jaký je rozdíl mezi OpenScreenTags() a OpenScreenTagList().

                            (jo jo já vím hledal jsem špatně... )
                            Amiga - PMD 85

                            Komentovat


                              O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                              Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
                              Pár parametrů jsem zkusil, ale nepomohlo. U nějakých parametrů se to tvářilo, že je nezná. Možná je podporuje právě OpenScreenTagList(). Ale když jsem v programu pouze změnil knižnice, tedy jsem zadal screen=OpenScreenTagList(NULL... ) tak mne kompiler hezky pozdravil. Struktura je dle všeho jiná. Nevím, jaký je rozdíl mezi OpenScreenTags() a OpenScreenTagList().
                              stejna funkce, ruzny zpusob zapisu
                              OpenScreenTagList() jako parametr funkce predavas ukazatel na strukturu s vlastnostma screenu
                              OpenScreenTags() zapisujes jako parametry funkce primo jednotlive vlastnosti screenu

                              (teda aspon doufam, ze jsem to napsal spravne)
                              Naposledy upravil ExiE; 09.06.2015, 14:54:06.

                              Komentovat


                                O: Programování Amiga C , Amiga Python a rozdíly mezi Amigou a PC v jejich používání

                                Lisiak4 , takze za:

                                1. OpenScreenTags(); a OpenScreenTagList(); niesu kniznice ale funkcie z kniznice (konkretne intuition.library)

                                2. "na vse ostatni mozna prisel kompiler" - kompiler si nevymysla nic, ten len prevadza program do strojoveho kodu a moze prist len nato ked je nieco nespravne zapisane alebo nejake premenne niesu pouzite,atd., tak na to upozorni. Ono parametre funkcie OpenScreenTags(), ktore nezadas ostavaju defaultne.

                                3. HIRES a LORES su len rozlisenia obrazovky a s farbami nemaju nic.

                                4. Parameter DEPTH urcuje pocet bitplanov pre obrazovku. Na AGA Amige mozes mat minimalne 1 (dva na prvu = 2 farby) a maximalne 8 (dva na osmu = 256 farieb ) bitplanov. Je to vlastne pocet bitov na 1 pixel. Dalej je este specialny mod HAM8, s ktorym sa da dosiahnut este viac farieb (262144) pri 8 bitplanoch, ale v tom je hacik a je to na dlhsie vysvetlovanie.

                                5. Funkcie OpenScreenTags a OpenScreenTagList su ako pise Exie rovnake, len s inym zapisom.

                                Hornu listu zlikvidujes pridanim parametru SA_Quiet, TRUE, a znemoznenie posuvu obrazovky pomocou parametru SA_Draggable, FALSE, .

                                Ked si otvoris ten autodocs, tak sa ti zobrazi zoznam kniznic (library) a zariadeni (device). Tam si vyberes intuition a zobrazi sa ti zoznam funkcii, ktore obsahuje intuition.library. Ked si vyberes OpenScreenTags, tak ti zobrazi info o tejto funkcii a hned riadok pod nou mas aj parametre pre OpenScreenTagList. Ked kliknes na zvyraznenom struct Screen, otvori sa ti inkluda screens.h, v ktorej mas strukturu Screen a dole pod nou mas aj definicie SA_nieco aj s popisom. Prave ten autodocs mas na to, aby si vedel ktora funkcia sa kde nachadza, ake ma parametre, co vracia, ake su jej pripadne chyby, niekedy aj priklad pouzita a k nej potrebne struktury. Nema zmysel sa ucit naspamat vsetky funkcie a ich parametre... Nauc sa pouzivat autodocs a mas v tom jasno...
                                Naposledy upravil DJM; 09.06.2015, 20:14:24.
                                Amiga 1200T (E/Box)+BlizzardPPC 603p/363+060/66+BVision PPC+256MB+KS3.1+Cocolino+Lyra 2+Fast Ata MK-IV+320GB WD Blue 3200AAJB PATA HDD(PFS3)+dvdrw+dvd+cf2ide
                                Amiga 1200+BlizzardPPC 603e/210+040/25+128MB+KS3.1+CF4GB(PFS3)

                                Komentovat

                                Zpracovávám...
                                X