Ignore:
Timestamp:
Oct 6, 2010, 4:59:44 PM (9 years ago)
Author:
mulligan
Message:

Code for timers now in place. Needs further implementation.

File:
1 edited

Legend:

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

    r158 r159  
    987987 let instr,pc,ticks = fetch status.code_memory status.pc in
    988988 let status = { status with clock = status.clock + ticks; pc = pc } in
    989   match instr with
     989 let status =
     990   (match instr with
    990991     `ADD (`A,d1) ->
    991992        let v,c,ac,ov =
     
    12711272         else
    12721273           status
    1273   | `NOP -> status
    1274   | _ -> assert false (* DPM: Until MOVX implemented. *)
     1274  | `NOP -> status) in
     1275  (* DPM: Clock/Timer code follows. *)
     1276  match bits_of_byte status.tmod with
     1277    (true,_,_,_),_ -> assert false
     1278  | (_,true,_,_),_ -> assert false
     1279  | _,(true,_,_,_) -> assert false
     1280  | _,(_,true,_,_) -> assert false
     1281  | (_,_,b1,b2),(_,_,b3,b4) ->
     1282        let b = get_bit status.tcon 4 in
     1283          (match b with
     1284            None -> assert false
     1285          | Some b' ->
     1286              if b' then
     1287                (* Timer0 first *)
     1288                (match b1,b2 with
     1289                  true,true -> assert false
     1290                | false,false -> assert false
     1291                | false,true ->
     1292                    (* TYPE ERROR! *)
     1293                    let res,ac,ov,cy = add8_with_c (mk_word status.th0 status.tl0) (vect_of_int 1 `Sixteen) in
     1294                    if ov then
     1295                      let b = set_bit status.tcon 5 true in
     1296                        (match b with
     1297                          None -> assert false
     1298                        | Some sts -> assert false (* DPM: implement! *))
     1299                    else
     1300                      assert false (* DPM: implement *)
     1301                | true,false -> assert false)
     1302              else
     1303                status)
     1304
    12751305;;
    12761306
Note: See TracChangeset for help on using the changeset viewer.