Itt egy rövid leírás az emulátor átiratokhoz való használatához, remélem semmit nem hagyok ki.
Az OS ROM betöltése után el kell tárolni a használt RAM szegmenseket, a képernyõ Nick címét a ROM megfelelõ helyein ( 1.).
2 200+SYNC soros LPT létrehozása, mindkettõnek ugyanazon a 4K-s részen, és ugyanazon a memóriaszegmensen belül kell lennie (pl ha LPT1 2000h-n van, akkor LPT2 2da0h-n), mivel az emu 2 LPT-t használ a villogás emulálásához (CPC is két palettát használ), és csak a 82h portot használja a váltáshoz ( 2.), ha a használandó LPT címei eltérnek az 0000h, és 0DA0h, akkor a ( 7.) pontban leírtakat kell változtatni.
Az LPT-ben 6 olyan LPB-nek kell lennie egymástól egyforma távolságban, ami videó megszakítást generál, a CPC 300 Hz-es megszakítását így sikerült emulálni.
Az átírt program futtatása elõtt szükséges az OS ROM-ot elindítani ( 3.), hogy a szükséges inicializálást elvégezze, a ROM meghívása elõtt a megfelelõ RAM szegmenseket be kell lapozni ( 4.), és két szubrutinhívást törölni és
elhelyezni azt a JP utasítást, ami meghívja az átírt programot.( 5.).
Ha az átírt program nem 320x200-as képernyõt használ, akkor a ( 6.) pontban leírt cím módosítandó.
Ha szükség van egy kis szabad területre, akkor az OS ROM 28C4h-2C01h területe felhasználható, ez az eredeti magnókezelõ érintetlenül hagyott része.
( 1.) OS ROM betöltése után:
(ezek az értékek 1000h-ra betöltött OS ROM-ra érvényesek)
[asm] ld hl,30h ;EXOS 30h-60h 2B30h-ra másolása
ld de,3b30h
ld b,h
ld c,l
ldir
ld (1578h),a ;OS664 ROM
ld (1001h),a
ld (1626h),a
ld (15a2h),a ;BASIC ROM (elhagyható, ha a program nem használ Basic-et)
ld (159eh),a ;CPC RAM0
ld (358ch),a
ld (1596h),a ;CPC RAM1
ld (17cbh),a
ld (3590h),a
ld (359ch),a
ld (3594h),a ;CPC RAM2
ld (35a0h),a
ld (15a8h),a ;CPC RAM3, videó szegmens
ld (15cbh),a
ld (35a4h),a
ld (35ceh),a
ld (3766h),a
ld (3755h),a ;LPT szegmens
ld (17b6h),a
ld (15b7h),a
ld (384bh),hl ;Nick-nek megadott videócím
ld (3858h),hl ;C000h-a Nicknek megadott videócím[/asm]
( 2.) LPT váltás:
0784h 3E00 ld a,00h
0786h D383 out (82h),a
0788h C9 ret
0789h 3EDA ld a,0dah
078Bh D383 out (82h),a
078Dh C9 ret
( 3.) Indítás: JP 0000h
( 4.) Indításhoz szükséges szegmenskiosztás:
page0 OS ROM
page1 CPC RAM0
page2 CPC RAM2
page3 CPC RAM3
( 5.) Az OS ROM következõ címeire 00h elhelyezése:
0647h CDBC24 CALL 24BCh - Cas inicializálás
064Fh CD1E00 CALL 001Eh - Képernyõ init, gyártó,géptípus kiírása
0654h C37700 JP 0077h -ide lehet tenni a program indítási címét
104Eh-105Eh 1. paletta (inicializáláskor innen tölti fel a palettát)
105fh-106Fh 2. paletta (inicializáláskor innen tölti fel a palettát)
( 6.) ha a képernyõ mérete eltér a 320x200-tól:
284EH 0150C8 LD BC,0C850H - C8h 200 sor
- 50h 80 byte = 40 karakter/sor
(ez a rész csak a képernyó scrollozásával foglalkozik)
2770h 06C8 LD B,0C8h - C8h 200 sor
( 7.) Az emulátorban használttól eltérõ LPT címek esetén:
2758h 1118C0 LD DE,0C018h - 1. LPT
275Fh 11B8CD LD DE,0CDB8h - 2. LPT
(Page3-ra lett belapozva az LPT szegmens, a 18h-s eltérés azért van, mert az elsõ 10h byte a Státusz soré, ezért cseréli a program 18h-tól a színbyte-okat.)
(ez a rész csak a paletta módosításával foglalkozik +2770h)
[/color]
Ha valamit nem írtam le érthetõen, vagy kihagytam valamit, kérdezzetek nyugodtan.