Szerző |
Üzenet |
Yellow Dog
Tag
|
# Elküldve: 2018. Sze. 19. 18:12
Szeretném megkérdezni "Az Amiga Programozása C és Assembly nyelven" című könyv nincs meg véletlenül valakinek jó(!) minőségí pdf-ben? Ami a neten kering, sajnos tele van hibákkal, gyakorlatilag használhatatlan.
|
Chain-Q
Divatamigás
|
# Elküldve: 2018. Sze. 19. 19:05 - Szerkesztve: charlie
Nekem megvan a könyv... Mármint retro oldschool papír meg minden. De azt nehéz átküldeni online. :) De ha megmondod h. melyik oldal kell, ami olvashatatlan a PDF verzióban és kritikus információt tartalmaz, esetleg lefényképezhetem v. mittomén. De azért az egész könyvet nem fotóznám le... :D
|
dino
Kék troll
|
# Elküldve: 2018. Sze. 19. 20:09 - Szerkesztve: dino
Quoting: yellowdog Az Amiga Programozása C és Assembly nyelve
Nincs mit
Igy elsore nem lattam hibasnak... Ha, hibas, akkor bocs.
|
Yellow Dog
Tag
|
# Elküldve: 2018. Sze. 19. 21:20 - Szerkesztve: yellowdog
Sajna ez van meg nekem is, általában az oldalak alsó részénél tapasztalható a hiba, bár az egész szerkezete valami rettenet, gondolom valamilyen OCR-t ráengedhettek és eléggé sz.rul sikerült a végeredmény. (I-J U-V és hasonló keveredések mindenütt, pl. 104. oldalon kimondottan alkalmas esettanulmánynak, nagyon dúúúrva)
Quoting: charlie ha megmondod h. melyik oldal kell, Köszönöm, nekem is megvan az elavult papír formátumban, csak el van pakolva jó mélyen és igazából utazás közben szerettem volna kicsit tanulmányozni a C részt, telefonon :-)
|
Yellow Dog
Tag
|
# Elküldve: 2018. Sze. 20. 09:54
"Studéroztam piszkosú", hogy hová is írjam, szóval hol van a helye? :-)
Itt. :P - az admin
|
Yellow Dog
Tag
|
# Elküldve: 2018. Sze. 24. 20:20
Okés :-)
|
BSzili
Tag
|
# Elküldve: 2019. Már. 21. 09:20
Piru még régebben felturbózta kicsit MorphOS-re a pthreads implementációmat. Talán a legérdekesebb változtatás a timeout-os SignalSemaphore obtain amit írt, viszont ehhez egy a jelenlegi SDK-ban nem található UNIT_WAITUTC timer.device unitot használt, így nálam nem fordul. A kérdésem az lenne, hogy ennek a konstansnak mi az értéke?
|
Chain-Q
Divatamigás
|
# Elküldve: 2019. Már. 21. 13:14 - Szerkesztve: charlie
Nem tudom, de rakerdeztem.
Szerk: Ez az unit csak a MorphOS-fele timer.device v52-ben elerheto (ami talan 3.10+ vagy ilyesmi), szoval ezt megnyitaskor ellenorizni kell! Azaz eloszor megnyitod az UNIT_WAITUTC-t, ha az elfailel akkor lasd lent.
Az uj SDK-ban benne lesz, viszont az uj SDK csak a 3.12 utan lesz kiadva, ez a mondas... Az erteke amugy "7", szoval, UNIT_WAITCPUCLOCK+1. Regebbi timer.device-ken ill. nem MorphOS platformokon UNIT_WAITUNTIL hasznalhato helyette (ami ugyanaz csak UTC ido nelkul). Ezt mondjak a hozzabb-ertok.
|
BSzili
Tag
|
# Elküldve: 2019. Már. 26. 13:53
Kösz! Akkor nem hekkelek, és inkább belerakok egy fallback-et UNIT_WAITUNTIL-al v51-re és régebbi timer.device-okra. Majd kipróbálom AROS-on meg 3.x-en mit produkál aztán lehet kihajítom belőle a busy wait-es szemafor várakozást ahogy van.
|
Yellow Dog
Tag
|
# Elküldve: 2019. Máj. 12. 11:00
SAS C-hez keresnék example pakkot, amivel el tudnék indulni, köszönöm.
Jelige: "Minden érdekel" ;-)
|
Yellow Dog
Tag
|
# Elküldve: 2019. Máj. 12. 18:43
Próbálkozom amiket találtam de az első windows example sem akar lefordulni (és semmi más sem amiben pl. OpenLibrary és hasonlók szerepelnek), azt írja: "Warning 100 inExample1.c line 49: no prtottype declared for functio "OpenLibrary" és az összes többi hasonló utasítást megugatja, úgy mint: 52. sor: exit 57. sor: OpenWindow 70. sor: CloseLibrary 79. sor: Delay 84. sor: CloseWindow
Ha valakinek van ötlete és tudna segíteni ebben az eszement programnyelvben, megköszönöm.
Az Example1.c program:
/* Example1 */ /* This program will open a normal window which is connected to the */ /* Workbench Screen. It will display it for 30 seconds, and then close */ /* it. */ /* If your program is using Intuition you should include intuition.h: */ #include <intuition/intuition.h> struct IntuitionBase *IntuitionBase; /* Declare a pointer to a Window structure: */ struct Window *my_window;
/* Declare and initialize your NewWindow structure: */ struct NewWindow my_new_window= { 50, /* LeftEdge x position of the window. */ 25, /* TopEdge y positio of the window. */ 150, /* Width 150 pixels wide. */ 100, /* Height 100 lines high. */ 0, /* DetailPen Text should be drawn with colour reg. 0 */ 1, /* BlockPen Blocks should be drawn with colour reg. 1 */ NULL, /* IDCMPFlags No IDCMP flags. */ SMART_REFRESH, /* Flags Intuition should refresh the window. */ NULL, /* FirstGadget No Custom Gadgets. */ NULL, /* CheckMark Use Intuition's default CheckMark (v). */ "MY WINDOW", /* Title Title of the window. */ NULL, /* Screen Connected to the Workbench Screen. */ NULL, /* BitMap No Custom BitMap. */ 0, /* MinWidth We do not need to care about these */ 0, /* MinHeight since we havent supplied the window with */ 0, /* MaxWidth a Sizing Gadget. */ 0, /* MaxHeight */ WBENCHSCREEN /* Type Connected to the Workbench Screen. */ }; main() { /* Open the Intuition Library: */ IntuitionBase = (struct IntuitionBase *) OpenLibrary( "intuition.library", 0 ); if( IntuitionBase == NULL ) exit(); /* Could NOT open the Intuition Library! */ /* We will now try to open the window: */ my_window = (struct Window *) OpenWindow( &my_new_window ); /* The "(struct Window *)" is not necessary but it tells the compiler */ /* that the function OpenWindow() returns a pointer to a Window */ /* structure. (See chapter 0 INTRODUCTION for more information about */ /* "casting".) */
/* Have we opened the window succesfully? */ if(my_window == NULL) { /* Could NOT open the Window! */ /* Close the Intuition Library since we have opened it: */ CloseLibrary( IntuitionBase );
exit(); } /* We have opened the window, and everything seems to be OK. */ /* Wait for 30 seconds: */ Delay( 50 * 30); /* We should always close the windows we have opened before we leave: */ CloseWindow( my_window );
/* Close the Intuition Library since we have opened it: */ CloseLibrary( IntuitionBase ); /* THE END */ }
|
Chain-Q
Divatamigás
|
# Elküldve: 2019. Máj. 12. 21:29
Nyitasnak ebbol a peldabol hianyoznak a kovetkezo sorok:
#include <proto/exec.h> #include <proto/dos.h> #include <proto/intuition.h>
Az exit() a libc resze, ergo annak talan az stdlib.h-ban kene benne lenni, szoval az is hianyzik.
|
mc68k
Tag
|
# Elküldve: 2019. Máj. 13. 04:25
A warning nem error, attól nem áll meg a build. Csak az error-t figyeld.
|
Chain-Q
Divatamigás
|
# Elküldve: 2019. Máj. 13. 11:39 - Szerkesztve: charlie
Igen, de ha ezeket a fuggvenyeket nem talalja a fordito, akkor azt hiheti h. ezek normal C fuggvenyek, ennek megfelelo szimbolumokat fordit hozza, es a vegen szetszall(hat) linker errorral.
|
Yellow Dog
Tag
|
# Elküldve: 2019. Máj. 13. 11:46 - Szerkesztve: yellowdog
Köszönöm a tanácsokat.
Quoting: charlie #include <proto/intuition.h> A programban szerepel már egyszer a #include <intuition/intuition.h> akkor ezt pl. nem értem...
Közben megtaláltam ezt az oldalt és a Lib_examples/ .c példákkal próbálkoztam, a többségét (vagy lehet mindet) sikeresen le is fordította (F4-re ha jól csinálom) és futnak is szépen a programok :-) Szóval valami dereng, de azért vannak még kérdéseim, több minden nem világos, pedig már azt hittem kezdet érteni hozzá ;-) Múlt héten végignéztem Pokoláb Zoltán hihetelenül jó előadássorozatát és ez adott lökést, hogy nekifussak a C-nek immár komolyabban és nagyobb önbizalommal. Közben lapozgatom a "Az Amiga programozása C és Assembly nyelven" című könyvet, bár egy kicsit keszekuszának tartom... szóval a könyvtárnyitásokat nem teljesen értem. Az egyik példában az alábbi rész szerepel: if (NULL == (IntuitionBase = OpenLibrary("intuition.library", 37))) errorMessage( "Requires V37 intuition.library"); else { if (NULL == (GfxBase = OpenLibrary("graphics.library", 37))) errorMessage( "Requires V37 graphics.library"); else { if (NULL == (GadToolsBase = OpenLibrary("gadtools.library", 37))) errorMessage( "Requires V37 gadtools.library"); else { gadtoolsWindow();
CloseLibrary(GadToolsBase); } CloseLibrary(GfxBase); } CloseLibrary(IntuitionBase); } }
Máshol viszont az alábbi módozat: IntuitionBase = (struct IntuitionBase *) OpenLibrary("intuition.library", 37L);
if (IntuitionBase == NULL) ret_val = ERROR_INVALID_RESIDENT_LIBRARY;
A könyv is írja így is, úgy is pl. 39. oldalon, de ez utóbbi nekem sántít az OpenLibrary visszatérő értéke hová megy? Illetve a * az IntuitionBase mögött van, pedig ha pointer akkor előtte kellene lenni, nem?
Hirtelen ennyi, bocsi és köszönöm ;-)
|
Chain-Q
Divatamigás
|
# Elküldve: 2019. Máj. 13. 13:03
(struct IntuitionBase *) <- ez az OpenLibrary visszatero erteket egy struct IntuitonBase-re mutato pointerre castolja. A C-m egy kicsit berozsdalt, de szvsz itt maga a "struct IntuitionBase" mukodik mint tipus/valtozo, ergo nem igazan lehet koze *-t beszurni.
|
Chain-Q
Divatamigás
|
# Elküldve: 2019. Máj. 13. 13:35
Szolgalati kozlemeny: a fejlesztesi kerdeseket atmozgattam ide, leven ide jobban valok mint a szoftver problemak topicba.
|
BSzili
Tag
|
# Elküldve: 2019. Máj. 13. 15:18
yellowdog
Quoting: yellowdog A programban szerepel már egyszer a #include <intuition/intuition.h> akkor ezt pl. nem értem... Ez kicsit olyan, mintha leküldenének kenyérért, vennél helyette sört, és nem értenéd miért vannak kiakadva rád, hiszen az "folyékony kenyér" :D A proto/intuition.h külön header, más van benne, mint az intuition/intuition.h-ban. Ha Intuition függvényeket akarsz hívni, akkor be kell include-olni az előbbit is.
|
Yellow Dog
Tag
|
# Elküldve: 2019. Máj. 14. 06:15
Quoting: charlie fejlesztesi kerdeseket atmozgattam ide Köszönöm, jogos...
Quoting: BSzili proto/intuition.h külön header, más van benne, mint az intuition/intuition.h-ban Oké, csak ezt (sem) nem tudtam, azért is kérdeztem meg itt, sajnos a könyvben sincsenek ilyesmire utalások, pedig jó lenne, ha tényleg az alapoktól indulna, indult volna. Égyébként a végén megemlítik, hogy tervben van, volt további kötet kiadása, tud erről valaki valamit? Illetve keresem a könyv lemezmellékletét ADF formátumban, ha valakinek megvan és meg tudná osztani, megköszönném.
Tehát akkor melyik a helyes megoldás, hogyan kell elegánsan megnyitni egy library-t, esetleg mindkettőt helyesen fordítja a C fordító?
1., if (NULL == (IntuitionBase = OpenLibrary("intuition.library", 37))) errorMessage( "Requires V37 intuition.library");
2., IntuitionBase = (struct IntuitionBase *) OpenLibrary("intuition.library", 37L);
if (IntuitionBase == NULL) ret_val = ERROR_INVALID_RESIDENT_LIBRARY;
Köszönöm
|
YADA
Tag
|
# Elküldve: 2019. Máj. 14. 09:37
hat, ez a ket kod egyenlo, effektiv ugyanaz
inkabb csak a program irojanak egojat noveli amikor egy sorba bezsufol egyebkent fuinkcionalisan kulonallo reszeket.
"az olvashatosag meg a karbantarthatosag sokadrangu" jeligere
|
Yellow Dog
Tag
|
# Elküldve: 2019. Máj. 14. 12:53
Erre voltam kíváncsi, hogy szintaktikailag elfogadott-e ha csak annyit írok, hogy OpenLibrary("intuition.library", 37L); és ekkor is átadódik az IntuitionBase változóba a függvény visszatérési értéke, vagy csak ha kiírjuk egyenletszerűen IntuitionBase = OpenLibrary("intuition.library", 37, de akkor ezek szerint mindegy a fordító van olyan okos, hogy ezt megfelelően fordítja.
|
YADA
Tag
|
# Elküldve: 2019. Máj. 14. 13:20 - Szerkesztve: Yada
jajj, NEM eleg
nincs kulon csak openlib sor
mindegyikben egyenletszeruen van megadva az ertekadas
elso: if (NULL == (IntuitionBase = OpenLibrary("intuition.library", 37)))
azaz feltetel vizsgalat kozben ertekeadast is vegez, vastagon kiemelve (eros hibalehetoseg es kerulendo ego fitogtatas)
masodik: IntuitionBase = (struct IntuitionBase *) OpenLibrary("intuition.library", 37L);
az hogy az egyenlosegjel utan van egy typecast es ujsor karakter, csak vizualis tordeles, logikailag ugyanaz az egy sor maradt, ugyanaz az ertekeadas, ugyanugy a feltetel vizsgalat elott. az IntuitionBase valtozo pedig korabban van deklaralva mindket esetben, typecast kozben nem deklaralunk uj valtozot.
elsoben csak a C nyelv kiertekelesi sorrendjevel jatszott az elkoveto, a masodikban meg implicit kiemelte feltetel vizsgalat elottre
Azthiszem en csak javasolni tudom az eros C alapok elsajatitasat, hogy ne zavarodj ossze ilyen esetekben. Az ilyen example kodok nem a nyelv elsajatitasahoz adnak segitseget, hanem az rendszerhivasok hasznalatahoz. Kezdoket inkabb csak osszezavarjak.
aprosag hogy a parameterben atadott ertek (37) lustasagbol hagyatkozik a C compiler automatikus tipus konverzio es typecast kepessegere, emlekeim szerint a 37L a helyes verzio, de jelen esetben kb mindegy
ugy erzem ezt ezzel tul is targyaltuk
|
Yellow Dog
Tag
|
# Elküldve: 2019. Máj. 14. 18:28
Nincs egy hete, hogy tanultam és már el is felejtettem azt a nyavajás pontosvesszőt... Így már érthető, köszönöm.
|
AliveMOon
Tag
|
# Elküldve: 2019. Máj. 14. 19:51 - Szerkesztve: alivemoon
C-ben akkor van vége egy sornak ha van ; A compiler ki fog dobálni minden space, tab, enter, és egyébb szeparátort és kommentet és csak a sallang mentes álományon fog dolgozni.
|
Yellow Dog
Tag
|
# Elküldve: 2019. Máj. 14. 21:05
Igen, hát még szoknom kell :-)
|
Yellow Dog
Tag
|
# Elküldve: 2019. Máj. 15. 11:15
Amiga OS alatt kézenfekvő a SASC saját editorának (se) használata, de PC-n történő programírás esetén kinek mi a véleménye a környezet kialakítását illetően, praktikus és trendi szempontok alapján? Én azt találtam ki, hogy NotePad++-ban írom a forrást, amely a WinUAE alatt beállított DH1: partíció megfelelő könyvtárába menti azt, ahová írtam egy script-et: sc program.c sc link program.o tartalommal. Mentés után átlépek az emulátorba és Shell-ből lefuttatom, így azt követően tesztelhető is a kész program. Nagyon béna (amatőr) szerintetek, van jobb, praktikusabb, menőbb? :-)
|
Chain-Q
Divatamigás
|
# Elküldve: 2019. Máj. 15. 11:41 - Szerkesztve: charlie
Quoting: AliveMOon C-ben akkor van vége egy sornak ha van ; A compiler ki fog dobálni minden space, tab, enter, és egyébb szeparátort és kommentet és csak a sallang mentes álományon fog dolgozni. És ez amúgy nem teljesen igaz. Másként nem kéne pl. \ karaktert használni sorfolytatónak bizonyos esetekben. És nem csak preprocesszorról beszélek pl. egy stringet is csak úgy tudsz folytatni, vagy inline asm-ot...
|
Yellow Dog
Tag
|
# Elküldve: 2019. Máj. 15. 12:19
Quoting: charlie Nekem megvan a könyv... Mármint retro oldschool papír meg minden. A lemezmelléklet nincs meg véletlenül ADF formátumban, illetve ha nincs, nem tudnál a lemezről készíteni? Nekem van lemezem, de sajnos nincs jó floppy meghajtóm. Köszönöm
|
Chain-Q
Divatamigás
|
# Elküldve: 2019. Máj. 15. 16:19
Szerintem a lemez nincs meg hozza, de mintha ez mar lett volna kerdes a forumban es valakinek meg lett volna... De megnezem otthon. (Eltarthat par... hetig... :D )
|
Yellow Dog
Tag
|
# Elküldve: 2019. Máj. 15. 20:50
Rendben, várok, köszönöm.
Meg van már...? ;-)
|