Converting Spectrum programs to run on the Enterprise

From Enterprise Wiki
Jump to: navigation, search

Itt ennek a magyar fordítása található (már ami eddig készen van belőle).

Spectrum programok futtathatóvá tétele Enterprise-on

Bevezetés

Ez a leírás, a benne megtalálható programlistákkal elvileg mindent tartalmaz, amire a tapasztalt programozónak szüksége van ahhoz, hogy Spectrum programjait átkonvertálja és futtassa Enterprise-on. Azt feltételezi ez a leírás, hogy a programozónak nincs megelőző tapasztalata az Enterprise hardware-rel, és csak a konvertálás szempontjából fontos szempontok vannak itt is kiemelve. A Spectrum emuláció lelke az Enterprise rendkívül kifinomult videóchipje, amely a mai piacon megtalálható legtöbb videóchipet képes utánozni. Így, eltekintve az attribútum formátum néhány kisebb eltéréseitől, csak az I/O portok különböznek. Még ezeket is a lehető leghasonlóbbaknak tervezték, csak a portszámok térnek el.

Egy Spectrum ROM emulátort használva számos Spectrum program betölthető és futtatható közvetlenül az Enterprise-on, mindenféle módosítások nélkül. Talán ironikus, hogy azok a programok, melyek nem futnak 128-as Spectrumon, több mint valószínű, hogy közvetlenül futni fognak Enterprise-ra konvertálva ROM emulációval.

Az Enterprise memóriakonfiguráció

Mielőtt bemutatnánk részleteiben a Spectrum emulátort, érdemes leírni, hogyan működik az Enterprise memóriatérkép (memory map azt jelenti?). Talán már tudja az Olvasó, hogy az Enterprise 4 Mbyte memóriáig képes címezni, szóval hogyan is működik ez? A Z80 címtartomány 4 lapra van felosztva:

  • page 0 Z80 címek 0000 => 3FFFh
  • page 1 Z80 címek 4000h => 7FFFh
  • page 2 Z80 címek 8000h => BFFFh
  • page 3 Z80 címek C000h => FFFFh

Minden egyes laphoz egy 8 bites I/O port van társítva. Ez kiválasztja, hogy a 256 (16K)-ból melyik memóriaszegmensre "menjen rá" azon a lapon (256*16K=4096K. A 0B0h számú port kiválasztja, melyik szegmens van a 0-ás lapon, a 0B1h kiválasztja, melyik szegmens van az 1-es lapon, és a 0B2h-s és 0B3h-s portok kiválasztják, melyik szegmens menjen a 2-es és a 3-as lapra. Bármely 16K szegmens lehet bármely lapon vagy lapokon. Ebben a leírásban a 0-ás lap arra a helyre fog utalni, ahol a ROM "terpeszkedik" a Spectrumon, az 1-es lap a 16K-hoz pedig, hogy hol van a video RAM és így tovább.

Az Enterprise setup program

A mellékelt program előszöris előkészíti a videóchipet a Spectrum harverének szimulációjára, aztán előkészíti a hangchipet és a megszakításokat. Két tartalék RAM szegmens rákerül a 2-es és 3-as lapra. Szerzői jogok miatt nem lehetséges a teljes Spectrum ROM-ról másolatot közzétenni, így egy RAM szegmens a 0-ás lapra került. Bármely program, mely Spectrum ROM hívásokat használ, először be kell, hogy töltsön egy sor rutinokat, hogy a ROM emuláció a 0-ás lapon végrehajtassék. Megjegyezzük, hogy a felhasználó beszúrhat egy ugrást a saját megszakításrutinjához a 0038h-ra a gyors megszakítás-"reakció" érdekében. Minden megszakítás után az Enterprise "megszakítás-zár" reset-elendő azzal, hogy 30h-t írunk a 0B4h portra.

Az Enterprise és a Spectrum sebességének eltérései

Az Enterprise Z80A processzort használ, amely teljes 4MHz-en megy. A Spectrum Z80A-t használ, ami 3.5 Mhz-en ketyeg. Így, normális esetben kb. 15%-os sebességcsökkenés van. Bár megjegyzendő, hogy az 1-es lapon lévő RAM megoszlik a processzor és a videóchip között, és így a Z80 "ketyegése" eloszlik az összes memóriahozzáférésen ezen a szegmensen, lelassítva 15-ről 20%-ra. Ezért ajánlatos minden idő-kritikus rutint 7FFFh fölé asszemblálni.

Hang az Enterprise-on

A 0A8h-s portot Enterprise-on a setup program beállítja 6 bites D/A ladder networkre, a kimenetet a magnó kimenet portjára állítva és a belső hangszóróra....