EP128Emu leírás

From Enterprise Wiki
Jump to: navigation, search

Click for English

Bevezetés

Jelenleg az EP128Emu a legpontosabb és a legtöbb opcióval rendelkező Enterprise emulátor PC-re, ezért kezdők számára elsőre ijesztő lehet. Ezen leírás nekik készül. Reményeink szerint a leírás elolvasása után bárki könnyedén elboldogul majd ezzel a remek emulátorral! Alternatíva az EP32, amely szintén egy nagyon jó emulátor, kevesebb opcióval, de kezdők számára ideális lehet a könnyű használhatósága miatt. Az EP128Emu legfrissebb verziója a 2.0.11. Ez az emulátor a korábbi C-ben készült EP128Emu v1.x.x C++-ban újraírt változata, sokkal több beállítási lehetőséggel, jobb beépített debuggerrel és pontosabb emulációval. Az EP128Emu Varga István műve.

Telepítés

Windows alatt

Az emulátor telepítésekor a Source code és a Download old ROMs jelölőnégyzetek elől a jelölést törölhetjük mezei felhasználás esetén. A forráskódra (source code) csak akkor van szükségünk, ha fejleszteni szeretnénk az emulátort, a régi ROM-okra pedig akkor, ha régebbi verzióhoz tartozó config file-okat tervezünk használni. Tehát aki most telepíti először az emulátort, az nyugodtan töröljön minden jelölést, csak a Download ROM images előtt hagyja meg. Ha rendelkezünk ROM file-okkal, akkor a Download ROM images elől is törölhetjük a jelölést, de az esetleges frissítések miatt célszerű lehet ilyenkor is letölteni a ROM csomagot. A ROM-okat az emulátor a \Program Files\ep128emu2\roms könyvtárban tárolja. Ha saját ROM-ot szeretnénk használni, ide tegyük! Az alábbi ROM-okat tölti le az emulátor telepítés során az Internetről:

Enterprise

Spectrum

  • zx128.rom
  • zx48.rom
  • zx48gw03.rom

CPC

  • cpc464.rom
  • cpc6128.rom
  • cpc664.rom
  • cpc_amsdos.rom

TVC

  • tvc12_ext.rom
  • tvc12_sys.rom
  • tvc21_ext.rom
  • tvc21_sys.rom
  • tvc22_ext.rom
  • tvc22_sys.rom
  • tvc_dos11c.rom
  • tvc_dos11d.rom
  • tvc_dos12c.rom
  • tvc_dos12d.rom
  • tvcfileio.rom
  • tvc_sdext.rom
  • tvcupm_c.rom
  • tvcupm_d.rom

Egy részük ismerős lehet annak, aki használt már Enterprise-t, de sok újabb is található köztük, melyek a XXI. század hajnalán is tevékeny fejlesztőgárdának köszönhetők. Az EPFileIO.rom-mal igazi Enterprise mellett nem találkozhatunk, ez az emulátorba történő betöltést teszi kényelmessebbé - hogy hogyan, arról később lesz szó.

Fontos, hogy a Use Hungarian keyboard map-ot bejelöljük, ha magyar billentyűzetet használunk, különben a billentyűzetet nem tudjuk rendesen használni. A Reinstall ep128emu configuration files ? kérdésnél az első telepítéskor mindig az OK gombra kell kattintani.

OpenGL és software mód

Telepítés után a Start menüben külön parancsikon található az emulátor OpenGL módban és software módban történő indításához. Erre azért van szükség, mert OpenGL módban problémák lehetnek egyes videókártya driverekkel. Ebben az esetben software módban kell az emulátort elindítani. Software módban lassabb ugyan a kép frissítése és néhány, a "Display/Configure..." ablakban engedélyezhető effektus nem használható, viszont a software mód valamennyi videókártya driverrel együttműködik.

Enterprise programok betöltése az emulátorba

Az emulátorba több módon is tudunk betölteni programokat. Nekem a magnós betöltés a legkedvesebb, ugyanis töltés közben ugyanúgy csipog az emulátor mint egy igazi Enterprise! :-) Köszönjük Istvánnak!

