|
|
Power 6/32 Unix version 1.2b
/*
* Provide about n microseconds of delay
*/
#define DELAY(n) { register int N = (n); while (--N > 0); }
#define IOBASE 0xff000000
#define PGSHIFT 10
#define TBASE 0xff4000
#define ATT_ADR 0xffff4000 /* Channel attention address */
#define SCP_ADR 0xc06 /* System Conf. pointer address */
#define TM_BSIZE (1024) /* Block size on Cypher */
#define CYVEC 0x80 /* Cypher interrupt vector to TAHOE */
#define RETRY 1000
struct scp /* SYSTEM CONFIGUREATION POINTER */
{
char sysbus ; /* width of system buss 0=8;1=16 */
char nu1 ;
char pt_scb[4] ; /* pointer to ->SYSTEM CONFIGUREATION BLOCK */
};
struct scb /* System conf. block */
{
char sysblk;
char nu2;
char pt_ccb[4];
};
struct ccb /* CHANNEL CONTROL BLOCK */
{
char ccw ; /* 0x11 normal; 0x09 clear non_vect interrupt */
char gate; /* This is "the" GATE */
char pt_tpb[4] ; /* pointer to ->TAPE OPERATION BLOCK or MOVE BLOCK */
};
struct tpb /* TAPE OPERATIONS PARAMETER BLOCK */
{
long cmd ; /* COMMAND (input) */
char control[2] ; /* CONTROL (input) */
unsigned short count ; /* RETURN COUNT (output) */
unsigned short size ; /* BUFFER SIZE (input/output) */
unsigned short rec_over ; /* RECORDS/OVERRUN (input/output) */
char pt_data[4] ; /* pointer to ->SOURCE/DEST (input) */
char status[2]; /* STATUS (output) */
char pt_link[4] ; /* pointer to INTERRUPT/PARAMETER BLOCK (input) */
unsigned short unused[3];
};
struct tpblk /* TAPE PARAMETER BLOCK for block move operation */
{
long cmd ; /* COMMAND (input) */
char control[2] ; /* CONTROL (input) */
unsigned short count ; /* RETURN COUNT (output) */
char source[4] ; /* pointer to source */
char dest[4] ; /* pointer to Destination */
unsigned short mask; /* Mask/Stat search */
unsigned short intr[2]; /* Interrupt */
unsigned short table[2]; /* table */
unsigned short throttle; /* throttle word */
};
struct tmbuf
{ char byte[TM_BSIZE];
} cybuf;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.