Professional Documents
Culture Documents
ROM Cartrige-Ek Története. TV-BASIC Különkiadás. Játékújdonságok. Hogyan Készült Az Ishido. TZX Mouse És JoyTape Player. Border És Multicolor Effekt
ROM Cartrige-Ek Története. TV-BASIC Különkiadás. Játékújdonságok. Hogyan Készült Az Ishido. TZX Mouse És JoyTape Player. Border És Multicolor Effekt
hu
sCenE esszencia
ZX81 expander
Assembly ovi
Micro-Pokeer
Rejtvény
2015. 2. Szám
TARTALOM
Beköszöntõ...................................................................................................................................................................3
A RCKÉPCSARNOK
SPECTRUMOLÓGIA
Sinclair vakóra.......................................................................................................................................................8
LOAD
JÁTÉKÚJDONSÁGOK.................................................................................................................................................12
PROGRAMOZÁSTECHNIKA
SDK: SpeccyBeep.....................................................................................................................................................34
S C EN E ESSZENCIA
mescaline synesthesia...................................................................................................................................39
HARDVERSIMOGATÓ
HARDVER ÖTLETEK
FEKETE DOBOZ
Olvasói levelek.....................................................................................................................................................53
Rejtvény........................................................................................................................................................................54
2
BEKÖSZÖNTÕ
Elérkezett hát az idõ a második szám megjelenésére, A porolás kapcsán megemlíthetjük a Border és Multi-
ami talán még nagyobb mérföldkõnek tekinthetõ, color effekt címû cikket is, bár valójában most egy
mert a kezdeti lelkesedés sokszor már nem elég a teljesen új mû született a portálon eddig olvasható mû
folytatáshoz is, azonban sikerült ezt is megugranunk, romjain, mely így közérthetõbben vezet be ezen
ahogy azt tapasztalhatjátok. Most is igyekeztünk az effektek rejtelmeibe és immáron a teljesség igényével
egykori Spectrum Világ szellemiségét megõrizni és készült, melyet persze ismét Pgyuri jegyez, aki emel-
minden olvasónknak adni valami számára érdekes lett a BASIC turpisságairól is fellebbenti a fátylat a
olvasmányt. Mindemellett a Mikulás és Karácsony TV-BASIC különkiadása címû érdekfeszítõ sorzatában.
közeledtével szerettünk volna egy kis többlet tarta-
A hardver õrülteknek is szeretnénk kedvezni, ezért a
lommal is szolgálni, hogy az ünnepek alatt legyen
berkeinken belül folyó munkákba engedünk egy kis
bõséggel Spectrumos téma is terítéken.
betekintést, amihez most Jocó nyújtott hathatós segít-
Bár a szerkesztõségünk címére ugyan kevés vissza- séget.
jelzés érkezett, ugyanakkor a fórumon és a különféle
A Spectrumos témák mellett mindenképp szeretnénk
facebook csoportokban elcsípett visszhangok alapján
teret engedni a ZX81-gyel foglalkozó írásoknak is,
azért úgy látjuk, hogy az alapkoncepciónk találkozott
ennek elsõ hírnökeit olvashatjátok is már ebben a
az olvasóink igényeivel, így ezt a vonalat igyekszünk
számban.
továbbra is képviselni.
Reméljük a "lap" továbbra is elnyeri tetszéseteket és
Nagy örömömmel köszönthettünk új szerzõket is,
lesznek, akik szívesen bekapcsolódnak a további
ráadásul így újabb állandó rovatoknak és cikksoroza-
munkába akár csak egy-egy cikk erejéig. Ugyanak-
toknak is örülhetünk.
kor mindenképp várjuk véleményeteket, ötleteiteket
A sCene esszencia rovat kapcsán pedig a portálon melyekkel jobbá, érdekesebbé tehetjük a mi kis kiad-
korábban kedvelt rovat visszatérésének lehetünk ványunkat.
tanúi G.O.D-nak hála, annál is inkább, mert ezt a
Ezúton szeretném ismét megköszönni a
témát többen is hiányoltátok.
szerkesztõségünk szerzõinek és munkatársainak azt a
Továbbra is szeretnék szemezgetni korábban a sok munkát, melyet befektettek ezen újabb szám
portálunkon megjelent érdekesebb írásokból is, hogy elkészítésébe.
az immáron leporolt cikkek még több Z80-szívû
olvasónkhoz juthassanak el és talán tökéletesebb
formát ölthessenek. Így kerülhetett sor most ROM
cart-ok története címû cikk felfrissítése, melyet jelen
esetben a korábban készült, de még eddig meg nem
jelentetett Sam. Joe írás, a Sinclair vakóra indukált.
Egyelõre még csak reménykedhetünk, hogy a Minden
hétre egy játék címû állandó portál rovatunk atyja
további írásokkal is megörvendeztet majd bennünket
a jövendõben.
IMPRESSZUM
Fõszerkesztõ: Kardos Balázs (Balee) Felelõs szerkesztõ: Egri Imre (Zimi) Szerkesztés, tördelés, grafika:
Molnár Péter (Mopi)
Rovatvezetõk: Buzogány Csaba (Makranc), Mezei Róbert (M/ZX), Tanács Imre (Kapitány), Kardos Balázs
(Balee), Lakatos Péter (Latyi.ca), Pgyuri, Taletovics Dávid (G.O.D)
Szerzõk: Bicsák Lajos (Asimo), Gondos Csaba (Csaba), László József (FPGA Jocó), Mezei Róbert (M/ZX),
Pgyuri, Samu Józef (Sam. Joe), Taletovics Dávid (G.O.D)
Szerkesztõség e-mail címe: speccyalista.vilag.szerkesztoseg@sinclair.hu
Kiadó: Speccyalista Baráti Kör http://sinclair.hu
2015. december
3
ARCKÉPCSARNOK
INTERJÚ A BÍRÓ TESTVÉREKKEL (1024 STUDIO)
A Sinclair.hu mindig is fontos feladatának érezte, Úgyhogy tartozol még azzal az információval, hogy
hogy a felkutassa a hazai "Spectrumos éra" jeles mi módon sikerült ránk találnod.
alakjait és emléket állítson akkori tevékenységüknek.
De nincs ez másként a határon túli magyarság körébõl
kikerült fejlesztõkkel, hisz így bepillantást nyerhetünk Sinclair.hu: Nos 2005-ben elég volt rágugolnom a
- legalább egy picit - az akkori erdélyi spectrumos 1024 studio bíró ádám és zoltán kombinációkra.
életbe, amelyre gyerekként nemigen volt rálátásunk. Most 2015-ben pedig már az akkor levelezésünk-
Arról nem is beszélve, hogy a kezdeti spectrumos ben elhangzott StudioRIP kifejezés segített ismét
próbálkozások után napjainkban igazi siker- megtalálni benneteket.
történetbe csöppenhetünk. Talán e kis bevezetõ után kezdjük ott, hogy mikor,
Bíró Ádámot és Zoltánt kérdezzük az emlékezetes hogyan kerültetek kapcsolatba a számítástech-
kolozsvári évekrõl, akiket az Opus1 címû remekbe- nikával, ezen belül is a Sinclair gépekkel?
szabott Spectrumos kottaszerkesztõ és lejátszó prog- Bíró Zoltán: A romániai kommunista rendszer némi-
ram kapcsán sikerült felkutatnunk és akik mára a leg eltérõen a magyarországitól eleve gyanakvóan
nemzetközi porondon is elismert szoftverfejlesztõkké tekintett minden olyan kezdeményezésre, mely kicsit
váltak. is a nyugat csillogására emlékeztette az elvtársakat.
Másrészrõl viszont a megalomániás hatalom a hazai
személyi számítógépek fejlesztését státusszimbólum-
ként kezelte, és ennek megfelelõképpen támogatta is.
Ezt a tudathasadásos kettõsséget úgy oldották fel,
hogy mindenféle fura elnevezéssel illették ezeket a
gépeket, mint pl. Oktatási Célú Programozható Au-
tomata, Elektronikus Játékok Televízióra stb.,
nehogy véletlenül elhangozhasson az, hogy személyi
számítógép és ügyeltek arra, hogy ilyen
készülékek magánszemély tulajdonába ne nagyon
kerülhessenek. (A CIP-01 számítógépen is pont egy
ilyen lehetetlen felirat látható, ld. a mellékelt fotót.)
4
Elsõ komolyabb találkozásunk a számítástechnikával
így aligha meglepõ módon a pionírházban történt,
Sinclair.hu: Mi volt az elsõ komolyabb próbálkozá-
kezdetben Prae, késõbb a Spectrum kompatibilis
sotok?
HC-85 formájában. Ez utóbbi készülék amúgy
érdekes módon fejlettebb volt, mint az eredeti Spec- Bíró Ádám/Zoltán: Egy felerészt BASIC-ben, fele-
trum, 48K helyett árnyék RAM-os 64K-án futott, részt gépi kódban megírt evolúciós játék, ahol
ráadásul olyan tár-bíró áramkörrel, amelynél alkatrészekbõl kellett összerakni egy növényevõ
képernyõolvasásmemóriafrissítés konfliktus keze- állatot, az Evolutaur-t, amely egy virtuális világban
lését sokkal ügyesebben oldották meg, mint az ere- próbált túlélni, a forduló végén pedig maga a
detiben. szoftver pontozta az állat túlélési teljesítményét. Ek-
kor a játékosnak (levonva a menet tanulságait)
lehetõsége volt egyvalamit változtatni az állaton (pl.
hosszabb nyak), de számítania kellett arra, hogy
közben a táplálék is adaptálódott a következõ for-
dulóhoz, pl. az új menetben a program a gyümöl-
csöket magasabbra helyezte a fákon. Patrubány
Miklós közbenjárásának és segítségének
köszönhetõen sikerült összehozni, hogy a román
lemezkiadó vállalat, az Electrecord magnókazetta
formájában árulta a játékot, de sajnos a határidõ
miatt össze kellett csapnunk az egészet, így sikerült
elfuserálnunk egy igazán jó ötletet. Ha lenne idõnk és
Az elsõ saját számítógépünket 90-ben tudtuk meg- agyunk hozzá, lehet, szívesen újraírnánk 2015-ös
vásárolni, rögtön a rendszerváltás után; Bukarestig szinten, természetesen.
kellett menni érte és három havi fizetésbe került.
Természetesen Spectrum kompatibilis gép volt, a te-
levíziógyár által piacra dobott CIP-01, enélkül fel Sinclair.hu: Nem maradt fenn az utókornak egy
sem tevõdhetett volna, hogy megírhassuk az OPUS példány? Szívesen archiválnánk ezt is a Magyar
1-et. fejlesztések közé
Bíró Ádám/Zoltán: Nekünk sajnos biztosan nem. Elvi-
leg megtörténhet, hogy az Electrecord archívumában
Sinclair.hu: Mennyire volt elterjedt a ZX Spectrum még megtalálható, de kétlem, hogy egyszerû pro-
Erdélyben? Volt-e klubélet? cedúra lenne utánajárni.
Bíró Ádám/Zoltán: Amint már említettük, szaküzletbõl
vagy más, hivatalos forrásból gyakorlatilag lehe-
tetlen volt géphez jutni magánszemélyként, még ak- Sinclair.hu: Mindig együtt fejlesztgettetek?
kor is, ha valaki hajlandó lett volna ezért az Bíró Ádám/Zoltán: Igen, leszámítva két esetet.
élvezetért akár horribilis összeget is fizetni. Határon
Az elsõ, amikor (a rendszerváltás után) Ádám teljesen
átcsempészett készülékbõl viszont került jó néhány
önállóan fejlesztett egy, az iskolaújságra szabott
magánkézbe is, természetesen messze nem annyi,
kiadványszerkesztõ programot. Mai szemmel eléggé
ahány Magyarországon. Ezek többnyire Spectrum
primitív volt az egész, de mindössze 128 kilobájton
kompatibilis gépek voltak, Commodore Atari stb. csak
meg lehetett szerkeszteni az egész újságot, több
elvétve akadt.
betûtípussal, magyar és román ékezetes karak-
Szigorúan vett klubélet fel sem tevõdhetett, de a terekkel, félautomata szótagolással stb. Képeket,
pionírházas szakkörökön lehetett jó dolgokat tanulni, grafikákat sajnos nem támogatott, ezeket utólag
vagy inkább közösen játszani, esetleg játékokat rajzolták kézzel vagy fénymásolták az üresen ha-
csereberélni, ily módon egész jó Spectrum baráti gyott keretekbe. Annyiban nem volt ez kizárólag
Kör-ök verbuválódhattak össze. Kivételes alkalmak- Ádám munkája, hogy a szükséges hardveres áta-
kor az oktató még azt is megengedte, hogy egy lakításokat (bõvítés 128K-ra, saját memórialapozási
éjszakára, hétvégére stb. valaki hazavigye az egyik rendszer, nyomtatóinterfész) viszont Zoltán tervezte
gépet. Érdekes, hogy magyarországi szaklapokat és ültette gyakorlatba. Ezzel az együttmûködéssel
(Számítástechnika, Chip Mikrovilág stb.) viszont meg amúgy az a különös helyzet alakult ki, hogy így
lehetett rendelni, így egyoldalúan bár, de tudtunk nemcsak a program vált egyedi, konkrét feladatra
valamiféle kapcsolatot tartani a magyarországi kifejlesztett célszerszámmá, hanem az õt kiszolgáló
Spectrumos közösséggel. hardver is. Kár, hogy sem a szoftver, sem az egyetlen
példányban átalakított Spectrum kompatibilis gép
nem maradt fenn.
5
Ezenkívül volt még Ádámnak egy saját projektje egy Sinclair.hu: Hogyan jött az Opus no. 1 ötlete?
magyarországi fejlesztõi csoporttal is. Foglalkoztatok zenével?
Bíró Ádám/Zoltán: Zeneiskolába soha nem jártunk,
Sinclair.hu: Ádám magyarországi projektjérõl is szakszerû zenei képzésben sem részesült egyikünk
mesélnétek pár szót? sem, de zenélni természetesen szerettünk, Ádám
például kifejezetten jól gitározott. A gond a kot-
Bíró Ádám: A Kolozsvári Mûszaki Egyetemen készített taolvasás körül volt a Kodály-módszeren nevelke-
szakdolgozatom egy hangelemzõ és szintetizátor- dett magyarországinak nehéz lehet elhinni, hogy
program volt, ami fizikai hangszerekrõl rögzített hangszeren játszóknak vagy akár zene iránt komo-
hangminták alapján felépített egy hangszert leíró lyan érdeklõdõknek probléma legyen kottát olvasni,
hangszínfájlt, majd a projekt részeként készített MIDI de a román zenei oktatás sajnos a jóval nehézkesebb
lejátszó a hangszínfájlok segítségével lejátszott MIDI francia módszert követte. Így nem volt olyan könnyû
fájlokat. Amikor egy magyarországi hirdetésben ze- magánúton kottaolvasást tanulni az akkoriban ren-
nei adatfeldolgozásban jártas programozót kerestek, delkezésre álló anyagból. Így jött az ötlet, hogy itt a
a szakdolgozatom tapasztalatával a hátam mögött számítógép, zenei hangot tud kiadni, mi lenne, ha
belevágtam. A projekt rám esõ részének a zenét írnánk magunknak egy mankót, amelyik ügyesen
kellett elemeznie, és a grafikai modul fele a zenét leolvasná helyettünk a kottát. Sajnos az Op. 1-en
leíró információt szolgáltatnia (ritmus, hangerõ stb.), eléggé látszik, hogy a kottaíráshoz csak alapszinten
hogy az majd a zenével összhangban adhasson értõ emberek írták (az elõjegyzések kezelése például
grafikai aláfestést a zenének. Amennyire értettem, az nehézkes és logikátlan), de lehet, hogy ez csak egy
volt az elképzelés, hogy diszkókban kivetítõn fog plusz érdekessége a programnak.
menni az így generált kép nem tudom, hogy mennyi
valósult meg a projektbõl, de az én részem mûködött.
6
így egy idõre el is felejthettük a programozást és európai árnak és a felhasználóbarát koncepciónak,
hosszú évekig kiadványszerkesztéssel (DTP) foglal- illetve a fejlett grafikus interfésznek köszönhetõen.
koztunk.
A szoftverfejlesztés témája akkor vált igazán
égetõvé, amikor elérkeztünk arra a szintre, hogy a
nyomdai filmek elõkészítését is vállalni tudtuk. Akkori-
ban ritka volt az a nyomda, amelyik bármilyen
klisékészítõ eszközzel is rendelkezett volna, a
méregdrága filmlevilágítók néhány elit DTP cég bir-
tokában voltak, így az egyetlen opció a bér-
levilágítás volt eléggé borsos áron, mert maga a
nyersanyag is drága volt, és a befektetésnek is meg
kellett térülnie. És ez volt a kisebbik gond, ugyanis az
eszközöket kiszolgáló (ugyancsak elképesztõen drá-
ga) szoftverek elnézést a szójátékért echte fel-
használóellenségek voltak. Sok esetben még
tisztességes elõképet sem generáltak, így elég volt
egy kis figyelmetlenség, s sokszor csak több méter
film elpocsékolása után derülhettek ki olyan egyszerû Sinclair.hu: Meg tudnátok fogalmazni egy
dolgok, mint hogy a munka jobb esetben keresztbe mondatban, hogy mit jelentettek számotokra azok
fordulva, rosszabb esetben lelógva jelent meg a az évek?
filmen. A veszteséget ilyenkor mi álltuk, saját Bíró Ádám/Zoltán: Túl a soha vissza nem térõ fia-
zsebünkbõl. Érlelõdött már a gondolat, hogy ennyi talkori évek jellegû közhelyeken: volt egy sajátos, ma
pénzért mi sokkal rendesebb programot tudnánk írni, már nehezen érthetõ varázsa annak, hogy mindössze
de az igazán kedvezõ alkalom akkor adódott, amikor 64 kilobájt RAM és egy csupasz fehér képernyõn
majdhogynem a szemétdombról megszereztük villogó kurzor látványa függõséget tudott kialakítani
életünk elsõ levilágítóját. Az elektromechanikai egy számítógép-rajongónál.
felújítás nem okozott gondot, de semmiféle
szoftverünk nem volt a készülékhez. Ha akkoriban lett
volna fölösleges 4-5 ezer dollárunk, lehet, hogy a
könnyebbik utat választjuk, megvesszük az akkoriban
elérhetõ, kényelmetlen és drága szoftverek valame-
lyikét, és ma is DTP-vel foglalkoznánk. De nagy sze-
rencsére pont egy vasunk sem volt, ráadásul azonnal
leesett, hogy itt a nagy lehetõség, amelyre olyan
régóta várunk, hiszen lélekben mindig is programozók
voltunk. Kapóra jött a Linuxos világból jól ismert (de
Windowson is hozzáférhetõ) ingyenes GhostScript
programcsomag, így magának a PostScript interpre-
ternek a megírásával már nem kellett kínlódnunk.
Ez volt a StudioRIP születésének a pillanata.
Ezenkívül nagy segítségünkre volt az az angliai,
használt levilágítókkal foglalkozó kisvállalkozás,
amellyel Ádám még a legelején összehaverkodott, és
akik látva a StudioRIP elsõ, még nagyon kezdetle-
ges változat vázlatát meggyõztek, hogy a DTP-t
hanyagolni kell és minden erõnket a szoftver mi-
hamarábbi fejlesztésére kell fordítanunk. Így merész
lépésre szántuk el magunkat: a cég átváltozott
StudioRIP Kft-vé, a DTP vonalat fokozatosan elsor-
vasztottuk, majd ejtettük is, és innen tovább minden
erõforrásunkat a StudioRIP fejlesztésének
szolgálatába állítottuk.
A nyerõ lap bejött, azóta a 4.1-es verziónál tartunk
és világszerte néhány ezren használják már a prog-
ramcsomagot, fõképp az igen kedvezõ, kelet
7
SPECTRUMOLÓGIA
SINCLAIR VAKÓRA
Egyszer, ha majd nagyon-nagyon sok idõm lesz, zat már tudta elvben a dátumot is. Létezett készre
akkor írok egy hosszabb, elbeszélõ jellegû szerelt és házilag összeszerelhetõ kitt
költeményt, Tíz fantasztikus dolog, ami verziókban is. Ez azért poén, mert az
csodás mód nem volt elég ahhoz, egyik korabeli elektronikai hobbima-
hogy víz alá nyomja a Sinclair-t gazin két ruhacsipeszt, két rajz-
címmel. szöget meg egy darab drótot
Tulajdonképpen egy fejezet, a jelöl meg segédeszközként,
ZX Spectrum ROM Cartridgek ahhoz, hogy az elemet a
története olvasható e lapokon. helyére lehessen tenni. Akkor
milyen lehetett az
Egy az elõtti fejezetnek lévén alkatrészekbõl megépíteni?
az késõbbi történet és már a Sin-
clair Research-höz kötõdik - pedig 6. Ez egy olyan kvarcóra,
a Black Watch esetét szánom, mely amiben van egy trimmer,
csodálatos szerkezetet a Sinclair Ra- amivel lehet állítani a futás
dionics dobta a piacra. Annak ellenére, hogy egy sebességét. A fentebb említett magazin szerint az
karóra volt, az a veszély, hogy a pontos idõ meg a elem behelyezését követõen további négy nap, hogy
dátum megtudható a révén... Na, az nem fenyegetett! sikerüljön a megfelelõ tempót belõni.
1. A vezérlõchipje annyira érzékeny volt az elek- 7. A mûanyag tok összepattintós kivitelû. Apróbb
trosztatikus feltöltõdésre, hogy egy szõnyegpadlós hibája, hogy nem szeret egy darabban maradni.
iroda, egy mûszálas ruhadarab, vagy egy kósza Állítólag kiadták a probléma megoldását egy külsõs
gondolat elegendõ volt ahhoz, hogy megfektesse. tanácsadó cégnek. Valamivel késõbb visszakaptak
Ilyenkor rendszerint az történt, hogy a kijelzõ egy Black Watchot egy rövid Megoldottuk! üzenet
egyetlen igen fényes szám mutatása közben fagyott kíséretében. Az órán áthajtottak egy csavart középen.
le, ami túlterhelte az akkut, amitõl az jobb esetben Mára nagyon kevés példány maradt fent belõle, mert
lemerült, roszszabb esetben felrobbant. a visszaküldött hibás és eladatlan Black Watch kész-
2. A benne lévõ kvarckristály érzékeny volt a letek alkatrészeit felhasználták egy Microquartzhoz.
hõmérséklet változásaira, így télen és nyáron eltérõ
sebességgel járt az óra.
3. Az elem élettartama 10 napra volt tehetõ, de
legalább nehéz volt cserélni. Black Watch tények
4. A Black Watch úgynevezett vakóra, azaz a A Sinclair Radionics 1975 szeptemberében dobta
kijelzõje csak akkor mutatja a pontos idõt, ha meg- piacra a legelsõ digitális órát a Black Watch
nyomva tartunk egy control panel nevû valamit. képében. Összeszerelve 24.95, kitben 17.95
Hogy ez mi fán terem, én elképzelni sem tudom, de fontért lehetett hozzájutni. Manapság a gyûjtõk
nem gomb, az biztos, mert egy reklámban úgy em- 150-200 fontot is megadnak érte.
legetik az istencsapását, hogy No unprofessional Egy korabeli legenda szerint azonban több órát
buttons. Pont ez az egyetlen igen fontos kezelõszerv hoztak vissza garanciális javításra vagy cserére,
szeretett bedögleni, ami jobb esetben nem tette mint amennyit gyártottak. Állítólag a Sinclair szer-
lehetõvé, hogy megtudd a pontos idõt, rosszabb vízben még két év multán is voltak javításra váró
esetben nem tette lehetõvé, hogy lekapcsold a példányok.
kijelzõt. A folyamatosan mûködõ kijelzõ... Na, mit
csinált? Igen! Túlterhelte az akkut, amitõl az jobb Ezek után nyilvánvaló, hogy gazdaságilag kész
esetben lemerült, rosszabb esetben felrobbant. Elõbb katasztrófa volt ez a termék, állami támogatás
ez, késõbb a ZX Spectrum billentyûzete
Lehetséges, nélkül a cég csõdbe ment volna. Hatalmas rak-
hogy Sir Clive be volt oltva normálisan mûködõ gom- tárkészlet maradt az eladatlan és hibás órákból.
bok ellen? Ezeket felhasználva, gyakorlatilag ugyanazt az
elektronikát újradobozolva, Microquartz néven ki-
5. Több változat létezett belõle. A fekete verzió az hoztak 1977-ben egy autós órát, amit többé
órákat és perceket mutatta, vagy a másodperceket kevésbé már sikerült értékesíteni gond nélkül.
gondolom éppúgy, mint kölyökkorom kétgombos
kvarcórái. A valamivel szofisztikáltabb szürke válto- Balee
8
SPECTRUMOLÓGIA
A SPECTRUM ROM CARTRIDGE-EK TÖRTÉNETE
Kutakodjunk bármelyik megbízható Sinclair in- változat árának (5 font) háromszorosát (15 font)
formációforrásban is, egészen bizonyos, hogy minde- kérték értük! (Arról már nem is beszélve, hogy a
gyik tízféle megjelent Spectrum ROM cartridge-et fog Planetoids eredeti kazettás változatának "B" ol-
említeni. Pedig létezett egy a Sinclair Re- dalán volt egy bonusz játék is, a Missile.) Csoda,
search által készített tizenegyedik is, hogy nem álltak sorban a népek, hogy megve-
melyrõl a legnagyobb valószínûséggel hessék ezeket? Ráadásul magán a ROM árán
a gyûjtõk zöme még csak nem is hallott! kívül a vásárlónak még ki kellett fizetnie 20
További érdekesség a Sinclair.hu által fontot az illesztõért. Számolgassunk csak
húsz évvel késõbb bemutatott darab. egy kicsit! 10x15=150. 150 + 20=170
Azon nemesen egyszerû oknál fogva, hogy font! Mindeközben egy 16K-s alapgép
az alapgép minél olcsóbb lehessen, a Spec- 125 fontba került, míg a 48K-s 175-
trum híján volt minden olyan beépített be! Nem segítette az eladásokat az
kiegészítõnek, mely a hasonlóan sikeres kor- sem, hogy az, aki botkormányillesztõre
társ gépeken - szinte - kivétel nélkül megtalál- vágyott, már jó eséllyel rendelkezett a Spec-
ható volt. Monitorkimenet, reset, joystickillesztõ, trumon kvázi szabvánnyá vált, Kempston rendszerû
hálózati kapcsoló, power LED és még sorolhatnánk. darabbal, mely mindössze 15 fontot kóstált és elõbb
Ezek aztán szépen-sorban vagy megjelentek külsõ hozzáférhetõ volt, mint az If 2.
illesztõk képében - vagy sem. Ha a Sinclair Research-nél átgondoltabban
válogatják ki a játékokat, akkor a ROM-ok még a
magas ár ellenére is sikeresek lehettek volna. Nem
Bumm a lábba! sokat változtatott az sem a helyzeten, hogy idõvel a
1983 szeptemberének végén dobta ROM-ok árát 10 fontra csökkentették. Ha már meg-
piacra a Sinclair Research, a ZX volt valakinek kazettán a 16K-s játék, akkor 10
Interface 2-õt, mely azon túl, hogy fontért sem kellett neki egy második kópia.
két botkormányt illesztett az Sir Clive Sinclair a ZX Spectrumot eredetileg tanuló-
alapgéphez, egy apró kis ajtó gépnek szánta és képtelen volt megbarátkozni azzal
mögött egy foglalatot rejtegetett, a gondolattal, hogy a vevõk mást hogy többet vagy
melybe ROM kártyákat lehetett dugni. kevesebbet, azt mindenki döntse el maga látnak
Összesen tíz program - Planetoids, Space Raiders, bele és esetleg csak és kizárólag játékra használják
Backgammon, Pssst, Cookie, Jetpac, Tranz am, Hungry és ebbéli álláspontjának többször is hangot adott. Ez
Horrace, Horrace and the Spiders, Chess - látott a magyarázata annak, hogy a nagyon sikeres
napvilágot ROM kártyaként, de éppen úgy nem géphez nagyon kevés Sinclair Research gyártotta
lettek igazán sikeresek, mint az illesztõ. A ROM-ok periféria készült és szöges el-
kudarcának okai nyilvánvalóak. lentéteként azzal az üzletpolitikával,
Ez a tíz az a program, mely nagyjából amit a CBM is követett a Commo-
minden Spectrum felhasználónak már dore 64 esetében, hagyta hogy
megvolt, lévén rögvest a 16K-s Speccy komplett háttéripar épüljön a ZX
piacra dobásakor 82-ben, vagy 83 Spectrum kiegészítõkre.
elején ott voltak a gép mellett az üzlet Ezzel magyarázom a programok
polcán. Ráadásul - a Chess kivételével - játékok vagy más ROM cartridge
mind 16K-s játék! Néha azon csodálko- formátumban kiadásának kihagyott
zom, hogy a Sinclair Research hogyan ziccerét is. Illetve még valamivel: Sinc-
maradhatott fent ilyen sokáig, mert bi- lairre jellemzõ volt, hogy õ problémákat
zonyos húzásaikkal mintha direkt lábon szeretett megoldani. Ha úgy
akarták volna lõni magukat, hogy aztán érezte, hogy egy adott fela-
csodálkozhassanak, hogy nehezen megy a sza- dattal elkészült, akkor az már
ladgálás. nem foglalkoztatta tovább,
A ROM-ok ügye is tipikusan ilyen! Nem elég, hogy más feladat után nézett. A
totálisan inkurrens, 16K-s programokkal töltötték mindenki által megfizethetõ,
meg a csinos kis papírdobozban forgalmazott, még tanuló-számítógépet, mint kihívást
csinosabb kis mütyüröket, de az eredeti, kazettás
9
a ZX81 és a Spectrum után egészen egyszerûen kipi- a biztonsági készséget nemes egyszerûséggel
pálta. letörte.)
Kihasználatlan adottságok
A technológia olyan lehetõségeket rejteget, melyet
még csak véletlenül sem használtak ki! A ROM akár a
16K-s, akár a 48K-s változat fejébe
gyömöszölhetõnél is lényegesen nagyobb mennyiségû
adatot tárolhat, ideálisan az "utántöltõs" játékokhoz,
látványos átvezetõ képernyõkhöz, digitalizált be-
szédhez, zenéhez. A kiadóknak külön jó hír, hogy a
másolása - ha nem is megoldhatatlan - de legalábbis
körülményes lett volna akkoriban. De végül csak az
utolsó elõnyt, az instant elérhetõséget, a gyakorla-
tilag zéró betöltõdési idõt élvezhették ki a fel-
használók, mely egy 16K-s programnál már közel
sem olyan vonzó, hogy indokolja a magas árat. Így a
Spectrum ROM cartridge-ek mára ritka és féltett Kissé furán fest a Kempston Pro Joystick Interface a
darabjai lettek a gyûjtõknek. Az áruk állapottól maga három borkormány aljzatával. A Kempston,
függõen 60-80 fontra is felszaladhat. Cursor és Sinclair illesztõkkel kompatibilis eszköz,
ROM foglalata fedetlenül díszeleg a D9-es csatla-
Követõk és tervek kozók mellett. Az 1984-ben piacra dobott
Az If 2-õn kívül több olyan interface is létezett, mely szerkezetért egyes források szerint 20, mások szerint
képes volt fogadni a ROM cartridge-eket, de még ez 17 fontot kértek. Bár sokkal csúfabb szegényke, mint
is kevés volt ahhoz, hogy érdemben változtasson a az If 2, mindenképp jobb vételnek tûnik, mint az.
ROM-ok helyzetén. Az AGF Ramslot csak és kizárólag a ROM cartridge-
ek illesztésére volt alkalmas. Egyúttal volt a legol-
csóbb (10 font) és a legrondább az összes közül.
Lévén a konkurens termékek árának a feléért mind-
össze azok funkcionalitásának is nagyjából a felét
kínálja, mindenki döntse el maga, hogy megérte-e
vagy sem. Errõl és az összes többi illesztõrõl is kitûnõ
képek láthatók Paul Farrow igencsak igényesen
kivitelezett oldalán.
Ami pedig a ROM-okat illeti, nos a Parker Software
a Sinclair Research féle ROM-ok sikertelensége el-
lenére tervezte, hogy 1984 októberében megjelentet
öt programot ebben a formátumban. Ezek a Popeye,
A legelterjedtebb egyértelmûen a Ram Electronics, Q*Bert, Gyruss, Star Wars: The Arcade Game, és
RamTurbo nevû multifunkciós botkormányillesztõje. St ar Wars: Return of the Jedi - Death Star Battle
(Megjegyzés: A Ram itt nem elírás, kosról van szó és lettek volna. A tervezet végül nem került
nem memóriáról.) Az 1984-ben megjelent, 23 fontos, megvalósításra.
választhatóan Kempston, Cursor és Sinclair szab-
2003-ban Gondos Csaba és
ványokkal kompatibilis illesztõ sem tudott sokat
a Sinclair.hu gon-
változtatni a már vázolt helyzeten. Késõbb az
árát 19 fontra csökkentették, és pont a ROM dozásában jelent meg a
foglalatot hagyták le róla, hogy csökkent- MultiROM cartridge. A
sék a gyártási költségeket. Mindazonáltal Csaba által tervezett és
lehetséges volt ide utólag beforrasztani implementált ROM kártya
egy foglalatot, mert a kis felhajtható ajtó egyetlen 256Kbájtos
megmaradt. Kardos Bali gyûjteményében van (2Mbites) EPROM-ban tartal-
mazza - egyebek mellett - a ZX
(volt?) egy ilyen késõi, foglalat nélküli darab. A
RamTurbo talán az egyetlen a Spectrum illesztõk Interface 2-höz megjelent ROM
között, melyre építettek egy mûanyagfület, mely ca rtridge-ok tartalmát. A Spectrum bekap-
meggátolta, hogy gép bekapcsolt állapotában húz- csolása után megjelenõ menübõl kiválasztható, hogy
zák le, vagy dugják fel a gépre. (Nekem meg van melyik játékot kívánjuk betölteni. Az elsõ - 1.2-es -
egy olyan darabom, amirõl az eredeti tulajdonos ezt változatot követõ új, 1.3-as verzió új betöltõ
képernyõt kapott és néhány ROM csere is történt. A
10
kazettás tárolás tesztelésére képes. A "Soak teszt"
menüpont mibenlétével kissé tanácstalan vagyok,
lévén a "soak" kifejezés áztatást, átitatást jelent. Amit
igazándiból tesz, az mindössze annyi, hogy egy piros
blokk-kurzort mozgat folyamatosan a képernyõn,
nagyjából másodpercenkénti léptetéssel. Talán a sta-
bilitás vizsgálatára, lefagyások tesztelésére szolgál-
hat. A kazettás egység, joystick és a printer teszt
mibenléte egyértelmû. Izgalmasabb viszont az Inter-
face 1 RS232-es kapujának és a LAN-nak a vizsgála-
ta. Mindkettõhöz szükség van egy olyan gépre,
melyen ugyanez a program fut, hogy legyen, ami
válaszol a program által kiküldött karaktersorozatra.
A program további érdekessége, hogy a szerzõje az
a Dr. Ian Logan, aki a Microdrive ROM-jában lévõ
szoftvert is írta, illetve számos számítástechnikai
MultiROM immáron tartalmazza az egyetlen saját
témájú könyv szerzõje. További érdekesség, hogy õ
ROM-mal rendelkezõ játék, a Shadow of the Unicorn
valóban orvosként praktizált. (Még mondja valaki,
ROM-ját is. (Közbevetõlegesen egy kis magyarázat:
hogy ma már nem léteznek polihisztorok.)
az 1985-ös Shadow of the Unicorn nem csupán a jól
megszokott kazettán érkezett, hanem tartozott hozzá A System Test ROM Cartridge igazi ritkaság, még a
egy a buszcsatlakozóra dugható dobozka is, mely Spectrum témákban bibliának tekinthetõ World of
egyben volt Kempston joystick illesztõ és tartalmazott Spectrum sem említi meg sehol. Amennyiben a
16K ROM-ot, mely maszkolta a Speccy saját ROM- burkolat megbontása nélkül sikerül kinyerni a
ját. A játék maga hagyományosan, kazettáról tartalmát - ahogy KGB mondaná, a
töltõdött be. A SotU nem If 2 ROM car- "tárgyvédelmet" elsõdlegesnek tar-
tridge formátumban jelent meg, illetve tom, így a borítás tönkretétele szóba
nem a teljes játék volt az olvasható sem jöhet -, megígérhetem, hogy az
memóriában, nem számítható a hamarosan hozzáférhetõ lesz itt.
ROM cartridge-ek közé.) Amen-
nyiben 128K-s gépünk van, ak-
kor az ZX80 és a ZX81
emulátorokat is futtatha-
tunk, de helyet kapott
még a GW03 nevezetû
Spectrum ROM javítás TUDTAD?
és a ZXSM (SmartMedia
kártya illesztõ) legfrissebb ROM- A Speccyalista elnevezést az Úr 1998. évének
ja is. május havában, annak 5. napján adta nekünk
A titokzatos tizenegyedik Pgyuri, amit azóta is lelkesen licenszelünk. Noha a
portál indításának gondolata 1997-re datálódik,
A fentebb felsoroltakon kívül azonban létezett egy születésnapunknak mégis ezt a napot tekintjük.
tizenegyedik, szintén a Sinclair Research gon-
dozásában és szintén 1983-ban megjelent cartridge
is. Nem csoda, hogy szinte senki sem ismeri, lévén a
System Test ROM Cartridge nem volt kereskedelmi Logónkat 2004. szeptemberében Mópi alkotta
forgalomban kapható. A hivatalos Sinclair szervizek meg számunkra egy pályázat keretében, amin a
kapták - vehették? - a diagnosztikát szolgáló segéd- tagság egyhangúlag az Õ mûvét
letként. Az "Ikarusz mûszerfal mûanyagból" készült választott a
borítású cartridge nagy valószínûséggel egy Speccyalista Baráti
hétköznapi EPROM-ot tartalmaz, szemben a nagy Kör jelképének.
sorozatban készült játék cartok ROM-jaival. Azért a
bizonytalanság mert a fehér holló ritkaságú készség,
két darabból összeragasztott borítása nem tûnik ron-
csolás nélkül nyithatónak. A készlet része volt egy
hétköznapi If 2-is. A tesztprogram az alapvetõ funk-
ciók közül a billentyûzet, a tévémodulátor - színek (az
alap 8 szín, plusz bright), border, flash -, RAM, és a
11
LOAD
JÁTÉKÚJDONSÁGOK
Pixel Quest (Einar Saukas) A multicolor játékmotorjairól híres szerzõ gra-
filogikai játéka a Pixel Quest. Az ilyen játékok egy
berácsozott téglalapban vagy négyzetben egy
figurát rejtenek. A Pixel Questnél ezek a figurák a
nyolcvanas évek ZX Spectrum játékainak szereplõi,
tárgyai. A négyzetrácsos rejtvény bal oldalán és
felette számok találhatóak, amelyek azt jelzik, hogy
az adott sorban, vagy oszlopban mekkora méretû
színezett blokkok követik egymást. Minden ilyen
színezett blokkot legalább egy üres, színezetlen
blokk választ el a másik színezett blokktól. Az üres
blokkok mérete viszont nincs megadva. A játék
lényege a megfelelõ négyzetrácsok beszínezése,
ezzel az elrejtett figura megjelenítése.
12
LOAD
JÁTÉKÚJDONSÁGOK
Jumpcollision (Gamer80)
A ZX Dev'2015 Compora készült Raul Gamer80
Naveros játéka a Jumpcollison. Raul látszólag össze
nem illõ stílusokat dobott össze ebbe a 80 szintet
tartalmazó játékba, érdekes ötlet, de mûködik a
dolog
Minden szint egyetlen képernyõ, ahol a
továbblépéshez ki kell lõni az összes ellenséget. És
csak eddig sablonos a feladat, mert a célt egy
platformokon ugráló (!) ûrhajóval kell véghezvinni.
Lõni csak felfelé lehet, ugrálás közben pedig kerülni
kell az ellenségeket és a veszélyes platformokat,
tárgyakat.
Lirus (RetroSouls)
Denis Grachev kilencedik játékának elõdjét már
1998-ban megírta barátaival. Most újraalkotta az
eredeti szinteket és ötleteket. A játéknak van külön
48K-s és 128K-s verziója. Fegyveres vírusirtóként
kell tevékenykedned egy sokszintes komplexumban!
Négyféle fegyvert vehetsz fel a pályákon, kezdõ
fegyvered egy sima lézerfegyver. Minden szinten
biztosított az energia és lõszerutánpótlás. De ne válj
emiatt elbizakodottá, a vírusok ugyanis gyors ütem-
ben szaporodnak. Ha elfogy a lõszered az irtásuk
közben és utánpótlásért vissza kell menned, akár
egy közeli helyre is, mire visszaérsz, a vírusok meg-
sokszorozódhatnak! Sõt, a szaporodásuk miatt akár
körbe is keríthetnek. Ha egy ilyen helyzetben elfogy
a lõszered, csak áttörni tudsz rajtuk, ami komoly
energiaveszteséget és rossz esetben a hajód elvesz-
tését okozhatja. Sajnos Denis ezzel a játékkal
egyelõre búcsúzik a Spectrum színtértõl, reméljük
hamar visszatér!
Oceano (EgoTrip)
Amy elhatározta, hogy felfedezi a tengereket, meg-
keresve 20 mesés hatalmú kristályt, melyek már
régóta elvesztek az óceánban. De robothalak õrzik
õket, és savas buborékok, amik károsítják a tenger-
alattjáróját. Van fegyvere, amivel ártalmatlanítani
tudja a halakat, de ennek feltöltése eltart egy dara-
big, szóval nem lehet ész nélkül lõni õket. Rövid
megállás után a tengeralattjáró süllyedni kezd az
óceán feneke felé. Ha egy efféle helyszínen
egyáltalán értelmezhetõ, akkor 22 szobából áll ez
az útvesztõ. EgoTrip fõ platformja a CPC, de az AGD
adta lehetõségeket kihasználva kezdett idén Spec-
trumra is fejleszteni. Az Oceano elõször CPC-re jelent
meg, majd május végén Spectrumra is.
13
LOAD
JÁTÉKÚJDONSÁGOK
Planeta Rojo (Salvador Cantero) A cím angolul Red Planet, tehát a Vörös bolygó, a
Mars a helyszín, ahol egy lepusztult ûrállomás pin-
cerendszerét kell megsemmisítened. Ehhez össze kell
szedned 10 robbanóanyagot (a lila eszköz), levinni
õket a komplexum aljában lévõ raktárba, vissza-
menni a központi terembe és aktiválni a detonátort.
Közben persze nem érhetsz szinte semmihez, az
ellenségekhez pláne nem. Sõt, az oxigénpótlásról is
kell gondolkodnod, mert nem vagy túl jól eleresztve
ebbõl a fontos gázból. Korlátozott lõszerrel fegy-
vereket, valamint a zárt ajtókhoz kulcskártyákat is
találsz utad közben. Salvador elsõ játékához honfit-
ársai, a Mojon Twins Churrera játékmotorját
használta.
Rabid Mower (kas29)
Egy játék az orosz Aleksei Kaskarovtól, amirõl a
CSSCGC, vagyis a vacak játékok versenye jutott
elõször eszembe. Nem a minõsége, vagy játszhatat-
lansága, hanem a témaválasztása miatt. Mert mi is a
játék lényege? Le kell nyírni a füvet. Mennyire
egyszerûen hangzik, ráadásul a fûnyíród benzines,
tehát a kábelét tuti nem nyírod el, tele van a tank, mi
lehet a baj? Jobb, ha kipróbálod a gyakorlatban!
Feladatod, hogy egyetlen billentyû segítségével a
megfelelõ helyeken lenyírod a pázsitot. Mikor nyírni
akarsz, nyomd a gombot, mikor nem, akkor engedd
fel. Néha fûnyírás közben belefutsz különbözõ
akadályokba, amelyeket lehet, hogy nem érdemes
lenyírni, pl. a bokrokat alighanem nem muszáj
Minden szintnek megvan a maga
pontosságellenõrzése. A játék második, õrültebb sza-
kaszában ez tovább szigorodik. A 128K-s módban
hallható AY muzsika Alex Clap munkája.
14
LOAD
JÁTÉKÚJDONSÁGOK
Journey to Another World rendkívüli feszültség lejut az irodába, a
számítógépbe és az események hatására Lestert
(J.B.G.V.) elröpíti egy idegen világba, ahol mindjárt valami
J.B.G.V. 2011 óta készíti egyedi, felismerhetõ stílusú idegen, veszélyesnek tûnõ vadállattal találja szem-
játékait. Tizenegyedik játéka az 1991-ben megje- ben magát
Nem tudja, hol van, de életben akar
lent Amiga játék, az Another World és alkotója, Éric maradni.
Chahi elõtti tisztelgés. A játék mûfaja akció-kaland,
de a szerzõt ismerõk nem fognak meglepõdni a kis
arcade-minijátékokon sem, melyek a játékmenet
részét képezik. Ugyanígy jellegzetes a játék elõtti
álló és mozgóképes történetmesélés is. Egy viharos
estén Lester Knight Chaykin leparkol laborja bejára-
ta elõtt. A lifttel lemegy a mélyen föld alatt kialakí-
tott laborjába, ahol jólesõ csend öleli körül, már nem
érzékel semmit a pár másodperccel korábban még
kellemetlen égi háborúból. Teljes testszkennelés után
be is lép az irodájába, ahol bekapcsolja
számítógépét, bepötyögi a szokásos parancsot:
LOAD és várja legújabb projektje a SAIMAZOON
betöltését. Közben fent fokozódik a vihar és a hatal-
mas villámok egyike szerencsétlen helyen csap be, a
15
LOAD
ZX81 KLASSZIKUSOK - 1. RÉSZ
Néha érdemes kicsit visszatekintenünk, hogy honnan is tetlennek tûnt. A játék tartalmazza a legtöbb sakk
indultunk. Mondhat bárki bármit, leírhatatlan volt az szabályt, némi mesterséges intelligenciát (azaz tud
az élmény, amikor elõször tölthettem be programot lépni magától) és felhasználói felületet. A kód mind-
kazettáról a frissen zsákmányolt 1K-s ZX81-embe. összesen 672 bájt, ami a létezõ legrövidebb sakk
Hasonló érzés volt még elõtte a számítástechnika program implementáció a világon.
szakkörök keretében az elsõ BASIC programok meg-
írása kockás papíron, amelyet elõbb-utóbb a gimi Grafikát nem tartalmaz, betûk reprezentálják az
egyetlen ABC-80-ába is beütlegelhettünk. Már nem egyes figurákat a táblán. A program csak fehérrel
egyszer hallottam azt a kijelentést, hogy ha elõször képes nyitni és kétféleképpen, vagy E3-ra vagy D3-
ZX81-et láttam volna, biztos nem érint meg a ra. A kazettán ez 2 programnak felel meg az A és B
számítástechnika. Nyilvánvaló sületlenség lenne ezt oldalon, melyek kb. 30 másodperc alatt tölthetõk be.
állítanunk, persze az sem teljesen mindegy, hogy az A három alábbi szabály kivételével képes értelmezni,
evolúciós láncba épp hol sikerült bekapcsolódnunk, ellenõrizni a lépéseket:
ugyanakkor meg merem kockáztatni azt a kijelentést,
hogy ezek a korai láncszemek sem elhagyhatóak, · sáncolás
hogy tudjuk értékelni a kétségtelenül élvezhetõbb · átalakulás (Az átalakulás vagy átváltozás a
lépcsõfokokat. sakkban a gyalog különleges képessége.
Az viszont biztos, hogy ezen ZX81 programok leg- Amennyiben a gyalog eléri az ellenfél alap-
többjének esetében mindenképp szükség volt egy sorát (tehát a világos a 8. sort, a sötét pedig
köztes absztrakciós szintre, ami nélkül így utólag az 1. sort), a játékot tisztként folytatja.)
valóban kevésbé élvezhetõnek tûnhetnek ezek az · en passant (Egy különleges lépés a sakkban,
opuszok. olyan ütés, amelyre akkor kerülhet sor, ha az
Ebben a sorozatban szeretnénk áttekinteni a fon- egyik fél gyalogja kettõt elõrelépve kikerülné
tosabb állomásokat és nevezetesebb programokat. az ellenfél gyalogjának átlós ütését. Az
Gyanítom tartogathat meglepetést is ez a kis sorozat, egyetlen eset a sakkban, amikor egy gyalog
de ha másra nem is, hát egy kis nosztalgiázásra nem az átlósan elõtte álló, hanem a mellé lépõ
remek lesz. figurát ütheti ki.)
Állítólag a 2K Timex Sinclair 1000-esre készült verzió
már tartalmazza ezeket a lépéskombinációkat.
1K Chess A lépések megadásakor elõször a sor számát, majd
(1982 ARTIC Computing) az oszlop betûjelét kell megadni, pl. 7-E 6-E. A játék
általában sakk-matt-tal ér véget, új játékhoz be kell
ZX81 klasszikusok említésekor elsõnek az 1K Chess tölteni a kazettáról újra a megfelelõ verziót.
ugrik be talán mindenkinek, ami mellett nem mehetünk
Érdekesség, hogy a program dokumentált forrását
el szótlanul.
1983 februárban a Your Computer címû újságban
David Horne angol programozó 1982-ben készítette publikálta, mely most az interneten is fellelhetõ:
ezt a remek sakk programot az 1K-ás ZX81-re, és ez http://users.ox.ac.uk/~uzdm0006/scans/1kchess
nem városi legenda. Õ megtette, ami akkoriban lehe-
Reversi
(1982 - Sinclair Research)
Szintén óriási kedvenc volt a népszerû táblás logikai
játék számítógépes verziója már ZX81-en is, késõbb
pedig a Spectrumos verziója is. A játékot két játékos
játssza, játszhatunk a gép ellen vagy akár ketten
egymás ellen. A játék egy 8*8-as táblán zajlik. Az
nyer, akinek a végén több kavicsa marad a táblán.
16
A szabályokat bizonyára már mindenki ismeri, ezért Irányítás a kurzor gombokkal történik, a torpedók és
erre nem térnék ki. Lépni a sakkhoz hasonlóan az rakéták kilövését több billentyûre is rádefiniálták, így
oszlop és sor megadásával lehet. Ha játék közben mindenki kiválaszthatja, hogy melyik kényelmesebb
lépés helyett csak ENTER-t nyomkodunk, akkor egy számára, melyek a Q-W, 1-2, 9-0. Ráadásul
menüt kapunk, amiben választhatunk, hogy befejez- egyidõben lõhetjük ki mindkettõt. Ugyanakkor arra is
zük a partit vagy nehézségi szintet váltunk, esetleg ügyeltek, hogy a torpedók és a rakéták újratöltési
oldalt cserélhetünk.. ideje nem egyforma, a torpedókat nagyobb gyako-
risággal lõdözhetjük magunk elé.
17
A játék egyetlen nagy hibája, hogy csak egy labirin- A játék finomsága, hogy az elszalasztott ellenség a
tust tartalmaz... Földrõl újra felszáll, így revansot lehet venni. A teljes
Irányítás: A - fel, Z - le, N - balra, R - jobbra. A játékot gyõzelemhez tartozó eredmény képernyõt soha nem
az ENTER megnyomásával indíthatjuk. láttam (talán nincs is :), de a legyõzésünket hírül adó
képernyõn legalább egy jól megrajzolt gonosz ide-
gen jelenik meg.
3D Defender
(1982 - J.K. Greye Software)
A 3D Defender célja hasonló a Galaxy típusú
játékokéhoz: A földi civilizációnkra támadó ellensé-
ges UFO-kat kell megsemmisíteni, azaz becserkészni
és lelõni, mindeközben elkerülve a velük való ütközést
és a saját ûrhajónk lelövését. Ami mégis érdekessé
teszi a játékot, az a megvalósítás a ZX81-en: Az
ûrhajónk ablakából kinézve látjuk a közeledõ ellen-
séges csészealjakat, amik a távoli pontszerû
megjelenésbõl 3 dimenzióban mozogva egyre na-
gyobbak lesznek és egyre több részlet lesz kivehetõ A játék közeli rokona a J.K. Greye Software
rajtuk. Ez nem tûnik nagy dolognak, de aki annak klasszikus 3D Monster Maze játékának, azt is és ezt is
idején játszott a ZX81-en tipikus a képernyõn az O Malcolm Evans jegyzi.
betût mozgatva kerüljük el az ütközést az I betûkkel
jellegû autóversenyzõ, síelõ stb. programokkal, az
nagyra értékeli ezt.
K
IDÕGÉP
1981. Március
A nyolcvanas évek legelején kezdi el az angol
Ferranti cég az egyéni igények szerinti chipek
Ûrhajónkat a vezérlõ billentyûk botkormányszerû ki- gyártását, Sinclair rögtön ki is használja ezt. A
osztásával irányíthatjuk: A Q...T félsor balra le, az ZX80-ból egy egész sor kis chipet felcserélnek a
Y...P jobbra le, az A...G balra fel, a H...L jobbra fel "nagy ULA" chipre. A megspórolt pénzen kibõvítik
irányít, a legfelsõ és legalsó sor billentyûi indítják a a ROM memóriát, áttervezik az alaplapot és
tüzelést. Hasznos, hogy több billentyûvel is elérhetjük 1981 márciusában piacra dobják a ZX81-et,
ugyanazt a funkciót, viszont nehezen megszokható, mely ténylegesen megteremtette az Angol szemé-
hogy nem egyenesen le-fel-jobbra-balra haladha- lyi számítógép gyártást. A billentyûzetet is lecse-
tunk (ilyenkor két-két irány billentyûit kell egyszerre rélik és az elõzõ szenzorai helyett, ebbe az új
lenyomni). A mozgás reakcióideje és a tüzelés sze- gépbe már fólia érintkezõket tesznek. Továbbra
rencsére elég gyors. Az ellenséges ûrhajók felrob- is egy gombnyomásra egy Basic parancs kerül
banása látványos, ugyancsak jól megoldott (persze a beírásra. Már nem minden billentyûleütésre
ZX81 karaktergrafika keretei között) a támadó ellenõrzi a beírt sort, hanem a NEW LINE lenyo-
plazmafelhõjének megjelenése - természetesen ez is mása után. A BASIC már tud decimális számokkal
3D-ben, így van esély kikerülni. Idõnként még is számolni. A számítási sebessége nem túl nagy,
meteoresõ is látható. de egy új BASIC utasításpár (SLOW, FAST) segít-
ségével növelhetõ, a FAST üzemmódban ugyanis
A navigációt az ellenség irányát jelzõ radar és egy nem kezeli a képernyõt! A külsõ csatlakozói azon-
magasságmérõ segíti (a földnek ütközéstõl óvakodni osak a ZX80-nál látottakkal. Ez a gép már 64K-ra
kell). A védekezést szolgáló pajzsunk minden plaz- volt bõvíthetõ és blokkgrafikára is képes volt.
matámadásnál veszít erejébõl. A lelõtt ûrhajókért
pont jár, az elszalasztott ellenségért viszont pontot
lehet veszíteni - így a menekülés nem jó taktika.
18
PROGRAMOZÁSTECHNIKA - BASIC
ZX SPECTRUM TV-BASIC KÜLÖNKIADÁS - 1. RÉSZ
Szeretettel üdvözlünk Kedves Olvasó! vezett ROMba nagyrészt Steve Vickers
zseniális programozó munkája volt.
A retro számítás
technika napjaink Maga a 14445 bájtnyi, megközelítõen 7000
egyik uralkodó ipar programsorból álló programrendszer rend
ágává nõtte ki ma kívül okosan épül fel és hatalmas szabad
gát. Mindenki ságot ad a BASIC programozással ismerkedõ
kíváncsi a múlt vagy éppen magas szinten ûzõ programozó
kutatásainak eredmé számára. Tartalmazza a teljes BASIC
nyeire, ezért dön utasítás értelmezõt hibaüzenetekkel, a
töttünk úgy, hogy grafikai betûkészletet és egy kalkulá
egy cikksorozatot tort, amely az összes aritmetikai mûvelet
indítunk. elvégzésére alkalmas az egész és a tört
számok tartományában.
Az elkövetkezõ ré
szekben a ZX Spec Ez a ROM program a számítógép piacra
trum számítógéppel dobása után már nem volt módosítható, így
fogunk foglalkozni nagyon oda kellett figyelni, hogy a
és igyekszünk olyan lehetõ legtöbb hibát kiszûrjék a tesz
oldalairól megmutatni, amelyet re telések során és mindenképpen hibamen
mélhetõleg mindenki érdekesnek fog talál tesen adják ki a ZX Spectrum számítógépet.
ni, aki már túl van elsõ próbálkozásain
Írjuk meg mindjárt elsõ programunk:
a Spectrum felfedezésében.
Indulás
A ZX Spectrumban az a szép, hogy egy olyan
személyi számítógép, amely bekapcsolás
után azonnal tulajdonosa rendelkezésére
áll, ahhoz, hogy használatba vegye, nem
kell semmit betöltenie, állítania.
Tegyük meg és kapcsoljuk be.
Az elsõ találkozáskor ez a kedves felirat
üdvözöl minket, majd egy tetszõleges gomb
lenyomása után rendelkezésünkre is áll a
számítógép, hogy fogadja parancsainkat és
utasításainkat. Sokak számára gyermekévei
alatt nem is tudatosult az, hogy ilyenkor
már bizony egy értelmezõ program fut a
számítógépében, amely olvassa a
billentyûzetet, rajzolja a képet és
végrehajtja az adott feladatokat. Ez a
program amely be van égetve egy úgyne
19
INPUT A
A rejtély kulcsa a tört számok
kezelésében rejlik, mindenesetre elbi ... a STOP itt is közbeszól, de hogy be
zonytalanító egy kezdõ számára. lehessen írni komplett képletet, progra
mon belüli változót vagy akár egy RNDt,
Üssük be mintegy véletlenül hogy
valljuk be, nem sokan gondoltuk volna.
PRINT INT -65536
Végül jöjjön hát a döbbenet, az üres INPUT!
és rájöttünk, ez a kis gép nem sok komoly
INPUT ;
feladatra lesz jó a BASIC használatával.
... hát ez meg mire jó, hiszen semmit se
Folytassuk az ismerkedést az utasítá
kér be, semmit se csinál, de csak lát
sokkal:
szólag!
Minden kézikönyv elsõ utasításai között
Közben pedig meg megoldja a spectrumos
tárgyalt az INPUT. Jójó, az még érhetõ,
BASIC világ legnagyobb problémáját, amely
hogy mire is szolgál, vagyis számok,
az ilyen jellegû programokban jött ki
szövegek programba történõ bevitelére, de
mindenki számára (bár erõsen
vajon miért lehet ilyen gonoszságokat
megkérdõjelezhetõ, hogy ezért lenne):
mûvelni:
INPUT A$
... aztán az idézõjeleket törölni, majd
STOP
és meg is áll a program, ami után a Kedves
Leendõ Programfelhasználónk olyasmiket is
tehet, amit nem vártunk tõle. Helyette
alkalmazzuk inkább az
INPUT LINE A$
20
amíg egykét szakmai könyvben a rend
szerváltozóknál taglalt POKE 23659,255
nem segít rajta. Ugyan már, elég csak a
fenti utasítást beszúrni és máris száguld
minden megállás nélkül.
25 INPUT ;
Valamiért ez nem volt dokumentálva a BASIC
kézikönyvben.
Ugorjunk a színekre!
A Spectrum szivárvány színei szépen mutat
nak egy színes tévén. A billentyûzetet is
feldobják a számok feletti színes kiírá
sok, amelyek utalnak arra, hogy melyik
szám jelenti az adott színt, vagyis az Arra az alsó fehér részre nem lehet
1es a kék, 2es a piros és így tovább. rajzolni, pedig semmi akadálya nem lett
volna, maga a Spectrum képes rá, de a
BASICje nem. A ROMban található
grafikai résszel is menne a teljes
Ki is próbálhatjuk sorban a BORDER képernyõ használata, de szándékosan lett
utasítással, közben mintegy véletlenül a csökkentve.
8at, 9et is beütve, amely hibaüzenettel Jöjjenek a parancsok!
figyelmeztet, majd legyen már szebb a
képernyõ színe, folytassuk a PAPER Az utasítás és a parancs között annyi a
utasítással... de vajon miért nem kapunk különbség, hogy míg az utasítást program
hibaüzenetet a futása alatt hajtja végre a számítógép,
addig a parancsot azonnal a begépelést
PAPER 9 vagy INK 9
követõen.
kiadásakor? Mert bizony ez mûködik, a Révedjünk el mindjárt a DATA utasítás
papír vagy a tinta színét feketére vagy ban, mint parancsban, aminek hatása, hát
fehérre állítja a másiktól függõen, így khmkhm egyenlõ a nagy semmivel, de
biztosítva a mindenkori olvashatóságot. íme az egyetlen BASIC utasítás, ami képes
Zseniális, de már csak a 8as érték a gépet áttaszítani az ismeretlenbe:
érthetetlen, ami nem csinál semmit, de nem
RESTORE 65535
is üzen.
Aztán jöjjön a LOAD, amelyet szinte
minden spectrumos elsõként tanul meg.
Ahhoz, hogy egy programot betöltsünk,
minimum a
LOAD ""
parancsot be kell gépelni. Nem is olyan
egyszerû egy kezdõnek az idézõjelek
miatt, de nézzük el a tervezõnek, hogy
kötelezõen kitetette az üres
idézõjeleket, amelyet lássuk be
könnyedén elhagyhatott volna, azonban
nehezen követhetõ a kissé zavarosra
sikerült hibakezelése.
Nem az "R: Tape loading error" rette
gettre gondolva, hanem a BREAK körüli
zavarára:
D BREAK - CONT repeats, 0:1
21
Mi is volt? CONTINUE? Úgy kell nekünk! Ha már hibás a progra
munk, legalább jó alaposan legyünk is
Harsogjon a trombita, szóljanak a fan
összezavarva!
fárok, zúgjanak a harangok, mert itt száll
le közénk a parancsok félistene, maga az Végül vajon mire gondoltak a tervezõk
örök rejtély, a hamis képmutató, az akkor, amikor ezt írjuk be:
álcázott zseni, aaaaaaaaaaaaaaaaa
100 CONTINUE kis nógatás, hogy folytasd
CONTINUE bátran?
"Ha már "lebrékeltük" kis programunkat, Kis akarással jól összekeverhetjük:
folytathassuk is!" gondolta tervezõnk!
De mit is ronthatott el oly nagyon:
CONTINUE
C Nonsense in BASIC, 30:1
CONTINUE
2 Variable not found, 30:2
Aztán vajon mi történik, ha bármilyen
Legyünk kedvesek és javítsuk ki a hibánkat hibából adódóan megáll a mi kis progra
legalább menet közben és folytassuk: munk egy hibaüzenettel és lelkesen kiad
LET a$="FOLYTASD MAR" juk a CONTINUE utasítást?
CONTINUE
Egyszerû a válasz, újból megkapjuk az
C Nonsense in BASIC, 30:1 üzenetet, hátha nem olvastuk el rendesen.
CONTINUE Persze egy INPUT közbeni STOP után már
meg sem kell lepõdni, hogy újra bekérésre
fog várni.
Összefoglalva tapasztalatainkat megál
lapíthatjuk, hogy a Spectrum BASICje
csodálatosan szépre sikerült, de bizony
maradtak elvarratlan szálak, amelyek
nélkül nem jöhetett volna létre ez az
írás.
, azaz !
22
PROGRAMOZÁSTECHNIKA - MÉLYVÍZ
BORDER ÉS MULTICOLOR EFFEKT
Ahogy az elektronsugár halad, folyamatosan figyeli,
hogy milyen színnel kell dolgoznia. A háttér
készítésekor az aktuálisan érvényes BORDER színt,
míg a hasznos képernyõnél az adott soron belüli 8
pixelhez tartozó PAPER és INK színt jeleníti meg.
23
Már csak egy dolog kell ehhez a varázslathoz. Tud utasítás végrehajtása is 4T idejébe kerül a procesz
nunk kellene, mikor indul az elektronsugár a szornak, ami közben az elektronsugár 8 pixelt rajzol
képernyõ bal felsõ sarkából. Ez szerencsére elég meg. Nézzünk egy egyszerû példát:
egyszerû, mert a Spectrum tervezõi összehangolták
az úgynevezett megszakítási rendszerrel, tehát A háttér színe eredetileg zöld.
amikor bekövetkezik egy megszakítás (szintén má
sodpercenként 50szer), akkor indul a képalkotás is. LD A, 6 ; beállítjuk a sárga színt,
végrehajtási idõ: 7T
OUT (254), A ; a háttér színét erre
Ezt BASIC-bõl az alábbi módon láthatjuk: állítjuk,
végrehajtási idõ: 11T
10 BORDER 1: BORDER 2: LD A, 1 ; kék szín,
BORDER 3: BORDER 4: végrehajtási idõ: 7T
BORDER 5: BORDER 6: OUT (254), A ; a háttér színének
BORDER 7: BORDER 0: beállítása,
PAUSE 1: GO TO 10 végrehajtási idõ: 11T
LD A, 2 ; piros szín,
végrehajtási idõ: 7T
OUT (254), A ; a háttér színének
beállítása,
végrehajtási idõ: 11T
LD A, 4 ; zöld szín,
végrehajtási idõ: 7T
OUT (254), A ; a háttér színének
beállítása,
végrehajtási idõ: 11T
Minden gépi kódú utasítás végrehajtásának procesz
szor ideje van (T). Még a legegyszerûbb gépi kódú
24
Hiába is igyekszünk nagyon sûrû színváltást csinálni,
az utasítások végrehajtási ideje miatt ez nem lehet
nagyon rövid, így az oszlopok szélességét sem lehet
nagyon vékonyra csinálni.
Ha egy színt tovább is szeretnénk kitartani, azaz
hosszabb csíkot húzni, akkor várakozni kell. Erre egy
ciklus alkalmas, de figyeljük meg, mi okozza a prog-
ramozási nehézséget:
Programozni egy álló képet elég "egyszerû", de
LD A, 6 ; beállítjuk a sárga színt, számos DEMO-ban láthatunk mozgó Border- vagy
végrehajtási idõ: 7T Multicolor-effektet a háttérben, miközben szövegek
OUT (254), A ; a háttér színét erre
állítjuk, futnak érdekesebbnél érdekesebb módon.
végrehajtási idõ: 11T
LD B, 50 ; ciklus számláló,
Ezek is mind pontosan kiszámított idõzítéseken alapul-
végrehajtási idõ: 7T nak. Az idõzítések az idõ rövidsége miatt sajnos nem
DJNZ ; ciklus, szervezhetõk egyszerû ciklusokba, sokszor csak lát-
végrehajtási idõ: 13T amíg szólag felesleges utasításokkal lehet beállítani a pon-
B<>0, végrehajtási idõ: 8T,
ha B=0 tos T idõt.
NOP ; üres utasítás,
végrehajtási idõ: 4T
NOP ; üres utasítás,
végrehajtási idõ: 4T
NOP ; üres utasítás,
végrehajtási idõ: 4T
NOP ; üres utasítás,
végrehajtási idõ: 4T
NOP ; üres utasítás,
végrehajtási idõ: 4T
LD A, 1 ; kék szín,
végrehajtási idõ: 7T
OUT (254), A ; a háttér színének beállítása,
végrehajtási idõ: 11T
25
Fõ alkalmazási területe a logikai, puzzle típusú játékok
szokatlanul szép grafikai köntösben megjelenítése. ANDROID TR-APP-ER
A ZX Spectrum több változatban készült. Ezek az tapDancer:
effektek minden gépen mûködnek ?
A kérdés remek és a válasz bizony az, hogy "Igen, de
sajnos nem egyformán!". A 16 és 48K-s gépek között
nincs eltérés, azok szépen szinkronizálják magukat és
pontosan betartják az idõzítési értékeket, de a késõbb
megjelent 128K-s gépek ebben változtak.
Számukra egy sor elkészítése idõben 228T-re nõtt az
eredeti 224T-s értékrõl, ezt ellensúlyozandóan a 312
sor 311-re csökkent, így egy teljes képernyõ 70908T PlayTZX:
ideig készül szemben a 48K-s gépek 69888T-jével. Bár
a különbség emberi mértékkel érzékelhetetlen, de a
számítógép képalkotása teljesen elcsúszik ettõl a közel
1.5 %-os lassulástól:
PlayZX:
26
PROGRAMOZÁSTECHNIKA - ASSEMBLY OVI
HOGYAN ÍRJUNK JÁTÉKOT ZX SPECTRUMRA 2-4. RÉSZ
2. Fejezet Port Gombok
Billentyûzetes és botkormány irányítás 32766 B, N, M, Symbol Shift, Space
49150 H, J, K, L, Enter
Egyszerre csak egy gombot!
57342 Y, U, I, O, P
Amennyiben nem kapcsoltad ki vagy babráltál más
módon a Spectrum alapértelmezett megszakítás 61438 6, 7, 8, 9, 0
módjával, a ROM másodpercenként ötvenszer au- 63486 5, 4, 3, 2, 1
tomatikusan olvassa a billentyûzetet és frissít több 64510 T, R, E, W, Q
rendszerváltozót a 23552-es memóriacímen. A
65022 G, F, D, S, A
legegyszerûbb módszer egy billentyû megnyo-
másának beolvasására, ha elõször a 23560-as címre 65278 V, C, X, Z, Caps Shift
nullát töltünk, majd folyamatosan figyeljük az itt talál-
ható értéket, amíg nullától különbözõ értéket nem Hogy kiderítsük, melyik billentyûk vannak éppen le-
találunk ott. Az ekkor olvasott szám a leütött billentyû nyomva, olvassuk be az adatot a megfelelõ portról,
ASCII kódja. Ezt a megoldást leginkább a "Nyomj amelyben a sorban mind az öt billentyûhöz egy bit
meg egy gombot a folytatáshoz" szituációkban tudjuk van megfeleltetve a d0-d4 alsó bitek közül (értékük
felhasználni, menüpontok kiválasztásánál, vagy a 1,2,4,8 és 16). A d0-ás bit felel meg a külsõ
játékos nevének bekéréséhez az elért pontszám billentyûnek, a d4-es a legbelsõnek. Furcsamódon, a
rögzítésekor. Egy ilyen rutin a következõképpen bitek magas értékûek, ha a hozzájuk tartozó gomb
nézne ki: nincsen lenyomott állapotban, és alacsonyak ha a
; Példa 2.1
gombot nyomva tartjuk éppen pontosan fordított
mûködést produkálva, mint amire számítanánk.
ld hl, 23560; LAST K rendszerváltozó címe
ld (hl), 0 ; nullázzuk Hogy ellenõrizzük valamelyik sorban a billentyûk
loop ld a, (hl) ; LAST K új értéke állapotát, egyszerûen betöltjük a sorhoz tartozó port
cp 0 ; továbbra is 0?
jr z, loop ; ha igen, nem történt bill. számát a BC regiszterpárba, majd végrehajtjuk az IN
leütés A,(C) utasítást. Mivelhogy csupán az alsó bitek
Ret ; volt gombnyomás értékére vagyunk kíváncsiak, figyelmen kívül hagy-
hatjuk a többit, a számunkra érdektelen biteket kinul-
Billentyûkombinációk lázva egy AND 31 utasítással, vagy a
Egyszerre csupán egyetlen billentyû leütése igen rit- szignifikánsakat kiforgatva az akkumulátorból az
ka, fõleg gyors árkád játékok esetében, így igen átviteli regiszterbe a vizsgálathoz, öt egymás után
hasznos volna, ha képesek lennénk egyszerre több kiadott RRA:CALL C,(cím) utasítással.
billentyû lenyomását is észlelni. Ezen a ponton válik a Amennyiben az imént ismertetett módszer nehezen
dolog egy kicsit trükkösebbé. Memóriacímek olvasása érthetõ, tekintsük a következõ példát:
helyett nyolc portról kérhetünk be adatot, amelyek ; Példa 2.2
mindegyikéhez egy 5 billentyûbõl álló sor tartozik. Ld bc, 63486 ; 15 billentyûk/joystick
Természetesen, a legtöbb Spectrum modell ennél port 2
sokkal több billentyûvel rendelkezik, szóval joggal In a, (c) ; lássuk a lenyomott
tehetjük fel a kérdést: hova tûnt a többi gomb? Nos, billentyûket
rra ; legkülsõ bit = 1es gomb
tulajdonképpen nem tûntek el, mert igazából ott sem push af ; megjegyezzük az értéket
voltak. Az eredeti Spectrum billentyûzet kiosztás call nc, mpl ; ha megnyomva, mozgatás
csupán 40 billentyûbõl állt, ötös csoportokba szer- balra
pop af ; akkumulátor visszaállítása
vezve nyolc csoportot alkotva így. Bizonyos funkciók rra ; következõ bit (2es érték)
eléréséhez a gombok egy meghatározott = 2es gomb
kombinációját kellett megnyomni például a tör- push af ; megjegyezzük az értéket
léshez a CAPS SHIFT és 0 billentyûket. Sinclair 1984- call nc, mpr ; ha megnyomva, mozgatás
jobbra
ben a Spectrum Plus színrelépésekor adta hozzá a pop af ; akkumulátor visszaállítása
billentyûzethez az új billentyûket. Mûködésük abban rra ; következõ bit (4es érték)
áll, hogy az általuk nyújtott funkciók eléréséhez az = 3as gomb
push af ; megjegyezzük az értéket
eredeti gumi-billentyûs modell billentyûkombinációi- call nc, mpd ; ha megnyomva, mozgatás
nak leütését szimulálják. lefelé
Az eredeti billentyûzetkiosztás az alábbi csoportok- pop af ; akkumulátor visszaállítása
ból állt:
27
rra ; következõ bit (8es érték)
= 4es gomb Egy egyszerû játék
call nc, mpu ; ha megnyomva, mozgatás
felfelé
Tegyük is meg a következõ lépést, és az eddig tanul-
takat átültetve a gyakorlatba, írjuk meg egy
Botko- egyszerû játék fõ
irányító részét! Ez
rmányok lesz az alapja egy
A Sinclair botkor- Százlábú játéknak,
mányok 1-es és 2-es amit az
portja egyszerûen a elkövetkezendõ
billentyûzet két néhány fejezet
számcsoportjának alatt fogunk fej
lett megfeleltetve. leszteni. Még nincs
Errõl könnyedén birtokunkban min-
megbizonyosodha- den szükséges
tunk: a BASIC tudás egy ilyen
szerkesztõbe játékprogram
belépve a joystick- elkészítéséhez, de
okat mozgatva azért el tudjuk
számok fognak meg- kezdeni egy kis
jelenni. A Port 1 (In- irányítási hurok
terface 2) megírásával, a-
hozzárendelései a 6, mely lehetõvé teszi
7, 8, 9 és 0 gombok, a Port 2-é (Interface 1) pedig a játékos számára egy kis törzs irányítását a
az 1, 2, 3, 4 és 5. A botkormány mozgatásának képernyõn. Vigyázat! A program nem tartalmaz
észleléséhez ugyanúgy olvassuk a megfelelõ portot, kilépési lehetõséget a BASIC-be, ezért mindenképpen
ahogyan azt a billentyûzet esetében tettük. A Sinclair mentsük el a forrásszöveget futtatás elõtt!
botkormányok a 63486-os (Interface 1/port 2), és a ; Példa 2.4
61438-as (Interface 2/port 1) portokat használják,
; Fekete képernyõt szeretnénk
ahol a d0-d4 bitek értéke 0 megnyomott állapotba,
ld a, 71 ; fehér tinta (7) fekete
1-es nyugalmi helyzetben. papíron (0), világosan (64)
ld (23693), a ; képernyõ színek beállítása
A népszerû Kempston joystick formátum nincsen társít- xor a ; akkumulátor nullázásának
va a billentyûzethez, hanem a 31-es port figyelésével gyors módja
lehet kiolvasni az éppen aktuális állapotot. Ez azt call 8859 ; maradandó keretszín
jelenti, hogy mindösszesen egy egyszerû IN A, (31) ; Grafika beállítása
utasítást kell használnunk. Ismételten, a d0-d4-es bitek ld hl, blocks ; felhasználói grafikus
jelölik az állapotot, ám ezúttal a bitek jelentése elemek címe
ld (23675), hl ; az UDG ide mutasson
aszerint alakul, ahogyan azt eredetileg vártuk: a
; Rendben, kezdõdjön a játék!
magas bit érték jelöli a botkormány kimozdítását
call 3503 ; ROM rutin képernyõ
valamelyik irányba. törlése, 2es csat. nyitása
; Példa 2.3 ; Koordináták inicializálása
; Példa botkormány vezérlõ rutin ld hl, 21+15*256 ; kezdeti koordináták a
joycon ld bc, 31 ; Kempston joystick port HLbe
in a, (c) ; bemenet olvasása ld (plx), hl ; játékos koordinátái
and 2 ; "balra" bit ellenõrzése call basexy ; x és y pozíciójának
call nz, joyl ; mozgás balra beállítása
in a, (c) ; bemenet olvasása call splayr ; játékos törzsének
and 1 ; "jobbra" bit teszt megjelenítése
call nz, joyr ; mozgás jobbra ; Ez a fõhurok
in a, (c) ; bemenet olvasása mloop equ $
and 8 ; "felfelé" bit ; Játékos törlése
call nz, joyu ; mozgás felfelé call basexy ; x és y pozíciójának
in a, (c) ; bemenet olvasása beállítása
and 4 ; "lefele" irány call wspace ; üres hely a játékos
call nz, joyd ; mozgás lefelé pozíciójába
in a, (c) ; bemenet olvasása
and 16 ; tûzgomb ellenõrzése ; Törölve van a játékos, átmozgathatjuk az új
call nz, fire ; tüzelés pozícióba mielõtt újra
megjelenítjük
ld bc, 63486 ; billentyûk 15/joystick
port 2
28
in a, (c) ; kiolvassuk a megnyomott rutin kerül meghívásra a
gombokat törzs törlése és
rra ; legkülsõ bit = 1es gomb megjelenítése elõtt
push af ; megjegyezzük basexy ld a, 22 ; AT pozícionáló kód.
call nc, mpl ; ha megnyomva, mozgás balra rst 16
pop af ; akku helyreállítása ld a, (plx) ; játékos függõleges koord.
rra ; következõ bit (2es rst 16 ; beállítjuk
helyiérték) = 2es gomb ld a, (ply) ; játékos vízszintes koord.
push af ; megjegyezzük rst 16 ; ezt is beállítjuk
call nc, mpr ; ha megnyomva, mozgás ret
jobbra
pop af ; akku helyreállítása ; Megjelenítjük a játékost a jelenlegi PRINT
rra ; következõ bit (4es pozícióban
helyiérték) = 3es gomb splayr ld a, 69 ; cián tinta (5) fekete
push af ; megjegyezzük papíron (0), világosan (64)
call nc, mpd ; ha megnyomva, mozgás ld (23695), a ; beállítjuk az ideiglenes
lefelé színeket
pop af ; akku helyreállítása ld a, 144 ; 'A' UDG ASCII kódja
rra ; következõ bit (8es rst 16 ; játékos kirajzolása
helyiérték) = 4es gomb ret
call nc, mpu ; ha megnyomva, mozgás wspace ld a, 71 ; fehér tinta (7) fekete
felfelé papíron (0), világos (64)
; Az átmozgatás megtörtént, újra ld (23695), a ; beállítjuk az ideiglenes
megjeleníthetjük a játékost színeket
call basexy ; x és y koordináta ld a, 32 ; SZÓKÖZ karakter
beállítása rst 16 ; üres hely megjelenítése
call splayr ; játékos megjelenítése ret
halt ; várakozás plx defb 0 ; játékos x koordinátája
; Visszaugrás a fõhurok elejére ply defb 0 ; játékos y koordinátája
jp mloop ; UDG grafika
; Játékos balra mozgatása blocks defb 16,16,56,56,124,124,254,254
mpl ld hl, ply ; Emlékezzünk, y a ; játékos törzse
vízszintes koordináta!
ld a, (hl) ; Mi a mostani érték?
and a ; Nulla?
retz ; Ha igen, nem tudunk tovább
balra menni!
dec(hl) ; különben y = y1
ret
; Játékos jobbra mozgatása.
mpr ld hl, ply ; Emlékezzünk, y a
vízszintes koordináta!
ld a, (hl) ; Mi a mostani érték?
cp 31 ; A jobb szélén vagyunk
(31)?
ret z ; Ha igen, nem tudunk tovább
jobbra menni!
inc (hl) ; különben y = y+1
ret
; Játékos felfelé mozgatása.
mpu ld hl, plx ; Emlékezzünk, x a
függõleges koordináta!
Gyors, ugye? Igazából még le is lassítottuk a ciklust
ld a, (hl) ; Mi a mostani érték? egy várakozó utasítással, de még így is 50
cp 4 ; a pálya tetején vagyunk kép/másodperces sebességgel száguldunk, ami még
(4)? mindig egy kicsit gyorsnak bizonyul. Ne aggódjunk,
ret z ; Ha igen, nem tudunk tovább
felfele menni! ahogy további funkciókat adunk a kódhoz, lelassítja
dec (hl) ; különben x = x1 majd a játékot. Ha érzel magadban elég önbizalmat,
ret megpróbálhatod átalakítani a fenti programot, hogy
; Játékos lefelé mozgatása. Kempston botkormánnyal lehessen irányítani! A
mpd ld hl, plx ; Emlékezzünk, x a kivitelezés igazán nem bonyolult, pusztán ki kell
függõleges koordináta! cserélni a 63486-os port számot a 31-esre, valamint
ld a, (hl) ; Mi a mostani érték?
cp 21 ; A képernyõ alján vagyunk helyettesíteni a négy call nc,(address) utasítást ezzel:
(21)? call c,(address). (A bitek jelentése fel van cserélve,
ret z ; Ha igen, nem tudunk tovább emlékszel?)
lefele menni!
inc (hl) ; különben x = x+1 Az újradefiniálható irányítás kicsit furmányosabb.
ret Ahogyan már említettem, az eredeti Spectrum
; A játékos törzsének, x és y koordináta billentyûzet 8 sorra volt felosztva, mindegyikben 5
értékének beállítása, ez a
29
billentyûvel. Ahhoz, hogy meghatározzuk, pontosan in a, (254) ; port olvasása (a=magas
bájt, 254=alacsony)
melyik billentyû is van lenyomva, elõször beolvassuk ktest1 rra ; bit kiforgatása az
a biteket a megfelelõ sorhoz tartozó portról, majd a eredménybõl
d0-d4-es bitekbõl meghatározzuk a lenyomott gom- dec c ; ciklus számláló
bot. Amennyiben lecserélnénk a kódban az ld bc,31 jp nz, ktest1 ; ismételjük amíg a carry
ben lévõ bithez érünk
utasítást az ld bc,49150 kódrészre, figyelhetnénk a ret
billentyûk lenyomását H-tól az Enterig bár ez nem
nyújtana túl kényelmes újradefiniálási lehetõséget.
Szerencsére van más lehetõség is a megvalósításra. 3. fejezet Hanghatások
Meghatározhatjuk a billentyûsorok figyeléséhez szük- A hangszóró
séges portot a Spectrum leírásában szereplõ formula
segítségével is. A port címét az alábbi képlettel tudjuk Kétféleképpen csalhatunk elõ hangokat és zenét a ZX
meghatározni: 254+256*(255-2^n), ahol n a port Spectrumból. Ezek közül a tetszetõsebb és bonyolul-
száma a 0-7 zárt intervallumból. A 654-es címen tabb út az AY38912 hangchipen keresztül vezet a
található egy ROM-rutin, amely igen sok fáradságos 128K-s modellekben. Ezt a módszert egy késõbbi
munkát spórolhat nekünk: az E regiszterben visszaad- fejezetben ismertetem részletesen, most a 48K-s gép
ja a lenyomott billentyû sorszámát a 0-39 tartomány- képességeivel fogunk foglalkozni. Habár
ban. A 0-7 értékek a sorok legbelsõ gombjainak egyszerûnek tûnik, mégis rendkívül alkalmas rövid,
felelnek meg, (ezek rendre B, H, Y, 6, 5, T, G és V), éles hangeffektek elõállítására a játékok szí-
8-15 jelöli a következõ oszlopnyi billentyût, és így nesítésénél.
tovább egészen a legkülsõ sor 39-es billentyûjéig,
ami a CAPS SHIFT. A teljesség kedvéért, a SHIFT
Beep
billentyû státuszát a D regiszter tartalmazza. Ameny- Elõször is azt kell tudnunk, miként tudunk megadott
nyiben egyik gomb sincsen lenyomva, E értéke 255. hangmagasságú és hosszúságú hangot generálni. A
Sinclair ROM-ban található egy könnyedén használ-
Az említett ROM-rutin csupán egyetlen billentyû le- ható rutin a 949-es címen, amelyik pont megfelel a
nyomását adja vissza, így sajnos nem alkalmas célnak. Csupán annyit kell tennünk, hogy betöltjük a
billentyû kombinációk figyelésére. Ahhoz, hogy több hangmagasságnak megfelelõ paraméter értéket a
lenyomott gomb esetén is megmondhassuk, mely gom- HL regiszterpárba, a hosszét a DE-be, majd meg-
bok vannak nyomva tartva, magunknak kell meg- hívjuk a 949-et, és már van is egy megfelelõ "beep"
határoznunk a tesztelni kívánt billentyû portját, hangunk!
kiolvasni az értéket, majd kiértékelni az eredményt a
megfelelõ bit állapota alapján. Én egy igen hasznos Sajnos a paraméterek elõállításának módszere egy
rutint használok a feladat elvégzéséhez, amely az kicsit trükkösebb, ugyanis igényel némi számítgatást.
egyetlen eljárás játékaimban, amit nem magam írtam. Ismernünk kell a kibocsátandó hang magasságának
Az érdem -é, aki számos kiváló cikket írt frekvencia értékét Herz-ben megadva - lényegében
a számára sok évvel ezelõtt. ez a szám megfelel annak az értéknek, ahányszor a
A kód használatához be kell tölteni az ellenõrizni hangszórónak hangot kell kiadnia egy másodperc
kívánt billentyû számát az akkumulátorba, meghívni a alatt, hogy a megfelelõ hangmagasságot állítsa elõ.
ktest címet, majd ellenõrizni az átviteli jelzõt (carry Az egyvonalas C hang oktávjának hangjait foglalja
flag). Ha történt átvitel, a billentyû nem volt lenyom- össze az alábbi táblázat (# a zenei keresztet jelenti):
va. Amennyiben ez a fordított logika zavaró, helyezz Egyvonalas
el egy CCF utasítást a RET elé!
; Példa 2.5
C 261.63
; Mr. Jones billentyû tesztelõ rutinja C# 277.18
ktest ld c, a ; billentyû szám Aba D 293.66
and 7 ; d0d2 bitek maszkolása
inc a ; 18as tartományba növelés D# 311.13
ld b, a ; Bbe
srl c ; ct elosztjuk 8cal, E 329.63
srl c ; hogy megtaláljuk a sor
számát F 349.23
srl c
ld a, 5 ; soronként 5 gomb F# 369.99
sub c ; kivonjuk a pozíciót
ld c, a ; Cbe áttöltjük G 392.00
ld a, 254 ; az olvasandó port magas
bájtja
G# 415.30
ktest0 rrca ; pozícióba forgatás A 440.00
djnz ktest0 ; ismétlés amíg releváns
sort találunk A# 466.16
30
H 493.88 Ha idõnk engedi, játszadozzunk a fenti rutinnal elég
könnyû a hang magasságát feljebb vagy lejjebb
állítani, valamint a kezdõ frekvencia, a hossz és a
hang hajlításának megváltoztatásával számos
érdekes hatást idézhetünk elõ. Egy dologra érdemes
odafigyelni: ne adjunk meg nagyon ésszerûtlen hang-
Hogy egy oktávval magasabban lévõ hangot kap- magasság és hosszúság értékeket, mert a beeper
junk, egyszerûen duplázzuk meg a frekvenciát, egy rutin beragadhat, és csak abban az esetben nyer-
oktávval alacsonyabbhoz felezzük! Például ha hetjük vissza az irányítást gépünk fölött, ha újrain-
kétvonalas C hangot szeretnénk, vegyük az egyvona- dítjuk!
las C hanghoz tartozó frekvenciát 261.63 , majd
szorozzuk meg kettõvel: 523.26. Fehér Zaj
Miután a frekvenciát meghatároztuk, megszorozzuk a A hangszóró használata esetén nem szükséges ra-
kívánt hanghossznak megfelelõ értékkel másodperc- gaszkodnunk a ROM-ban lévõ rutinok használatához.
ben kifejezve, és ezt adjuk át a ROM rutinnak a DE Könnyen elkészíthetjük a saját hanggeneráló algorit-
regiszterekben. Ennek megfelelõen, ha egy egyvona- musainkat is, fõleg ha csupán statikus zörejt szeret-
las C hangot szeretnénk megszólaltatni egy tized nénk elõállítani csattanásokhoz és robbanásokhoz. A
másodpercen keresztül, az ehhez szükséges érték fehér zaj elõállítása általában izgalmasabb az eddig
261,63*0,1 = 26. A hangmagasság a látottaknál.
következõképpen számítandó ki: 437500/(a frekven- Ilyen zörej megszólaltatásához pusztán egy gyors és
cia), majd ebbõl vonjunk ki 30,125-öt! Ezt az értéket egyszerû véletlen-szám generátorra van szükségünk.
kell átadnunk HL-ben. Egyvonalas C esetében ez a (Egy Fibonacci sorozat éppen kapóra jön, azt javas-
következõ: (437500/261,63)-30,125 = 1642. Össze- lom, léptessünk egy mutatót az elsõ 8K-s ROM részen,
foglalva: és olvassuk be idõrõl-idõre az aktuális helyen lévõ
DE = Hossz = Frekvencia * Másodpercek száma bájtot, hogy megfelelõen véletlen 8 bites számot
kapjunk.) Ezután írjuk ki ezt az értéket a 254-es
HL = Magasság = (437500 / Frekvencia) - 30.125 portra! Emlékezzünk, hogy ugyanezen a porton
keresztül vezérelhetjük a keret színét is, így amennyi-
ben ha el akarjuk kerülni a több színnel csíkozott keret
effektust, le kell maszkolnunk a keret-biteket egy
AND 248 utasítással, és hozzáadni a megjeleníteni
A fentebb leírtaknak megfelelõen, az alábbiak
kívánt keret színének a számát az értékhez 1 a kék,
szerint tudunk megszólaltatni egy kétvonalas Gisz
2 a piros, stb mielõtt kiadjuk az OUT (254) utasítást.
hangot (G#) 1/4 másodpercig:
Miután ez megvolt, egy rövid várakozási ciklust kell
; Példa 3.1 beiktatnunk magas hanghoz rövidebbet, mélyebb
; Egyvonalas Gisz frekvenciája = 415.30 hanghoz hosszabbat , és megismételni a mûveletet
; Kétvonalas Gisz frekvenciája = 830.60 néhány százszor. Így egy kiváló, ütközésre
; Hossz = 830.6 / 4 = 207.65
; Magasság = 437500 / 830.6 30.125 = 496.6 emlékeztetõ hanghatást kapunk.
ld hl, 497 ; magasság Az alábbi rutin egy hangeffekten alapul az Egghead
ld de, 208 ; hossz 3-ból:
call 949 ; ROM beep rutin
ret ; Példa 3.3
; Példa 3.2 noise ld e, 250 ; ismétlés 250szer
ld hl, 0 ; kezdõ mutató a ROMban
; Természetesen ez a rutin nem csak zenei noise2 push de
hangok megszólaltatására alkalmas számos ld b, 32 ; lépés mértéke
hanghatás elõidézhetõ vele! Az egyik noise0 push bc
kedvencem, egy egyszerû hanghajlító ld a, (hl) ; következõ "véletlen" szám
eljárás: inc hl ; mutató
ld hl, 500 ; Kezdõ hangmagasság and 248 ; fekete keretet szeretnénk
ld b, 250 ; effekt hossza out (254), a ; hangszóróra ki
loop push bc ld a, e ; ahogy e értéke csökken...
push hl ; magasság tárolása cpl ; ...növeljük a várakozást
ld de, 1 ; nagyon rövid hossz noise1 dec a ; csökkentjük a ciklus
call 949 ; ROM beep rutin hívása számlálót
pop hl ; hossz visszaállítása jr nz, noise1 ; várakozó ciklus
inc hl ; magasság növelése pop bc
pop bc djnz noise0 ; következõ lépés
djnz loop ; ismétlés pop de
ret ld a, e
sub 24 ; lépés mérete
cp 30 ; tartomány vége
31
ret z sége van gombákra mégpedig meglehetõsen sokra
ret c
ld e, a , szétszórva a játéktérben. Jó szolgálatot fog tenni
cpl a fenti rutin a gombák koordinátáinak véletlenszerû
noise3 ld b, 40 ; csend meghatározásához. Egészítsük ki a programot:
noise4 djnz noise4
dec a ; Példa 4.2
jr nz, noise3 ; Fekete képernyõt szeretnénk
jr noise2
ld a, 71 ; fehér tinta (7) fekete
papíron (0), világosan (64)
ld (23693), a ; képernyõ színek beállítása
4. fejezet Véletlen számok xor a ; akkumulátor nullázásának
Véletlen számok generálása gépi kódból trükkösebb gyors módja
call 8859 ; maradandó keretszín
feladatnak bizonyulhat a gyakorlatlan programozó
; Grafika beállítása
számára, mint amilyennek elsõre gondolnánk. Elõször
ld hl, blocks ; felhasználói grafikus
is, tisztázzunk egy fontos tényt: teljesen véletlen szám- elemek címe
generátor, mint olyan, nem létezik. A processzor pusz- ld (23675), hl ; az UDG ide mutasson
tán utasításokat hajt végre és nem bír önálló ; Rendben, kezdõdjön a játék!
akarattal, aminek segítségével véletlen számokkal call 3503 ; ROM rutin képernyõ
tudna elõállni hasraütés-szerûen. Ennek híján egy törlése, 2es csat. nyitása
elõre meghatározott formula segítségével tudja ; Koordináták inicializálása
számok elõre meg nem jósolható sorozatát készíteni, ld hl, 21+15*256 ; kezdeti koordináták a
HLbe
amelyek látszólag semmilyen mintát nem követnek, ld (plx), hl ; játékos koordinátái
így a véletlenszerûség látszatát keltik. Ennek call basexy ; x és y pozíciójának
fényében megállapíthatjuk, hogy csupán csak hamis-, beállítása
vagyis pszeudo-véletlen számokkal kell beérnünk. call splayr ; játékos törzsének
megjelenítése
Egy elegáns és kézenfekvõ módja a pszeudo-véletlen ; Feltöltjük a játékteret gombákkal
szám generálásának a Fibonacci számsor fel- ld a, 68 ; zöld tinta (4) fekete
használása. Mielõtt megrémülnénk, rendelkezésünkre papíron (0), világos
áll egy könnyebb és gyorsabb módszer is 8 bites színnel (64)
ld (23695), a ; ideiglenes szín beállítása
véletlen számok elõállítására Spectrumunkon: ld b, 50 ; kezdetnek csak pár gomba
léptessünk egy mutatót a ROM címeken, és az éppen mushlp ld a, 22 ; AT karakter vezérlõkódja
aktuális címen tárolt bájtot olvassuk ki. Ennek a meg- rst 16
call random ; "véletlen" szám generálása
közelítésnek azért van egy hátulütõje is: a Sinclair and 15 ; a [0..15] függõleges
ROM tartalmaz egy meglehetõsen egységes és tartományban
egyáltalán nem véletlenszerû területet a vége felé, rst 16
amelyet érdemes elkerülnünk. Még abban az esetben call random ; újabb véletlen szám
and 31 ; a [0..31] vízszintes
is, ha a mutató határait az elsõ 8 KB-nyi ROM-ra tartományban
korlátozzuk, 8192 véletlen számhoz jutunk, amely rst 16
jóval több, mint amire egy átlagos játékhoz szük- ld a, 145 ; UDG 'B' a gomba grafikája
rst 16 ; kihelyezzük a képernyõre
ségünk lehet. Minden játékom, amelyik véletlen djnz mushlp ; ciklus amíg nem végeztünk
számokkal dolgozik az alábbi, vagy ahhoz nagyon a gombákkal
hasonló metódust használ a véletlenszerûség ; Ez a fõhurok
eléréséhez: mloop equ $
; Példa 4.1 ; Játékos törlése
; Egyszerû pszeudovéletlen szám generátor. call basexy ; x és y pozíciójának
; Egy mutatót léptet a ROM területen (a seed beállítása
ben tárolva), visszaadva call wspace ; üres hely a játékos
; a megcímzett bájt tartalmát. pozíciójába
random ld hl, (seed) ; Mutató ; Törölve van a játékos, átmozgathatjuk az új
ld a, h pozícióba mielõtt újra
and 31 ; Az elsõ 8 KBon belül megjelenítjük
tartjuk ld bc, 63486 ; billentyûk 15/joystick
ld h, a port 2
ld a, (hl) ; "Véletlen" szám a mutatott in a, (c) ; kiolvassuk a megnyomott
helyrõl gombokat
inc hl ; Mutató léptetése rra ; legkülsõ bit = 1es gomb
ld (seed), hl push af ; megjegyezzük
ret call nc, mpl ; ha megnyomva, mozgás balra
seed defw 0 pop af ; akku helyreállítása
rra ; következõ bit (2es
Állítsuk is munkába új véletlen szám generátorunkat a helyiérték) = 2es gomb
push af ; megjegyezzük
Százlábú játékban! Minden Százlábú játéknak szük-
32
call nc, mpr ; ha megnyomva, mozgás ; Megjelenítjük a játékost a jelenlegi PRINT
jobbra pozícióban
pop af ; akku helyreállítása splayr ld a, 69 ; cián tinta (5) fekete
rra ; következõ bit (4es papíron (0), világosan (64)
helyiérték) = 3es gomb ld (23695), a ; beállítjuk az ideiglenes
push af ; megjegyezzük színeket
call nc, mpd ; ha megnyomva, mozgás ld a, 144 ; 'A' UDG ASCII kódja
lefelé rst 16 ; játékos kirajzolása
pop af ; akku helyreállítása ret
rra ; következõ bit (8es
helyiérték) = 4es gomb wspace ld a, 71 ; fehér tinta (7) fekete
call nc, mpu ; ha megnyomva, mozgás papíron (0), világos (64)
felfelé ld (23695), a ; beállítjuk az ideiglenes
színeket
; Az átmozgatás megtörtént, újra megjeleníthet ld a, 32 ; SZÓKÖZ karakter
jük a játékost rst 16 ; üres hely megjelenítése
call basexy ; x és y koordináta ret
beállítása ; Egyszerû pszeudovéletlen szám generátor
call splayr ; játékos megjelenítése ; Egy mutatót léptet a ROM területen (a seed
halt ; várakozás ben tárolva), visszaadva
; Visszaugrás a fõhurok elejére ; a megcímzett bájt tartalmát
jp mloop random ld hl, (seed) ; Mutató
; Játékos balra mozgatása ld a, h
and 31 ; Az elsõ 8 KBon belül
mpl ld hl, ply ; Emlékezzünk, y a tartjuk
vízszintes koordináta! ld h, a
ld a, (hl) ; Mi a mostani érték? ld a, (hl) ; Véletlen szám a mutatott
and a ; Nulla? helyrõl
ret z ; Ha igen, nem tudunk tovább inc hl ; Mutató léptetése
balra menni! ld (seed), hl
dec (hl) ; különben y = y1 ret
ret
; Játékos jobbra mozgatása seed defw 0
plx defb 0 ; játékos x koordinátája
mpr ld hl, ply ; Emlékezzünk, y a ply defb 0 ; játékos y koordinátája
vízszintes koordináta!
ld a, (hl) ; Mi a mostani érték? ; UDG grafika
cp 31 ; A jobb szélén vagyunk blocks defb 16,16,56,56,124,124,254,254
(31)? ; játékos törzse
ret z ; Ha igen, nem tudunk tovább defb 24,126,255,255,60,60,60,60 ; gomba
jobbra menni!
inc (hl) ; különben y = y+1
ret
; Játékos felfelé mozgatása
mpu ld hl, plx ; Emlékezzünk, x a
függõleges koordináta!
ld a, (hl) ; Mi a mostani érték?
cp 4 ; a pálya tetején vagyunk
(4)?
ret z ; Ha igen, nem tudunk tovább
felfelé menni!
dec (hl) ; különben x = x1
ret
; Játékos lefelé mozgatása
mpd ld hl,plx ; Emlékezzünk, x a
függõleges koordináta!
ld a,(hl) ; Mi a mostani érték?
cp 21 ; A képernyõ alján vagyunk
(21)?
ret z ; Ha igen, nem tudunk tovább Ha lefuttatjuk a fent listázott programot láthatjuk,
lefelé menni!
inc (hl) ; különben x = x+1 hogy már inkább hasonlít egy Százlábú játékra, mint
ret elõtte, ellenben van egy apró probléma: ugyan a
; A játékos törzsének, x és y koordináta érté gombák véletlenszerûen szét vannak szórva a
kének beállítása, ez a rutin kerül meghí képernyõn, a játékos akadálytalanul képes áthaladni
vásra a törzs törlése és megjelenítése elõtt
rajtuk. Valamiféle ütközés észlelésre lenne szükség
basexy ld a, 22 ; AT pozícionáló kód
rst 16
ennek a megakadályozásához. Ezzel fogunk foglal-
ld a, (plx) ; játékos függõleges koord kozni a következõ fejezetben.
rst 16 ; beállítjuk
ld a, (ply) ; játékos vízszintes koord
rst 16 ; ezt is beállítjuk
ret
33
PROGRAMOZÁSTECHNIKA
SDK: SPECCYBEEP
A SpeccyBeep a gépi kódú ZX Spectrum prog- De minek is kellene nekem egy ilyen program, mikor
ramokhoz segít dallamokat szerkeszteni és azok egy fájl írásakor közvetlenül is megadhatom a
beépítését is megkönnyíti. hangokat? Megpróbáltam, szörnyû gyötrelem minden
egyes hangnál a következõ képletekkel kiszámolni a
A SpeccyBeep egy Windows-alapú dallamszerkesz-
magasságot és a hang hosszát:
tõ, melyben a szerkesztett dallamot kiterjesztésû
munkafájlba lehet menteni, ami lényegében egy DE = Hossz = Frekvencia * Másodpercek száma
szöveges dokumentum és soronként egy-egy hang
HL = Magasság = (437500 / Frekvencia) - 30.125
adatait (oktáv, hang, hossz) tartalmazza. A Speccy-
Beep nagy mutatványa, hogy a dallamot egy ZX Ez a módszer nem elég, hogy keserves rabszolga-
Spectrum számára is emészthetõ kiterjesztésû munkával jár, de még a hiba lehetõsége is nagyon
assembly fájllá is átalakíthatjuk, mely egy egyszerû magas. Elsõ ilyen kínlódásom után gyártottam ma-
lejátszó rutint is tartalmaz. Ezt fájl egy külsõ program- gamnak egy Excel táblát, amiben minden hangma-
mal (pl. PASMO) átalakítható vagy formá- gasságra és hanghosszakra kiszámoltattam DE-t és HL
tumba, amit szintén a SpeccyBeep-bõl vezérelve be is regiszterekbe töltendõ értéket. Ezt használni már egy
lehet tölteni egy külsõ ZX Spectrum emulátorba. fokkal kényelmesebb volt, de még mindig túl
Betöltés után a dallam a körülményesnek és lassúnak tûnt egy táblázatból
parancs kiadásával indítható. egyesével kibogarászni a megfelelõ adatokat, pláne,
hogy egy rövidebb dallamsor is kb. 30-40 hangot
Sokat kutattam hasonló programok után, de vagy a
tartalmaz. Ekkor döntöttem el, hogy saját kényelmem
keresõ szavakkal vagy velem volt probléma, vagy a
és idegeim épségének megõrzése érdekében meg
legvalószínûtlenebb: egyszerûen nincs ilyen program.
kell írnom a SpeccyBeep-et.
34
Dallam létrehozásához elõször válaszd ki a emészthetõ fájllá, a gombbal pedig futtatha-
zongorabillentyûkön a hangot (piros lesz a billentyû), tod ezt az emészthetõ, valószínûleg vagy fájlt.
majd a 'Tune:' felirat alatt látható 1, 1/2, 1/4, 1/8. Fejlesztési lehetõségek még vannak a programban,
gombokkal válaszd ki a hang hosszát (a gombok erre utal a verziószám is. Például benne lesz az oktáv
felirata egyenlõ a hang hosszával másodpercben). emelése, csökkentése teljes dallamsorra vonatkozóan,
Ekkor a hang megjelenik a bal oldalon lévõ listában, vagy a dallam gyorsítása, lassítása is. Viszont nem
pl. 3rd E 1/2, ami annyit jelent, hogy a harmadik lesz benne lehetõség többszólamú dallam létre-
oktáv E hangja fél másodpercig szóljon. Ha kipipálod hozására, marad a bípelõs hangzás.
a opciót, akkor a zongorabillentyûk leütésekor
és a hangok hosszának megadásakor is hallhatod a Letöltés: http://fanzix.hu/sbhun.htm
beállításoknak megfelelõ hangot.
Ha a dallamba szünetet akarsz beiktatni, akkor a
felirat alatt látható gombok valamelyikét kell
használnod, ilyenkor a hangok mintájára a dallam-
sorba bekerül egy szünet, ami a gombon lévõ felirat-
nak megfelelõ másodpercig fog tartani.
Az / kiválasztásával érheted el,
hogy a kiválasztott hang vagy szünet ne a dallamsor
végére, hanem a dallamlistában aktuálisan kijelölt
pozícióba kerüljön. Hangok törléséhez jelöld ki a
törlendõ hangot a dallamlistán, majd nyomd meg a PÓKOK
gombot. Hangok helyének megváltoz-
tatásához használd az (fel) és (le) gombokat
miután kijelölted a mozgatandó hangot a listán.
A lenyomásával meghallgathatod a dal- Snake-Pit
lamot, ez nem pont úgy fog szólni, mint amit egy Unalmas óráimban si-
emulátor produkál, ez a funkció csak elõhallgatásra került a Snake-Pitet,
szolgál. A ill. a gombokkal pedig egyik kedvenc kis programomat
betöltheted / lementheted a dallamlistát. visszafejteni. Érdekes volt fejteget-
Ha meg akarod hallgatni a dallamot emulátoron, ni, igazából azért kezdtem bele,
vagy akár egy valós gépen, akkor elõbb meg kell mert mindig zavart a piros kígyó
adnod néhány dolgot: pimaszsága. Meg aztán elég rövidke program,
így még jegyzetelni se volt szükséges.
-A mezõben add meg a leendõ ASM és TAP
fájl nevét. Ha valaki szeret játszogatni vele, akkor ezt a két
POKE-t feltétlenül próbálja ki:
- A mezõben add meg a külsõ
fordítóprogram elérési útját, pl.
POKE 27446,0 könnyû fokozat
-A mezõben a fordítóhoz tar- Elõzõ +
tozó paramétereket adhatod meg, itt -t kell
POKE 27447,202 extra nehéz fokozat.
írni a szerkesztett fájl neve helyett, pl. a Pasmo-hoz
tartozó paraméter lehet:
, ilyenkor a fordító létrehoz egy fájlt.
- A mezõben a már átfordított fájl
futtatásához használt program elérési útját adhatod Save the Trees
meg, pl.: Nem sokkal a játék megjelenése után adták közre
ezt a kis örökélet poke-ot a WOS-on.
- A pedig értelemszerûen a fut-
tatáshoz használt program futtatási paramétereit Örökélet:
kell, hogy tartalmazza, pl. 27937, x x = életek száma
Ha az adatokat megadtad, akkor a
gombbal létrehozhatod az fájlt a
mezõben megadott néven, a gombbal
átfordíttathatod egy ZX Spectrum számára is
35
PROGRAMOZÁSTECHNIKA
HOGYAN KÉSZÜLT AZ ISHIDO: THE WAY OF STONES
Avagy a kezdõ programozó buktatói Második találkozás
Megtévesztõ a cím, mert nem az a lényeg, hogy De nem sokáig maradt feledésben, 1995-ben szerez-
hogyan készült el az Ishido, hanem az, hogy hogyan tem programozói végzettséget, aminek a végén bi-
jutottam el odáig, hogy elkészülhessen. Ez az iromány zony le kell rakni valami munkát az asztalra,
azoknak szól leginkább, akik ZX Spectrumra való részemrõl (egy barátommal karöltve) ez a Logikai
programfejlesztésben törik a fejüket, de a sok buk- játékok számítógépes megvalósítása címet viselte.
tató már elriasztotta õket. Másrészt azoknak, akik Ebbe beletartozott egy nagy csomó assembly rutin
nem tudják hol elkezdeni a dolgot, harmadrészt a (fõleg grafikai), meg négy játék megvalósítása a
többieknek, akik csak kíváncsiak kínlódásaim sorára. rutinok segítségével. Egyik ilyen játék volt az Ishido.
Aki már haladóbb a gépi kódú programozásban, az Ekkor kellett végiggondolnom elõször, hogy milyen
nem fog semmi újat tanulni a leírtakból. elemekbõl építhetõ fel a játék, milyen eljárások,
függvények, változók, stb. kellenek a játék
Elõzmények elkészítéséhez. Tehát mondhatnám, hogy ekkor
Ha az elejérõl akarom kezdeni, és miért is ne kezdtem el a játék Spectrumra való átírását, ami igaz
akarnám ezt tenni, akkor elég sokat kell visszabaktat- is, mivel az ekkor elkészített Pascal nyelvû program jó
nom az idõben. A történet mindkét szála a nyolcvanas támpont lett a Spectrum változathoz. De az igazság
évek végére vezet. Elsõ és sokáig jelentéktelen inkább az, hogy akkoriban egy másodpercre sem
szálként megemlítem, hogy nevezett idõszakban fordult meg a fejemben a játék átkonvertálása.
barátkoztam a Spectrum gépi kódú programozásá-
val. Második szálként meg, lényegesebb szálként kell Elkelne egy Spectrum verzió is
szólnom arról, hogy a címszereplõ játék egy konver-
zió, Michael Feinberg 1989-es, Macintoshra megje-
lent játékának a Spectrum átirata. Nem mintha valaha
játszottam volna az eredeti játékkal, csak a DOS-os
változatot ismertem, amit az Accolade forgalmazott
1990-tõl.
1992 körül, mikor már jó ideje meghalt a 48K-s
Spectrumunk, a család számítógépe, a szüleim
vásároltak egy 386-os PC-t meg egy monochrom
Philips monitort. A gépnek volt néhány elég lenyûgözõ
tulajdonsága, mint a 80 megás HDD, a memóriával
bõvíthetõ Trident videokártya. Késõbb került bele
egy Gravis Ultrasound hangkártya is, ami akkoriban
elég spécinek számított.
Ködösek az emlékeim, de az Ishido az elsõ értelmes
játékok között lehetett, amit játszottam a gépen. Teltek az évek, belefogtam mindenféle dolgokba,
Mindig is könnyen beszippantottak a hasonló logikai néha azok fogtak ki rajtam, valamikor már a XXI.
játékok, mert a szabályok nincsenek túlbonyolítva, században eszembe jutott az Ishido, fõleg az, hogy
könnyen megérthetõek, de jut bennük egy kis mellék- de jó lenne játszani vele ZX Spectrumon. Keresgélni is
szerep a szerencsének is, éppen csak megfûszerezve kezdtem a World of Spectrum végtelennek tûnõ
a játékot. Egyszerûségük ellenére összetett, változa- játékadatbázisában, de nem akadtam semmiféle
tos, élvezetes a játékmenet, folyamatosan lehet ben- konverzió nyomára. Nem emlékszem semmilyen el-
nük fejlõdni, elõször viszonylag gyorsan, késõbb határozásra, de arra igen, hogy elkezdtem papírra
egyre nehezebben, a tudásszintnek megfelelõen rajzolgatni mindenféle figurákat, képernyõterveket,
mindig új célokat lehet bennük találni, elérni, tehát az számolgatni, hogy mekkora lehetne egy mezõ, szóval
én értelmezésemben optimális a nehézségi szintjük. mindenféle játékkal kapcsolatos dolgokat. Akkor azt
Sokat játszottam a játékkal, egyre magasabb gondoltam, hogy a játékot meg lehetne Basic-ben is
pontszámokat értem el, aztán nyilván jött valami írni, mert nincs benne olyan rész, ahol a gyorsabb
újabb játék, ami kiütötte a nyeregbõl és szépen assembly megoldások kellenének. Vacakoltam még
lassan elfelejtettem. vele, de nem akaródzott a programozás semmilyen
nyelven sem. Még az is megfordult a fejemben, hogy
36
Hisoft Pascalban kellene megírni, mivel régóta poro- derengett valami, hogy elõzõ életemben én már
sodott már egy Pascal kódom. Errõl a megoldásról is valami ilyesmit mûveltem... Ja, közben rádöbbentem,
gyorsan lemondtam, leginkább kényelmi okokból, hogy ez a PASMO mekkora egy király program,
miután elindítottam a Hisoft Pascalt, nem nagyon egybõl TAP-ot gyárt nekem a begépelt kis
nyerte el a tetszésem. irományokból. Mikor a fontokról volt szó, eszembe
jutott, hogy mindig is szerettem volna valami saját
Megint elmúlt néhány év (fogalmam sincs, hogy meny-
fontot kreálni, fel is használtam gyorsan Mopi font
nyi), aztán elkezdtem a játék megírását, de úgy
kreátorát és megcsináltam a Vortex játékoknál is
kezdtem, hogy nem is akartam igazán elkezdeni, sõt,
használt fonthoz hasonló fontomat. Közben megke-
nem is tudtam, hogy elkezdtem. Akkor készültünk a
restem az évekkel korábbi Ishido terveimet, rajzolgat-
Speccyalista Világ elsõ számának megjelentetésére,
tam mindenféle figurákat kockás, vagyis
és ezzel kapcsolatban olvasgattam Kapitány
négyzetrácsos papírra. Gondoltam az jó is lesz arra,
fordítását a
elsõ három részét a Sinclair.hu-n. Arra jutottam, hogy hogy saját UDG-ket csináljak. Addigra már megtalál-
nem csak olvasni kellene, hanem ki is próbálni, hátha tam a SevenUp-ot is, abban rajzolgattam a figurákat.
ragad rám belõle valami. Le is mentettem õket sev formátumban (nem vettem
észre, hogy a program eleve tud többféle adatfájlba
Megfelelõ munkakörnyezet exportálni, pl. asm-be), majd rájöttem, hogy nem oké
a dolog, mert nem tudom felhasználni a rajzaimat.
kialakításához vezetõ hepehupás út Szerencsére elég egyszerû a formátum, összedobtam
Na, akkor majdnem abba is hagytam, mert fogalmam hozzá egy sev-bõl asm-et csináló konvertert (persze
sem volt, hogy mibe írjam be a példákat, konkrétan utólag kiderült, hogy tök feleslegesen, de nem baj :).
már azon is fennakadtam, hogy milyen programot is Összefoglalva: abban a pillanatban próbálgattam a
kellene használnom erre a célra. Jó egy sima Hogyan írjunk játékot ZX Spectrumra... elsõ három
szövegszerkesztõ is? Vagy kell hozzá valami spéci fejezetében tanultakat, mondhatom, hogy többnyire
program? Elõbbi mellett döntöttem, beírtam egyszerû értettem is, hogy mi mire van hatással, és hasonlók.
Windows-os jegyzettömbbe, de adódott a következõ Hagytam, hogy a PASMO a háttérben megoldja a
kérdés: mit csináljak vele? Oké, hogy 'asm' legyen a problémáimat és létre tudtam hozni rajzokból 'asm'
kiterjesztés, de mi legyen a következõ lépés? Hogy fájlokat. Sajnos azt nem tudtam, pontosabban nem
lesz ebbõl valami olyan, amit be lehet tölteni egy jutott eszembe, hogy az asm fájlokban található
Spectrumba? defb kezdetû sorokat átmásolhatnám magába a
Kezdtem nézegetni a WOS fórumát, de az angol- programot is tartalmazó asm fájlba is, így jött a
tudásom olyan, mint egy általános iskolásé, szóval következõ probléma: valahogy a fontot meg a
szenvedtem rendesen mindenféle keresõszavakkal. grafikákat is a Spectrum memóriájába kell juttatnom.
Már nem is tudom kinek találtam meg a posztját, a Két nagyon egyszerû megoldás is van, mégis sok
lényeg, hogy a Crimson Editort ajánlotta, ráadásul idegsejtem látta kárát a megoldás keresésének.
még a beállításokat is leírta, hogy mit kell csinálni Találtam programot, ami asm-bõl bin-t csinál, majd
ahhoz, hogy a begépelt programok átváltozzanak egy másik programot, ami bin-bõl tap-ot. Hurrá,
betölthetõ, valódi programokká. Na meg még azt is már be is tudtam tölteni a fontomat. Teljesen le voltam
leírta, hogy kell a PASMO nevû program is ehhez a nyûgözve, hogy ezzel ki is tudok bármit írni a
metamorfózishoz, futtatáshoz meg nyilván egy emulá- képernyõre :) Aztán meg az Ishidos figurák is megje-
tor. lentek különbözõ színekben, maga volt a tökély. Ak-
kor ugrott be a kettes számú, kevésbé egyszerû
A PASMO nevét olvasva viszonylag gyorsan rájöttem,
megoldás: betöltöm pl. a font.asm fájlt a Crimson
hogy ez egy fordító program, de azt még nem
Editorba, aztán lefordítom a PASMO-val, aztán már
tudtam, hogy mire fordít. Így már kezdtem elõrébb
be is tudom tölteni programként egy emulátorba. Ez
jutni, kezdtem bepötyögni az olvasottakat, meg mó-
már félig-meddig praktikus volt, csak annyi baj volt
dosítgattam, hogy rájöjjek, hogy mi micsoda. A prog-
vele, hogy elõször be kellett töltenem a memóriába a
rampéldáknál a magyarázatok alapvetõen nagyon
fontot, aztán a grafikákat, aztán a programot, tehát
jók és könnyen értelmezhetõek. Pár napig tartott ez
kicsit macerás volt így az élet. Csak hogy ne rögzüljön
az ismerkedési idõszak, utána már arra gondoltam,
másban ez a suta megoldás, elárulom, hogy jobb
hogy ideje mélyíteni a kapcsolatomat a gépi kóddal.
megoldás lett volna, ha a font.asm teljes tartalmát
Gyakorlatban ez úgy jött, hogy már nem elégített ki
bemásoltam volna a programom végére, az elsõ
a példák egyszerûsége, kezdtem agyalni, hogy mi-
sorának elejére pedig Label-ként beírtam volna,
lyen konkrét dolgon tudnám az olvasottakat próbál-
hogy FONT. Ugyanígy eljárva a grafikával is
gatni.
egybõl betölthetõvé válik adat meg program is.
Akkor jutott eszembe az Ishido, amit jó pár évvel
ezelõtt már tervezgettem. Szóval nézegettem Ka-
pitány fordítását, nagyjából értettem is, pontosabban
37
38
sCenE esszencia
MESCALINE SYNESTHESIA
speciális képernyõ mód miatt kevesebb
processzoridõt tud használni a kóder, mivel a
képernyõ kb. felén, ahol az effektek megjelennek,
csak a kép kirakásával kell foglalkozni. Marad a
felsõ és az alsó kb. ¼ kép, és a visszatérítés alatti
idõ. Ehhez képest van itt minden, mi szem-szájnak
ingere.
Érdekes effektek:
▪ Tunnel mapping
▪ 3D hullám scroll
▪ Roto-zoomer
▪ Spirális csõ
▪ Bump mapping mozgó fényforrással
Alkotó: deMarche ▪ Sík rubber band golyók (kék gumibogyók)
Kategória: Demó ▪ Forgó plazma
Party: the Ultimate Meeting 2009
Helyezés: 1. Értékelés:
Code (by TmK): 5
Vélemény: Gfx (by TmK): 5
Az egész demó egy 3,5 perces LSD-s hallucináció, Mzx (by MmmC): 5
színes, pörgõ, kavargó formákkal. Pontosabban mesz- Design: 4 (de csak azért, mert végig giga-
kalin ez a drog, amit már az aztékok is használtok screent használ)
szertartásaikon. A bemutatón, 2009-ben, nagy
kivetítõn még nagyobb hatású lehetett, mint otthon Ajánló: deMarche stuffok, amit még érdemes
megnézve, pedig így sem semmi. A zene végig jól megnézni: paralactika, Scroller, make demos not
illeszkedik a látványhoz, és ugyanolyan elborult a 1k intros
hangzás, mint a képi világ. Még jobban értékeli az
ember, mikor rájön, hogy sima, 128k-s mû, nem az Emulátor: Unreal Speccy. Benne van a cso-
oroszoktól megszokott 640k-s TR-DOS-os monstrum. magban, bekonfigurálva.
A zenérõl vitatkoztak, néhányan a fórumon, azt Videó:
mondták, hogy rippelt. Az biztos, hogy a Chaos Con-
struction 2001-en indított Jaundice címû demónak is ez https://www.youtube.com/watch?v=x1o_Tr8jq3I
volt a zenéje, amit remixeltek a mescaline syn-
esthesiához. Nem szép dolog korábban megjelent
stuffot újrahasznosítani, de azt kell mondjam, ebben a
demóban jobban mûködik ez a zene, mint az eredeti-
ben.
A demó végig gigascreent használ. Ez igazi hardveren
villódzik, ami zavaró, bár ha akarja az ember, rá-
foghatja, hogy az is a haluzás része. Emulátorban ki
lehet kapcsolni a villogást, és érdemes is, mert nem jól
jelenítik meg a gigascreen-t, mivel nem 50 Hz-es
visszatérítésû monitorokat használunk (általában). A
demó nagy része 4*4-es módban fut, azaz 64*48-as
felbontásban, de ott is 2 képet cserélgetve, 64 színt
kezel.
A demó egy graffiti-szerû képpel indul, ami jó graffiti-
hez méltóan olvashatatlan, de szép színes cserébe.
Utána elindul a kavalkád. Az érdekesség, hogy a
39
sCenE esszencia
NEW VIEW 48K
mit, de a lényege, hogy 2D-ben forgatja a poligo-
nokat. A végén kapunk még egy multicolor képet.
A zene stimmel a demóhoz. A grafika és a dizájn
elmegy. A kód viszont igencsak rendben van, Alone-
Coder nem ma kezdte. Idézet az egyik hozzászólás-
ból:
Érdekes effektek:
▪ Real-time morfolás
▪ Gouraud árnyalt kocka
▪ Színes 3D forgatás
Alkotó: Conscience ▪ Színes mars effekt
Kategória: Demó
Party: Forever 2015 Értékelés:
Helyezés: 2. Code (by Alone_Coder, TK90X Fan): 5
Gfx (by trixs, Hippiman, nitrofurano, Louisa): 4
Vélemény: Mzx (by n1k-o): 5
A mescaline synesthesiával ellentétben, ez a demó Design (by Alone_Coder): 3
nem trükközik, izomból tolja az effekteket, így talán
jobban emészthetõ kevésbé fanatikusok számára is. Ajánló: Conscience stuffok, amit még érdemes
Kis túlzással ráfogták, hogy 48k-s, de a zene AY, megnézni: Mission Highly Improbable, 9 Channels
ezért egy AY extender biztos, hogy kell a gépre.
Összesen 73,5 kB-ban fért el, van 4 utántöltõs rész. Emulátor: ZX Spin (48k+AY, de egyszerûbb, ha
Emulátorban észre sem veszi az ember, de magnót 128k módba teszed)
használva, igazi gépen, ezek a töltögetések tönk-
reteszik a demó egységét. Videó:
Egy jópofa morfolással indít. Utána egy Test Drive-ot https://www.youtube.com/watch?v=dCyo1zhKjoM
idézõ autózás következik, majd pár egész képernyõs
színes scroll, aztán jön a killer effekt: gouraud árnyalt
kocka, és egy színes gyémánt formájú test forgatása.
Az utóbbinál a Speccy színkezelésébõl adódóan
szépen megfigyelhetjük a color clash-t is. Levezetés-
ként egy mars effektet láthatunk, és egy nem tudom
40
HARDVER SIMOGATÓ
ZX81: ZXPAND - EXPANDER RETRO MÓDRA
A ZXpand melyet Chlarlie Robson követett el az " " - aktuális verzió kiírása
RWAP Software számára a ZX81 harmincadik " " - RAMTOP beállítása, NEW kiadása
születésnapjának méltó megünneplésére készült. " " - 'Low' vagy 8-40K RAM mapping beál-
lítása
Ez a kütyü nem más, mint egy SD kártya illesztõ,
" " - 'High' vagy 16-48K RAM mapping
amirõl könnyedén tölthetünk be fájlokat, FAT- kom-
beállítása
patibilis és az alkönyvtárak használatát is megenge-
" " - aktuális RAM mapping kiirása
di. Mindemellett 32K memóriával is rendelkezik, mely
" " - aktuális könyvtár kijelölése
konfigurálhatóan többféle nagyfel-
" " - gyökérkönyvtár beállítása, ua mint a /
bontású módot is támogat.
" " - shadow ROM kikapcsolása a következõ
Kiegészíthetõ a
resetig
ZXpand AY
hangmodullal is, A CAT parancs a COPY helyére költözött be,
mely AY-3 így a Z lenyomására megjelenik a CAT, és
8910-at használ kártya hiányában 3/0-val bevégzi, egyéb-
a hangkeltéshez és ként nyilván a kártya katalógusával tér vissza.
Zon-X kompatibilis. Op- Adott alkönyvtár tartalmát így listázhatjuk ki:
cionálisan 9 tûs Atari típusú bot-
kormány csatlakozót is ráberhelhetünk, CONFIG "D=GAMES"
bár a ZX81 programok joystick támogatottsá- CAT
ga eléggé gyér. Használható az alábbi forma is:
Bár nem a harmincadikra, de én is CAT "../GAMES"
szülinapomra leptem meg maga-
mat vele, ezúton szeretném felhívni Egy Nokia 6600-ból zsákmányolt
a figyelmeteket rá és megosztani a 32M-es SD kártyát dedikáltam erre
tapasztalataimat. Egy olyan a feladatra. A rámásolt fájlokat
speciális változatot rendeltem, me- rendben be tudtam tölteni és futtatni,
lyen a 32K RAM letiltható, hogy de a hosszú fájlnevekkel már nem
meg lehessen kínálni hátulról birkózott meg a ZXPand, sõt
például egy 64K RAM pakkal. Ezt egyáltalán nem lehetett betölteni ilyen
alapvetõn amiatt kértem, hogy a fájlokat, csak és kizárólag a standard
MUZIX81 audio processzorral is lehessen majd 8.3-as el-nnevezést komálja. Ennek el-
használni, az pedig kívánja a sok memóriát. Most lenére a CAT azért mutatja ezeket is.
nyilván engedélyeztem a belsõ 32K RAM-ját, el is Egy program betöltése SD kártyáról, ami mondjuk a
indult és ezzel teszteltem. HIRES könyvtárban található, az alábbiak szerint néz
ki:
Mûködés CONFIG "D=HIRES"
Manapság mondhatnánk, hogy Plugn play, mert csak LOAD "CRUSH"
csatlakoztatnunk kell és máris használható. Induláskor
rögvest kiírja a képernyõre, hogy: ZXPand 1.x. A FAT A LOAD parancsnak azonban vannak új funkciói is.
kompatibilis SD kártyákat kezeli, és egyaránt szereti Elõfordulhat, hogy programunkat adott memóriacímre
a FAT12, FAT16 és FAT32-es formátumokat. Az szeretnénk betölteni, ekkor használjuk ezt a formátu-
alkönyvtárak használatát is támogatja, de nemcsak mot:
lépegethetünk közöttünk, hanem ZX81-en is LOAD PROGRAM;{mem.cím}
készíthetünk alkönyvtárakat. A szabványos fájl Ugyanakkor lehetnek olyan programok, melyek
formátumot kedveli és az összes nagyfelbontást használják a printer rutinokat vagy a karakter táblát
használó programot is futtathatjuk. a ROM-ban, ilyenkor az ezzel a formával a program
Az eszközt kezelõ parancsokat a ROM-ban a printert betöltése után lekapcsolhatjuk a ZXpand árnyék
maceráló utasítások helyére tették, amúgy az új ROM-ját egy következõ resetig:
parancsok implementációja az eszközön található LOAD PROGRAM;X
árnyék-ROM-ban található.
A LLIST helyén egy CONFIG parancsot kapunk, a- Kazettáról továbbra is tölthetünk be a sima LOAD ""
melyhez az alábbi paraméterek adhatók: paranccsal. A normál SAVE parancshoz képest a
41
ZXpand SAVE-je rendelkezik egy új lehetõséggel, Emuláció
egy adott memóriadarabot is lementhetünk, ssss
címtõl, hhhh bájt hosszan: Az EightyOne emulátorhoz készült egy kiegészítés,
mellyel kipróbálható és használható emulátorban a
SAVE "PROGRAM;ssss,hhhh" ZXpand, ezt az EightyOne X 1.0 X3.7-es verziója már
Kazettára csak a parancs kiadása után tudja. A programokat az mappában
tudunk menteni. kell elhelyeznünk. A ZXpand emulációhoz válasszuk ki
a menüt [F6], az -nél pipáljuk ki a
A DELETE parancs is kakukk módjára az LPRINT helyén
-ot, a alatt pedig az -nél válasszuk
húzta meg magát. A LOAD-SAVE esetében nem kell
ki az -t.
bajlódnunk a kiterjesztéssel, azonban törléskor a
teljes fáljnevet meg kell adnunk:
DELETE "fájlnév.p"
ZXPand-Commander
Nagyon korrekt Márton kommanderszerû fájl
Firmware / ROM upgrade menedzsert is készítettek hozzá, mely a ZXpand-Com-
mander névre hallgat és jelenleg az 1.8-as a leg-
ZX81-es körökben abszolút élõ eszközrõl beszél- frissebb verziója. A program teljes funkcionalitásának
hetünk, rengeteg fórum bejegyzés foglalkozik vele és kihasználásához érdemes a 2.2 firmware-re frissíteni.
rendszeresen lehet firmware és ROM frissítésekhez is
jutni.
Az én eszközöm egyébként egy 5.1-es verzióra hall-
gató ROM-ot és egy 1.3 firmware-t tartalmazott,
amirõl hamar kiderült, hogy nem a legfrissebb
párosítás, így legalább ezt is kipróbálhattam.
A firmware frissítését igencsak könnyû elvégezni, mert
az SD kártyáról betölthetõ. A letöltött firmware
képállományt kicsomagolva kell rámásolni egy frissen
formázott SD kártyára. Ezt helyezzük be az illesztõbe
és hard reset hatására elkezdõdik az upgrade, ki-
gyullad a piros led és villog a zöld, és ha megtörténik
az upgrade, akkor a ZX81 resetel. Különösebb
erõfeszítés nélkül sikerült is frissítenem a legújabb
verzióra a kis ZXPandomat, amit elég könnyû
ellenõrizni, miután induláskor ezzel jelentkezik be. Az alábbi funkciókkal rendelkezik:
A ROM frissítéshez vagy egy EPROM-égetõre lesz ▪ könyvtárak tallózása
szükségünk, vagy rendelhetünk az RWAP-tól friss ▪ programok futtatása
EPROM-ot, amit csak be kell dugnunk az illesztõnkbe. ▪ alkönyvtárak készítése
Mindenestre érdemes elõször ellenõrizni, hogy a ▪ szövegfájlok megjelenítése
miénk mit tartalmaz, ezt az alábbi utasítással tehetjük ▪ monokróm BMP fájlok megjelenítése
meg: ▪ fájlok és üres alkönyvtárak törlése
PRINT PEEK 7679 ▪ fájlok és alkönyvtárak átnevezése
Erre a válasz egy kétjegyû szám lesz, pl. 51, ami az ▪ fájlok másolása és mozgatása
5.1-es verziószámot jelenti. Az épp aktuális ROM Minden helyzetben a [SHIFT+H] billentyûkom-
verzió 6.6, így én beégettem ezt az én EPROM- binációra érhetõ el a HELP.
omba.
A program teljes forrása is
hozzáférhetõ, de a fejlesztõ
kéri, hogy az esetleges
Dobozolás javításokat, újdon-
Az illesztõt úgy tervezték, hogy alape- ságokat küldjük el neki,
setben pont belepasszoljon egy MEMOPAK hogy azok a hivatalos
dobozába, csak egy apró rést kell ejteni a verzióba is bekerülhes-
doboz oldalán az SD kártyának. senek.
42
HARDVER SIMOGATÓ
HUNGARIKUM: TZX MOUSE ÉS JOYTAPE PLAYER
Ezúttal nem egérrõl és botkormányról esik szó,
hanem egy a magnót helyettesítõ készülékrõl, egy
egérszerû és egy botkormányszerû csomagolásban.
TZX Mouse
A MegaBit-X elnevezésû 2010-es Speccyalista napon
mutatta be Gondos Csaba nekünk TZX lejátszóját,
amely segítségével magnó nélkül tölthetõk be prog-
ramok ZX Spectrumba. Ez a remek találmány azon az
elven alapszik, hogy belsõ memóriájába elõre, meg-
határozott módon feltöltött TZX formátumban szereplõ
programokat tárol, amelyeket gombnyomásra leját-
szik. Az eszköz a magnó csatlakozón keresztül köz- A kapcsolás fõbb részei az 1K program és 64bájt
vetlenül kapcsolódik a ZX Spectrumhoz, így RAM memóriával rendelkezõ PIC12F675 mikrokon-
egyszerûen a LOAD "" paranccsal az eredeti módon troller, SPI buszos flash memória, és a tápfeszültség
(bejelentkezõ képpel, egyedi loaderrel stb.) (elem) kapcsoló áramkör.
betölthetõ bármely program. Ebben az elsõ verzióban a lejátszó egy
Valójában Csaba ezt már ez elõzõ évben kifejlesz- programgyûjteményt tartalmaz, mely a felhasználók
tette, amelyet az akkor sajnálatos módon elmaradt által nem lesz változtatható.
rendezvényen nem tudott bemutatni, azonban szeren- A mikrokontrollerben futó saját fejlesztésû program
csére egy kellemes ZX vacsorára elhozta magával valósítja meg a TZX kódolás visz-
a prototípust, amelyre azonnal felfigyeltünk. A szaalakítását hangfrekvenciás jelekké. A
garázskapu-nyitóba szerelt aprócska, belsõ memória 3 vezetéken (chip select, clock,
hangszóróval is bíró eszköz kellemes data in/out) csatlakozik a kontrollerhez,
csipogása magával ragadó volt, még a két változatban 64 és 8Mbites IC-k
Spectrum-mmentes környezetben is. mûködnek. A mikrovezérlõ kimenete jel-
formálás után már a Spectrum EAR
Elképzelés bemenetére csatlakozik, akár a kazettás
Korábban a Spectrum háttértárak fej- magnó. Az eszközben található miniatûr hang-
lesztése során legfontosabb szempont szóró csak a retró hangzást szolgálja. A flash
volt a minél nagyobb adatátviteli sebesség elé memóriába az összeszerelés elõtt kerül ICprog-
rése. Esetünkben azonban egy olyan lejátszó ki- ramozóval beírásra a TZX szerkesztõvel összeállított
fejlesztése volt a cél, mellyel korhûen élhetjük át fájl.
a kazettás programbetöltést, de mégis annál jóval
megbízhatóbban, esetleg plusz kényelmi szolgáltatá- Mûködés
sokkal fûszerezve. Az egyik nyomógomb a tápfeszültség kapcsolását is
Manapság az emulátor formátumok közül a TZX típus végzi az áramkörben, majd a másik nyomógombbal
az, amely legjobban megõrzi az eredeti betöltési a lejátszandó program kiválasztását végezhetjük. Ezt
eljárásokat. Ráadásul a programok szinte kivétel többféleképpen végezhetjük.
nélkül hozzáferhetõk ebben a formátumban. Ezek után Lépegethetünk egyenként elõre vagy választhatjuk a
már kézenfekvõ volt, hogy egy olyan eszközt kell 8 bites bináris beírási módot, ilyenkor a két gomb
készíteni, amely TZX fájlt képes lejátszani, ami a régi segítségével írhatjuk be binárisan a betöltendõ prog-
kazettás magnetofon jeleit állítja elõ. ram sorszámát, miután az elsõ menüprogram
betöltõdött. A betöltés végén a lejátszó a következõ
Hardver gombnyomásig kikapcsol, miután saját memóriájába
Az elektronika tervezésénél a minimalista szemlélet elmentette a programszámláló állását. A precízebb,
volt az irányadó, a legegyszerûbb, legkevesebb tisztább jeleknek köszönhetõen, a TZX idõzítések
alkatrészbõl, ugyanakkor még jól használható szerinti akár négyszeres turbó sebességû betöltési
szolgáltatásokkal. módot is használhatunk.
43
Megjelenés ok "sorozatgyártása". A kis szerkezet ezen megje-
lenése után a JoyTape Player nevet kapta a kereszt-
A lejátszó megvalósítása során a legnagyobb kihívást, ségben.
mint mindig, a dobozolás jelentette. Ez az elsõ va-
riációban egy üresen, újonnan is beszerezhetõ Ahogy késõbb Pgyuri mesélte, a MegaBit-X váratlan,
"garázskapu távirányító" dobozkája volt. Errõl kapta egy héttel elõre hozatalával hatalmas kihívás elé
a lejátszócska a TZX Mouse elnevezést. állítottuk a kis csapatot, így csak éjszakákba nyúló,
megfeszített munkával sikerülhetett az utolsó pillana-
Menü tokra elkészülniük, hogy a rendezvényen bemutat-
hassák a kész JoyTape Player terméket a Speccyalis-
A TZX Mouse-ban végül a Speccyalista TOP 100
ta társaságnak, amelyben helyet kapott a WSS
kapott helyet és tetszetõs menü is készült hozzá, mely-
teljes játékcsomagja, természetesen pár apró meg-
nek segítségével könnyedén kiválasztható a
lepetéssel fûszerezve.
betöltendõ program. Ebben az esetben a menü fütyüli
el binárisan a kiválasztott program sorszámát az A rendezvény csúcspontján rántották le a leplet az
ENTER lenyomására a lejátszónak.
JoyTape player
Mint utóbb kiderült, a vacsorán látottak a WSS
fejlesztõinek érdeklõdését is felkeltették, és a TZX
Mouse projekttel párhuzamosan izgalmas vállalkozás-
ba kezdtek. A termékben rejlõ
lehetõségeket õk is azonnal meg- Hatalmas ováció fogadta a termék bejelentését és
látták, de számukra a zord külseje kisebb tülekedés is övezte a korlátozott számban
riasztó volt. Töprengtek hát, hogy készült lejátszók megvásárlását. Végül a készítõk
mibe lehetne rejteni, egy este ígéretet tettek egy újabb sorozat legyártására.
körvonalazódni kezdett egy
aprócska joystick képében, amely
megjelenésében sokkal inkább ille-
ni látszott a kedves, kis ZX Spec-
trumjainkhoz, mint a kis távírányító
dobozka. Hamarosan titkos projekt
is lett az elképzelésbõl.
Csaba kérésükre újratervezte és egyedileg átalakítot-
ta a WSS számára az elektronikát és annak belsõ
programját, miközben megkezdõdött a mini joystick-
44
HARDVER SIMOGATÓ
HUNGARIKUM: MICRO-POKEER
Flop. RAM nincs benne, ellentétben pl. a Multiface-
Gyártó: MICRO-STÚDIÓ szel. Az én MICRO-POKEer verzióm NYÁK lemeze
Kiadás: 1987 nagyon barkácsszagú, valószínûleg kézzel rajzolták
Eredeti ár: 2000 Ft és házilag marták.
A ROM egy része az eredeti ZX Spectrum ROM-
jából lett átemelve (pl. Load/Save rutinok,
A Micro-POKEer egy Multiface-hez hasonló interfész,
karakterkészlet). A 8K-s EPROM több mint fele üres,
amivel meg lehet állítani az éppen futó programot,
sõt, az EPROM akár 16K-sra is cserélhetõ, így
ki lehet menteni a teljes memóriát, örökélet-pókot
rengeteg fejlesztési potenciál van benne.
lehet beírni. A Multiface-nél kevesebbet tud, de még
így is nagyon hasznos kis es- Az elektronika úgy van ki-
zköz. A Micro-Studio val- alakítva, hogy a 7Fh (127d)
amikor 1988-1989 portra írt zéróval lehet
környékén dobta piacra, visszakapcsolni az eredeti
ha jól emlékszem, én egy ROM-ot, illetve visszatérni
Karácsonyi vásáron (BME a megszakított program-
aula) találkoztam vele, de ba. Érdekesség, ha 1-et
hirdették az SpV-ben is. írunk a 7Fh portra, akkor
bekapcsol a kütyü. Ezt nem
A ROM-ban található szöveg
használja ki az eszköz (pl. az
szerint a kódot a V&REW vagy
elmentett snapshot), de egy al-
W&REW software Hungary
ternatív firmware-ben esetleg
készítette. Nem hallottam még róluk és
hasznos lehet.
az interneten sem találtam utalást, az
interfész menüjében csak a MICRO-STUDIO van Megszakítás
megemlítve.
A futó program megszakítása a kék gomb megnyo-
Funciók másával történik, mikor az eszköz a /ROMCS jel
segítségével a saját ROM-ját lapozza be, a vezér-
▪ Programok fagyasztása (NMI gomb) lés pedig az NMI címre
▪ SCREEN tartalom Load/Save (16384-23295;
6,75 KBájt) kerül (66h). Itt még nem történik kiírás a képernyõre,
▪ Teljes RAM tartalom Load/Save (16384 csak csendben várakozik a program a billentyûkre.
65535; teljes 48 KBájt) Nincs saját RAM-ja az interfésznek, ezért bármilyen
▪ Turbo Load/Save (dupla sebességgel) képernyõre írás belerondít a képbe. Ha visszak-
▪ Peek/Poke/ugrás memória címre erül a vezérlés a megszakítás elõtt futó programra
és az nem frissíti a felülírt területet, akkor a MICRO-
▪ Meleg reset
POKEer által kiírt szöveg végleg ottmarad. Ezért pl.
▪ Hideg reset
a Micro-Monitor - amivel a memóriát lehet
A hardver írni/olvasni - beviteli mezõjét bárhová ki lehet tenni
(irányítás Q,A,O és P gombokkal).
A MICRO-POKEer nagyon egyszerû felépítésû. Talál-
ható benne egy 8 KBájt méretû EPROM (M2764A),
2db 7432-es VAGY kapu és egy 7474-es D Flip-
45
Snapshot Korabeli hirdetés
A kimentett snapshot kap egy Basic loadert, ami egy
gépi kódú betöltõt is tartalmaz. A Basic loader
elõször betölt egy screent, ami a program megál-
lításának pillanatában látható képernyõt tartalmaz-
za, majd a loadert a Basic területrõl a
képernyõmemória elejére másolja és ezzel betölti a
teljes elmentett memóriát, ezután a vezérlést átadja
a programnak. Van egy csel itt: az elmentett screen
2 bájttal hosszabb, mint a teljes képernyõmemória
(6914 bájt). Ez a plusz két bájt tartalmazza a prog-
ram megállításkor elmentett SP (stack pointer)
értékét. Így ezt a betöltés után visszaállítja és az
elmentett állapot a megállítás pillanatától folytatha-
tó (a stack-ben van az NMI feldolgozásakor elmen-
tett PC - program counter). Ennek a megoldásnak van
egy szépséghibája: A képernyõ elsõ 66 bájtját
felülírja, ami több mint két pixel-sor. Itt is igaz a fenti
állítás: ha nem frissíti ezt a részt a program, akkor az
végig ott rontja a képet.
Turbo
Az interfész turbo save üzemmódot is tud, ami pon-
tosan dupla sebességet jelent. Sajnos nagyon sok
magnóval ez visszatölthetetlen, ráadásul, mivel nem
ment turbo loadert a Basic betöltõbe, a MICRO-PO-
KEer nélkül vissza sem lehet tölteni a turbós mentést.
(Az interfésznek van turbo load opciója.)
A Turbo Loader bizonytalansága miatt, annak idején
felajánlottam a Micro-Studio-nak, hogy átírom meg-
bízhatóbbra a betöltõt. Tetszett az ötletem, de még-
sem valósult meg, már nem emlékszem miért. Nem
Az alábbi magyar fejlesztésû ZX Spectrum pro-
sokkal késõbb Amigára váltottam, így részemrõl
gramokat ke-ressük z80/tap/tzx formátumban
feledésbe merült a téma. A turbo load/save az
vagy akár kazettán, természetesen keressük a
eredeti ROM rutin másolata, néhány konstans idõzítés
hozzávaló kazettaborítót, leírást magyar vagy
átírásával, így a javítása sem több pár percnél.
akár angol nyelven is.
Az én MICRO-POKEer verziómon nincs továbbmenõ
▪ 3D Sakk (Novotrade)
élcsatlakozó, így pl. a Kempston joystick inter-
fészemet sem tudtam használni (mivel azon sincs), ▪ Betûpóker (Novotrade)
emiatt egy kicsit macerás a használata. ▪ Betûrömi (Novotrade)
▪ Erdélyi fejedelmek, Habsburg uralkodók
Mivel tud többet a Multiface? (Sági György, 1986, KLTE OK.)
A Multiface a saját 8K-s RAM-ba el tudja menteni a ▪ SZJA'88
teljes képernyõmemóriát, így bármilyen ▪ Mikroszervíz programcsomag
szöveget/menüt ki tud tenni a képre, a végén vissza ▪ DEMAK eprom égetõ programját
tudja állítani teljesen a program képernyõjét. Ezt a ▪ DEMAK ROM extender eredeti ROM-ját
8K RAM-ot sok másra is lehet használni, pl. ún. toolkit- ▪ Evolutaur c. játékot (Bíró Ádám & Zoltán)
et lehet feltölteni és futtatni benne. Ilyen volt a Genie
(disassembler) vagy a Lifeguard (örökélet keresõ). A speccyalista@sinlair.hu email címen
Van rajta Kempston joystick port is, így kapásból értesíthesz bennünket, ha neked megvan val-
meg lehet spórolni egy plusz interfészt. amelyik. Természetesen, ha olyan magyar
fejlesztésû program van a birtokodban, ami
Értékelés ebben a listában nem található, akkor se késle-
kedj:
Annak ellenére, hogy a MICRO-POKEer-nek vannak http://sinclair.hu/index.html?szoftver/magyar/t
hiányosságai, nagyon jól hekkelhetõ kütyü. artalom.php
46
HARDVER ÖTLETEK
FPGA SPECTRUM - 1. RÉSZ
A Sinclair.hu eddig is támogatott minden Spectrumhoz kivezetések és a billentyûzet csatlakozói miatt ez a
vagy egyéb Sinclair géphez kötõdõ hardver fejlesz- méret mindenképpen szükséges, hisz a panel az ere-
tést, hisz életben tarthatják kedvenc masinánkat. deti házba szerelhetõ.
Ugyanakkor sajnálatos tény, hogy az öregedõ gépek
egyre több fejtörést okoznak, épp ezért tartjuk ezt a
projektet kiemelt jelentõségûnek, melyet Jocó tulaj-
donképp a legnagyobb titokban dédelget már jó
ideje, de nemrégiben betekintést engedett számunkra
is az egyik klubnapon, melyrõl egyébként olvashatta-
tok az elõzõ számunkban. Most egy kicsit bepillantha- A ZX Spectrum 48 FPGA implementációja az FPGA-
tunk a részletekbe is egy cikksorozaton keresztül. ban lényegében készen van. A megvalósított gép
99.9%-ban kompatibilis az eredeti Spectrummal, ez
Nemcsak önmagában érdekes ez a fejlesztés, hanem
a speciális effekteket is lefedi, border és attributum
egyre több hajtás ereszt, amik szintén izgalmas ter-
varázslásokat.
méssel kecsegtetnek. A teljesség igénye nélkül
megemlíthetõ az ULA kiváltás, az USB billentyûzet
illesztés vagy a ZX Spectrum USB billentyûzet készítés. Video:
Ez a projekt már egészen elõrehaladott álapotban Az FPGA mag három féle videó kimenetet valósít meg:
leledzik, de azért kezdjük az elejérõl a bemutatását.
- PAL Composite videó jelet ad 5Y6U6V
formában, az Y, U, V komponensek palet-
47
Audio: Megoldandó szoftveres feladatok:
Sztereó analóg kimenet a MIC Jack csatlakozón - A mikrokontroller firmware programot össze
keresztül. A MIC csatlakozóra az eredeti MIC bit és a kell rakni. Részekben már megvan (pl. SD
SPEAKER bit hangja keverhetõ, hangerejük állítható. kártya írás, olvasás, USB eszközök kezelése,
A SPEAKER belsõ hangszóróval is mûködik. Az EAR kommunikáció az FPGA-val), de ezeket össze
bemenet a programok hagyomános betöltéséhez kell fûzni egyetlen egységes, stabilan mûködõ
használható. alkalmazásba.
- A spectrum ROM módosítása. Ennek is vannak
elkõzményei, de jelenlegi hardverre kell szab-
ni, hogy a háttértárat biztosan kezelje.
- HDMI audio implementálása.
- Spectrum 128 FPGA mag implementálása. A
(Természetesen AY chip is megvalósítható az FGPA-
meglévõ 48-as mintájára ez már nem lesz
ban, de ez majd a 128-as modellnél lesz érdekes.)
nehéz feladat, itt is inkább a ROM átírása a
nehézkes. A ROM-ot itt is alkalmassá kell tenni
Memória: arra, hogy a mikrokontrollert, mint háttértárat
lássa, és kezelje.
512Kx8 bit RAM, egyelõre a 48-as Spectrum e-
setében csak 64K van felhasználva.
Hardveres hibák, megoldandó problémák:
Tápfeszülség:
DC 5V, szabályzott.
Áramfelvétel:
A csatlakoztatott USB eszközök függvénye, de alape-
setben 100-300mA.
48
HARDVER ÖTLETEK - ZX SPECTRUM
USB BILLENTYÛZET ILLESZTÉSE EXTRÁKKAL - 1. RÉSZ
Úgy gondoltuk hasznos lenne egy ilyen PC USB tudja írni, ezáltal a Spectrum ROM-ja tetszõlegesen
billentyûzet illesztõ Spectrumhoz, mert ezidáig csak lecserélhetõ.
PS/2-es verziók készültek. Így kerülthetett sor arra, PIC mikrokontroller: a rendszer vezérlését teljes
hogy megtervezzem Balee nyomására ezt az illesztõt, egészében ellátó vezérlõegység. A PIC megvalósítja
ám rögvest tovább is gondolta és még egy SD kártya az SD kártya olvasását és az USB port kezelését is. Az
illesztéssel is megfejelte ezt, gyakorlatilag ugyanazzal USB host port elsõ sorban a külsõ billentyûzet illesz-
a két chip-el (de nagyobb lábszámmal), plusz egy tését látja el, de megfelelõ firmware-el lehetséges lesz
ROM-ot helyettesítõ RAM chip-el. Ezt az illesztõt mu- más USB eszközök illesztése is (egér, game controller,
tatjuk be nektek ebben a cikk sorozatban a végsõ pendrive)
megvalósításig.
49
eredeti ROM nem tud ilyen eszközt kezelni. Amikor a
SRAM a megfelelõ tartalmat megkapta, a PIC
elengedi a buszt, letiltja a belsõ ROM-ot a ROMCS jel
IDÉZET
segítségével, és RESET-el elindítja a Z80-at, ami ekkor
már a SRAM-ból fog futni. Ha tehát a ROM területen Mel Croucher interjúban olvastuk:
található szabad területre saját vezérlõprogramot Forrás: zxgoldenyears.net
írunk, akkor ez képes lesz a megfelelõ I/O portokon How does the industry compare with the way it
keresztül elérni a PIC-et. Ekkor a PIC átkapcsol stor- was in the early Eighties? Has the sense of adven-
age vezérlõ módba, azaz úgy fog mûködni, hogy egy ture returned along with improved technology or
minimális parancskészlettel az SD kártyán található is it still first and foremost a business?
FAT fájlrendszert elérhetõvé teszi a Z80 számára. Így
a ROM területre írt módosított Spectrum rom új és Azaz Milyen mértékben változott meg az
felülírt parancsokkal képes lesz az SD kártya tar- iparág a nyolcvanas évek elejéhez képest? A
talmát olvasni, írni. fejlettebb technológia visszahozta a kalandvág-
yat a szakmába, vagy ez továbbra is inkább a
legelsõ sorban üzlet?
A PIC, mint általános I/O port elérhetõ lesz a Z80 A Don't forget there were only a few thousand
számára, ezen keresztül valósítható meg a Spectrum computer games players out there when we start-
Basic-bõl is elérhetõ SD kártya kezelés (fájl írás és ed, and they were all enthusiasts. There were a
olvasás, load, save, snapshot load stb.). Ezeket az I/O couple of computer magazines printed on toilet
portokat a CPLD kapuzza ki, ebben a konstrukcióban paper, most people in the industry were willing to
az A3 és A4 biteket használtam fel a dekódolásra, help one another, and there was a feeling we
amelyeket eredetileg a ZX Interface 1 használt. were all on the same side. Producers and public
alike. It was and always will be a business of
course. What has changed is the scale of finances.
A külsõ billentyûzet illesztését szintén a CPLD oldja It's now very big business, and a business that is
meg, a Z80 szempontjából nincs különbség a belsõ és based on promoting violence and greed. Im-
a külsõ billentyûzet elérésében, ugyanúgy az proved technology has merely allowed the suits
A0/IORQ/RD (ULA read) és a címbusz felsõ 8 bitje to push higher-definition violence and greed to
válaszja ki a megfelelõ billentyût. A két billentyûzet the hard-of-thinking.
párhuzamosan is tud mûködni. A CPLD-ben lévõ 5x8
bites tároló egységet a PIC az USB billentyûzet álla- Ne felejtsük el, amikor elkezdtük ezt az egészet,
potától függõen állítja, a CPLD pedig a belsõ logiká- pusztán csak néhány ezer ember volt, akik
ja szerint ezt rákapuzza a az adatbuszra, amikor a számítógépen játszottak - de õk megszállottak
Z80 ULA read mûveletet hajt végre. voltak! Néhány számítógépes témájú újság volt
csupán kapható, az is WC papírra nyomtatva, és
a legtöbben az iparban még segítõkészen álltak
A rendszer inicializálása után a PIC fõprogramja két egymáshoz, és az volt az érzésünk, hogy mind
feladatot lát el: a fõ ciklusban kapja meg az USB ugyanazon az oldalon állunk - mind készítõk,
billentyûzet esetleges változásait, ami alapján a mind a fogyasztók. Persze ez mindig is egy
CPLD-ben található 5x8 bites tárolóterületet frissíti. üzletág volt és az is marad. Ami megváltozott, az
Amennyiben az I/O portokon háttértár vezérlõ a szakmában forgó tõke mértéke. Ez most már
parancs érkezik, akkor a PIC azt kiszolgálja. E két hatalmas üzlet! Egy olyan üzlet, ami abból tartja
feladatot egymás után sorban hajtja végre a PIC fent magát, hogy az erõszakot és a mohóságot
firmware, de ez nem okoz gondot, mert az USB helyezi elõtérbe. A fejlettebb technológia pusz-
billentyûzet kezelése megszakítás alatt törlténik, tán azt tette lehetõvé, hogy az öltönyösök
legfeljebb extrém versenyhelyzetben a odafentrõl HD-ban/nagy felbontásban tolják a
billentyûzetmátrix frissítése kicsit késik (amíg a PIC az brutalitást és nagyravágyást a gondolkodni nem
SD kártyát írja, olvassa), de nem marad el. akarók arcába.
50
FEKETE DOBOZ
AVAGY A KÕKORSZAKIK ESETEI
Miner elsõ 7 pályájának ugráskombinációit tõle tanul-
tam, sõt a mai napig is az õ útmutatása alapján
csinálom. Õ is éjszakába nyúlva játszott, nagyon sze-
rette a Spectrumot.
Amikor végre saját Spectrumom lett, új korszak
kezdõdött a játékok birodalmában. Végre nem kellett
sietni, volt idõ alaposan kiismerni egy-egy programot.
Legjobb barátommal akkoriban két olyan játék volt,
amit mindketten szerettünk. A Kokotoni hallatlan izgal-
Kalandok Spectrum programokkal makat adott, mert ketten játszottuk. Egy csillag
Számomra minden program külön kihívást jelent. Gye- összegyûjtése neki, a másik nekem jutott. Napokat,
rekként valami különös okból kifolyólag azt hittem, heteket gyakoroltunk és tudtuk, valami nagy dolog
hogy minden program végigjátszható és valami fan- lehet a program végén. Sajnos azonban soha nem
tasztikusan hatalmas, csodálatos, lenyûgözõ dolog sikerült végigjátszani, életeink mindig elfogytak,
történik a végén. Ennek okára nehéz rájönni, bár pedig tényleg volt igazi vége.
szerencsére a fantáziám meglehetõsen élénk volt. A
Az egyik leghosszabb játékélményem is barátommal
cél eléréséért képes voltam hosszú órákat játszani,
történt. Egyik évben elhatároztuk, hogy szilveszterkor
gyakorolni. sõt sokszor még idõsebb játékos
a Match Day fociban megnyerjük a bajnoki kupát. De
ismerõsömet is türelmesen nézni, hátha történik valami.
nem akárhogy! Nem öt perces, vagy tízperces
Erre remek példa a Deathchase program, amelyben félidõkkel, igazi, kétszer 45 perces meccsekkel! A
napokig nem tudtuk, hogy lõni is lehet, így aztán az bajnoki címhez 3 gyõzelem kellett (ha jól emlékszem)
órákig tartó üldözés végén sem történt semmi. és az este 10-kor kezdõdött "bajnoki évet" reggel
Mókásnak tûnhet, hogy vajon miért is nem jöttünk rá a hajnali 6-kor fejeztük be (a mérkõzés közben azért
feladatra. Nos, a magyarázat rendkívül egyszerû. A illett enni és a szülõkkel koccintani) és sikerült
másolt programokhoz semmilyen leírás nem kapcsoló- teljesítenünk célunkat. A maga nemében ilyen szuper
dott, így mindig próbálkozással kellett kitalálni, melyik szilveszterem soha nem volt.
gomb mit is csinál. Ebben a programban pedig a lövés Ahogy nõttem fel, már kezdtek letisztulni a játékprog-
csak bizonyos esetben mûködött... ramok. Voltak, amelyeket könnyedén sikerült végigját-
Aztán a sort a River Rescue folytathatja, ahol remekül szani, számos program hosszú küzdelem,
lehetett kerülgetni a krokodilokat és fatörzseket, majd térképkészítés, örökélet keresés után adta csak meg
kitartó szemgolyózás után még néhanapján repülõk is magát. Nem tudom, átélte-e már valaki, de a Silent
megjelentek. És ez ment órákon át. Aztán egy véletlen Service tengeralattjáró szimulátor alatt halotti csönd
mozdulat hozzácsapta a hajót a parti kikötõhöz és az honolt szobámban, még járni is csak lábujjhegyen
ámulat percekre mozdulatlanná tett. Hihetetlen szabadott. Mosolyra fakasztó visszaemlékezni. De
élmény volt és talán az ilyen "kalandok" váltották ki a hátra van még a feketeleves!
folytonos csodavárást. A Galaxians-ról már ne is Akkoriban a fülembe jutott, hogy egy klub mûködik
beszéljünk. Érettebb fejjel egy egyszerû lövöldözõs valahol messze, a Mexikói úttól kifelé a városból, amit
játékról van szó, de gyerekként minden egyes küldetés a Csokonai Mûvelõdési házban tartanak. No, több se
után a "Már csak egyszer kell nyerni!" felkiálltás kellett, a következõ szombaton már úton is voltam.
hangzott tõlem. Belépve a terembe rengeteg embert láttam, spectru-
Nagybátyám profi játékos volt a Horace & the Spi- mosokat, commodorosokat. Nagy nyüzsgés volt, alig
ders játékban, amelyben ketten fergeteges izgalmak tudtam felfogni, mi is történik. Azért azt sikerült meg-
közepette 10 pókig jutottunk el, ahol minden pillanat- érteni, hogy itt programot is lehet cserélni! Ehhez
ban felugráltam, annyira a játék hatása alá kerültem. viszont nem árt számítógépet is hozni. A következõ
Persze ott se értünk el gratulációt, de hitem töretlen hétvégén egy táskával felpakolva kedvenc Spectru-
volt. A játékélmények nagy része nagyszüleimnél mommal, magnóval és JUNOSZTY tévémmel meg-
eltöltött hosszú órákhoz kapcsolódnak. érkeztem és 50 Ft-ért béreltem egy helyet magamnak.
Az utazás borzalmas volt, mivel több, mint 2 és fél órát
Nagypapám mûszerész volt, kezdetben kölcsön, tartott oda, ráadásul a tv se volt egy könnyû
késõbb saját tervezésû és építésû számítógépével szerkezet. Bérelni lehetett, de az plusz forintokba
játszottam. Akármilyen hihetetlennek is tûnik, a Manic került volna, zsebpénzembõl pedig nem tellett rá. No
51
tehát sikerült helyet foglalni és vártam
vártam
Mivel az ember igazán soha nem nõ fel, a kalandok
vártam. Mint említettem, szégyenlõs ifjonc voltam, még sem maradtak abba. Újra elõkerültek a régi játékok,
programot kérni se mertem. Aztán egy jószívû szom- eleinte az ismert régiek, majd fõként olyanok, amelye-
széd megszánt (látva tanácstalanságomat) és odaa- ket gyerekkoromban nem tudtam végigjátszani. Elsõ,
dott egy programlistát, amirõl választhattam. legnagyobb sikerem az Atic Atac-hoz fûzõdik. Sikerült
Szerencsére én is tudtam adni neki programot, így örökélet és bármilyen csalás, térkép nélkül végigját-
létrejött a nagy üzlet, cseréltünk. Hát, ami azt illeti, ez szani, ráadásul nem is egyszer. Hatalmas élmény volt.
nem jött be igazán. Megint többet vártam, mint kap-
Aztán voltak meglepõ pillanatok is. A Simcity-vel PC-n
tam, mert a programok zöme az angol név alapján
találkoztam elõször, aztán megdöbbenve találtam
szenzációs dolgot rejtett, de betöltés után csalódás,
meg, hogy Spectrumon is létezett. Hogy mik vannak?!
csalódás hátán. Így többet el se mentem, de igazat
Néhány program akkora meglepetésekkel szolgált,
megvallva nem is nagyon akartam.
hogy nem is gondoltam volna. A ManicMiner 2-rõl
Sajnos, mint minden csoda, ez a korszak is véget ért, mindig is azt hittem, hogy sérült verziójú, mert a 6.
így aztán a Spectrum nyugállományba ment. Telt, múlt pályán egy olyan kulcs volt, amit nem lehetett össze-
az idõ... szedni. Ezt egy fórumon meg is említettem, ahol meg-
Aztán egy nap érdekes programra bukkantam. ZX lepetésemre azt a választ kaptam, hogy meg lehet
Spectrum emulátor. Szinte napokig mást sem tudtam csinálni. Kipróbáltam és tényleg sikerült. Még ilyet!
csinálni, mint játszani, próbálgatni. Kedvesem beava- Hány, de hány éven át próbálkoztam hiába és tessék,
tott az internet világába. Elsõ alkalommal, naivan csak nem sikerült rájönni a megoldásra. Ez az eset után
csücsülve kérdeztem tõle, hogy mire is jó ez az internet kedvet kaptam további kérdezõsködésre is. A Techni-
vagy mi. Azt mondta, lehet keresgélni érdekes cian Ted szintén hibásnak tûnt, de szintén kiderült,
dolgokat. Egy hirtelen ötlettõl vezérelve rákerestem a hogy csak én nem ismertem trükkjét, bár trükknek nem
Spectrum szóra, bár ez nem volt túl szerencsés, mivel nevezhetõ. Többekkel megegyezve ez a mai napig
rengeteg, nem ZX ismert legne-
dolog is elõkerült. hezebben
De a lényeg is ott teljesíthetõ,
volt! Klikk és egy értelmetlenül
hét múlva saját in- elbonyolított
ternet játék. A cél a
elõfizetésünk volt, Jet-Set Wil-
aztán indult az ly-hez hason-
élet új csapáson. ló, de nem
Éjjelente, a ked- elég, hogy
vezményes milliméterre
idõszak miatt, ál- pontos ugrá-
landóan prog- sokkal kell
ramokat töltöttem haladni, a fe-
le és mindent, ami ladatokat
csak kapcsolat- megadott
ban volt a Spec- sorrendben,
trummal. Másfél hónap után kifogytak az archívumok végtelenül
és végre kezdhettem feldolgozni az anyagokat. Köz- szoros idõre kell teljesíteni. El kell árulnom, hogy több-
ben azért arra is jutott idõ, hogy az emulátort meg- szöri próbálkozás után még az elsõ is lehetetlen fela-
vásároljam. Mondhatni bátor vállalkozás volt dat volt számomra. Pedig gyerekkoromban mennyi
borítékban pénzt küldeni, de szerencsémre jó egy idõt elpazaroltam erre a szépen kivitelezett játékra
hónap után megérkezett a jogtiszta, teljes verziójú szinte fáj. Programkészítõkben ekkorát még soha nem
Z80 emulátor floppy lemezen. A fontos az volt, hogy csalódtam. A Glider Rider-t pedig már meg sem em-
magnóról is lehessen betölteni programokat, hiszen a lítem.
teljes kazettagyûjteményem megvolt és ez csak ezzel De, hogy ne ilyen szomorú véget érjen írásom, meg kell
lehetett! említenem azt a kis programot, amellyel minden pil-
El lehet képzelni, amikor az elsõ betöltési hangok lanatban képes vagyok játszogatni, pedig szokatlan
megjelentek a hangszórókon
Szinte egy pillanat a billentyû kiosztása (Q, W, P, L), nem lehet lõni benne,
alatt minden régi emlék beugrott. A kazettán keresés, nincs hihetetlen szépen kidolgozott grafikája, a neve:
a betöltés várakozása újra a régi idõket juttatta e- Snake-Pit
:-)
szembe.
52
OLVASÓI LEVELEK
Most pedig a dicséretek következzenek!
A fõ oldal kézzel rajzolt grafikája csodálatos! Nem
Nos, Bali - és mindenki aki részt vett a szerkesztésben! tudom, ki alkotta, de ügyes volt és nagyon eltalálta
(bár a horizonton fel- vagy eltûnõ nap felette nem
Jó ideje leszoktam az olvasásról, pedig valaha faltam odaillõ), elsõre megragadta figyelmem! Nagyon sze-
a könyveket. Gyorsolvasó versenyt is nyertem, volt, retnék még ilyeneket látni a lapban.
hogy a munkám is arra kötelezett, hogy 500 oldalas
anyagokból készüljek fel 1 nap alatt. De elveszítet- A cikkek jól összefoglaltak, bár egy részüket mintha
tem az olvasás élményét. Csak a száraz adatok, már olvastam volna valahol... ettõl függetlenül így
célirányos információk felé fordultam. egyben mindenképpen élvezetesek és hasznosak. A
játékajánlók tetszettek, lényegre törõek, a WoW írás
Most - hála nektek és a kiadványnak - azon kaptam igen szépre sikerült. Van szerencsém ismerni a játék-
magam, hogy élvezem újra az olvasást, újra átérzem program készítõit és fontosnak érzem tisztázni, hogy
az olvasás örömét. NJózsi sokkal nagyobb részben vett részt a fejlesztés-
Nem tudtam letenni a Speccyalista világ 1. számát. ben, mint amennyit a cikk említ. Ha jól tudom, nem
csak motivált, hanem az összes grafikát õ készítette,
Annyira jól sikerült, hogy arra nem is tudok szavakat a pályákkal kapcsolatban is rengeteget dolgozott és
találni. egyéb feladatai is voltak, de ezt a WSS-tõl kellene
Talán csak egyet, amiben minden benne van, amit megkérdezni.
éreztem közben: Köszönöm nektek! A Gelka összefoglalás pedig egy igazán remek oldal!
Nos, ide 100 smiley kívánkozna, de talán anélkül is A rejtvény megoldását beküldtem, majd telefonon
értitek a lényeget. érdeklõdtem és közölték, hogy nyertem, de mind a
Szép volt fiúk! mai napig nem érkezett meg a díjam. Utána tudnának
nézni, hogy mi lett vele? Ha lehet, személyesen ven-
ném át a szerkesztõségben.
Szuper!!! Köszönettel egy új olvasójuk
Jól van szerkesztve, jó tartalom, szép kivitel!
53
REJTVÉNY
Beküldendõk a függõleges 1, 12 és a vizszintes 1, 4, 9, 12 meghatározások 2016. február 29-ig az
spv.rejtveny@sinclair.hu email címre. A helyes beküldõk között ZX Spectrum If2 Multiromot, eredeti csoma-
golású microdrive kazettát valamint játékkazettákat sorsolunk ki. A Nyerteseket a következõ számban tesszük
közzé és email-ben értesítjõk Õket.
1 2 3 4 5 6 7 8 9 10 11 12
1 T S
2
6 F
7 F
8
10
11
12 I S
Vízszintes Függõleges
54
REJTVÉNY
Függõleges 1 Függõleges 12
Vízszintes 12
1. PGYURI
2. KERTÉSZ LÁSZLÓ
3. MEZEI RÓBERT
Gratulálunk!
ZX Spectrum jákékkazetta nyereményûket postán juttatjuk
el számukra.
55
56