Changeset 209


Ignore:
Timestamp:
Nov 2, 2010, 9:44:49 AM (9 years ago)
Author:
mulligan
Message:

Compiled again.

Location:
Deliverables/D4.1
Files:
2 edited

Legend:

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

    r206 r209  
    17131713                 { status with io = cont })
    17141714           | _ -> status) in
     1715             status
     1716(* DPM: fixme *)
     1717(*
    17151718           (* Serial port output *)
    17161719           let status =
    1717              (let status = { status with serial_epsilon_out = Some (status.clock + epsilon);
    1718                                          serial_v_out = Some serial.sbuf;
    1719                                          serial_k_out = Some (out_cont (status.clock + epsilon) serial.sbuf) } in
    1720                if clock >= epsilon_out then
     1720             (let status = { status with serial_epsilon_out = Some (status.clock + status.io_epsilon);
     1721                                         serial_v_out = Some (`Eight status.sbuf);
     1722                                         serial_k_out = Some (snd (out_cont (status.clock + status.io_epsilon) (`SerialBuff (`Eight status.sbuf)))) } in
     1723               if status.clock >= status.serial_epsilon_out then
    17211724                 match status.serial_k_out with
    17221725                   None -> assert false (* correct? *)
     
    17261729                 status) in
    17271730           { status with previous_p1_val = get_bit status.p3 4; previous_p3_val = get_bit status.p3 5 }
     1731*)
    17281732;;
    17291733
  • Deliverables/D4.1/ASMInterpret.mli

    r202 r209  
    77type line = [ `P1 of byte
    88            | `P3 of byte
    9             | `SerialBuff of [ `Eight of byte | `Nine of BitVectors.bit * byte ]];;
     9            | `SerialBuff of [ `Eight of byte
     10                             | `Nine of BitVectors.bit * byte
     11                             ]
     12            ];;
    1013
    1114val string_of_line: line -> string;;
     15
     16type epsilon = int;;
     17
    1218(* In:  reception time, line of input, new continuation,
    1319   Out: transmission time, output line, expected duration until reply,
     
    1521*)
    1622type continuation =
    17   [`In of time * line * continuation] option *
    18   [`Out of (time -> line -> time * continuation) ]
     23  [`In of time * line * epsilon * continuation] option *
     24  [`Out of (time -> line -> time * continuation) ];;
    1925
    20 type status = private
    21  { code_memory: WordMap.map;        (* can be reduced *)
    22    low_internal_ram: Byte7Map.map;
    23    high_internal_ram: Byte7Map.map;
    24    external_ram: WordMap.map;       (* can be reduced *)
     26type status =
     27{
     28  (* Memory *)
     29  code_memory: WordMap.map;        (* can be reduced *)
     30  low_internal_ram: Byte7Map.map;
     31  high_internal_ram: Byte7Map.map;
     32  external_ram: WordMap.map;
    2533
    26    pc: word;
     34  (* Program counter *)
     35  pc: word;
    2736
    28    (* sfr *)
    29    sp: byte;
    30    dpl: byte;
    31    dph: byte;
    32    pcon: byte;
    33    tcon: byte;
    34    tmod: byte;
    35    tl0: byte;
    36    tl1: byte;
    37    th0: byte;
    38    th1: byte;
    39    p1: byte;
    40    p1_latch: byte;
    41    scon: byte;
    42    sbuf: byte;
    43    ie: byte;
    44    p3: byte;
    45    p3_latch: byte;
    46    ip: byte;
    47    psw: byte;
    48    acc: byte;
    49    b: byte;
    50    t2con: byte; (* 8052 only *)
    51    rcap2l: byte; (* 8052 only *)
    52    rcap2h: byte; (* 8052 only *)
    53    tl2: byte; (* 8052 only *)
    54    th2: byte; (* 8052 only *)
     37  (* SFRs *)
     38  sp: byte;
     39  dpl: byte;
     40  dph: byte;
     41  pcon: byte;
     42  tcon: byte;
     43  tmod: byte;
     44  tl0: byte;
     45  tl1: byte;
     46  th0: byte;
     47  th1: byte;
     48  p1: byte;
     49  scon: byte;
     50  sbuf: byte;
     51  ie: byte;
     52  p3: byte;
     53  ip: byte;
     54  psw: byte;
     55  acc: byte;
     56  b: byte;
     57  t2con: byte;   (* 8052 only *)
     58  rcap2l: byte;  (* 8052 only *)
     59  rcap2h: byte;  (* 8052 only *)
     60  tl2: byte;     (* 8052 only *)
     61  th2: byte;     (* 8052 only *)
    5562
    56    previous_p1_val: bool;
    57    previous_p3_val: bool;
     63  (* Latches for the output lines *)
     64  p1_latch: byte;
     65  p3_latch: byte;
    5866
    59    clock: time;
    60    timer0: word;
    61    timer1: word;
    62    timer2: word;  (* can be missing *)
    63    expected_out_time: [ `None | `Now | `At of time ];
    64    io: continuation
    65  }
     67  (* Fields for tracking the state of the processor. *)
     68 
     69  (* IO specific *)
     70  previous_p1_val: bool;
     71  previous_p3_val: bool;
     72
     73  serial_epsilon_out: epsilon option;
     74  serial_epsilon_in: epsilon option;
     75
     76  serial_v_in: [`Eight of byte | `Nine of (BitVectors.bit * byte) ] option;
     77  serial_v_out: [`Eight of byte | `Nine of (BitVectors.bit * byte) ] option;
     78
     79  serial_k_out: continuation option;
     80
     81  io: continuation;
     82  expected_out_time: [ `None | `Now | `At of time ];
     83
     84  (* Timer and clock specific *)
     85  clock: time;
     86  timer0: word;
     87  timer1: word;
     88  timer2: word  (* can be missing *)
     89}
    6690
    6791val string_of_status: status -> string
Note: See TracChangeset for help on using the changeset viewer.