From 117afc6bf352ecb28910b0defd0fae482295b67d Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Wed, 27 Dec 1995 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1995-12-27 --- pc/devvga.c | 23 ++++++++++++++++++----- port/devssl.c | 2 +- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/pc/devvga.c b/pc/devvga.c index e6d96f3a65b031222ebee4226c6ab649623030c1..7d25c643ac240b3ab4a749ec2969e94f14ca8a67 100644 --- a/pc/devvga.c +++ b/pc/devvga.c @@ -547,7 +547,6 @@ screeninit(void) * start in CGA mode */ cga = 1; - vgaxo(Crtx, 0x0A, 0xFF); /* turn off cursor */ memset(CGASCREEN, 0, CGAWIDTH*CGAHEIGHT); } @@ -1021,15 +1020,28 @@ nopage(int page) USED(page); } -/* - * character mode console - */ +static int pos; + +static void +cgaregw(uchar index, uchar data) +{ + outb(0x03D4, index); + outb(0x03D4+1, data); +} + +static void +movecursor(void) +{ + cgaregw(0x0E, (pos/2>>8) & 0xFF); + cgaregw(0x0F, pos/2 & 0xFF); + CGASCREEN[pos+1] = 2; +} + static void cgascreenputc(int c) { int i; static int color; - static int pos; if(c == '\n'){ pos = pos/CGAWIDTH; @@ -1052,6 +1064,7 @@ cgascreenputc(int c) memset(&CGASCREEN[CGAWIDTH*(CGAHEIGHT-1)], 0, CGAWIDTH); pos = CGAWIDTH*(CGAHEIGHT-1); } + movecursor(); } static void diff --git a/port/devssl.c b/port/devssl.c index 63f0ac975fbb4a1a6bf601e590db3ce488368f85..c18586bb29dd37ef077720db3c393cdbe145a566 100644 --- a/port/devssl.c +++ b/port/devssl.c @@ -456,7 +456,7 @@ sslbwrite(Chan *c, Block *b, ulong offset) if(pad){ nb = padblock(nb, -pad); memset(nb->wp, 0, pad); - b->wp += pad; + nb->wp += pad; m += pad; p = nb->rp;