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

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

    OK,

    (struct MsgPort *)

    Takže guľaté zátvorky používame často pre návratové hodnoty, čo je mimo iné aj pretypovanie (tiež vracia hodnotu). A tá hviezdička znamená, že nám to vracia adresu, na ktorej je MsgPort štruktúra, alebo NULL.

    A pretože funkcia CreateMsgPort() vracia štruktúru MsgPort, museli sme si zadefinovať premennú KeyboardMsgPort, tejto istej štruktúry (aby nám to celé nepadlo na prdel), teda:

    struct MsgPort *KeyboardMsgPort=NULL;

    do ktorej sa nám návrastová hodnota zapisuje.

    A zápis NULL v:
    struct MsgPort *KeyboardMsgPort=NULL;

    znamená, že premennej KeyboardMsgPort není pridelená žiadna pamať.

    Je to tak?
    Amiga - PMD 85

    Komentovat


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

      Tak nejak...

      A zápis NULL v:
      struct MsgPort *KeyboardMsgPort=NULL;

      znamená, že premenna KeyboardMsgPort je nastavena na adresu 0.
      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í

        sizeof(struct IOStdReq)

        Hľadal, poctivo som hľadal sizeof v autodocs (a potom že ho nepoužívam... ) )

        Tieto situácie ma dokážu vždy nakonci pobaviť. To je tá nevýhoda, keď sa učím robiť veci v C odkonca a dokážem hľadať klasický príkaz v C v dokumentácii pre Amigu . Ale takýto sposob je aj tak najlepší. Potrebujem toto v C na to aby som mal prístup k tomuto v rámci Amigy? Naučím sa to .
        Amiga - PMD 85

        Komentovat


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

          na hladanie mozes pouzivat aj google...
          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í

            V poho, tá kniha pre C je dobre napísaná, len som ju musel otvoriť, potom to už bolo rýchle skoro ako na Googli . Keď som ju otváral, tak som vravel niečo v zmysle "to bude zase nejaký oser". Moje klasické komenty k týmto situáciám.
            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
              OK,
              A pretože funkcia CreateMsgPort() vracia štruktúru MsgPort
              Trochu som nerozumel, prečo je tam to pretypovanie, ale neuvedomil som si, že sa vracia hodnota typu void.

              Teda presnejšie povedané CreateMsgPort() má návratovú hodnotu typu void. A tú pretypujeme na potrebnú štruktúru MsgPort.

              Je to tak?
              Amiga - PMD 85

              Komentovat


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

                Nie,

                [dal som do googla CreateMsgPort() a vysledok: ]
                -------------------------------------------------------------------------------------------------
                NAME
                CreateMsgPort - Allocate and initialize a new message port (V36)

                SYNOPSIS
                CreateMsgPort()

                struct MsgPort * CreateMsgPort(void);
                ..........|................................... ....|....
                typ navratovej hodnoty -------- typ vstupnej hodnoty

                FUNCTION
                Allocates and initializes a new message port. The message list
                of the new port will be prepared for use (via NewList). A signal
                bit will be allocated, and the port will be set to signal your
                task when a message arrives (PA_SIGNAL).

                You *must* use DeleteMsgPort() to delete ports created with
                CreateMsgPort()!

                RESULT
                MsgPort - A new MsgPort structure ready for use, or NULL if out of
                memory or signals. If you wish to add this port to the public
                port list, fill in the ln_Name and ln_Pri fields, then call
                AddPort(). Don't forget RemPort()!

                SEE ALSO
                DeleteMsgPort(), exec/AddPort(), exec/ports.h, amiga.lib/CreatePort()
                ----------------------------------------------------------------------------------------------------

                Funkcia ma navratovu hodnotu struct MsgPort *.
                Void je typ vstupnych parametrov funkcie funkcia(void); co znamena ze funkcia nema ziadne vstupne parametre. ( VOID v preklade = prazdny ).

                V nasom programe je pretypovanie tejto funkcie prakticky zbytocne. Uz ked som bol rozbehnuty, tak som to tam napisal..
                Neviem ako kompiler, ale pretypovanie rovnakeho typu by mal ignorovat, takze to tam nevadi, akurat to posluzilo aby ta to doplietlo...
                Naposledy upravil DJM; 26.07.2015, 20:27:57.
                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í

                  aaaaaaa tak 1. verzia bola správne... .Teda void je vstupná hodnota . Ja som si vravel, že 2. krát zadávať rovnaký typ, že zase funguje moja zvrátená logika a tak som to celé "obrátil" ).

                  EDIT: Aspoň som si viac krát v rámci teórie precvičil pretypovanie a trošku teórie naviac, keď som tomu hľadal logický dovod . Ale tak vidíš, keď chcem, aj dovod nájdem .
                  Naposledy upravil Lisiak; 26.07.2015, 23:08:41.
                  Amiga - PMD 85

                  Komentovat


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

                    Code:
                    // konstanty s raw hodnotami
                    #define KESC 0x45
                    #define KA 0x20
                    #define KB 0x35
                    Tabulka klávesnice s hodnotami v hexadecimální soustavě:

                    Klikni pro plné zobrazení obrázku

