|
|
DataMuseum.dkPresents historical artifacts from the history of: Commodore CBM-900 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Commodore CBM-900 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 1420 (0x58c)
Types: TextFile
Notes: UNIX file
Names: »console.c«
└─⟦f27320a65⟧ Bits:30001972 Commodore 900 hard disk image with partial source code
└─⟦2d53db1df⟧ UNIX Filesystem
└─⟦this⟧ »sys/z8001/src/console.c«
/* (-lgl
* The information contained herein is a trade secret of Mark Williams
* Company, and is confidential information. It is provided under a
* license agreement, and may be copied or disclosed only under the
* terms of that agreement. Any reproduction or disclosure of this
* material without the express written authorization of Mark Williams
* Company or persuant to the license agreement is unlawful.
*
* COHERENT Version 0.7.3
* Copyright (c) 1982, 1983, 1984.
* An unpublished work by Mark Williams Company, Chicago.
* All rights reserved.
-lgl) */
/*
* Console driver for Commodore Z8000M.
* Uses on-board RS-232 port B (SCC channel B) for all I/O.
*/
#include <coherent.h>
#define RxAVAIL 0x01 /* character available */
#define TxEMPTY 0x04 /* transmit buffer empty */
#define WR0 0x0101 /* command register */
#define RR0 0x0101 /* Tx & Rx status */
#define WR8 0x0111 /* transmit buffer */
#define RR8 0x0111 /* receive buffer */
/*
* Print a character on the console.
*/
putchar(c)
register int c;
{
register int s;
if (c == '\n')
putchar('\r');
s = sphi();
while ((inb(RR0)&TxEMPTY) == 0)
;
outb(WR8, c);
spl(s);
}
/*
* Get a character from the
* console. Echo it. Map carriage
* return into newline.
*/
getchar()
{
register c;
while ((inb(RR0)&RxAVAIL) == 0)
;
if ((c = inb(RR8)&0x7F) == '\r')
c = '\n';
putchar(c);
return (c);
}