From 4c5baa238864d70de14ec980e3410141ccdcd498 Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Thu, 24 May 2018 15:29:00 +0100 Subject: [PATCH] trs80: Make model 1 printer driver also support clones --- Kernel/platform-trs80m1/devlpr.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/Kernel/platform-trs80m1/devlpr.c b/Kernel/platform-trs80m1/devlpr.c index a55ae297..717c8f3f 100644 --- a/Kernel/platform-trs80m1/devlpr.c +++ b/Kernel/platform-trs80m1/devlpr.c @@ -2,9 +2,12 @@ #include #include #include +#include #define lp *((volatile uint8_t *)0x37E8) +__sfr __at 0xFD vg_lp; + int lpr_open(uint8_t minor, uint16_t flag) { minor; flag; // shut up compiler @@ -38,14 +41,21 @@ int lpr_write(uint8_t minor, uint8_t rawflag, uint8_t flag) minor; rawflag; flag; // shut up compiler while(udata.u_done < udata.u_count) { - /* Note; on real hardware it might well be necessary to - busy wait a bit just to get acceptable performance */ - while (lp & 0x80) { - if (iopoll()) - return udata.u_done; + if (trs80_model == VIDEOGENIE) { + while (vg_lp & 0x80) { + if (iopoll()) + return udata.u_done; + } + /* FIXME: tidy up ugetc and sysio checks globally */ + vg_lp = ugetc(p++); + } else { + while (lp & 0x80) { + if (iopoll()) + return udata.u_done; + } + /* FIXME: tidy up ugetc and sysio checks globally */ + lp = ugetc(p++); } - /* FIXME: tidy up ugetc and sysio checks globally */ - lp = ugetc(p++); udata.u_done++; } return udata.u_done; -- 2.34.1