Jövőre egy 2 féléves mikroprocesszoros osztályt fogok tanítani a harmadéves egyetemistáknak. regisztráljon az órára, a hallgatóknak teljesíteniük kell a programozási és a digitális rendszerek óráit.
Annak érdekében, hogy a hallgatókat az osztályban tanított fogalmak valós alkalmazásával motiválhassam, fontolgatom a feladatok lehetőségét a diákok egy emulátor létrehozásával egy régebbi rendszerhez a semmiből, egy csoportos projektként, amelyet az óra végéig kell befejezni (amely – amint rámutattunk – 2 félév hosszú).
Megpróbálom jó célrendszert választani ehhez a projekthez azzal a fő céllal, hogy meglehetősen egyszerű legyen utánozni. Minél kevesebb perifériát kell utánozni, annál jobb. Minél kevesebb furcsaságot és hibát kell megismételni, annál jobb is. A hallgatókat az összeállítási nyelv, az utasításkódolás, a címzési módok, a CPU-regiszterek, a memória-leképezett hardverregiszterek stb. Fontos fogalmaival kívánom kitenni, és nem feltétlenül a trükköknek, amelyek ahhoz szükségesek, hogy az írások elég gyorsak legyenek ahhoz, hogy érdekes videojátékot készítsenek az 1980-as években elfogadható áron elérhető félvezető technológiával. Megértem, hogy erre akkoriban szükség volt; Csak egy olyan rendszert próbálok megtalálni, amely nem túlzottan él vissza ezekkel a trükkökkel. Ideális esetben a kérdéses rendszernek nem szabad t ciklus-pontos emulációt vagy olyan trükköket igényelnek, mint a leolvasási vonal üldözése.
A második követelmény a teljesítményre vonatkozik. A hallgatók minden bizonnyal nem ismerik a szoftveroptimalizálási technikákat, így akár az első Playstation vagy a Nintendo 64 utánzásának megkísérlése valószínűleg teljesítményproblémákba ütközik (talán még az SNES és a Genesis is). Ezen a ponton a diákoknak csak aggódniuk kell Az emulátor helyes, nem hatékony megvalósítása. A CPU emulációt minden bizonnyal egy tolmács fogja végrehajtani, nem pedig fordító / újrafordító.
Végül nem hinném, hogy a hallgatók érdekesnek találnák az emulátort, ha mondjuk a játékprogram végrehajtása után csak regisztrációs értékeket jelenítettek meg (bár ez sokkal egyszerűbbé tenné a projektet). Szeretnék olyan rendszert választani, amelyhez játékokat készítettek, még akkor is, ha az említett rendszer nem volt dedikált videojáték-konzol. Úgy érzem, hogy az emulátoron futtatható játék nagyon motiváló lenne a hallgatók számára.
Például most a NES-t nézem. , de még mindig kissé bonyolultnak tűnik, főleg a PPU. Vannak egyszerűbb lehetőségek?
Megjegyzések
- Érdekes kérdés. Fontos lehet, hogy a válaszokkal kapcsolatban kérjük, hogy maradjanak távol a jobb rendszerről / cpu / vdu / stb. folytatott harcokról, és a didaktikai részre összpontosítsanak.
- Nyilvánvaló ellentmondás van a kérdésben. Az egyik pont, a szerző a CPU emulációra akar koncentrálni, a másik pontról pedig képeket és hangot szeretne kiadni az egész emulált rendszerről. Bár az utóbbi kérése érthető, ugyanolyan kemény munkához vezet a perifériák utánzása, képek megjelenítése és hangfeladatok lejátszása.
- Esetleg hasznos erőforrás, ha azt feltételezzük, hogy Z80 gép lesz, nem pedig 6502: z80.info/decoding.htm a Z80 utasítások algoritmikus dekódolásáról (egy csomó speciális esetre figyelemmel, de ott van). Ha egy emulátort valóban algoritmikusan kell dekódolni, nem pedig megkereséssel, korlátozná a hallgatók másolási és beillesztési képességét, valamint releváns lehet egy mikroprocesszoros tanfolyam számára?
- Lehet, hogy nem ez az, amit keres, de talán Az emulátor megírása helyett (amit én ‘ m feltételezem, hogy a PC-jükön fognak futni) ugyanolyan fogalmi ismereteket tudnak bemutatni a tényleges hardverrel való együttműködéssel. Szerezzen be egy ARM Cortex M4 alapú fejlesztőtáblát, tanuljon meg dolgozni a csupasz fémmel.
- esetleg TI-83 …?
Válasz
Előre helyezem a CHIP-8 üzenetet.
Ez a rendszer lényegében valamilyen okból kifejlesztett virtuális gép. Vannak játékok, amelyeket a CHIP-8-hoz írtak. Van néhány opcode, verem, pár időzítő és alacsony felbontású bitképes kijelző, de elég egyszerű ahhoz, hogy az első néhány az emulátorok néhány kilobájtba illeszkednek a korai 8 bites számítógépeken.
Néhánynál több referencia megvalósítás használható.
Vannak játékok és így tovább, amelyek a nyilvánosság előtt vannak. domain már, például ide , hogy ne kelljen saját játékokat biztosítani.
Megjegyzések
- Ayy for Chip 8. ‘ könnyen megtalálható megvalósítások sok nyelven, és az architektúra is egyszerű.
- A CHIP-8 nagyszerű ötlet az emu bevezetésére egyszerűsége miatt.Miután korábban írtam egy NES-emulátort, elmondhatom, hogy a CPU megírása rendkívül időigényes és fárasztó volt – a 6502-es pedig a CPU-khoz képest egyszerű. Ezzel szemben a CHIP-8 csak 35 nagyon egyszerű utasítással rendelkezik. Ezenkívül sok rendszer a CPU és a többi hardver közötti pontos időzítési magatartásra támaszkodott, míg a CHIP-8-nak nincs ilyen követelménye.
- A megjegyzések nem terjednek ki bővebben; ezt a beszélgetést csevegésbe költöztették .
- Én ‘ tapasztalt programozó vagyok, de Soha nem írtam emulátort. A válasz után azt gondoltam: ” Hé, ez a chip8 elég könnyűnek tűnik, én ‘ talán néhány órát töltök rajta “. Három hét múlva ‘ még mindig itt vagyok, és megpróbálom kitalálni, miért ugranak ki folyamatosan a programok a memóriaterületből. Sok móka, sok ” mi a fene “.
- Kíváncsi lennék, lett volna ilyen akadálya annak, hogy eltávolítsuk az üres várakozást a plot-sprite rutinból, és hozzáadjunk egy explicit vblank-wait utasítást? A CDP1802 nem ‘ ta sebességű démon, de az üreges várakozás nélkül szinte biztosan több sprite-t is képes rajzolni keretenként.
Válasz
Ó. Jó kérdés. Megpróbálok néhány tippet adni, de úgy gondolom, hogy az értelmesebb beszélgetés helyett itt választ találnék a széles körű kérdésre. Ennek ellenére:
[…] a diákok feladata emulátor létrehozásával egy régebbi rendszerhez
Nagyon jó.
a semmiből,
Ha ez állítólag a semmiből és szoftverből áll, akkor nem igazán úgy gondolja, hogy a pályakezdők számára ilyen korlátozott ideig megfelelő feladat. Hacsak nem lehet valós idejű követelményeket teljesíteni (amelyek még inkább relevánsak a játékok szempontjából), inkább vigyáznék.
mivel az EE-ről szól, miért ne csinálna valódi hardvert? Még mindig könnyű beszerezni (néhány) klasszikus CPU-t és kapcsolódó eszközöket. A modern LCD-hez hasonlóan a hardveres erőfeszítések néhány hét alatt nagyon részletesek.
csoportos projektként, amelyet a az osztály (amely – amint arra rámutattunk – 2 félév hosszú).
Melyik lehet a legszűkebb feltétel.
Jó célrendszert próbálok választani ehhez a projekthez azzal a fő céllal, hogy meglehetősen egyszerű legyen utánozni. Minél kevesebb perifériát kell utánozni, annál jobb. kevesebb furcsaság és hiba, amelyet meg kell ismételni, annál jobb is.
Jó kísérletnek tűnik. És ami még fontosabb, eltávolít néhány látszólag egyszerű rendszert (pl. singleboarderek) a listából, mivel az I / O eszközök komplex kezelésére támaszkodnak (mint például a valós idejű hozzáférés a portokhoz, hogy a LED-szegmenseket látszólag folyamatosan kezeljék).
Azt akarom, hogy a hallgatók elé tárjam a gyülekezés fontos fogalmait nyelv, utasításkódolás, címzési módok, CPU-regiszterek, memória-leképezett hardverregiszterek stb.,
Valami, amit valódi hardverrel meg lehet tenni emuláció mellett nem “ez?”
Ideális esetben a kérdéses rendszernek nem lenne szüksége cikluspontos emulációra vagy olyan trükkökre, mint a leolvasási vonal üldözése.
A videó kimenet implicit követelményével együtt ez egy egyszerű, nem gyorsított bitkép logikát követel meg.
A második követelmény a teljesítményre vonatkozik. A hallgatók minden bizonnyal nem ismerik a szoftveroptimalizálási technikákat, így akár az első Playstation vagy a Nintendo 64 utánzásának megkísérlése valószínűleg teljesítményproblémákba ütközik (talán még az SNES és a Genesis is).
Itt nem félnék sokat, mivel a tényleges PC-hardver meglehetősen gyors. A valódi kérdések itt nem az emuláció sebessége, hanem a valós idejű szempontok – a különféle emulációs részek szinkronizálása – amelyek nagyon körültekintő és finomhangolt szoftvertervet igényelnek. Nem várható itt. Elég az ön által említett “gerenda versenyzése” rész.
Ezen a ponton a diákoknak csak az emulátor helyes, nem hatékony megvalósításával kell aggódniuk. A CPU emulációt minden bizonnyal egy tolmács fogja végrehajtani, nem pedig fordító / újrafordító.
Még a legprimitívebbeknél is valós idejű szinkronizálás szükséges játszani. Legalább elengedhetetlen a képernyő-visszakövetés szinkronizálása – nemhogy a szimuláció gyorsabb váltásához.
A játékoknak az időzítő effektusok – és a szinkronizált képernyő-manipuláció finomabb szintű, mint a keretek – használatának velejárója kihívást jelent bármely, a javasolt emulátorral való valós játék futtatása.
Szeretnék olyan rendszert választani, amelyhez játékokat készítettek, még akkor is, ha az említett rendszer nem volt dedikált videojáték-konzol. Úgy érzem, hogy az emulátoron futtatható játék nagyon motiváló lenne a hallgatók számára.
Teljes szívvel egyetértek itt. Az Andre LaMothe kísérletének és tanulási rendszereinek sikereinek nagy része a játékkészítés legfőbb képességén alapul.
Például most a NES-t nézem, de ez még mindig kissé bonyolult, főleg a PPU. Vannak egyszerűbb lehetőségek?
Nehéz lesz, mivel az alapvető követelmények ellentmondanak egymásnak. Csak a sikeres konzolok / számítógépek kaptak nagy játékválasztékot, de ezek is olyan bonyolultabb hardverszerkezettel, amely nagyszerű játékokat tesz lehetővé.
Ellenőrizzük néhány jól ismert rendszert. Szeretném elkülöníteni őket “egyszerű” és “bonyolult” rendszerek a video logikájuk bonyolultsága mentén (* 1)
Egyszerű rendszerek
Első iterációban ezek mind olyan rendszerek, amelyeknek nincs külön VDC / CRTC.
-
Atari VCS – végül az a végső rendszer, amelyet az összeszerelő megtanulásához kell használni, szélsőséges alapszinten kell dolgozni, közben nincs közbeiktatás, és nem sok gondozásra van szükség. “a” verseny a sugárral “kifejezés névadója.
Ennek ellenére lehet, hogy mégiscsak keresni kell a rendszert, mivel az időzítéstől függő részek jól definiáltak és (más videókhoz képest) rendkívül egyszerű és könnyen utánozható – kivéve, hogy nem elsőéves dolgok. Emellett rendkívül jól dokumentálták az általános rendelkezésre álló forrásokat.
-
Commodore PET – meglehetősen egyszerű rendszer, főleg azóta az egész videó részt meglehetősen elvont módon lehet utánozni, mégis a VIA-kat legalább részben emulálni kell. A legfontosabb, hogy csak két időzítési forrást tartalmaz (az óra mellett).
Nagyszerű plusz a PET (és az utánkövetés) számára a jó dokumentáció (egyszerűségének is köszönhetően). Emellett, bár CRTC-vel rendelkezik, szinte egyetlen játék (vagy más szoftver) egyáltalán nem használta az újraprogramozást, így egyszerű és hiányos (absztrakt) emuláció volt lehetséges.
A hátoldalon található csak meglehetősen kevés játék, és a legtöbbjük BASIC nyelven íródott, ami némi kutatást igényelhet az absztrakció mennyiségének és az emuláció részletességének megállapításához.
-
Apple II – Ismét hihetetlenül jól dokumentált rendszer, sok szoftverrel. Ennek nagy része közgyűlési alapú. Míg a hardver teljesen dokumentált és csak a TTL-ből épül fel, a működése nem igazán egyszerű, és mivel egyes játékok nagyban támaszkodnak a furcsaságokra és a számlálási ciklusokra a pontos időzítéshez, az emuláció sokkal bonyolultabbá válhat, mint első látásra feltételezhető.
Előfordulhat, hogy az Apple II meglehetősen népszerű volt Brazíliában (még akkoriban is).
-
TRS-80 – Itt a videó logika TTL-ből épül fel, de sokkal egyszerűbb, mint az Apple-nél. Hasonló más I / O meglehetősen egyszerű. A negatív oldalon megint meglehetősen kevés játék található.
Eddig a valódi ősök, de néhány későbbi rendszer is egyszerűnek sorolható:
-
Sinclair Spectrum – Bár a logika kínál néhány trükköt, harang & fütyül, ez egyenesen előre csempézett bittérképes kialakítás. Eddig jó esély van egy emulációra, kivéve, mint általában, a játékok nagyon bíznak az időzítésben, ami megint bonyolítja az emulációt.
Csakúgy, mint az Apple II-nél, ahol Brazíliában elég sok klón van .
-
Hasonló eset állhat az ORIC család esetében is.
-
Atari ST – A mai naptól meglepetés lehet Az Atari ST nem tartalmazott kifinomult videohardvert. Csupán 3 grafikus felbontás és 9 bites CLUT akár 16 egyidejű színhez. Néhány szinkronizálási pont és egyetlen időzítő. Plusz egy modernebb CPU és egy dedikált hangchip. Úgy hangzik, mint egy mennyországban készített meccs, ha, és ha ez nem is a játékok programozóinak szólna. Itt is a szoftver rengeteg trükköt jelentett fantasztikus játékok létrehozására (* 2).
Az “egyszerű” rendszerek első következtetése az, hogy bár a hardver kevésbé összetett, a szoftver nagyon sokat tett ennek leküzdésében. Ennek következtében lehet mondjuk, hogy a kevésbé összetett rendszerek nem szükségesek ahhoz, hogy az emuláció kevésbé bonyolult legyen, mivel nem több különböző hardvert kell utánozni, de az egyszerű hardvert nagyon szoros időzítéssel kell követni a meglévő játékkód futtatásához.
Komplex rendszerek
Ezek általában az összes rendszer kifinomult VDC-vel
-
9918 ff .- Ez nem annyira egy rendszerről szól, de végül a leggyakrabban használt VDC (a TI VDP-nek hívta). Bár a TI 99/4 számára készült, a TI mindenkinek eladta, akit érdekelt. Ez többséget eredményezett az összes rendszerből (* 3), amely egy 9918-at vagy annak valamelyikét követi (9928/38/58 / …).
Játékkonzolok, például Coleco Vision , Sega SG-1000 egészen a mester rendszerig a, valamint a TI 99/4 vagy a Memotech MTX számítógépek egészen a Az MSX gépek egész világa használta ezt a családot.
Remekül hangzik, nem? Nos, az biztos, hogy sok játékot kell használni. Ezenkívül egy ilyen VDP segít egyszerűsíteni az emulációt, mivel egyértelműen elkülöníti a CPU-t és a kijelzőt, és korlátozza a játék által használt “trükköket” arra, amit a VDP kínál, ami viszont világosan meghatározott. És még egyszer: ez a meglévő szoftver teszi nehézzé az emulációt, mivel a programozók természetesen ismét időzítési trükkökkel manipulálták a képernyőt a megfelelő időben. Említette valaki a “Racing the Beam” -t?
-
Commodore VC20, C64, C16 stb. – Ugyanez vonatkozik a Commodores összes otthoni számítógépére. Noha összetettségükben különböznek attól, hogy rendelkeznek spritekkel vagy sem, időzítőket kínálnak vagy sem, és hangzanak, vagy sem, az alapvető kérdés ugyanaz, mint a 9918 családnál: Szoftver, amely bizonyos időzítési helyzeteket használ a játékeffektusok létrehozásához.
-
6847 Systems – Tandy CoCo, Matra Alice és hasonlóan ugyanaz a probléma.
Folytathatnám olyan játékrendszereket, mint a NES vagy a MegaDrive, de itt befejezem ezt a felsorolást, mivel az elvnek mára egyértelműnek kell lennie: Bár egyes rendszerek bonyolultabb, hogy utánozzuk, a valódi probléma nem a video hardver bonyolultsága, hanem valahányszor egy programozó “javítja” az okos programozással megtehető dolgokat (* 4). Tehát a projekt valódi kérdése nem a hardver (annyira), mint a szoftver, mivel a szoftver, , különösen a valódi meglévő játékokban használt trükkök és eszközök .
Ez különösen rossz, mivel a meglévő játékokat motivációként akarod használni (ahogy olvastam). Nem fog sok futni kevésbé kemény valós idejű emuláció.
Ennek a függőségnek a csökkentésével csökken a megfelelően futó játékok száma. Ha olyan szintre csökkenti, amely lehetővé teszi a korlátozott időtartamú kezelését, szinte lehetetlenné válik megfelelő játékok megtalálása.
Következtetés: a helyes kompromisszum egy olyan módszer, amely azonban jelentős kutatásokat igényel, miközben korlátozza a használhatóságot.
Most talán támadni lehet ezt egy kicsit más szögből. Próbálja ki:
-
Meglévő régi hardver használata:
Bár ez bevált (* 6) működik, a legmagasabb kompatibilitást és egyszerű kezelhetőséget kínálja a nyílt fejlesztői környezeteknek köszönhetően, elmaradhat az „építkezés” vonzereje az EE hallgatók számára.
-
Használja a meglévő oktatási játékrendszereket:
Olyan rendszerek, mint az Andre A LaMothe “s XGS nagyszerű eszköz a hardver részletes felépítésében és programozásában való elmélyüléshez. Bizonyos forrasztásokra van szükség (rendelkezésre állnak kész verziók), ezek szinte teljes szoftver által definiált rendszerek, dokumentálva, és hatalmas játékkönyvtárat kínálnak. Nem is beszélve a játékprogramozásról szóló könyveiről.
Nagyszerű bónusz, hogy a hallgatók a tanfolyam befejezése után is hazavihetik a rendszert és játszhatnak.
-
Készítse el saját egyszerű rendszerét:
Vegyünk egy klasszikus CPU-t (például 6502), néhány RAM, FLASH és VIA, valamint egy FPGA egy nagyon alap CRTC megvalósításához és kész. A hallgatók forrasztják, megismerhetik az alkatrészeket és azok kölcsönhatásait, beleértve az FPGA használatát (amire ma mindenképpen szükség lehet), majd valós hardveren futtatják szoftverüket. Még kis számok esetén is lehetővé kell tenni egy ilyen tábla előállítását 50 euró körüli vagy annál kisebb értékben. Az XGS elképzeléséhez hasonlóan ez a tanfolyam befejezése után is működni fog – beleértve a tulajdonosi érzést, amely a rendszerük.
Természetesen a hallgatóknak saját játékokat kell írniuk, de egyszerű játékokat meglehetősen rövid idő alatt el lehet végezni – nem beszélve arról, hogy a további tanfolyamok felhasználhatják az előző osztály által írt játékokat is.
-
Végezzen egy “saját” rendszeremulációt
Hasonlóan az előbbiekhez, kivéve, hogy minden virtuális. Előnye, hogy kút volt definiálta és bezárja a rendszert, különösen egy olyan, ahol nincsenek korlátozások a kevésbé “tökéletes” emuláció miatt – az emuláció definíció szerint tökéletes és minden furcsasága megegyezik a rendszerrel. Hátrány megint a szoftver rész.
-
Használjon “puha” hardvert:
Van egy Neil Franklin projekt, amely számos általánosított rendszerelemet hoz létre, hasonlóan a klasszikus számítógépekhez, de dedikált chipek helyett mikrovezérlőket használ. Kombinálja az emulációt a valódi hardverrel. Míg az alkatrészeket továbbra is emulációként fejlesztik, ezek célja, hogy mikrovezérlőben működjenek, és hasonlóan az “igazi” chipekhez használják őket. Az egyik rendszert fel lehet állítani egy SoftCPU modul használatával, amely például egy 6502-et emulál némi RAM-mal és ROM-mal, kombinálva egy SoftVGA-val, amely terminált, például video interfészt, és egy SoftPS2 emuláló billentyűzettel és egérrel rendelkezik. Mindegyik párhuzamos vagy soros (SPI) buszon keresztül csatlakozik, lehetővé téve az emulációhoz bemutatható egyéb komponensek hozzáadását.
Az emuláció mellett fontos, hogy korlátozott mennyiségű hardvert tartalmaz, amely kenyérlapon is elvégezhető (ennek ellenére soha nem szabad korán elkezdeni a forrasztást), ez a mai tervezés meglehetősen tipikus feladatát is mutatja – a hagyományos logika helyettesítését mikrovezérlőkkel – gyakorlati használatban.
A az eredmény egy olyan rendszer, amely egy valódi (régi) számítógép érintését és érzetét nyújtja, miközben párhuzamos emulációkat futtató modern hardverrel készül.
-
Konfigurálható emulátor használata:
Nem, ez nem a MAME-ről vagy hasonlókról szól, hanem egy JavaScript-be írt emulátor keretrendszerről, amely kezeli az általános részeket (ideértve az időzítést is), ahol a hallgatói hozzáadják az emulációikat (ami nem volt cél, nem volt ez?), hogy egy teljes rendszert alkossanak. Mivel a JS-t forrásként szállítják, még maga a keretrendszer is módosítható.
Az egyes emulációk minőségétől függően ez mindenre használható, az egyszerű bemutató rendszertől kezdve az 1980-as évek teljes kitalált kikapcsolódásáig. számítógép.
Szóval, lehet, hogy a fenti variációk közül néhány jó kezdet lehet?
* 1 – Csak a videókra fogok koncentrálni (és CPU) az egyszerűség érdekében. A videó önmagában is jól működik, hogy kiszűrje a teljes rendszereket. A hang újabb dimenziót ad hozzá, és bonyolultabbá teheti ezt.
* 2 – Vessen egy pillantást a Xenonra. Úttörő függőleges görgető, több változó réteggel, sok animált objektummal, amelyek mindegyike szoftveresen nagyon simán fut. Valójában annyira finomhangolt volt, hogy a (általában) képességesebb Amigához (grafikusan) való hordozása meglehetősen sok időt vett igénybe, és valamivel kisebb játékot eredményezett.
* 3 – Nem szükségesek a rendszerek egység eladva. Ismételten, néhány játékkonzol, ahol nem csak sikeresek, így akár számban is megszerezheti a többséget.
* 4 – A Glide64 renderelő plugin N64 emulátorokhoz több részes sorozatot írt ( Bevezetés , P .1 , P.2 , P.3 ) a következő blogbejegyzésekről: az akadályokat, amelyeken meg kellett lépnie, hogy a videomuláció rész működőképes legyen – mindez nem a hardver utánzásának bonyolultságáról szól, hanem a CPU minden lehetséges módon módosította és módosította a kimenetet mellett a video logika. Ez még figyelemre méltóbb, tekintve, hogy az N64 már eléggé absztrakt és zárt rendszer.
* 5 – Valójában a bonyolultabb video hardvert remek leckének tartanám az EE hallgatók számára, mivel jól mutatja, hogy mi néhány kapuval megtehető szoftverhalmok helyett – még inkább, mivel később készülnek hardvert készíteni, nem igaz?
* 6 – Stefan Höltgen, a FU Berlinnél használ például régi játékrendszerei az osztályaiban, hogy megismertessék a (nem EE) hallgatókat a valódi hardverrel és a valós programozással, valamint annak következményeivel a mindennapi feladatokhoz (és játékokhoz).
Megjegyzések
- @Tommy Nos, ezt szívesen elkerülném, mivel nincs könnyű válasz. A legfontosabb itt az lehet, hogy míg a Z80 kissé ” mókás “, a 68k nem más, mint egyszerű. Az összes kiterjesztő szóval (a CPU32-ig) egyetlen utasításban legfeljebb 11 szó lehet (22 bájt), és a dekódolásuk komoly rendetlenséget jelent. Aztán megint minden attól függ, hogy az emulátor felépítésének módja. A Z80 egy meglehetősen egyenes, 8080-as előremenő, könnyen utánozható, néhány módosítóval, amelyek könnyen kezelhetők. A 68k-nál, még csak az eredeti is, sokkal több lesz a munka.
- ” feladat ilyen korlátozott ideig illik a gólyák számára. ” Azt mondta, hogy ezek 3. évfolyamos hallgatók, nem elsőévesek, és már ‘ több előfeltételt is teljesítettek.
- @ wizzwizz4 Nos, nem számít mi a személyes véleményünk, JS a a BASIC törvényes örököse. Komoly és minden szempontból! Csak gondolj bele.Nem csak minden tényleges számítógép mellett fut n, hanem alapértelmezés szerint még ‘ is telepítve van, és nincs lehetőség arra, hogy megszabaduljon tőle anélkül, hogy sok funkcionalitást veszítene. Gondoljon még rá, mennyi rossz és hihetetlen lassú szoftvert írnak a JS-be – a tökéletes bizonyíték, nem ‘ ez?
- @Raffzahn It ‘ s teljesen más Először is, a BASIC-nak több összeférhetetlen eszköze volt … Ohhh! a BASIC utódja!
- Ők ‘ még mindig nem elsősök, akik elsőéves hallgatók. És azt hiszem, meg kell adnia az OP-nak azt a kétséget, hogy nem ‘ nem osztja ki a projektet, ha a hallgatók nem rendelkeznek ‘ a szükséges háttér.
Válasz
Eddig van néhány jó ötlet.
De érdemes megfontolni.
Ha olyasmit csinálsz, mint egy CP / M gép, akkor azok nagyon egyszerűek és egyszerűek, főleg, hogy mindent nemcsak a BIOS, hanem az IN / OUT természet is elkülönít. a 8080 / Z80 családé.
Számomra nem tűnik kellemetlennek, ha a CP / M gép az első félév célja. (Nem tudom a tananyagodat)
De például egy alap CP / M gépnek nincs szüksége a ciklus pontosságára, nincs szüksége megszakításokra, a legbonyolultabb dolog, amit meg kell tennie, hogy lekérdezi a billentyűzetet, hátha megnyomtak egy gombot. (Ellentétben a billentyűparancs és a billentyűzet, vagy bármi más figyelemmel.)
Ezután a második félévben hozzáadhatja azokat a követelményeket, mint például a grafikus chiphez való interfész. Az SG-1000 fenti példánya könnyen lehet egy CP / M gép az első félévben, majd könnyen átalakul az SG-1000-be a másodikban (mivel a Z80-as részt már az első félévben elvégezted) .
Végül úgy gondolom, hogy az osztályának rendelkeznie kell egy elfogadó programmal, amelyet a diákok futtathatnak a CPU ellenőrzésére. Néhány dolog izgalmasabb, mint a rossz CPU hibakeresése, főleg olyan gépi nyelven, amelyet Ön nem ismer. .
A 6502 közösség olyan tesztprogramokkal rendelkezik, amelyek ellenőrizhetik, hogy a CPU az összes utasítást megfelelően végrehajtja-e, nem vagyok biztos abban, hogy mi áll a többi CPU rendelkezésére.
És ha ez bármilyen vigasztalást jelent a terjedelemben, írtam egy szimulátort és egy hozzá tartozó szerelőt egy 2 hetes karácsonyi ünnepen, és tovább, ha ez segítséget nyújt a tényleges projektek méretében. Az alap CPU-k nagyon egyszerűek.
Megjegyzések
- A Z80-on a FUSE teszteket nyújt, bár nem mindegyik általános vagy feltétlenül helyes a pontos ciklus szempontjából időzítés; ‘ szintén ad hoc szöveges formátumban vannak, de én ‘ átírtam őket JSON-ba: github.com/TomHarte/CLK/tree/master/OSBindings/Mac/… – a tests.in.json segítségével állítsa be a kezdeti állapotokat, és derítse ki, hogyan sokáig futnia kell, majd tesztelje az.biztos.json eredményeket. ‘ zexall és zexdoc is, eredetileg CP / M fájlok, de széles körben alkalmazkodva és nagyon lassan. Az előbbi átadásához egy csomó dokumentálatlan dolog kell, hogy helyes legyen, az utóbbi átadásához nem ‘ t.
- … és az egyetlen dolog, amit amit valaha is találtunk a 6809-es modellnél, feltéve, hogy bárki azt gondolta, hogy javasolna egy Vectrex-et vagy Coco / Dragon-ot, ez egy szélesebb Williams arcade gépi tesztcsomagban található a következő címen: seanriddle.com/wetsold.html . A 6502-es motoron nagyon sokat vagyok a fedélzeten Klaus Dormann, Wolfgang Lorenz és az AllSuiteA tesztjeivel, amelyek úgy tűnik, hogy sokkal hangsúlyosabbak, mint a Z80 vagy a 6809 tesztek.
- @Tommy ‘ Tudomásul veszem, hogy a Fuse ‘ tesztek mindegyike cikluspontos. Kérjük, töltsön be hibákat, ha ‘ nem 🙂
- @PhilipKendall lásd a 2017.05.29-i e-mailemet a fuse-emulator-devel re: DJNZ és hogy az eltolást végleges iteráción olvassuk-e. Alan Cox következtetése arra vonatkozóan, hogy a FUSE ‘ tesztelt viselkedése helyes-e, az az volt, hogy ‘ s ” értelmezésre nyitott ” a rendelkezésre álló források alapján. Tehát úgy gondoltam, hogy a ” nem feltétlenül helyes, a ” igazságos. Valószínűleg világosnak kellett volna lennem: csak egy maroknyi eltérést találtam a bizonyítékok és a saját bizonyítékaim értelmezésében ‘. Elnézést a rossz formáért.
- @Tommy – ” Következtetés Alan Cox részéről, hogy a FUSE ‘ tesztelt-e A viselkedés helyes volt, ha ‘ s ” nyitott az értelmezésre ” a rendelkezésre álló adatok alapján források ” …bár nagyon tisztelem Alan sok tevékenységét, ‘ nagyon könnyű ellenőrizni, hogy a tesztelt viselkedés megegyezik-e egy tényleges Z80 CPU-val (különösen a CMOS verziók esetében) amely kicsi az órajel sebességével a kenyérlapon futtatható, a részletes tesztek egyszerű beállítása érdekében), tehát mindenképpen ez az eset, amikor úgy gondolja, hogy ‘ valami nem megfelelő képes nagyon könnyen bemutatni.
Válasz
Javasolhatom a SG-1000 ?
A rendszer alig több, mint három polcból álló csoport – a Z80, a grafikai TMS9928A és a hangért az SN76489 – a vezérlőkkel együtt mint a NO (általában nyitott) kapcsolók néma csoportjai.
Szoftverben vagy hardverben ennek bármely részét szimulálhatjuk vagy utánozhatjuk külön-külön vagy együttesen, hogy elkészítsük a teljes rendszert.
A A rendszer egyszerű, nem banki kapcsolású ROM-okat használ a játékaihoz, és ezeket szokták használni Ne támaszkodjon olyan trükkökre, mint például a képernyő közepi megszakításai vagy a ciklusszámlálás a hatásuk előidézéséhez. Csak egyetlen mozaiktérkép és számos sprit a tetején. Azt javaslom, hogy ez sokkal egyszerűbb, mint egy olyan rendszer, amely sok egymással kölcsönhatásban lévő belső komponenst és intelligens patronokat tartalmaz, mint például a NES.
Biztosítanod kell a saját játékaidat, hogy utánozhasd őket, nem pedig engedély nélkül természetesen szerzői jogi védelem alatt álló anyag.
Megjegyzések
- … és megemlítendő, hogy a ColecoVision pontosan ugyanaz az alkatrészgyűjtemény, különböző összekötőkkel logika és nagyon kissé bonyolultabb joypadok. Tehát az SG-1000 emulátort általában könnyű kiterjeszteni mindkettő támogatására.
- Szintén figyelemre méltó, hogy a 9918 egy komplex chip, sprite-ekkel, összetett modikkal és adatokkal, mint például nem tette ‘ nem akarja használni. Nem ‘ T?
Válasz
Egyszerű, Az egyszerű számítógép, mint a ZX Spectrum, ésszerűen hangzik – De egyszerűen túl sok jó emulátor van a környéken, hogy ez hasznos lehetőség legyen. Azt is gondolom, hogy a 6502-et könnyebb utánozni.
Tehát lehetséges opció lehet az Oric-1 vagy az Atmos by Tangerine Systems , amely 6502-es, nem banki memóriát használt, egyszerű videofájlokon kívül egyedi chipeket és viszonylag egyszerű keretpuffert használt. Szintén messze nem olyan ismert, mint a Spectrum, mégis vannak szoftverek (játékok), amelyek egyszerű kompatibilitási teszteket hoznak magukkal (szerintem a hallgatók számára bizonyos “teljesítménytudat” rendkívül fontos). Számos emulátor elérhető már az Atmos számára (tudomásom szerint három), de számuk korlátozott, ami megkönnyíti annak kiderítését, hogy valaki átvert-e és egyszerűen másolt-e kódot.
Egyik sem Az Oric játékok annyira kifinomultak voltak tudomásom szerint, hogy a játékok futtatásához 100% -os ciklus-pontos emulációra lenne szükség.
Hozzászólások
- I ‘ d azzal érvelnek, hogy az Oric architektúrája elriasztja a raszterversenyzést azáltal, hogy nem rendelkezik videokontroll regiszterek mellékcsatornájával, és nincs beállítva, hogy a versenyzés elképzelhető módon növelje a színfelbontást (ellentétben a Spektrummal). Ha mégis csak két HIRES-puffere volt, akkor ezt ‘ d magabiztosabban állítom. Egyetértene ezzel?
- @Tommy ‘ nem ismerem túlságosan az Oric videó áramkörét. Amit mindenesetre kijelentenék, az az, hogy az Oricnak olyan rövid élettartama és olyan korlátozott felhasználói bázisa volt, hogy kifinomult technikákkal csípte meg a videót, mint ahogyan azt a ZX Spectrum-ból ismerjük. fejlődött (legalábbis nem a számítógép aktív élettartama alatt, itt ‘ számos érdekes bemutató található itt demozoo.org/platforms/ 49 )
- Ó, akkor ‘ jobb érvelést nyújtok: az Oric video chip modális állapotú, beleértve a szöveges vagy grafikus módot is, de nem kitett nyilvántartások. A videofolyamon belül mindent a vezérlő bájtok állítanak be – beleértve az előtér és a háttér attribútumait is. Az emberek általában panaszkodnak emiatt, mert ez azt jelenti, hogy ha rés nélküli grafikát szeretne, akkor ‘ soronként négy színre korlátozódik, ezek közül kettő a másik kettő bitenként kiegészítve. A modern játékok egy része mégis nagyon jól néz ki – pl. Viharmadár youtube.com/watch?v=QSDy-BC580M
- @Tommy A soros attribútumok egy kicsit trükkösebbé teszik a programozást, I ‘ sejthetem, de az attribútum ütközés mennyisége még jobb is, mint a ZX Spektrumon, úgy gondolom.
- A Xenon 1-nek pontos ciklusra van szüksége, különben a hajó felrobbanásakor elzáródik (felelősség kizárása: írtam egy amic nevű amigához egy oric emulátort, és belebotlottam ebbe a kérdésbe, de csak ebben a játékban) li>
Válasz
Az Ön kritériumai és annak szükségessége alapján, hogy a projektet érdekesnek tartsuk a hallgatók számára, ajánlom komolyan figyelembe véve a Vectrex árkádrendszert, amelyet Milton Bradley adott el az 1980-as évek elején.
Mivel a Vectrex egyedülálló abban, hogy vektoros megjelenítést használ, nem pedig raszteres kijelzőt, ezért nem bármilyen bonyolult video hardvert kell emulálni. A kijelzőt a CPU kezeli, és maga a kijelző is egyszerűen utánozható egy modern rendszeren és jó teljesítmény mellett.
A vektoros kijelző emulálása mellett a CPU ( A Motorola 6809) és az I / O chip (MOS 6522) nem jelentenek túl nyákot h a kihívás, mivel egyszerű 8 bites részekről van szó, amelyek nagyon jól dokumentáltak.
A memóriamodell is nagyon egyszerű, nincsenek olyan banki rendszerek, amelyekkel tisztában lennék. Van egy közös PSG hangkártya a Vectrex-ben, de ennek utánzása “Extra Credit” -nek tekinthető.
Az 1980-as évek elejének más egyszerű játékkonzoljaival ellentétben a Vectrex játékok meglehetősen jól tartották magukat, az a képesség, hogy sima monokróm grafikákat jelenítsen meg, beleértve a 3D-s drótkeretet is. Ezt bizonyítja a modern “home brew” fejlesztés népszerűsége, amelyben a fejlesztők továbbra is új Vectrex játékokat hoznak létre.
A Vectrex egyik utolsó előnye, hogy az eredeti rendszer ROM szabadon terjeszthető.
Megjegyzések
- Kivéve, hogy a vectrex jól el is futtatja a ‘ Gerendával versenyző ‘ kategória, nem ‘ van ez?
- @Raffzahn, ahogy megértem, a Vectrex CPU vezérli az elektronsugár – pontosan ellentéte egy ” sugárral versenyző helyzetnek “, amikor a szoftvernek pontosan időzített állapotot kell megváltoztatnia lépést tartani egy külső időzítésű raszteres szkennelési kijelzővel.
- @Mark It ‘ s ugyanaz a VCS-sel. A fénysugarat itt is a CPU vezérli. Anélkül, hogy a CPU minden sorhoz hozzáférne a WSYNC-hez, és mielőtt a sor elkészülne, a képernyő megingik. És amennyire megértem az OP-t, ‘ pontosan arról szól, hogy nem hozzunk létre rendszert szigorú időzítési követelményekkel – amelyek elengedhetetlenek a Vectrex számára.
- @Raffzahn: A VCS-ben lévő CPU vezérli a függőlegest, de nem a vízszinteset. ‘ Nem szokatlan, hogy egy játék tucatnyi vagy akár több száz szkenner vonalat ad ki közbenső WSYNC nélkül. WSYNC hiányában a nyaláb ugyanabban a vízszintes helyzetben lesz minden 76. ciklusban. A WSYNC tárolása gyakran a legegyszerűbb módja annak megvárására, hogy a nyaláb elérje a megjelenített terület jobb oldalát, de ‘ ez aligha az egyetlen mód. Egy olyan hajlandó programozó kiaknázhatja a sprite mozgásának és viselkedésének bonyolult részleteit, hogy olyan játékot írjon, amely soha nem használta a WSYNC-t.
- Ööö, emberek, itt emulátorról beszélünk. A foszforok elhalványulásával nem lesz probléma, miközben az emulált CPU túl sokáig tart a következő kép elkészítéséhez. Nincs ” nyaláb “, és bizonyára nincs oka annak, hogy az emulátornak ” verseny “, mivel az emulátor kijelzője statikus marad, amíg csak szükséges a keretek között.
Válasz
Az emulátor létrehozása a semmiből viszonylag hatalmas feladat, különösen a tapasztalatlan tanulók számára, és problémásnak bizonyulhat. Tehát valóban ügyelnie kell arra, hogy melyik platformot kell utánozni, és milyen információkat kell megosztani / használni. Számomra a legjobb választás egy ZX 48K platform , mivel egyre nőttem rajta, és ismerem a belső működését, így a válasz ettől elfogult lesz … De nem szabad megfeledkeznünk arról, hogy manapság a diákok általában nem látták / használták / tudták annyira, mint mi … Amit el kell érned:
-
helyes CPU-sziget emuláció
akkor is, ha rengeteg utasításkészlet van ott Vigyázni kell, mivel például a Z80-on 99,99% -uk hibákat tartalmaz. Tehát válasszon nekik egy tesztelt referenciatartalmat, amelyeknek megfelelő (vagy legalábbis alapvetően funkcionális).
Például itt van az enyém Z80 iset, amely 100% -os sikerrel adja át a ZEXAL-ot:
A Z80 platformnak egyetlen fő előnye van, és vannak olyan kiterjedt tesztelők, mint a ZEXALL Exerciser , amely sokat segíthet az emulátor hibakeresésében.
Szerintem ott vannak a
i8080
verziók is, de nem ismerek ilyen tesztelőket különböző CPU-család. -
Időzítés
az alap emulációhoz elegendő az óra tics módszer (vagy fojtás), ami jól ismert és használt … itt nem látok problémát. Manapság a számítógépek viszonylag jó felbontással rendelkeznek az időzítéshez (PC-n: RDTSC, a Windows PerformanceCounteren …).
Az alap emulátor figyelmen kívül hagyhatja az emulált platform TARTALMÁT, de vigyázzon, hogy egyes operációs rendszerek / játékok / alkalmazások használhatatlanná kell tenni, ha nincs megfelelően emulálva. Ez nem csak a demókra vonatkozik. A régi számítógépek szokásos időzítését valamilyen megszakítás (általában videófrissítés) és korlátozott számú ciklus alapján vezették le, amelyek képesek voltak előtte végrehajtani. De vitával az egyidőben végrehajtott utasítások száma nagyon eltérő lehet, és egyes programok túlcsordulhatnak, önmagukat károsíthatják vagy lefagyhatnak. A TARTALOM a legnehezebb az órajelekkel megvalósítani, ezért minden áron el kell kerülnie … Másrészt az MC szintű időzítéssel ez nagyon egyszerű és csak néhány soros kódot tartalmaz.
-
Hang
ez platformfüggő probléma, és válassza ki a hangbemenet / kimenet helyesen. Például a Windows-on az egyetlen használható lehetőség a WAvEIN / WAVEOUT az alacsony késés és az egyszerű használat miatt. A DirectX használhatatlan (legalábbis akkor volt, amikor ilyen feladathoz próbáltam használni) a HIGH késések miatt, és nem működik a visszahívás.
A hangszórók közvetlen meghajtása helyett pufferelt módszert használnék, így az emulációd tele lehet a végrehajtási idő az MC szintű helyes végrehajtás helyett (amit egyébként is csinálok, de kétlem, hogy a hallgatók képesek lennének rá a pillanatban).
-
Videó
Ez szintén platformfüggő. .. és olyan API-t kell használnia, amelyet a diákok ismernek. Még a nyaláb nyomkövetése is viszonylag könnyen megvalósítható egyszerű bittérképekkel … Az olyan számítógépeken, mint a ZX, a Scanline sorrendnek különleges jelentése van, és nagyon zavaró lehet az újonc kódolók számára, ezért jobb, ha a fordítási LUT táblákat használjuk a cím és az y koordináták közötti előre és hátra konvertálásra.
A legtöbb régebbi platform 50Hz / 60Hz frissítési frekvenciát és viszonylag kis felbontást használt, így manapság a nem megfelelően optimalizált emulációval rendelkező számítógépeknek is elég gyorsaknak kell lenniük ahhoz. Ha nem, akkor a keretek kihagyása is lehetséges …
-
egyéb HW és perifériák
Az abszolút minimum RAM / ROM memória és billentyűzet. A memória általában nagyon egyszerű, csak statikus tömb és / vagy néhány oldalváltás … A billentyűzet emulálható az I / O beállításával a megnyomott billentyűknek megfelelően. Az I / O memóriához hasonlóan memória is hozzárendelhető néhány tömbhöz. Az ISR rutin csapdázása szintén lehetőség, de használhatatlanná teszi a billentyűzetet az egyéni kulcskezelők számára.
Nem zavarnám az FDC, AY stb. Perifériákat, mivel az emulátort a lehető legegyszerűbbnek kell tartani. De ha szerencséd van, előfordulhat, hogy van olyan hallgató, aki jóval előrébb fog haladni mások előtt ezzel a projekttel. Azok számára javasolhat olyan izgalmas funkciókat, mint az FDC, a DMA, sőt a valódi hangkártya hangját (valódi szalagokhoz vagy bármilyen audio lejátszóhoz), amelyek lehetővé teszi a sok szép funkciót, például lásd:
-
Fájlok
A Z80 / SNA fájlformátumokat választanám itt: start. A TAP / TZX használata jó, de az emulátor kezdettől fogva meglehetősen hibás lenne, ezért előfordulhat, hogy a rutinok betöltése nem működik megfelelően, így nagyon nehéz használni és hibakeresni.
-
ROM
ez a legproblémásabb rész, mivel sok platformos ROM továbbra sem ingyenes, és kibontva / letöltve / felhasználva emulációval jogi kérdéseket kockáztathat.
Néhány itteni megjegyzésből úgy tűnik, hogy a ZX ROM-ok most már nyilvánosak … és vannak hozzászólt ROM pri így sokkal könnyebbé teszi az emulátor első lépéseinek hibakeresését (amikor még semmi sem működik).
De mindig vegye figyelembe a emulációt és jogi dolgokat , különösen, ha az emulátorokat valahol az interneten helyezik el
Itt van néhány kapcsolódó QA linkem:
- CPU és egyéb hardver specifikációk beszerzése az emulátor fejlesztéséhez
- Z80 grafikus írása emulátor C vagy C ++ nyelven . Erősen ajánlom, hogy olvassa el ezt (különös tekintettel a diákjaira), ezzel sok időt és ideget takarít meg nekik.
- Mi a megfelelő megvalósítás a hardveres emulációhoz?
Válasz
rendszer, amelyet nem sokban emuláltak? Javaslom, hogy maradjon a 8 bites (vagy a korai egyszerű, 16/32 bites) számítógépeken belül, a ZX Spectrum 48k egy ilyen viszonylag egyszerű rendszer – nagyon jól dokumentált, nincs sprit, nincs audio chip, nincs RAM bankok, egyszerű I / O, si grafikus grafika (bár furcsa elrendezéssel), ciklus nélküli tökéletes emulációra nincs szükség, jól ismert CPU, egyszerű kazettakezelés (a ROM csapdákkal még könnyebbé teheti). rengeteg játék létezik, amelyek közül sok megengedő licenccel rendelkezik.
Hátrány: hatalmas mennyiségű emulátor áll rendelkezésre, sokan maguk a retro kategóriájúak, és sok forráskóddal rendelkezik elérhető, ezért nagy a veszélye annak, hogy más kódokat csalnak meg és másolnak.
És természetesen a korábban nem emulált rendszer emulátorán végzett munka további előnyökkel járna a teljesítmény érzésében.
Megjegyzések
- Ugyanaz az ösztönöm volt, de kiterjeszteném, ha azt javasolnám, hogy az SNA és a Z80, valamint pontosan definiált pillanatképformátumok szükségesek ‘ nem is kell aggódnia a szalag emuláció miatt. És legyenek ‘ őszinték, a TZX ezen a ponton kissé miaszma.
- Úgy gondolom, hogy a Spectrum ROM ma már nyilvános, ami segíthet (vagy túlságosan megkönnyítheti a dolgokat)
- A ZX Spectrum nagyszerű példa az egyszerű hardverre, de egyben a meglehetősen összetett, ciklusszámláló (Racing the Beam) programozás is, hogy kihasználhassa a használható játékhatásokat.
- @Tommy Ó, soha nem javasolnám a ZX80 / 81-et ugyanezen okból. És bár nem igazi Spectrum buff, láttam hozzá jó időzítéstől függő kódot. A legtöbb prominet képernyő-manipuláció az adott rész megjelenése után, de mielőtt egyszer körbe futna. ‘ ez egy nagyon egyszerű probléma, amely rengeteg rendszeren megtalálható. Nem nagy kérdés, de időzítéstől függ. Például olyan egyszerű emulációs sémák, amelyek csak keretek között fojtanak sebességet, szörnyet okoznak a gyorsabb emulációs gazdagépeknek … és így tovább.
- @Stormcloud A Spectrum ROM nem nyilvános, bár engedélyt kapott emulátorokkal történő használatra történő terjesztéshez. A ZX80 és ZX81 ROM-ok a GPL alatt jelentek meg.
Válasz
Javasolhatom, hogy nézzen utána néhány korai arcade játék? Pontosabban ez a két 8080 / Z80 platform:
-
Midway 8080 – 1975-ben fejlesztették és Űrjárók . 256x224x1 bites fekete-fehér keretpuffert használ a RAM-ban.
-
VIC Dual – Sega / Gremlin “1977-ben tervezett platformja – a legismertebb játék a Carnival . A videó 8×8 karakterből álló 32×28 tömb (mind RAM-ban), és egy egyszerű színpaletta, egy PROM-hoz hozzárendelve.
Ezeket nagyon egyszerű utánozni, ha a Z80 emuláció működni kezd. Nincsenek vicces letapogatási vonalak vagy furcsa CPU várakozási állapotok. Player A vezérlők bitképes I / O portokon keresztül érhetők el.
Ezekkel a platformokkal interaktívan játszhat a http://8bitworkshop.com/ (Teljes közzététel: Ezt a weboldalt üzemeltetem, és a webhelyen linkelt, e platformokat leíró könyvek szerzője vagyok)
Az Apple] [szintén jó választás egy 6502 alapú platformhoz, bár a videó alrendszer bonyolultabb, mint a két arcade platformon.
Megjegyzések
- Minek ‘ érdemes, azt hiszem, az Űrjárók egy ihletett javaslat. Ha a memória kiszolgálja, ‘ csak egy 8080-as 1 bp-os bitképes képernyővel, néhány port IO a vezérlőkhöz, nincs kísérlet a raszter versenyzésére, csak ” kiváltja az X zajt most “, nagyon laza pontossági követelményeket, és olyan játékot hoz létre, amelyet alkalmanként most is megpróbálnak eladni. ‘ csak az a törvényességi kérdés, amely szünetet adhat, bár én ‘ mindig akadozom az akadémiai kivételektől.
- Ez ‘ nagyjából igaza van, ott ‘ egy külső chip is, amely segít a 8080 ‘ s a hordó váltó hiánya. Nem lehet ‘ semmilyen törvényességi probléma, amely utánozza a hardvert (‘ nincs szerzői jog által védett BIOS vagy más kód), és ez ‘ nagyon könnyű megírni a saját játékát, például: 8bitworkshop.com/v3.2.0/?platform=mw8080bw& file = game2.c
Válasz
A PET vagy a TRS80 működhet jól. Egyszerű hardver, a képernyőn megjelenő szöveggel, így egyenes szöveggel lehet őket emulálni, és először hozzá kell adniuk a kódot a páratlan karakterkészletekhez, és valószínűleg nem sok mindent tartalmaz a pontos ciklusszámláló kód.
Bónuszötlet, ha PET-hez hozzáadva a C64 támogatás grafikákat adna.
A 6502-et valószínűleg egyszerűbb utánozni.
Végső gondolat lehet az Ohio Scientific Superboard II, vagy annak Egyesült Királyságbeli inkarnációja UK101, mivel nem hiszem, hogy átprogramozható videohardverrel rendelkezik.
Megjegyzések
- Igen, mindhárom (PET, TRS, Superboard (teljesen elfelejtettem) a későbbiekről)) nagyszerű egyszerű gépek és nagyszerűek az emulációkhoz. De hiányzik a használatra kész játékok jó választéka is. Nem is beszélve a színesekről és hasonlóakról, amelyekre ma az emberek számíthatnak.
Válasz
A digitális PDP-8 nagyon fontos egyszerű architektúra, amelyhez könnyen lehet emulátort írni. Ennek néhány oka a következő:
- Csak 8 alapvető utasítás
- Nincs video interfész stb., Csak utánzó I / O terminál
- Nincs szükség a ciklus pontossága, a gépek tényleges sorozata nem garantálja ugyanazt a viselkedést a különböző megvalósítások között.
- Kezdhető egyszerű beállítással (pl. egy 4Kword gép, amely FOCAL-69-et futtat), és fokozatosan jobban emulálhatja az emulátort komplex (pl. 32Kword gép kibővített aritmetikával, OS / 8 futtatása RK05 lemezről)
- Sok online elérhető kézikönyv
- A MAINDEC diagnosztika és utasításai online elérhetők, amelyek használható az emuláció megfelelő működésének tesztelésére
Ez nem biztos, hogy minden követelményt lefed, pl. memória-leképezett I / O, de minden bizonnyal tartalmaz olyan dolgokat, mint az utasítások dekódolása és a címzés módjai. a dokumentáció egyenesen az alapvető hardverszintre megy le, ami megfelelő lehet egy EE tanfolyamhoz.
Megjegyzések
- Érdekes szempont, hogy a fent említett rendszerek többségének vagy Z80, vagy 6502 processzora van, mindkettő kissé hiányzik a támogatott címzési módjaik tekintetében. Ha a címzési módok lefedettsége fontos, akkor a PDP-8 sokkal jobb választékot kínál a bemutatásukra.
- A ” játékhoz ” a kérdés szempontja, úgy gondolom, hogy az Adventure továbbra is fennmarad / feltámad a PDP architektúráknál (de ellenőrizze, hogy – lehet, hogy tévedek).
- @TobySpeight You ‘ igaza van, fenntartják vagy feltámadják, de a PDP-10 esetében, amely teljesen összeegyeztethetetlen a PDP-8-tal.
Válasz
A ZX Spectrum opciót már elmondtuk: erőssége a teljesen leegyszerűsített IO hardver, és az a tény, hogy sok létező játék NEM igényel pontos, ciklust – az összes furcsaság helyes emulálása, a hang kivételével (nincs semmi a hang korrigálásához a CPU ciklus-pontos emulálása és a CPU által előállított 1 bites köztes hangfolyam helyes korrelálása nélkül).
A játék hardverének bármely más lehetősége, például NES, G Az enesis és az összes hasonló sprite-alapú gép nyilvánvalóan nem választható, mivel sok időre van szükség az összetett hardver megtanulásához, az utánzás módjainak kidolgozásához, az emuláció hiányosságainak kiküszöböléséhez stb. Például még az “egyszerű” Super Mario is A NES-en futó játék csak akkor fog működni, ha a PPU-ban lévő sprite ütközési bitet megfelelően emulálják.
A többi opció az IMHO a következő:
- korai szöveges módú IBM PC
- a meglévő CP / M gépek bármelyike
- (a “mikro” korszak előtti “nagy” gépek nélkül)
A legfontosabb pont itt van a szöveges megjelenítés, amelyet nem olyan nehéz utánozni, és sokkal egyszerűbb megjeleníteni a gazdagépen (még akkor sem kell pixeles grafikát megjeleníteni, ablakos rendszerrel / SDL / stb. dolgozni!).
Azonban még mindig szükség van bizonyos vizsgálatokra a megfelelő programok összegyűjtésére, beleértve a játékokat is. Van néhány szöveges játék a CP / M-ben, és ugyanúgy kell lenniük az IBM PC-nél is.
Megjegyzések
- A Mivel a CP / M gép ‘ legalább olyan lehet, amelyhez csupán 8080-as emuláció fog szolgálni?
- Szép, de akkor is vannak nem sok játék az IBM számára szöveges módban, nem igaz?
- @Raffzahn – csak egynek kell lennie .
- @Jules Hehehe … igen. De akkor azt mondom, hogy ‘ azt mondom, hogy minimum 8080 fog cselezni
Válasz
A legkevesebb egyedi chipet tartalmazó rendszer valószínűleg tisztább célpont lenne.
Az Apple II az egyik legegyszerűbb rendszer (a 6502-es CPU kivételével nincs LSI), amelyhez hatalmas mennyiségű (könnyen elérhető) játékot írtak.
Emellett rengeteg (vintage) könyv és cikk jelent meg az Apple II és a 6502 CPU rendszerarchitektúrájáról. Így a rendszert meglehetősen jól dokumentálták több (idézésre képes) forrás.
Az Apple II emulátorai 10K C-sorrend nagyságrendűek lehetnek, lehet, hogy valamivel kevesebb, ami belefér tanfolyam időkerete.
Megjegyzések
- Lehet, hogy a CPU egyszerű, de a perifériák (kijelző stb.) emulálása valószínűleg még mindig jelentős feladat
Válasz
Feltéve, hogy ez bármilyen hozzájárulást jelent, ezek a közvetlen megjegyzéseim a gépekről, amelyekhez emulátorokat írtam, hozzávetőleges indítási időrendben, remélhetőleg színt kínálva a fájlformátumokban stb.:
Atari 2600
Az Atari 2600 megkülönböztető jellemzője a processzor és a grafikus kimenet közötti szinergia; játékok valós idejű funkciót valósítanak meg, amely grafikus komponenseket szolgáltat a videó kimenethez a raszter futása közben. Tehát úgy gondolom, hogy ez egy rossz választás a megadott cél érdekében – a 2600-as emulátor megírásának valódi kemény munkája az időzítés és a kölcsönhatás a mikroprocesszoron kívül.
Apple II
Viszonylag egyszerű hardver, de nagyon árnyalt, több grafikus üzemmóddal rendelkezik, és az NTSC videó tanítása felé kell állnia, hogy képes legyen dekódolja a színkimenetét. A Disk II emulálása is nagyjából kötelező, de ez önmagában is egy kis küldetés, mivel a leggyakoribb fájlformátumok elvárják, hogy Apple GCR kódolót biztosítson.
ZX80 / 81
Valószínűleg túl bonyolult a megadott cél érdekében, a központi elképzelés a CPU frissítési ciklusát és az utasításlekérések egy részét a videó beolvasása céljából áttervezi. Ha úgy döntött, hogy nem hajtja végre ezt a mechanizmust, mint az eredeti, akkor csak a ROM alapértelmezett szöveges módja lesz.
Commodore Vic-20
Ez egy sima bittérképű gép egyszerű processzorral a 6502-ben és megfelelő mennyiségű játékkal, amelyek közül néhányat patronon szállítottak, ezzel felmentve a szalagos vagy lemezmeghajtó utánzásától. A kenőcs egyetlen repülése a 6522-es; ezek kombinált időzítő / váltó / bemeneti / kimeneti chipek egy csomó furcsasággal. De a Vic-20 tiszta előnye, hogy a BASIC parancssorig elindul, anélkül, hogy működne 6522s, és maga a BASIC is csak a 6522 megvalósított időzítőivel fog működni , még pontatlanul is.
A C64 érkezése előtti rövid piacvezetői idő korlátozza a hardver fejlett használatát elősegítő címek számát is – a raszterversenyekre egykoron vannak példák, például az Imagic címek , de kisebbségben vannak.
Azok a fájlformátumok, amelyekben az adatokat megőrzik, rendetlenség , de ha csak a patronok támogatására szorítkozik, és ügyeljen arra, hogy csak azokat a címeket használja, amelyeket a patronon szállítottak, az elkerülheti ezt a problémát.
ZX Spectrum
Máshol lefedett; Szerintem jó választás. Különösen, ha ragaszkodik a pillanatképfájl-formátumhoz.
Oric 1 / Atmos
Máshol lefedett; tisztességes választás, de van még egy ilyen bosszantó 6522-es. A legtöbb játék szalagban érhető el, mindezt támogatnia kell.
Acorn Electron
Bitmapped, egy 6502-es plusz viszonylag egyszerű külső logika, de hat különböző grafikai mód és időzítés jelentene gondot – az egyes ciklusok költsége az elérendő terület (ROM versus RAM) függvénye, a grafikus mód (40 oszlop és 80 oszlop függvénye) módok) és esetleg az aktuális grafikus kimeneti állapot (80 oszlopos üzemmódok blokkolják a RAM hozzáférést a pixel régióban; 40 oszlopos üzemmódok nem “”). De egyszerűen modellezheti 1 MHz-es gépként a legtöbb játékhoz, és többnyire megúszhatja a grafikus kimenet vonalközpontú változata.
Kevés játék érhető el a ROM-on, de szerencsére a szalagos hardver többnyire nagyon alacsony minőségű emulációt tesz lehetővé: ez az az elem, amely felvet egy megszakít a bájt átvételénél, csak két címmel gondolok bele, hogy ennél mélyebb önvizsgálatot végezzek.
Amstrad CPC
Valószínűleg egy elkerülni a megadott célból – 6845 CRTC-vel rendelkezik, amely nagyon konfigurálható grafikus kimenetet és ezért sok címet vetít a raszterre. A lemezhasználat szintén meglehetősen terjedt, de a 8272-es lemezvezérlője további fejfájást jelent a WD1770-hez képest, amelyet máshol gyakran látni fog.
MSX és / vagy ColecoVision / SG1000
Különböző hang chipek, ugyanaz a CPU és videó.Valójában azt gondolom, hogy messze el lehet kerülni az időzítés összjátékának figyelmen kívül hagyását, mert a video chip saját RAM-ját karnyújtásnyi távolságban tartja. De csempékkel és írásokkal, valamint négy különböző grafikus móddal rendelkezik, ami valószínűleg túl jelentős vállalkozás egy mikroprocesszoros tanfolyam számára.
Master System
Technikailag továbbfejlesztett SG1000, minden, amit a gép tesz, plusz egy extra grafikus mód, de az extra grafikus mód sokkal jobb, mint a többi, hogy csak egy cím használ semmit más. Tehát valójában némileg leegyszerűsíti a dolgokat, ha elégedett vagy azzal, hogy az időzítést többnyire figyelmen kívül hagyod.
De még mindig beszélsz a sprite prioritások figyelembevételéről, a pixelenkénti ütközések ellenőrzéséről stb. Valószínűleg túl sok .
Lábjegyzet: csalás szalagos hozzáféréssel
Egy csomó fent említett otthoni számítógép esetében a szalagemulációt bármihez kihagyhatja, ami az alapértelmezett ROM-formátumban van kódolva. megfelelő csapda a rendszer ROM-jába, és spooling a forrás fájlból. Sok, de nem az összes cím teljesen a beépített ROM-ra támaszkodik az IO szalagon, így számos címet betölthet, valódi hardveres kísérlet nélkül.
Minden esetben “hodge-job hack”, de “megteszi, ha az emulációnak ez az oldala nem fontos az Ön számára – inkább csak távolítsa el az egyenletből, és hagyja figyelmen kívül azt, ami nem működik.
Konkrétan:
Vic-20:
- ha a programszámláló 0xf7b2-re kerül, másolja a következőt szalagfejléc a b3 által jelzett helyre: b2, nullázza ki a 0x90 és 0x93 értékeket, és folytassa a 0xf7b5 ponttól (amint elkerüli a JSR-t);
- csapdába esik 0xf90b, ellenőrizze, hogy X = 0xe, ha igen, akkor szerezze be a következő szalagos adattestet, és írjon az emulált memóriába a c2: c1-ből, de legfeljebb af: ae, a test méretétől függetlenül, majd állítsa be a 6-os bitet 0x90-re, törölje a hordozó és a megszakító jelzőket, és folytassa a 0xfccf értéktől. / li>
Oric:
ROM 1.0 esetén csapdába ejti a számítógépet a 0xe630 címen. Az 1.1-es verziónál figyelje a 0xe6c9 címet.
Ennek elkapása után töltse be A-t a következő byte-szal a szalagról, és állítsa be a nulla zászlót annak értéke szerint.
Ezután RTS.
Az eredeti ROM-on 0x67 vagy 0x24d jelzés is található, amely megkülönbözteti a gép gyors és lassú szalagos kódolását, de a szokásos szalagos fájlformátum csak dekódolt bájtokat tartalmaz, így a gyors és gyors piszkos emuláció ne aggódjon miatta.
Elektron:
Telepítés A 0xf4e5, 0xf6de, 0xf6fa és 0xfa51 NOP-ok letiltják a szalagágakat. Az operációs rendszer most megpróbálja úgy betölteni a szalagadatokat, mintha egy soros ROM-on lenne. A regiszter értéke 14, a 0x247 cím értéke pedig nulla. Akkor tudni fogja, hogy a ROM megpróbálja lekérni a következő byte-ot szalagról.
Tegye a következő byte-ot Y-be, állítsa A-t 0-ra. és az RTS.
Az elsődleges szalagos fájlformátum többnyire lehetővé teszi, hogy a bájtokat közvetlenül a fájlból tekerje (néhány triviális darab navi után a ZLib-en vagy egy másik GZ-dekompresszoron keresztül, bár előre csak gunzipezhetne).
ZX Spectrum:
(Ezt nagyon régi jegyzetekből írják át; érdemes lehet megerősíteni egy ROM szétszerelésével)
Csapdába ejti a PC-t, amely eléri a 0x056c értéket a 48kb-os ROM-on. Fogja meg a következő blokkot a szalagról (ha TAP fájlt használ, akkor azt közvetlenül megkapja; azt állítom, hogy nem szabad fáradnia azzal, hogy megpróbálja támogatni a TZX-t egy ilyen projektben).
Ha hossza kisebb, mint a DE értéke: reset carry and return.
Hasonlítsa össze a mondat első byte-ját a B. értékével. Ha nem egyeznek meg, állítsa vissza a carry és return értékeket.
Ellenkező esetben spoololja az első DE bájtokat, amelyeket a IX által jelzett címre kapott, és állítsa be a C alacsony bitjét és állítsa be a szállítást.
Ezután vagy végezzen közvetlenül RET-t, vagy hagyja ki a számítógépet előre a 0x05e2-re, amely az a RET, amely általában befejezi a szalag betöltését.
A 128 kt-os gépek a 48 kt-os ROM-ba osztódnak a szalag betöltése érdekében, így ugyanaz a hack vonatkozik az oldalak ellenőrzésére is.
Megjegyzések
- Szép írás. Egyetértek minden elmondottakkal – talán két apró kiegészítővel az Apple II-hez. Bár igaz, hogy a videohardver eléggé elgondolkodtató, finomsága teljes mértékben figyelmen kívül hagyható az emulációban, mivel csak a Bizonyos bitminták egyenértékűségét színre kell fordítani – ha egyáltalán, mint A2, ahol gyakran fekete-fehér képernyő fut, amellyel egyszerű bitképként lehetne utánozni minden további részlet nélkül. Másodszor, mindaddig, amíg a lejátszandó Gemes ProDOS alapú, nincs szükség részletes Disk II emulációra, mivel ez más-más hardverekkel működik.
- @Raffzahn mi lenne a legegyszerűbb formája a keresőtáblának színes kimenet legyen?Az NTSC-től visszamenőleg, és mindent lebonthatóként kezelve a kétszeres nagy felbontású képzettel, el tudok képzelni egy táblázatot, amelyet egy három bites számláló indexel, amely reprezentálja a fázist, valamint a videó kimenet öt bites eltolás-regiszterét, hogy fél színciklust kapjon középponttal. Tehát egy 256 bejegyzéses táblázat. De ez ‘ nagyon naiv érvelés; vannak-e emberek jobban?
- @Tommy: Egyszerű megközelítés az, ha egyszerűen használunk egy ismétlődő négy színű szekvenciát (szerintem (piros, sötét sárga, zöld, kék) dupla nagy felbontású képpontokhoz és elmosódáshoz. a képernyő egy kicsit. Ez végül színes rojtokat hagy a dolgokon, de a valódi monitorok ezt egyébként is megtették. Mivel az Apple] [videó nem rendelkezik specifikációval, ‘ s nem az egyik ” jobb ” megjelenítési mód, és a valós monitorok hajlamosak kissé másképp megjeleníteni a dolgokat.
Válasz
Úgy gondolom, hogy a grafikus játékok célként való használata esetleg túlságosan megnyújtja a hallgatókat. A játék futtatása általában nem csak a A processzor funkcióinak többsége, de sok hardver is, nem utolsósorban a video áramkörök (amelyek gyakran meglehetősen összetettek, és sok esetben sok furcsa időzítési problémát vetnek fel). Ha bármi nem működik megfelelően, az eredmények valószínűleg nagyon dis kinevezése. Azt javaslom, hogy kezdjen könnyebb célzással.
Olyan rendszert céloznék meg, amely grafikus helyett szöveges üzemmódú felülettel rendelkezik, mivel az ilyen felületek általában sokkal egyszerűbbek, és nincsenek különösebb időzítési követelményeik. ezeket teljesíteni kell (azaz gyakran teljesen párhuzamosan működnek a processzor memóriához való hozzáférésével, anélkül, hogy a processzort egyáltalán befolyásolnák). Azt is javasolnám, hogy legyen egy olyan rendszer, amely integrált gépi szintű monitor programmal rendelkezik, mert ez segít a programok hibakeresésében futtatás a gépen anélkül, hogy hibakeresőt kellene telepíteni az emuláció szintjén.
A jelenlegi személyes kutatási projektem alapján a Nascom 2 számítógép egy javaslat. Ez egy viszonylag egyszerű Z80 alapú gép, szöveges módú hardverrel. nem lép kapcsolatba a CPU-val (ha van vita, akkor a CPU javára döntött, vagyis elméletileg előfordulhat, hogy az egyes képkockákban egy maroknyi pixel nem jelenik meg, ha a képernyőt a frissítéssel egyidejűleg érik el. előforduló, de th valószínűleg nem lesz különösebben észrevehető, sőt gyakori, ezért nagyon egyszerű hardverrel használható eredményt ad). A pontos időzítés ezért valószínűleg nem lesz különösebben nehéz vagy fontos ennek a gépnek. A gép hardvere egyszerû és jól dokumentált. Az integrált perifériák UART-ok (amelyek akár távoli terminálhoz / nyomtatóhoz, akár kazetták betöltéséhez és mentéséhez használhatók … ami azt jelenti, hogy nincs szükség a kazettakezelés audio szintre való emulálására, ezáltal sok megvalósítási időt megtakarítva) és egy párhuzamos IO modul. A rendelkezésre álló eszközök ösztönzik az összeállítási nyelv kísérletezését is, ami elképzeléseim szerint kívánatos cél a kurzusod számára.
A gép egyik érdekessége, hogy hiányosak a rendelkezésre álló emulációs lehetőségek: a a gép legismertebb weboldala javascript-alapú emulátort kért, amelyet beágyazhat az oldalra, de még senki sem adott ilyet.
Válasz
Két és egy kicsit a nulláról emulációt végeztem a Mac számára a Swift használatával. Ezek a személyes tapasztalataim a tapasztalataim alapján.
Egyik emulációm sem teljesen ciklusszerű, ami néhány problémához vezet.
Commodore PET
Ez volt az első emuláció, amit írtam. Szüksége van legalább 6502 emulációra, PIA emulációra, VIA emulációra és video emulációra.
A 6502 valóban egyszerű és kiváló processzor a kezdéshez. Ez is nagyon jól dokumentált. A Visual6502 webhely felbecsülhetetlen volt az utasítások pontos viselkedésének kidolgozásában, ahol a dokumentáció félreérthető volt. Félreértésként egy kicsit későbbi processzor emulációját írtam (elfelejtem, melyiket), amely néhányat kitöltött. az utasításkészlet hiányosságai. Ez nagyon megkönnyítette a 6502 tesztkód írását (még PHX
és PHY
is egyszerűbbé tesz néhány dolgot. másrészt minden szoftver, amely az eredeti 6502 “dokumentálatlan utasításait” használta, meg fog törni az emulációmon.
A PIA és a VIA viszonylag egyszerű IO chipek utánzása. A video meghajtó lehet olyan egyszerű, mint a képernyő RAM-jának elolvasása, fordítás ASCII-re vagy szoros közelítésre, és a kapott szöveg rajzolása egy ablakba. Végül létrehoztam egy sor bitképet, amelyek pontos másolatai voltak a PET karakterkészletnek.
Fő erőforrásom a a PET Raeto West “Programozta a PET / CBM-et”. Van egy eredeti példányom, de vannak PDF ver szionok on-line. Fontos továbbá a BASIC és a KERNAL ROM elérhetősége.Nem akarja átírni az operációs rendszert.
A szalagos meghajtó emulálása PITA volt. A szoftveres verzióm kevésbé volt megbízható, mint a valódi, amiről a PET-tulajdonosok tudni fogják, hogy valóban mond valamit. gondoltam, hogy az a ciklus pontos időzítő impulzusain alapszik, és bár az emulátorom számolja az óra impulzusokat, nem feltétlenül hívta fel pontosan az időzítő megszakítását.
Több sikert arattam a kettős lemezmeghajtók emulációja. Ehhez erőteljes IEEE 488 emulációra is szükség volt, de a lemezmeghajtó emulációja meglehetősen egyszerű volt. Ez nem hardveres emuláció, csak a PET által küldött parancsokat veszi át, és a Mac merevlemezén lévő lapos fájlok segítségével hajtja végre őket.
Végül írtam egy olyan kódot, amely leállította a emulátort, közvetlenül fecskendezzen be egy programfájlt a memóriába, majd indítsa újra az emulátort. Ez sokkal kényelmesebbnek bizonyult, mint a lemezek vagy szalagok emulálása, ezért abbahagytam a munkát.
Az emulátorom elég jól működik a legtöbb PET-kóddal. Sajnos probléma merült fel a PET Space Invaders kapcsán – valószínűleg a billentyűzet kódja okozta -, így nem ismeri fel megfelelően a billentyűkombinációkat. Emellett nem próbáltam foglalkozni a hangképzéssel.
Sinclair ZX Spectrum
Bizonyos szempontból ez még a PET-nél is könnyebb. Írnia kell egy Z80 emulátort, amely bonyolultabb, mint a 6502, de van egy CPM tesztcsomag, amellyel sok funkcionalitást ellenőrizhet, csak a CPM karakter kimeneti alprogramját kell utánoznia, hogy működőképessé váljon. / p>
Az egyetlen más chip, amelyet utánoznia kell, az ULA, és ennek nem kell sokat tennie, ha hajlandó lemondani a szalagos meghajtóról. Ezenkívül a videógenerátor, ami kissé furcsa a képernyő RAM-jának megszólításában.
A Spectrum nagyon szép dolog, hogy a képernyő mindig bitkép módban van, és az operációs rendszer közvetlenül létrehozza a karaktereket. az írási pixelminták megírása. Nem kell aggódnia egy karakterkészlet miatt, mert varázslatosan ott van, amikor az emulátort betöltve betölti a Spectrum ROM-okat.
Eljutottam a Spectrumig, ahol betölthettem és futtathattam a Manic Minert és lejátszható volt, bár hang nélkül. Körülbelül három hónapig tartott a munka, talán heti nyolc órában az elejétől a végéig.
Commodore 64
Ez egy folyamatban lévő munka. Nyilvánvalóan már volt egy 6502-esem, amelyet módosítottam, hogy megkapjam a 6510 IO portját. Eddig a bank teszi meg Ha helyesen kapcsolunk, akkor a CIA bizonyos funkciói megvalósításra kerülnek, és elegendő VIC II funkció van emulálva ahhoz, hogy PET-ekvivalenst kapjak, azaz a normál szöveges mód működik. A határ és a karakter színmemóriája is működik.
Még mindig rendelkeznek a bonyolultabb grafikus módokkal, amelyek utánozhatók és írhatók, és képesnek kell lennem valamire a hanggal, mert ez egy külön chip, nem bízom a CPU pontos időzítésében.
TL; DR
A CPU kivételével a legegyszerűbb emuláció volt a Spektrum. Valószínűleg ezzel kezdeném, bár egy régi CP / M 8080 alapú számítógép még könnyebb lehet, ha kézbe kerül a CP / M.
További észrevételek
Valószínűleg szükséged lesz egy jó keresztszerelőre a célplatformodhoz. Nagyon unalmas kézi összerakási kódot kap az egységtesztekhez.
Ezenkívül egy szétszerelő is hasznos lesz. Nem kellett szétszednem a Commodore BASIC ROM-okat, mert a szétszerelések szabadon elérhetők az interneten. De amikor megpróbáltam rábírni az Űrhadjárókat, az elsőre nem működött, és a szétszerelő felbecsülhetetlen értékű volt a hibakeresésben. p>
Emiatt a cc65 suite nagyszerű lehetőséget kínál egy 6502-es géppel való indításra. Van benne egy jó összeszerelő és egy kiváló szétszerelő. A Z80 helyzet nem volt olyan jó, de a végén találtam egy ésszerű szerelőt, amelyet z80asm-nek hívtak. Azt hiszem, mégis forrásból kellett lefordítanom.
Ezenkívül jó szilárd dokumentációra lesz szükséged. Ismét online van a 6502-es dokumentáció, és gyakorlatilag páratlan. A Spectrum számára kevésbé készülnek a dokumentumok, de ilyen egyszerű, megúszhat egy meglehetősen silány ULA-emulációt.
Válasz
Az összes többi finom javaslat mellett, mint a Z-80 és a CP / M alternatívájaként fontolóra vehet egy általános Motorola 6809 rendszert a FLEX vagy esetleg OS-9 , mind a Unix ihlette. CLI alapú rendszerként nincs szükség pontos időzítésre.
Továbbá, ha a szimulátort építi, az inkább a hardver felépítését jelenti; az operációs rendszer portolása valós feladat – amit az 1980-as években csináltam – szemben a klón-valami oktatásért feladattal.”Indítja az operációs rendszert és futtatja a programokat?” nagyon reális célpont.
Mivel sokféle gyártó hardverén futó hordozható operációs rendszert futtat, ez azt jelenti, hogy a hallgatóknak nem csak egy módjuk van rá. Lehet, hogy az A diák épít bit térképes megjelenítés; A B tanuló készíthet UART-ot és soros interfésszel rendelkezik. Vannak, akik megpróbálják minden ciklust rendbe hozni; vannak, akik megpróbálják minden műveletet helyesen végrehajtani. Ezért ahelyett, hogy egyszerűen megpróbálna másolni valamit anélkül, hogy szükségszerűen megértené az eredetit tervezési korlátok, a hallgatók megfelelő mérnöki kérdéssel foglalkoznak: mi a jó módszer erre?
CPU
- A 6809 abban az időben egyedülálló volt, mivel teljesen helyfüggetlen kódot lehetett írni, amely azonos módon fut, bárhol is van a memóriában.
- Az utasításkészlet szinte teljesen ortogonális volt.
- Mint 8 bites CPU 16 bites címbusszal, nagyon egyszerű
- A kivétel mechanizmusa és hatékony -cím manipuláció nagyon hasonlít a modern processzorokhoz
- Motorola tervezésként memória-leképezett IO-val rendelkezett, nem pedig speciális IO utasításokkal.
- Könnyebben elvégezhető, mint a Z-80 (sokkal kevesebb utasítás ) vagy 6502 (kevesebb speciális eset)
- Anyag a https://en.wikipedia.org/wiki/Motorola_6809
FLEX Unix által ihletett rendszerként lett tervezve 8 bites CPU-khoz
- Kifejezetten a hordozhatóságra tervezték, és az indításhoz nagyon kevés rendszerhívást kellett végrehajtani – szerintem csak a karakterek olvasása / írása, a floppy blokk olvasása / írása és valamiféle indítás (olvasási szektor és ugrás)
- Hardver-agnosztikus ezekhez az alapfunkciókhoz, ami sokkal könnyebbé teszi a szimulációt
- Izgalmas, ha csak néhány függvényt írunk és egy teljes operációs rendszert indítunk
- Nincsenek grafikák, amelyek miatt aggódni lehet (ami a nézettől függően pozitív vagy negatív)
- Sok rendelkezésre álló anyag, f ind via https://en.wikipedia.org/wiki/FLEX_(operating_system)
OS-9 hasonló szándékú
- Unix-szerűbb, mint a FLEX, kissé nehezebb portolni, amennyire emlékszem
- Később 68000-re továbbítva
- Sok rendelkezésre álló anyag megtalálható a https://en.wikipedia.org/wiki/OS-9 oldalon keresztül