SCCS-vsn: sys/tahoe/stand/prf.c 1.2
-/* prf.c 1.1 86/01/12 */
+/* prf.c 1.2 86/11/04 */
/* prf.c 4.3 81/05/05 */
#include "../machine/mtpr.h"
#include "param.h"
#include "../tahoe/cp.h"
/* prf.c 4.3 81/05/05 */
#include "../machine/mtpr.h"
#include "param.h"
#include "../tahoe/cp.h"
-#ifdef NOIO
-#define CINADR 0xf0000 /* Dummy keyboard (memory mapped) */
-#define COUTADR 0xf1000 /* Dummy screen -,,- */
-#endif
/*
* Scaled down version of C Library printf.
/*
* Scaled down version of C Library printf.
loop:
while ((c = *fmt++) != '%') {
loop:
while ((c = *fmt++) != '%') {
printn((u_long)b, *s++);
any = 0;
if (b) {
printn((u_long)b, *s++);
any = 0;
if (b) {
while (i = *s++) {
if (b & (1 << (i-1))) {
while (i = *s++) {
if (b & (1 << (i-1))) {
- if (any)
- putchar(',');
+ putchar(any? ',' : '<');
any = 1;
for (; (c = *s) > 32; s++)
putchar(c);
any = 1;
for (; (c = *s) > 32; s++)
putchar(c);
+ if (any)
+ putchar('>');
/*
* Print a character on console.
/*
* Print a character on console.
- * Attempts to save and restore device
- * status.
- *
- * Whether or not printing is inhibited,
- * the last MSGBUFS characters
- * are saved in msgbuf for inspection later.
-#ifdef NOIO
-char *coutadr=(char *)COUTADR;
-putchar(c)
- register c;
-{
- *coutadr++ = c;
-}
-
-char *cinadr=(char *)CINADR;
-getchar()
-{
- return( *cinadr++ );
-}
-
-#else
struct cpdcb_o cpout;
struct cpdcb_i cpin;
/* console requires even parity */
#define EVENP
struct cpdcb_o cpout;
struct cpdcb_i cpin;
/* console requires even parity */
#define EVENP
{
int time;
#ifdef EVENP
register mask, par;
{
int time;
#ifdef EVENP
register mask, par;
- for(par=0, mask=1; mask!=0200; mask<<=1, par<<=1)
+ for (par = 0, mask = 1; mask != 0200; mask <<= 1, par <<= 1)
par ^= c&mask;
c |= par;
#endif EVENP
par ^= c&mask;
c |= par;
#endif EVENP
cpout.cp_hdr.cp_count = 1;
cpout.cp_buf[0] = c;
mtpr(CPMDCB, &cpout);
cpout.cp_hdr.cp_count = 1;
cpout.cp_buf[0] = c;
mtpr(CPMDCB, &cpout);
-#ifdef SIMIO
- simout(&cpout);
-#endif
time = 100000; /* Delay loop */
while (time--) {
time = 100000; /* Delay loop */
while (time--) {
- uncache (&cpout.cp_hdr.cp_unit) ;
- if (cpout.cp_hdr.cp_unit & CPDONE) break;
+ uncache(&cpout.cp_hdr.cp_unit);
+ if (cpout.cp_hdr.cp_unit & CPDONE)
+ break;
- if (c == '\n') putchar ('\r');
-}
-
-#ifdef SIMIO
-simout(addr)
-{
- asm(".byte 0x4");
-}
-simin(addr)
-{
- asm(".byte 0x3");
+ if (c == '\n')
+ putchar ('\r');
cpin.cp_hdr.cp_unit = CPCONS; /* Resets done bit */
cpin.cp_hdr.cp_comm = CPREAD;
cpin.cp_hdr.cp_count = 1;
mtpr(CPMDCB, &cpin);
cpin.cp_hdr.cp_unit = CPCONS; /* Resets done bit */
cpin.cp_hdr.cp_comm = CPREAD;
cpin.cp_hdr.cp_count = 1;
mtpr(CPMDCB, &cpin);
-#ifdef SIMIO
- simin(&cpin);
-#endif
while ((cpin.cp_hdr.cp_unit & CPDONE) == 0)
while ((cpin.cp_hdr.cp_unit & CPDONE) == 0)
- uncache (&cpin.cp_hdr.cp_unit);
- uncache (&cpin.cpi_buf[0]);
+ uncache(&cpin.cp_hdr.cp_unit);
+ uncache(&cpin.cpi_buf[0]);
c = cpin.cpi_buf[0] & 0x7f;
c = cpin.cpi_buf[0] & 0x7f;
- if (c == '\r') c = '\n';
- putchar(c);
- return(c);
+ if (c == '\r')
+ c = '\n';
+ if (c != '\b' && c != '\177')
+ putchar(c);
+ return (c);
lp = buf;
for (;;) {
c = getchar() & 0177;
lp = buf;
for (;;) {
c = getchar() & 0177;
switch(c) {
case '\n':
case '\r':
switch(c) {
case '\n':
case '\r':
*lp++ = '\0';
return;
case '\b':
*lp++ = '\0';
return;
case '\b':
+ case '\177':
+ if (lp > buf) {
+ lp--;
+ putchar('\b');
+ putchar(' ');
+ putchar('\b');
+ }
+ continue;
lp = buf;
continue;
case '@':
lp = buf;
continue;
case '@':