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í

    Tu mas upraveny nas keytest na vypis celej matice v dvojkovej sustave:

    Code:
    // keytest.c - priklad testu klavesy pre Lisiaka a aj pre inych ktorym to poradi...
    //           - 29.10.2014 DJM / DTA za podpory Bukasoveho Masivu ;-)
    #include <stdio.h>
    #include <devices/keyboard.h>
    #include <proto/exec.h>
    
    #define BYTETOBINARY(byte)  \
      (byte & 0x80 ? 1 : 0), \
      (byte & 0x40 ? 1 : 0), \
      (byte & 0x20 ? 1 : 0), \
      (byte & 0x10 ? 1 : 0), \
      (byte & 0x08 ? 1 : 0), \
      (byte & 0x04 ? 1 : 0), \
      (byte & 0x02 ? 1 : 0), \
      (byte & 0x01 ? 1 : 0)
    
    // konstanty s raw hodnotami
    #define KESC 0x45
    #define KA 0x20
    #define KB 0x35
    
    // pomocne makro na kontrolu danej klavesy v keyboard matici
    #define KEY(x) (KeyboardMatrix[(x)>>3]&(1L<<((x)&7L)))
    
             struct MsgPort *KeyboardMsgPort=NULL;
             struct IOStdReq *KeyboardIO=NULL;
             UBYTE KeyboardMatrix[16];
    
             int p;
    
    void main()
    {
             //otvorenie keyboardu
             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; }
    
             //printf("KeyTest - test klaves A,B a ESC=exit\n");
             printf("Vypis keyboard matice v dvojkovej sustave (ESC exit)\n");
             printf("Klikni mimo toto output okno, aby si sem nepisal..\n");
    
             // cyklus
    engine:
             //naplnenie matice a test klaves
             KeyboardIO->io_Data    = KeyboardMatrix;
             KeyboardIO->io_Length  = 16;
             KeyboardIO->io_Flags   = 0;
             KeyboardIO->io_Command = KBD_READMATRIX;
             DoIO((struct IORequest *)KeyboardIO);
    
             if(CheckIO((struct IORequest *)KeyboardIO)) {
    
             for(p=0;p<16;p++) printf("%1d%1d%1d%1d%1d%1d%1d%1d ",BYTETOBINARY(KeyboardMatrix[p]));
             for(p=0;p<9*16;p++) printf("\b");
    
             if(KEY(KESC)) { /*printf("ESC stlacene = exit\n"); */goto Koniec; }
             /*if(KEY(KA) && KEY(KB)) printf("A + B stlacene naraz\n");
             else {
             if(KEY(KA)) printf("A stlacene = staci tento text?\n");
             if(KEY(KB)) printf("B stlacene\n");
             }*/
             }
    
             goto engine;
    
    Koniec:
             //zrusenie keyboardu
             if(KeyboardIO) { DeleteIORequest((struct IOStdReq *)KeyboardIO); KeyboardIO=NULL; }
             if(KeyboardMsgPort) { DeleteMsgPort(KeyboardMsgPort); KeyboardMsgPort=NULL; }
    }
    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í

      Super, som rád, že to mám konečne správne. Díky za dalšie 2 príspevky. Kuknem na to, keď budem mať moju hlavu pripravenú na premýšlanie. Najpravdepodobnejšie v čase nejakého volného dňa .
      Amiga - PMD 85

      Komentovat


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

        Z témy o ARexx:
        Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
        ...Však jo, já bych celkový čas dělil 5 vteřinami. ...
        Autorem citovaného textu je DJM Přejít na původní příspěvek
        O deleni som ti pisal, ze je najlepsie ho nepouzivat a co nevidim, prve co ta napadne je delenie.
        To sú tie zlozvyky .

        A to si ma ešte nevidel, ako mám v makre poznámku za znakom "\" ).

        A ešte dalšie veci o mne nevieš, napríklad som nevedel pochopiť prečo byte musíme previesť na 0 a 1, keď je byte zapísaný z núl a jedničiek. Ale pochopil som, že inde je chyba v programe, keď som z neho tú konverziu BYTETOBINARY() zrušil a nefungoval mi. Napríklad že som šikovne do makra zaviedol svoje poznámky ). A keď som ich zmazal a program sa mi zkompiloval bez chyby a ja som ho spustil, dokonca mi aj svitlo.

        Prečo tie počítače nemožu vidieť byte rovnako ako ja? )
        Amiga - PMD 85

        Komentovat


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

          ???

          BYTETOBINARY makro je tam len koli funkcii printf, ktora vie vypisat cisla len v desiatkovej ( %d ), sestnastkovej (%x) a osmickovej ( %o ) sustave. V dvojkovej to bohuzial nevie...
          Pomocou tohto makra sa skonvertuje BYTE do 8 cisiel v desiatkovej sustave ( 0 a 1 ), co nam znazornuje akoby vypis v dvojkovej sustave...
          Naposledy upravil DJM; 23.08.2015, 12:35:37.
          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í

            Díky za upresnenie, s čím všetkým si printf v rámci čísla poradí. Ano mám za to, že tomu rozumiem dobre, ale jednoducho ma pomýlilo, že například byte 01000000 vyjadruje číslo 64 a nie čísla 01000000, preto robíme ten prevod.

            Ehm,

            Mne SASC6.50 normálne zkompilovala:
            Code:
            for(p=0;p<16;p++) printf("%d",KeyboardMatrix[p]);
            až na to, že sa mi stlačením klávesy zobrazilo vždy číslo: 1,2,4,6,8,16,32,64, alebo 128.

            Takže ma oprav. 1 byte (premenná p) je uložený v dvojkovej sústave a printf zobrazuje byte priamo v desiatkovej sústave?
            Amiga - PMD 85

            Komentovat


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

              ?????????????????????????????????

              To su neni vsetky moznosti printfu, tie si pozri inde.

              Tym, ze si dal do printfu %d, tak sa ti obsah daneho bytu v KeyboardMatrix (KM) vypisuje v desiatkovej sustave.

              Stlacenim klaves sa ti neobjavia cisla ktore si vypisal, ale podla stlacenych klaves. Cize keby si mal stlacene klavesy v byte 00000011 (bin), tak ti Vypise 3 (dec).

              Ziadna premenna neni ulozena v dvojkovej alebo desiatkovej sustave. Premenna je ulozena ako cislo o dlzke 1 byte, 2 byty (word), 4 byty (long).
              Cislo si mozes previest do sustavy akej chces, ale stale to bude to iste cislo, len inac zapisane !
              Ci ja napisem a=255 alebo a=0xff alebo a=0377, to je jedno cislo je to iste, akurat inac zapisane.

              Premenna p je typu int, v danom cykle od 0 do 15 a urcuje nam s ktorym prvkom pola KM budeme robit. Vybere sa KM[0],potom KM[1] az po KM[15].

              ?????????????????????????????????
              omg.
              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

                BYTETOBINARY makro je tam len koli funkcii printf, ktora vie vypisat cisla len v desiatkovej ( %d ), sestnastkovej (%x) a osmickovej ( %o ) sustave.
                Autorem citovaného textu je DJM
                To su neni vsetky moznosti printfu, tie si pozri inde.
                Autorem citovaného textu je Lisiak4
                Díky za upresnenie, s čím všetkým si printf v rámci čísla poradí.
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                Autorem citovaného textu je DJM
                Tym, ze si dal do printfu %d, tak sa ti obsah daneho bytu v KeyboardMatrix (KM) vypisuje v desiatkovej sustave.
                Autorem citovaného textu je Lisiak4
                až na to, že sa mi stlačením klávesy zobrazilo vždy číslo: 1,2,4,6,8,16,32,64, alebo 128.
                Myslel som, že to takto stačí napísať aby sme si rozumeli... .

                Autorem citovaného textu je DJM
                Stlacenim klaves sa ti neobjavia cisla ktore si vypisal, ale podla stlacenych klaves. Cize keby si mal stlacene klavesy v byte 00000011 (bin), tak ti Vypise 3 (dec).
                1,2,4,6,8,16,32,64, alebo 128, to bol len príklad pri stlačení 1 klávesy... .

                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                Autorem citovaného textu je DJM
                Ziadna premenna neni ulozena v dvojkovej alebo desiatkovej sustave. Premenna je ulozena ako cislo o dlzke 1 byte, 2 byty (word), 4 byty (long).
                Áno, zle som sa vyjadril, vďaka, že si mi "dal po prstoch". OK neni uložená v dvojkovej sústave, ale je vyjadrená v dvojkovej sústave. Je to už správně, alebo aj to je zle? (Máš rád čokoládu? Ja už teraz pod 85 percentnú nejdem)

                Autorem citovaného textu je DJM
                Cislo si mozes previest do sustavy akej chces, ale stale to bude to iste cislo, len inac zapisane !
                Ci ja napisem a=255 alebo a=0xff alebo a=0377, to je jedno cislo je to iste, akurat inac zapisane.
                No, tu sme sa asi len nejako nepochopili...

                Autorem citovaného textu je DJM
                Premenna p je typu int, v danom cykle od 0 do 15 a urcuje nam s ktorym prvkom pola KM budeme robit. Vybere sa KM[0],potom KM[1] az po KM[15].
                Áno vidíme to rovnako
                Amiga - PMD 85

                Komentovat


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

                  Ani v ramci cisla to niesu vsetky moznosti...

                  No a s tym ostatnym sme sa teda (tiez) nepochopili - nerozumeli...
                  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í

                    Jasné, mám to v učebnici, čo všetko printf može mať ako vstup. Je toho celkom dosť. Používaním to do seba dostanem. Učiť sa to nebudem. Takéto veci idú samé používaním. Ani v Pythone som to, čo som nepotreboval nikdy nevedel, ale vždy som po takých informáciách mohol siahnúť, keď som chcel a potreboval ich, poprípade som si na niečo nevedel vzpomenúť, keď som to nepoužíval často .
                    Amiga - PMD 85

                    Komentovat


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

                      Vybírám IDE pro PC aby umělo syntaxi Pythonu a C. Nechal jsem se inspirovat zde:


                      Klikni pro plné zobrazení obrázku

