Itt a forrás a ROM rutinokat használó CPC programok átírására CPCemu segítségével:
A következő lépéseket hajtja végre:
-Key rate, bias, keret (zöld) beállítása
-Memória ellenőrzés (128k), soft reset beállítása
-2 videólap lefoglalása, egyik LPT-nek, másik Videó memóriának, videó memória törlése
-2 LPT felépítése (CPC 50Hz-enként vált két paletta között, ezek a legtöbb esetben megegyeznek), CPC videó címek eltárolása az LPB-kben, és LPT Nick címének kiszámítása, új LPT aktiválása
-4 memóriaszegmens lefoglalása (OS ROM, RAM0, RAM1, RAM2)
-OS ROM betöltése a ROM-nak lefoglalt memória szegmensbe (4000h-val eltolva)
-számunkra fontos EXOS terület elmentése az OS ROM területre (0030h-005fh-->2b40h-2b6fh), lefoglalt memóriaszegmensek, és egyéb fontos értékek eltárolása az OS ROM megfelelő területein, OS ROM rutinok törlése: Casette init hívás, képernyő inicializálás, és gyártó kiírását kiíró hívás törlése, képernyő törlés kiiktatása, paletta inicializálás kiktatása
-Traffic.prg betöltése 4000h-val eltolva, majd a szöveget tartalmazó kép betöltése
-dave regiszterek 0-ázása,státsusz sor kikapcsolása,6 megszakítási hely elhelyezése az LPT-kben (300Hz-es megszakítás generálás)
-OS ROM inicializáló rész átmásolása egy OS ROM init által érintetlen helyre, majd ugrás oda, szükséges regiszter értékek megadása, ROM init indítása, OS ROM képernyőtörlésének, és palettaírásának visszaállítása, keret beállítás, BC' regiszter beállítás (ezt használja a CPC lapozásra, és videómód beállításra)
-ugrás a játék kezdetére
Program átírásához a következőket kell módosítani:
border equ 02h ;keret beállítása
bias equ 1bh*8 ;bias beállítása
start_prg equ 7a00h ;program kezdési címe
loader_screen equ 0 ;0 ha nincs betöltőkép, 1 ha van
;loader_screen_name equ screen ;betöltőkép neve, a forrás végén módosítandó
loader_screen_address equ 0c000h ;betöltőkép töltési címe
loader_screen_length equ 4000h ;betöltőkép hossza
;prg_file_name equ prg ;program neve, a forrás végén módosítandó
prg_file_address equ 0a00h ;program töltési címe
prg_file_length equ 7d00h ;program hossza
loadend_screen equ 1 ;0 ha nincs vége kép, 1 ha van
;loadend_screen_name equ scrend ;program indítása előtti kép neve
loadend_screen_address equ 0c000h ;betöltési címe
loadend_screen_length equ 4000h ;fájl hossza