From 39bce8018a383015928268249546c1e66cdbfc25 Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Sat, 2 Jun 2018 22:57:12 +0100 Subject: [PATCH] trs80m1: speed up the vt processing --- Kernel/platform-trs80m1/devtty.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/Kernel/platform-trs80m1/devtty.c b/Kernel/platform-trs80m1/devtty.c index 546e724e..2bbe9d39 100644 --- a/Kernel/platform-trs80m1/devtty.c +++ b/Kernel/platform-trs80m1/devtty.c @@ -40,12 +40,27 @@ ttyready_t tty_writeready(uint8_t minor) return (reg & 0x40) ? TTY_READY_NOW : TTY_READY_SOON; } +static uint8_t vtbuf[64]; +static uint8_t *vtq = vtbuf; + +static void vtflush(void) +{ + vtoutput(vtbuf, vtq - vtbuf); + vtq = vtbuf; +} + void tty_putc(uint8_t minor, unsigned char c) { + irqflags_t irq; if (minor == 2) tr1865_rxtx = c; - else - vtoutput(&c, 1); + else { + irq = di(); + if (vtq == vtbuf + sizeof(vtbuf)) + vtflush(); + *vtq++ = c; + irqrestore(irq); + } } void tty_interrupt(void) @@ -227,6 +242,7 @@ static void keydecode(void) } } +/* Polled 40 times a second */ void kbd_interrupt(void) { newkey = 0; @@ -240,4 +256,6 @@ void kbd_interrupt(void) kbd_timer = keyrepeat.continual; } } + if (vtq != vtbuf) + vtflush(); } -- 2.34.1