A legegyszerűbb módszer a betöltésre az EPFileIO.rom használata, mert nem kell hozzá virtuális kazettát szerkesztenünk vagy floppy image file-t előállítanunk, hanem pár kattintás után merevlemezünkről tölthetjük be a programokat.

EPFileIO.rom

Ez egy direkt az emulátorhoz készült bővítmény, amellyel a PC-nk egy kiválasztott könyvtárában lévő file-okat tudjuk közvetlenül elérni az emulátorból. Használatához az epfileio.rom-nak a 10-es (vagy magasabb számú) szegmensen kell lennie (Machine|Configure|Memory ablak), és engedélyezve kell, hogy legyen a Machine|Configure|General ablakban az Enable virtual file I/O. A könyvtárat az Options menü Set working directory pontjával tudjuk beállítani. Ha ebben a könyvtárban megtalálható pl. a bruce.com, akkor az emulátorban, BASIC-ből a load "file:bruce.com" paranccsal tudjuk betölteni a Bruce Lee játékot. Több file-ból álló játékokat is be lehet tölteni így (kivéve ha nem a default eszközről akarják őket beolvasni). Az EPFileIO.rom tehát a file: eszközt tartalmazza, melynek segítségével a PC merevlemezéről tud fájlokat olvasni az emulátor. Menteni is lehet a merevlemezre, ha megadjuk mentéskor a file: eszközt (ha a file: a default eszköz, akkor persze nem kell megadni). Pl. BASIC-ben:

100 print "Hello World!"
save "file:hello.bas"

Alapértelmezésként az emulátor a file: eszközről (a PC merevlemezéről) olvassa be a fájlokat. Ha azt akarjuk, hogy ne a file: eszköz legyen az alapértelmezett az emulátorban, akkor BASIC-ből a :def_dev_disk paranccsal tehetjük alapértelmezetté a hajlékonylemezt. Ha újra a file: eszközt szeretnénk alapértelmezetté tenni, adjuk ki a :def_dev_file parancsot!


Tippek:

  • Ha az emulátor egy programnak csak az első fájlját olvassa be, akkor adjuk ki a :def_dev_file vagy :def_dev_disk parancsot, attól függően, hogy a PC merevlemezéről vagy hajlékonylemezről akarunk-e tölteni!
  • Ha az emulátor nem akar a PC merevlemezéről olvasni, ellenőrizzük, bent van-e az EPFileIO.rom valamelyik (10-es vagy magasabb) szegmensen, és hogy az Enable virtual file I/O engedélyezve van-e!
  • Ha az epfileio.rom nagyobb számú szegmensen van, mint az EXDOS, akkor mindig a DISK: az alapértelmezett.
  • Vigyázat! Ha a betölteni kívánt program egyes fájljait a kiválasztott könyvtáron belül (Set working directory) alkönyvtárba tesszük, az emulátor nem tudja a programot betölteni! Minden fájlt ebbe a könyvtárba másoljunk, és ne hozzunk létre ezen belül alkönyvtárat!

Magnó

Először is némi háttérinformáció. Az Enterprise, amikor magnóról tölt, akkor tulajdonképpen a csipogást értelmezi, ami a kazettára van rögzítve. Tehát ha az emulált EP-hez emulált magnót szeretnénk használni, akkor szükségünk lesz erre a csipogásra valamilyen formában. Erre a célra szolgál a Tape editor nevű segédprogram. Tehát bármilyen programot is szeretnénk magnóról betölteni az emulált EP-be, először a Tape editor programot kell használnunk. Ennek használatáról külön részben írok majd. A lényeg, hogy a Tape editor-ral elő tudunk állítani a PC-nken található bármilyen file-ból egy hangfile-t, amit az emulátor Machine|Tape|Select image file menüjében tudunk kiválasztani. Ez felel meg a kazetta magnóba történő behelyezésének egy igazi Enterprise esetében. Mivel emulátort használunk, itt csak virtuális kazettáról beszélhetünk. A Tape editor-ral egy ilyen virtuális kazettát tudunk szerkeszteni. Fontos megjegyezni, hogy a Tape editor ugyan .tap kiterjesztéssel menti el a virtuális kazettákat, de ennek a .tap file-nak a felépítése teljesen más, mint annak a .tap-nak, amit az EPTE vagy a TAPir használ! Viszont a Tape Editor be tudja tölteni az EPTE/TAPir .tap file-jait és ezeket lementve azonnal tudjuk őket használni az emulátorban. Tehát ha már van egy ilyen virtuális kazettánk, válasszuk ki a Machine|Tape|Select Image menüt és keressük meg azt. Ezután a virtuális magnónkba helyezett virtuális kazettánkat a Shift-F9-cel tudjuk elindítani. Ekkor a jobb felső sarokban lévő óra előtt egy P betű fog megjelenni, ami azt jelenti, hogy a lejátszás elindult. Hogy miért nem indult el az óra? Azért, mert a virtuális magnó az igazihoz hasonlóan távvezérléssel működik, tehát csak akkor megy, ha az EP arra utasítja. Ezt egyszerűen ki is próbálhatjuk, ha megnyomjuk BASIC-ben az F4-et, de még jobb ha az F1-et nyomjuk meg, így elkezdődik a betöltés. Ekkor hallhatjuk a sípolást. Ha a file-ok sorrendje megfelelő, akkor néhány percen belül be is fejeződik a betöltés és elindul a játék.

