Spectrumológia: Spectrum Fejlesztői Környezetek I.

5 csillagos Cikk értékelése: 5,00 (9 szavazatból)

Már régóta kísért egy emlék, aminek szerettem volna utánajárni. Még anno a 8 bites korszakban láttam egy számítástechnikai tévéműsort, amiben egy játékprogram fejlesztő céget - annak idején szoftver háznak hívták őket - és valamelyik terméküket vagy annak a fejlesztését mutatták be. Akkor úgy tűnt, hogy nem a mikro gépen folyt a fejlesztés, hanem egy mellette álló korabeli PC-n vagy ki tudja min, ami az is lehet, hogy egy CP/M gép volt. Utóbbinak is lenne értelme az azonos processzor (Z80) okán, bár a cross assembler szoftverek mellett valójában ez nem is annyira szempont. A nagygép valamilyen kábelköteggel össze volt kötve a háziszámítógéppel, ami természetesen az emlékeim szerint egy ZX Spectrum volt. Remélem, hogy nem csak az elfogultságom okán szépültek meg az emlékeim.

Összefoglalva, ez az emlék a múltból arról szól, hogy valamely nagyobb szoftverfejlesztőnél nem a Spectrumon folyt a fejlesztés, hanem valamilyen irodai gépen, amiről a lefordított gépi kódot közvetlenül áttöltötték a Spectrum memóriájába. Ezért aztán nem lehetett gond, ha elszállt a kód, jöhetett egy reset és lehetett újra próbálkozni a nagygépről áttöltött, javított kóddal. Valószínű, hogy a forráskód és az egyéb adatok tárolását is hajlékonylemezen vagy merevlemezen tudták megoldani.

Az első nyomok...

Nagyon sokat keresgéltem már a neten ilyen cikkek után, de sokáig csak egy halvány utalást találtam, hogy létezett ilyen cross development system Spectrumra és a hozzá szükséges ROM program (RODMON) átalakítást a Digital Integration programozója Rod Swift készítette. (Amennyire utánanéztem, a cég és a programozó nevéhez repülőszimulátor programok fűződnek). Még az az információ szerepel az oldalon, hogy egy CP/M gépet használtak host-nak, amin történt a kód fejlesztése és fordítása, majd a lefordított gépi kódot áttöltötték és Spectrumon debug-olták.

Forrás

Következtetések

Nyilván abból is érdemes volt kiindulni, hogy valószínűleg Angliában települt a legnagyobb ipar a Spectrum mögé, így azon érdemes elgondolkodni, hogy abban az időben milyen, a Spectrumnál alkalmasabb gépek fordultak elő arra. A fenti weblapon az utalás a CP/M-re történt, ami valóban egy stabil és "iparibb" környezet, sőt akár közvetlenül is felhasználható egy CP/M-80 gépen történt gépi kódú fordításból keletkező object kód, hiszen a CP/M alapvetően az Intel 8080 processzorára készült, aminek a gépi kódja egy az egyben futtatható a Z80 processzoron, tekintettel arra, hogy annak utasításkészlete, ez utóbbinak a részhalmaza. Erre úgy találhatnánk közvetett utalást, ha a megvizsgált programkódban csak olyan Z80 utasításokat találnánk, melyek az Intel 8080-al közös készletből származnak, azaz nem szerepel a Spectrumos kódban olyan Z80-as utasítás, ami csak a Z80 sajátja. Ez már egy nyom lehetne.

Mindamellett azt gondolom, hogy a host gép alkalmazása nem feltétlenül a közös processzor miatt lehetett érdekes, hanem a már említett robosztusabb ipari környezet miatt, azaz, hogy egy szoftverház mérnökei ergonomikusabb billentyűzeten és hatékonyabb háttértárakon fejleszthették a szoftvereket, a hálózatba kötött csoportmunkáról nem is beszélve. Ilyen szempontok szerint vizsgálva nem is kellett a processzor azonosság, hiszen az object kód csak cross assembler program kérdése.

Viszont azt is tegyük hozzá gyorsan, hogy abban az időben azért a cross assembler programok alkalmazása nem is volt olyan nagy divat, legalábbis Spectrumon nem találkozhattunk vele.

Ugyanakkor ellenérvként el kell mondani, hogy ha nagy divat volt, ha nem, a kivitelezése nem is olyan túl bonyolult, gyakorlott programozók hamar összerakhattak egyet akár a semmiből is megírva, vagy egy létező assembler forráskódját módosítva a Z80 utasításkészletére.

Mindezek tükrében csak annyit lehet mondani a Spectrum kód vizsgálódásról, hogy ha találunk olyan kódot, amiben egyáltalán, vagy nem nagyon szerepel Z80 processzor specifikus utasítás, akkor ott felmerülhet a kód hordozás gyanúja, persze ez sem jelentheti azt feltétlenül, hogy fizikailag más gépen történt a Spectrum kód fejlesztése, csak azt, hogy a donor programé. Elméleti esélye ekkor is van, hogy valaki a gumibillentyűsön fejlesztett olyan gépi kódot, ami csak i8080-as utasításkészletet használt. Természetesen mindezek megfordítottja is igaz, azaz cross assemblerrel bármi történhetett.

Azért nekem már elég bizonyíték lenne, ha találnánk olyan kódot, ami csak, vagy döntően i8080 utasításokat használ, illetve ha találnánk olyan kód, pontosabban adat részleteket, foszlányokat, amiben utalások vannak egy idegen gépre vagy esetleg más operációsrendszeren futó, Spectrumtól különböző assembler programra. Erre azért komoly esély lehet, mert csináltak olyat az assemblerek, hogy fejléc jelleggel befordítottak szövegeket is a kódba, elé vagy mögé. Ilyen esetben, ha a kóderek felületesen takarítottak maguk után, akkor a végtermékben is benne maradhattak ilyen bizonyítékok.

A bizonyítékok

Végül a "Commercial Breaks - A documentary about the Imagine and Ocean Software" film alapján elkezdtem keresgélni a net-en. Találtam a filmre utalásokat, köztük a Colin Porch-al - egy volt Imagine alkalmazott - készült interjúban is. Itt említik először a SAGE fejlesztő gépet. Ezután már a SAGE nyomon indultam el, amit nem volt egyszerű megtalálni, mert hasonló néven volt egy hatalmas méretű IBM rendszer is, de végül eredményre vezetett a keresés és megtaláltam a SAGE II, illetve SAGE IV gépeket, melyeket a nevadai Reno-ban készítettek. Amiga teljesítményű gépek voltak Motorola 68000-es processzorral és fél mega RAM-mal, floppy-val, esetleg merevlemezzel. Komoly irodai gépek voltak ezek egy Spectrumhoz képest. Aztán szintén a film alapján rátaláltam egy korábbi Imagine/Ocean fejlesztőre, Doug Burns-re, akinél levélben érdeklődtem a SAGE II gépek akkori használatáról. Ő megerősített ebben és nagyon készségesen válaszolt a leveleimre. Ezen a nyomon elindulva sikerült feltérképeznem a korabeli fejlesztési metódusokat Spectrumra. Rátaláltam a Design Design szoftverház és az általuk használt egyedi Beast illetve Basil gépekre is, de ezekről majd később beszélünk.

Összefoglaló

Röviden összefoglalom, hogy mire jutottam és majd a lap következő számaiban tovább elemezzük az egyes módszereket. A magam részéről úgy érzem, hogy megtaláltam, amit akartam, ugyanakkor mindenkit ösztönöznék a további kutatásra, mert érdekes bizonyítékokra lelhetünk még. Alapvetően ipari méretekben senki sem fejlesztett a gumibillentyűs Spectrumon a gép köztudott hiányosságai miatt, úgyis, mint a strapabíró billentyűzet, vagy a gyors és nagyméretű háttértár. Ezért inkább valamilyen host rendszert alkalmaztak, amin folyt a fejlesztés, majd szintén valamilyen módszerrel összekötötték a gépet a Spectrummal, hogy a lefordított gépi kódot át tudják menteni a játékgép memóriájába és indulhatott a tesztelés. A módszer további előnye volt, hogy így nem vett el a fordító és a debugger értékes memóriát, illetve a gyakori rendszerösszeomlások sem veszélyeztették a fejlesztést, hiszen a forráskód biztonságban volt a host gépen. Három fő módszer létezhetett Spectrumra történő fejlesztésre:

  • az eredeti Spectrumon
  • host gépen Spectrummal összekapcsolva
  • egyedi célgépen
Mindhárom esetre sikerült példát találnom, de az elsőt jószerivel csak amatőrök alkalmazták, míg az utóbbit pedig csak igazán felkészültek, hiszen saját maguknak kellett elkészíteniük a cél hardvert, mert abban az időben még nem volt széles körben elterjed iparág, ami kiszolgálta volna ilyen eszközökkel a fejlesztőcégeket. Ezért leginkább a host gép Spectrummal való összekapcsolása terjedt el a szoftverházaknál. A megoldás előnyei:
  • hozzáférés a játékgép teljes memóriájához
  • a forrás- és gépi kódot a Spectrumtól függetlenül tárolhatták
  • valódi billentyűzet
  • fejlettebb háttértár (floppy, merevlemez)
  • a hostgép gyorsabb, stabilabb operációs rendszere
  • hálózatba köthető gépek a szoftverházaknál, csoportmunka
Az alapötlet világos, de a megvalósítás annyi féle volt, ahány cég, hiszen - mint azt már említettem, nem állt mögöttük komoly iparág, így a legtöbb hardver-szoftver megoldást maguknak kellett kikísérletezniük és kifejleszteniük. A host gép és a Spectrum összekapcsolására alkalmazott technikákat is csoportosíthatjuk:
  • host gép és speciális tape loader a Spectrumon
  • host gép és kábeles kapcsolat a Spectrummal
Az első esetre láttuk példának Matthew Smith-t, a Manic Miner és a Jet Set Willy fejlesztőjét, míg a második csoportra pedig az Imagine/Ocean csapatot is - például a filmen. Mint aztán megtudtam, ez utóbbi metódus volt az általánosan elterjedt. A kérdés csak az volt, hogy milyen gépet használjanak host gépnek? Eszerint is tovább bonthatjuk még a csoportot aszerint, hogy Z80-al rendelkezett-e a host gép vagy sem.
  • host gép Z80 processzorral
  • host gép cross compilerrel
Valódi jelentősége ennek nincsen, mert úgysem a fejlesztő gépen futott a kód, hanem a Spectrumon. Mindössze arról kellett gondoskodni, hogy legyen a gépen egy cross assembler, amely a forráskódból Z80 gépi kódot generált, ami alkalmas volt a Spectrumba való áttöltésre. Ezen cross compiler-eket is részben maguk fejlesztették a szoftverházak, ahogyan sok más, a fejlesztéshez nélkülözhetetlen és hiányzó segédprogramot is.

Az alábbi host gépekre találtunk eddig példát: Z80-as host gépek:

  • TRS-80
  • Tatung Einstein
  • Apple II with Z80 expansion

Nem Z80 processzorral rendelkező gépek:

  • SAGE II, SAGE IV
  • BBC

A következő részekben a konkrét példákon keresztül még mélyebbre ásunk...


Publikálás a portálon: 2022-04-15 16:06:00