Exemple #1
0
t_stat tti_svc (UNIT *uptr)
{
int32 c;

sim_activate (uptr, KBD_WAIT (uptr->wait, tmr_poll));   /* continue poll */
if ((c = sim_poll_kbd ()) < SCPE_KFLAG)                 /* no char or error? */
    return c;
if (c & SCPE_BREAK) {                                   /* break? */
    if (sysd_hlt_enb ())                                /* if enabled, halt */
        hlt_pin = 1;
    tti_unit.buf = TTIBUF_ERR | TTIBUF_FRM | TTIBUF_RBR;
    }
else tti_unit.buf = sim_tt_inpcvt (c, TT_GET_MODE (uptr->flags));
uptr->pos = uptr->pos + 1;
tti_csr = tti_csr | CSR_DONE;
if (tti_csr & CSR_IE)
    SET_INT (TTI);
return SCPE_OK;
}
Exemple #2
0
t_stat tti_svc (UNIT *uptr)
{
    int32 c;

    sim_clock_coschedule_tmr (uptr, TMR_CLK, TMXR_MULT);    /* continue poll */

    if ((tti_csr & CSR_DONE) &&                             /* input still pending and < 500ms? */
            ((sim_os_msec () - tti_buftime) < 500))
        return SCPE_OK;
    if ((c = sim_poll_kbd ()) < SCPE_KFLAG)                 /* no char or error? */
        return c;
    if (c & SCPE_BREAK) {                                   /* break? */
        if (sysd_hlt_enb ())                                /* if enabled, halt */
            hlt_pin = 1;
        tti_unit.buf = TTIBUF_ERR | TTIBUF_FRM | TTIBUF_RBR;
    }
    else tti_unit.buf = sim_tt_inpcvt (c, TT_GET_MODE (uptr->flags));
    tti_buftime = sim_os_msec ();
    uptr->pos = uptr->pos + 1;
    tti_csr = tti_csr | CSR_DONE;
    if (tti_csr & CSR_IE)
        SET_INT (TTI);
    return SCPE_OK;
}