Tape Editor

Ezzel a segédprogrammal tudunk a PC-nken lévő file-okból olyan hangfile-t előállítani amelyet az EP128Emu a magnóról történő betöltéshez vár. Erre a file-ra ezután csak virtuális kazettaként fogok utalni. Ha beszereztük kedvenc játékunkat (a példában én az Alien-8-at fogom használni) és egy külön könyvtárba helyeztük a file-jait, indítsuk el a Tape Editor-t. Bal oldalt egy nagy fekete részt láthatunk, jobb oldalt pedig néhány gombot.

Kattintsunk az Import-ra és keressük meg a PC-n az Alien-8-at tartalmazó könyvtárat és válasszuk ki az első file-t. Felmerülhet a kérdés, hogy milyen szempont alapján az első file-t? Mivel a magnóról történő betöltés szekvenciális, azaz egymás után, szépen sorban kell következniük a file-oknak, úgy ahogy azt a program óhajtja, így a hamarosan elkészülő virtuális kazettánkban is ezt a sorrendet kell követnünk. A megfelelő sorrendet a legtöbb programnál könnyen kitalálhatjuk ha végignézünk a file-ok listáján (.com, .scr, .prg, .rom). Elvetemültebb esetekben azonban valószínűleg próbálkoznunk kell párször mire megtaláljuk a helyes sorrendet. Szerencsére a Tape Editor-ban egyszerűen tudjuk a file-ok sorrendjét módosítani a fel és le mutató nyilakkal, ezért az importálás sorrendje igazából lényegtelen, de időt spórolunk meg ha már eleve jó sorrendben importáljuk be őket. Ha a sorrendet módosítottuk a virtuális kazettát újra el kell menteni. Az Alien-8 esetében a sorrend tehát: alien_8.com, alien.scr és alien.prg. A kész virtuális kazettát a Save gombra kattintva menthetjük le a PC-re, miután kiválasztottuk a célkönyvtárat. Célszerű az emulátor tape könyvtárába rakni ezeket, az egyszerűbb betöltés érdekében.

Floppy lemez és floppy image

Az Options/Disk/Configure menüben megadhatjuk az image fájl (.img) helyét. A PC A: floppy meghajtójában található lemez használatához image file-névnek \\.\A: -t kell beírni, a tracks, heads, sectors pedig legyen -1 (ami az alapértelmezett beállítás, és általában nem érdemes megváltoztatni).

Debugger

A debuggerbe a Debug menü lenyitásával a Start debuggerre kattintva lehet belépni. A megnyíló ablakban felül két fül közül lehet választani: Page 1 és Page 2.

Page 1

CPU registers, Memory paging, Stack

Search, Memory dump

A memóriacímeken található értékeket itt csak megtekinteni tudjuk, módosításukra a Page 2 fül alatt van lehetőség.

I/O registers

Disassembler

Page 2

Itt három ablakot láthatunk.

Monitor