Jméno: IDE.jpg
Počet zobrazení: 1
Velikost: 58,9 KB
ID: 108559

                      Chci něco jednoduchého jako IDLE, které je přímo pro Python pod PC, ale to logicky neumí syntaxi C. Chtěl jsem se vyhnout instalaci Javy, tak si vybral editor SciTE, tam jsem nenašel možnost změny fontu (co tedy jednoduché IDLE umí), jen zapnout/vypnout BOLD u písma, jen se to jmenuje jinak. Tak jsem tedy nainstaloval Javu a zkusil editor jEdit. Tam již font nastavit lze. Tochu mne tam ještě prudí tá čára znázorňující pozici 80. znaku. V rychlosti jsem nepřišel na to, jak to vypnout, ale to je již asi detail i kdyby to nešlo, co dle mne pude (snad).

                      Tak asi jen takové konstatování. Samozřejmě uvítám jednoduché IDE s možností změnit font, bez nutnosti instalaci Javy. Jinak jsem zatím s editorem jEdit z mého prvního úsudku spokojen. I předvolené barevné odlišení textu je pro mne přijatelnější než u SciTE i když to samozřejmě asi lze nastavit.

                      Teď trochu odbočím na všeobecné info, které se mi bude ještě v budoucnu asi hodit. Celkem dobré počtení v angličtině, kde jsem našel asi nejlépe popsané to, co jsem hledal. Jedná se o Amiga FAQ (Frequently asked questions). Jak je vidět má to 4 části... .
                      Amiga - PMD 85

                      Komentovat

                      Zpracovávám...
                      X