Jméno: keyboardMatrix.jpg
Počet zobrazení: 1
Velikost: 40,5 KB
ID: 108508
                    Amiga - PMD 85

                    Komentovat


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

                      Code:
                      if((KeyboardMsgPort=(struct MsgPort *)CreateMsgPort())==NULL) { printf("chyba\n"); goto Koniec; }
                      if((KeyboardIO=(struct IOStdReq *)CreateIORequest(KeyboardMsgPort,sizeof(struct IOStdReq)))==NULL) { printf("chyba\n"); goto Koniec; }
                      if(OpenDevice("keyboard.device",0,(struct IORequest *)KeyboardIO,0)) { printf("chyba\n"); goto Koniec; }
                      Jen jsou použity jiné funkce (kromě OpenDevice()):

                      Three primary steps are required to open the keyboard device:

                      * Create a message port using the CreatePort() function.

                      * Create an extended I/O request structure using the CreateExtIO()
                      function. CreateExtIO() will initialize the I/O request with your
                      reply port.

                      * Open the keyboard device. Call OpenDevice(), passing the I/O request.

                      zdroj: http://amigadev.elowar.com/read/ADCD.../node00FF.html
                      Naposledy upravil Lisiak; 28.07.2015, 16:31:01.
                      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 DJM Přejít na původní příspěvek
                        V nasom programe je pretypovanie tejto funkcie prakticky zbytocne. Uz ked som bol rozbehnuty, tak som to tam napisal..
                        Neviem ako kompiler, ale pretypovanie rovnakeho typu by mal ignorovat, takze to tam nevadi, akurat to posluzilo aby ta to doplietlo...
                        Teraz som nevedel, či je naviac aj pretypovanie v druhom a treťom if. Viem, že sme sa bavili len o tom prvom, ale mohol si ma v tom nechať, nech na to prídem a keby som sa ťa opýtal, tak si mi mohol napísať že nech sa pozriem a tak som sa radšej hneď pozrel . V ďalších 2 ifoch by teda malo byť pretypovanie OK.

                        Keď sme u toho pretypovania a u toho ako by mal kompiler 2. krát po sebe zadaný rovnaký typ ignorovať. Dá sa v kompileru nastaviť aby nič takto neopravoval?

                        Napríklad by ma zaujímalo, či tieto prepínače:

                        Code:
                        KeyboardIO->io_Data    = KeyboardMatrix;
                        KeyboardIO->io_Length  = 16;
                        KeyboardIO->io_Flags   = 0;
                        KeyboardIO->io_Command = KBD_READMATRIX;
                        sú aktívne už po 2. if kde sú uložené do premennej KeyboardIO (ktorá ukazuje na adresu), alebo až po 3. if, keď sa otvára keyboard device... . To by som si možno mohol vyskúšať, keby som tretí if dal pod tieto prepínače. Áno tie 3 if majú byť u seba, ale len tak ma to zaujíma. A možno, že aj keď by mohol byť problém použit tieto prepínače pred otvorením keyboard device, kompiler si to spravý po svojom a všetko bude OK.

                        No inak skúsil som si pretypovat číslo na číslo v Pythone a ten takúto "chybu" má tiež na háku .
                        Naposledy upravil Lisiak; 29.07.2015, 06:33:43.
                        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
                          V ďalších 2 ifoch by teda malo byť pretypovanie OK.
                          V dalsich 2 je to ok, ale ani v tom prvom to neni chyba.

                          Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
                          Keď sme u toho pretypovania a u toho ako by mal kompiler 2. krát po sebe zadaný rovnaký typ ignorovať. Dá sa v kompileru nastaviť aby nič takto neopravoval?
                          Kompiler nic neopravuje, on len preklada text do assembleru a strojoveho kodu.

                          Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
                          Napríklad by ma zaujímalo, či tieto prepínače:

                          Code:
                          KeyboardIO->io_Data    = KeyboardMatrix;
                          KeyboardIO->io_Length  = 16;
                          KeyboardIO->io_Flags   = 0;
                          KeyboardIO->io_Command = KBD_READMATRIX;
                          sú aktívne už po 2. if kde sú uložené do premennej KeyboardIO (ktorá ukazuje na adresu), alebo až po 3. if, keď sa otvára keyboard device... . To by som si možno mohol vyskúšať, keby som tretí if dal pod tieto prepínače. Áno tie 3 if majú byť u seba, ale len tak ma to zaujíma.
                          Prepinace ?
                          Nevidim dovod preco by to malo fungovat bez otvorenia keyboard.device, ktora sluzi na pracu s klavesnicou ?!
                          Sam si nedavno napisal "Three primary steps are required to open the keyboard device" a teraz sa pytas, ci by to islo bez toho.

                          Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
                          A možno, že aj keď by mohol byť problém použit tieto prepínače pred otvorením keyboard device, kompiler si to spravý po svojom a všetko bude OK.
                          Jasne, kompiler spravi vsetko sam, staci zadat:

                          #include <stdio.h>
                          void main()
                          {
                          SaboteurActionGame();
                          }

                          a kompiler z toho spravi namakanu hru...




                          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í

                            Autorem citovaného textu je DJM Přejít na původní příspěvek
                            Jasne, kompiler spravi vsetko sam, staci zadat:

                            #include <stdio.h>
                            void main()
                            {
                            SaboteurActionGame();
                            }

                            a kompiler z toho spravi namakanu hru...




                            Héééééééj, to som mal naprogramovať ja! No nič, možem vymyslieť niečo nové, čo už .
                            Amiga - PMD 85

                            Komentovat


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

                              OK a teraz vážne, nejak som si jednoducho zafixoval, že niečo može kompiler aj opraviť. OK tak nemože a to mi maximálne vyhovuje! Som perfekcionista, svoje chyby v programoch si chcem opravovať sám!
                              Amiga - PMD 85

                              Komentovat


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

                                Tak teda do toho, a půl je hotovo.
                                Amiga 600, Fúria EC020 OS 3.1.4, eX601, Indivision ECS, Powerbook G4, 1.67GHz, MOS3.15, Asus UX32VD Xubuntu 21.04

                                Komentovat

                                Zpracovávám...
                                X