A bal felső ablakba különböző parancsokat gépelhetünk. A parancsok listáját a ? írja ki, és egy parancs nevét megadva a ? után (pl. ? l) további információkat lehet olvasni az adott parancsról. Ha valamelyik memóriacím tartalmát módosítani szeretnénk, akkor a > karekter után írjuk ide a memóriacímet, majd szóköz után az értéket. Ha pl. 94b8-ra 0-t akarunk elhelyezni, ennek módja: >94b8 0 Az értékeket itt 2-es, 8-as, 10-es, és 16-os számrendszerben is meg lehet adni, például a %10101010, 252o, 170L, AA, és AAH is 170-et jelent.

A használható parancsok listája:

  • . cím utasítás ...
  • A cím utasítás ...

Z80 utasítás fordítása a megadott címre (pl. A 2000 LD A, 1). A következő utasítás címét automatikusan kiírja a következő sorba A paranccsal, így egyszerűen beírható több utasítás is. Támogatja a nem dokumentált SLL utasítás és az IXL, IXH, IYL, és IYH regiszterek használatát.

  • ; PC AF BC DE HL SP IX IY
  • ;; AF' BC' DE' HL' IM I R

Z80 regiszterek beállítása. A regiszterek módosítására a legegyszerűbb megoldás az R parancs használata, amely kiírja az összes regisztert ; és ;; paranccsal kiegészítve. A programszámláló (PC) változtatásánál figyelni kell arra, hogy az új cím csak egy utasítás végrehajtása után lép érvénybe.

  • > cím érték1 ...

Memória módosítása. A megadott címtől kezdődően a memóriába írja az értékek listáját, amelyeknek a száma tetszőleges lehet. Értékek nélkül is használható, ilyenkor csak kiírja az adott címen található 8 byte-ot. Példa: >b908 ff 00 ff 41

  • ?
  • ? parancs

Az összes monitor parancs listájának, vagy a megadott parancs rövid leírásának a kiíratása.

  • AM
  • AM 0
  • AM 1

Memória címzési mód beállítása. Ennek a G és TR kivételével minden olyan parancsra hatása van, amelynek paraméterként memória címet lehet megadni, vagy memória címet ír ki. Az 1 mód (ez az alapértelmezés) a Z80 16 bites címtartományát jelenti, a 0 pedig 22 bites fizikai címeket (pl. a video RAM 3F0000-3FFFFF). Paraméter nélkül használva átvált a másik módba, és kiírja az új beállítást.

  • AO
  • AO n
  • AO +n
  • AO -n

Assembler és disassembler címeltolás beállítása, ha nincs érték megadva, az visszaállítja az alapértelmezést (azaz nincs eltolás). A parancs használatakor az utasítás kezdőcíméhez hozzáadódik az n előjeles érték (pl. AO +100 után az A 2000 LD A, 1 parancs valójában 2100h címre fordítja az utasítást). D (disassemble) parancsnál pedig hasonló eltolás történik ellentétes irányban, de paraméterként a tényleges memória címet kell megadni (tehát az előbbi példa utasítást a D 2100 2100 parancs írja ki, a disassembly listában 2000h címmel).

  • C cím1 cím2 cím3

Memóriaterületek összehasonlítása. A cím1 és cím2 közötti byte-okat (a cím2-n még elvégzi a műveletet) hasonlítja össze a cím3 kezdőcímű és azonos méretű területtel. Kiírja azokat a címeket (az első címtartományban), amelyeknél eltérést talál. Ha nagyon sok az eltérés, akkor a megjelenített címek számát 64-re korlátozza, és automatikusan kiír egy újabb C parancsot, amellyel folytatható az összehasonlítás.

  • D cím
  • D cím1 cím2
  • D cím1 cím2 cím3
  • D "filenév" cím
  • D "filenév" cím1 cím2
  • D "filenév" cím1 cím2 cím3

Z80 utasítások listázása (disassemble). Ha csak egy cím van megadva, akkor az ott kezdődő, legalább 21 byte méretű területet írja ki. Ha van cím2 is, akkor a listázás ezen a címen fejeződik be (az itt található byte-ot még biztosan tartalmazza). A harmadik címmel a disassembler címeltolást lehet beállítani (lásd AO parancs) cím3-cím1-re, azaz a parancs az utasításokat úgy írja ki, mintha cím3-nál kezdődnének. A módosított címeltolás megmarad a parancs után is, de az assembler címeltolását nem változtatja meg.
Lehetőség van file-ba listázásra is, az idézőjelek között megadható file név használatával. Ha a név üres, akkor egy file választó ablak jelenik meg, egyébként a file megnyitása az emulált gépen használható file I/O bővítéssel azonos módon történik, a Set working directory (Alt+F) segítségével beállítható könyvtárban.
A D parancs kimenetének a formátuma megegyezik az A paranccsal (amely figyelmen kívül hagyja az utasításbyte-ok listáját), így lehetőség van a kód egyszerű módosítására.

  • F cím1 cím2 érték1 ...

A cím1 és cím2 közötti memóriaterület feltöltése (cím2-re még ír). Ha több érték van megadva, akkor tetszőleges hosszúságú ismétlődő byte-sorozattal végezhető a feltöltés; ha a memóriaterület mérete nem egész számú többszöröse a byte-sorozatnak, akkor nem ír több byte-ot, hanem az utolsó sorozat végét levágja (pl. az F C000 C004 55 AA eredménye a C000h-C004h területen 55h AAh 55h AAh 55h).

  • G
  • G cím

Emuláció folytatása, vagy a megadott címre ugrás. Az utóbbi esetben figyelni kell arra, hogy az eredeti programszámlálónál egy Z80 utasítás végrehajtása még biztosan befejeződik.

  • H cím1 cím2 ...

Keresés a cím1 és cím2 közötti memóriaterületen (cím2-nél még keres). A keresendő byte-ok listája tartalmazhat egyszerű byte értéket, * karaktert (amely egy tetszőleges byte-ot jelent), 16 bites maszk*256+érték formátumú byte-ot (ez csak a maszkban megadott biteket teszteli, tehát pl. a 0100 tetszőleges páros byte-ot talál meg, az F090 pedig a 90h és 9Fh közötti értékeket), és idézőjelek közötti szöveget (ez a szöveg karaktereinek ASCII kódjait keresi, 7Fh maszk használatával). Kiírja azoknak a címeknek a listáját, ahol a keresendő byte-sorozatot megtalálja; ha 64-nél többet talál, akkor csak 64-et ír ki, és egy újabb H utasítást, amellyel folytatható a keresés.
Példák:
H 0 FF F3 - DI utasítás (F3h) keresése a 0000h-00FFh területen
H C000 FFFF 3E * 18 - LD A, n (3Eh) és JR (18h) utasításból álló kódrészlet keresése
H C000 FFFF 3E 8080 18 - ugyanez, de csak a 80h-nál nagyobb LD A, n értékeket találja meg
H 0 FFFF "IS-BASIC" - az IS-BASIC szöveg keresése (a byte-ok felső bitjét figyelmen kívül hagyja)

  • I

Az aktuális címzési mód és assembler/disassembler címeltolás (lásd AM és AO utasítások), és memória lapozás (B0h-B3h I/O portok) kiíratása.

  • IO cím
  • IO cím1 cím2

I/O portok listázása. Csak írható port esetén általában az utolsónak írt értéket jeleníti meg, amely csak a debugger számára látható, az emulált gépen futó programoknak viszont nem. A kimement formátuma az O paranccsal azonos, így lehetőség van az értékek módosítására is (ez azonban az I/O portok működése miatt nem mindig használható a gyakorlatban).

  • L "filenév" ascii cím
  • L "filenév" ascii cím1 cím2

File betöltése a memóriába. A file név megadása a D parancsnál leírtak szerint történik. Ha az ascii értéke 0, akkor a file bináris formátumú, ha 1, akkor pedig ASCII (hexdump), az M parancsnak, illetve az ASCII módú S parancsnak megfelelően. Ha csak egy cím van, akkor az egész file-t betölti attól kezdődően (a cím túlcsordulása esetén 0000h címen folytatva), egyébként a betöltés megáll a cím2 elérésekor (erre a címre még ír).

  • M cím
  • M cím1 cím2

Memória listázása (hexdump). Mivel a lista formátuma megegyezik a > paranccsal, a memória egyszerűen módosítható is.

  • O kezdőcím érték1 ...

I/O port(ok) módosítása.

  • R

Z80 regiszterek kiíratása a ; és ;; parancsoknak megfelelő formátumban.

  • S "filenév" ascii cím1 cím2

