📄 console.h
字号:
// console.h // Data structures to simulate the behavior of a terminal// I/O device. A terminal has two parts -- a keyboard input,// and a display output, each of which produces/accepts // characters sequentially.//// The console hardware device is asynchronous. When a character is// written to the device, the routine returns immediately, and an // interrupt handler is called later when the I/O completes.// For reads, an interrupt handler is called when a character arrives. //// In either case, the serial line connecting the computer// to the console has limited bandwidth (like a modem!), and so// each character takes measurable time.//// The user of the device registers itself to be called "back" when // the read/write interrupts occur. There is a separate interrupt// for read and write, and the device is "duplex" -- a character// can be outgoing and incoming at the same time.//// DO NOT CHANGE -- part of the machine emulation//// Copyright (c) 1992-1996 The Regents of the University of California.// All rights reserved. See copyright.h for copyright notice and limitation // of liability and disclaimer of warranty provisions.#ifndef CONSOLE_H#define CONSOLE_H#include "copyright.h"#include "utility.h"#include "callback.h"// The following two classes define the input (and output) side of a // hardware console device. Input (and output) to the device is simulated // by reading (and writing) to the UNIX file "readFile" (and "writeFile").//// Since input (and output) to the device is asynchronous, the interrupt // handler "callWhenAvail" is called when a character has arrived to be // read in (and "callWhenDone" is called when an output character has been // "put" so that the next character can be written).//// In practice, usually a single hardware thing that does both// serial input and serial output. But conceptually simpler to// use two objects.class ConsoleInput : public CallBackObj { public: ConsoleInput(char *readFile, CallBackObj *toCall); // initialize hardware console input ~ConsoleInput(); // clean up console emulation char GetChar(); // Poll the console input. If a char is // available, return it. Otherwise, return EOF. // "callWhenAvail" is called whenever there is // a char to be gotten void CallBack(); // Invoked when a character arrives // from the keyboard. private: int readFileNo; // UNIX file emulating the keyboard CallBackObj *callWhenAvail; // Interrupt handler to call when // there is a char to be read char incoming; // Contains the character to be read, // if there is one available. // Otherwise contains EOF.};class ConsoleOutput : public CallBackObj { public: ConsoleOutput(char *writeFile, CallBackObj *toCall); // initialize hardware console output ~ConsoleOutput(); // clean up console emulation void PutChar(char ch); // Write "ch" to the console display, // and return immediately. "callWhenDone" // will called when the I/O completes. void CallBack(); // Invoked when next character can be put // out to the display. private: int writeFileNo; // UNIX file emulating the display CallBackObj *callWhenDone; // Interrupt handler to call when // the next char can be put bool putBusy; // Is a PutChar operation in progress? // If so, you can't do another one!};#endif // CONSOLE_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -