Bevezetés

Hogyan, milyen eszközökön, eszközökkel készültek a Spectrum programok anno 198x-ben...
Avatar
MailMiner
LLIST Archiváló
Hozzászólások: 219
Csatlakozott: 2012.01.07. 23:12

Bevezetés

Hozzászólás Szerző: MailMiner » 2012.02.06. 18:29

Sziasztok!

2007 februárjában kezdődött Latyi.ca áltál aposztrofált téma boncolgatása, mely igen érdekes, bár elég nehézkes kutatni. Igyekeztem összefoglalni, ami a témában akkor elhangzott. Elsőként itt teszem közzé és ha már úgy találjuk, hogy nem maradt ki semmi, akkor lesz helye a portálon is. Az egyes bizonyítást nyert konfigurációknak külön témát nyitok, amikhez majd még lehet kutatgatni, mert gyanítom ennek a témakötnek még nem értünk a végére...

Az elkövetkező összefoglaló 2007. február-márciusban zajlott levelezések esszenciája, ha valami nem jó, rossz a következtetés, netalántán kimaradt valalmi, akkor jelezzétek.

A 2010-es Speccyalistan Nap Latyi.ca előadást is tartott a témában.
http://www.sinclair.hu/speccyalista/kon ... ki_web.avi

üdv,
Bali

Avatar
Bali
Site Admin
Hozzászólások: 1950
Csatlakozott: 2012.01.06. 13:34
Tartózkodási hely: Budapest III.
Kapcsolat:

Re: Bevezetés

Hozzászólás Szerző: Bali » 2012.02.06. 18:41

Spectrum Fejlesztői Környezetek

Már régóta kísért egy emlék, hogy még annak idején a 8 bites korszakban láttam egy számítástechnikai tévéműsort, amiben bemutattak egy játékprogram fejlesztő céget (illetve annak idején szoftver háznak hívták őket) és éppen valamelyik terméküket mutatták be vagy csak a fejlesztését, de ott úgy tűnt, hogy nem a mikro gépen folyt a fejlesztés, hanem egy mellette álló korabeli PC-n vagy ki tudja, lehet, hogy CP/M gépen. Ez utóbbinak is lenne értelme az azonos processzor (Z80) okán, bár a cross assembler szoftverek mellett valójában ez nem számít. 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 megszépültek ezek az emlékek.
Tehát összefoglalva, ez a flash a múltból arról szól, hogy valamely nagyobb szoftverfejlesztőnél nem a Spectrumon folyt a fejlesztgetés és a mondjuk magnóra történő adatrögzítés, hanem valami nagyobb irodai gépen, amiről a lefordított gépikódot direktben letöltötték a Spectrum memóriájába. Így 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 kóddal. Valószínű, hogy a forráskódot és az egyéb adatokat is minimum hajlékonylemezen tudták így tárolni.

Nagyon sokat keresgéltem már a neten ilyen cikkek után, de mostanáig semmit sem találtam, illetve nemrégiben egy halvány utalást, hogy létezett ilyen cross development system Spectrumra és a hozzá szükséges ROM program á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 annyi 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 debug-golták a Spectrumon.

http://www.heydon.org/kevan/collection/ ... ctrum.html