Memóriaterület mentése file-ba (a paraméterek részletes leírása az L és D parancsoknál olvasható).

  • SR cím1 cím2 keresendő byte-ok..., csere byte-ok...

Byte-sorozat keresése és cseréje a megadott területen. A formátum azonos a H parancsnál leírttal, de a csere byte-oknál a * azt jelenti, hogy a byte változatlan marad, a maszk használata pedig azt, hogy csak a maszkban megadott bitek változnak (mivel szövegnél a maszk 7Fh, figyelni kell arra, hogy szövegre történő cserénél a felülírt byte-ok felső bitje nem változik).

  • T cím1 cím2 cím3

A cím1 és cím2 közötti memóriaterület másolása cím3 kezdőcímre (cím2-t még másolja). A memóriaterületek átfedhetik egymást.

  • TR filenév
  • TR filenév utasításszám
  • TR "filenév" utasításszám kezdőcím
  • TR "filenév" utasításszám kezdőcím formátum_maszk

A végrehajtott Z80 utasítások kiírása napló file-ba (trace). A művelet a megadott utasításszám elérésekor (az alapértelmezés 10000h), vagy a debugger ablak újabb megnyitásakor fejeződik be, attól függően, hogy ezek közül melyik történik elsőnek. Ha van kezdőcím, akkor arra a G paranccsal azonos módon történik ugrás (egy Z80 utasítás még lefut az aktuális programszámlálónál). A formátum maszk egy bináris érték, amelynek a bitjei a következők kiírását engedélyezik vagy tiltják (az alapértelmezés 03h, azaz szegmensszám és utasítás; a programszámláló értékét mindig kiírja):
0. bit: Z80 utasítás
1. bit: szegmensszám
2. bit: SP regiszter
3. bit: HL regiszter
4. bit: DE regiszter
5. bit: BC regiszter
6. bit: AF regiszter
7. bit: video pozíció (X, Y)
A video pozíció formátuma változhat az emulált géptől függően. Enterprise esetén az X (vízszintes pozíció) 0 és 56 közötti decimális érték, az Y pedig az aktuális LPB kezdőcíme * 16 + sorszámláló, hexadecimális formátumban (a sorszámláló az LPB első byte-jában megadott értéktől számol felfelé, és 256 elérésekor lép a következő LPB-re). A formátum maszk használatakor a kezdőcím elhagyható a helyére * karaktert írva.

  • V "filenév" ascii cím
  • V "filenév" ascii cím1 cím2

Memóriaterület összehasonlítása file-al. A paraméterek azonosak az L parancsnál használtakkal. Kiírja az eltérő byte-ok számát.

  • X

Azonos a Continue gomb használatával, de töréspont elérésekor a monitor ablakban kiírja a Z80 regisztereket és az aktuális utasítást.

  • Y

A Step over gombnak felel meg, de az X-hez hasonlóan a monitor ablakba tér vissza.

  • Z

A Step gomb funkciója az előbbi két parancshoz hasonló módon a monitorba visszatérve.

Töréspontok

A jobb felső ablakban töréspontokat (breakpoint/watchpoint) lehet megadni (bizonyos memória vagy I/O címek elérésekor megjelenik a debugger ablak). Ha pl. db7a cím írására szeretnénk töréspontot beállítani, db7aw-t kell írnunk ide. Tetszőleges számú töréspont definíció megadására van lehetőség, amelyeket szóköz, Tab, vagy új sor karakterek választhatnak el. Itt csak hexadecimális címek használhatók, a következő formátumokban:

  • NN: I/O cím (CPC-nél ez a felső 8 bit)
  • NN-NN: I/O cím tartomány (az utolsót még figyeli)
  • NNNN: Z80 memória cím
  • NNNN-NNNN: Z80 memória cím tartomány
  • NN:NNNN: fizikai cím (szegmens:offszet, az utóbbinál csak az alsó 14 bitet veszi figyelembe)
  • NN:NNNN-NNNN: fizikai cím tartomány (nem léphet át szegmenshatárt)

