( Csab | 2019. 09. 18., sze – 05:41 )

> Mert C64-et lehetett C és C++ nyelveken programozni?
Én a C nyelvet C64-en tanultam meg, a C++ akkor még igencsak gyermekcipőben járt. Pascalban is lehetett egyébként programozni.

Miért gondolod, hogy a C64 más volt? Alacsony órajel, bármit ráköthettél a buszra, úgy forrasztottál, ahogy nem szégyelltél. Nem ugyanaz 1 MHz-es buszra kütyüt csinálni, mint 300 MHz-re. Órajelciklusra tudtad, hogy mi mit csinál. Egy mag van, interruptok kezelik a párhuzamosan történő eseményeket, nincsenek taszkok, kiszámítható, nem érnek meglepetések, könnyen kifagy, ...

Megnézel egy AVR-t, nincs olyan, hogy "start_timer" függvény. Pont ugyanúgy programozod Atmega328P alatt a timert, mint C64-en a $DC00/$DD00-n elhelyezkedő CIA chipeket. Kézzel gányolsz a regiszerekben. Az Arduino a timerek funkcionalitásának 5%-át használja ki. Ha valamit akarsz, le kell menni az IO regiszterek szintjéhez. Egy mai PC kirúg téged a fenébe, ha IO regisztereket akarod piszkálni. Az a driver feladata.

Egy mai PC-n fogalmad sincs arról, hogy mi az a DMA. A driver-ek elintézik neked az egészet, nincs kapcsolatod a mikroprocesszorral.

A mikrovezérlők világa hardver közeli világ, ahol érzed a rendszer lüktetését. Ne gondold, hogy másképpen működik egy 8 bites AVR, mint a 8 bites C64.

És ott van a memória és a sebesség. Szinte nap mint nap szembesülsz azzal, hogy kevés van belőle. Kísérteties hasonlóság amikor egy stringet nem RAM-ban, hanem a FLASH-ben tárolom, mert kevés a memória. Nézegetem az assembly-t, látom, hogy a gép 32 bitesre fordította, pedig 8 is elég lenne, módosítom a kódot és gyorsabb is lesz.

Munkahelyen ha short int-et, vagy unsigned char-t használnék ciklushoz, minimum hülyének néznének. Miközben egy C64 alatt ez mindennapos.