static void evaluate_dynamical_model(AMOContext_Context submodel_ctx)
{
   /* Local common sub-expressions. */
   ZERO_SIZE_ARRAY(cs);
   ZERO_SIZE_ARRAY(is);
   ZERO_SIZE_ARRAY(bs);
   ZERO_SIZE_ARRAY(rs);
   ZERO_SIZE_ARRAY(ss);
   
   /* Evaluating toplevel systems. */
   SET_B(0, FALSE) /* idb__ */;
   SET_B(1, FALSE) /* idb___0 */;
   SET_R(
      16,
      IF(
         GT_TRIGGER(1),
         R(14) /* ifield */ *
         (
            R(14) /* ifield */ *
            (
               5.8160000000000001e-001 * R(14) /* ifield */ +
               - 2.9315000000000002e+000
            ) +
            4.6432000000000002e+000
         ),
         0.0000000000000000e+000
      )
   )
      /* k */;
   SET_R(0, R(16) /* k */ * (1.0471975511999999e-001 * R(17) /* speed */))
      /* BEMF */;
   SET_R(
      4,
      IF(
         BNOT(GE_TRIGGER(0)),
         (- 1.0000000000000000e+000 * R(6) /* Rarm1 */ + R(5) /* Rarm0 */) *
         (
            TIME *
            (
               - 1.0000000000000000e+000 *
               RIPOW(R(18) /* tswitchoff */, - 1)
            ) +
            1.0000000000000000e+000
         ) +
         R(6) /* Rarm1 */,
         R(6) /* Rarm1 */
      )
   )
      /* Rarm */;
   SET_R(
      13,
      RIPOW(R(4) /* Rarm */, - 1) *
      (
         - 1.0000000000000000e+000 * R(0) /* BEMF */ +
         1.4000000000000000e+002
      )
   )
      /* iarm */;
   SET_R(12, R(14) /* ifield */ + R(13) /* iarm */) /* i */;
   SET_R(2, 1.4000000000000000e+002 * R(12) /* i */) /* Pe */;
   SET_R(8, R(13) /* iarm */ * R(16) /* k */) /* Tem */;
   SET_R(
      3, R(8) /* Tem */ * (1.0471975511999999e-001 * R(17) /* speed */)
   )
      /* Pem */;
   SET_R(
      10,
      RIPOW(R(1) /* Lfield */, - 1) *
      (
         R(7) /* Rfield */ *
         (- 1.0000000000000000e+000 * R(14) /* ifield */) +
         1.4000000000000000e+002
      )
   )
      /* der(ifield) */;
   SET_R(
      11,
      9.5492965854826952e+000 *
      (
         R(9) /* cvisc */ * (- 1.0000000000000000e+000 * R(17) /* speed */) +
         R(8) /* Tem */
      )
   )
      /* der(speed) */;
   SET_R(19, 1.4000000000000000e+002) /* u */;
   
   return;
}
Beispiel #2
0
static READ8_DEVICE_HANDLER (ac1_port_a_r)
{
	UINT8 line0 = input_port_read(device->machine(), "LINE0");
	UINT8 line1 = input_port_read(device->machine(), "LINE1");
	UINT8 line2 = input_port_read(device->machine(), "LINE2");
	UINT8 line3 = input_port_read(device->machine(), "LINE3");
	UINT8 line4 = input_port_read(device->machine(), "LINE4");
	UINT8 line5 = input_port_read(device->machine(), "LINE5");
	UINT8 line6 = input_port_read(device->machine(), "LINE6");

	UINT8 SH    = BNOT(BIT(line6,0));
	UINT8 CTRL  = BNOT(BIT(line6,1));
	UINT8 SPACE = BIT(line6,2);
	UINT8 ENTER = BIT(line6,3);
	UINT8 BACK  = BIT(line6,4);

	UINT8 all = line0 | line1 | line2 | line3 | line4 | line5;
	UINT8 s1 = BNOT(BIT(all,0));UINT8 z1 = (line0 !=0) ? 0 : 1;
	UINT8 s2 = BNOT(BIT(all,1));UINT8 z2 = (line1 !=0) ? 0 : 1;
	UINT8 s3 = BNOT(BIT(all,2));UINT8 z3 = (line2 !=0) ? 0 : 1;
	UINT8 s4 = BNOT(BIT(all,3));UINT8 z4 = (line3 !=0) ? 0 : 1;
	UINT8 s5 = BNOT(BIT(all,4));UINT8 z5 = (line4 !=0) ? 0 : 1;
	UINT8 s6 = BNOT(BIT(all,5));UINT8 z6 = (line5 !=0) ? 0 : 1;
	UINT8 s7 = BNOT(BIT(all,6));
	UINT8 s8 = BNOT(BIT(all,7));
	UINT8 tast,td0,td1,td2,td3,td4,td5,td6,dg5;

	/* Additional double keys */
	if (SPACE) {
		z1 = 0; s1 = 0; SH = 0;
	}
	if (ENTER) {
		z4 = 0; s6 = 0; CTRL = 0;
	}
	if (BACK) {
		z4 = 0; s1 = 0; CTRL = 0;
	}

	tast = BNOT(s1 & s2 & s3 & s4 & s5 &s6 & s7 & s8);
	td0  = BNOT(s2 & s4 & s6 & s8);
	td1  = BNOT(s3 & s4 & s7 & s8);
	td2  = BNOT(s5 & s6 & s7 & s8);
	td3  = BNOT(z2 & z4 & z6);
	td4  = BNOT(BNOT(BNOT(z1 & z2) & SH) & z5 & z6);
	dg5  = BNOT(z3 & z4 & z5 & z6);
	td5  = BNOT(BNOT(dg5 & BNOT(SH)) & z1 & z2);
	td6  = (dg5 & CTRL);
	return td0 + (td1 << 1) +(td2 << 2) +(td3 << 3) +(td4 << 4) +(td5 << 5) +(td6 << 6) +(tast << 7);
}
static void evaluate_initial_model(AMOContext_Context submodel_ctx)
{
   /* Local common sub-expressions. */
   ZERO_SIZE_ARRAY(cs);
   ZERO_SIZE_ARRAY(is);
   ZERO_SIZE_ARRAY(bs);
   ZERO_SIZE_ARRAY(rs);
   ZERO_SIZE_ARRAY(ss);
   
   /* Evaluating toplevel systems. */
   SET_B(0, TIME >= 2.5000000000000000e+000) /* idb__ */;
   SET_B(1, R(14) /* ifield */ > 0.0000000000000000e+000) /* idb___0 */;
   SET_R(
      16,
      IF(
         B(1) /* idb___0 */,
         R(14) /* ifield */ *
         (
            R(14) /* ifield */ *
            (
               5.8160000000000001e-001 * R(14) /* ifield */ +
               - 2.9315000000000002e+000
            ) +
            4.6432000000000002e+000
         ),
         0.0000000000000000e+000
      )
   )
      /* k */;
   SET_R(0, R(16) /* k */ * (1.0471975511999999e-001 * R(17) /* speed */))
      /* BEMF */;
   SET_R(1, 1.0000000000000001e-001) /* Lfield */;
   SET_R(
      4,
      IF(
         BNOT(B(0) /* idb__ */),
         3.6000000000000001e+000 *
         (
            TIME *
            (
               - 1.0000000000000000e+000 *
               RIPOW(2.5000000000000000e+000, - 1)
            ) +
            1.0000000000000000e+000
         ) +
         4.0000000000000002e-001,
         4.0000000000000002e-001
      )
   )
      /* Rarm */;
   SET_R(
      13,
      RIPOW(R(4) /* Rarm */, - 1) *
      (
         - 1.0000000000000000e+000 * R(0) /* BEMF */ +
         1.4000000000000000e+002
      )
   )
      /* iarm */;
   SET_R(12, R(14) /* ifield */ + R(13) /* iarm */) /* i */;
   SET_R(2, 1.4000000000000000e+002 * R(12) /* i */) /* Pe */;
   SET_R(8, R(13) /* iarm */ * R(16) /* k */) /* Tem */;
   SET_R(
      3, R(8) /* Tem */ * (1.0471975511999999e-001 * R(17) /* speed */)
   )
      /* Pem */;
   SET_R(5, 4.0000000000000000e+000) /* Rarm0 */;
   SET_R(6, 4.0000000000000002e-001) /* Rarm1 */;
   SET_R(7, 2.7500000000000000e+002) /* Rfield */;
   SET_R(9, 1.7000000000000001e-002) /* cvisc */;
   SET_R(
      10,
      RIPOW(1.0000000000000001e-001, - 1) *
      (
         - 2.7500000000000000e+002 * R(14) /* ifield */ +
         1.4000000000000000e+002
      )
   )
      /* der(ifield) */;
   SET_R(
      11,
      9.5492965854826952e+000 *
      (- 1.7000000000000001e-002 * R(17) /* speed */ + R(8) /* Tem */)
   )
      /* der(speed) */;
   SET_R(15, 5.9999999999999998e-001) /* inertia */;
   SET_R(18, 2.5000000000000000e+000) /* tswitchoff */;
   SET_R(19, 1.4000000000000000e+002) /* u */;
   
   return;
}