9. Gépközeli feladatok


   Ebben a fejezetben olyan  feladatok  szerepelnek,  amelyek
valamilyen szempontból igénylik a számítógép mélyebb  ismere-
tét. Ennek ellenére mindegyik programozási feladat. Úgy  gon-
doltuk ugyanis, hogy ebbe a gyűjteménybe nem illenek bele mű-
szaki jellegű feladatok. A fejezet két részből áll:

   - mérés-vezérlés,
   - gépi kód.

   Az első rész, bár programozással kapcsolatos,  mégis  igé-
nyelhet műszaki tevékenységet: a mérő, illetve vezérlő  rend-
szer összeállítását.
   A másodikban gépi kódú feladatokkal foglalkozunk, ami  sok
nehézséget okozott: melyik processzorral, melyik géppel  fog-
lalkozzunk? Végül is úgy döntöttünk, hogy a  Z80-at  választ-
juk, de a feladatok jelentős része más processzortípusokon is
megvalósítható.


Javasolt irodalom:

1. Kovács M.: Számítógép a fizikatanításban.
   OPI, 1985.
2. Sztrókay K.: A Z80 assembler.
   Műszaki Könyvkiadó, 1985.
3. Erdős I.: Commodore 64 assembly.
   LSI ATSZ, 1985.
4. W. Link: BASIC a mérés-, a vezérlés- és a szabályozástech-
   nikában.
   Műszaki Könyvkiadó, 1987.
5. Babán G. - Masa I.: Gépi kódú programozás kezdőknek és ha-
   ladóknak C16 és PLUS/4 számítógépre.


9.1 Mérés - vezérlés


   A most következő  feladatok  többségének  megoldása  akkor
látványos, ha megfelelő interfésszel a szövegben szereplő pe-
rifériákat is működtetni tudjuk.  Érdemes az adott interfész-
hez kimeneti és bemeneti szubrutint írni. A kimenetinek adjuk
meg a K(1)...K(8) változókban a kimeneti bitek értékét, a be-
menetitől pedig a B(1)...B(8)-ban kapjuk vissza az informáci-
ót. Ha nincs interfészünk, próbáljuk a működését  modellezni!
A bemeneti alprogramhoz a billentyűzeten, a kimeneti  alprog-
ramhoz a képernyőn vagy a hanggenerátorban keressünk megfele-
lő egyszerű helyettesítő funkciót, de semmiképpen sem érdemes
vaktában próbálkozni a számítógép ki- és  bemeneteivel,  mert
könnyen okozhatunk maradandó változást az áramkörökben.
   A feladatok tetszőleges nyelven megoldhatók, mivel azonban
a gépeink túlnyomó többsége BASIC-gép, ez  a  legegyszerűbben
elérhető nyelv, a feladatok megfogalmazása is ehhez igazodik.
Az első feladatokat ujjgyakorlatnak szántuk, a  megoldások  a
további feladatoknál felhasználhatók.
   Természetesen gépi nyelven is lehet próbálkozni a  felada-
tok megoldásával, hiszen a bitműveletekhez  és  időzítésekhez
ez a legalkalmasabb.


9.2. Gépi kód


   Az egyes mikroprocesszorokat sajnos  eléggé  eltérő  módon
kell programozni, ezért ez az  alfejezet  nem  lehet  annyira
független a géptől, mint a többi. A másik nehézség abban rej-
lik, hogy még az azonos processzorral dolgozó gépek között is
rengeteg különbség lehet a gépi kódú programozás  szempontjá-
ból. Az itt következő feladatok első csoportja egy-egy  szub-
rutin vagy program írását követeli  meg.  Ezeket  tetszőleges
személyi számítógépen meg lehet oldani. Nagy  segítséget  je-
lent, ha van a géphez egy ASSEMBLER program, de legalább  egy
monitor, amely programok írását, belövését  segíti.  Bizonyos
monitor funkciókat BASIC programmal is megvalósíthatunk  (me-
móriakiírás, tizes-tizenhatos átszámítás, egy bájt töltése  a
memóriába stb.). Egyes feladatokhoz elkerülhetetlen  a  memó-
riafelosztás ismerete, másoknál nagyon jó hasznát vehetjük az
egyes ROM rutinoknak, ezek belépési címét érdemes kikeresni a
(sajnos elég ritka) szakirodalomból.
   A feladatok második része programelemzés, hibakeresés. Itt
az egyik legelterjedtebb mikroprocesszort, a Z80-ast  válasz-
tottuk. Ezzel egy nagyon elterjedt gépcsalád, a COMMODORE ki-
esett. Akinek ilyen gépe van, ne keseredjék  el,  hanem  vagy
forduljon a bőséges szakirodalomhoz, vagy  ismerjen  meg  egy
sokkal barátságosabb mikroprocesszort!