BESM6: Added TTY interrupt insertion in the idle loop.
This commit is contained in:
parent
c2975c8e0e
commit
a7f05ac40c
4 changed files with 9 additions and 9 deletions
|
@ -1427,17 +1427,15 @@ void cpu_one_inst ()
|
||||||
|
|
||||||
/* Не находимся ли мы в цикле "ЖДУ" диспака? */
|
/* Не находимся ли мы в цикле "ЖДУ" диспака? */
|
||||||
if (RUU == 047 && PC == 04440 && RK == 067704440) {
|
if (RUU == 047 && PC == 04440 && RK == 067704440) {
|
||||||
/* Притормаживаем выполнение каждой команды холостого цикла,
|
|
||||||
* чтобы быстрее обрабатывались прерывания: ускоряются
|
|
||||||
* терминалы и АЦПУ. */
|
|
||||||
delay = sim_interval;
|
|
||||||
|
|
||||||
/* Если периферия простаивает, освобождаем процессор
|
/* Если периферия простаивает, освобождаем процессор
|
||||||
* до следующего тика таймера. */
|
* до следующего тика таймера. */
|
||||||
if (vt_is_idle() &&
|
if (vt_is_idle() &&
|
||||||
printer_is_idle() && fs_is_idle()) {
|
printer_is_idle() && fs_is_idle()) {
|
||||||
check_initial_setup ();
|
check_initial_setup ();
|
||||||
sim_idle (0, TRUE);
|
sim_idle (0, TRUE);
|
||||||
|
} else if (sim_activate_time(tty_unit) > 1000*MSEC/300) {
|
||||||
|
/* Insert a TTY interrupt if a regular one is too far away */
|
||||||
|
sim_activate_abs(tty_unit, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -127,6 +127,7 @@ enum {
|
||||||
#define CLK_DELAY 4000 /* Uncalibrated instructions per clock tick */
|
#define CLK_DELAY 4000 /* Uncalibrated instructions per clock tick */
|
||||||
|
|
||||||
extern UNIT cpu_unit;
|
extern UNIT cpu_unit;
|
||||||
|
extern UNIT tty_unit[];
|
||||||
extern t_value memory [MEMSIZE];
|
extern t_value memory [MEMSIZE];
|
||||||
extern t_value pult [8];
|
extern t_value pult [8];
|
||||||
extern uint32 PC, RAU, RUU;
|
extern uint32 PC, RAU, RUU;
|
||||||
|
@ -398,6 +399,7 @@ t_value besm6_unpack (t_value val, t_value mask);
|
||||||
#define GRP_CHAN5_FREE 00000000400000000LL /* 27 */
|
#define GRP_CHAN5_FREE 00000000400000000LL /* 27 */
|
||||||
#define GRP_CHAN6_FREE 00000000200000000LL /* 26 */
|
#define GRP_CHAN6_FREE 00000000200000000LL /* 26 */
|
||||||
#define GRP_CHAN7_FREE 00000000100000000LL /* 25 */
|
#define GRP_CHAN7_FREE 00000000100000000LL /* 25 */
|
||||||
|
#define GRP_SERIAL 00000000001000000LL /* 19 */
|
||||||
#define GRP_WATCHDOG 00000000000002000LL /* 11 */
|
#define GRP_WATCHDOG 00000000000002000LL /* 11 */
|
||||||
#define GRP_SLOW_CLK 00000000000001000LL /* 10 */
|
#define GRP_SLOW_CLK 00000000000001000LL /* 10 */
|
||||||
/* Внутренние: */
|
/* Внутренние: */
|
||||||
|
|
|
@ -172,7 +172,7 @@ t_stat vt_clk (UNIT * this)
|
||||||
|
|
||||||
/* Телетайпы работают на 10 бод */
|
/* Телетайпы работают на 10 бод */
|
||||||
static int clk_divider = 1<<29;
|
static int clk_divider = 1<<29;
|
||||||
GRP |= MGRP & BBIT(19);
|
GRP |= MGRP & GRP_SERIAL;
|
||||||
|
|
||||||
/* Опрашиваем сокеты на приём. */
|
/* Опрашиваем сокеты на приём. */
|
||||||
tmxr_poll_rx (&tty_desc);
|
tmxr_poll_rx (&tty_desc);
|
||||||
|
@ -1137,7 +1137,6 @@ void vt_receive()
|
||||||
}
|
}
|
||||||
if (tty_typed[num] < 0) {
|
if (tty_typed[num] < 0) {
|
||||||
/* TODO: обработать исключение от "неоператорского" терминала */
|
/* TODO: обработать исключение от "неоператорского" терминала */
|
||||||
// sim_interval = 0;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (tty_typed[num] <= 0177) {
|
if (tty_typed[num] <= 0177) {
|
||||||
|
@ -1148,7 +1147,7 @@ void vt_receive()
|
||||||
tty_instate[num] = 1;
|
tty_instate[num] = 1;
|
||||||
TTY_IN |= mask; /* start bit */
|
TTY_IN |= mask; /* start bit */
|
||||||
GRP |= GRP_TTY_START; /* не используется ? */
|
GRP |= GRP_TTY_START; /* не используется ? */
|
||||||
MGRP |= BBIT(19); /* для терминалов по методу МГУ */
|
MGRP |= GRP_SERIAL; /* для терминалов по методу МГУ */
|
||||||
vt_receiving |= mask;
|
vt_receiving |= mask;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
set -n console log=log.txt
|
set -n console log=log.txt
|
||||||
set console debug=log
|
set console debug=log
|
||||||
|
set cpu idle
|
||||||
;set cpu debug
|
;set cpu debug
|
||||||
;set mmu debug
|
;set mmu debug
|
||||||
;set drum debug
|
;set drum debug
|
||||||
|
@ -40,7 +41,7 @@ attach tty1 /dev/tty
|
||||||
; Режимы по вкусу
|
; Режимы по вкусу
|
||||||
;
|
;
|
||||||
;set tty1 jcuken,authbs
|
;set tty1 jcuken,authbs
|
||||||
set tty1 authbs
|
set tty1 qwerty,authbs
|
||||||
set -n tty1 log=tty1.txt
|
set -n tty1 log=tty1.txt
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
Loading…
Add table
Reference in a new issue