Kiderült, hogy az ember PC-n szívesen használt Pascalt és azon belül is az FPC-t mindenféle scene-vel kapcsolatos cuccokra, de hát sajnos Atarira nincsen... Én persze mondtam neki, hogy szerintem pár nap munkával portolható lenne, most hogy nagyjából kész a 68k kódgenerátor. Jaj, de hát az túl nagy meló és amúgyse, esetleg később. Na mindegy, - gondoltam én - mivel release-em úgysem készült, és kéznél volt egy szakértő, nekiugrottam ott a partyn. Kötöttunk egy fogadást, hogy sikerül egy "Hello World"-ot elérnem, még ott helyben. :)
Annyit sikerült elérni néhány óra munkával, hogy a komplett FPC runtime library lefordult Atarira, nem sokkal később pedig a packages gyűjtemény nagyobbik része is. Persze, szinte az egész használhatatlan volt, hiszen ugyan - még a 2000-s évek környékén - volt már egy befejezetlen port próbálkozás, de azóta jó sok minden megváltozott, fejlődött, ráadásul a korabeli kód egy része is elveszett, szóval a System unit 80%-a és a Sysutils unit 95%-a ezen a ponton csak semmit sem csináló stub függvényekből állt, vagy ősrégi kikommentezett kód volt.
Mindenesetre, bár a "Hello World" a partyn nem sikerült, minimális tákolással (alignment problémák és a szétfagyó, assemblyben írt startup kód javítása) és egy nappal később már igen. Ehhez a memóriafoglalást és a legalapvetőbb I/O függvényeket kellett implementálni a System unitban. Meg persze megtanítani a fordítót, hogy tud Atari GEMDOS trap-eket generálni. És voila, Hello world!. Persze csak keresztfordítóval. Ez volt tehát október 3-án.
Aztán eltemetett a munka meg a való élet, és minimálisan ugyan bökködtem rajta október hátralévő részében, meg novemberben, de ez nem volt számottevő. Befejeztem a File I/O függvényeket a System unitban, kisöpörtem ezt-azt és legallyaztam a meglévő dolgokat.
De most karácsonykor nekiálltam, mert a rengeteg projektem közül nyilván az szúrja az oldalam leginkább, ami senki mást nem érdekel rajtam kívül, dehát ez van, szóval olvasgattam az üres Sysutils unit forrását meg a TOS dokumentációját, megírtam egy egyszerűnek tűnő függvényt, aztán még egyet, aztán még egyet, egyszer csak azon vettem magam hogy a Directory kezelés, a System unit legnagyobb hiányzó darabja kész, valamint a Sysutils unit jó kétharmada is.
A fordító tehát először fordult le úgy TOS-ra, hogy esélye is volt működni. És be is jött a help text, de ha paraméterezni akartam, szétfagyott. Hmmm. Apróbb egyéb bugfixek után kiderült, hogy a korabeli assembly startup kód eredete bizonytalan, használhatósága kétséges, szóval inkább újraírtam azt is, Pascalban. Köszönhetően annak, hogy a fordítóban megcsináltam a GEMDOS trap generálást ez kb. 1 órás munka volt, ráadásul megjavította a paraméterkezelést, és sok más egyebet is.
Az Atari TOS-on futó, kereszfordítóval lefordított fordító tehát először képes volt lefordítani egy Hello World-ot. És aztán dobni egy jó nagy errort, hiszen hiányzott alóla a GNU assembler, meg egy linker. De kézzel, a host platformon összelinkelve az egészet már működött.
De itt fel is akartam adni, mert fingom sem volt honnét szedek működő GNU assemblert és linkert TOS-ra. (Minden csomag azt írta hogy MiNT kell neki, ami egy multitasking-POSIX "feltét" TOS-ra. Kiderült ezek nagy része megy sima TOS-on is. De hát értek én hozzá? Sose volt Atarim...) Végül előkerült az októberi scener kolléga e-mailben, és egy működő GNU assemblerhez irányított. Juhé!
Viszont a GNU linker szétfagyott. Szóval Amigához hasonlóan, Atarin is a VBCC compiler vlink-je lett a nyerő megoldás. Szóval némi hackeléssel és a maradék pár Sysutils függvény implementálásával később:
Kapcsolódó dokumentáció itt. Runtime library forráskód itt.
Egyetlen dolog maradt még, ami kicsit böki a csőröm - a GUI-s alkalmazások. A GEM alatti AES és hasonló függvények kissé más ABI-t használnak, azt is meg kéne tanítani a fordítónak, hogy ne kelljen kézzel assembly-t írni.
De mivel az Amiga után a TOS-tól nem vagyok elhalva (és akkor nagyon finom voltam), gépem sincs (és nem is volt, bár még lehet) és amúgy sem óhajtok még egy nemlétező OS-re még egy portot a nulláról implementálni és karbantartani, ezért ez nagyon jó eséllyel ennyi volt. De mókának nem volt rossz.
Szerk (másnap):
Well, GUI-s alkalmazások, mire jó ha az embernek nem jön álom a szemére, ugye:
Na de tényleg ennyi. :)
- Chain-Q blogja
- A hozzászóláshoz be kell jelentkezni
Hozzászólások
Errol ez jutott eszembe:
https://hackernoon.com/win3mu-part-1-why-im-writing-a-16-bit-windows-em…
- A hozzászóláshoz be kell jelentkezni
Pont igy.
-=- Mire a programozó: "Na és szerintetek ki csinálta a káoszt?" -=-
- A hozzászóláshoz be kell jelentkezni