File: M4.PA of Disk: Disks/MyPDP/m8-blue-rka1-rkb1
(Source file text) 

/M4.PA 9-JUN-80
/**UASEM VERSION**
XLIST -LDATA-1&XLISTX
/****************************************************
/*********   D A T A   S T R U C T U R E S   ********
/****************************************************

	DOTF10=.
	FIELD 0
	*DOTF00

/THE DISK QUEUE, MUST START AT PAGE BOUND:
SYSQ,	ZBLOCK SYSMAX^2
IFNZRO SYSQ&177 <SYQERR,XERROR>


IFDEF TAPE <	/TABLE WHICH HOLDS CURRENT TAPE POSITION
TAPETB,	ZBLOCK TAPE	/FOR EACH UNIT NUMBER >

IFDEF COMLNG <
COMMON,	ZBLOCK COMLNG	/BLOCK OF LOCATIONS,
			/DIFFERENT FOR ANY INSTALLATION >

HRDLST,	ZBLOCK 1^2		/EVENT 0 FOR BREAK CHARACTER DETECTION
	ZBLOCK INTDEV-1^2	/CONNECTABLE SKIPCHAIN ENTRIES
	ZBLOCK SKPDEV-INTDEV^2	/NON-CONNECTABLE SKIPCHAIN ENTRIES
	ZBLOCK MAXDEV-SKPDEV^2	/ENTRIES EG. FOR TERMINAL MUX.
	ZBLOCK SOFSLOT^2	/ALLOCATABLE SOFTWARE EVENTS
IFNZRO BGMAX <
	ZBLOCK 1^2		/ONE SLOT FOR THE BG SCHEDULER
	ZBLOCK BGMAX^2		/ONE SLOT FOR EACH BG
	BSSLOT=MAXSLOT		/ >

CLRTAB,	ZBLOCK INTDEV-1		/HOLDS CLEAR-IOT'S
/THE COREMAP CONTAINS ONE WORD FOR EVERY MEMORY PAGE IN THE
/FOREGROUND. THE FOLLOWING ENCODING APPLIES:
/0	FREE PAGE
/-3	OCCUPIED BY RESIDENT CODE OR OTHERWISE UNUSABLE
/-2	ALLOCATED BUFFER PAGE, BUT NOT LAST PAGE OF BUFFER
/-1	LAST PAGE OF ALLOCATED BUFFER
/NEG.	TCBP OF EXTERNAL TASK LOADED HERE
/POS.	-TCBP OF EXTERNAL TASK THAT HAS 'RELEASED' ITS MEMORY
/THE PROPER CONTENTS OF THIS MAP IS ONLY KNOWN DURING PASS 2.
/SO DURING PASS 1 WE JUST RESERVE THE REQUIRED AMOUNT OF MEMORY

IFNZRO PASS1 <
CORMAP,	*FIELDS^40+.	/ >
IFZERO PASS1 <
/FIRST MAKE SURE THAT ALL ENFXX'S ARE AT A PAGE BOUND:
ENDF00=ENDF00+177&7600
ENDF10=ENDF10+177&7600
ENDF20=ENDF20+177&7600
ENDF30=ENDF30+177&7600
ENDF40=ENDF40+177&7600
ENDF50=ENDF50+177&7600
ENDF60=ENDF60+177&7600
ENDF70=ENDF70+177&7600
/THE MONITOR AREA IN FIELD 0:
IFNZRO ENDF00&200 <-3>
IFNZRO ENDF00&400 <-3;-3>
IFNZRO ENDF00&1000 <-3;-3;-3;-3>
IFNZRO ENDF00&2000 <-3;-3;-3;-3;-3;-3;-3;-3>
IFNZRO ENDF00&4000 <-3;-3;-3;-3;-3;-3;-3;-3
		    -3;-3;-3;-3;-3;-3;-3;-3>
/THE EMPTY AREA IN FIELD 0:
	ZBLOCK CORMAP+37-.
/DON'T TOUCH THE LAST PAGE (OS8):
	-3
/NOW FOR FIELD 1:
IFZERO FIELDS-2&4000 <
IFNZRO ENDF10&200 <-3>
IFNZRO ENDF10&400 <-3;-3>
IFNZRO ENDF10&1000 <-3;-3;-3;-3>
IFNZRO ENDF10&2000 <-3;-3;-3;-3;-3;-3;-3;-3>
IFNZRO ENDF10&4000 <-3;-3;-3;-3;-3;-3;-3;-3
		    -3;-3;-3;-3;-3;-3;-3;-3>
/FREE AREA IN FIELD 1:
	ZBLOCK CORMAP+77-.
	-3		/LAST PAGE IS FOR OS/8
/NOW FOR FIELD 2:
IFZERO FIELDS-3&4000 <
IFNZRO ENDF20&200 <-3>
IFNZRO ENDF20&400 <-3;-3>
IFNZRO ENDF20&1000 <-3;-3;-3;-3>
IFNZRO ENDF20&2000 <-3;-3;-3;-3;-3;-3;-3;-3>
IFNZRO ENDF20&4000 <-3;-3;-3;-3;-3;-3;-3;-3
		    -3;-3;-3;-3;-3;-3;-3;-3>
	ZBLOCK CORMAP+140-.
IFDEF SYRL01 <*.-1;-3	/RETAIN SYSTEM HANDLER FOR RL01 >
IFDEF SYRX02 <*.-1;-3	/RETAIN SYSTEM HANDLER FOR RX02 >
/NOW FOR FIELD 3:
IFZERO FIELDS-4&4000 <
IFNZRO ENDF30&200 <-3>
IFNZRO ENDF30&400 <-3;-3>
IFNZRO ENDF30&1000 <-3;-3;-3;-3>
IFNZRO ENDF30&2000 <-3;-3;-3;-3;-3;-3;-3;-3>
IFNZRO ENDF30&4000 <-3;-3;-3;-3;-3;-3;-3;-3
		    -3;-3;-3;-3;-3;-3;-3;-3>
	ZBLOCK CORMAP+200-.
/NOW FOR FIELD 4:
IFZERO FIELDS-5&4000 <
IFNZRO ENDF40&200 <-3>
IFNZRO ENDF40&400 <-3;-3>
IFNZRO ENDF40&1000 <-3;-3;-3;-3>
IFNZRO ENDF40&2000 <-3;-3;-3;-3;-3;-3;-3;-3>
IFNZRO ENDF40&4000 <-3;-3;-3;-3;-3;-3;-3;-3
		    -3;-3;-3;-3;-3;-3;-3;-3>
	ZBLOCK CORMAP+240-.
/NOW FOR FIELD 5:
IFZERO FIELDS-6&4000 <
IFNZRO ENDF50&200 <-3>
IFNZRO ENDF50&400 <-3;-3>
IFNZRO ENDF50&1000 <-3;-3;-3;-3>
IFNZRO ENDF50&2000 <-3;-3;-3;-3;-3;-3;-3;-3>
IFNZRO ENDF50&4000 <-3;-3;-3;-3;-3;-3;-3;-3
		    -3;-3;-3;-3;-3;-3;-3;-3>
	ZBLOCK CORMAP+300-.
/NOW FOR FIELD 6:
IFZERO FIELDS-7&4000 <
IFNZRO ENDF60&200 <-3>
IFNZRO ENDF60&400 <-3;-3>
IFNZRO ENDF60&1000 <-3;-3;-3;-3>
IFNZRO ENDF60&2000 <-3;-3;-3;-3;-3;-3;-3;-3>
IFNZRO ENDF60&4000 <-3;-3;-3;-3;-3;-3;-3;-3
		    -3;-3;-3;-3;-3;-3;-3;-3>
	ZBLOCK CORMAP+340-.
/NOE FOR FIELD 7:
IFZERO FIELDS-10&4000 <
IFNZRO ENDF70&200 <-3>
IFNZRO ENDF70&400 <-3;-3>
IFNZRO ENDF70&1000 <-3;-3;-3;-3>
IFNZRO ENDF70&2000 <-3;-3;-3;-3;-3;-3;-3;-3>
IFNZRO ENDF70&4000 <-3;-3;-3;-3;-3;-3;-3;-3
		    -3;-3;-3;-3;-3;-3;-3;-3>
	ZBLOCK CORMAP+400-.	/ >>>>>>>
				/END OF PASS2 CONDITION >
/NOW COMES THE END OF THE MAP. FOR PROPPER OPERATION OF
/THE ROUTINE HOLE, THE MAP SHOULD END IN -3;0:
	-3
MAPEND,	0
NAMLST,	ZBLOCK MAXNAM+17
LASTNM,	0			/ONE LOC EXTRA FOR SEARCH LOOP

IFZERO .&4000 <*4000	/TCBP'S MUST ALWAYS BE NEGATIVE >

TCBTAB,			/THE TABLE OF TASK CONTROL BLOCKS

	"T^100+"I&3777;1;DGNTIM;0
	0;CDF+00%2;0;0

	"S^100+"Y&3777;0;SY;0
	0;CDF+00%2;0;0

IFDEF SYRX02 <
	"S^100+"Z&3777;0;SZ;0
	0;CDF+00%2;0;0		/ >

IFDEF SYRL01 <			/FAKE SY FOR RLC
	"S^100+"C&3777;0;SC;0
	0;CDF+00%2;0;0		/ >

IFDEF DKUSED <
	"D^100+"K&3777;0;DK;0
	10;CDF 00%2;0;0	/ >

IFNDEF KL8XX <TT1LST=0;KK1LST=0>
	"T^100+"1&3777;0;TT;TT1LST
T1TCBP,	10;CDF 00%2;0;0

	"K^100+"1&3777;0;KK;KK1LST
K1TCBP,	10;CDF+00%2;0;0

IFDEF KL8E2 <
	"T^100+"2&3777;0;TT;TT2LST;10;CDF 00%2;0;0

	"K^100+"2&3777;0;KK;KK2LST;10;CDF 00%2;0;0	/ >

IFDEF KL8E3 <
	"T^100+"3&3777;0;TT;TT3LST;10;CDF 00%2;0;0

	"K^100+"3&3777;0;KK;KK3LST;10;CDF 00%2;0;0	/ >

IFDEF KL8E4 <
	"T^100+"4&3777;0;TT;TT4LST;10;CDF 00%2;0;0

	"K^100+"4&3777;0;KK;KK4LST;10;CDF 00%2;0;0	/ >

IFDEF KL8E5 <
	"T^100+"5&3777;0;TT;TT5LST;10;CDF 00%2;0;0

	"K^100+"5&3777;0;KK;KK5LST;10;CDF 00%2;0;0	/ >

IFDEF KL8E6 <
	"T^100+"6&3777;0;TT;TT6LST;10;CDF 00%2;0;0

	"K^100+"6&3777;0;KK;KK6LST;10;CDF 00%2;0;0	/ >

IFDEF KL8E7 <
	"T^100+"7&3777;0;TT;TT7LST;10;CDF 00%2;0;0

	"K^100+"7&3777;0;KK;KK7LST;10;CDF 00%2;0;0	/ >
IFDEF KL8A1 <
	"T-"K^100+KL8NAM+0;0;TT;TY0LST;10;CDF%2;0;0
	KL8NAM+0;0;KK;KB0LST;10;CDF%2;0;0
	"T-"K^100+KL8NAM+1;0;TT;TY1LST;10;CDF%2;0;0
	KL8NAM+0;0;KK;KB1LST;10;CDF%2;0;0
	"T-"K^100+KL8NAM+2;0;TT;TY2LST;10;CDF%2;0;0
	KL8NAM+0;0;KK;KB2LST;10;CDF%2;0;0
	"T-"K^100+KL8NAM+3;0;TT;TY3LST;10;CDF%2;0;0
	KL8NAM+0;0;KK;KB3LST;10;CDF%2;0;0
/END IFDEF KL8A1 >
IFNZRO BGMAX <
KHIBG1,	"I^100+"1&3777;1;KHIST	;BG1;10;CDF 00%2;0;0
KHOBG1,	"O^100+"1&3777;0;KHO	;BG1;10;CDF 00%2;0;0
EMBG1,	"E^100+"1&3777;1;EMSTRT	;BG1;10;CDF 00%2;0;0

IFZERO BGMAX-2&4000 <
KHIBG2,	"I^100+"2&3777;1;KHIST	;BG2;10;CDF 00%2;0;0
KHOBG2,	"O^100+"2&3777;0;KHO	;BG2;10;CDF 00%2;0;0
EMBG2,	"E^100+"2&3777;1;EMSTRT	;BG2;10;CDF 00%2;0;0

IFZERO BGMAX-3&4000 <
KHIBG3,	"I^100+"3&3777;1;KHIST	;BG3;10;CDF 00%2;0;0
KHOBG3,	"O^100+"3&3777;0;KHO	;BG3;10;CDF 00%2;0;0
EMBG3,	"E^100+"3&3777;1;EMSTRT	;BG3;10;CDF 00%2;0;0

IFZERO BGMAX-4&4000 <
KHIBG4,	"I^100+"4&3777;1;KHIST	;BG4;10;CDF 00%2;0;0
KHOBG4,	"O^100+"4&3777;0;KHO	;BG4;10;CDF 00%2;0;0
EMBG4,	"E^100+"4&3777;1;EMSTRT	;BG4;10;CDF 00%2;0;0

IFZERO BGMAX-5&4000 <
KHIBG5,	"I^100+"5&3777;1;KHIST	;BG5;10;CDF 00%2;0;0
KHOBG5,	"O^100+"5&3777;0;KHO	;BG5;10;CDF 00%2;0;0
EMBG5,	"E^100+"5&3777;1;EMSTRT	;BG5;10;CDF 00%2;0;0

IFZERO BGMAX-6&4000 <
KHIBG6,	"I^100+"6&3777;1;KHIST	;BG6;10;CDF 00%2;0;0
KHOBG6,	"O^100+"6&3777;0;KHO	;BG6;10;CDF 00%2;0;0
EMBG6,	"E^100+"6&3777;1;EMSTRT	;BG6;10;CDF 00%2;0;0

IFZERO BGMAX-7&4000 <
KHIBG7,	"I^100+"7&3777;1;KHIST	;BG7;10;CDF 00%2;0;0
KHOBG7,	"O^100+"7&3777;0;KHO	;BG7;10;CDF 00%2;0;0
EMBG7,	"E^100+"7&3777;1;EMSTRT	;BG7;10;CDF 00%2;0;0 >>>>>>>

LOADPT,	0		/ZERO IS TERMINATOR

IFNZRO MAXNAM^10+TCBTAB-.&4000 <TCBOVF,XERROR> /TO MANY TASKS !

	ZBLOCK MAXNAM^10+TCBTAB-. /THE REST OF TCBTAB IS
				  /FOR DISK-RESIDENT TASKS
	ZBLOCK .+200&7600-.&7770  /USE THE REST OF THIS PAGE TOO !
	*.

IFNZRO PASS1 <ENDF00=.-1>
IFZERO ENDF00+200&4000 <F00ERR,XERROR /CORE OVERFLOW >
/**********************************************************
/**********  D A T A   A R E A    F I E L D   1  **********
/**********************************************************

	FIELD 1
	*DOTF10
IFNZRO BGMAX <
/THE TERMINAL BUFFERS AND THE TERMINAL BUFFER POOL
	O=-BSIZE
	*.+BSIZE-1&O	/BUFFERS START AT 'NICE' ADDRESS
IFZERO BGMAX-1&4000 <
BG1IN,	0;"R;215;ZBLOCK BSIZE-3	/FIRST BLOCK OF INPUT BUFFER
BG1OUT,	ZBLOCK BSIZE	/FIRST BLOCK OF OUTPUT BUFFER >
IFZERO BGMAX-2&4000 <
BG2IN,	0;"R;215;ZBLOCK BSIZE-3	/FIRST BLOCK OF INPUT BUFFER
BG2OUT,	ZBLOCK BSIZE	/FIRST BLOCK OF OUTPUT BUFFER >
IFZERO BGMAX-3&4000 <
BG3IN,	0;"R;215;ZBLOCK BSIZE-3	/FIRST BLOCK OF INPUT BUFFER
BG3OUT,	ZBLOCK BSIZE	/FIRST BLOCK OF OUTPUT BUFFER >
IFZERO BGMAX-4&4000 <
BG4IN,	0;"R;215;ZBLOCK BSIZE-3	/FIRST BLOCK OF INPUT BUFFER
BG4OUT,	ZBLOCK BSIZE	/FIRST BLOCK OF OUTPUT BUFFER >
IFZERO BGMAX-5&4000 <
BG5IN,	0;"R;215;ZBLOCK BSIZE-3	/FIRST BLOCK OF INPUT BUFFER
BG5OUT,	ZBLOCK BSIZE	/FIRST BLOCK OF OUTPUT BUFFER >
IFZERO BGMAX-6&4000 <
BG6IN,	0;"R;215;ZBLOCK BSIZE-3	/FIRST BLOCK OF INPUT BUFFER
BG6OUT,	ZBLOCK BSIZE	/FIRST BLOCK OF OUTPUT BUFFER >
IFZERO BGMAX-7&4000 <
BG7IN,	0;"R;215;ZBLOCK BSIZE-3	/FIRST BLOCK OF INPUT BUFFER
BG7OUT,	ZBLOCK BSIZE	/FIRST BLOCK OF OUTPUT BUFFER >
	ZBLOCK BSIZE	/LAST BLOCK IN THE POOL
IFNZRO POOLN-1&1 <
	.-BSIZE;ZBLOCK BSIZE-1 >
IFNZRO POOLN-1&2 <
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1 >
IFNZRO POOLN-1&4 <
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1 >
IFNZRO POOLN-1&10 <
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1 >
IFNZRO POOLN-1&20 <
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1 >
IFNZRO POOLN-1&40 <
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1
	.-BSIZE;ZBLOCK BSIZE-1 >
FQLAST,	.-BSIZE;ZBLOCK BSIZE-1 /LAST BLOCK OF FREE QUEUE
FRESLT,	FBLKO			/POINTER TO FREE SLOT IN SWPTAB
BSTAB,	0			/STARTBLOCK OF SWPFIL.M8
IFZERO BGMAX-1&4000 <
	BGID=BG1-BGDATA+1
	0000+BGID		/BG1, FIELD 0
IFNDEF SINGL8 <
	ZBLOCK	BGFLDS-1	/REAL MEMORY INITIALLY EMPTY >
	1000+BGID		/BG1, FIELD 1
IFZERO BGCORE-3&4000 <
	2000+BGID		/BG1, FIELD 2 >
IFZERO BGCORE-4&4000 <
	3000+BGID		/BG1, FIELD 3 >
IFZERO BGCORE-5&4000 <
	4000+BGID		/BG1, FIELD 4 >
IFZERO BGCORE-6&4000 <
	5000+BGID		/BG1, FIELD 5 >
IFZERO BGCORE-7&4000 <
	6000+BGID		/BG1, FIELD 6 >
IFZERO BGCORE-10&4000 <
	7000+BGID		/BG1, FIELD 7 >>
IFZERO BGMAX-2&4000 <
	BGID=BG2-BGDATA+1
	0000+BGID		/BG2, FIELD 0
	1000+BGID		/BG2, FIELD 1
IFZERO BGCORE-3&4000 <
	2000+BGID		/BG2, FIELD 2 >
IFZERO BGCORE-4&4000 <
	3000+BGID		/BG2, FIELD 3 >
IFZERO BGCORE-5&4000 <
	4000+BGID		/BG2, FIELD 4 >
IFZERO BGCORE-6&4000 <
	5000+BGID		/BG2, FIELD 5 >
IFZERO BGCORE-7&4000 <
	6000+BGID		/BG2, FIELD 6 >
IFZERO BGCORE-10&4000 <
	7000+BGID		/BG2, FIELD 7 >>
IFZERO BGMAX-3&4000 <
	BGID=BG3-BGDATA+1
	0000+BGID		/BG3, FIELD 0
	1000+BGID		/BG3, FIELD 1
IFZERO BGCORE-3&4000 <
	2000+BGID		/BG3, FIELD 2 >
IFZERO BGCORE-4&4000 <
	3000+BGID		/BG3, FIELD 3 >
IFZERO BGCORE-5&4000 <
	4000+BGID		/BG3, FIELD 4 >
IFZERO BGCORE-6&4000 <
	5000+BGID		/BG3, FIELD 5 >
IFZERO BGCORE-7&4000 <
	6000+BGID		/BG3, FIELD 6 >
IFZERO BGCORE-10&4000 <
	7000+BGID		/BG3, FIELD 7 >>
IFZERO BGMAX-4&4000 <
	BGID=BG4-BGDATA+1
	0000+BGID		/BG4, FIELD 0
	1000+BGID		/BG4, FIELD 1
IFZERO BGCORE-3&4000 <
	2000+BGID		/BG4, FIELD 2 >
IFZERO BGCORE-4&4000 <
	3000+BGID		/BG4, FIELD 3 >
IFZERO BGCORE-5&4000 <
	4000+BGID		/BG4, FIELD 4 >
IFZERO BGCORE-6&4000 <
	5000+BGID		/BG4, FIELD 5 >
IFZERO BGCORE-7&4000 <
	6000+BGID		/BG4, FIELD 6 >
IFZERO BGCORE-10&4000 <
	7000+BGID		/BG4, FIELD 7 >>
IFZERO BGMAX-5&4000 <
	BGID=BG5-BGDATA+1
	0000+BGID		/BG5, FIELD 0
	1000+BGID		/BG5, FIELD 1
IFZERO BGCORE-3&4000 <
	2000+BGID		/BG5, FIELD 2 >
IFZERO BGCORE-4&4000 <
	3000+BGID		/BG5, FIELD 3 >
IFZERO BGCORE-5&4000 <
	4000+BGID		/BG5, FIELD 4 >
IFZERO BGCORE-6&4000 <
	5000+BGID		/BG5, FIELD 5 >
IFZERO BGCORE-7&4000 <
	6000+BGID		/BG5, FIELD 6 >
IFZERO BGCORE-10&4000 <
	7000+BGID		/BG5, FIELD 7 >>
IFZERO BGMAX-6&4000 <
	BGID=BG6-BGDATA+1
	0000+BGID		/BG6, FIELD 0
	1000+BGID		/BG6, FIELD 1
IFZERO BGCORE-3&4000 <
	2000+BGID		/BG6, FIELD 2 >
IFZERO BGCORE-4&4000 <
	3000+BGID		/BG6, FIELD 3 >
IFZERO BGCORE-5&4000 <
	4000+BGID		/BG6, FIELD 4 >
IFZERO BGCORE-6&4000 <
	5000+BGID		/BG6, FIELD 5 >
IFZERO BGCORE-7&4000 <
	6000+BGID		/BG6, FIELD 6 >
IFZERO BGCORE-10&4000 <
	7000+BGID		/BG6, FIELD 7 >>
IFZERO BGMAX-7&4000 <
	BGID=BG7-BGDATA+1
	0000+BGID		/BG7, FIELD 0
	1000+BGID		/BG7, FIELD 1
IFZERO BGCORE-3&4000 <
	2000+BGID		/BG7, FIELD 2 >
IFZERO BGCORE-4&4000 <
	3000+BGID		/BG7, FIELD 3 >
IFZERO BGCORE-5&4000 <
	4000+BGID		/BG7, FIELD 4 >
IFZERO BGCORE-6&4000 <
	5000+BGID		/BG7, FIELD 5 >
IFZERO BGCORE-7&4000 <
	6000+BGID		/BG7, FIELD 6 >
IFZERO BGCORE-10&4000 <
	7000+BGID		/BG7, FIELD 7 >>
FBLKO,	0			/ONE EMPTY SLOT IN SWPFIL
SWPTAB=BSTAB+1+BGFLDS		/THESE 3 LISTS MUST BE TOGETHER!!!  >
IFDEF KL8XX <	/LIST FOR THE REENTRANT TTY DRIVERS
IFNDEF KL8A1 <O=2>
IFDEF KL8A1  <O=3>
TT1LST,	0		/TTCHAR
	TTY1		/TTEVNT
	0		/TTRET
	TLS		/TTTLS
	ZBLOCK O	/TTSAV,(TTLINE),TTCOUNT
	-T1CHAR		/TTFCHR
	-T1FILL		/TTFILL
	0		/TTTMP
	T1BACK-210	/TTBACK MUST BE IN THIS ORDER!!
KK1LST,	KB1
	-T1ESCP
IFDEF KL8E2 <
TT2LST,	0
	TTY2
	0
	6016+KL8E2
	ZBLOCK O
	-T2CHAR
	-T2FILL
	0
	T2BACK-210
KK2LST,	KB2
	-T2ESCP	/ >
IFDEF KL8E3<
TT3LST,	0
	TTY3
	0
	6016+KL8E3
	ZBLOCK O
	-T3CHAR
	-T3FILL
	0
	T3BACK-210
KK3LST,	KB3
	-T3ESCP	/ >
IFDEF KL8E4 <
TT4LST,	0
	TTY4
	0
	6016+KL8E4
	ZBLOCK O
	-T4CHAR
	-T4FILL
	0
	T4BACK-210
KK4LST,	KB4
	-T4ESCP	/ >
IFDEF KL8E5 <
TT5LST,	0
	TTY5
	0
	6016+KL8E5
	ZBLOCK O
	-T5CHAR
	-T5FILL
	0
	T5BACK-210
KK5LST,	KB5
	-T5ESCP	/ >
IFDEF KL8E6<
TT6LST,	0
	TTY6
	0
	6016+KL8E6
	ZBLOCK O
	-T6CHAR
	-T6FILL
	0
	T6BACK-210
KK6LST,	KB6
	-T6ESCP	/ >
IFDEF KL8E7 <
TT7LST,	0
	TTY7
	0
	6016+KL8E7
	ZBLOCK O
	-T7CHAR
	-T7FILL
	0
	T7BACK-210
KK7LST,	KB7
	-T7ESCP	/ >
IFDEF KL8A1 <
TY0LST,	0
	MUX1TT
	0
	KL8A1+6004
	0
	400^0
	0
	-C0CHAR
	-C0FILL
	0
	C0BACK-210
KB0LST,	MUX1KB
	-C0ESCP
TY1LST,	0
	MUX1TT+1
	0
	KL8A1+6004
	0
	400^1
	0
	-C1CHAR
	-C1FILL
	0
	C1BACK-210
KB1LST,	MUX1KB+1
	-C1ESCP
TY2LST,	0
	MUX1TT+2
	0
	KL8A1+6004
	0
	400^2
	0
	-C2CHAR
	-C2FILL
	0
	C2BACK-210
KB2LST,	MUX1KB+2
	-C2ESCP
TY3LST,	0
	MUX1TT+3
	0
	KL8A1+6004
	0
	400^3
	0
	-C3CHAR
	-C3FILL
	0
	C3BACK-210
KB3LST,	MUX1KB+3
	-C3ESCP
			/END IFDEF KL8A1 >
			/END IFDEF KL8XX >
IFNZRO BGMAX <
/DISPATCH TABLE FOR FAKEHANDLER:
HNDTAB,	-EMCHNL+EMDOT	/0 EMULATOR FOR CHANNEL 0-3
	SYSCHN=.-HNDTAB^10
	"D^100+"S&3777	/1  FOR SYSTEM-DISK PUBLIC DEVICES
IFDEF DSK <
	DSKCHN=.-HNDTAB^10
	"D^100+"N&3777	/T  FOR NON-SYSTEM DISK PUBLIC DEVICES >
IFDEF TAPE <
	DTACHN=.-HNDTAB^10
	"T^100+"E&3777	/U  FOR DTA0:-DTA7: (TUA0:-TUA7:) >
IFDEF LPT <
	LPTCHN=.-HNDTAB^10
	"L^100+"E&3777	/V  FOR LPT: >
IFDEF RXA <
	RXACHN=.-HNDTAB^10
	"F^100+"E&3777	/W  FOR RXA0:-RXA7: >
IFDEF SYRL01 <RL01DS=1 >
IFDEF NSRL01 <RL01DS=1>
IFDEF RL01DS <
	RLCCHN=.-HNDTAB^10
	"D^100+"C&3777	/X  FOR RLC DEVICES >
IFDEF CRD <
	CRDCHN=.-HNDTAB^10
	"K^100+"E&3777	/Y  FOR CDR: >
IFZERO HNDTAB+07-.&4000 <	-EMERROR+EMDOT	/ RESERVED >
IFZERO HNDTAB+07-.&4000 <	-EMERROR+EMDOT	/ RESERVED >
IFZERO HNDTAB+07-.&4000 <	-EMERROR+EMDOT	/ RESERVED >
IFZERO HNDTAB+07-.&4000 <	-EMERROR+EMDOT	/ RESERVED >
IFZERO HNDTAB+07-.&4000 <	-EMERROR+EMDOT	/ RESERVED >
IFZERO HNDTAB+07-.&4000 <	-EMERROR+EMDOT	/ RESERVED >
IFNZRO HNDTAB+10-.&4000 <CHNOVR,__		/ >

/TABLE OF EXECUTABLE IOT'S	/0=NOT EXECUTABLE
/.GT.0="N^100+"A&3777 TASK'S NAME /.LT.0= RELATIVE DISTANCE TO SERVICE CODE
EMTAB,	-EM00+EMDOT	/600X
	ZBLOCK EMTAB+3-.
	-EM03+EMDOT	/603X
	-EM03+EMDOT	/604X
	ZBLOCK EMTAB+20-.
	-EM20+EMDOT	/620X
	-EM20+EMDOT	/621X
	-EM20+EMDOT	/622X
	-EM20+EMDOT	/623X
	-EM20+EMDOT	/624X
	-EM20+EMDOT	/625X
	-EM20+EMDOT	/626X
	-EM20+EMDOT	/627X 
IFDEF FPP <
	ZBLOCK EMTAB+55-.
	-EM55+EMDOT	/655X
	-EM55+EMDOT	/656X >
	ZBLOCK EMTAB+77-.
	-EMGIGA+EMDOT	/GIANT IOT =6770
/
/TABLE FOR GROUP 6200-6277 IOT'S WHICH NEED SPECIAL DECODING
/
EM20TB,	-EMXNOP+EMDOT		/6200 LXM OF KT8A
	-EMCDIF+EMDOT		/6201 CDF 0
	-EMCDIF+EMDOT		/6202 CIF 0
	-EMCDIF+EMDOT		/6203 CDI 0
	-EMERROR+EMDOT		/6204 CINT: ????
	-EMXNOP+EMDOT		/6205 CDF 100 OR DM8E: RTM
	-EMERROR+EMDOT		/6206 CIF 100
	-EMERROR+EMDOT		/6207 CDI 100
	-EMERROR+EMDOT		/6210 GTS OF KT8A
	-EMCDIF+EMDOT		/6211 CDF 10
	-EMCDIF+EMDOT		/6212 CIF 10
	-EMCDIF+EMDOT		/6213 CDI 10
	-EMERROR+EMDOT		/6214 RDF (SHOULD UNTRAP)
	-EMXNOP+EMDOT		/6215 CDF 110 OR DM8E: SKME
	-EMERROR+EMDOT		/6216 CIF 110
	-EMERROR+EMDOT		/6217 CDI 110
	-EMERROR+EMDOT		/6220 RTS OF KT8A
IFZERO BGCORE-3&4000 <
	-EMCDIF+EMDOT		/6221 CDF 20
	-EMCDIF+EMDOT		/6222 CIF 20
	-EMCDIF+EMDOT		/6223 CDI 20 >
IFNZRO BGCORE-3&4000 <
	-EMXNOP+EMDOT		/
	-EMERROR+EMDOT		/
	-EMERROR+EMDOT		/ >
	-EMERROR+EMDOT		/6224 RIF (SHOULD UNTRAP)
	-EMXNOP+EMDOT		/6225 CDF 120 OR DM8E: SKMM
	-EMERROR+EMDOT		/6226 CIF 120
	-EMERROR+EMDOT		/6227 CDI 120
	-EMXNOP+EMDOT		/6230 RXM OF KT8A (NOP FOR ODT)
IFZERO BGCORE-4&4000 <
	-EMCDIF+EMDOT		/6231 CDF 30
	-EMCDIF+EMDOT		/6232 CIF 30
	-EMCDIF+EMDOT		/6233 CDI 30 >
IFNZRO BGCORE-4&4000 <
	-EMXNOP+EMDOT		/
	-EMERROR+EMDOT		/
	-EMERROR+EMDOT		/ >
	-EMERROR+EMDOT		/6234 RIB
	-EMXNOP+EMDOT		/6235 CDF 130 OR DM8E: LTM
	-EMERROR+EMDOT		/6236 CIF 130
	-EMERROR+EMDOT		/6237 CDI 130
	-EMERROR+EMDOT		/6240 LRR OF KT8A
IFZERO BGCORE-5&4000 <
	-EMCDIF+EMDOT		/6241 CDF 40
	-EMCDIF+EMDOT		/6242 CIF 40
	-EMCDIF+EMDOT		/6243 CDI 40 >
IFNZRO BGCORE-5&4000 <
	-EMXNOP+EMDOT		/
	-EMERROR+EMDOT		/
	-EMERROR+EMDOT		/ >
	-EMERROR+EMDOT		/6244 RMF
	-EMXNOP+EMDOT		/6245 CDF 140 OR DM8E: LRM
	-EMERROR+EMDOT		/6246 CIF 140
	-EMERROR+EMDOT		/6247 CDI 140
	-EMERROR+EMDOT		/6250 RRR OF KT8A
IFZERO BGCORE-6&4000 <
	-EMCDIF+EMDOT		/6251 CDF 50
	-EMCDIF+EMDOT		/6252 CIF 50
	-EMCDIF+EMDOT		/6253 CDI 50 >
IFNZRO BGCORE-6&4000 <
	-EMXNOP+EMDOT		/
	-EMERROR+EMDOT		/
	-EMERROR+EMDOT		/ >
	-EMXSKP+EMDOT		/6254 SINT: SKIP-0N-MULTI8
	-EMXNOP+EMDOT		/6255 CDF 150
	-EMERROR+EMDOT		/6256 CIF 150
	-EMERROR+EMDOT		/6257 CDI 150
	-EMERROR+EMDOT		/6260 LUSR OF KT8A
IFZERO BGCORE-7&4000 <
	-EMCDIF+EMDOT		/6261 CDF 60
	-EMCDIF+EMDOT		/6262 CIF 60
	-EMCDIF+EMDOT		/6263 CDI 60 >
IFNZRO BGCORE-7&4000 <
	-EMXNOP+EMDOT		/
	-EMERROR+EMDOT		/
	-EMERROR+EMDOT		/ >
	-EMSPY+EMDOT		/6264 CUF: LOOK-INTO-REAL-MEMORY
	-EMXNOP+EMDOT		/6265 CDF 160 OR DM8E: SMME
	-EMERROR+EMDOT		/6266 CIF 160
	-EMERROR+EMDOT		/6267 CDI 160
	-EMERROR+EMDOT		/6270 RUSR OF KT8A
IFZERO BGCORE-10&4000 <
	-EMCDIF+EMDOT		/6271 CDF 70
	-EMCDIF+EMDOT		/6272 CIF 70
	-EMCDIF+EMDOT		/6273 CDI 70 >
IFNZRO BGCORE-10&4000 <
	-EMXNOP+EMDOT		/
	-EMERROR+EMDOT		/
	-EMERROR+EMDOT		/ >
	-EMERROR+EMDOT		/6274 SUF: ????
	-EMXNOP+EMDOT		/6275 CDF 170 OR DM8E: CMME
	-EMERROR+EMDOT		/6276 CIF 170
	-EMERROR+EMDOT		/6277 CDI 170
/TABLE OF PROCESSOR (GROUP 00) IOT'S
EM00TB,	-EMHAND+EMDOT	/'SKON': IS HANDLER CALL IN MULTI8
	-EMERROR+EMDOT	/'ION' : NOT ON VIRTUAL MACHINE
	-EMREDY+EMDOT	/'IOF' : INTERRUPT IS VIRTUALLY OFF
	-EMREDY+EMDOT	/'SRQ' : NO INTERRUPT REQUEST
	-EMERROR+EMDOT	/'GTF' : NO GOOD
	-EMERROR+EMDOT	/'RTF' : RESTORE WHAT?
IFNDEF EAE <
	-EMREDY+EMDOT	/'SGT' : NO EAE, NO SKIP >
IFDEF EAE <
	-EMSGT+EMDOT	/'SGT' : EAE, TEST IF SKIP >
	-EMCLCA+EMDOT	/'CAF' : DO ALL WE CAN

/DISPATCH TABLE FOR TERMINAL IOT'S
EM03TB,	-DO6030+EMDOT		/6030
	-DO6031+EMDOT		/6031
	-DO6032+EMDOT		/6032
	-EMERROR+EMDOT		/6033
	-DO6034+EMDOT		/6034
	-EMERROR+EMDOT		/6035
	-DO6036+EMDOT		/6036
	-EMERROR+EMDOT		/6037
	-EMREDY+EMDOT		/6040
	-EMXSKP+EMDOT		/6041
	-EMREDY+EMDOT		/6042
	-EMERROR+EMDOT		/6043
	-DO6044+EMDOT		/6044
	-EMERROR+EMDOT		/6045
	-DO6046+EMDOT		/6046
	-EMERROR+EMDOT		/6047

XLIST -LFPP-1&XLISTX
IFDEF FPP <
/DISPATCH TABLE FOR FPP8A HARDWARE INSTRUCTIONS
EM55TB,	-EMERROR+EMDOT	/FFST  : START MAINTENANCE FIRMWARE
	-EMXSKP+EMDOT	/FPINT : FPP IS ALWAYS READY
	-FPICL+EMDOT	/FPICL : CLEAR STATUS AND AC
	-FPCOM+EMDOT	/FPCOM : SET APTHI AND SELECT FP/DP
	-EMREDY+EMDOT	/FPHLT : IMPOSSIBLE FOR EMULATOR (BUT ^C)
	-FPST+EMDOT	/FPST  : SET APTLOW, START EMULATOR AND SKIP
	-FPRST+EMDOT	/FPRST : READ STATUS
	-FPIST+EMDOT	/FPIST : SKIP, READ STATUS, CLEAR STATUS
	-EMERROR+EMDOT	/6560  : NOT USED
	-EMERROR+EMDOT	/FMODE : ENTER MAINTENANCE MODE
	-EMERROR+EMDOT	/6562  : NOT USED
	-EMERROR+EMDOT	/FMRB  : READ DATA BUFFER
	-EMERROR+EMDOT	/FMRP  : READ MUPC
	-EMERROR+EMDOT	/FMDO  : EXECUTE ONE STEP
	-EMERROR+EMDOT	/6566  : NOT USED
	-FPEP+EMDOT	/FPEP  : SELECT EP IF AC0=1
/FPP EMULATOR INSTRUCTION DISPATCH LISTS

SPCLST,	LDADX		/SPECIAL INSTRUCTIONS
	JUMPS
	FFJXN
	FFTRP3
	FFTRP4
	FFNOP		/LTR?
	FFNOP		/LEA,IMUL?
	FFNOP		/LEAI,IMULI?

LAXLST,	FFLDX		/LDADX GROUP
	FFADDX
	FFNOP
	FFNOP
	FFNOP
	FFNOP
	FFNOP
	FFNOP

JMPLST,	FFJEQ		/VARIOUS JUMP INSTR.
	FFJGE
	FFJLE
	FFJA
	FFJNE
	FFJLT
	FFJGT
	FFJAL
	FFSETX		/MUST FOLLOW JMPLST
	FFSETB
	FFJSA
	FFJSR
	FFNOP
	FFNOP
	FFNOP
	FFNOP

XRLST,	FFALN		/MAINLY XR INSTRUCTIONS
	FFATX		/LIST ONLY 7 LONG!
	FFXTA
	FFNOP
	FFSTRE
	FFNOP
	FFNOP

OPRLST,	FFEXIT		/AND THE OPERATES
	FFPAUS
	FFCLA
	FFNEG
	FFNORM
	FFSTRF
	FFSTRD
	FFJAC		/ END IFDEF FPP >
XLIST -LDATA-1&XLISTX
/TABLE OF "GIANT IOT'S", UAC IS INDEX AFTER 6770
GIGATB,	-EMTIME+EMDOT	/0 TIME-OF-DAY REQUEST
	-EMNUMB+EMDOT	/1 GET MACHINE AND TERMINAL NUMBER
	-EMQUIT+EMDOT	/2 DISABLE KEYBOARD ECHO
	-EMECHO+EMDOT	/3 ENABLE KEYBOARD ECHO
	"T^100+"A&3777	/4 TALK
	-EMOPEN+EMDOT	/5 OPEN/CLOSE PROCESSOR
	-EMSTLL+EMDOT	/6 STALL THE BG FOR N SECONDS
	-ACCRST+EMDOT	/7 RESET ACCOUNT REGISTERS
	-ACCRD+EMDOT	/10 READ ACCOUNT REGISTERS
	-EMERROR+EMDOT	/11 FREE SLOT
	-EMVER+EMDOT	/12 6-BIT PACKED MULTI8 VERSION
	-BGREL+EMDOT	/13 RELEASE DEVICES FOR INTERACTIVE JOB
	-EMERROR+EMDOT	/14 RESERVED
	-EMERROR+EMDOT	/15 RESERVED
	-EMERROR+EMDOT	/16 RESERVED
	-EMERROR+EMDOT	/17 RESERVED
	ZBLOCK GIGATB+GIGAMX-.	/END OF GIGATB

/DEFINITIONS FOR BG DATA AREA;ALL RELATIVE

BGDATA,
BG1,	RELOC 0		/ALL FOLLOWING SYMBOLS ARE RELATIVE

USTAT,	INACTIVE+BGSTOP+ONDISK	/STATUS WORD
UMQ,	0		/USERS MEMORY QUOTIENT REGISTER
USC,	0		/MSS.SSS.FFF.XXXA/B MODE,
			/STEPCOUNTER AND LOCKED FIELD
UPC,	7201		/USERS CURRENT PROGRAM COUNTER
UFLDS,	100		/LGX.XXU.III.FFF: LINK, GREATER-THAN,
			/USER MODE, VIRTUAL INSTRUCTION & DATAFIELD
UAC,	0		/USERS CURRENT ACCUMULATOR
UINST,	0		/LAST EMULATED INSTRUCTION
USW,	0		/USERS SWITCH REGISTER (VIRTUAL)
UTEMP,	0		/SCRATCH LOCATION #1
UTEM2,	0		/SCRATCH LOCATION #2
UDTV,	ZBLOCK 3	/TRANSFER VECTOR
UASEM,	ZBLOCK ASEMMX	/EMULATORS PLUG THEIR NAMES HERE
UBUFIN,	3		/COUNTER OF INPUT BUFFER
	BG1IN+1		/READ POINTER
	BG1IN+1+3	/WRITE POINTER
UBUFOUT,0		/COUNTER OF OUTPUT BUFFER
	BG1OUT+1	/READ POINTER
	BG1OUT+1	/WRITE POINTER
UWRTR,	KHOBG1+4	/TCBP OF OUTPUT WRITER
UCUR,	EMBG1+4		/TCBP OF EMULATOR
IFDEF USESY1 <
UCHNL0,	USYS1		/DRIVER FOR USERS' SYS: >
IFNDEF USESY1 <
UCHNL0,	"D^100+"K&3777	/DRIVER FOR USERS' SYS: >

UNUMB,	4511		/FILE STRUCTURED, DEVICE TYPE 51, UNIT #
	"S^100+"Y&3777	/ENTRY FOR DSK0:
	6500		/READ ONLY, OS/8 SYSTEM, UNIT 0
	ZBLOCK 4	/CHANNEL 2-3
UECHO,	0		/ECHO FLAG, 4000=NO ECHO
IFNDEF SINGL8 <
UFLD0,	FIELDS^10	/FIRST FIELD OF BG1 IN CORE
	ZBLOCK BGCORE-1	/TABLE OF REAL FIELDS, 0=NOT-RESIDENT >
IFDEF SINGL8 <
UFLD0,	20;30;40;50	/ALL FIELDS IN CORE FOR BG1 >
UCHAR,	0		/THE CURRENT INPUT CHARACTER
IFZERO TTYMAX-1&4000 <
UKB,	K1TCBP+0	/TCBP OF INPUT TASK
UTTY,	T1TCBP+0	/TCBP OF OUTPUT HANDLER >
IFNZRO TTYMAX-1&4000 <
UKB,	0		/DETACHED BACKBGOUND
UTTY,	0		/DETACHED BACKGROUND >
UCOUNT,	0		/COUNTER FOR "BS"
USLOT,	MAXSLOT+1	/WAIT-FOR-BG-IN-CORE SLOT
UACCNT,	ZBLOCK 2	/LOWORDER, HIGHORDER CPU USAGE
			/IN UNITS OF DGNTICK
IFDEF FPP <
UFPST,	0		/FPP STATUS
UAPTH,	0		/HIGH 3 BITS OF APT ADDRESS
UAPTL,	0		/LOW 12 BITS OF APT ADDRES >
UNEXT,
IFNZRO BGMAX-1 <BG2	/POINTER TO NEXT BG >
IFZERO BGMAX-1 <BG1	/POINTER TO FIRST BG >
UEND=.			/END FOR THIS BG

	RELOC		/END OF RELATIVE DEFINITIONS
IFZERO BGMAX-2&4000 <	/THE SECOND BG:
BG2,	RELOC 0		/ALL FOLLOWING SYMBOLS ARE RELATIVE

USTAT,	INACTIVE+BGSTOP+ONDISK	/STATUS FOR BACKGROUND SCHEDULER
UMQ,	0		/USERS MEMORY QUOTIENT REGISTER
USC,	0		/MSS.SSS.FFF.XXXA/B MODE,
			/STEPCOUNTER AND LOCKED FIELD
UPC,	7201		/USERS CURRENT PROGRAM COUNTER
UFLDS,	100		/LGX.XXU.III.FFF: LINK, GREATER-THAN,
			/USER MODE, VIRTUAL INSTRUCTION & DATAFIELD
UAC,	0		/USERS CURRENT ACCUMULATOR
UINST,	0		/LAST EMULATED INSTRUCTION
USW,	0		/USERS SWITCH REGISTER (VIRTUAL)
UTEMP,	0		/SCRATCH LOCATION #1
UTEM2,	0		/SCRATCH LOCATION #2
UDTV,	ZBLOCK 3	/TRANSFER VECTOR
UASEM,	ZBLOCK ASEMMX	/EMULATORS PLUG THEIR NAMES HERE
UBUFIN,	3		/COUNTER OF INPUT BUFFER
	BG2IN+1		/READ POINTER
	BG2IN+1+3	/WRITE POINTER
UBUFOUT,0		/COUNTER OF OUTPUT BUFFER
	BG2OUT+1	/READ POINTER
	BG2OUT+1	/WRITE POINTER
UWRTR,	KHOBG2+4	/TCBP OF OUTPUT WRITER
UCUR,	EMBG2+4		/TCBP OF EMULATOR
IFDEF USESY2 <
UCHNL0,	USYS2		/DRIVER FOR USERS' SYS: >
IFNDEF USESY2 <
UCHNL0,	"D^100+"K&3777	/DRIVER FOR USERS' SYS: >

UNUMB,	4522		/FILE STRUCTURED, DEVICE TYPE 52, UNIT #
	"S^100+"Y&3777	/ENTRY FOR DSK0:
	6500		/READ ONLY, OS/8 SYSTEM, UNIT 0
	ZBLOCK 4	/CHANNEL 2-3
UECHO,	0		/ECHO FLAG, 4000=NO ECHO
IFNDEF SINGL8 <
UFLD0,	ZBLOCK BGCORE	/TABLE OF REAL FIELDS >
IFDEF SINGL8 <
UFLD0,	60;70;0;0	/FIELD 0 & 1 IN CORE FOR BG2 >
UCHAR,	0		/THE CURRENT INPUT CHARACTER
IFZERO TTYMAX-2&4000 <
UKB,	K1TCBP+20	/TCBP OF INPUT TASK
UTTY,	T1TCBP+20	/TCBP OF OUTPUT HANDLER >
IFNZRO TTYMAX-2&4000 <
UKB,	0		/DETACHED BACKBGOUND
UTTY,	0		/DETACHED BACKGROUND >
UCOUNT,	0		/COUNTER FOR "BS"
USLOT,	MAXSLOT+2	/WAIT-FOR-BG-IN-CORE SLOT
UACCNT,	ZBLOCK 2	/LOWORDER, HIGHORDER CPU USAGE
			/IN UNITS OF DGNTICK
IFDEF FPP <
UFPST,	0		/FPP STATUS
UAPTH,	0		/HIGH 3 BITS OF APT ADDRESS
UAPTL,	0		/LOW 12 BITS OF APT ADDRES >
UNEXT,
IFZERO BGMAX-2 <BG1>	/POINTER TO FIRST BG
IFNZRO BGMAX-2 <BG3>	/POINTER TO NEXT BG
UEND=.			/END FOR THIS BG

	RELOC		/END OF RELATIVE DEFINITIONS >
IFZERO BGMAX-3&4000 <	/THE THIRD BG:
BG3,	RELOC 0		/ALL FOLLOWING SYMBOLS ARE RELATIVE

USTAT,	INACTIVE+BGSTOP+ONDISK	/STATUS FOR BACKGROUND SCHEDULER
UMQ,	0		/USERS MEMORY QUOTIENT REGISTER
USC,	0		/MSS.SSS.FFF.XXXA/B MODE,
			/STEPCOUNTER AND LOCKED FIELD
UPC,	7201		/USERS CURRENT PROGRAM COUNTER
UFLDS,	100		/LGX.XXU.III.FFF: LINK, GREATER-THAN,
			/USER MODE, VIRTUAL INSTRUCTION & DATAFIELD
UAC,	0		/USERS CURRENT ACCUMULATOR
UINST,	0		/LAST EMULATED INSTRUCTION
USW,	0		/USERS SWITCH REGISTER (VIRTUAL)
UTEMP,	0		/SCRATCH LOCATION #1
UTEM2,	0		/SCRATCH LOCATION #2
UDTV,	ZBLOCK 3	/TRANSFER VECTOR
UASEM,	ZBLOCK ASEMMX	/EMULATORS PLUG THEIR NAMES HERE
UBUFIN,	3		/COUNTER OF INPUT BUFFER
	BG3IN+1		/READ POINTER
	BG3IN+1+3	/WRITE POINTER
UBUFOUT,0		/COUNTER OF OUTPUT BUFFER
	BG3OUT+1	/READ POINTER
	BG3OUT+1	/WRITE POINTER
UWRTR,	KHOBG3+4	/TCBP OF OUTPUT WRITER
UCUR,	EMBG3+4		/TCBP OF EMULATOR
IFDEF USESY3 <
UCHNL0,	USYS3		/DRIVER FOR USERS' SYS: >
IFNDEF USESY3 <
UCHNL0,	"D^100+"K&3777	/DRIVER FOR USERS' SYS: >

UNUMB,	4533		/FILE STRUCTURED, DEVICE TYPE 53, UNIT #
	"S^100+"Y&3777	/ENTRY FOR DSK0:
	6500		/READ ONLY, OS/8 SYSTEM, UNIT 0
	ZBLOCK 4	/CHANNEL 2-3
UECHO,	0		/ECHO FLAG, 4000=NO ECHO
UFLD0,	ZBLOCK BGCORE	/TABLE OF REAL FIELDS
UCHAR,	0		/THE CURRENT INPUT CHARACTER
IFZERO TTYMAX-3&4000 <
UKB,	K1TCBP+40	/TCBP OF INPUT TASK
UTTY,	T1TCBP+40	/TCBP OF OUTPUT HANDLER >
IFNZRO TTYMAX-3&4000 <
UKB,	0		/DETACHED BACKBGOUND
UTTY,	0		/DETACHED BACKGROUND >
UCOUNT,	0		/COUNTER FOR "BS"
USLOT,	MAXSLOT+3	/WAIT-FOR-BG-IN-CORE SLOT
UACCNT,	ZBLOCK 2	/LOWORDER, HIGHORDER CPU USAGE
			/IN UNITS OF DGNTICK
IFDEF FPP <
UFPST,	0		/FPP STATUS
UAPTH,	0		/HIGH 3 BITS OF APT ADDRESS
UAPTL,	0		/LOW 12 BITS OF APT ADDRES >
UNEXT,
IFZERO BGMAX-3 <BG1>	/POINTER TO FIRST BG
IFNZRO BGMAX-3 <BG4>	/POINTER TO NEXT BG
UEND=.			/END FOR THIS BG

	RELOC		/END OF RELATIVE DEFINITIONS >
IFZERO BGMAX-4&4000 <	/THE FOURTH BG:
BG4,	RELOC 0		/ALL FOLLOWING SYMBOLS ARE RELATIVE

USTAT,	INACTIVE+BGSTOP+ONDISK	/STATUS FOR BACKGROUND SCHEDULER
UMQ,	0		/USERS MEMORY QUOTIENT REGISTER
USC,	0		/MSS.SSS.FFF.XXXA/B MODE,
			/STEPCOUNTER AND LOCKED FIELD
UPC,	7201		/USERS CURRENT PROGRAM COUNTER
UFLDS,	100		/LGX.XXU.III.FFF: LINK, GREATER-THAN,
			/USER MODE, VIRTUAL INSTRUCTION & DATAFIELD
UAC,	0		/USERS CURRENT ACCUMULATOR
UINST,	0		/LAST EMULATED INSTRUCTION
USW,	0		/USERS SWITCH REGISTER (VIRTUAL)
UTEMP,	0		/SCRATCH LOCATION #1
UTEM2,	0		/SCRATCH LOCATION #2
UDTV,	ZBLOCK 3	/TRANSFER VECTOR
UASEM,	ZBLOCK ASEMMX	/EMULATORS PLUG THEIR NAMES HERE
UBUFIN,	3		/COUNTER OF INPUT BUFFER
	BG4IN+1		/READ POINTER
	BG4IN+1+3	/WRITE POINTER
UBUFOUT,0		/COUNTER OF OUTPUT BUFFER
	BG4OUT+1	/READ POINTER
	BG4OUT+1	/WRITE POINTER
UWRTR,	KHOBG4+4	/TCBP OF OUTPUT WRITER
UCUR,	EMBG4+4		/TCBP OF EMULATOR
IFDEF USESY4 <
UCHNL0,	USYS4		/DRIVER FOR USERS' SYS: >
IFNDEF USESY4 <
UCHNL0,	"D^100+"K&3777	/DRIVER FOR USERS' SYS: >

UNUMB,	4544		/FILE STRUCTURED, DEVICE TYPE 54, UNIT #
	"S^100+"Y&3777	/ENTRY FOR DSK0:
	6500		/READ ONLY, OS/8 SYSTEM, UNIT 0
	ZBLOCK 4	/CHANNEL 2-3
UECHO,	0		/ECHO FLAG, 4000=NO ECHO
UFLD0,	ZBLOCK BGCORE	/TABLE OF REAL FIELDS
UCHAR,	0		/THE CURRENT INPUT CHARACTER
IFZERO TTYMAX-4&4000 <
UKB,	K1TCBP+60	/TCBP OF INPUT TASK
UTTY,	T1TCBP+60	/TCBP OF OUTPUT HANDLER >
IFNZRO TTYMAX-4&4000 <
UKB,	0		/DETACHED BACKBGOUND
UTTY,	0		/DETACHED BACKGROUND >
UCOUNT,	0		/COUNTER FOR "BS"
USLOT,	MAXSLOT+4	/WAIT-FOR-BG-IN-CORE SLOT
UACCNT,	ZBLOCK 2	/LOWORDER, HIGHORDER CPU USAGE
			/IN UNITS OF DGNTICK
IFDEF FPP <
UFPST,	0		/FPP STATUS
UAPTH,	0		/HIGH 3 BITS OF APT ADDRESS
UAPTL,	0		/LOW 12 BITS OF APT ADDRES >
UNEXT,
IFZERO BGMAX-4 <BG1>	/POINTER TO FIRST BG
IFNZRO BGMAX-4 <BG5>	/POINTER TO NEXT BG
UEND=.			/END FOR THIS BG

	RELOC		/END OF RELATIVE DEFINITIONS >
IFZERO BGMAX-5&4000 <	/THE FIFTH BG:
BG5,	RELOC 0		/ALL FOLLOWING SYMBOLS ARE RELATIVE

USTAT,	INACTIVE+BGSTOP+ONDISK	/STATUS FOR BACKGROUND SCHEDULER
UMQ,	0		/USERS MEMORY QUOTIENT REGISTER
USC,	0		/MSS.SSS.FFF.XXXA/B MODE,
			/STEPCOUNTER AND LOCKED FIELD
UPC,	7201		/USERS CURRENT PROGRAM COUNTER
UFLDS,	100		/LGX.XXU.III.FFF: LINK, GREATER-THAN,
			/USER MODE, VIRTUAL INSTRUCTION & DATAFIELD
UAC,	0		/USERS CURRENT ACCUMULATOR
UINST,	0		/LAST EMULATED INSTRUCTION
USW,	0		/USERS SWITCH REGISTER (VIRTUAL)
UTEMP,	0		/SCRATCH LOCATION #1
UTEM2,	0		/SCRATCH LOCATION #2
UDTV,	ZBLOCK 3	/TRANSFER VECTOR
UASEM,	ZBLOCK ASEMMX	/EMULATORS PLUG THEIR NAMES HERE
UBUFIN,	3		/COUNTER OF INPUT BUFFER
	BG5IN+1		/READ POINTER
	BG5IN+1+3	/WRITE POINTER
UBUFOUT,0		/COUNTER OF OUTPUT BUFFER
	BG5OUT+1	/READ POINTER
	BG5OUT+1	/WRITE POINTER
UWRTR,	KHOBG5+4	/TCBP OF OUTPUT WRITER
UCUR,	EMBG5+4		/TCBP OF EMULATOR
IFDEF USESY5 <
UCHNL0,	USYS5		/DRIVER FOR USERS' SYS: >
IFNDEF USESY5 <
UCHNL0,	"D^100+"K&3777	/DRIVER FOR USERS' SYS: >

UNUMB,	4555		/FILE STRUCTURED, DEVICE TYPE 55, UNIT #
	"S^100+"Y&3777	/ENTRY FOR DSK0:
	6500		/READ ONLY, OS/8 SYSTEM, UNIT 0
	ZBLOCK 4	/CHANNEL 2-3
UECHO,	0		/ECHO FLAG, 4000=NO ECHO
UFLD0,	ZBLOCK BGCORE	/TABLE OF REAL FIELDS
UCHAR,	0		/THE CURRENT INPUT CHARACTER
IFZERO TTYMAX-5&4000 <
UKB,	K1TCBP+100	/TCBP OF INPUT TASK
UTTY,	T1TCBP+100	/TCBP OF OUTPUT HANDLER >
IFNZRO TTYMAX-5&4000 <
UKB,	0		/DETACHED BACKBGOUND
UTTY,	0		/DETACHED BACKGROUND >
UCOUNT,	0		/COUNTER FOR "BS"
USLOT,	MAXSLOT+5	/WAIT-FOR-BG-IN-CORE SLOT
UACCNT,	ZBLOCK 2	/LOWORDER, HIGHORDER CPU USAGE
			/IN UNITS OF DGNTICK
IFDEF FPP <
UFPST,	0		/FPP STATUS
UAPTH,	0		/HIGH 3 BITS OF APT ADDRESS
UAPTL,	0		/LOW 12 BITS OF APT ADDRES >
UNEXT,
IFZERO BGMAX-5 <BG1>	/POINTER TO FIRST BG
IFNZRO BGMAX-5 <BG6>	/POINTER TO NEXT BG
UEND=.			/END FOR THIS BG

	RELOC		/END OF RELATIVE DEFINITIONS >
IFZERO BGMAX-6&4000 <	/THE SIXTH BG:
BG6,	RELOC 0		/ALL FOLLOWING SYMBOLS ARE RELATIVE

USTAT,	INACTIVE+BGSTOP+ONDISK	/STATUS FOR BACKGROUND SCHEDULER
UMQ,	0		/USERS MEMORY QUOTIENT REGISTER
USC,	0		/MSS.SSS.FFF.XXXA/B MODE,
			/STEPCOUNTER AND LOCKED FIELD
UPC,	7201		/USERS CURRENT PROGRAM COUNTER
UFLDS,	100		/LGX.XXU.III.FFF: LINK, GREATER-THAN,
			/USER MODE, VIRTUAL INSTRUCTION & DATAFIELD
UAC,	0		/USERS CURRENT ACCUMULATOR
UINST,	0		/LAST EMULATED INSTRUCTION
USW,	0		/USERS SWITCH REGISTER (VIRTUAL)
UTEMP,	0		/SCRATCH LOCATION #1
UTEM2,	0		/SCRATCH LOCATION #2
UDTV,	ZBLOCK 3	/TRANSFER VECTOR
UASEM,	ZBLOCK ASEMMX	/EMULATORS PLUG THEIR NAMES HERE
UBUFIN,	3		/COUNTER OF INPUT BUFFER
	BG6IN+1		/READ POINTER
	BG6IN+1+3	/WRITE POINTER
UBUFOUT,0		/COUNTER OF OUTPUT BUFFER
	BG6OUT+1	/READ POINTER
	BG6OUT+1	/WRITE POINTER
UWRTR,	KHOBG6+4	/TCBP OF OUTPUT WRITER
UCUR,	EMBG6+4		/TCBP OF EMULATOR
IFDEF USESY6 <
UCHNL0,	USYS6		/DRIVER FOR USERS' SYS: >
IFNDEF USESY6 <
UCHNL0,	"D^100+"K&3777	/DRIVER FOR USERS' SYS: >

UNUMB,	4566		/FILE STRUCTURED, DEVICE TYPE 56, UNIT #
	"S^100+"Y&3777	/ENTRY FOR DSK0:
	6500		/READ ONLY, OS/8 SYSTEM, UNIT 0
	ZBLOCK 4	/CHANNEL 2-3
UECHO,	0		/ECHO FLAG, 4000=NO ECHO
UFLD0,	ZBLOCK BGCORE	/TABLE OF REAL FIELDS
UCHAR,	0		/THE CURRENT INPUT CHARACTER
IFZERO TTYMAX-6&4000 <
UKB,	K1TCBP+120	/TCBP OF INPUT TASK
UTTY,	T1TCBP+120	/TCBP OF OUTPUT HANDLER >
IFNZRO TTYMAX-6&4000 <
UKB,	0		/DETACHED BACKBGOUND
UTTY,	0		/DETACHED BACKGROUND >
UCOUNT,	0		/COUNTER FOR "BS"
USLOT,	MAXSLOT+6	/WAIT-FOR-BG-IN-CORE SLOT
UACCNT,	ZBLOCK 2	/LOWORDER, HIGHORDER CPU USAGE
			/IN UNITS OF DGNTICK
IFDEF FPP <
UFPST,	0		/FPP STATUS
UAPTH,	0		/HIGH 3 BITS OF APT ADDRESS
UAPTL,	0		/LOW 12 BITS OF APT ADDRES >
UNEXT,
IFZERO BGMAX-6 <BG1>	/POINTER TO FIRST BG
IFNZRO BGMAX-6 <BG7>	/POINTER TO NEXT BG
UEND=.			/END FOR THIS BG

	RELOC		/END OF RELATIVE DEFINITIONS >
IFZERO BGMAX-7&4000 <	/THE SEVENTH BG:
BG7,	RELOC 0		/ALL FOLLOWING SYMBOLS ARE RELATIVE

USTAT,	INACTIVE+BGSTOP+ONDISK	/STATUS FOR BACKGROUND SCHEDULER
UMQ,	0		/USERS MEMORY QUOTIENT REGISTER
USC,	0		/MSS.SSS.FFF.XXXA/B MODE,
			/STEPCOUNTER AND LOCKED FIELD
UPC,	7201		/USERS CURRENT PROGRAM COUNTER
UFLDS,	100		/LGX.XXU.III.FFF: LINK, GREATER-THAN,
			/USER MODE, VIRTUAL INSTRUCTION & DATAFIELD
UAC,	0		/USERS CURRENT ACCUMULATOR
UINST,	0		/LAST EMULATED INSTRUCTION
USW,	0		/USERS SWITCH REGISTER (VIRTUAL)
UTEMP,	0		/SCRATCH LOCATION #1
UTEM2,	0		/SCRATCH LOCATION #2
UDTV,	ZBLOCK 3	/TRANSFER VECTOR
UASEM,	ZBLOCK ASEMMX	/EMULATORS PLUG THEIR NAMES HERE
UBUFIN,	3		/COUNTER OF INPUT BUFFER
	BG7IN+1		/READ POINTER
	BG7IN+1+3	/WRITE POINTER
UBUFOUT,0		/COUNTER OF OUTPUT BUFFER
	BG7OUT+1	/READ POINTER
	BG7OUT+1	/WRITE POINTER
UWRTR,	KHOBG7+4	/TCBP OF OUTPUT WRITER
UCUR,	EMBG7+4		/TCBP OF EMULATOR
IFDEF USESY7 <
UCHNL0,	USYS7		/DRIVER FOR USERS' SYS: >
IFNDEF USESY7 <
UCHNL0,	"D^100+"K&3777	/DRIVER FOR USERS' SYS: >

UNUMB,	4577		/FILE STRUCTURED, DEVICE TYPE 57, UNIT #
	"S^100+"Y&3777	/ENTRY FOR DSK0:
	6500		/READ ONLY, OS/8 SYSTEM, UNIT 0
	ZBLOCK 4	/CHANNEL 2-3
UECHO,	0		/ECHO FLAG, 4000=NO ECHO
UFLD0,	ZBLOCK BGCORE	/TABLE OF REAL FIELDS
UCHAR,	0		/THE CURRENT INPUT CHARACTER
IFZERO TTYMAX-7&4000 <
UKB,	K1TCBP+140	/TCBP OF INPUT TASK
UTTY,	T1TCBP+140	/TCBP OF OUTPUT HANDLER >
IFNZRO TTYMAX-7&4000 <
UKB,	0		/DETACHED BACKBGOUND
UTTY,	0		/DETACHED BACKGROUND >
UCOUNT,	0		/COUNTER FOR "BS"
USLOT,	MAXSLOT+7	/WAIT-FOR-BG-IN-CORE SLOT
UACCNT,	ZBLOCK 2	/LOWORDER, HIGHORDER CPU USAGE
			/IN UNITS OF DGNTICK
IFDEF FPP <
UFPST,	0		/FPP STATUS
UAPTH,	0		/HIGH 3 BITS OF APT ADDRESS
UAPTL,	0		/LOW 12 BITS OF APT ADDRES >
UNEXT,	BG1		/NOTE! BG7 IS ALWAYS THE LAST ONE
UEND=.			/END FOR THIS BG

	RELOC		/END OF RELATIVE DEFINITIONS >
			/END OF BGMAX CONDITIONAL >
/END OF FIELD 1 DATA AREA.
PAGE
DOTF10=.
IFNZRO PASS1 <
ENDF10=DOTF10-1
ENDF20=DOTF20-1
ENDF30=DOTF30-1
ENDF40=DOTF40-1
ENDF50=DOTF50-1
ENDF60=DOTF60-1
ENDF70=DOTF70-1>