Changeset 163


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

Fixed bug with JNB not jumping correctly.

Location:
Deliverables/D4.1
Files:
3 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
  • Deliverables/D4.1/BitVectors.ml

    r162 r163  
     1open Util;;
     2
    13type bit = bool
    24type 'a vect = bit list
     
    3739let from_word11 = from_byte7
    3840
    39 let get_bit index l =
     41let get_bit l index =
    4042  try
    41     List.nth index l
     43    List.nth (List.rev l) index
    4244  with (Failure _ | Invalid_argument _) -> assert false
    4345
  • Deliverables/D4.1/Pretty.mli

    r138 r163  
     1val pp_arg:
     2    [< `A
     3     | `ADDR11 of 'a BitVectors.vect
     4     | `ADDR16 of 'b BitVectors.vect
     5     | `A_DPTR
     6     | `A_PC
     7     | `B
     8     | `BIT of BitVectors.byte
     9     | `C
     10     | `DATA of 'c BitVectors.vect
     11     | `DATA16 of 'd BitVectors.vect
     12     | `DIRECT of BitVectors.byte
     13     | `DPTR
     14     | `EXT_INDIRECT of bool
     15     | `EXT_IND_DPTR
     16     | `INDIRECT of bool
     17     | `IND_DPTR
     18     | `NBIT of BitVectors.byte
     19     | `REG of BitVectors.bit * BitVectors.bit * BitVectors.bit
     20     | `REL of 'e BitVectors.vect ] -> string
    121val pp_instruction: [< ASM.labelled_instruction] -> string
Note: See TracChangeset for help on using the changeset viewer.