Nyilván abból is érdemes volt kiindulni, hogy valószínűleg Angliában volt a legnagyobb ipar a Spectrum mögé települve, így azon lehet elgondolkodni, hogy milyen a Spectrumnál alkalmasabb gépek fordultak elő abban az időben azon a tájon. Az utalás ugye a CP/M-re történt, ami valóban egy stabil és "iparibb" környezet, sőt akár direktben is felhaszá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 az, ez utóbbinak a sub-set-je. 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 bűnjel 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 alkalmazás miatt, azaz, hogy egy szoftverház mérnökei ergonómikusabb billentyűzeten és hatékonyabb háttértáron fejleszthették a szoftvereket a hálózatba kötött csoportmunkáról nem is beszélve. Ilyen szemszögből 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 összerekhattak 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 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, max. azt, hogy a donor programé. Persze elméleti esélye ekkor is van, hogy valaki a gumibillentyűsön fejlesztett olyan gépikó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 ahogyan arra PGyuri is utalt, találnánk olyan kód, pontosabban adat részleteket, foszlányokat (és itt igazolódik Bali terminológiája a kód régészkedéssel) amiben utalások vannak egy másik gépre vagy oprendszeren 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övegetket 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.

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 egy volt Imagine alkalmazottal Colin Porch-al 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, de 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 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öviden összefoglalom, akit pedig mélyebben érdekel nézze meg lejjebb a linkeket. A magam részéről úgy érzem, hoyg megtaláltam, amit akartam, akit érdekel a legutólsó linkek egyikén szerepel a Design Design szoftverház és az általuk használt Beast illetve Basil.

Következtetések
Alapvetően ipari méretekben senki sem fejlesztett a gumibillentyűs Spectrumon a gép köztudott hiányosságai miatt, mint például a strapabíró billentyűzet, 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 az 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étezett Spectrumra történő fejlesztésre:
A) az eredeti Spectrum
B) host gépen Spectrummal összekapcsolva
C) egyedi célgép
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éleskö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 OS-el rendelkezhetett
- hálozatba 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. A host gép Spectrum összekapcsolására alkalmazott technikákat is csoportosíthatjuk:
1) Host gép és speciális tape loader a Spectrumon
2) 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. Az utóbbi csoportra pedig az Imagine / Ocean csapatot is például a filmen. Mint megtudtam, ez a 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, azaz, hogy Z80-al rendelkezett-e a host gép vagy sem.
1) Host gép Z80 processzorral
2) 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, ami 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.
Mint láttuk Z80-as processzorral rendelkező gép volt a TRS-80, illetve a Tatung Einstein, amit szintén előszeretettel használtak host gépnek.
Z80-as host gépek:
- TRS-80
- Tatung Einstein
Nem Z80 processzorral rendelkező gépek:
- SAGE II, SAGE IV
- BBC
- Apple II with Z80 expansion
-= Bali =-
(c) 1983-2017 Evil-Soft

Avatar
Pgyuri
Speccyalista
Hozzászólások: 485
Csatlakozott: 2012.01.06. 13:34

Re: Bevezetés

Hozzászólás Szerző: Pgyuri » 2012.02.23. 14:16

Üdv,

Ha már Bali átolvastatta velem a cikket - ami tetszett - eszembe jutott, hogy csak a lényeg hiányzik belőle (vagy inkább elnagyolva van) :)

Addig rendben, hogy megírom a programot egy gépen, amelyen előáll a lefordított gépi kód, majd ezt áttöltöm egy Spectrumba tesztelésre. Ha elszáll, odase neki, javítás a "host" gépen és újra betöltés. A kulcskérdés az, hogy miként kerül át a programkód a tesztelési célból használt Spectrumba ?

1; LOAD "" CODE vagyis a host gép magnó mentéssel küldi át az adatokat ... lassú megoldás, de alapból működik

2; LOAD *"m";1;"" vagyis Interface I Microdrive emulációként .... nehéz elhinni

3; LOAD *"n";1;'' vagyis Spectrum hálózaton keresztül ... hááááááááát

4; RS232 kommunikáción ... ahhoz a tesztgépen mindig be kell tölteni valami adatfogadó programot ... csak előkerülne egy vagy legalábbis nyoma maradt volna valahol

5; ROM módosított Spectrum .... amely alapból tartalmazza az adatfogadó programot .... de akkor hol vannak a ROM-ok ?

6; Egyedi interface a kapcsolathoz .... és hol lapulhat ?

7; Eddig ismeretlen módszer ?

Utalva arra, hogy több "szoftveróriás" is használt "host" gépeket, elgondolkoztató, hogy miért tűnt el szinte nyomtalanul minden kommunikációs eszköz ... vagy nem is volt, csak sima betöltés ? Szinte már az látszik a legjobb válasznak, hogy "host" gépnek Spectrumot használtak és akkor az 1-es és 2-es módszer simán működtethető.

