Lines Matching defs:controller
40 Implements the m68hc11 serial I/O controller described in the m68hc11
41 user guide. The serial I/O controller is directly connected to the CPU
59 I/O controller. It should be connected to the RESET output of the cpu.
80 /* Serial Controller information. */
121 struct m68hc11sio *controller)
132 controller->backend = sio_tcp;
134 controller->backend = sio_stdio;
145 struct m68hc11sio *controller;
147 controller = HW_ZALLOC (me, struct m68hc11sio);
148 set_hw_data (me, controller);
160 controller->backend = sio_stdio;
163 attach_m68hc11sio_regs (me, controller);
166 controller->tx_poll_event = NULL;
167 controller->rx_poll_event = NULL;
168 controller->tx_char = 0;
169 controller->tx_has_char = 0;
170 controller->rx_clear_scsr = 0;
171 controller->rx_char = 0;
186 struct m68hc11sio *controller;
191 controller = hw_data (me);
211 controller->rx_char = 0;
212 controller->tx_char = 0;
213 controller->tx_has_char = 0;
214 controller->rx_clear_scsr = 0;
215 if (controller->rx_poll_event)
217 hw_event_queue_deschedule (me, controller->rx_poll_event);
218 controller->rx_poll_event = 0;
220 if (controller->tx_poll_event)
222 hw_event_queue_deschedule (me, controller->tx_poll_event);
223 controller->tx_poll_event = 0;
252 struct m68hc11sio *controller;
259 controller = hw_data (me);
263 switch (controller->backend)
290 controller->rx_char = cc;
291 controller->rx_clear_scsr = 0;
300 if (controller->rx_poll_event)
302 hw_event_queue_deschedule (me, controller->rx_poll_event);
303 controller->rx_poll_event = 0;
311 clock_cycle = controller->data_length * controller->baud_cycle;
313 controller->rx_poll_event = hw_event_queue_schedule (me, clock_cycle,
327 struct m68hc11sio *controller;
331 controller = hw_data (me);
340 if ((m68hc11_cpu->ios[M6811_SCCR2] & M6811_TE) && controller->tx_has_char)
344 controller->tx_has_char = 0;
345 switch (controller->backend)
348 dv_sockser_write (sd, controller->tx_char);
352 sim_io_write_stdout (sd, (const char *)&controller->tx_char, 1);
361 if (controller->tx_poll_event)
363 hw_event_queue_deschedule (me, controller->tx_poll_event);
364 controller->tx_poll_event = 0;
373 clock_cycle = controller->data_length * controller->baud_cycle;
375 controller->tx_poll_event = hw_event_queue_schedule (me, clock_cycle,
434 struct m68hc11sio *controller;
441 controller = hw_data (me);
450 (m68hc11_cpu->cpu_frequency / 4) / controller->baud_cycle);
455 controller->data_length, controller->data_length - 2);
465 clock_cycle = controller->data_length * controller->baud_cycle;
467 if (controller->tx_poll_event)
472 t = hw_event_remain_time (me, controller->tx_poll_event);
473 n = (clock_cycle - t) / controller->baud_cycle;
474 n = controller->data_length - n;
479 if (controller->rx_poll_event)
483 t = hw_event_remain_time (me, controller->rx_poll_event);
509 struct m68hc11sio *controller;
519 controller = hw_data (me);
524 controller->rx_clear_scsr = m68hc11_cpu->ios[M6811_SCSR]
535 if (controller->rx_clear_scsr)
537 m68hc11_cpu->ios[M6811_SCSR] &= ~controller->rx_clear_scsr;
539 val = controller->rx_char;
557 struct m68hc11sio *controller;
567 controller = hw_data (me);
605 controller->baud_cycle = divisor;
612 controller->data_length = 11;
614 controller->data_length = 10;
631 if (controller->rx_poll_event == 0)
636 clock_cycle = controller->data_length * controller->baud_cycle;
638 controller->rx_poll_event = hw_event_queue_schedule (me, clock_cycle,
656 controller->tx_char = val;
657 controller->tx_has_char = 1;
659 && controller->tx_poll_event == 0)