A töréspont definíciók kiegészíthetők az alábbi karakterekkel, amelyeket a cím után kell írni szóközök nélkül (pl. 1234x):

  • r: olvasás figyelése
  • w: írás figyelése
  • x: végrehajtás figyelése (csak memória címeknél használható); ha az előbbi háromból egy sincs megadva, akkor az alapértelmezés minden művelet figyelése (rwx, illetve rw I/O portnál)
  • pN: prioritás beállítása (N 0 és 3 közötti szám lehet); ha a 0 és 4 között állítható Priority threshold nagyobb a megadott értéknél, akkor a töréspont nem aktív - ez töréspontok csoportjainak gyors engedélyezésére és tiltására használható. Az alapértelmezés p2.
  • i: csak memória címeknél használható, és nem kombinálható az előbbiekkel; ha a Z80 programszámláló ilyen címre mutat, akkor az emulátor figyelmen kívül hagyja a töréspontokat, és a Step művelet is átlépi az utasítást a debugger ablak megjelenítése nélkül

Az Apply gomb beállítja a szerkesztőben található töréspont listát. Ez automatikusan megtörténik minden változtatás után, de a Lua script módosíthatja a töréspontokat (ez nem jelenik meg a szerkesztőben), ilyenkor szükség lehet az Apply használatára a script futása után.

Lua szerkesztő

Az alsó ablakban Lua scriptet lehet írni, amelyről a README file-ban és a Lua nyelv dokumentációjában lehet részletesebb információt találni. A szerkesztőben használhatók a Ctrl+C (Copy), Ctr+X (Cut), Ctrl+V (Paste), és Ctrl+Z (Undo) billentyűk, illetve az Insert a beszúrás/felülírás mód váltására (ezek valójában a többi szerkesztő ablakban is működnek).

  • Load from file, Save to file: Lua script betöltése és mentése; a formátum egyszerű szöveges (.txt) file, nagyobb scripteket érdemes külső szövegszerkesztővel szerkeszteni
  • Insert callback: üres breakPointCallback() függvény beszúrása
  • Run: a script futtatása; ha tartalmaz breakPointCallback() függvényt, akkor az minden töréspontnál és Step műveletnél lefut a script leállításáig (Stop) vagy hibáig. Ha ez a függvény false értéket ad vissza, akkor a debugger ablak nem jelenik meg. A script globális változói nem vesznek el a futtatás és a breakPointCallback() hívásai között. Az emulátor megvárja a script futásának a befejeződését, ezért végtelen ciklus a scriptben lefagyást eredményez.
  • Stop: script leállítása; csak akkor van hatása, ha a script aktív és tartalmaz breakPointCallback() függvényt


A debuggerből az ESC megnyomásával vagy a lenti gombokkal térhetünk vissza az emulátorba:

  • Continue: az emuláció folytatása (a debugger ablak csak az újabb megnyitásakor vagy töréspont elérésekor jelenik meg újra)
  • Step: egy Z80 utasítás végrehajtása (a töréspontok ilyenkor nem működnek)
  • Step over: ugyanaz, mint a Step, kivéve a CALL, RST/EXOS, illetve DJNZ és feltételes JP/JR utasításokat, amelyeknél a Step műveletet addig ismétli, amíg a Z80 programszámláló értéke nem lesz azonos a következő utasítás címével; feltételes RET-nél jelenleg nem működik
  • Step into: hasonló a Step over-hez, de a Step műveletet az ugrás céljának az eléréséig ismétli
  • Step to: Step a felhasználó által megadott cím eléréséig
  • Return: addig ismétlődik a Step művelet, amíg a programszámláló a Return gomb megnyomásakor a veremben található 16 bites cím lesz

ROM fájlok használata

A ROM fájlokat a Machine/Configure/Memory lapon tudjuk egyes szegmensekhez csatlakoztatni ill. leválasztani. Az EXOS-t mindig a 0-ás szegmenstől kezdődően, a BASIC-et általában a 4-es, az epfileio.rom-ot a 10-es, az EXDOS-t pedig 20-as szegmensen tudjuk használni. Egyéb bővítő ROM-okat (pl. ZozoTools) a 10h, 20h, vagy 30h szegmensre célszerű tenni, ahol éppen van szabad hely.

De a legegyszerűbb az emulátor telepítője által készített konfigurációs file-okat betölteni (File/Configuration/Load from ASCII file, vagy Alt+Q), azok biztosan működnek.