Szerintem a programok nagyrésze - Asimo kedvéért 95 %-a :) - "homebrew", azaz otthoni programozás eredménye, amelyet utána a kiadó átvett, vagyis ez a "host"-olás csak a kiváltságosoké volt. Amúgy pedig egy játékprogram fejlesztése során alig kínlódik az ember magával a programozással, ezerszer tovább tart a grafikák, hangok, térképek készítése. Tesztelésre meg, amint azt a rengeteg hibás program mutatja, nem sok időt szántak, de hát a Télapó és a Karácsony nem várhat :)

Pgyuri

Avatar
Zozosoft
Speccyalista
Hozzászólások: 726
Csatlakozott: 2012.01.06. 14:03
Kapcsolat:

Re: Bevezetés

Hozzászólás Szerző: Zozosoft » 2012.02.23. 16:10

Lemezes Spectrum rendszerek mennyire voltak elterjedve? Egy gépes rendszerben az a leggyorsabb megoldás. Mondjuk azt nem tudom, hogy milyen assemblerek működnek lemezről Spectrumon.

Amúgy az otthoni programozás kapcsán, vajon hányan engedhették meg maguknak az a luxust, hogy egynél több számítógépük legyen otthon? Szerintem max az első 1-2 sikeresen eladott program után.

Ami kérdés még felmerül: a szükséges memória méret, a 48-as programnál nyilván jóval több mint 48K. Ezen szintén vagy lemezes rendszerrel lehet segíteni, ekkor a különböző részek lehetnek include fájlokban, vagy olyan gép használatával ami több memóriával rendelkezik. A legjobb a kettő kombinációja :-)

Avatar
Asimo
Speccyalista
Hozzászólások: 147
Csatlakozott: 2012.01.09. 18:49

Re: Bevezetés

Hozzászólás Szerző: Asimo » 2012.02.23. 21:10

Pl. 7-ik módszernek el tudnék képzelni egy olyan interfészt, ami közvetlenül ír a Speccy RAM-jába.
A szükséges lábak ki vannak vezetve: cím- és adatvezetékek, /WR, /RD, /MREQ. Ha az összeakadást máshogy nem lehet elkerülni, akkor esetleg a CPU órajelének megállítása, amit az ULA is csinál. A /CK jel is ki van vezetve, de ha az ULA miatt esetleg nem lehet így beavatkozni, akkor esetleg minimális HW módosítással működhetne. Vélemény?
A 48K-s Speccy memóriájában alaphelyzetben egész nagy terület írható így, mindenféle crash nélkül. A vezérlés átadására így simán Basciből egy URS xxx paranccsal történhetne. Bár ez így akkor nem a végleges verzió, ha spéci területeket is felülír...

csory
Speccyalista
Hozzászólások: 50
Csatlakozott: 2012.01.06. 17:42
Tartózkodási hely: Pomáz

Re: Bevezetés

Hozzászólás Szerző: csory » 2012.02.24. 01:11

Nekem valahonnan úgy rémlik hogy az Asimo által is felvázolt megközelítés működött. Azaz volt egy célgép, ami a saját RAM-jába fordított, és onnan egy-az-egyben "flashelték" át a kódot a Spectrumba. Nyilván a betöltő részeket így nem lehetett tesztelni (sőt megírni sem), de a kód nagyját egyszerűbb volt ezen a módon belőni mint valami natív cuccal. Natív eszközök közül egyszerű halandó az ilyen-olyan kazettás assemblereket használta, ezeknek a csúcsa számomra a Laser Genius volt. Ezt a "külön célgép" infrastruktúra dolgot nyilván csak a gazdag cégek engedhették meg maguknak, talán az Ultimate történetéről szóló cikkben volt róla szó.
- Csory -

Válasz küldése

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég