Ignore:
Timestamp:
Oct 7, 2010, 4:30:49 PM (9 years ago)
Author:
mulligan
Message:

Fixed bug with JNB not jumping correctly.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Deliverables/D4.1/ASMInterpret.ml

    r162 r163  
    871871            let rem = addr mod 8 in
    872872              get_bit (get_sfr status (vect_of_int ((div * 8) + 128) `Eight)) rem)
    873     in (match x with `BIT _ -> res | _ -> not res)
     873    in (match x with `NBIT _ -> not res | _ -> res)
    874874  | `C -> get_cy_flag status
    875875
     
    12751275          (match b1,b2 with
    12761276            true,true ->
    1277               (* 13 bit mode *)
     1277              (* Archaic 13 bit mode. *)
    12781278              if b then
    12791279                let res,_,_,_ = add8_with_c status.tl0 (vect_of_int ticks `Eight) false in
     
    12921292                status
    12931293          | false,false ->
    1294               (* split timer mode *)
     1294              (* 8 bit split timer mode. *)
    12951295              let status =
    12961296                (if b then
     
    13141314                status
    13151315          | false,true ->
    1316              (* 16 bit timer mode *)
     1316             (* 16 bit timer mode. *)
    13171317             if b then
    13181318                let res,_,ov,_ = add16_with_c (mk_word status.th0 status.tl0) (vect_of_int ticks `Sixteen) false in
     
    13271327                status
    13281328          | true,false ->
    1329               (* 8 bit timer mode *)
     1329              (* 8 bit single timer mode. *)
    13301330              if b then
    13311331                let res,_,ov,_ = add8_with_c status.tl0 (vect_of_int ticks `Eight) false in
     
    13371337              else
    13381338                status) in
    1339           (* timer 1 now *)
     1339          (* Timer 1 follows. *)
    13401340          (match b3,b4 with
    13411341            true,true ->
    1342               (* 13 bit mode *)
     1342              (* Archaic 13 bit mode. *)
    13431343              if b then
    13441344                let res,_,_,_ = add8_with_c status.tl1 (vect_of_int ticks `Eight) false in
     
    13571357                status
    13581358          | false,false ->
    1359               (* split timer mode *)
     1359              (* 8 bit split timer mode. *)
    13601360              let status =
    13611361                (if b then
     
    13791379                status
    13801380          | false,true ->
    1381              (* 16 bit timer mode *)
     1381             (* 16 bit timer mode. *)
    13821382             if b then
    13831383                let res,_,ov,_ = add16_with_c (mk_word status.th0 status.tl1) (vect_of_int ticks `Sixteen) false in
     
    13921392                status
    13931393          | true,false ->
    1394               (* 8 bit timer mode *)
     1394              (* 8 bit single timer mode. *)
    13951395              if b then
    13961396                let res,_,ov,_ = add8_with_c status.tl1 (vect_of_int ticks `Eight) false in
Note: See TracChangeset for help on using the changeset viewer.