Spectrumológia: Spectrum Fejlesztői Környezetek I. | |||||||||
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. 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 alábbi host gépekre találtunk eddig példát: Z80-as host gépek:
Nem Z80 processzorral rendelkező gépek:
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 |