import Ġr azor v ine . k sim 6 5 . Cpu 6 5 C 0 2 Ċ import Ġorg . junit . jupiter . api . Test Instance Ċ import Ġkotlin . test .* Ċ Ċ /* Ċ Ċ Unit Ġtest Ġsuite Ġadapted Ġfrom ĠPy 6 5 ĠĠ Ġhttps :// github . com / mn ab ere z / py 6 5 Ċ Ċ Copyright Ġ( c ) Ġ 2 0 0 8 - 2 0 1 8 , ĠM ike ĠN ab ere z ny Ġand Ġcontributors . Ċ All Ġrights Ġreserved . Ċ Ċ Red ist ribution Ġand Ġuse Ġin Ġsource Ġand Ġbinary Ġforms , Ġwith Ġor Ġwithout Ċ modification , Ġare Ġpermitted Ġprovided Ġthat Ġthe Ġfollowing Ġconditions Ġare Ġmet : Ċ Ċ * ĠRedistributions Ġof Ġsource Ġcode Ġmust Ġretain Ġthe Ġabove Ġcopyright Ġnotice , Ġthis ĊĠ Ġlist Ġof Ġconditions Ġand Ġthe Ġfollowing Ġdisclaimer . Ċ Ċ * ĠRedistributions Ġin Ġbinary Ġform Ġmust Ġreproduce Ġthe Ġabove Ġcopyright Ġnotice , ĊĠ Ġthis Ġlist Ġof Ġconditions Ġand Ġthe Ġfollowing Ġdisclaimer Ġin Ġthe Ġdocumentation ĊĠ Ġand / or Ġother Ġmaterials Ġprovided Ġwith Ġthe Ġdistribution . Ċ Ċ * ĠNeither Ġthe Ġname Ġof Ġthe Ġcopyright Ġholder Ġnor Ġthe Ġnames Ġof Ġits ĊĠ Ġcontributors Ġmay Ġbe Ġused Ġto Ġendorse Ġor Ġpromote Ġproducts Ġderived Ġfrom ĊĠ Ġthis Ġsoftware Ġwithout Ġspecific Ġprior Ġwritten Ġpermission . Ċ Ċ THIS ĠSOFTWARE ĠIS ĠPROVIDED ĠBY ĠTHE ĠCOPYRIGHT ĠHOLDERS ĠAND ĠCONTRIBUTORS Ġ" AS ĠIS " Ċ AND ĠANY ĠEXPRESS ĠOR ĠIMPLIED ĠWARRANTIES , ĠINCLUDING , ĠBUT ĠNOT ĠLIMITED ĠTO , ĠTHE Ċ IMPLIED ĠWARRANTIES ĠOF ĠMERCHANTABILITY ĠAND ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠARE Ċ DIS CL AIMED . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠCOPYRIGHT ĠHOLDER ĠOR ĠCONTRIBUTORS ĠBE ĠLIABLE Ċ FOR ĠANY ĠDIRECT , ĠINDIRECT , ĠINCIDENTAL , ĠSPECIAL , ĠEXEMPLARY , ĠOR ĠCONSEQUENTIAL Ċ DA MAGES Ġ( INCLUDING , ĠBUT ĠNOT ĠLIMITED ĠTO , ĠPROCUREMENT ĠOF ĠSUBSTITUTE ĠGOODS ĠOR Ċ SERVICES ; ĠLOSS ĠOF ĠUSE , ĠDATA , ĠOR ĠPROFITS ; ĠOR ĠBUSINESS ĠINTERRUPTION ) ĠHOWEVER Ċ CA USED ĠAND ĠON ĠANY ĠTHEORY ĠOF ĠLIABILITY , ĠWHETHER ĠIN ĠCONTRACT , ĠSTRICT ĠLIABILITY , Ċ OR ĠTORT Ġ( INCLUDING ĠNEGLIGENCE ĠOR ĠOTHERWISE ) ĠARISING ĠIN ĠANY ĠWAY ĠOUT ĠOF ĠTHE ĠUSE Ċ OF ĠTHIS ĠSOFTWARE , ĠEVEN ĠIF ĠADVISED ĠOF ĠTHE ĠPOSSIBILITY ĠOF ĠSUCH ĠDAMAGE . ĊĊ Ġ*/ ĊĊ Ċ @ Test Instance ( Test Instance . Lifecycle . PER _ METHOD ) Ċ class ĠTest 6 5 C 0 2 Ġ: ĠTest Common 6 5 0 2 () Ġ{ ĊĠĠĠ Ġ// Ġ ĠC MOS Ġ 6 5 C 0 2 ĠTests ĊĠĠĠ Ġoverride Ġfun Ġcreate Cpu () Ġ= ĠC pu 6 5 C 0 2 () ĊĊĠĠĠ Ġ// ĠReset ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ reset _ clear s _ decimal _ flag () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠW 6 5 C 0 2 S ĠDat as heet , ĠApr Ġ 1 4 Ġ 2 0 0 9 , ĠTable Ġ 7 - 1 ĠOperation al ĠEn hance ments ĊĠĠĠĠĠĠĠ Ġ// ĠN MOS Ġ 6 5 0 2 Ġdecimal Ġflag Ġ= Ġin determine Ġafter Ġreset , ĠC MOS Ġ 6 5 C 0 2 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġmp u . reg P . D Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġmp u . reset () ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . D ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠADC ĠZero ĠPage , ĠIn direct ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ adc _ bcd _ off _ zp _ ind _ carry _ clear _ in _ accumulator _ zero es () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠADC Ġ($ 0 0 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ AB CD ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 7 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 x CD , Ġ 0 x AB )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x AB CD ] Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . C ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . N ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . Z ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ adc _ bcd _ off _ zp _ ind _ carry _ set _ in _ accumulator _ zero () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġmp u . reg P . C Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠADC Ġ($ 0 0 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ AB CD ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 7 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 x CD , Ġ 0 x AB )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x AB CD ] Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 1 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . N ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . C ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ adc _ bcd _ off _ zp _ ind _ carry _ clear _ in _ no _ carry _ clear _ out () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠADC Ġ($ 0 0 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ AB CD ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 7 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 x CD , Ġ 0 x AB )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x AB CD ] Ġ= Ġ 0 xFE ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xFF , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . N ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . C ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . Z ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ adc _ bcd _ off _ zp _ ind _ carry _ clear _ in _ carry _ set _ out () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 2 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠADC Ġ($ 0 0 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ AB CD ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 7 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 x CD , Ġ 0 x AB )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x AB CD ] Ġ= Ġ 0 xFF ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 1 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . C ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . N ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . Z ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ adc _ bcd _ off _ zp _ ind _ overflow _ cleared _ no _ carry _ 0 1 _ plus _ 0 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . C Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠADC Ġ($ 0 0 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ AB CD ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 7 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 x CD , Ġ 0 x AB )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x AB CD ] Ġ= Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 2 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . V ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ adc _ bcd _ off _ zp _ ind _ overflow _ cleared _ no _ carry _ 0 1 _ plus _ ff () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . C Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠADC Ġ($ 0 0 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ AB CD ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 7 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 x CD , Ġ 0 x AB )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x AB CD ] Ġ= Ġ 0 xFF ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . V ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ adc _ bcd _ off _ zp _ ind _ overflow _ set _ no _ carry _ 7 f _ plus _ 0 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . C Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 7 f ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠADC Ġ($ 0 0 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ AB CD ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 7 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 x CD , Ġ 0 x AB )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x AB CD ] Ġ= Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 8 0 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . V ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ adc _ bcd _ off _ zp _ ind _ overflow _ set _ no _ carry _ 8 0 _ plus _ ff () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . C Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 8 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠADC Ġ($ 0 0 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ AB CD ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 7 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 x CD , Ġ 0 x AB )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x AB CD ] Ġ= Ġ 0 xFF ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 7 f , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . V ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ adc _ bcd _ off _ zp _ ind _ overflow _ set _ on _ 4 0 _ plus _ 4 0 () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 4 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠADC Ġ($ 0 0 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ AB CD ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 7 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 x CD , Ġ 0 x AB )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x AB CD ] Ġ= Ġ 0 x 4 0 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 8 0 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . N ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . V ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . Z ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠAND ĠZero ĠPage , ĠIn direct ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ and _ zp _ ind _ all _ zeros _ setting _ zero _ flag () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 xFF ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠAND Ġ($ 0 0 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ AB CD ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 3 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 x CD , Ġ 0 x AB )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x AB CD ] Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . N ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ and _ zp _ ind _ zeros _ and _ ones _ setting _ negative _ flag () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 xFF ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠAND Ġ($ 0 0 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ AB CD ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 3 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 x CD , Ġ 0 x AB )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x AB CD ] Ġ= Ġ 0 xAA ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xAA , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . N ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . Z ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠBIT Ġ( Absolute , ĠX - Indexed ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ bit _ abs _ x _ copies _ bit _ 7 _ of _ memory _ to _ n _ flag _ when _ 0 () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . N Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġmp u . reg X Ġ= Ġ 0 x 0 2 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠBIT Ġ$ F EE B , X ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 3 C , Ġ 0 xE B , Ġ 0 xFE )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xFE ED ] Ġ= Ġ 0 xFF ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 xFF ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . N ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 3 , Ġmp u . reg PC ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ bit _ abs _ x _ copies _ bit _ 7 _ of _ memory _ to _ n _ flag _ when _ 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . N Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġmp u . reg X Ġ= Ġ 0 x 0 2 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠBIT Ġ$ F EE B , X ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 3 C , Ġ 0 xE B , Ġ 0 xFE )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xFE ED ] Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 xFF ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . N ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 3 , Ġmp u . reg PC ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ bit _ abs _ x _ copies _ bit _ 6 _ of _ memory _ to _ v _ flag _ when _ 0 () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . V Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġmp u . reg X Ġ= Ġ 0 x 0 2 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠBIT Ġ$ F EE B , X ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 3 C , Ġ 0 xE B , Ġ 0 xFE )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xFE ED ] Ġ= Ġ 0 xFF ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 xFF ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . V ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 3 , Ġmp u . reg PC ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ bit _ abs _ x _ copies _ bit _ 6 _ of _ memory _ to _ v _ flag _ when _ 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . V Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġmp u . reg X Ġ= Ġ 0 x 0 2 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠBIT Ġ$ F EE B , X ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 3 C , Ġ 0 xE B , Ġ 0 xFE )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xFE ED ] Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 xFF ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . V ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 3 , Ġmp u . reg PC ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ bit _ abs _ x _ stores _ result _ of _ and _ in _ z _ pre serves _ a _ when _ 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . Z Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġmp u . reg X Ġ= Ġ 0 x 0 2 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠBIT Ġ$ F EE B , X ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 3 C , Ġ 0 xE B , Ġ 0 xFE )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xFE ED ] Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 1 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 , Ġmemory [ 0 xFE ED ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 3 , Ġmp u . reg PC ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ bit _ abs _ x _ stores _ result _ of _ and _ nonzero _ in _ z _ pre serves _ a () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . Z Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġmp u . reg X Ġ= Ġ 0 x 0 2 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠBIT Ġ$ F EE B , X ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 3 C , Ġ 0 xE B , Ġ 0 xFE )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xFE ED ] Ġ= Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . Z ) Ġ// Ġresult Ġof ĠAND Ġis Ġnon - zero ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 1 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 1 , Ġmemory [ 0 xFE ED ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 3 , Ġmp u . reg PC ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ bit _ abs _ x _ stores _ result _ of _ and _ when _ zero _ in _ z _ pre serves _ a () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . Z Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġmp u . reg X Ġ= Ġ 0 x 0 2 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠBIT Ġ$ F EE B , X ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 3 C , Ġ 0 xE B , Ġ 0 xFE )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xFE ED ] Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . Z ) Ġ// Ġresult Ġof ĠAND Ġis Ġzero ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 1 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 , Ġmemory [ 0 xFE ED ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 3 , Ġmp u . reg PC ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠBIT Ġ( Immediate ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ bit _ imm _ does _ not _ a ffect _ n _ and _ z _ flags () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . N Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġmp u . reg P . V Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠBIT Ġ#$ FF ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 8 9 , Ġ 0 xff )) ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . N ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . V ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 0 , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 2 , Ġmp u . reg PC ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ bit _ imm _ stores _ result _ of _ and _ in _ z _ pre serves _ a _ when _ 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . Z Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠBIT Ġ#$ 0 0 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 8 9 , Ġ 0 x 0 0 )) ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 1 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 0 , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 2 , Ġmp u . reg PC ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ bit _ imm _ stores _ result _ of _ and _ when _ nonzero _ in _ z _ pre serves _ a () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . Z Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠBIT Ġ#$ 0 1 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 8 9 , Ġ 0 x 0 1 )) ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . Z ) Ġ// Ġresult Ġof ĠAND Ġis Ġnon - zero ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 1 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 0 , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 2 , Ġmp u . reg PC ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ bit _ imm _ stores _ result _ of _ and _ when _ zero _ in _ z _ pre serves _ a () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . Z Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠBIT Ġ#$ 0 0 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 8 9 , Ġ 0 x 0 0 )) ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . Z ) Ġ// Ġresult Ġof ĠAND Ġis Ġzero ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 1 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 0 , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 2 , Ġmp u . reg PC ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠBIT Ġ( Zero ĠPage , ĠX - Indexed ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ bit _ zp _ x _ copies _ bit _ 7 _ of _ memory _ to _ n _ flag _ when _ 0 () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . N Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠBIT Ġ$ 0 0 1 0 , X ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 3 4 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 1 3 ] Ġ= Ġ 0 xFF ĊĠĠĠĠĠĠĠ Ġmp u . reg X Ġ= Ġ 0 x 0 3 ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 xFF ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . N ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ bit _ zp _ x _ copies _ bit _ 7 _ of _ memory _ to _ n _ flag _ when _ 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . N Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠBIT Ġ$ 0 0 1 0 , X ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 3 4 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 1 3 ] Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . reg X Ġ= Ġ 0 x 0 3 ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 xFF ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . N ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ bit _ zp _ x _ copies _ bit _ 6 _ of _ memory _ to _ v _ flag _ when _ 0 () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . V Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠBIT Ġ$ 0 0 1 0 , X ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 3 4 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 1 3 ] Ġ= Ġ 0 xFF ĊĠĠĠĠĠĠĠ Ġmp u . reg X Ġ= Ġ 0 x 0 3 ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 xFF ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . V ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ bit _ zp _ x _ copies _ bit _ 6 _ of _ memory _ to _ v _ flag _ when _ 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . V Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠBIT Ġ$ 0 0 1 0 , X ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 3 4 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 1 3 ] Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . reg X Ġ= Ġ 0 x 0 3 ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 xFF ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . V ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ bit _ zp _ x _ stores _ result _ of _ and _ in _ z _ pre serves _ a _ when _ 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . Z Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠBIT Ġ$ 0 0 1 0 , X ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 3 4 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 1 3 ] Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . reg X Ġ= Ġ 0 x 0 3 ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 1 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 , Ġmemory [ 0 x 0 0 1 0 Ġ+ Ġmp u . reg X ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ bit _ zp _ x _ stores _ result _ of _ and _ when _ nonzero _ in _ z _ pre serves _ a () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . Z Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠBIT Ġ$ 0 0 1 0 , X ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 3 4 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 1 3 ] Ġ= Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġmp u . reg X Ġ= Ġ 0 x 0 3 ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . Z ) Ġ// Ġresult Ġof ĠAND Ġis Ġnon - zero ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 1 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 1 , Ġmemory [ 0 x 0 0 1 0 Ġ+ Ġmp u . reg X ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ bit _ zp _ x _ stores _ result _ of _ and _ when _ zero _ in _ z _ pre serves _ a () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . Z Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠBIT Ġ$ 0 0 1 0 , X ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 3 4 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 1 3 ] Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . reg X Ġ= Ġ 0 x 0 3 ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . Z ) Ġ// Ġresult Ġof ĠAND Ġis Ġzero ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 1 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 , Ġmemory [ 0 x 0 0 1 0 Ġ+ Ġmp u . reg X ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠB RK ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ brk _ clear s _ decimal _ flag () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . D Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ// Ġ$ C 0 0 0 ĠB RK ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xC 0 0 0 ] Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . reg PC Ġ= Ġ 0 xC 0 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . B ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . D ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠCMP ĠZero ĠPage , ĠIn direct ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ cmp _ z pi _ sets _ z _ flag _ if _ equal () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 4 2 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠAND Ġ($ 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ AB CD ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 xd 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 x CD , Ġ 0 x AB )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x AB CD ] Ġ= Ġ 0 x 4 2 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 4 2 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . N ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ cmp _ z pi _ resets _ z _ flag _ if _ un equal () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 4 3 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠAND Ġ($ 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ AB CD ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 xd 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 x CD , Ġ 0 x AB )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x AB CD ] Ġ= Ġ 0 x 4 2 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 4 3 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . N ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠE OR ĠZero ĠPage , ĠIn direct ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ eor _ zp _ ind _ f lips _ bits _ over _ setting _ z _ flag () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 xFF ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠE OR Ġ($ 0 0 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ AB CD ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 5 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 x CD , Ġ 0 x AB )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x AB CD ] Ġ= Ġ 0 xFF ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xFF , Ġmemory [ 0 x AB CD ]) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . Z ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ eor _ zp _ ind _ f lips _ bits _ over _ setting _ n _ flag () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠE OR Ġ($ 0 0 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ AB CD ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 5 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 x CD , Ġ 0 x AB )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x AB CD ] Ġ= Ġ 0 xFF ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xFF , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xFF , Ġmemory [ 0 x AB CD ]) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . N ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . Z ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠINC ĠAcc umulator ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ inc _ acc _ in crements _ accum () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 0 0 ] Ġ= Ġ 0 x 1 A ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 4 2 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 1 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 4 3 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . N ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ inc _ acc _ in crements _ accum _ roll s _ over _ and _ sets _ zero _ flag () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 0 0 ] Ġ= Ġ 0 x 1 A ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 xFF ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 1 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . N ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ inc _ acc _ sets _ negative _ flag _ when _ increment ing _ above _ 7 F () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 0 0 ] Ġ= Ġ 0 x 1 A ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 7 F ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 1 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 8 0 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . N ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠJMP ĠIn direct ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ jmp _ ind _ does _ not _ have _ page _ wrap _ bug () Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 1 0 FF , ĠlistOf ( 0 x CD , Ġ 0 x AB )) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠJMP Ġ($ 1 0 FF ) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 , ĠlistOf ( 0 x 6 c , Ġ 0 xFF , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x AB CD , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 4 , Ġmp u . total Cycles ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠJMP ĠIn direct ĠAbsolute ĠX - Indexed ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ jmp _ i ax _ jump s _ to _ address () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg X Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠJMP Ġ($ AB CD , X ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ AB CF ĠVector Ġto Ġ$ 1 2 3 4 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 7 C , Ġ 0 x CD , Ġ 0 x AB )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x AB CF , ĠlistOf ( 0 x 3 4 , Ġ 0 x 1 2 )) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 1 2 3 4 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 4 , Ġmp u . total Cycles ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠL DA ĠZero ĠPage , ĠIn direct ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ lda _ zp _ ind _ loads _ a _ sets _ n _ flag () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠL DA Ġ($ 0 0 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ AB CD ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 xB 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 x CD , Ġ 0 x AB )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x AB CD ] Ġ= Ġ 0 x 8 0 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 8 0 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . N ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . Z ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ lda _ zp _ ind _ loads _ a _ sets _ z _ flag () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠL DA Ġ($ 0 0 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ AB CD ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 xB 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 x CD , Ġ 0 x AB )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x AB CD ] Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . N ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠOR A ĠZero ĠPage , ĠIn direct ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ ora _ zp _ ind _ zero es _ or _ zeros _ sets _ z _ flag () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . Z Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . reg Y Ġ= Ġ 0 x 1 2 Ġ Ġ// ĠThese Ġshould Ġnot Ġaffect Ġthe ĠOR A ĊĠĠĠĠĠĠĠ Ġmp u . reg X Ġ= Ġ 0 x 3 4 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠOR A Ġ($ 0 0 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ AB CD ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 1 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 x CD , Ġ 0 x AB )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x AB CD ] Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . Z ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ ora _ zp _ ind _ turn s _ bits _ on _ sets _ n _ flag () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . N Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 3 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠOR A Ġ($ 0 0 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ AB CD ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 1 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 x CD , Ġ 0 x AB )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x AB CD ] Ġ= Ġ 0 x 8 2 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 8 3 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . N ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . Z ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠP HX ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ ph x _ pus hes _ x _ and _ updates _ sp () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg X Ġ= Ġ 0 x AB ĊĠĠĠĠĠĠĠ Ġmp u . reg SP Ġ= Ġ 0 xff ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠP HX ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 0 0 ] Ġ= Ġ 0 x DA ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 1 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x AB , Ġmp u . reg X ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x AB , Ġmemory [ 0 x 0 1 FF ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xFE , Ġmp u . reg SP ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 1 , Ġmp u . total Cycles ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠPHY ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ phy _ pus hes _ y _ and _ updates _ sp () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg Y Ġ= Ġ 0 x AB ĊĠĠĠĠĠĠĠ Ġmp u . reg SP Ġ= Ġ 0 xff ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠPHY ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 0 0 ] Ġ= Ġ 0 x 5 A ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 1 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x AB , Ġmp u . reg Y ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x AB , Ġmemory [ 0 x 0 1 FF ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xFE , Ġmp u . reg SP ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 1 , Ġmp u . total Cycles ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠPL X ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ pl x _ pulls _ top _ byte _ from _ stack _ into _ x _ and _ updates _ sp () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠPL X ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 0 0 ] Ġ= Ġ 0 xFA ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 1 FF ] Ġ= Ġ 0 x AB ĊĠĠĠĠĠĠĠ Ġmp u . reg SP Ġ= Ġ 0 xFE ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 1 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x AB , Ġmp u . reg X ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xFF , Ġmp u . reg SP ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 , Ġmp u . total Cycles ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠP LY ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ ply _ pulls _ top _ byte _ from _ stack _ into _ y _ and _ updates _ sp () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠP LY ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 0 0 ] Ġ= Ġ 0 x 7 A ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 1 FF ] Ġ= Ġ 0 x AB ĊĠĠĠĠĠĠĠ Ġmp u . reg SP Ġ= Ġ 0 xFE ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 1 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x AB , Ġmp u . reg Y ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xFF , Ġmp u . reg SP ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 , Ġmp u . total Cycles ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠR MB 0 ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ r mb 0 _ clear s _ bit _ 0 _ without _ a ffect ing _ other _ bits () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 1 1 1 1 1 1 1 1 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠR MB 0 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 0 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 1 1 1 1 1 1 1 0 ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmemory [ 0 x 0 0 4 3 ]. toInt ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ r mb 0 _ does _ not _ a ffect _ status _ register () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 1 1 1 1 1 1 1 1 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠR MB 0 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 0 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 0 1 1 1 0 1 0 1 ĊĠĠĠĠĠĠĠ Ġmp u . reg P . from Int ( expected ) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmp u . reg P . as Int ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠR MB 1 ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ r mb 1 _ clear s _ bit _ 1 _ without _ a ffect ing _ other _ bits () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 1 1 1 1 1 1 1 1 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠR MB 1 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 1 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 1 1 1 1 1 1 0 1 ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmemory [ 0 x 0 0 4 3 ]. toInt ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ r mb 1 _ does _ not _ a ffect _ status _ register () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 1 1 1 1 1 1 1 1 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠR MB 1 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 1 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 0 1 1 1 0 1 0 1 ĊĠĠĠĠĠĠĠ Ġmp u . reg P . from Int ( expected ) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmp u . reg P . as Int ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠR MB 2 ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ r mb 2 _ clear s _ bit _ 2 _ without _ a ffect ing _ other _ bits () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 1 1 1 1 1 1 1 1 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠR MB 2 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 2 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 1 1 1 1 1 0 1 1 . to Short () ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmemory [ 0 x 0 0 4 3 ]) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ r mb 2 _ does _ not _ a ffect _ status _ register () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 1 1 1 1 1 1 1 1 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠR MB 2 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 2 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 0 1 1 1 0 1 0 1 ĊĠĠĠĠĠĠĠ Ġmp u . reg P . from Int ( expected ) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmp u . reg P . as Int ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠR MB 3 ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ r mb 3 _ clear s _ bit _ 3 _ without _ a ffect ing _ other _ bits () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 1 1 1 1 1 1 1 1 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠR MB 3 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 3 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 1 1 1 1 0 1 1 1 ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmemory [ 0 x 0 0 4 3 ]. toInt ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ r mb 3 _ does _ not _ a ffect _ status _ register () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 1 1 1 1 1 1 1 1 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠR MB 3 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 3 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 0 1 1 1 0 1 0 1 ĊĠĠĠĠĠĠĠ Ġmp u . reg P . from Int ( expected ) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmp u . reg P . as Int ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠR MB 4 ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ r mb 4 _ clear s _ bit _ 4 _ without _ a ffect ing _ other _ bits () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 1 1 1 1 1 1 1 1 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠR MB 4 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 4 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 1 1 1 0 1 1 1 1 ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmemory [ 0 x 0 0 4 3 ]. toInt ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ r mb 4 _ does _ not _ a ffect _ status _ register () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 1 1 1 1 1 1 1 1 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠR MB 4 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 4 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 0 1 1 1 0 1 0 1 ĊĠĠĠĠĠĠĠ Ġmp u . reg P . from Int ( expected ) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmp u . reg P . as Int ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠR MB 5 ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ r mb 5 _ clear s _ bit _ 5 _ without _ a ffect ing _ other _ bits () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 1 1 1 1 1 1 1 1 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠR MB 5 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 5 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 1 1 0 1 1 1 1 1 ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmemory [ 0 x 0 0 4 3 ]. toInt ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ r mb 5 _ does _ not _ a ffect _ status _ register () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 1 1 1 1 1 1 1 1 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠR MB 5 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 5 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 0 1 1 1 0 1 0 1 ĊĠĠĠĠĠĠĠ Ġmp u . reg P . from Int ( expected ) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmp u . reg P . as Int ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠR MB 6 ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ r mb 6 _ clear s _ bit _ 6 _ without _ a ffect ing _ other _ bits () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 1 1 1 1 1 1 1 1 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠR MB 6 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 6 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 1 0 1 1 1 1 1 1 . to Short () ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmemory [ 0 x 0 0 4 3 ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ r mb 6 _ does _ not _ a ffect _ status _ register () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 1 1 1 1 1 1 1 1 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠR MB 6 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 6 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 0 1 1 1 0 1 0 1 ĊĠĠĠĠĠĠĠ Ġmp u . reg P . from Int ( expected ) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmp u . reg P . as Int ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠR MB 7 ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ r mb 7 _ clear s _ bit _ 7 _ without _ a ffect ing _ other _ bits () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 1 1 1 1 1 1 1 1 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠR MB 7 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 7 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 0 1 1 1 1 1 1 1 ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmemory [ 0 x 0 0 4 3 ]. toInt ()) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ r mb 7 _ does _ not _ a ffect _ status _ register () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 1 1 1 1 1 1 1 1 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠR MB 7 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 7 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 0 1 1 1 0 1 0 1 ĊĠĠĠĠĠĠĠ Ġmp u . reg P . from Int ( expected ) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmp u . reg P . as Int ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠST A ĠZero ĠPage , ĠIn direct ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ sta _ zp _ ind _ stores _ a _ leaves _ a _ and _ n _ flag _ un changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġflags Ġ= Ġ 0 xFF Ġand Ġf NEGATIVE . inv () ĊĠĠĠĠĠĠĠ Ġmp u . reg P . from Int ( flags ) ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 xFF ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠST A Ġ($ 0 0 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ FEED ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 9 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 xED , Ġ 0 xFE )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xFE ED ] Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xFF , Ġmemory [ 0 xFE ED ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xFF , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( flags , Ġmp u . reg P . as Int ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ sta _ zp _ ind _ stores _ a _ leaves _ a _ and _ z _ flag _ un changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġflags Ġ= Ġ 0 xFF Ġand Ġf ZERO . inv () ĊĠĠĠĠĠĠĠ Ġmp u . reg P . from Int ( flags ) ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠST A Ġ($ 0 0 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ FEED ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 9 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 xED , Ġ 0 xFE )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xFE ED ] Ġ= Ġ 0 xFF ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 , Ġmemory [ 0 xFE ED ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( flags , Ġmp u . reg P . as Int ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSMB 0 ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ smb 0 _ sets _ bit _ 0 _ without _ a ffect ing _ other _ bits () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠSMB 0 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 8 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 0 0 0 0 0 0 0 1 . to Short () ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmemory [ 0 x 0 0 4 3 ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ smb 0 _ does _ not _ a ffect _ status _ register () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠSMB 0 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 8 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 1 1 1 0 1 1 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . reg P . from Int ( expected ) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmp u . reg P . as Int ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSMB 1 ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ smb 1 _ sets _ bit _ 1 _ without _ a ffect ing _ other _ bits () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠSMB 1 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 9 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 0 0 0 0 0 0 1 0 ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmemory [ 0 x 0 0 4 3 ]. toInt ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ smb 1 _ does _ not _ a ffect _ status _ register () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠSMB 1 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 9 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 1 1 1 0 1 1 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . reg P . from Int ( expected ) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmp u . reg P . as Int ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSMB 2 ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ smb 2 _ sets _ bit _ 2 _ without _ a ffect ing _ other _ bits () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠSMB 2 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 xA 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 0 0 0 0 0 1 0 0 ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmemory [ 0 x 0 0 4 3 ]. toInt ()) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ smb 2 _ does _ not _ a ffect _ status _ register () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠSMB 2 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 xA 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 1 1 1 0 1 1 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . reg P . from Int ( expected ) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmp u . reg P . as Int ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSMB 3 ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ smb 3 _ sets _ bit _ 3 _ without _ a ffect ing _ other _ bits () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠSMB 3 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 xB 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 0 0 0 0 1 0 0 0 ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmemory [ 0 x 0 0 4 3 ]. toInt ()) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ smb 3 _ does _ not _ a ffect _ status _ register () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠSMB 3 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 xB 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 1 1 1 0 1 1 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . reg P . from Int ( expected ) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmp u . reg P . as Int ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSMB 4 ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ smb 4 _ sets _ bit _ 4 _ without _ a ffect ing _ other _ bits () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠSMB 4 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 xC 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmemory [ 0 x 0 0 4 3 ]. toInt ()) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ smb 4 _ does _ not _ a ffect _ status _ register () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠSMB 4 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 xC 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 1 1 1 0 1 1 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . reg P . from Int ( expected ) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmp u . reg P . as Int ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSMB 5 ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ smb 5 _ sets _ bit _ 5 _ without _ a ffect ing _ other _ bits () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠSMB 5 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 xD 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 0 0 1 0 0 0 0 0 ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmemory [ 0 x 0 0 4 3 ]. toInt ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ smb 5 _ does _ not _ a ffect _ status _ register () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠSMB 5 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 xD 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 1 1 1 0 1 1 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . reg P . from Int ( expected ) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmp u . reg P . as Int ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSMB 6 ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ smb 6 _ sets _ bit _ 6 _ without _ a ffect ing _ other _ bits () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠSMB 6 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 xE 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 0 1 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmemory [ 0 x 0 0 4 3 ]. toInt ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ smb 6 _ does _ not _ a ffect _ status _ register () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠSMB 6 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 xE 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 1 1 1 0 1 1 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . reg P . from Int ( expected ) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmp u . reg P . as Int ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSMB 7 ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ smb 7 _ sets _ bit _ 7 _ without _ a ffect ing _ other _ bits () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠSMB 7 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 xF 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmemory [ 0 x 0 0 4 3 ]. toInt ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ smb 7 _ does _ not _ a ffect _ status _ register () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 4 3 ] Ġ= Ġ 0 b 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠSMB 7 Ġ$ 4 3 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 xF 7 , Ġ 0 x 4 3 )) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ 0 b 1 1 1 0 1 1 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . reg P . from Int ( expected ) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġmp u . reg P . as Int ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠS BC ĠZero ĠPage , ĠIn direct ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ s bc _ zp _ ind _ all _ zeros _ and _ no _ borrow _ is _ zero () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . D Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġmp u . reg P . C Ġ= Ġtrue Ġ Ġ// Ġborrow Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠS BC Ġ($ 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ FEED ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 xF 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 xED , Ġ 0 xFE )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xFE ED ] Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . N ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . C ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . Z ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ s bc _ zp _ ind _ down to _ zero _ no _ borrow _ sets _ z _ clear s _ n () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . D Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġmp u . reg P . C Ġ= Ġtrue Ġ Ġ// Ġborrow Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠS BC Ġ($ 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ FEED ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 xF 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 xED , Ġ 0 xFE )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xFE ED ] Ġ= Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . N ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . C ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . Z ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ s bc _ zp _ ind _ down to _ zero _ with _ borrow _ sets _ z _ clear s _ n () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . D Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġmp u . reg P . C Ġ= Ġfalse Ġ Ġ// Ġborrow Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠS BC Ġ($ 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ FEED ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 xF 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 xED , Ġ 0 xFE )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xFE ED ] Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . N ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . C ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . Z ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ s bc _ zp _ ind _ down to _ four _ with _ borrow _ clear s _ z _ n () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . D Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġmp u . reg P . C Ġ= Ġfalse Ġ Ġ// Ġborrow Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 7 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠS BC Ġ($ 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 1 0 ĠVector Ġto Ġ$ FEED ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 xF 2 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 1 0 , ĠlistOf ( 0 xED , Ġ 0 xFE )) ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xFE ED ] Ġ= Ġ 0 x 0 2 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 4 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . N ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . C ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠST Z ĠZero ĠPage ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ st z _ zp _ stores _ zero () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 3 2 ] Ġ= Ġ 0 x 8 8 ĊĠĠĠĠĠĠĠ Ġ// Ġ# 0 0 0 0 ĠST Z Ġ$ 3 2 ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 0 0 ] Ġ= Ġ 0 x 6 4 ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 0 1 ] Ġ= Ġ 0 x 3 2 ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 8 8 , Ġmemory [ 0 x 0 0 3 2 ]) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 , Ġmemory [ 0 x 0 0 3 2 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 1 , Ġmp u . total Cycles ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠST Z ĠZero ĠPage , ĠX - Indexed ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ st z _ zp _ x _ stores _ zero () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 3 2 ] Ġ= Ġ 0 x 8 8 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠST Z Ġ$ 3 2 , X ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 0 0 ] Ġ= Ġ 0 x 7 4 ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 0 1 ] Ġ= Ġ 0 x 3 2 ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 8 8 , Ġmemory [ 0 x 0 0 3 2 ]) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 , Ġmemory [ 0 x 0 0 3 2 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 , Ġmp u . total Cycles ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠST Z ĠAbsolute ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ st z _ abs _ stores _ zero () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xFE ED ] Ġ= Ġ 0 x 8 8 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠST Z Ġ$ FEED ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 9 C , Ġ 0 xED , Ġ 0 xFE )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 8 8 , Ġmemory [ 0 xFE ED ]) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 , Ġmemory [ 0 xFE ED ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 3 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 , Ġmp u . total Cycles ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠST Z ĠAbsolute , ĠX - Indexed ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ st z _ abs _ x _ stores _ zero () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xFE ED ] Ġ= Ġ 0 x 8 8 ĊĠĠĠĠĠĠĠ Ġmp u . reg X Ġ= Ġ 0 x 0 D ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠST Z Ġ$ F EE 0 , X ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 9 E , Ġ 0 xE 0 , Ġ 0 xFE )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 8 8 , Ġmemory [ 0 xFE ED ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 D , Ġmp u . reg X ) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 , Ġmemory [ 0 xFE ED ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 3 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠT SB ĠZero ĠPage ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ ts b _ zp _ ones () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 BB ] Ġ= Ġ 0 xE 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠT SB Ġ$ BD ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 0 4 , Ġ 0 xBB )) ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 7 0 ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xE 0 , Ġmemory [ 0 x 0 0 BB ]) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xF 0 , Ġmemory [ 0 x 0 0 BB ]) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ ts b _ zp _ zeros () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 BB ] Ġ= Ġ 0 x 8 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠT SB Ġ$ BD ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 0 4 , Ġ 0 xBB )) ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 6 0 ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 8 0 , Ġmemory [ 0 x 0 0 BB ]) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xE 0 , Ġmemory [ 0 x 0 0 BB ]) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠT SB ĠAbsolute ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ ts b _ abs _ ones () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xFE ED ] Ġ= Ġ 0 xE 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠT SB Ġ$ FEED ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 0 C , Ġ 0 xED , Ġ 0 xFE )) ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 7 0 ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xE 0 , Ġmemory [ 0 xFE ED ]) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xF 0 , Ġmemory [ 0 xFE ED ]) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 3 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 4 , Ġmp u . total Cycles ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ ts b _ abs _ zeros () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xFE ED ] Ġ= Ġ 0 x 8 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠT SB Ġ$ FEED ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 0 C , Ġ 0 xED , Ġ 0 xFE )) ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 6 0 ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 8 0 , Ġmemory [ 0 xFE ED ]) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xE 0 , Ġmemory [ 0 xFE ED ]) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 3 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 4 , Ġmp u . total Cycles ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTR B ĠZero ĠPage ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ tr b _ zp _ ones () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 BB ] Ġ= Ġ 0 xE 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠTR B Ġ$ BD ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 1 4 , Ġ 0 xBB )) ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 7 0 ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xE 0 , Ġmemory [ 0 x 0 0 BB ]) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 8 0 , Ġmemory [ 0 x 0 0 BB ]) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ tr b _ zp _ zeros () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 BB ] Ġ= Ġ 0 x 8 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠTR B Ġ$ BD ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 1 4 , Ġ 0 xBB )) ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 6 0 ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 8 0 , Ġmemory [ 0 x 0 0 BB ]) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 8 0 , Ġmemory [ 0 x 0 0 BB ]) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 L , Ġmp u . total Cycles ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTR B ĠAbsolute ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ tr b _ abs _ ones () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xFE ED ] Ġ= Ġ 0 xE 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠTR B Ġ$ FEED ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 1 C , Ġ 0 xED , Ġ 0 xFE )) ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 7 0 ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xE 0 , Ġmemory [ 0 xFE ED ]) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 8 0 , Ġmemory [ 0 xFE ED ]) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 3 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 4 , Ġmp u . total Cycles ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ tr b _ abs _ zeros () Ġ{ ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xFE ED ] Ġ= Ġ 0 x 8 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠTR B Ġ$ FEED ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 1 C , Ġ 0 xED , Ġ 0 xFE )) ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 6 0 ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 8 0 , Ġmemory [ 0 xFE ED ]) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 8 0 , Ġmemory [ 0 xFE ED ]) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 3 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 4 , Ġmp u . total Cycles ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ dec _ a _ de creases _ a () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠDEC ĠA ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 0 0 ] Ġ= Ġ 0 x 3 a ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 4 8 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . N ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 4 7 , Ġmp u . reg A ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ dec _ a _ sets _ zero _ flag () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠDEC ĠA ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 0 0 ] Ġ= Ġ 0 x 3 a ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 1 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . N ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 , Ġmp u . reg A ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ dec _ a _ wrap s _ at _ zero () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠDEC ĠA ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 0 0 0 ] Ġ= Ġ 0 x 3 a ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 0 0 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . N ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xFF , Ġmp u . reg A ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ bra _ forward () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠB RA Ġ$ 1 0 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 8 0 , Ġ 0 x 1 0 )) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 1 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 1 , Ġmp u . total Cycles ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ bra _ backward () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 2 4 0 ĠB RA Ġ$ F 0 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 2 0 4 , ĠlistOf ( 0 x 8 0 , Ġ 0 xF 0 )) ĊĠĠĠĠĠĠĠ Ġmp u . reg PC Ġ= Ġ 0 x 0 2 0 4 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 1 F 6 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 1 , Ġmp u . total Cycles ) Ġ Ġ// ĠC ros sed Ġbound ry ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠW AI ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ w ai _ sets _ waiting () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u Ġas ĠC pu 6 5 C 0 2 ĊĠĠĠĠĠĠĠ ĠassertEquals ( Cpu 6 5 C 0 2 . Wait . Normal , Ġmp u . waiting ) ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 2 4 0 ĠW AI ĊĠĠĠĠĠĠĠ Ġmemory [ 0 x 0 2 0 4 ] Ġ= Ġ 0 xcb ĊĠĠĠĠĠĠĠ Ġmp u . reg PC Ġ= Ġ 0 x 0 2 0 4 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( Cpu 6 5 C 0 2 . Wait . Waiting , Ġmp u . waiting ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 2 0 5 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 1 , Ġmp u . total Cycles ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ ĠB BR Ġand ĠB BS ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ b br _ all _ set _ does nt _ branch () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u Ġas ĠC pu 6 5 C 0 2 ĊĠĠĠĠĠĠĠ Ġmp u . reg PC Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xfe ] Ġ= Ġ 0 xff ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 , ĠlistOf ( 0 x 0 f , Ġ 0 xfe , Ġ 0 x 4 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 1 f , Ġ 0 xfe , Ġ 0 x 4 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 2 f , Ġ 0 xfe , Ġ 0 x 4 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 3 f , Ġ 0 xfe , Ġ 0 x 4 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 4 f , Ġ 0 xfe , Ġ 0 x 4 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 5 f , Ġ 0 xfe , Ġ 0 x 4 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 6 f , Ġ 0 xfe , Ġ 0 x 4 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 7 f , Ġ 0 xfe , Ġ 0 x 4 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 xea )) ĊĠĠĠĠĠĠĠ Ġrepeat ( 8 ) Ġ{ Ġmp u . step () Ġ} ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( 0 x 0 0 4 0 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xea , Ġmemory [ mp u . reg PC ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ b br _ branches () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u Ġas ĠC pu 6 5 C 0 2 ĊĠĠĠĠĠĠĠ Ġmp u . reg PC Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xfe ] Ġ= Ġ 0 b 1 0 1 1 1 1 1 1 ĠĠ Ġ// Ġbit Ġ 6 Ġcleared ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 , ĠlistOf ( 0 x 6 f , Ġ 0 xfe , Ġ 0 x 4 0 )) ĠĠ Ġ// ĠB BR 6 Ġ$ fe , Ġ$ 0 0 4 0 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 4 3 , Ġmp u . reg PC ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ bbs _ all _ clear _ does nt _ branch () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u Ġas ĠC pu 6 5 C 0 2 ĊĠĠĠĠĠĠĠ Ġmp u . reg PC Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xfe ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 , ĠlistOf ( 0 x 8 f , Ġ 0 xfe , Ġ 0 x 4 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 9 f , Ġ 0 xfe , Ġ 0 x 4 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 xaf , Ġ 0 xfe , Ġ 0 x 4 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 xbf , Ġ 0 xfe , Ġ 0 x 4 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 xcf , Ġ 0 xfe , Ġ 0 x 4 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 xdf , Ġ 0 xfe , Ġ 0 x 4 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 xef , Ġ 0 xfe , Ġ 0 x 4 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 xff , Ġ 0 xfe , Ġ 0 x 4 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 xea )) ĊĠĠĠĠĠĠĠ Ġrepeat ( 8 ) Ġ{ Ġmp u . step () Ġ} ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( 0 x 0 0 4 0 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 xea , Ġmemory [ mp u . reg PC ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ bbs _ branches () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u Ġas ĠC pu 6 5 C 0 2 ĊĠĠĠĠĠĠĠ Ġmp u . reg PC Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġmemory [ 0 xfe ] Ġ= Ġ 0 b 0 1 0 0 0 0 0 0 ĠĠ Ġ// Ġbit Ġ 6 Ġset ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 , ĠlistOf ( 0 xef , Ġ 0 xfe , Ġ 0 x 4 0 )) ĠĠ Ġ// ĠB BS 6 Ġ$ fe , Ġ$ 0 0 4 0 ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 4 3 , Ġmp u . reg PC ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ s bc _ bcd _ on _ immediate _ 2 0 _ minus _ 0 a _ carry _ unset () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . D Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġmp u . reg P . C Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 2 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠS BC Ġ#$ 0 a ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 xe 9 , Ġ 0 x 0 a )) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 2 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 f , Ġmp u . reg A ) ĠĠĠĠĠĠ Ġ// Ġ 0 x 1 f Ġon Ġ 6 5 0 2 , Ġ 0 x 0 f Ġon Ġ 6 5 c 0 2 ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . C ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . N ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . V ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest _ adc _ bcd _ on _ immediate _ 9 c _ plus _ 9 d () Ġ{ ĊĠĠĠĠĠĠĠ Ġmp u . reg P . D Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġmp u . reg P . C Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġmp u . reg P . N Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġmp u . reg A Ġ= Ġ 0 x 9 c ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 0 ĠADC Ġ#$ 9 d ĊĠĠĠĠĠĠĠ Ġ// Ġ$ 0 0 0 2 ĠADC Ġ#$ 9 d ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 0 , ĠlistOf ( 0 x 6 9 , Ġ 0 x 9 d )) ĊĠĠĠĠĠĠĠ Ġwrite Mem ( memory , Ġ 0 x 0 0 0 2 , ĠlistOf ( 0 x 6 9 , Ġ 0 x 9 d )) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 9 f , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . C ) ĊĠĠĠĠĠĠĠ Ġmp u . step () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 0 0 0 4 , Ġmp u . reg PC ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 x 9 3 , Ġmp u . reg A ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( mp u . reg P . Z ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . C ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . V ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( mp u . reg P . N ) ĠĠ Ġ// ĠFalse Ġon Ġ 6 5 0 2 , Ġ ĠTrue Ġon Ġ 6 5 C 0 2 ĊĠĠĠ Ġ} Ċ } Ċ