package Ġcom . will end less . nes Ċ Ċ import Ġcom . will end less . nes . emulator . N ES Bus Ċ import Ġcom . will end less . nes . emulator . cpu . CPU Ċ import Ġcom . will end less . nes . emulator . cpu . Flag Ċ import Ġcom . will end less . nes . emulator . util . N ES Exception Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Assert .* Ċ import Ġorg . junit . Test Ċ import Ġjava . io . Print Stream Ċ Ċ @ Experimental Std lib Api Ċ @ Experimental Unsigned Types Ċ class ĠCPU Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcpu Ġ= ĠCPU ĊĊĠĠĠ Ġ@ Before Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġcpu . switch Bus ( Raw Bus ) ĊĠĠĠĠĠĠĠ Ġcpu . bus . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġcpu . switch Bus ( cpu . bus ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload And Run ( program : ĠU ByteArray , Ġoffset : ĠInt Ġ= Ġ 0 x 5 0 0 , Ġos : ĠPrint Stream ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ ĠCPU . load ( program , Ġoffset ) ĊĠĠĠĠĠĠĠ ĠCPU . reset ( offset . to U Short ()) ĊĠĠĠĠĠĠĠ ĠCPU . run ( os Ġ= Ġos ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ lda _ immediate _ load _ data () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 9 u , Ġ 0 x 0 5 u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 5 . to U Byte (), Ġcpu . a ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( cpu . status . getStatus ( Flag . ZERO )) ĊĠĠĠĠĠĠĠ ĠassertFalse ( cpu . status . getStatus ( Flag . NEGATIVE )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ lda _ zero _ flag () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 9 u , Ġ 0 x 0 0 u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( cpu . status . getStatus ( Flag . ZERO )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ lda _ zero _ page () Ġ{ ĊĠĠĠĠĠĠĠ Ġcpu . bus . write U Byte ( 0 x 0 0 u , Ġ 0 x 0 1 u ) ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 5 u , Ġ 0 x 0 0 u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 . to U Byte (), Ġcpu . a ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ lda _ zero _ page _ x () Ġ{ ĊĠĠĠĠĠĠĠ Ġcpu . bus . write U Byte ( 0 x 0 1 u , Ġ 0 x 0 1 u ) ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 2 u , Ġ 0 x 0 1 u , Ġ 0 xb 5 u , Ġ 0 x 0 0 u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 . to U Byte (), Ġcpu . a ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ lda _ zero _ page _ x _ overflow () Ġ{ ĊĠĠĠĠĠĠĠ Ġcpu . bus . write U Byte ( 0 x 0 0 u , Ġ 0 x 0 2 u ) ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 2 u , Ġ 0 xff u , Ġ 0 xb 5 u , Ġ 0 x 0 1 u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 . to U Byte (), Ġcpu . a ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ lda _ absolute () Ġ{ ĊĠĠĠĠĠĠĠ Ġcpu . bus . write U Short ( 0 x 0 0 u , Ġ 0 x 0 0 0 8 u ) ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xad u , Ġ 0 x 0 0 u , Ġ 0 x 0 0 u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 8 . to U Byte (), Ġcpu . a ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ lda _ absolute _ x () Ġ{ ĊĠĠĠĠĠĠĠ Ġcpu . bus . write U Short ( 0 x 1 0 u , Ġ 0 x 0 0 0 9 u ) ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 2 u , Ġ 0 x 1 0 u , Ġ 0 xb du , Ġ 0 x 0 0 u , Ġ 0 x 0 0 u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 9 . to U Byte (), Ġcpu . a ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ lda _ absolute _ y () Ġ{ ĊĠĠĠĠĠĠĠ Ġcpu . bus . write U Short ( 0 x 1 0 u , Ġ 0 x 0 0 0 9 u ) ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 0 u , Ġ 0 x 1 0 u , Ġ 0 xb 9 u , Ġ 0 x 0 0 u , Ġ 0 x 0 0 u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 9 . to U Byte (), Ġcpu . a ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ lda _ indirect _ x () Ġ{ ĊĠĠĠĠĠĠĠ Ġcpu . bus . write U Short ( 0 x 0 0 u , Ġ 0 x 0 0 1 0 u ) ĊĠĠĠĠĠĠĠ Ġcpu . bus . write U Short ( 0 x 1 0 u , Ġ 0 x 0 0 1 0 u ) ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 2 u , Ġ 0 x 0 1 u , Ġ 0 xa 1 u , Ġ 0 xff u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 1 0 . to U Byte (), Ġcpu . a ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ lda _ indirect _ y () Ġ{ ĊĠĠĠĠĠĠĠ Ġcpu . bus . write U Short ( 0 xB Bu , Ġ 0 x 1 1 2 2 u ) ĊĠĠĠĠĠĠĠ Ġcpu . bus . write U Short ( 0 x 1 1 2 4 u , Ġ 0 x 0 0 AA u ) ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 0 u , Ġ 0 x 0 2 u , Ġ 0 xb 1 u , Ġ 0 xb bu , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xaa . to U Byte (), Ġcpu . a ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ sta _ zero _ page () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 9 u , Ġ 0 x 0 2 u , Ġ 0 x 8 5 u , Ġ 0 x 0 1 u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 2 . to U Byte (), Ġcpu . bus . read U Byte ( 0 x 0 1 u )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ st x _ zero _ page () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 2 u , Ġ 0 x 0 2 u , Ġ 0 x 8 6 u , Ġ 0 x 0 1 u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 2 . to U Byte (), Ġcpu . bus . read U Byte ( 0 x 0 1 u )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ sty _ zero _ page () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 0 u , Ġ 0 x 0 2 u , Ġ 0 x 8 4 u , Ġ 0 x 0 1 u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 2 . to U Byte (), Ġcpu . bus . read U Byte ( 0 x 0 1 u )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ tax () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 9 u , Ġ 0 x 0 6 u , Ġ 0 xaa u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 6 . to U Byte (), Ġcpu . a ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 6 . to U Byte (), Ġcpu . x ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ ty a () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 0 u , Ġ 0 x 0 6 u , Ġ 0 x 9 8 u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 6 . to U Byte (), Ġcpu . y ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 6 . to U Byte (), Ġcpu . a ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ ty a _ zero () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 0 u , Ġ 0 x 0 0 u , Ġ 0 x 9 8 u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . to U Byte (), Ġcpu . y ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 . to U Byte (), Ġcpu . a ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( cpu . status . getStatus ( Flag . ZERO )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ ty a _ neg () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 0 u , Ġ 0 xff u , Ġ 0 x 9 8 u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xff . to U Byte (), Ġcpu . y ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xff . to U Byte (), Ġcpu . a ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( cpu . status . getStatus ( Flag . NEGATIVE )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ pha _ pl a () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 9 u , Ġ 0 xff u , Ġ 0 x 4 8 u , Ġ 0 xa 9 u , Ġ 0 x 0 0 u , Ġ 0 x 6 8 u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xff . to U Byte (), Ġcpu . a ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( cpu . status . getStatus ( Flag . NEGATIVE )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ and () Ġ{ ĊĠĠĠĠĠĠĠ Ġcpu . bus . write U Byte ( 0 x 0 0 u , Ġ 0 x 0 1 u ) ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 9 u , Ġ 0 xff u , Ġ 0 x 2 5 u , Ġ 0 x 0 0 u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 . to U Byte (), Ġcpu . a ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( cpu . status . getStatus ( Flag . NEGATIVE )) ĊĠĠĠĠĠĠĠ ĠassertFalse ( cpu . status . getStatus ( Flag . ZERO )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ ora () Ġ{ ĊĠĠĠĠĠĠĠ Ġcpu . bus . write U Byte ( 0 x 0 0 u , Ġ 0 x 0 1 u ) ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 9 u , Ġ 0 xf 0 u , Ġ 0 x 0 5 u , Ġ 0 x 0 0 u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xf 1 . to U Byte (), Ġcpu . a ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( cpu . status . getStatus ( Flag . NEGATIVE )) ĊĠĠĠĠĠĠĠ ĠassertFalse ( cpu . status . getStatus ( Flag . ZERO )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ eor () Ġ{ ĊĠĠĠĠĠĠĠ Ġcpu . bus . write U Byte ( 0 x 0 0 u , Ġ 0 x 0 1 u ) ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 9 u , Ġ 0 xf 0 u , Ġ 0 x 4 5 u , Ġ 0 x 0 0 u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xf 1 . to U Byte (), Ġcpu . a ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( cpu . status . getStatus ( Flag . NEGATIVE )) ĊĠĠĠĠĠĠĠ ĠassertFalse ( cpu . status . getStatus ( Flag . ZERO )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ inx _ iny () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 9 u , Ġ 0 xc 0 u , Ġ 0 xaa u , Ġ 0 xe 8 u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xc 1 . to U Byte (), Ġcpu . x ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ inx _ overflow () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 2 u , Ġ 0 xff u , Ġ 0 xe 8 u , Ġ 0 xe 8 u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 . to U Byte (), Ġcpu . x ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ adc _ overflow () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 9 u , Ġ 0 x 7 fu , Ġ 0 x 6 9 u , Ġ 0 x 7 fu , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 b 1 1 0 0 _ 0 1 0 0 u . to U Byte (), Ġcpu . status . get ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ s bc _ carry () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 x 3 8 u , Ġ 0 xa 9 u , Ġ 0 x 4 0 u , Ġ 0 xe 9 u , Ġ 0 x 4 0 u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 b 0 0 0 0 _ 0 1 1 1 . to U Byte (), Ġcpu . status . get ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ s bc _ overflow () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 x 3 8 u , Ġ 0 xa 9 u , Ġ 0 x 4 0 u , Ġ 0 xe 9 u , Ġ 0 x 4 1 u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 b 1 0 0 0 _ 0 1 0 0 u . to U Byte (), Ġcpu . status . get ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ s bc _ carry _ overflow () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġ ubyte ArrayOf ( 0 xa 9 u , Ġ 0 x 8 0 u , Ġ 0 xe 9 u , Ġ 0 x 0 0 u , Ġ 0 x 0 0 u ) ĊĠĠĠĠĠĠĠ Ġload And Run ( program , Ġos Ġ= ĠSystem . out ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 b 0 1 0 0 _ 0 1 0 1 u . to U Byte (), Ġcpu . status . get ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ k la us 2 m 5 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfirmware Ġ= Ġjava . io . File (" firmware / 6 5 0 2 _ F ~ 1 . BIN ") ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġfirmware . read Bytes (). to U ByteArray () ĊĊĠĠĠĠĠĠĠ Ġ// Ġhttp :// forum . 6 5 0 2 . org / view topic . php ? f = 8 & t = 5 2 9 8 ĊĠĠĠĠĠĠĠ Ġcpu . bus . populate ( program , Ġ 0 x 0 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġcpu . a Ġ= Ġ 0 u ĊĠĠĠĠĠĠĠ Ġcpu . x Ġ= Ġ 0 u ĊĠĠĠĠĠĠĠ Ġcpu . y Ġ= Ġ 0 u ĊĠĠĠĠĠĠĠ Ġcpu . sp Ġ= Ġ 0 xff u ĊĠĠĠĠĠĠĠ Ġcpu . pc Ġ= Ġ 0 x 0 4 0 0 u ĊĠĠĠĠĠĠĠ Ġcpu . status ( 0 u ) ĊĠĠĠĠĠĠĠ Ġcpu . run ( max Step Ġ= Ġ 1 0 0 0 0 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġwill ĠAL WAYS Ġfail ĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġ` cpu . pc ` Ġto Ġsee Ġif Ġit 's Ġstuck Ġin Ġsome Ġtrap , Ġi . e . Ġinfinite Ġloop ĊĠĠĠĠĠĠĠ ĠassertEquals (" ?", Ġ"% 0 4 x ". format ( cpu . pc . toInt ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest _ rom () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest Rom Ġ= Ġjava . io . File (" src / main / assets / test Rom / nest est . nes ") ĊĠĠĠĠĠĠĠ Ġval Ġfile OutputStream Ġ= ĠPrint Stream ( java . io . File (" src / main / assets / test Rom / nest est . out ")) ĊĠĠĠĠĠĠĠ Ġval Ġprogram Ġ= Ġtest Rom . read Bytes (). to U ByteArray () ĊĠĠĠĠĠĠĠ Ġcpu . switch Bus ( N ES Bus ) ĊĠĠĠĠĠĠĠ Ġcpu . bus . populate ( program , Ġ 0 xc 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġcpu . a Ġ= Ġ 0 u ĊĠĠĠĠĠĠĠ Ġcpu . x Ġ= Ġ 0 u ĊĠĠĠĠĠĠĠ Ġcpu . y Ġ= Ġ 0 u ĊĠĠĠĠĠĠĠ Ġcpu . status ( 0 x 2 4 u ) ĊĠĠĠĠĠĠĠ Ġcpu . sp Ġ= Ġ 0 xf du ĊĠĠĠĠĠĠĠ Ġcpu . pc Ġ= Ġ 0 xc 0 0 0 u ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCPU . run ( os Ġ= ĠSystem . out ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠN ES Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( e . msg ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile OutputStream . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }