IMD 1.16: 30/08/2008 23:30:37 84-94121-01 b030 f12101 cartos macros II product disk   }fA __M@IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIICARTOSMA282100513242240830907141448 830907141448BF12101 VOL84-94121-01 CARTOS MACROS II PRODUCT DISKETTE (B030)   IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII_M@qGyy GGG`HX@ b G`^Y e GQ @@p@987 85P@ G:پN 8)0. * C'xC# b# }B* @0DAJL w+™ЀЀΖQA1"   i  ž} š} @EEFF)DEۄF8 џ} ԟ} ̟} * `jUBBI,v BI, # @ G7H@pܾrCHC C GTq` Lg gEXC P+s=胾P+c fQN p $Rxnj  ޔniZ ތ⊞ } }HGž Ÿ@ALS)"$ C k20j.h( +$`%ꂜ\1 !M' y %'+os慾)sY ed|{ @8 o O m J K i gN )V% t%sLn`"E F. F„ D>) =`;nrgy w"G,{Kq1 A&}E*`(t@% ;c  765y342(.OS:: SYSG @ @G6BDāCGDĀ# BC @E OB TITL ACTIVITY CONTROL BLOCK - ACB.MAC - 84-94150-66 (A307) *************************************************************** * * ACTIVITY CONTROL BLOCK (ACB) EQUATES * * +----------+ * -1 | ACB:CKW | Checkword for ACB. * +----------+ * 0 | ACB:PER | Next ACB on chain. * +----------+ * 1 | ACB:FLG | Flag word. * +----------+ * 2 | ACB:EA | Effective address of last system entrance. * +----------+ *  3 | ACB:PRIO | The current priority of the activity. * +----------+ * 4 | ACB:TCB | The TCB used when beginning this activity. * +----------+ * 5 | ACB:ECB | The ECB to which the activity belongs. * +----------+ * 6 | ACB:EAPL | The next ACB on the Environment ACB peer list. * +----------+ * 7 | ACB:P | Beginning of activity context. P-Register. * +----------+ * 8 | ACB:L  | L-register. * +----------+ * 9 | ACB:S | S-Register. * +----------+ * A | ACB:A | A-Register. * +----------+ * B | ACB:Q | Q-Register. * +-------- --+ * C | ACB:X | X-Register. * +----------+ * D | ACB:Y | Y-Register. *  +----------+ * E | ACB:K | K-Register. * +----------+ * F | ACB:SIN | Remaining SIN count. * +----------+ * 10 | ACB:LM | End of activity context. Logical map. * +----------+ * 11 | ACB:DB | Door stack block in use by activity. * +----------+ * 12 | ACB:TCNT |  Remaining tics in current activity time slice. * +----------+ * 13 | ACB:U:P | Pushed (User*s) context begin. P-Register. * +----------+ * 14 | ACB:U:L | L-Register. * +----------+ * 15  | ACB:U:S | S-Register. * +----------+ * 16 | ACB:U:A | A-Register. * +----------+ * 17 | ACB:U:Q | Q-Register. * +----------+ * 18 | ACB:U:X | X-Register. *  +----------+ * 19 | ACB:U:Y | Y-Register. * +----------+ * 1A | ACB:U:K | K-Register. * +----------+ * 1B | ACB:LHD | List head address for ACB. * +----------+ * 1C | ACB:U:LM | Logical map number. * +----------+ * 1D | ACB:ISTK | Initial dynamic stack address. *  +----------+ * 1E | ACB:IY | Initial Y-scratch address. * +----------+ * 1F | ACB:INST | Instruction at last system entrance. * +----------+ * *************************************************************** ACB:CKW EQU -1 CHECKWORD ACB:PER EQU 0 PEER LIST POINTER ACB:FLG EQU 1 FLAGS ACB:EA EQU 2  EFFECTIVE ADDRESS AT LAST SYSTEM ENTRANCE ACB:PRIO EQU 3 PRIORITY ACB:TCB EQU 4 TCB POINTER ACB:ECB EQU 5 ECB POINTER ACB:EAPL EQU 6 ENVIRONMENT ACTIVITY PEER LIST ********************************************** *  * * CONTEXT BEGIN (THESE MUST BE CONTIGUOUS) * * * ********************************************** ACB:P EQU 7 P REGISTER * ACB:C:P EQU 0 CONTEXT -P- POINTER * ACB:L EQU 8 L REGISTER * ACB:S EQU 9 S REGISTER * ACB:A EQU 10  A REGISTER * ACB:Q EQU 11 Q REGISTER * ACB:X EQU 12 X REGISTER * ACB:Y  EQU 13 Y REGISTER * ACB:K EQU 14 K REGISTER * ACB:SIN EQU 15 SIN COUNT  * ACB:LM EQU 16 LOGICAL MAP * *************** CONTEXT AREA END ************* ACB:DB EQU 17 DOOR STACK BLOCK USED BY ACTIVITY ACB:TCNT EQU 18 REMAINING TIC TIME * THE USER'S CONTEXT IS USED TO SAVE A CONTEXT * WHILE INSIDE THE SYSTEM. ************** USER'S CONTEXT ************** ACB:U:P EQU 19 USER'S -P- * ACB:U:L EQU 20 -L- * ACB:U:S EQU 21 -S- * ACB:U:A EQU 22 -A- * ACB:U:Q EQU 23 -Q- * ACB:U:X EQU 24 -X- * ACB:U:Y EQU 25 -Y- * ACB:U:K  EQU 26 -K- * ACB:U:SN EQU 27 SIN REG. ACB:LHD EQU 27 LIST HEAD ADDRESS ACB:U:LM EQU 28 LOGICAL MAP * ******************************************** ACB:ISTK EQU 29 INITIAL STACK POINTER ACB:IY EQU 30 INITIAL -Y- POINTER ACB:INST EQU 31 INSTRUCTION AT LAST SYSTEM ENTRANCE ACB:SIZ EQU 32 SIZE OF THE ACB * * FLAGS DEFINED * ACB:FIDL EQU 1 IS IT THE IDLE ACTIVITY (YES=1) ACB:FTSH EQU 2 IS IT TIME-SHARED (YES=1) ACB:FTS EQU 1%ACB:FTSH TIME-SHARE BIT POSITION ACB:FSIU EQU 3 USING ENVTS FIXED EXCEPTION STACK ACB:FSER EQU 4 IS IT OK FOR S: CALLS? ACB:MSER EQU 1%ACB:FSER S SERVICE MAP ACB:FSAC EQU 5 (AT LEAST TEMPORARY) SYSTEM ACTIVITY ACB:MSAC EQU 1%ACB:FSAC  SYSTEM ACTIVITY MASK ACB:FEX EQU 7 DID THIS ACTIVITY HAVE AN EXCEPTION (1=YES) ACB:FTXP EQU 8 DID THIS ACB'S TIMER EXPIRE? ACBN:ASA EQU 9 ALWAYS SYSTEM ACTIVITY ACBF:ASA EQU 1%ACBN:ASA MASK FOR ABOVE * * BITS 14-12 IN ACB:FLG IS THE LIST TYPE WHERE THE ACB IS CHAINED. * ACBL:RUN EQU 0%12 READY LIST OR INTERRUPT QUEUE ACBL:SEM EQU 1%12 SEMAPHORE ACBL:IO  EQU 2%12 WAITING ON I/O ACBL:PRO EQU 3%12 BEING PROCESSED INSIDE SYSTEM ACBL:INS EQU 4%12 SUSPENDED INSIDE SYSTEM DOOR ACBL:DST EQU 5%12 WAITING FOR DESTROY ACBL:SUS EQU 6%12 SUSPEND ENVIRONMENT LIST ACBL:STK EQU 7%12 DOOR STACK BLOCK WAIT LIST ACBM:LST EQU :7000 MASK FOR LIST TYPE * * OTHER INFORMATION ABOUT THE ACB * ACB:CLEN EQU 10 LENGTH OF A CONTEXT * ACB: MACRO * * * ACTIVITY CONTROL BLOCK DEFINITION MACRO * * CALLING SEQUENCE: * * ACBLABEL ACB: P1,P2,...,P14 * *  P1 = LIST ON WHICH ACB BELONGS (DEFAULTS TO INTQ:) * P2 = INITIAL ACB FLAG WORD (DEFAULTS TO ACB:MSER) *  P3 = INITIAL PRIORITY OF THIS ACB (DEFAULTS TO 1) * P4 = ADDRESS OF TCB FOR THIS ACB (DEFAULTS TO 0) * P5 = ADDRESS OF ECB FOR THIS ACB (DEFAULTS TO SECB:) * P6 = THE INITIAL "P" REGISTER CONTENTS (EXECUTION ADDRESS) *  P7 = THE ACTIVITY STACK UPPER LIMIT ("K" REGISTER) * P8 = THE ACTIVITY STACK LOWER LIMIT ("L" REGISTER) *  P9 = THE INITIAL "S" REGISTER CONTENTS (DEFAULTS TO :170) * P10 = THE INITIAL "A" REGISTER CONTENTS (DEFAULTS TO ZERO) * P11 = THE INITIAL "Q" REGISTER CONTENTS (DEFAULTS TO ZERO) * P12 = THE INITIAL "X" REGISTER CONTENTS (DEFAULTS TO ZERO) * P13 = THE INITIAL "Y" REGISTER CONTENTS (DEFAULTS TO ZERO) * P14 = THE EAPL CHAIN WORD (DEFAULTS TO ACB:) * * Macro invocation: * * #(-1) ACB: #1,#2,#3,#4,#5,#6,#7,#8,#9,#10,#11,#12,#13,#14 * MACLAB CHECKP: #(?),8,14 NAM #(-1) EXTR SECB: #(-1) STSTART: ACB:SIZ,CKW:ACB IFF #(1,?) IF THE FIRST PARAMETER IS NULL, CHAIN TO INTQ: ACB:PER CHAN: INTQ: ENDC IFT #(1,?) IF THE FIRST PARAMETER IS PRESENT, GEN WORD #(1) ACB:PER WORD: #(1) ENDC ACB:FLG WORD: #(2),ACB:MSER INITIAL ACB FLAG WORD (WITH PRIVILEGE BITS) ACB:PRIO WORD: #(3),1 ACB INITIAL PRIORITY VALUE ACB:TCB WORD: #(4),0 POINTER TO THE TASK CONTROL BLOCK FOR THIS ACB ACB:ECB WORD: #(5),SECB: POINTER TO THE ECB THIS ACB BELONGS TO IFF #(14,?) IF THE 14TH PARAMETER IS NULL, CHAIN TO ACB: ACB:EAPL CHAN: ACB: ENDC IFT #(14,?) IF THE 14TH PARAMETER IS PRESENT, GEN WORD #(14 ) ACB:EAPL WORD: #(14) ENDC ACB:P WORD: #(6) INITIAL "P" REGISTER (EXECUTION ADDRESS) ACB:L WORD: #(8) INITIAL "L" REGISTER CONTENTS ACB:S WORD: #(9),:170 INITIAL "S" REGISTER CONTENTS ACB:A WORD: #(10),0 INITIAL "A" REGISTER CONTENTS ACB:Q WORD: #(11),0 INITIAL "Q" REGISTER CONTENTS ACB:X WORD: #(12),0 INITIAL "X" REGISTER CONTENTS ACB:Y WORD: #(13),0 INITIAL "Y" REGISTER CONTENTS ACB:K WORD: #(7) INITIAL "K" REGISTER CONTENTS TEND: ENDM M M M M M M M M M M M M M M M M M M M M M M M M M M M M M IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII TITL BUFFER CONTROL BLOCK EQUATES - BCB.MAC - 84-94150-69 (A307) ******************************************************************** * * * Buffer Control Block (BCB)  * * ------ ------- ----- ----- * *  * * * * +----------+  * * -1 | BCB:CKW | The BCB checkword * * +----------+ * * 0 | BCB:BUFS | The size of each buffer * *  +----------+ * * 1 | BCB:NBUF | The initial number of buffers * *  +----------+ * * 2 | BCB:HEAD | The free buffer list head pointer * * +----------+ * * 3 | BCB:TAIL | The free buffer list tail pointer * * +----------+ * * 4 | BCB:STRT | The buffer pool start address * * +----------+ * *  * * * * BCB:CKW - The buffer pool control block checkword. This word * * is used to verify the integrity of the system and provide * * a way fo rthe post-mortem dump utility to identify this * * table. * * * * BCB:BUFS - The size of each individual buffer in the buffer * * pool. This size is given in words. * *  * * BCB:NBUF - The initial number of buffers allocated to the * * buffer pool. This count is not modified after system * * initialization. Buffers may be added to the pool from * * EMP space but are not added into this count. * * * * BCB:HEAD - The head of the free buffer list. This points to * * the next available buffer on the free list. Buffers are * * a lways removed from the head of the list and replaced * * on the tail of the list. * * * * BCB:TAIL - The tail of the free buffer list. This points to * * the end of the free list. When a buffer is returned to * * the free list, it is placed at the end of the list. * * * * BCB:STRT - The stating address of the initial buffer pool * * allocation. The buffer pool is established during system * * initialization according to parameters specified in the * * system generation table. This initial allocation is * * always an integral number of pages but this allocation * * does not have to be on a page boundary. * *  * ******************************************************************** * * * DEFINE THE EQUATES FOR THE BUFFER CONTROL BLOCK * * BCB:CKW EQU -1 BCB:BUFS EQU 0 THE SIZE OF EACH BUFFER IN WORDS BCB:NBUF EQU 1 THE INITIAL NUMBER OF BUFFERS IN THE POOL BCB:HEAD EQU 2 THE POINTER TO THE FIRST BUFFER OF THE FREE LIST BCB:TAIL EQU 3 THE POINTER TO THE LAST BUFFER OF THE FREE LIST BCB:STRT EQU 4 THE STARTING ADDRESS OF THE INITIAL BUFFER POOL * * *  DEFINE THE MISCELLANEOUS BUFFER POOL EQUATES * * BCB:SIZ EQU 5 NUMBER OF WORDS IN BCB TABLE * BCB:SBSZ EQU 16 SIZE OF A SMALL BUFFER BCB:MBSZ EQU 32 SIZE OF A MEDIUM BUFFER BCB:DBSZ EQU 128 SIZE OF A DOOR STACK BUFFER BCB:EXTC EQU 8 NUMBER OF BUFFERS IN AN EMP EXTENSION i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i iIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII TITL CLOCK CONTROL BLOCK EQUATES - 84-94151-60 (A300) ************************************************************************ * * +----------+ * -1 | CCB:CKW | Table checkword * +----------+ * 0 | CCB:PEER | Peer pointer * +----------+ * 1 | CCB:FLAG | Flag word * +----------+ * 2 | CCB:USG | Usage count for this block * +----------+ * 3 | CCB:ID | Identifier for this block * +----------+ * 4 | CCB:ECB | Pointer to the Environment Control Block * +----------+ * 5 | CCB:SCB | Pointer to semaphore control block * +----------+ * 6 | CCB:TEXT | Ticks until expiration of the clock (32bits) * +- - - - - + * 7 | | * +----------+ * 8 | CCB:INIT | Initial reqest (32bits) * +- - - - - + * 9 | | * +----------+ * * CCB:CKW - Table checkword. This word is checked when this * block is accessed to ensure system integrity. * * CCB:PEER - Pointer to the next CCB on the chain. The head of this * chain is in the Clock Control Table (CCT). A zero peer * indicates the last block in the chain. * * CCB:FLAG - Flag wor d. Four bits in this word currently have meaning. * bit 0 - When on, indicates a tick clock. * bit 1 - When on, indicates a wall clock. * bit 2 - When on, indicates a absolute wall clock. * bit 3 - When on, indicates a permanent tick clock. * * CCB:USG - The use count of this block. Whenever this block is in * use by the block deletion and insertion routines, it is * incremented. The block will never go away while the usage * count indicates someone needs this block. * * CCB:ID - The identifier for this block. This id must be unique * amongst types of clocks (tick or wall). * * CCB:ECB - A pointer to the Environment Control Block responsible * for this clock. * * CCB:SCB - A pointer to the Semaphore Control Block associated with * this clock. This semaphore is signalled when the clock * expires. Internally, when the clock is installed on the * chain, the SCB is found and marked in use, and the address * of the SCB is put in this word. * * CCB:TEXT - The ticks remaining until expiration. A maximum of 31 bits * of ticks for any clock. * * CCB:INIT - The initial request. This word is used for restarting *  PERMANENT clocks. ************************************************************************ * * CLOCK CONTROL BLOCK EQUATES (CCB) * * CCB:CKW EQU -1 CHECK WORD CCB:PEER EQU 0 PEER POINTER CCB:FLAG EQU 1 FLAGS ************************ * CCB:FLAG BIT EQUATES * ************************ CCB:TICK EQU 0 TICK CLOCK CCB:WALL EQU 1 WALL CLOCK (INTERVAL UNLESS OTHER BITS SET) CCB:AWAL EQU 2 ABSOLUTE WALL CLOCK CCB:PERM EQU 3 PERMANENT CLOCK ************************ * END FLAG EQUATES * ************************ CCB:USG EQU 2 CCB USAGE COUNT CCB:ID EQU 3 IDENTIFIER CCB:ECB EQU 4 ENVIRONMENT CONTROL BLOCK POINTER CCB:SCB EQU 5 SEMAPHORE BLOCK ADDRESS CCB:TEXP EQU 6 TICKS UNTIL EXPIRATION (SIGNED 32 BITS) CCB:INIT EQU 8 INITIAL REQUESTED OPERAND (2 WORDS) CCB:SIZE EQU 10 CCB LENGTH * * MISC. CLOCK AND CALENDAR EQUATES * TYPE:MSK EQU :3 CLOCK TYPE MASK (TICK OR WALL) ITIC: EQU 1%CCB:TICK TICK CLOCK IWAL: EQU 1%CCB:WALL INTERVAL WALL CLOCK AWAL: EQU 1%CCB:AWAL++IWAL: ABSOLUTE WALL CLOCK PERM: EQU 1%CCB:PERM PERMANENT CLOCK * CCB: MACRO * * CLOCK CONTROL BLOCK DEFINITION MACRO * * CALLING SEQUENCE: * * LABEL CCB: P1,P2,P3,P4,P5,P6 * * * P1 = FLAG WORD (DEFAULTS TO 0) * P2 = ID (DEFAULTS TO 0) * P3 = ECB ADDRESS (DEFAULTS TO SECB:) * P4 = SCB ADDRESS * P5 = SIGNED 32 BIT NUMBER OF TICKS (MUST BE POSITIVE) * P6 = SIGNED 32 BIT INITIAL TICK COUNT (MUST BE POSITIVE) * MACLAB CHECKP: #(?),6,6 NAM #(-1) #(-1) STSTART: CCB:SIZE,CKW:CCB CCB:PEER CHAN: CCB: CCB:FLAG WORD: #(1),0 CCB:ID WORD: #(2),0 EXTR SECB: CCB:ECB WORD: #(3),SECB: CCB:SCB WORD: #(4) CCB:TEXP DOUBLE: #(5) CCB:INIT DOUBLE: #(6) TEND: ENDM M M M M M M M M M M M M M IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII  TITL CLOCK CONTROL TABLE EQUATES - CCT.MAC - 84-94151-61 (A300) ********************************************************************** * * +----------+ * -1 | CCT:CKW | Table checkword * +----------+ * 0 | CCT:HEAD | The head for the chain of CCB's * +----------+ * 1 | CCT:FLAG | Flag word * +----------+ * 2 | CCT:TPS  | Ticks per second * +----------+ * 3 | CCT:TSL | Time slice * +----------+ * 4 | CCT:SDT |  System date and time (48 bits) * +- - -- - -+ * | | * +- - -- - -+ * | | *  +- - -- - -+ * 7 | CCT:RTCI | Real time clock interval * +----------+ * 8 | CCT:IDCT | Last sytem generated identifier * +----------+ * 9 | CCT:TICT | Ticks accumulated since clocks updated * +----------+ * A | CCT:CLKD | Interval after EOB until EOB needed for clocks. * +----------+ * * CCT:CKW - Table checkword. Used to check sytem integrity and * to identify a block. * * CCT:HEAD - The head of the list of CLOCK CONTOL BLOCKS. This is * a system wide list. All clocks from all environments are * on this list. * * CCT:FLAG - No flag bits are defined. * * CCT:TPS - The ticks per second. This number is twice the line * frequency. * * CCT:TSL - Time slice. Not yet defined. * * CCT:SDT - The system date and time. 48 bits of ticks. * * CCT:RTCI - The interval in ticks until the next clock end of block.(16bits) * * CCT:IDCT - The last system generated identifier. The system will * generate an identifier if a zero or negative identifier * was used in the CLOCK block. The generated identifier *  is put in the users CLOCK block by the system. * * CCT:TICT - Ticks accumulated since the clocks were updated by * non clock EOB routines and not reflected in CCT:RTCI. * The total elapsed time since the clocks were last *  updated is always CCT:TICT plus CCT:RTCI plus the * negative value in location :91. * * CCT:CLKD - A positive ticks count indicates that the next EOB * is for a time-shared activity end. The number of * ticks is the clock delta until another EOB needed * for clocks. This allows the ticks count (in :91 * and CCT:RTCI) to be set when a time-shared activity * is paused without rescanning all of the CCBs. * * CLOCK CONTROL TABLE (CCT) * * CCT:CKW EQU -1 CCT CHECKWORD CCT:HEAD EQU 0 POINTER TO CCB LIST CCT:FLAG EQU 1 CCT FLAGS CCT:TPS EQU 2 TICKS PER SECOND CCT:TSL EQU 3 TIME SLICE CCT:SDT EQU 4 SYSTEM DATE AND TIME (IN 3 WRDS OF TICKS) CCT:RTCI EQU 7 REAL TIME CLOCK INTERVAL (16 BITS) CCT:IDCT EQU 8 LAST SYSTEM GENERATED ID CCT:TICT EQU 9 TICKS ACCUMULATED SINCE CLOCKS UPDATED CCT:CLKD EQU :A TICKS AFTER NEXT EOB UNTIL CLOCK EOB NEEDED CCT:SIZ EQU :B ***************************** * MISCELLANEOUS CCT EQUATES * ***************************** CCT:LWID EQU :8000 LOWER LIMIT FOR SYS. GEN'ED IDS CCT:MXID EQU :FFFE UPPER LIMIT FOR SYS. GEN.ED IDS  *CCT:PRIO DEFINED IN SYSCOMMON.MAC CCT:LF EQU 60 LINE FREQUENCY (USA) 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII TITL SYSTEM TABLE CHECKWORD VALUES - CKW.MAC - 84-94150-62 (A300) * * ******************************************************************** * * * This is the definition file for all of the system table * * checkwords. These checkwords are always an offset of -1 * * from the beginning of each table. i.e. the checkword * * immediately preceedes each table for which a checkword is * * defined. The checkwords are used to verify system integrity * * and for the post-mortem dump analyzer to easily identify * * system tables. * * * ******************************************************************** * CKW:ECB EQU :AA00 ENVIRONMENT CONTROL BLOCK CHECKWORD CKW:SPT EQU :AA01 SYSTEM POINTER TABLE CHECKWORD CKW:SGT EQU :AA02 SYSTEM GENERATION TABLE CHECKWORD CKW:MCT EQU :AA03 MEMORY CONTROL TABLE CHECKWORD CKW:BCB EQU :AA04 BUFFER CONTROL BLOCK CHECKWORD CKW:ACB EQU :AA05 ACTIVITY CONTROL BLOCK CHECKWORD CKW:TCB EQU :AA06 TASK CONTROL BLOCK CHECKWORD CKW:QCB EQU :AA07 QUEUE CONTROL BLOCK CHECKWORD CKW:QIB EQU :AA08 QUEUE INFORMATION BLOCK CHECKWORD CKW:DCT EQU :AA09 DISPATCHER CONTROL TABLE CHECKWORD CKW:CCT EQU :AA0A CLOCK CONTROL TABLE CHECKWORD CKW:MCB EQU :AA0B MAILBOX CONTROL BLOCK CHECKWORD CKW:STK EQU :AA0F USER-INSIDE-THE-DOOR STACK CKW:MAB EQU :AA10 EMP MEMORY ALLOCATION BLOCK CHECKWORD CKW:SCB EQU :AA11 SEMAPHORE BLOCK CHECKWORD CKW:EAB EQU :AA12 AUXILIARY ENVIRONMENT CONTROL BLOCK CHECKWORD CKW:CCB EQU :AA13 CLOCK CONTROL BLOCK CHECKWORD CKW:EMP EQU :AA14 EMP HEADER CHECKWORD CKW:ICB EQU :AA15 INTERRUPT CONTROL BLOCK CHECKWORD CKW:IPB EQU :AA16 I/O PROCESSOR BLOCK CHECKWORD CKW:LUB EQU :AA17 LOGICAL UNIT BLOCK CHECKWORD CKW:FPT EQU :AA18 FILE MANAGER PHYSICAL UNIT NAME TABLE CHECKWORD CKW:RCB EQU :AA19 REGION CONTROL BLOCK (SHARED MEM) CHECKWORD D D D D D D D D D D  TITL DMA MAP TABLE EQUATES - DMT.MAC - 84-94151-62 (A300) ******************************************************************** * * * DMA Map Table (DMT)  * * --- --- ----- ----- * *  * * * * BUFFER ADDR. LOGICAL MAP/PAGE * * +----------------+----------------+ * * 0|  | / | * * L +----------------+----------------+ * * O 1|  | / | * * G +----------------+----------------+ * * I  2| | / | * * C +----------------+----------------+ *  * A 3| | / | * * L +----------------+----------------+  * * 4| | / | * * P +----------------+----------------+ * * A . . . * * G . .  . * * E . . . * * +----------------+----------------+ * * # 63| | / | * * +----------------+----------------+ * * * * The first word of this table will contain the address of the * * buffer allocated in the DMA map. For example, if a buffer * * is allocated 10 words from the beginning of page 1 of the * * DMA map, the first word of the table corresponding to this * * buffer will contain :410. * *  * * The second word of the table is divided up into two eight * * bit fields. The first field is the logical map number which * * identifies the owner of this buffer and the second field * * contains the logical page number within that map where the * * actual buffer resides. * *  * ******************************************************************** * * *  DEFINE THE DMA MAP TABLE EQUATES * * DMT:ADDR EQU 0 THE BUFFER ADDRESS WORD DMT:LMLP EQU 1 THE LOGICAL MAP AND LOGICAL PAGE IDENTIFIERS * * * DEFINE THE DMT:LMLP WORD BIT MASKS * * DMTM:LMN EQU :FF00 LOGICAL MAP NUMBER BIT MASK DMTM:LPN EQU :00FF LOGICAL PAGE NUMBER BIT MASK * * * DEFINE THE MISCELLANEOUS DMT EQUATES * * DMT:WDTH EQU 2 THE WIDTH OF THE DMT IN WORDS DMT:LEN EQU 64 THE LENGTH OF THE DMT IN WORDS DMT:SIZ EQU DMT:WDTH*DMT:LEN THE SIZE OF THE DMT IN WORDS DMT:MPNM EQU 1 DMA PHYSICAL MAP NUMBER DMT:LMNM EQU 1 DMA LOGICAL MAP NUMBER DMT:MT EQU -1 CONTENTS OF THE BUFFER ADDRESS WORD IF THE PAGE IS UNUSED DMT:SWAP EQU 63 LOGICAL PAGE DEDICATED TO SWAPPING G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII TITL AUXILIARY ENVIORNMENT CONTROL BLOCK - 84-94151-63 (A300) ******************************************************************* * * ENVIRONMENT AUXILIARY BLOCK * * * +----------+ * -1 | EAB:CKW | Check word * +----------+ * 0 | 0 | Reserved * +----------+ * 1 | EAB:FLG | Flag word * +----------+ * 2 | EAB:PEMP | Parent EMP block allocated * +----------+ * 3 | EAB:BIPB | Broken IPB list * +----------+ * 4 | EAB:EXTK | Execution time in clock ticks (2 words) * +- - - - - + * 5 | | * +----------+ * 6 | EAB:TICS | Time remaining in clock ticks *   +----------+ * 7 | EAB:ELTK | Elapsed time in clock ticks (2 words) * +- - - - - + * 8 |  | * +----------+ * 9 | EAB:EOFF | Environment time at boot (quarter seconds) * +- - - - - + * A | | * +----------+ * B | EAB:LMUS | Logical maps available for subordiantes * +----------+ * C | EAB:PMUS | Physical page usage count * +----------+ * D | EAB:LOW | Low address of loaded Environment * +----------+ * E | EAB:HIGH | High address of loaded Environment * +----------+ * F | EAB:WEXE | Subordinate ACB's with exceptions * +----------+ *  10 | EAB:WEXH | Wait list of ACB's processing exceptions * +----------+ * 11 | EAB:WEXR | Subordinate ACB's with exceptions being processed * +----------+ * 12 | EAB:EMPS | Revolving search pointer for EMP allocation * +----------+ * 13 | EAB:XVT | Address of exception vector table * +----------+ * 14 | EAB:DBUS | Door stack available count * +----------+ * 15 | EAB:STKW | List of ACB's waiting for door stacks * +----------+ * 16 | EAB:UID | User ID (2 words) * +- - - - - + * 17 | | * +----------+ * 18 | EAB:IOCT | Count of IO calls in progress * +----------+ * 19 | EAB:IOWL | Wait list for IOCT to become zero * +----------+ * 1A | EAB:EMPH | Pointer to first EMP header for Environment * +----------+ * 1B | EAB:FPBH | Free page bounded header list * +----------+ * 1C | EAB:ESEM | System semaphore to protect EMP code * +- - - - - + *  1D | | (Signal limit = 1) * +- - - - - + * 1E | | (Activities waiting for EMP processing) * +- - - - - + * 1F | | (Initial value = 1) * +----------+ * * * EAB:CKW - The EAB checkword. * * EAB:FLG - The flag word. * * Bit 0 (EAB:FSU) - The exception stack is in use. * *  EAB:PEMP - The address of the EMP block allocated from * the parent Environment when this Environment is loaded * into its parent's address space and an EMP block is * obtained from the parent. * * EAB:BIPB - Pointer to the list of IPB's which have * received breaks that are being processed by this envt. * The TV decode Activity, R:WEX, and A:DISP use this list * using S:THREAD and S:UNTHRD. * * EAB:EXTK - A 32 bit counter which accumulates the total * time of execution of all Activities in the Environment * in units of Real-Time clock ticks. * * EAB:TICS - The number of ticks remaining in the time slice * for the currently time sliced activity in the Environment. * * EAB:ELTK - The ticks in the system when the R:GELT service * was last called (or when the Environment was loaded). * * EAB:EOFF - The Environment time at boot measured in * quarter seconds relative to a base date and time (normally * March 1, 1976 00:00:00:00) * * EAB:LMUS  - The number of logical maps which the Environment * may allocate to subordinates. This count does not include * the logical map which this Environment is loaded into (if * loaded into its own Environment). * * EAB:PMUS - The number of physical pages allocated to the * Environment. The current version of CARTOS does no * accounting based on this value. * * EAB:LOW - The low logical address of this loaded Environment. * * EAB:HIGH - The high logical address of this loaded Environment. * * EAB:WEXE - A list of ACB's subordinate to this Environment which * have exceptions and are waiting for processing by a activity in * this Environment. * * EAB:WEXH - A wait list of ACB's in this Environment which are * waiting to process subordinate ACB's with exceptions. Either * EAB:WEXE or EAB:WEXH must be null. * * EAB:WEXR - A list of ACB's subordinate to this Environment with * exceptions which are being processed. ACB's are moved from * EAB:WEXE to this list. * * EAB:EMPS - A pointer to the next EMP header to try to allocate * buffer area from. This is initialized to EAB:EMPH by a S:EMPI * call and updated by calls to EMP allocation routines. * * EAB:XVT - The address of the exception vector table for this * environment. * * EAB:DBUS - The number of door stack blocks currently available * to the Environment. The allocation method is similar to the * small freepool block method (see ECB:SBUS). * The initial value represents the maximum number of activities * which can be inside the system door at one time. If there is * any activity in the Environment the minimum value must be one * because all activities are begun inside the door. * * EAB:STKW - A list of ACB's waiting for door stacks. EAB:DBUS * must be zero if any QCB's are on this list. * * EAB:UID - This 32 bit value is used by the IO system to identify * the creator of files and protects the files from unauthorized * access. * * EAB:IOCT - A count of IO calls currently in progress. * * EAB:IOWL - The list head of ACB's waiting for the IO count in * EAB:IOCT to become zero. * * EAB:EMPH - The first EMP header in the Environment. It is * initialized by a call to S:EMPI and is not modified thereafter. * * EAB:FPBH - A pointer to the first free page bounded header. * When the EMP area is initialized one header is put on this * chain for each possible page bounded EMP area. Each time a * page bounded buffer is allocated a header is removed from * this chain and linked into the EAB:EMPH chain. * * EAB:ESEM - A system semaphore (4 words) to single thread * EMP processing for this Environment. * ******************************************************************* EAB:CKW EQU -1 * WORD 0 IS RESERVED EAB:FLG EQU 1 FLAG WORD EAB:PEMP EQU 2  PARENT EMP ALLOCATED EAB:BIPB EQU 3 'BROKEN IPB' LIST HEAD EAB:EXTK EQU 4 DBL WORD - ENV: EXECUTION TIME IN CLOCK TICKS EAB:TICS EQU 6 REMAINING TICKS IN CURRENT TIME-SLICED ACTIVITY EAB:ELTK EQU 7  DBL WORD - SYSTEM TICKS WHEN R.GELT CALLED EAB:EOFF EQU 9 DBL WORD - ENV'S OFFSET FROM SYS (IN 1/4 SECS  ) EAB:LMUS EQU :B LOGICAL MAPS USAGE COUNT EAB:PMUS EQU :C PHYSICAL PAGES USAGE COUNT EAB:LOW EQU  :D LOW ADDRESS OCCUPIED BY LOADED ENVIRONMENT EAB:HIGH EQU :E HIGH ADDRESS OCCUPIED BY LOADED ENVIRONMENT EAB:WEXE EQU :F WAIT LIST OF ACBS WITH EXCEPTIONS EAB:WEXH EQU :10 WAIT LIST ACBS TRYING TO PROCESS ABOVE EAB:WEXR EQU :11 ACBS WHOSE EXCEPTIONS ARE BEING PROCESSED EAB:EMPS EQU :12 EMP SEARCH POINTER EAB:XVT EQU :13 XVT Pointer EAB:DBUS EQU :14 DOOR STACK BLOCKS USAGE COUNT EAB:STKW EQU :15  LIST OF ACB'S WAITING FOR A DOOR STACK BLOCK EAB:UID EQU :16 32 BIT USER IDENTIFIER EAB:IOCT EQU :18  COUNT OF OUTSTANDING IO'S FOR THE ENVIRONMENT EAB:IOWL EQU :19 WAIT LIST FOR IOCT TO BECOME ZERO EAB:EMPH EQU :1A EMP HEADER CHAIN EAB:FPBH EQU :1B FREE PAGE BOUNDED HEADER CHAIN EAB:ESEM EQU :1C EMP SEMAPHORE EAB:SIZ EQU :20 SIZE OF AUXILIARY ENVIRONMENT CONTROL BLOCK * * FLAGS EAB:FSU EQU 1 EXCEPTION STACK IN USE (1=IN USE) TITL EAB: MACRO MACLAB CHECKP: #(?),0,5 NAM #(-1) #(-1) STSTART: EAB:SIZ,CKW:EAB EAB:LMUS WORD: #2,0 EAB:LMUS EAB:PMUS WORD: #3,128 EAB:PMUS EAB:HIGH WORD: :FFFF EAB:HIGH EAB:XVT WORD: #4,0 EAB:DBUS WORD: #5,0 EAB:DBUS TEND: ENDM M M M M M M M M M M M M M M M M M M IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII TITL ENVIRONMENT CONTROL BLOCK EQUATES - ECB.MAC - 84-94151-64 (B012) ********************************************************************** * * ENVIRONMENT CONTROL BLOCK * * * +----------+ * -1 | ECB:CKW | Check word *  +----------+ * 0 | ECB:PER | Peer Environment list * +----------+ * 1 | ECB:FLG | Flag word * +----------+ * 2 | ECB:USG | Block usage count * +----------+ * 3 | ECB:ID  | Environment identifier * +----------+ * 4 | 0 | Reserved * +----------+ *  5 | ECB:PT | Parent Environment * +----------+ * 6 | ECB:SUB | Subordinate Environment list head * +----------+ * 7 | ECB:EAB | Environment auxiliary block (EAB) address * +----------+ * 8 | ECB:LM | Logical map number * +----------+ * 9 | ECB:EDB | Environment Descriptor Block address * +----------+ * A | ECB:PVF | Privilege flags * +----------+ * B | ECB:MPRI | Maximum priority * +----------+ * C | ECB:SBUS | Small buffer available count * +----------+ * D | ECB:MBUS | Medium buffer available count * +----------+ * E | 0 | Reserved * +----------+ * F | ECB:TCB | Task Control Block list head * +----------+ *   10 | ECB:SCB | Semaphore Control Block list head * +----------+ * 11 | ECB:MCB | Mailbox Control Block list head * +----------+ * 12 | ECB:QCB | Queue Control Block list head * +----------+ * 13 | ECB:ACB | Activity Control Block list head * +----------+ * 14 | ECB:RCB | Resource Control Block list head * +----------+ * 15 | ECB:LUT | Logical Unit Table * +----------+ *  16 | ECB:DCNT | Destroy Environment count * +----------+ * 17 | ECB:DSWL | Destroy Environment wait list * +----------+ * 18 | ECB:EMPW | EMP wait list head (ACB's) * +----------+ *  19 | ECB:SUSW | Environment suspended wait list head * +----------+ * 1A | ECB:IDCT | ID generation counter * +----------+ * 1B | ECB:DOOR | Count of activities inside door after dest. * +----------+ * 1C | ECB:DORW | ACB waiting for ECB:DOOR to become zero * +----------+ * 1D | 0  | Reserved * +----------+ * 1E | 0 | Reserved * +----------+ * 1F | 0  | Reserved * +----------+ * * ECB:CKW - Table check word. * * ECB:PER - Address of the next ECB in the peer list. The ECB in this * list is pointed to by the subordinate list head (ECB:SUB) in the * parent Environment. * *  ECB:FLG - ECB flag word. * * Bit 0 - (ECBF:SUS) The Environment is suspended. * * Bit 2 - (ECBF:MAP) Env. is sharing log. addr. space * with the parent Environment. * * Bit 3 - (ECBF:EMP) Environment has static EMP space. * * Bit 4 - (ECBF:PWF) Power-Fail has occured. * * Bit 5 - (ECBF:RTE) Activities have real-time execution. * * Bit 14 - (ECBF:DES) The Environment is being destroyed. * * Other bits are reserved. * * ECB:USG - The ECB block usage count. The ECB block will not be * released if the usage is greater than zero. * * ECB:ID - Environment identifier. This 16 bit id is used to * uniquely identify an Environment from its peers. * The id may not be zero. It need only be unique among peers. * * ECB:PT - The address of the parent ECB. * * ECB:SUB - The address of the first ECB in the subordinate * Environment list. If zero, this Environment has no subordinates. * * ECB:EAB - The address of the Environment Auxiliary Block * * ECB:LM - Logical map (address space) number for this Environment. * * ECB:EDB - Address of the Environment Descriptor Block. * * ECB:PVF - Environment privilege flags. * * Bit 0 - (ECB:FRT) * Environment can be real-time (0 = time-shared). * * Bit 1 - (ECB:FSER) * If set, Activities can use system services (S:xxxxxx). * * Bit 2 - (ECB:FFAC) * If set, inhibits protection checks for file access. (i.e. *  access to any file is allowed) * * Bit 3 - (ECB:FPRV) * If set, all Activities execute in unprotected *  mode (status bit 11 is zero). This allows execution * of privileged instructions. * * Bit 4 - (ECB:FLML)  * Environment's logical memory space is locked. This means * that any logical page allocated to this Environment will * not be deallocated. This will prevent any of the logical * pages from being swped out. * *  Bit 5 - (ECB:FPML) * Environment's physical map is locked. This means * that the logical map for the Environment is in the hardware MMT * and will not be removed. * * Bit 8 - (ECB:FSST) * The Environment may set the system time of day. * * Bit 9 - (ECB:FUID) * The Environment may modify the user ID. * * Bit 10 - (ECB:FPRI) * Activity priority may exceed Environment maximum. * * ECB:MPRI - Maximum priority that any Activity * running in the Environment can have. * * ECB:SBUS - The number of small freepool blocks currently * available to the Environment. This includes small freepool * blocks which the Environment can make available to any * subordinate. When the Environment is initially loaded * this is the maximum number available. A -1 indicates * that allocation is from the parent Environment's * small freepool block count. * * ECB:MBUS - The number of medium freepool blocks currently * available to the Environment. The allocation method * is similar to the small freepool block method. * * ECB:TCB - List head of all Task Control Blocks (TCB) in the * Environment. * * ECB:SCB - List head of all Semaphore Control Blocks (SCB) in the * Environment. * * ECB:MCB - List head of all Mailbox Control Blocks (MCB) in the * Environment. * * ECB:QCB - List head of all Queue Control Blocks (QCB) in the * Environment. * * ECB:ACB - List head of all Activity Control Blocks (ACB) in the * Envrionment. * This chian must be followed via the ACB:EAPL word in the ACB's * (not the ACB:PEER). * * ECB:RCB - List head of all Resource Control Blocks (RCB) in the * Environment. * * ECB:LUT - Address of the Logical Unit Table for the * Environment. The LUT is a list of Logical Unit Blocks (LUB). * The address of the LUT is a list head of LUB's. * * ECB:DCNT - A count of subordinate ECB's being destroyed. * * ECB:DSWL - List head of Activities from parent ECB's which are * waiting for this Environment to be destroyed or for the * ECB:DCNT to become zero so that it may be destroyed. * * ECB:EMPW - List head of all Activities in the Environment which * are waiting for space from the Environment Memory Pool. * * ECB:SUSW - List head of all Activities which appear on * the front of the ready list while the Environment is * suspended. * * ECB:IDCT - The counter used to generate ID's for * block enqueue requests which specify that the system is * to provide a unique ID (for the list). This counter * is initialized to :8000 and varies between :8000 and :FFFE. * * ECB:DOOR - A count of activities currently inside the * system door. This is valid only during the destroy * Environment process. When this word is non-zero there * will be an activity waiting on the ECB:DORW list. * * ECB:DORW - The activity waiting for ECB:DOOR to become * zero. The dispatcher decrements the c ount in ECB:DOOR * when an activity is suspended and put the waiting * activity in the interrupt queue when the count reaches zero. * ********************************************************************** ECB:CKW EQU -1 ECB CHECKWORD ECB:PER EQU 0 CHAIN PTR TO PEER OF THIS ENVIRONMENT ECB:FLG EQU 1 FLAGS - SEE BELOW FOR DETAILS ECB:USG EQU 2 USAGE COUNT FOR ACCESSING THE ECB ECB:ID EQU 3 ID OF THIS ENVIRONMENT FOR USE BY OTHERS ECB:PT EQU 5 PTR TO THIS ENVIRONMENT'S PARENT ECB:SUB EQU 6 PTR TO CHAIN OF THIS ENVIRONMENT'S SUBORDINATES ECB:EAB EQU 7 PTR TO AUXILIARY ENVIRONMENT CONTROL BLOCK ECB:LM EQU 8 LOGICAL MAP NO. OF THIS ENVIRONMENT'S ADDR SPACE ECB:EDB EQU 9 PTR TO EDB (ENV. DEFN. BLOCK) FOR THIS ENV. ECB:PVF EQU :A PRIVILEGE FLAGS - SEE BELOW FOR DETAILS ECB:MPRI EQU :B MAX. ABS. PRIORITY FOR THIS ENV'S ACTIVITIES ECB:SBUS EQU :C SMALL BUFFER USAGE COUNTER ECB:MBUS EQU :D MEDIUM BUFFER USAGE COUNTER ECB:EMP EQU :E PTR TO MAB DEFINING THIS ENVIRONMENT'S EMP ECB:TCB EQU :F PTR TO CHAIN OF TCB'S FOR THIS ENVIRONMENT ECB:SCB EQU :10 PTR TO CHAIN OF SCB'S FOR THIS ENVIRONMENT ECB:MCB EQU :11 PTR TO CHAIN OF MCB'S FOR THIS ENVIRONMENT ECB:QCB EQU :12 PTR TO CHAIN OF QCB'S FOR THIS ENVIRONMENT ECB:ACB EQU :13 PTR TO CHAIN OF ACTIVITIES FOR THIS ENVIRONMENT ECB:RCB EQU :14 PTR TO CHAIN OF RCB'S FOR THIS ENVIRONMENT ECB:LUT EQU :15 PTR TO LOGICAL UNIT TABLE FOR THIS ENVIRONMENT ECB:DCNT EQU :16 DESTROY ENVIRONMENT COUNT ECB:DSWL EQU :17 LIST HEAD OF ACB'S WAITING FOR DESTROY TO COMPLETE ECB:EMPW EQU :18 PTR TO CHAIN OF ACB'S WAITING FOR EMP SPACE ECB:SUSW EQU :19 PTR TO CHAIN OF ACB'S SUSPENDED BY PARENT ENV. ECB:IDCT EQU :1A COUNT USED FOR AUTOMATIC ID GENERATION ECB:DOOR EQU :1B COUNT OF ACTIVITIES INSIDE DOOR DURING DESTROY ECB:DORW EQU :1C ACTIVITY WAITING FOR ACTIVITIES INSIDE DOOR TO COMPLETE ECB:SIZ EQU :20 SIZE OF ECB IN WORDS TITL * * ECB FLAGS * ECBN:SUS EQU 0 ENVIRONMENT SUSPENDED BIT IN ECB:FLG ECBN:PWF EQU 6  POWER-FAIL HAS OCCURRED ECBN:DES EQU 14 ENVIRONMENT BEING DESTROYED * ECBF:SUS EQU 1%ECBN:SUS ENVIRONMENT SUSPENDED FLAG IN ECB:FLG ECBF:MAP EQU 1%2 ENVIRONMENT SHARES PARENTS MAP FLAG IN ECB:FLG ** NOTE ** THIS FLAG (MAP) HAS REVERSED MEANING IN ELOAD BLOCK ECBF:EMP EQU 1%3 STATIC/DYNAMIC EMP FLAG IN ECB:FLG ECBF:PWF EQU 1%ECBN:PWF POWER-FAIL HAS OCCURED. ECBF:RTE EQU 1%5 ACTIVITIES HAVE REAL-TIME EXECUTION ECBF:DES EQU 1%ECBN:DES ENVIRONMENT BEING DESTROYED FLAG * * PRIVILEGED BIT-FLAGS IN ECB:PVF * ** NOTE ** - THESE VALUES MUST AGREE WITH ERB DEFINITIONS * ECB:FRT EQU :0001 1= ENVIRONMENT CAN BE REAL TIME (0=TIME-SHARED) ECB:FSER EQU :0002 1= ENV CAN USE SYSTEM SERVICES ECB:FFAC EQU :0004  1= ENV CAN ACCESS ANY FILE ANYWHERE ECB:FPRV EQU :0008 1= ENV ACTIVITIES CAN EXECUTE PRIVILEGED INSTR'S ECB:FLML EQU :0010 1= LOCK-IN ENVIRONMENT'S LOGICAL MEMORY SPACE ECB:FPML EQU :0020 1= LOCK-IN PHYSICAL MAP FOR ENVIRONMENT ECB :FSST EQU :0100 1= ENV CAN SET SYSTEM TIME OF DAY ECB:FUID EQU :0200 1= ENV CAN MODIFY USER ID'S ECB:FPRI EQU :0400 1= ACTIVITY PRIO MAY EXCEED ENV MAX * * MISCELLANEOUS ECB EQUATES * ECB:LWID EQU :8000 LOWER LIMIT FOR UNIQUE ID COUNTER TITL ECB: MACRO * * * ENVIRONMENT CONTROL BLOCK DEFINITION MACRO * * CALLING SEQUENCE: * * ECBLABEL ECB: P1,P2,...,P10 * * P1 = ECB IDENTIFICATION WORD * P2 = ECB GROUP IDENTIFICATION WORD * P3 = THE NAME OF THE PARENT'S SUBORDINATE ECB CHAIN * P4 = THE NAME TO BE GIVEN TO THE SUBORDINATE ECB CHAIN * P5 = THE ADDRESS OF THE EDB THAT GENERATED THIS * P6 = THE PRIVILEGE FLAG WORD * P7 = THE MAXIMUM PRIORITY OF ANY ACB IN THIS ENVIRONMENT * P8 = THE MAXIMUM NUMBER OF SMALL BUFFERS * P9 = THE MAXIMUM NUMBER OF LARGE BUFFERS * P10 = POINTER TO AUXILIARY ENVIRONMENT CONTROL BLOCK * P11 = (OPTIONAL) ACB CHAIN HEAD * * MACLAB CHECKP: #(?),10,11 NAM #(-1) #(-1) STSTART: ECB:SIZ,CKW:ECB ECB:PER CHAN: ECB: ECB PEER LIST POINTER ECB:FLG WORD: ,ECBF:RTE REAL-TIME EXECUTION ECB:ID WORD: #1 ECB IDENTIFICATION WORD ECB:PT CHAN: #3,0 PARENT ECB POINTER ECB:SUB HEAD: #4,0 SUBORDINATE ECB CHAIN HEAD POINTER ECB:EAB WORD: #10,0 EAB POINTER ECB:EDB WORD: #5 ENVIRONMENT DEFINITION BLOCK POINTER ECB:PVF WORD: #6,0 ECB PRIVILEGE FLAG WORD ECB:MPRI WORD: #7,:3FFF ENVIRONMENT MAXIMUM PRIORITY VALUE ECB:SBUS WORD: #8 MAXIMUM SMALL BUFFER USAGE COUNT ECB:MBUS WORD: #9 MAXIMUM MEDIUM BUFFER USAGE COUNT ECB:EMP HEAD: EMAB: HEAD POINTER TO THE CHAIN OF EMP MEMORY ALLOCATION BLOCK ECB:TCB HEAD: TCB: HEAD POINTER TO THE CHAIN OF TACK CONTROL BLOCKS ECB:SCB HEAD: SCB: HEAD POINTER TO THE CHAIN OF SEMAPHORE CONTROL BLOCKS ECB:MCB HEAD: MCB: HEAD POINTER TO THE CHAIN OF MAILBOX CONTROL BLOCKS ECB:QCB HEAD: QCB: HEAD POINTER TO THE CHAIN OF QUEUE CONTROL BLOCKS IFF #(11,?) ECB:ACB HEAD: ACB: ENDC IFT #(11,?) ECB:ACB HEAD: #11 ENDC ECB:RCB HEAD: RCB: HEAD POINTER TO THE CHAIN OF SECONDARY MABS ECB:LUT HEAD: LUT: HEAD POINTER TO THE CHAIN OF LOGICAL UNIT BLOCKS ECB:IDCT WORD: :8000 TEND: ENDM I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I TITL ENVIRONMENMT MEMORY POOL HEADER - 84-94151-65 (A300) ********************************************************************* * * * +----------+  * * 0 | EMP:PER | Next EMP header in chain. * * +----------+  * * 1 | EMP:LOC | Location of EMP block (or -1). * * +----------+ * * 2 | EMP:STA | 0=Not allocated, 1=allocated. * * +----------+ * * 3 | EMP:LEN | Word length of EMP block. * *  +----------+ * * 4 | EMP:CKW | EMP header block checkword.  * * +----------+ * *   * * EMP:PER - The address of the next EMP header for the * * Environment. A zero indicates the end of the chain. * * The chain is always in sequence by increasing EMP block * * address (not necessarily EMP header block address). * * The chain head pointer is in the EAB. * *  * * EMP:LOC - The location of the EMP block if the block begins * *  on a page boundry. If the block does not begin on a page * * boundry this word contains a -1 and the block start is  * * at the end of the header block. * *  * * EMP:STA - The status of the block. A zero indicates not * * allocated; a 1 indicates allocated. * * * * EMP:LEN - The length of the EMP block in words. This is * * never less than 16 unless the next block begins on a * * page boundry, in which case the block will be not * * allocated. * *  * * EMP:CKW - The block checkword (CKW:EMP).  * * * ********************************************************************* * EMP:PER EQU 0 POINTER TO NEXT BLOCK EMP:LOC EQU 1 PTR TO EMP BLOCK FOR PAGE BOUNDARY HEDR'S EMP:STA EQU 2 USER'S ID (ZERO IF NOT ALLOCATED) EMP:LEN EQU 3  LENGTH OF BLOCK EMP:CKW EQU 4 EMP HEADER CHECKWORD EMPSIZ EQU 5 SIZE OF EMP HEADER BLOCK EMPMIN EQU EMPSIZ+16 MIN. ALLOCATABLE BLOCK SIZE = 16 * * TITL EMP INITIALIZATION PARAMETER LIST ********************************************************************* *  * * +----------+ * * 0 | EI:CT | No. of regions in the EMP * * +----------+ * * 1 | EI:LOW1 | Lower bound of 1st region * * +----------+ * *  2 | EI:HII1 | Upper bound of 1st region * * +----------+ * * 3 | EI:LOW2 | Lower bound of 2nd region * * +----------+  * * 4 | EI:HII2 | Upper bound of 2nd region * * +----------+  * * 5 | | Range pairs continued through * *  EI:CT * 2 + 1 * * * * EI:CT - The number of discontiguous regions in the EMP. * * * * EI:LO W1 - Low address of the first memory region in the EMP. * * * * EI:HII1 - High address of the first memory region in the EMP. * *  * * EI:LOW2 - Low address of the second region in the EMP. * *  * * EI:HII2 - High address of the second region in the EMP. * *  * * * ********************************************************************* * EI:CT EQU 0 CT OF NO. OF LOW/HIGH PAIRS IN LIST EI:LOW1 EQU 1 LOW ADDRESS OF 1ST MEMORY REGION EI:HII1 EQU 2 HIGH ADDRESS OF 1ST MEMORY REGION EI:LOW2 EQU 3 LOW ADDRESS OF 2ND MEMORY REGION EI:HII2 EQU 4 HIGH ADDRESS OF 2ND MEMORY REGION EI:BOUND EQU :0040 LOW BOUND OF ALLOWABLE EMP AREA A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A  | Lower bound of 1st region * * +----------+ * * 2 TITL EMP INITIALIZATION PARAMETER LIST - EMPL.MAC - 84-94151-66 (A300) ********************************************************************* * +----------+ * * 0 | EM:CT | No. of regions in the EMP * * +----------+ * * 1 | EM:LOW1  | Lower bound of 1st region * * +----------+ * * 2 | EM:HII1 | Upper bound of 1st region * * +----------+ * *  3 | EM:LOW2 | Lower bound of 2nd region * * +----------+  * * 4 | EM:HII2 | Upper bound of 2nd region * * +----------+  * * * * EM:CT - Must be either one or two. Indicates whether the * * EMP consists of one or two contiguous areas of * * memory.  * * * * EM:LOW1 - Low address of the first or only memory region in * * the EMP. * *  * * EM:HII1 - High address of the first or only memory region in * * the EMP. * *  * * EM:LOW2 - If there is only one memory region in the EMP then * * this word is unused. Otherwise, it contains the * * low address of the second memory region in the EMP. * *  * * EM:HII2 - If there is only one memory region in the EMP then * *   this word is unused. Otherwise, it contains the * * high address of the second memory region in the EMP.* *  * ********************************************************************* * EM:CT EQU 0 CT OF NO. OF LOW/HIGH PAIRS IN LIST EM:LOW1 EQU EM:CT+1 LOW ADDRESS OF 1ST MEMORY REGION EM:HII1 EQU EM:LOW1+1 HIGH ADDRESS OF 1ST MEMORY REGION EM:LOW2 EQU EM:HII1+1 LOW ADDRESS OF 2ND MEMORY REGION EM:HII2 EQU EM:LOW2+1 HIGH ADDRESS OF 2ND MEMORY REGION EMPLSIZ EQU EM:HII2+1 SIZE OF EMPL PARAMETER LIST T T T * * * * Interrupt Control Block (ICB)  * * --------- ------- ----- ----- * *  * * * * +----------+  TITL INTERRUPT CONTROL BLOCK - ICB.MAC - 84-94150-68 (A301) ******************************************************************** * * * Interrupt Control Block (ICB)  * * --------- ------- ----- ----- * *  * * * * +----------+  * * -1 | ICB:CKW | The ICB checkword * * +----------+ * * 0 | ICB:PER | The peer pointer * *  +----------+ * * 1 | ICB:FLG | The flag word * *  +----------+ * * 2 | ICB:USG | The usage count  * * +----------+ * * 3 | ICB:SCTX | The save context instruction * * +----------+ * * 4 | | The address of ICB:S * * +----------+ * * 5 | ICB:ERET | Interrupt error return (SCNTX) * * +----------+ * * 6 |  | The address of ICB:S * * +----------+ * * 7  | ICB:S | The interrupt S register * * +----------+ * *  8 | ICB:K | The interrupt K register * * +----------+  * * 9 | ICB:LDY | Load Y with ICB address * * +----------+  * * 10 | ICB:JMP | Jump to interrupt processor * * +----------+  * * 11 | ICB:ADDR | The address of interrupt handler * * +----------+   * * 12 | ICB:ICB | The address of this ICB * * +----------+ * * 13 | ICB:S4 | The interrupt semaphore (4 words) * *  +----------+ * * 14 | | * *  +----------+ * * 15 | |  * * +----------+ * * 16 | |  * * +----------+ * * 17 | ICB:TMR | The timeout timer * * +----------+ * * 18 | ICB:UIC | The unsolicited interrupt count * * +----------+ * * 19 | ICB:SEOB | Address of the special EOB code. * * +----------+ * * 20 | 0 | Reserved * * +----------+ * *  21 | 0 | Reserved * * +----------+  * * * *  * * ICB:CKW - The Interrupt Control Block checkword. This word is * * used to validate the integrity of the operating system. * * * * ICB:FLG - Flag word. Contains information on this status of * * the device. * *  * * Bit 15 (ICBN:FDL) - ICB deleted (currently not used). * *  * * Bits 14-4 - Reserved. * *  * * Bit 4 (ICBN:PWF) - If set, a power-fail has occured  * * * Bit 3 (ICBN:SOI) - If set, indicates interrupt is pending* *  * * Bit 2 (ICBN:EOB) -If set, indicates normal EOB * *  * * Bit 1 (ICBN:FTO) -if set, interrupt timed out. * *  * * Bit 0 (ICBN:PRS) - If set, indicates device is present. * *  * * ICB:USG - Block usage count. Currently not used since ICB's * * are not dynamically created and destroyed. * * * * ICB:SCTX - This word contains a save context (SCNTX) * * instruction. Devices which handle programmable interrupt * * addresses should be set up to interrupt to this entry * * in the ICB. This entry is not used for d evices with fixed * * interrupt locations. SCNTX is a double word instruction. * * ICB:SCTX+1 contains the address of ICB:S. * * * * ICB:ERET - This word contains a save context (SCNTX) * * instruction. Devices which handle programmable interrupt * * addresses with error returns will interrupt at this entry * * in the ICB. This entry is not used for devices with fixed * * interrupt locations or devices which do not interrupt at * * location + 2 when an error occurrs. The SCNTX is a double * * word instruction. ICB:ERET+1 is the address of ICB:S. * *  * * ICB:S - The new status register. Normally set to :140. * * (interrupts enabled, system mode, no protect, extended * * addressing, word mode, carry clear and overflow clear) * * This is the effective address of the save context (SCNTX) * * instruction at the interrupt location (i.e. the SCNTX * * should point here).  * * * * ICB:K - The value of the new "K" register. This should be the * * pointer to the top of the system stack. * *  * * ICB:LDY - This entry contains an instruction to load the Y * * register with the address of this ICB. The instruction * * is a COPY $+ICB:ICB-ICB:LDY,Y (this loads Y with the * * contents of ICB:ICB). * *  * * ICB:JMP - this entry contains an instruction to jump to the * * interrupt handler. The instruction is JMP *$+1 (jumps * * to the address in ICB:ADDR). * *  * * ICB:ADDR - Address of the interrupt handler. Used by ICB:JMP. * *  * * ICB:ICB - Address of this ICB. Used by ICB:LDY. * *  * * ICB:S4 - This is the first word of a system semaphore.  * * This semaphore is used to synchronize the device driver * * with the interrupt. Normally, the driver will wait on * * it and the interrupt service code will signal it. The * * semaphore is 4 words long.  * * * * ICB:TMR - This is the current value of the I/O timer. It is * * used by the I/O watchdog timer to time the interrupt. * * A zero indicates no timing is necessary and will disable * * the watchdog timer for this ICB. * *  * * ICB:UIC - This is the unsolicited interrupt count. It will be * *  incremented by the EOB interrupt code upon receiving an * * interrupt when an I/O is not pending.   * * * * ICB:SEOB - The special end of block interrupt service code. * * This is the address of any special EOB service code which * * needs to be executed whenever an EOB interrupt occurrs. * * If this word is zero, there is no special EOB code and * * nothing will be done.  * * * ******************************************************************** * * * DEFINE THE EQUATES FOR AN INTERRUPT CONTROL BLOCK * * ICB:CKW EQU -1 ICB:PER EQU 0 PEER POINTER ICB:FLG EQU 1 FLAG WORD ICB:USG EQU 2 USAGE COUNT ICB:SCTX EQU 3 SAVE CONTEXT INSTRUCTION ICB:ERET EQU 5 ERROR RETURN SAVE CONTEXT INSTRUCTION ICB:S EQU 7 INTERRUPT S REGISTER ICB:K EQU 8 INTERRUPT K REGISTER ICB:LDY EQU 9 LOAD Y WITH ICB ADDRESS ICB:JMP EQU 10 JUMP TO INTERRUPT PROCESSOR ICB:ADDR EQU 11 ADDRESS OF INTERRUPT HANDLER ICB:ICB EQU 12 ADDRESS OF THIS ICB ICB:S4 EQU 13 INTERRUPT SEMAPHORE (4 WORDS) ICB:TMR EQU 17 TIMEOUT TIMER ICB:UIC EQU 18 UNSOLICITED INTERRUPT COUNT ICB:SEOB EQU 19 ADDRESS OF THE SPECIAL END OF BLOCK CODE * ICB:SIZB EQU 22 SIZE OF ICB INDEPENDENT TABLE * ICB FLAG BIT EQUATES * ICBN:PRS EQU 0 DEVICE PRESENT FLAG BIT ICBN:FTO EQU 1 DEVICE TIMEOUT FLAG BIT ICBN:EOB EQU 2 NORMAL END OF BLOCK INTERRUPT FLAG BIT ICBN:SOI EQU 3 INTERRUPT PENDING FLAG BIT ICBN:PWF EQU 4 POWER-FAIL HAS OCCURED * * ICB FLAG MASK EQUATES * ICBF:PRS EQU 1%ICBN:PRS MASK FOR DEVICE PRESENT FLAG BIT ICBF:FTO EQU 1%ICBN:FTO MASK FOR DEVICE TIMEOUT FLAG BIT ICBF:EOB EQU 1%ICBN:EOB MASK FOR NORMAL END OF BLOCK FLAG BIT ICBF:SOI EQU 1%ICBN:SOI MASK FOR PENDING INTERRUPT FLAG BIT ICBF:PWF EQU 1%ICBN:PWF MASK FOR POWER-FAIL BIT * * MACRO TO GENERATE ICB TABLES * ICB: MACRO * * Interrupt Control Block Macro * * Calling Sequence: * * ICB: P1,P2 * * P(-1) - The name of the ICB (The address of the first word) *  P1 - The size of the ICB extension * P2 - The address of the special interrupt service code subroutine * * Macro invocation: * * #-1 ICB: #1,#2 * MACLAB CHECKP: #(?),2,2 NAM #(-1) #(-1) STSTART: ICB:SIZB+#(1),CKW:ICB MACHINE M4:95 ICB:PER CHAN: ICB: PEER POINTER ICB:USG WORD: 1 USAGE COUNT ICB:SCTX ORG: SCNTX $+ICB:S-ICB:SCTX SAVE CONTEXT ICB:ERET ORG: SCNTX $+ICB:S-ICB:ERET ERROR RETURN SAVE CONTEXT ICB:S WORD: INT:S NEW S REGISTER ICB:K WORD: INT:K NEW K REGISTER ICB:LDY ORG: COPY $+ICB:ICB-ICB:LDY,Y JMP *$+1 ICB:ADDR EXTR: I:EOB EOB INTERRUPT ROUTINE ICB:ICB WORD: #(-1) ADDRESS OF THIS ICB ICB:S4 ORG: SSB: 0,:7FFF ICB:SEOB WORD: #(2) ADDRESS OF SPECIAL EOB CODE TEND: ENDM M M M M M M M M M M M M M M M M M M M M M M M M M M  TITL I/O PROCESSOR PRIORITIES - 84-94150-64 (B007) * * Priorities of I/O processor Activities. * All priorities assigned to a specific * device class should be centered about four digit * hex number in which the last digit is "8". The *  class may then vary from that value by + or - 8 * priority levels. i.e., if the base priority value * for a device class is :7348 then individual priorities * within that class may vary from :7340 to :734F. * Y:DF0 EQU :7008 PRIORITY OF TH E FLOPPY DISK DRIVER Y:DF1 EQU :7018 PRIORITY OF THE QUAD DENSITY FLOPPY DISK DRIVER Y:DK0 EQU :7028 PRIORITY OF THE MEDIUM CAPACITY DISK DRIVER Y:DK1 EQU :7038 PRIORITY OF THE HIGH CAPACITY DISK DRIVER Y:DK2 EQU :7048 PRIORITY OF THE WINCHESTER DISK DRIVER Y:DK3 EQU :7058 PRIORITY OF THE TCU WINCHESTER DISK DRIVER * Y:MT0 EQU :7040 BASE PRIORITY OF THE MAG TAPE Y:QT0 EQU :7300 BASE PRIORITY OF THE QIC STREAMER TAPE * Y:TV EQU :7200 BASE PRIORITY OF THE TV Y:TVDCP EQU Y:TV PRIORITY OF THE FRONT END DECODE PROCESSOR Y:TVWRP EQU Y:TV+8 PRIORITY OF THE WRITE PROCESSOR Y:TVRDP EQU Y:TV+8 PRIORITY OF THE READ PROCESSOR Y:TVRDB EQU Y:TV+:18 PRIORITY OF THE READ BUFFER PROCESSOR * Y:PTR EQU :6FFF PRIORITY OF THE PRINTER * Y:SY EQU :7100 PRIORITY OF SYNC COMM Y:SYPRE EQU Y:SY+8 PRIORITY OF SYNC COMM PRE PROCESSOR INTERFACE Y:SYPST EQU Y:SY+8 PRIORITY OF SYNC COMM POST PROCESSOR INTERFACE a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a TITL I/O PROCESSOR BLOCK - IPB.MAC - 84-94150-67 (B012) ******************************************************************** *  * * Common I/O Processor Block (IPB)  * * ------ --- --------- ----- ----- * *  * * * * +----------+  * * -1 | IPB:CKW | The IPB checkword * * +----------+  * * 0 | IPB:PER | Peer link to next IPB * * +----------+ * * 1 | IPB:FLG | Flag word * *  +----------+ * * 2 | IPB:USG | Block usage count * * +----------+ * * 3 | IPB:LVL | I/O processor level  * * +----------+ * * 4 | IPB:CLAS | I/O processor class * * +----------+ * * 5 | IPB:NAM | ASCII name (32 bits) * * +----------+ * * 6 | | * * +----------+ * * 7 | IPB:EID | Environment ID * * +----------+ * *  8 | IPB:TID | Task ID * * +----------+ * * 9 | IPB:QID | Input queue identifier * * +----------+  * * A | IPB:RTRY | Total number of retries * * +----------+  * * B | IPB:TIMO | Base Timeout value * * +----------+   * * C | IPB:HERR | Total hard errors * * +----------+ * * D | IPB:SERR | Total soft errors * * +----------+ * * E | IPB:MNT | Mount Count * *  +----------+ * * F | IPB:PRIO | Priority * * +----------+ * * 10 | IPB:TYPE | Device type  * * +----------+ * * 11 | IPB:MQID | Manager QID  * * +----------+ * * 12 | IPB:MIPB | Manager IPB * * +----------+ * * 13 | IPB:VNMA | Volume name address in IPB * * +----------+ * * 14 | IPB:DMAA | DMA address if DMA reserved * * +----------+ * *  15 | IPB:DMAU | Logical map/page of reserved DMA * * +----------+ * * * *  * * IPB:CKW - The I/O Processor Block checkword. This word is * * used to validate the integrity of the operating system. * * * * IPB:PER - The Link to next IPB in list. * * * * IPB:FLG - Flag word  * * * * Bit 15 (IPBF:DEL) - If set, block is being deleted * * * *  Bit 14 (IPBF:OPN) - If set, device is open * *  * * Bit 13 (IPBF:CMQ) - If set, indicates there is a common* * queue for all task begins.  * * * * Bit 12 (IPBF:NSH) - If set, indicates the device has been* * mounted non-shareable. * *  * * Bit 11 (IPBF:DWN) - If set, indicates the device has been* * marked down (unavailable). * * * * Bit 10  (IPBF:STP) - If set, indicates that a stop * * I/O operation has been requested for device. * *  * * Bits 9-0 - Reserved.  * * * * IPB:USG - Block usage count. Not currently used sin ce IPB's * * are not dynamically created or destroyed. * *  * * IPB:LVL - I/O processor level. * *  * * 0 = Device Driver Module (IPB:LDMM). * *  * * 1 = Device Handler Module (IPB:LDHM). * *  * * 2 = Data Manager Module (IPB:LDMM). * *  * * All other values reserved for future use.  * * * * IPB:CLAS - The I/O class of the IPB. Equates for I/O class * * are defined in X:COMMON.MAC. * *  * * IPB:NAM - I/O processor name in ASCII. Normally names of * * DHM's are the same as the standard device names. * * (e.g. DM01, LP00, etc.) * *  * * IPB:EID - ID of the Environment in which the I/O processor * * exists. * * * * IPB:TID - Task ID for the handler task. If the handler has * * more than one Task, then this word is the Task ID of the * * front end handler Task (ie, the one which interfaces with * * the door).  * * * * IPB:QID - Queue Identifier. If IPB:COMQ is set, then this * * word represents the QID of the common input queue. * * Otherwise, this is the QID of the queue created when the * * activity of the device handler is begun. This word must * * always be zero for manager IPB's. * * * * IPB:RTRY - Number of retries. * * * *  IPB:TIMO - Base Timeout value. This value may be adjusted * * before being passed to the driver.  * * * * IPB:HERR - Total number of hard errors, usually hardware, * * which have occured on this device. * *  * * IPB:SERR - Total number of soft errors which have occured * * on this device. This is the total number of retries * * which were done which resulted in successful I/O * * completion.  * * * * IPB:MNT - Total number of mounts done on a shareable device. * * If this word equals -1, the device was mounted non * *   shareable. If its 0, the device is not mounted. * * This count is maintained by the I/O door in the handler * * IPB. This word should always be -1 (non-sharable) in * * IPB's which cannot be mounted by a user.  * * * * IPB:PRIO - Priority to be assigned to the Activity of the * * IPB:TID task. Normally this is less than :7000 since the * * time critical system Activities run at or above this * * priority level. * *  * * IPB:TYPE - Device type codes, dependent upon device class. * * Used by handlers which are common to a device class. * * * * IPB:MQID - The QID of the manager for this IPB if the IPB * * was mounted with a manager.  * * This word and IPB:MIPB are maintained only in the IPB * * which was mounted.  * * * * IPB:MIPB - The IPB of the manager for this IPB if the IPB * * was mounted with a manager. * *  * * IPB:VNMA - The address of the volume name in the IPB * * extension. This word must be zero for devices which * * are not mounted with rmovable media. * *  * * IPB:DMAA - The address in the DMA map where reserved * * buffer begins for this IPB. A zero indicates that * * no DMA space is reserved for this IPB.  * * * * IPB:DMAU - The logical map and logical page of the user * * which has reserved DMA buffer for this IPB. This * * word is in effect only if IPB:DMAA is non-zero. * * The format of these two words is the same as the DMT. * *  * ******************************************************************** * * * DEFINE THE EQUATES FOR THE I/O PROCESSOR BLOCK TABLE * * IPB:CKW EQU -1 IPB:PER EQU 0 PEER LINK TO NEXT IPB IPB:FLG EQU 1 FLAG WORD IPB:USG EQU 2 BLOCK USAGE COUNT IPB:LVL EQU 3 I/O PROCESSOR LEVEL IPB:CLAS EQU 4 I/O PROCESSOR CLASS IPB:NAM EQU 5 ASCII NAME (32 BITS) IPB:EID EQU 7 ENVIRONMENT ID IPB:TID EQU 8 TASK ID IPB:QID EQU 9 INPUT QUEUE INFORMATION BLOCK ID IPB:RTRY EQU :A RETRIES IPB:TIMO EQU :B BASE TIMEOUT VALUE IPB:HERR EQU :C HARD ERRORS IPB:SERR EQU :D SOFT ERRORS IPB:MNT EQU :E MOUNT COUNT IPB:PRIO EQU :F PRIORITY FOR ACTIVITY OF THE IPB:TID TASK IPB:TYPE EQU :10 DEVICE TYPE IPB:MQID EQU :11 MANAGER QID IPB:MIPB EQU :12 MANAGER IPB IPB:VNMA EQU :13 VOLUME NAME ADDRESS IPB:DMAA EQU :14 DMA BUFFER ADDRESS IPB:DMAU EQU :15 LOGICAL MAP/PAGE OF RESERVED DMA BUFFER * * NOTE: THE FOLLOWING EQUATE DEFINES THE SIZE OF THE "BASE" OR * "COMMON" PART OF THE IPB.   ANYONE WHO USES EXTENSIONS BEYOND * THIS PART OF THE IPB SHOULD SET UP EQUATES RELATIVE TO THIS * VALUE, RATHER THAN GIVE THEM ABSOLUTE VALUES. * IPB:SIZB EQU :16 SIZE OF THE IPB BASE * * FLAG WORD EQUATES * IPBN:DEL EQU 15 BLOCK DELETED IPBN:OPN EQU 14 DEVICE OPEN IPBN:CMQ EQU 13 COMMON QUEUE IPBN:NSH EQU 12 DEVICE MOUNTED NON-SHAREABLE IPBN:DWN EQU 11 DEVICE IS DOWN IPBN:STP EQU 10 STOP REQUESTED * * FLAG WORD BIT MASKS * IPBF:DEL EQU 1%IPBN:DEL MASK FOR BLOCK DELETED IPBF:OPN EQU 1%IPBN:OPN MASK FOR DEVICE OPEN IPBF:CMQ EQU 1%IPBN:CMQ MASK FOR COMMON QUEUE IPBF:NSH EQU 1%IPBN:NSH MASK FOR NON-SHAREABLE DEVICE IPBF:DWN EQU 1%IPBN:DWN MASK FOR DOWN DEVICE IPBF:STP EQU 1%IPBN:STP MASK FOR STOP REQUESTED * * LEVEL WORD EQUATES * IPB:LDDM EQU 0 DRIVER LEVEL IPB:LDHM EQU 1 HANDLER LEVEL IPB:LDMM EQU 2 MANAGER LEVEL * * DEVICE TYPE CODES FOR DISK DEVICES * IPBV:PTC EQU 1 PERTEC 5 & 10 MB DRIVES IPBV:STM EQU 2 CDC STORAGE MODULE DRIVES (40, 80, 150, 300 MB) IPBV:SWN EQU 3 SHUGART WINCHESTER DISK DRIVES IPBV:QWN EQU 4 QUANTUM WINCHESTER DISK DRIVES IPBV:PX0 EQU 5 CDC PHOENIX DISK DRIVES WITHOUT SPO OPTION IPBV:PX1 EQU 6 CDC PHOENIX DISK DRIVES WITH SPO OPTION IPBV:WIN EQU 7 TCU 5-1/4 WINCHESTER DRIVES IPBV:FST EQU 32 STANDARD DENSITY SINGLE SIDED FLOPPY DRIVES IPBV:FQD EQU 32 QUAD DENSITY FLOPPY DRIVES * IPB: MACRO * * I/O Processor Block Macro * * Calling Sequence: * * P(-1) IPB: P1,P2,...,P13 * * (-1) The name of this table * (1) The size of the ipb extension * (2) Level of this IPB I/O Processor * (3) Class of this I/O Processor * (4) Name of this I/O Processor * (5) Environment ID containing this I/O Processor (Defaults to -1) * (6) Task ID of front end Task of this I/O Processor * (7) Base retry value for this I/O Processor * (8) Base timeout value for this I/O processor * (9) Priority for the Activity of the front end Task * (Default is :6F00) * (10) Flag word (Default is 0) * (11) Device type word (Default is 0) * (12) Initial mount count (Default is 0) * (13) Address of volume name in extension (Default is 0) * * Macro invocation: * * #(-1) IPB: #1,#2,#3,#4,#5,#6,#7,#8,#9,#10,#11,#12,#13 * MACLAB CHECKP: #(?),8,13 NAM #(-1) #(-1) STSTART: IPB:SIZB+#(1),CKW:IPB IPB:PER CHAN: IPB: PEER POINTER IPB:FLG WORD: #(10),0 FLAG WORD IPB:USG WORD: 1 USAGE COUNT IPB:LVL WORD: #(2) LEVEL IPB:CLAS WORD: #(3) CLASS IPB:NAM BYTE: #(4) NAME IPB:EID WORD: #(5),-1 EID IPB:TID WORD: #(6) TID IPB:RTRY WORD: #(7) RETRY VALUE IPB:TIMO WORD: #(8) BASE TIMEOUT VALUE IPB:MNT WORD: #(12),0 MOUNT COUNT IPB:PRIO WORD: #(9),:6F00 PRIORITY OF FRONT END ACTIVITY IPB:TYPE WORD: #(11),0 DEVICE TYPE IPB:VNMA WORD: #(13),0 VOLUME NAME ADDRESS TEND: ENDM M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M  TITL LOGICAL MAP TABLE EQUATES - LMT.MAC - 84-94151-67 (A300) ******************************************************************** * * * Logical Map Table (LMT)   * * * *  * * PHYSICAL ECB MIT LRU SEARCH * * MAP # POINTER POINTER CHAIN POINTER * * +---------+---------+---------+---------+---------+ * * L 0| |  | | | | * * O +---------+---------+---------+---------+---------+ * * G 1|  | | | | | * * I +---------+---------+---------+---------+---------+ * * C  2| | | | | | * * A +---------+---------+---------+---------+---------+  * * L 3| | | | | | * * +---------+---------+---------+---------+---------+ * * M 4| | | | | | * * A +---------+---------+---------+---------+---------+ * * P . . . . . . * * . . .  . . . * * # . . . . . . * * +---------+---------+---------+---------+---------+ * * N| | | | | | * * +---------+---------+---------+---------+---------+ * * * *  * *  * ******************************************************************** * * * DEFINE THE LOGICAL MAP TABLE EQUATES * * LMT:PHMP EQU 0 PHYSICAL MAP NUMBER WORD LMT:ECBA EQU 1 ADDRESS OF THE OWNER'S ECB LMT:MITA EQU 2 ADDRESS OF THE MIT FOR THIS LOGICAL MAP LMT:NEXT EQU 3 NEXT LMT ENTRY IN THE LRU MAP CHAIN LMT:STRT EQU 4 STARTING PAGE TO SCAN IN MIT * * * DEFINE THE MISCELLANEOUS LMT EQUATES * * LMT:WDTH EQU 5 THE WIDTH OF THE LMT  Usage Count * * +----------+ * * 3 | LUB: TITL LOGICAL UNIT BLOCK - LUB.MAC - 84-94151-68 (A300) ******************************************************************* *  * * Logical Unit Block  * * ------- ---- ----- * *  * * +----------+ * * -1 | LUB:CKW | LUB Check Word  * * +----------+ * * 0 | LUB:PER | Link to next LUB in LUT * * +----------+ * * 1 | LUB:FLG | Flag Word * * +----------+ * * 2 | LUB:USG |  Usage Count * * +----------+ * * 3 | LUB: LUN | Logical Unit Number * * +----------+ * * 4  | LUB:IOID | I/O Identifier * * +----------+ * * 5 | LUB:QCB | Address of I/O QCB * * +----------+  * * 6 | LUB:QCBH | QCB head ptr in IPB's ECB * * +----------+  * * 7 | LUB:UD1 | User Defined Word 1 * * +----------+  * * 8 | LUB:UD2 | User Defined Word 2 * * +----------+  * * 9 | LUB:LNK | Stack Link Address * * +----------+  * * A | LUB:IPB | IPB pointer * * +----------+ * * B | LUB:IPRE | Prev. LUB in QCB chain * * +----------+ * * C | LUB:INXT | Next LUB in QCB chain * *  +----------+ * * D | LUB:OLD | Old LUB address during a connect.  * * +----------+ * *  * * LUB:CKW - The Logical unit block checkword. It is verified * * whenever the LUB is referenced by the I/O system. * * * * LUB:PER - The address of the next LUB in the chain for * * the Environment. The head of the chain is in the ECB. * *  * * LUB:FLG - The flags for the LUB. * *  * * Bit 15 (LUBN:DEL) - The LUB has been deleted. * *  * * Bit 3 (LUBN:DCE) - The LUN is being disconnected after * *  a disconnect for connect failed. * * * * Bit 2 (LUBN:DID) - The LUB ID, the LUN of this LUB, * * is assigned by the system.  * * * * Bit 1 (LUBN:MNT) - This LUB is mounted.  * * Such LUB's may not be connected or disconnected; * * they are removed only by a dismount operation. * * * * Bit 0 (LUBN:SHR) - This LUB is shareable; it may be * * used by a subordinate Environment. * *  * * LUB:USG - The usage count of the block (LUB). It is * * maintained according to CARTOS system block conventions. * * * * LUB:L UN - The ID of the block. It is identical to the * * logical unit name for the LUB. * *  * * LUB:IOID - The I/O identifier assigned by the handler or  * * manager which processed the mount or connect of this * * logical unit.  * * * * LUB:QCB - The address of the QCB which recieves requests * * for operations sent to a handler or manager for this LUN.* * It is established when the handler or manager processing * * the requests is mounted. * *  * * LUB:QCBH - The location of the head pointer (in an ECB) * * for LUB:QCB. This is needed in case a dismount causes * * the QCB to be destroyed. * *  * * LUN:UD1 - A user defined word which may be querried or * *  modified by IO:GLA. * * * * LUB:UD2 - A user defined word which may be querried or * * modified by IO:GLA.  * * * * LUB:LNK - The next LUB in a stack of pushed LUN's. * * When this LUB is disconnected the next LUN in the * * stack of identical LUN's becomes operative. * * (If no next LUB exists, the disconnected LUN for the LUB * * is undefined.  * * A mounted LUB may not be push connected. * *  * * LUB:IPB - The IPB of the physical unit which services * * requests for the LUB. * * * * LUB:IPRE - The previous LUB in a chain of system wide * * LUN's having the same QCB. This doubly linked * *  chain insures that a dismount or disconnect request * * will not be sent to a handler or manager until  * * all links in the system to that I/O access path are * * logically removed.  * * * * LUB:INXT - The next LUN in a chain of system wide LUN's. * * * * LUB:OLD - The old LUB address (or BLK.MSNG) during a * * connect operation. * *  * ******************************************************************* * * LOGICAL UNIT BLOCK EQUATES * LUB:CKW EQU -1 CHECKWORD LUB:PER EQU 0 PEER LUB:FLG EQU 1 FLAG WORD LUB:USG EQU 2 USAGE COUNT LUB:LUN EQU 3 LOGICAL UNIT NUMBER LUB:IOID EQU 4 I/O IDENTIFIER LUB:QCB EQU 5 ADDRESS OF I/O QCB LUB:QCBH EQU 6 QCB HEAD POINTER I N IPB'S ECB LUB:UD1 EQU 7 USED DEFINED WORD 1 LUB:UD2 EQU 8 USER DEFINED WORD 2 LUB:LNK EQU 9 STACK LINK ADDRESS LUB:IPB EQU :A PHYSICAL UNIT IPB LUB:IPRE EQU :B PREVIOUS LUB IN QCB CHAIN LUB:INXT EQU :C NEXT LUB IN QCB CHAIN LUB:OLD EQU :D OLD LUB WITH SAME LUN DURING CONNECT * * Flag Bit Equates * LUBN:DEL EQU 15 LUB IS DELETED LUBN:DCE EQU 3 LUB IS BEING DISCONNECTED AFTER RECONNECT ERROR LUBN:DID EQU 2 LUB ID (LUN) DYNAMICALLY CREATED (MOUNT OR CONNECT) LUBN:MNT EQU 1 LUB IS MOUNTED LUBN:SHR EQU 0 LUB IS SHAREABLE * * Flag Bit Masks * LUBF:DEL EQU 1%LUBN:DEL MASK FOR DELETED LUB LUBF:DCE EQU 1%LUBN:DCE MASK FOR DISCONNECT AFTER RECONNECT ERROR LUBF:DID EQU 1%LUBN:DID MASK FOR DYNAMICALLY CREATED LUB ID (LUN) LUBF:MNT EQU 1%LUBN:MNT MASK FOR MOUNTED LUB LUBF:SHR EQU 1%LUBN:SHR MASK FOR SHAREABLE LUB * FLG:LUB EQU 0 LUB:SIZ EQU :E LENGTH OF LUB B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B  TITL MAILBOX CONTROL BOX EQUATES - MCB.MAC - 84-94151-69 (A300) **************************************************************** * * +----------+ * -1 | MCB:CKW | Block checkword * +----------+ * 0 | MCB:PER | Pointer to next block in the chain * +----------+ * 1 | MCB:FLG | Flag word * +----------+ * 2 | MCB:USG | Block usage count * +----------+ * 3 | MCB:ID | Block identifier * +----------+ * 4 | MCB:MAIL | The 32 bits of mail * +- -- -- --+ * | | * +----------+ * 6 | MCB:SS4 | Send semaphore (semaphore count) * +- -- -- --+ * |  | Maximum value * +- -- -- --+ * | | List of ACB's waiting on the semaphore * +- -- -- --+ *  | | Initial value of the count * +----------+ * :A | MCB:RS4 | Receive semaphore * +- -- -- --+ *  | | Maximum value * +- -- -- --+ * | | List of ACB's waiting on the semaphore * +- -- -- --+ * | | Initial value of the count * +----------+ * :E | MCB:DAWL | Deleteing activities wait list *  +----------+ * * MCB:CKW - The block checkword. Needed to identify the block and * to ensure sytem integrity. * * MCB:PER - Pointer to the next block in the chain of blocks. The head * word of the chain is contained in the ENVIRONMENT CONTROL * BLOCK for this environment. A zero peer indicates the end * of the list. * * MCB:FLG - Flag word. the defined bits are: * bit 0 - MCB:SSND. If on, a subordinate environment may * send mail to this box. * bit 1 - MCB:SRCV. If on, a subordinate may recieve mail * from this mailbox. *  bit 2 - MCB:PSND. If on, a peer environment may send * mail to this box. * bit 3 - MCB:PRCV. If on, a peer environment may receive * mail from this box. * bit 4 - MCB:ISMG. If on, an initial message is contained * in this box. * bit 15- MCB:DELBL. If on, the mailbox is being deleted> * * MCB:MAIL - The actual 32 bits of information to be sent or recieved. * * MCB:SS4 - A system semaphore. Whenever ma il is sent to this mailbox, * a WAIT is done on this semaphore. After it is sent, a SIGNAL * is done on this semaphore. * * MCB:RS4 - A system semaphore. Whenever mail is received from this mailbox, * a WAIT is done on this semaphore. After it is received, * a SIGNAL is done on this semaphore. * * MCB:DAWL - A list of activities which tryed to send or recieve mail * while the mailbox was being deleted. The destroy will * complete only after the usage count goes to zero. * **************************************************************** * * MAILBOX CONTROL BLOCK EQUATES * MCB:CKW EQU -1 THE MAILBOX CONTROL BLOCK CHECKWORD MCB:PER EQU 0 PEER POINTER MCB:FLG EQU 1 FLAG WORD **************************************************************** * FLAG BIT EQUATES **************************************************************** MCB:SSND EQU 0 IF ON, SUBORDINATE ENVIR. MAY SEND TO THIS BOX MCB:SRCV EQU 1 IF ON, SUB. ENVIR. MAY RECEIVE FROM THIS BOX MCB:PSND EQU 2 IF ON, PEER ENVIR. MAY SEND TO THIS BOX MCB:PRCV EQU 3 IF ON, PEER ENVIR. MAY RECEIVE FROM THIS BOX MCB:IMSG EQU 4 IF ON, THERE IS AN INITIAL MESSAGE MCB:DELB EQU 15 IF ON, BLOCK IS BEING DELETED MCB:FMSK EQU :001F MASK OUT ILLEGAL FLAG BITS **************************************************************** * END FLAG EQUATES **************************************************************** MCB:USG EQU 2 MCB USAGE COUNT MCB:ID EQU 3 MCB: IDENTIFICATION WORD MCB:MAIL EQU 4 ACTUAL "MAIL" IN THE MCB: (32 BITS) MCB:SS4 EQU 6 THE MCB "SEND" SEMAPHORE (4 WORDS) MCB:RS4 EQU 10 THE MCB "RECEIVE" SEMAPHORE (4 WORDS) MCB:DAWL EQU 14 THE "DELETE ACB WAIT LIST" POINTER MCB:SIZE EQU 16 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * | | | | * * O +------------+------------+------------+------------+ * * G  1| | | | | * * I +------------+------------+------------+------------+ * * C 2| | | | | * * A +------------+------------+------------+----- TITL MEMORY INFORMATION TABLE EQUATES - MIT.MAC - 84-94152-61 (A300) ******************************************************************** * * * Memory Information Table (MIT) * * ------ ----------- ----- ----- * *  * * * * SWAP FILE DISK ADDRESS SHARED PTR. STATUS * * +------------+------------+------------+------------+ * * L 0|  | | | | * * O +------------+------------+------------+------------+ * * G  1| | | | | * * I +------------+------------+------------+------------+ * * C 2| | | | | * * A +------------+------------+------------+-----  -------+ * * L 3| | | | | * * +------------+------------+------------+------------+ * * P 4| | | | | * * A +------------+------------+------------+------------+ * * G . . . . . * * E . .  . . . * * . . . . . * * # +------------+------------+------------+------------+ * * 63| | | | | * *  +------------+------------+------------+------------+ * * L 0| MAP REG. |  * * O +------------+ * * G 1| |  * * I +------------+ * * C 2| |  * * A +------------+ * * L 3| |  * * +------------+ * * P 4| | * * A +------------+ * * G .  . * * E . . * *  . . * * # +------------+  * * 63| | * * +------------+  * * 64| MIT:LM | Logical map of this MIT * * +------------+ Bit 15 1 = Map installed * * 0 = Map not installed * * Bits 6-0 Logical map * * * *  * * STATUS: Bit Function * * --- -------- * * * *  15 1 = Page does exist * * 0 = Page does not exist  * * 14 1 = Page in memory * * 0 = Page not in memory  * * 13 1 = Page allocated * * 0 = Page not allocated  * * 5-0 Logical Page Number of this entry * *  * * * * Note that this table is really two tables concatenated * * together. This is done to make it possible to do a block * * move to load and unload the map register contents from the * * translation table of the MMU. * * !  * ******************************************************************** * * HISTORY: 19/Mar/81 jcs * MIT:LN word added to end of each MIT * * DEFINE THE MEMORY INFORMATION TABLE EQUATES * * MIT:DSKA EQU 0 THE TWO WORDS OF DISK ADDRESS MIT:SHRP EQU 2 THE SHARED PAGE POINTER WORD MIT:STAT EQU 3 THE MIT STATUS WORD * MIT:MAPW EQU 0 THE XLATE TABLE MAP WORD CONTENTS * * * DEFINE THE MIT STATUS WORD EQUATES * * MITN:SEX EQU 15 PAGE EXISTS/DOESN'T-EXIST FLAG MITF:SEX EQU 1%MITN:SEX PAGE EXISTS/DOESN'T-EXIST FLAG MITN:SIN EQU 14 PAGE IN/NOT-IN MEMORY FLAG MITF:SIN EQU 1%MITN:SIN PAGE IN/NOT-IN MEMORY FLAG MITN:SAL EQU 13 PAGE ALLOCATED/NOT-ALLOCATED FLAG MITF:SAL EQU 1%MITN:SAL PAGE ALLOCATED/NOT-ALLOCATED FLAG MITN:SLK EQU 12 PAGE TO BE LOCKED WHEN IN MITF:SLK EQU 1%MITN:SLK MITM:SPL EQU :3F STATUS WORD LOGICAL PAGE MASK * * * MISCELLANEOUS MIT EQUATES * * MIT:WDTH EQU 4 THE WIDTH OF THE FIRST PART OF THE MIT IN WORDS MIT:LEN EQU 64 THE LENGTH OF THE MIT IN WORDS MIT:SIZ EQU MIT:WDTH+1*MIT:LEN+1 THE TOTAL SIZE OF THE MIT IN WORDS MIT:MAP EQU MIT:WDTH*MIT:LEN THE OFFSET TO THE BEGINNING OF THE MAP REGISTERS MIT:LM EQU MIT:MAP+MIT:LEN THE OFFSET TO MIT:LM WORD MITM:LM EQU :003F MASK FOR LOGICAL MAP IN MIT:LM MITF:INS EQU :8000 FLAG IN MIT:LN TO INDICATE INSTALLED MAP * MITN:DRT EQU 15 PAGE DIRTY BIT IN MAP REGISTER MITF:DRT EQU 1%MITN:DRT PAGE DIRTY FLAG MITN:ACS EQU 14 PAGE ACCESSED BIT IN MAP REGISTER MITF:ACS EQU 1%MITN:ACS PAGE ACCESSED FLAG MITM:PRO EQU :3000 ACCESS PROTECTION BITS IN MAP REGISTER MITM:PGN EQU :FFF MASK TO GET THE PAGE NUMBER FROM THE MAP REGISTER CONTENTS * MITV:PNA EQU 0 VALUE FOR MAP REGISTER TO INDICATE "PAGE NOT ACCESSABLE" " " " " " " e821005132422821005132422830907142140e@821005132422821005132422821014151054" e821005132422821005132422821005132422e821005132422821005132422821005132422821005132422821005132422821005132422e 830907141606830907141611830907141912 e 830907141612830907141615830907141916 e 830907141616830907141620830907141919  e'#  [830907141624830907141627830907141923  e.830907141628830907141630830907141926  e2 6830907141632830907141634830907141929  e9"830907141635830907141640830907141935  eK5830907141642830907141648830907141942 ef &830907141650830907141653830907141947 eq z830907141654830907141656830907141950 $ ew-830907141658830907141703830907141957 e830907141705830907141706830907141959 e;830907141708830907141716830907142007 e C830907141719830907141723830907142010 e!830907141729830907141737830907142015 e #830907141739830907141742830907142018 e% &o830907141744830907141750830907142024 e 830907141752830907141756830907142028 e1 *830907141757830907141800830907142031 e8S830907141802830907141804830907142034 e<830907141806830907141809830907142037 eD 830907141810830907141813830907142041 eN k830907141815830907141817830907142044 & eW 830907141819830907141822830907142047 ea 830907141823830907141825830907142050 eg830907141827830907141830830907142053  ek 830907141832830907141836830907142056 !et830907141838830907141844830907142101 "e,-830907141846830907141853830907142107 #e' 830907141854830907141856830907142110 $e 830907141858830907141901830907142114 %e830907141902830907141906830907142119 ( ) * + . ACB MACBCB MACCCB MAC CCT MAC CKW MAC DMT MAC EAB MAC ECB MACEMP MACEMPL MACICB MACIOPRIO MACIPB MACLMT MACLUB MACMCB MACMCT MACMIT MACMMT MACMMU MACPPT MACQCB MACQIB MACQIO MACQIOD MACRCB MAC SCB MAC!SGT MAC"SPT MAC#SSB MAC$SYSCOMMON MAC%TCB MAC TITL MEMORY CONTROL TABLE - MCT.MAC - 84-94152-60 (B020) ******************************************************************** * * * Memory Control Table (MCT)  * * ------ ------- ----- ----- * *  * * * * +----------+ ,  * * -1 | MCT:CKW | The MCT checkword * * +----------+ * * 0 | MCT:PPTL | The length of the PPT * * +----------+ * * 1 | MCT:PPTA | The address of the PPT * *  +----------+ * * 2 | MCT:LMTL | The length of the LMT * * +----------+ * * 3 | MCT:LMTA | The address of the LMT  * * +----------+ * * 4 | MCT:MMTA | The address of the MMT * * +----------+ * * 5 | MCT:FPH | The free page list head pointer * * +----------+ * * 6 | MCT:FPT | The free page list tail pointer * * +----------+ * * 7 | MCT:LRUM | LMT of Least Recently Used map * * +----------+ * *  8 | 0 | Reserved * * +----------+ * * 9 | MCT:SBAD | The Small Buffer Pool address * * +----------+  * * 10 | MCT:MBAD | The Medium Buffer Pool address * * +----------+  * * 11 | MCT:DBSZ | Number of Door Stack Blocks * * +----------+  * * 12 | MCT:DBTA | Door Stack Block Bit Map Address * * +----------+ * * 13 | MCT:DMTA | The DMA Map Table address * * +----------+ * * 14 | MCT:SQCB | The QCB address of swapping queue * *  +----------+ * * 15 | MCT:DBLA | Last bit accessed in bit map * * +----------+ * * 16 | MCT:DBBR | Number of Door Stack Blocks / page* * +----------+ * * 17 | MCT:DBBP | Starting page of Door Stack Blocks* * +----------+ * *  * * * * MCT:CKW - The Memory Control Table checkword. This word is * * used to validate the integrity of the operating system. * *  * * MCT:PPTL - The length of the Physical Page Table in number of * *  entries (the number of rows in the table). This is the * * number of total physical pages existing on the system.  * * * * MCT:PPTA - The address of the Physical Page Table. - This is * * the address of the first word of the PPT. * *  * * MCT:LMTL - The length of the Logical Map Table in number of * * entries (the number of rows in the table). This is the * * total number of logical maps available on the system. * * This number is determined at system generation time. * * * * MCT:LMTA - The address of the Logical Map Table. This is the * * address of the first word of the LMT. * *  * * MCT:MMTA - The address of the Map Mapping Table. This is the * * address of the first word of the MMT. * *  * * MCT:FPH - This is the head of the free page list. All of the * * unused physical memory pages in the system are chained * * together to form the free page list. This word points * * to the beginning of that chain. * * * * MCT:FPT - This is the tail pointer of the free page list. * * Free pages are removed from the head of the list and * * added to the tail of the list ot form a first-in-first-out * * queue of the free physical memory pages. * *  * * MCT:LRUM - A pointer to the LMT entry of the Least Recenty  * * Used map. The chain is initially empty; when any map * * is installed it is moved to the end of the list, if * * necessary removing it from a preceeding position in the * * list.  * * * * MCT:SBAD - The address of the small buffer pool. This is * * actually the address of the buffer control block for the * * small buffer pool. * * * * MCT:MBAD - The address of the medium buffer pool. This is * * actually the address of the buffer control block for the * *  medium buffer pool. * *  * * MCT:DBSZ - This is the number of door stack blocks available. * * This is the same as the value in the SGT but is here as * * well for simplicity sake. * *  * * MCT:DBTA - The address of the door stack bit map that keeps * * track of available door stack blocks (where a '1' * * indicates a free door stack block). * *  * * MCT:DMTA - The address of the DMA Map Table. This table is * * used by the DMA map manager to keep track of which logical * * pages in the DMA map are currently being used. * * .  * * MCT:SQCB - The address of the input QCB for the disk  * * servicing the swapping volume. It is set by system * * initialization procedure.  * * * * MCT:DBLA - Upon the previous call to the door stack block * * allocation routine, this bit was the bit found to be a * * '1'. This is the spot to begin the search next time. * * * * MCT:DBBR - This is the number of door stack blocks per page. * * * * MCT:DBBP - The Cold Start activity allocates the door stack * * blocks from physical memory. The number of pages is * *  dependant on the number of door stack blocks sysgenned and * * the number of door stack blocks per page. The physical * * pages allocated for door stack blocks are contiguous so * * only the starting physical page need be saved. * * * ******************************************************************** * * HISTORY: 19/Mar/81 jcs * MCT:LMTP replaced by MCT:PPTP. * MCT:HQCB added. * 09-Apr-81 dln * MCT:DBAD added. * 15-Sep-81 dwm * MCT:HQCB changed to MCT:SQCB * 19-Jan-82 jcs * MCT:PPTP deleted; MCT:LRUM added. * 12-Apr-82 cwk * MCT:SIZ ADDED. * 23-Dec-82 cwk * MCT:DBSZ, MCT:DBTA, MCT:DBLA, MCT:DBBR and MCT:DBBP added. * MCT:LBAD deleted. * 25-Aug-83 jcs * MCT:MMTP removed. * * * DEFINE THE EQUATES FOR THE MEMORY CONTROL TABLE * * MCT:CKW EQU -1 MCT:PPTL EQU 0 PHYSICAL PAGE TABLE LENGTH MCT:PPTA EQU 1 PHYSICAL PAGE TABLE ADDRESS MCT:LMTL EQU 2 LOGICAL MAP TABLE LENGTH MCT:LMTA EQU 3 LOGICAL MAP TABLE ADDRESS MCT:MMTA EQU 4 MAP MAPPING TABLE ADDRESS MCT:FPH EQU 5 FREE PAGE LIST HEAD POINTER MCT:FPT EQU 6 FREE PAGE LIST TAIL POINTER MCT:LRUM EQU 7 LMT ENTRY OF LEAST RECENTLY USED MAP * Word 8 reserved MCT:SBAD EQU 9 SMALL BUFFER POOL ADDRESS MCT:MBAD EQU 10 MEDIUM BUFFER POOL ADDRESS MCT:DBSZ EQU 11 NUMBER OF DOOR STACK BLOCKS MCT:DBTA EQU 12 DOOR STACK BLOCK BIT MAP ADDRESS MCT:DMTA EQU 13 DMA MAP TABLE ADDRESS MCT:SQCB EQU 14 QCB ADDRESS OF SWAPPING DISK MCT:DBLA EQU 15 LAST BIT ACCESSED IN BIT MAP MCT:DBBR EQU 16 NUMBER OF DOOR STACK BLOCKS PER PAGE MCT:DBBP EQU 17 STARTING PHYSICAL PAGE OF DOOR STACK BLOCKS MCT:SIZ EQU 18 SIZE OF MCT TABLE T T T T T T T T TSED MAP MCT:MMTP EQU 8 MAP MAPPING TABLE SEARCH POINTER MCT:SBAD EQU 9 SMALL BUFFER POOL ADDRESS MCT:MBAD EQU 10 MEDIUM BUFFER POOL ADDRESS MCT:DBSZ EQU 11 NUMBER OF DOOR STACK BLOCKS MCT:DBTA EQU 12 DOOR STACK BLOCK BIT MAP ADDRESS MCT:DMTA EQU 13 DMA MAP TABLE ADDRESS MCT:SQCB EQU 14 QCB ADDRESS OF SWAPPING DISK MCT:DBLA EQU 15 LAST BIT ACCESSED IN BIT MAP MCT:DBBR EQU 16 TITL MAP MAPPING TABLE EQUATES - MMT.MAC - 84-94152-62 (A300) ******************************************************************** * * * Map Mapping Table (MMT) /  * * --- ------- ----- ----- * *  * * * * LOGICAL MAP #  STATUS * * +----------------+----------------+ * * P 0|  | | * * H +----------------+----------------+ * * Y 1| | | * * S +----------------+----------------+ * *  I 2| | | * * C +----------------+----------------+  * * A 3| | | * * L +----------------+----------------+  * * 4| | | * * M +----------------+----------------+ * * A . . . * * P . . . * * . . . * * # +----------------+----------------+ * * 15| | | * *  +----------------+----------------+ * * * *  * * STATUS: Bit Function  * * --- -------- * *  * * 15 1 = Physical map in use * * 0 = Physical map not in use * * 14 1 = Map locked in MMU * * 0 = Map not locked in MMU * * 13 1 = Bad map (unusable) * * 0 = Good map * * * ******************************************************************** * * * DEFINE THE MAP MAPPING TABLE EQUATES * * MMT:LGMP EQU 0 LOGICAL MAP NUMBER MMT:STAT EQU 1 STATUS WORD * * * DEFINE THE MMT STATUS WORD EQUATES * * MMTN:USE EQU 15 PHYSICAL MAP IN-USE/NOT-IN-USE FLAG MMTN:LOK EQU 14 PHYSICAL MAP LOCKED/NOT-LOCKED FLAG MMTN:BAD EQU 13 PHYSICAL MAP GOOD/BAD FLAG * * * DEFINE THE MMT STATUS WORD BIT MASKS * * MMTF:USE EQU 1%MMTN:USE PHYSICAL MAP IN-USE/NOT-IN-USE BIT MASK MMTF:LOK EQU 1%MMTN:LOK PHYSICAL MAP LOCKED/NOT-LOCKED BIT MASK MMTF:BAD EQU 1%MMTN:BAD PHYSICAL MAP GOOD/BAD BIT MASK * * * DEFINE THE MISCELLANEOUS MMT EQUATES * * MMT:WDTH EQU 2 THE WIDTH OF THE MMT IN WORDS MMT:LEN EQU 16 THE LENGTH OF THE MMT IN WORDS MMT:SIZ EQU MMT:WDTH*MMT:LEN THE SIZE OF THE MMT IN WORDS S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S NE THE MMT STATUS WORD BIT MASKS * * MMTF:USE EQU 1%MMTN:USE PHYSICAL MAP IN-USE/NOT-IN-USE BIT MASK MMTF:LOK EQU 1%MMTN:LOK P0  TITL MEMORY MANAGEMENT UNIT EQUATES - MMU.MAC - 84-94152-63 (A300) ********************************************************************* * * MEMORY MANAGEMENT UNIT EQUATES * ********************************************************************* * * Define the MMU output control command functions codes * MMU:LDN EQU 7 LOAD THE DMA NUMBER FUNCTION CODE MMU:LUMN EQU 6 LOAD THE USER MAP NUMBER FUNCTION CODE MMU:LCR EQU 5 LOAD THE MMU CONTROL REGISTER FUNCTION CODE MMU:RSET EQU 4 RESET THE MMU FUNCTION CODE * * Define the MMU input control command function codes * MMU:RFA EQU 7 READ THE FAULT ADDRESS FUNCTION CODE MMU:RMN EQU 6 READ THE DMA AND USER MAP NUMBERS FUNCTION CODE MMU:RCR EQU 5 READ THE CONTROL REGISTER FUNCTION CODE MMU:RLP EQU 3 READ THE LAST "P" FUNCTION CODE * * Define the MMU function codes for testing error conditions * using the SST instruction * MMU:SPAE EQU 4 PAGE ACCESS ERROR FUNCTION CODE MMU:SUMT EQU 3 UNINSTALLED MEMORY TRAP FUNCTION CODE MMU:STTP EQU 2  TRANSLATE TABLE PARITY ERROR FUNCTION CODE * * Define the MMU control port bit fields * MMUN:TAE EQU 0 Bit 0 - Table Access Enable MMUN:TE EQU 1 Bit 1 - Translation Enable COMMENT Bit 2 - Unused MMUN:CE EQU 3 Bit 3 - Cache Enable MMUN:RCH EQU 4 Bit 4 - Restricted Cache Hits Enable MMUN:CHI EQU 5 Bit 5 - Cache Hits Indicator MMUN:CPE EQU 6 Bit 6 - Cache Parity Error Indicator MMUN:ELI EQU 7 Bit 7 - Error Light Indicator * * DEFINE THE TRANSLATE TABLE ACCESS MODE BIT FIELD EQUATES * MMUF:NA EQU 0 NO ACCESS ALLOWED MMUF:RF EQU :1000 READ/FETCH ACCESS ALLOWED MMUF:RW EQU :2000 READ/WRITE ACCESS ALLOWED MMUF:RWF EQU :3000 READ/WRITE/FETCH ACCESS ALLOWED * * Define the miscellaneous MMU equates * MMU:BASE EQU :FC00 The base address of the translation table MMU:SIZ EQU 64 The number of words in each physical map n n n n n n n n n n n n n n n n n n n n n n nor Indicator MMUN:ELI EQU 7 Bit 7 - Error Light Indicator * * DEFINE THE TRANSLATE TABLE ACCESS MODE BIT FIELD EQUATES * M TITL PHYSICAL PAGE TABLE EQUATES - PPT.MAC - 84-94152-64 (A300) ******************************************************************** * * * Physical Page Table (PPT)  * * -------- ---- ----- ----- * *  * * * * MIT POINTER  STATUS * * +----------------+----------------+ * * P 0|  | | * * H +----------------+----------------+ * * Y 1| | | * * S +----------------+----------------+ * *  I 2| | | * * C +----------------+----------------+  * * A 3| | | * * L +----------------+----------------+  * * 4| | | * * P +----------------+----------1 ------+ * * A . . . * * G . . . * * E . . . * * +----------------+----------------+ * * # 4095| | | * *  +----------------+----------------+ * * * * * * STATUS: Bit Function  * * --- -------- * *  * * 15 1 = Page in use * * 0 = Page available for use * * 14-11 Page lock count * * 0 = Page is not locked in memory * * 10-6 Usage count for shared pages (maximum of 32) * * 5-0 Logical page number in the MIT * * * *  * * * ******************************************************************** * * HISTORY: 19/Mar/81 jcs * Swapped in/out flag deleted * * 18/May/81 DWM * Changed the "locked" flag bit to a count * * * DEFINE THE PHYSICAL PAGE TABLE EQUATES * * PPT:MITA EQU 0 THE ADDRESS OF THE MIT WHICH OWNS THIS PHYSICAL PAGE PPT:STAT EQU 1 THE PPT STATUS WORD * * * DEFINE THE PPT STATUS WORD BIT EQUATES * * PPTN:USE EQU 15 THE PAGE IN-USE/NOT-IN-USE FLAG PPT:SLOK EQU 11 NUMBER OF TIMES TO SHIFT RIGHT TO GET THE COUNT PPT:SCNT EQU 6 NUMBER OF TIMES TO SHIFT RIGHT TO GET THE COUNT PPT:SLPG EQU 0 NUMBER OF TIMES TO SHIFT RIGHT TO GET THE COUNT * * * DEFINE THE PPT STATUS WORD FIELD MASKS * * PPTF:USE EQU 1%PPTN:USE THE FLAG FOR THE IN-USE/NOT-IN-USE FLAG PPTM:LOK EQU :7800 THE MASK FOR THE PAGE LOCK COUNT PPTM:CNT EQU :7C0 THE MASK FOR THE SHARED PAGE USAGE COUNT FIELD PPTM:LPG EQU :3F THE MASK FOR THE LOGICAL PAGE FIELD PPTM:PPG EQU :FFF THE PHYSICAL PAGE NUMBER IF THE ENTRY IS NOT IN USE * * * DEFINE THE MISCELLANEOUS PPT EQUATES * * PPT:WDTH EQU 2 THE WIDTH OF THE PPT PPT:INST EQU 0 THE PHYSICAL PAGE TABLE INITIAL STATUS VALUE PPT:PSTS EQU :8800 THE PPT STATUS VALUE FOR A PERMANENTLY ALLOCATED PAGE PPTV:SHR EQU :40 THE VALUE NEEDED TO CHANGE THE SHARED COUNT BY ONE PPTV:LOK EQU :800 THE VALUE NEEDED TO CHANGE THE LOCK COUNT BY ONE S S S TITL QUEUE CONTROL BLOCK - QCB.MAC - 84-94150-66 (A300) *************************************************************************** * * +----------+ * -1 | QCB:CKW | QCB checkword * +----------+ * 0 | QCB:PER  | Peer link to next ACB * +----------+ * 1 | QCB:FLG | Flag word * +----------+ *  2 | QCB:USG | Usage count * +----------+ * 3 | QCB:ID | ID of QCB * +----------+ * 2  4 | QCB:PUTS | System semaphore for PUTs to queue * + - - - - -+ * 5 | | (Max number of PUTs) * + - - - - -+ * 6 | | (ACB's waiting to PUT) * + - - - - -+ * 7  | | (Initial PUT count) * +----------+ * 8 | QCB:GETS | System semaphore for GETs from queue * + - - - - -+ * 9 | | (Max number of GETs) * + - - - - -+ * A |  | (ACB's waiting to GET) * + - - - - -+ * B | | (Initial GET count) * +----------+ * C | QCB:QIBL | List of QIB's PUT but not yet obtained by GET * +----------+ * D | QCB:ACKL | QIB's obtained by GET waiting for acknowledge * +----------+ * E | QCB:DAWL | List of ACB's waiting for queue destroy * +----------+ * * QCB:CKW - The queue control block checkword. This word is checked *  for validity each time the system performs a queue service routine. * * QCB:PER - The link to the next QCB in the Environment. The head * pointer for this chain is in the ECB (ECB:QCB). * * QCB:FLG - Flag word. * * Bit 15 - QCB has been destroyed. * * Bit 3 (QIBF:GSU) - Subordinate Environments may GET from this queue. * * Bit 2 (QIBF:GPE) - Peer Environments may Get from this queue. * * Bit 1 (QIBF:PSU) - Subordinate Environments may Put to this queue. * *  Bit 0 (QIBF:PPE) - Peer Environments may Put to this queue. * * QCB:USG - The current usage count of the QCB. Adheres to CARTOS * system block standard conventions. * * QCB:ID - The ID of the queue. This will be unique for all queues in * the Environment chain. * * QCB:PUTS - A system semaphore which controls PUTs to the queue. Its * format and usage conforms to CARTOS system semaphore conventions. * * QCB:GETS - A system semaphore which controls GETS from the queue. Its * format and usgae conforms to CARTOS system semaphore conventions. * There is no situation in which Activity(s) may be waiting to PUT * to a queue and other Activity(s) waiting to GET from the queue. * If an Activity(s) is waiting to Get from the queue there can be * no QIB on the QCB:QIBL chain. * * QCB:QIBL - A chain of QIB's whcih have been PUT to the queue but * have not yet been handed to an Activity by a GET. This list * is maintained in FIFO order within equal priority. * * QCB:ACKL - A chain of QIB's which have been PUT to the queue and * then handed to an Activity by a GET and have a Return Queue * specified in the QIB. When acknowledged, a QIB is removed * from this list and PUT to the return queue. * * QCB:DAWL - A list of ACB's which are waiting for the queue to * be destroyed. The destroy will complete only when the usage * count goes to zero. * *************************************************************************** * * QCB EQUATES * QCB:CKW EQU -1 CHECKWORD QCB:PER EQU 0 QCB CHAIN PEER (ENV'T WIDE) QCB:FLG EQU 1 FLAG WORD QCB:USG EQU 2 USAGE COUNT QCB:ID EQU 3 ID QCB:PUTS EQU 4 PUT SEMAPHORE (WAIT3 ED ON BY PUT) 4 WDS QCB:GETS EQU 8 GET SEMAPHORE (4 WDS) QCB:QIBL EQU :C QIB INPUT LIST QCB:ACKL EQU :D QIB ACKNOWLEDGE WAIT LIST QCB:DAWL EQU :E DELETING ACB WAIT LIST * * FLAGS * QCBF:PPE EQU :0001 1 IF PEERS MAY PUT ON THIS QCB QCBF:PSU EQU :0002 1 IF SUBORDINATES MAY PUT ON THIS QCB QCBF:GPE EQU :0004 1 IF PEERS MAY GET FROM THIS QCB QCBF:GSU EQU :0008 1 IF SUBORDINATES MAY GET FROM THIS QCB FLG:QCB EQU :000F LEGAL PRESET FLAGS QCB:SIZ EQU :F SIZE OF THE QCB * * DEFINE THE QCB MACRO * QCB: MACRO * * QUEUE CONTROL BLOCK DEFINITION MACRO * * CALLING SEQUENCE: * * QCBLABEL QCB: P1,P2,P3 * * P1 = QCB FLAG WORD (DEFAULTS TO :000F) * P2 = QCB IDENTIFICATION WORD * P3 = QUEUE PUT LIMIT VALUE (THROTTLE LIMIT) * * Macro invocation: * * #(-1) QCB: #1,#2,#3 * MACLAB CHECKP: #(?),2,3 NAM #(-1) #(-1) STSTART: QCB:SIZ,CKW:QCB QCB:PER CHAN: QCB: PEER POINTER QCB:FLG WORD: #(1),FLG:QCB FLAG WORD QCB:USG WORD: 1 USAGE COUNT (MAKES IT PERMANENT) QCB:ID WORD: #(2) IDENTIFICATION WORD QCB:PUTS ORG: PUT SYSTEM SEMAPHORE SSB: #(3),#(3) QCB:GETS ORG: GET SYSTEM SEMAPHORE SSB: 0,:7FFF TEND: ENDM F F F F F F F F F F F F F F F F F F F F F F F F F F F F TITL QUEUE INFORMATION BLOCK - 84-94152-65 (A300) ********************************************************************* * *  QUEUE INFORMATION BLOCK * * +----------+ * -1 | QIB:CKW | QIB Checkword (CKW:QIB). * +----------+ * 0 | QIB:PER | Peer pointer. * +----------+ * 1 | QIB:FLG | Flag word. *  +----------+ * 2 | QIB:USG | Block usage (not used). * +----------+ * 3 | QIB:ID | Block identification. * +----------+ * 4 | QIB:PRIO | Priority. * +----------+ * 5 | QIB:RQCB | Return QCB address. * +----------+ * 6 | QIB:RECB | Return (PUTting) ECB. * +----------+ * 7 | 0 | Reserved. * +----------+ * 8 | QIB:UDB1 | User data area 1 (12 words). * * 13 | | * +----------+ * 14 | QIB:UDB2 | User data area 2 (12 words). * *  1F | | * +----------+ * * QIB:CKW - The queue information block checkword. This word * is checked whenever a PUT, GET, or ACK is done on the QIB. * * QIB:PER - The link to the next QIB on the list. A QIB may be *  on either the QCB:QIBL or QCB:QCKL list * * QIB:FLG - The QIB flag word. This word must be reset to * zero before a QIB is PUT to a queue. The information * in this word is used to control the flow of the QIB * by the queue support routines althought the bits may * be tested after a GET. * * Bit 14 (QIBF:AER) - The acknowledge was errored because * the return queue was destroyed. * * Bit 13 (QIBF:APT) - The QIB was put due to an acknowledge. * * Bit 12 (QIBF:RPT) - The QIB was put by the R:QPUT service. * * QIB:USG - This word is not used because the "find and mark" * and "dequeue block" procedures are not used on this block. * Other general block procedures are used, s4 o the space must * be included. * * QIB:ID - This identification word is used only for QIB's which * are PUT with a return queue and have been moved to the * QCB:ACKL list by a GET. It is the means by which a caller * identifies the QIB which is to be acknowledged. * * QIB:PRIO - This word is specified by the caller of the PUT. * The QIB is enqueued on the QCB:QIBL list in FIFO order * within priority sequence. The value is returned on a GET. * * QIB:RQCB - The QCB address of the return queue. This word * must be zero if there is no return queue. * * QIB:RECB - The caller's QCB address. The return queue must * be in the caller's Environment, but this word must be * specified whether a return queue is specified or not. * * QIB:UDB1 - The start of the 12-word user block area 1. This * area, along with user area 2 is passed intact from the * PUT to the GET. It is updated by an acknowledge so that * the GET from the return queue receives information from * the ACK call. * * QIB:UDB2 - The start of the 12-word user block area 2. This * area is maintained intact from the PUT to the acknowledge. * The GET from the return queue receives the original PUT * information. * ********************************************************************* * QIB:CKW EQU -1 CHECKWORD QIB:PER EQU 0 PEER QIB:FLG EQU 1 FLAG WORD QIB:USG EQU 2 USAGE COUNT (NOT USED, SPACE REQUIRED) QIB:ID EQU 3 ID (FROM ONE OF THE USER WORDS) QIB:PRIO EQU 4 PRIORITY QIB:RQCB EQU 5 RETURN QUEUE QCB QIB:RECB EQU  6 RETURN QUEUE ECB QIB:RES1 EQU 7 RESERVED * * USER DATA AREAS * QIB:UDB1 EQU :8 USER DATA BLOCK QIB:UD1L EQU 12 DATA BLOCK 1 LENGTH QIB:UDB2 EQU QIB:UDB1+QIB:UD1L USER DATA BLOCK 2 QIB:UD2L EQU 12 DATA BLOCK 2 LENGTH * * FLAGS, BLOCK LENGTH * QIB:SIZ EQU QIB:UDB2+QIB:UD2L QUEUE INFORMATION BLOCK LENGTH QIBF:AER EQU :4000 ACKNOWLEDGE ERRORED BY SYSTEM QIBF:APT EQU :2000 QIB PUT BY ACKNOWLEDGE QIBF:RPT EQU :1000 QIB PUT BY R.PUT SERVICE FLG:QIB EQU 0 h h h h h h h h h h h 6 RETURN QUEUE ECB QIB:RES1 EQU 7 RESERVED * * USER DATA AREAS * QIB:UDB1 EQU :8 USER DATA BLOCK QIB:UD1L EQU 12 DATA BLOCK 1 LENGTH QIB:UDB2 EQU QIB:UDB1+QIB:UD1L USER DATA BLOCK 2 QIB:UD2L EQU 12 DATA BLOCK 2 LENGTH * * FLAGS, BLOCK LENGTH * QIB:SIZ EQU QIB:UDB2+QIB:UD2L QUEUE INFORMATION BLOCK LENGTH QIBF:AER EQU :4000 ACKNOWLEDGE ERRORED BY SYSTEM QI TITL COMMON QUEUE DEFINITIONS FOR THE I/O SUBSYSTEM - 84-94152-66 (A303) ****************************************************** * * COMMON QUEUE DEFINITIONS FOR THE I/O SUBSYSTEM. * * These equates apply to user area 1 of a queue message block * (or queue information block). The data in this area if filled * by the I/O door and passed to an I/O processor (handler or * manager). The handler or manager returns information to the * I/O door in this area. The equates are relative to word 0 * of the QMB (or QIB). * * +----------+ * 8 | QI:IOID | I/O Identifier * +----------+ *  9 | QI:RFLG | Flags returned to I/O door from processor * +----------+ * A | QI:CFIA | The addre5 ss of the CFI (if user supplied). * +----------+ * B | QI:FC | Function code. * +----------+ * C | QI:OP1 | Operand 1 from the IOB. * +----------+ * D | QI:OP2 | Operand 2 from the IOB. * +----------+ * E | QI:ACT | Actual byte count. * +----------+ * F | QI:ST | Completion status. * +----------+ * 10 | QI:CFI | Current file index (32-bits). *  +- - - - - + * 11 | | * +----------+ * 12 | QI:LM | Logical map number for I-O. * +----------+ * 13 | QI:UECB | ECB address of user. * +----------+ * * QI:IOID - The I/O identifier for this operation. This * value is returned by an I/O processor to the door * when a mount is completed and is saved in the LUB. * Therafter, for any I/O operation on the LUN for that * LUB, it is suppplied to the I/O processor. * * QI:RFLG - Flags returned from an I/O processor to the door. * * Bit 1 - User CFI must be updated. * * Bit 2 - User actual count must be updated. * * QI:CFIA - The user CFI pointer, copied from the IOB. * *  QI:FC - The I/O function, copied from the IOB. * * QI:OP1 - Operand 1, copied from the IOB. * * QI:OP2 - Operand 2, copied from the IOB. * * QI:ACT - The actual byte count, to be returned to the caller. * * QI:ST - The status of the I/O operation, returned to the caller. * * QI:CFI - The user's CFI, copied from the user space if * the CFI address was specified in the IOB. This value * may be modified by the I/O operation and copied back * to the caller. * * QI:LM - The LM number where the buffer, FIB, and DIB are. * * QI:UECB - The ECB address where the LUN is. * ****************************************************** QI:IOID EQU 8 I/O IDENTIFIER QI:RFLG EQU 9 FLAGS RETURNED FROM DOOR QI:CFIA EQU 10 CFI POINTER (IN USER SPACE) QI:FC EQU 11 FUNCTION CODE QI:OP1 EQU 12 OP1 OF THE IOB QI:OP2 EQU 13 OP1 OF THE IOB QI:ACT EQU 14 ACTUAL BYTE COUNT QI:ST EQU 15 COMPLETION STATUS QI:CFI EQU 16 CFI (2 WORDS) QI:LM EQU 18 LM NUMBER QI:UECB EQU 19 USER ECB ADDRESS * * QI:OP1 CAN BE ANY OF THE FOLLOWING, DEPENDING * ON THE CURRENT I/O REQUEST * QI:BCT EQU QI:OP1 REQUESTED BYTE COUNT FOR READ AND WRITE QI:FOP EQU QI:OP1 OPERAND FOR FUNCTION QI:POS EQU QI:OP1 OPERAND FOR POSITION QI:COP EQU QI:OP1 CONNECT OPERAND QI:OPNOP EQU QI:OP1 OPEN OPERAND, FORMAT IDENTICAL TO FDB FLAGS QI:FIB EQU QI:OP1 FIB ADDRESS QI:DIB EQU QI:OP1 ADDRESS OF USER DIB FOR MOUNT QI:IPB EQU QI:OP1 ADDRESS OF LP HANDLER'S IPB * * QI:CFI AND QI:CFI+1 CONTAIN THE HANDLER QID AND * THE HANDLER EID AT INITIAL MOUNT TIME * QI:HQID EQU QI:CFI QI:HEID EQU QI:CFI+1 * * QI:CFI AND QI:CFI+1 CONTAIN THE CONTROLLER AND DRIVE * STATUS WORDS ON RETURN FROM A "TEST I/O" REQUEST. * QI:CST EQU QI:CFI CONTROLLER STATUS WORD QI:DST EQU QI:CFI+1 DRIVE STATUS WORD * * QI:OP2 CAN BE ANY OF THE FOLLOWING, DEPENDING * ON THE CURRENT I/O REQUEST * QI:BUF EQU QI:OP2 I/O BUFFER ADDRESS * * QI:FC FLAG BIT EQUATES * QIN:SCB EQU 13 SECOND BYTE FLAG QIN:SHRU EQU 11 6 SHAREABLE UNIT * * QI:FC FLAG MASK EQUATES * QIF:SB EQU 1%QIN:SCB SECOND BYTE FLAG QIF:SU EQU 1%QIN:SHRU SHAREABLE UNIT MASK * * QI:RFLAG EQUATES * QIN:NWT EQU 0 NO WAIT I/O FLAG QIN:UCFI EQU 1 UPDATE CFI FLAG QIN:UACT EQU 2 UPDATE ACTUAL COUNT * * QI:RFLG MASK EQUATES * QIF:NWT EQU 1%QIN:NWT NO WAIT I/O MASK QIF:UCFI EQU 1%QIN:UCFI UPDATE CFI MASK QIF:UACT EQU 1%QIN:UACT UPDATE ACTUAL COUNT MASK * * MISC DATA * QIF:SELB EQU :0001 SELECT BIT FOR FUNCTION QIF:BDRT EQU :000F BAUD RATE IN FUNCTION > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > SK * * QI:RFLAG EQUATES * QIN:NWT EQU 0 NO WAIT I/O FLAG QIN:UCFI EQU 1 UPDATE CFI FLAG QIN:UACT EQU 2 UPDATE ACTUAL COUNT * * QI:RFLG MASK EQUATES * QIF:NWT EQU 1%QIN:NWT NO WAIT I/O MASK QIF:UCFI EQU 1%QIN:UCFI UPDATE CFI MASK QIF:UACT EQU 1%QIN:UACT UPDATE ACTUAL COUNT MASK * * MISC DATA * QIF:SELB EQU :0001 SELECT BIT FOR FUNCTION QIF:BDRT EQU :000F  TITL QIB EQUATES FOR THE I/O DOOR - QIOD.MAC - 84-94152-67 (A303) **************************************************************** * * * USER AREA 2 EQUATES FOR THE IO:DOOR  * * * **************************************************************** * * +----------+ * 14 | QIO:IOPR | Peer pointer from current IOB * +----------+ *  15 | QIO:SCB | SCB address from current IOB * +----------+ * 16 | QIO:IPB | IPB address during mount operations * +----------+ * 17 | QIO:FLG | Flag word * +----------+ * 18 | QIO:LUB | LUB address * +----------+ * 19 | QIO:LUBH | LUB head address (mount only) *  +----------+ * 1A | QIO:IOB | Current IOB address * +----------+ * 1B | QIO:ACB |  ACB address (wait IO only) * +----------+ * 1C | QIO:USER | User ECB * +----------+ *  1D | QIO:OFC | Function code from IOB * +----------+ * 1E | QIO:CFIA | CFI address from IOB * +----------+ * 1F | QIO:LM | Logical map of calling activity * +----------+ * * **************************************************************** QIO:IOPR EQU QIB:UDB2+0 IOB PEER ADDRESS QIO:SCB EQU QIB:UDB2+1 SCB ADDRESS QIO:IPB EQU QIB:UDB2+2 IPB ADDRESS QIO:NLUB EQU QIB:UDB2+2 NEW LUB ADDRESS (DISCONNECT FOR CONNECT) QIO:FLG EQU QIB:UDB2+3 FLAG WORD QIO:LUB EQU QIB:UDB2+4 LUB ADDRESS QIO:LUBH EQU QIB:UDB2+5 LUB HEAD ADDRESS (OWN OR PARENT'S LUT) QIO:IOB EQU QIB:UDB2+6 IOB ADDRESS QIO:ACB EQU QIB:UDB2+7 ACB ADDRESS (OR ZERO IF NOWAIT IO) QIO:USER EQU QIB:UDB2+8 USER ECB ADDRESS QIO:OFC EQU QIB:UDB2+9 FUNCTION CODE FROM IOB QIO:CFIA EQU QIB:UDB2+10 CFI ADDRESS FROM IOB QIO:LM EQU QIB:UDB2+11 LOGICAL MAP OF CALLING ACTIVITY * * * (USER DEFINED BLOCK 2) FLAG WORD (QIO:FLG) BIT EQUATES * * QION:SIO EQU 0 CALL CAME FROM S:IO, NOT I:IO QION:SYS EQU 1 S:IO BUFFER LOCATION IN SYSTEM SPACE QION:MTE EQU 7 2 MOUNT ERROR - REQUEST CHANGED TO DISMOUNT QION:QPT EQU 3 QUEUE PUT FLAG (EITHER A MOUNT OR DISMOUNT) QION:DOV EQU 4 DESTROY ENVIRONMENT OVERRIDE * * FLAG WORD (QIO:FLG) BIT MASKS * QIOF:SIO EQU 1%QION:SIO MASK FOR S:IO QIOF:SYS EQU  1%QION:SYS MASK FOR S:IO LOCATION OF BUFFER QIOF:MTE EQU 1%QION:MTE MASK FOR MOUNT ERROR QIOF:QPT EQU 1%QION:QPT MASK FOR QUEUE PUT FLAG QIOF:DOV EQU 1%QION:DOV MASK FOR DESTROY OVERRIDE * * OTHER EQUATES * IO:DEBUG EQU -1 TRUE; IO DOOR TRACE ON Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q4 DESTROY ENVIRONMENT OVERRIDE * * FLAG WORD (QIO:FLG) BIT MASKS * QIOF:SIO EQU 1%QION:SIO MASK FOR S:IO QIOF:SYS EQU  TITL REGION CONTROL BLOCK - RCB.MAC - 84-94152-68 (A300) * * RCB - Region Control Block * * This block is the internal control block for shared memory * regions. It is allocated out of a small freepool block * during an R:CRSMR and deleted in an R:DSSMR. The blocks * are chained off of ECB:RCB. * * Description of non-standard words: * * RCB:ID - This is the id the user uses to talk about * the block with in create, map, and destroy shared * memory region blocks * * RCB:LOW - The lower bound of the shared memory region. * * RCB:HI - The upper bound of the region. The region is * contiguous between RCB:LOW and RCB:HI and thus is * made up of an integral number of pages. * * RCB:ECB - Backpointer to the ECB (peer word) which points * to this RCB * RCB:CKW EQU -1 CHECKWORD RCB:PER EQU 0 PEER RCB:FLG EQU 1 FLAGS RCB:USG EQU 2 USAGE COUNT RCB:ID EQU 3 ID OF THIS REGION RCB:LOW EQU 4 LOW ADDRESS (PAGE BOUNDRY) RCB:HI EQU 5 HI ADDRESS (PAGE BOUNDRY - 1) * RESW EQU 6 * RESW EQU 7 RCB:ECB EQU 8 ECB WHICH OWNS THE RCB RCB:SIZ EQU RCB:ECB+1 SIZE OF THE RCB * * FLAGS * * Description of flags: * * PEOK - This bit is on (1) if requests by peer environments * to map-in parts of the data are legal. (Peers are those with * the same parent.) * * SUOK - Bit on if request by subordinates to mapin are legal. * (Subordinates are those parent owns the particular RCB) * RCN:PEOK EQU 0 SHARE W/ PEER IS OK RCF:PEOK EQU 1%RCN:PEOK RCN:SUOK EQU 1 SHARE W/ SUBORDINATE OK RCF:SUOK EQU 1%RCN:SUOK * * MACRO TO BUILD AN RCB * * P1 = FLAGS * P2 = USAGE COUNT * P3 = ID * P4 = LOW ADDRESS * P5 = HIGH ADDRESS *  P6 = ECB ADDRESS * * ALL PARAMETERS DEFAULT TO ZERO * RCB: MACRO MACLAB CHECKP: #(?),0,6 NAM #(-1) #(-1) STSTART: RCB:SIZ,CKW:RCB RCB:PER CHAN: RCB: RCB:FLG WORD: #(1),0 RCB:USG WORD: #(2),0 RCB:ID WORD: #(3),0 RCB:LOW WORD: #(4),0 RCB:HI WORD: #(5),0 RCB:ECB WORD: #(6),0 TEND: ENDM M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M  TITL SEMAPHORE CONTROL BLOCK EQUATES - 84-94152-69 (A300) * * * SEMAPHORE CONTROL BLOCK (SCB) EQUATES * * Description of Nonstandard words: * * SCB:ID - The id that the user uses to talk about this Sema4 * with. * * SCB:DAWP - When an Activity deletes a semaphore, all waiting * activities are given an exception and freed. When they resume * execution, the Actvities decrement the usage count (SCB:USG). * When this count goes to zero, the deleting Activity is removed * from this (SCB:DAWP) list, t8 he block is returned, and the * deleting Activity is resumed. In this manner, a semaphore * will be gone by the time an Activity returns from an R:DSSEM * call. * * SCB:SEM - The beginning of an SSB (System Semaphore Block). * This is the count word. If the count > 0, the count is * decremented and the Activity continues (on a wait). If * < 0, the Activity is suspended. On signal, this word is * incremented by 1. In the case of a counting sema4, if * the value was < 0, the 1st Activity on SCB:WAIT is freed. * In the case of an event semaphore, all Activities on WAIT * are freed and the count is set to zero. See also the * 4/x5 semaphore instructions (the wierd 3-way skips). * * SCB:MAX - The maximum value that SCB:CNT can go to. * * SCB:WAIT - The list of all ACBs (Activity Control Blocks) * suspended (hung on an R:WAIT). * * SCB:INIT - The initial value of SCB:CNT. This will be * used for an option in powerfail/restart when implemented. * * SCB:CKW EQU -1 CHECKWORD SCB:PER EQU 0 PEER POINTER SCB:FLG EQU 1 FLAGS SCB:USG EQU 2 USAGE COUNT SCB:ID EQU 3 IDENTIFIER SCB:DAWP EQU 4 DELETING ACTIVITY WAIT POINTER COMMENT WORD 5 IS RESERVED SCB:SEM EQU 6 SEMA4 (SSB) START SCB:CNT EQU 6 SEMAPHORE COUNT VALUE SCB:MAX EQU 7 SEMAPHORE MAXIMUM VALUE SCB:WAIT EQU 8 ACB WAIT LIST (LIST OF ALL ACB WAITING ON SEMAPHORE) SCB:INIT EQU 9 SEMAPHORE INITIAL VALUE * * SCB FLAG WORD BIT DEFINITIONS * * Definition of flag bits: * * ...EVT - One if Event and zero if counting type semaphore. * (See SCB:SEM/SCB:CNT above for a brief description of the * difference) * ...NXO - No Exception on Overflow - If this bit is off, * a signal which will cause SCB:CNT>SCB:MAX is flagged as * an exception. Otherwise it is not flagged. In either case, * SCB:CNT will not be incremented to be greater than SCB:MAX. * ...DLB - Deleting bit - See the description of the S:FNDMRK * and S:DQBLCK services for a complete description. This * bit is on in the case where the block is being deleted. * SCB:FEVT EQU 0 IF 1 THEN SEMA4 IS EVENT, ELSE COUNTING SCB:FNXO EQU 1 IF 1 THEN IGNORE OVERFLOW, ELSE EXCEPTION SCB:FDLB EQU 15 SEMAPHORE "DELETING" FLAG BIT SCBN:EVT EQU 0 ONE IF EVENT, ZERO IF COUNTING SCBF:EVT EQU 1%SCBN:EVT SCBN:NXO EQU 1 ONE IF IGNORE OVERFLOW, ZERO FOR EXCEPTION SCBF:NXO EQU 1%SCBN:NXO * * SCB FLAG WORD FIELD MASKS * FLG:SCB EQU 3 LEGAL FLAG MAP SCB:FDEL EQU :8000 DELETING FLAG * * SCB FLAG WORD VALUES * SCB:VEVT EQU 1 FLAG WORD VALUE FOR AN EVENT SEMAPHORE SCB:VCNT EQU 0 FLAG WORD VALUE FOR A COUNTING SEMAPHORE * * SCB MISCELLANEOUS EQUATES * SCB:SIZ EQU 11 NUMBER OF WORDS IN THE SCB TITL SCB: MACRO * * * SEMAPHORE CONTROL BLOCK DEFINITION MACRO * * CALLING SEQUENCE: * * SCBLABEL SCB: P1,P2,P3 * * P1 = THE DESIRED SEMAPHORE FLAG WORD (INCLUDING SEMAPHORE TYPE) * P2 = THE INITIAL SEMAPHORE COUNT VALUE * P3 = THE MAXIMUM SEMAPHORE COUNT VALUE * * MACLAB CHECKP: #(?),3,3 NAM #(-1) #(-1) STSTART: SCB:SIZ,CKW:SCB SCB:PER CHAN: SCB: SEMAPHORE CONTROL BLOCK PEER CHAIN SCB:FLG WORD: #(1),0 SEMAPHORE CONTROL BLOCK FLAG WORD SCB:USG WORD: 0 SEMAPHORE CONTROL BLOCK USAGE COUNT SCB:ID WORD: 0 SEMAPHORE CONTROL BLOCK9  ID (NOT NEEDED FOR GEN'ED IN SCBS) SCB:DAWP WORD: 0 SEMAPHORE CONTROL BLOCK DELETING ACB WAIT POINTER SCB:CNT WORD: #(2),0 SEMAPHORE COUNT VALUE SCB:MAX WORD: #(3),:7FFF SEMAPHORE MAXIMUM VALUE SCB:WAIT WORD: 0 ACB WAIT LIST SCB:INIT WORD: #(2) SEMAPHORE INITIAL VALUE TEND: ENDM L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L SEMAPHORE CONTROL BLOCK FLAG WORD SCB:USG WORD: 0 SEMAPHORE CONTROL BLOCK USAGE COUNT SCB:ID WORD: 0 SEMAPHORE CONTROL BLOCK ID (NOT NEEDED FOR GEN'ED IN SCBS) SCB:DAWP WORD: 0 SEMAPHORE CONTROL BLOCK DELETING ACB WAIT POINTER SCB:CNT WORD: #(2),0 SEMAPHORE COUNT VALUE SCB:MAX WORD: #(3),:7FFF SEMAPHORE MAXIMUM VALUE SCB:WAIT WORD: 0 ACB WAIT LIST SCB:INIT WORD: #(2) SEMAPH TITL System Generation Table - SGT.MAC - 84-94150-61 (B000) ******************************************************************** * * * System Generation Table  * * ------ ---------- ----- * *  * * * * +----------+  * * -1 | SGT:CKW | The sysgen table checkword * * +----------+ * * 0 | SGT:LMTL | The length of the LMT * *  +----------+ * * 1 | SGT:SBSZ | Small buffer pool size * *  +----------+ * * 2 | 0 | Reserved  * * +----------+ * * 3 | SGT:MBSZ | Medium buffer pool size * * +----------+ * * 4 | 0 | Reserved  * * +----------+ * * 5 | 0 | Reserved * * +----------+ * * 6 | 0  | Reserved * * +----------+ * * 7  | SGT:DBSZ | Door stack buffer pool size * * +----------+ * *  8 | 0 | Reserved * * +----------+  * * 9 | SGT:SYD | System disk ID word #1 * * +----------+  * * 10 | | System disk ID word #2 * * +----------+  * * 11 | SGT:SYT | System terminal ID word #1 * * +----------+  * * 12 | | System terminal ID word #2 * * +----------+ * * 13 | SGT:ELT | Pointer to ELT * * :  +----------+ * * 14 | SGT:WDT | Watch-dog timer granularity * *  +----------+ * * 15 | SGT:SWF | System swap filename pointer  * * +----------+ * * 16 | SGT:TPS | Number of clock ticks per second * * +----------+ * * 17 | SGT:TPTS | Ticks per time slice * * +----------+ * * 18 | SGT:SIPN | Spooler IPB name * * +----------+ * *  * * * * SGT:CKW - The system generation table checkword. This word is * * used to verify the integrity of the system and provide a * *  way for the post-mortem dump utility to identify this * * table.  * * * * SGT:LMTL - The size of the logical map table. This size is * * the maximum number of logical maps that the system will * * handle. This size determines the length of the logical * * map table. * *  * * SGT:SBSZ - The initial size of the small buffer pool. The * * size is specified in numbers of buffers desired in the * * pool. * *  * * SGT:MBSZ - The initial size of the medium buffer pool. The * *  size is specified in numbers of buffers desired in the * * pool.  * * * * SGT:DBSZ - The initial number of door stack buffers. The * * size is specified in numbers of buffers desired in the * * pool.  * * * * SGT:SYD - The ID words of the system disk. These two words * * define which disk on the system is to be the system disk. * * All of the initial environments are loaded from the * * system disk and all swapping is done to the system disk. * *  * * SGT:SYT - The ID words of the system terminal. These two words * *  define which terminal on the system is to be the system * * terminal. This terminal is used to log messages during * * the initial system loading and when error conditions * * arise. If these words are zero, no terminal will be * * mounted, otherwise, the physical unit specified here will * * be mounted as logical unit "TV". * * * * SGT:ELT - A pointer to the ; Envirnoment Load Table. This table * * contains all of the information needed to load the * * initial system environments. * * * * SGT:WDT - Watch-dog timer granularity in real-time clock * * ticks. Normally 30 ticks or 1/2 second. * * * * SGT:SWF - The address of the beginning of the name of the * * system swapping file (This word points to the swapping * * file name string).  * * * * SGT:TPS - The number of clock ticks per second. This is the * * frequency of the real time clock. Normally this value is * * 120 for the U.S. or 100 for Europe. * * * * SGT:TPTS - The number of ticks each time sliced activity gets * * to execute before pausing. * *  * * SGT:SIPN - The Spooler IPB name which cold start will search * * for. If one exists, then cold start will mount 'SP' the * * the spooler.  * * * ******************************************************************** * * SGT:CKW EQU -1 SGT:LMTL EQU 0 LOGICAL MAP TABLE SIZE (NUMBER OF ENTRIES) SGT:SBSZ EQU 1 SIZE OF THE SMALL WORD BUFFER POOL SGT:MBSZ EQU 3 SIZE OF THE MEDIUM WORD BUFFER POOL SGT:DBSZ EQU 7 SIZE OF THE DOOR STACK BUFFER POOL SGT:SYD EQU 9 THE SYSTEM DISK ID WORDS (2 WORDS) SGT:SYT EQU 11 THE SYSTEM TERMINAL ID WORDS (2 WORDS) SGT:ELT EQU 13 THE POINTER TO THE ENVIRONMENT LOAD TABLE SGT:WDT EQU 14 WATCH-DOG TIMER GRANULARITY IN TICKS SGT:SWF EQU 15 POINTER TO THE SWAPPING FILE NAME STRING SGT:TPS EQU 16 THE NUMBER OF CLOCK TICKS PER SECOND SGT:TPTS EQU 17 TICS PER TIME SLICE SGT:SIPN EQU 18 SPOOLER IPB NAME FOR COLD START SEARCH H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H H  TITL SYSTEM POINTER TABLE - 84-94153-60 (A300) ******************************************************************** *  * * System Pointer Table * * ------ ------- ----- * *  * * * * +----------+  * * -1 | SPT:CKW | The SPT checkword * * +----------+  * * 0 | SPT:STKH | The upper stack limit * * +----------+ * * 1 | SPT:STKL | The lower stack limit * * +----------+ * * 2 | SPT:SECB | The address of the system ECB * * <  +----------+ * * 3 | SPT:MCTA | The address of the MCT * * +----------+ * * 4 | SPT:SGTA | The address of the SGT  * * +----------+ * * 5 | SPT:RDYL | The head of the Ready List * * +----------+ * * 6 | SPT:INTQ | The head of the Interrupt Queue * * +----------+ * * 7 | SPT:RUN | The address of the running ACB * * +----------+ * * 8 | SPT:CCTA | The address of the CCT * * +----------+ * *  9 | SPT:IPBA | The head of the IPB list * * +----------+ * * A | SPT:ICBA | The head of the ICB list * * +----------+  * * B | SPT:IQTL | The tail of the Interrupt queue * * +----------+  * * C | SPT:LKCT | Lock-run counter * * +----------+  * * D | SPT:FPTA | The address of the FPT * * +----------+ * * E | SPT:REVL | The Revision level of this system * * +- - - - - + * * F | | * *  +----------+ * * 10 | SPT:ARGH | AAARGH context * * +----------+ * * 11 | SPT:SBUF | Small buffer extensions  * * +----------+ * * 12 | SPT:MBUF | Medium buffer extensions * * +----------+ * * 13 | SPT:DBUF | Door stack block extensions * * +----------+ * * 14 | SPT:SWIN | Pages swapped in * * +----------+ * * 15  | SPT:SWOU | Pages swapped out * * +----------+ * *  * * SPT:CKW - The system pointer table ckeckword. This word is  * * used to verify the integrity of the system and provide a * * way for the post-mortem dump utility to identify this * * table. * *  * * SPT:STKH - The system stack upper limit. This is the upper * * limit for the system stack. This value is put into the * * "K" register when the system stack needs to be * * initialized. =  * * * * SPT:STKL - The system stack lower limit. This is the lower * * limit for the system stack. This value is put into the * *  "L" register when the system stack needs to be * * initialized.  * * * * SPT:SECB - The address of the system environment control * * block. This is the pointer to the root environment * * control block for the entire system. From that point, * * all other ECB's in the system may be found. * *  * * SPT:MCTA - The address of the Memory Control Table. This * * table contains the pointers to all of the memory * * management tables and is built by the memory management * * initialization program when the system is autoloaded. * * * * SPT:SGTA - The address of the System Generation Table. This * * table contains all of the parameters which may be set at * * system generation time. * *  * * SPT:RDYL - The address of the Ready List. This list is * * the priority ordered list of all schedulable ACBs * * in the system. It is used and managed by the dispatcher. * * Other code may read from the RDYL, but should not * * modify it. * *  * * SPT:INTQ - The address of the Interrupt Queue. This * * is a FIFO list of all ACB's that have become schedulable * * since the last time an activity was dispatched. * *  * * SPT:RUN - The address of the currently running ACB.  * * * * SPT:CCTA - The address of the clock control table. This * * table is used to keep track of all of the clock related * * information in the system.  * * * * SPT:IPBA - The head of the linked list of IPB's. There exists * * one IPB for each I/O processor in the system. * *  * * SPT:ICBA - The head of the linked list os ICB's. There exists * * one ICB for each interrupt in the system. * * * *  SPT:IQTL - The tail of the Interrupt Queue (SPT:INTQ). * * This is used to keep track of the next position  * * where ACBs may be installed in the in the INTQ to * * maintain the FIFO of ACBs of the same priority. * * * * SPT:LKCT - The lock-run count. It is > incremented for each * * lock run and decremented by an unlock (call to A:DSPTCH * * or S:DSPTCH). The unlock will trap to S:UNRN when the * * count becomes zero. * *  * * SPT:FPTA - The address of the file manager physical unit * * table. This table contains all of the file manager * * special ID words and their corresponding physical unit * *  names. This table is generated at system generation time * * and this pointer is put here by the linker.  * * * * SPT:REVL - The revision level of this version of the CARTOS * * system. * *  * * SPT:ARGH - The address of the user's context when AAARGH * * was called.  * * * * SPT:SBUF - This location is incremented by one whenever the * * small block allocation routine goes to the EMP are to * * get more memory. * * * * SPT:MBUF - This location is incremented by one whenever the * * medium block allocation routine goes to the EMP are to * * get more memory. * *  * * SPT:DBUF - This location is incremented by one whenever the * * door stack allocation routine waits for a door stack * * block to be returned. * *  * * SPT:SWIN - This location is incremented by one whenever a * * page is swapped into memory. * * * * SPT:SWOU - This location is incremented by one whenever a * * page is swapped out of memory. * * * ******************************************************************** * * * Define the System Pointer Table (SPT) Equates * * SPT:CKW EQU -1 SPT:STKH EQU 0 THE OFFSET OF THE STACK POINTER UPPER LIMIT SPT:STKL EQU 1 THE OFFSET OF THE STACK POINTER LOWER LIMIT SPT:SECB EQU 2 THE OFFSET OF THE SYSTEM ECB ADDRESS SPT:MCTA EQU 3 THE OFFSET OF THE MCT ADDRESS SPT:SGTA EQU 4 THE OFFSET OF THE SGT ADDRESS SPT:RDYL EQU 5 THE READY LIST ADDRESS SPT:INTQ EQU 6 THE INTERRUPT QUEUE ADDRESS SPT:RUN EQU 7 THE CURRENTLY RUNNING ACTIVITY POINTER SPT:CCTA EQU 8 THE OFFSET OF THE CCT ADDRESS SPT:IPBA EQU 9 THE HEAD OF THE IPB'S SPT:ICBA EQU :A THE HEAD OF THE ICB'S SPT:IQTL EQU :B THE TAIL OF THE INTQ SPT:LKCT EQU :C THE LOCK-RUN COUNTER SPT:FPTA EQU :D THE ADDRESS OF THE FPT SPT:REVL EQU :E THE REVISION LEVEL OF THIS SYSTEM (2 WORDS) SPT:ARGH EQU :10 ADDRESS OF CONTEXT AT AAARGH SPT:SBUF EQU :11 SMALL BLOCK EXTENSION COUNT SPT:MBUF EQU :1? 2 MEDIUM BLOCK EXTENSION COUNT SPT:DBUF EQU :13 DOOR STACK BLOCK WAIT COUNT SPT:SWIN EQU :14 PAGES SWAPPED IN SPT:SWOU EQU :15 PAGES SWAPPED OUT * * * Define the initial upper and lower limits of the system stack * * SPT:SUL EQU :FC00 STACK UPPER LIMIT SPT:SLL EQU :FA00 STACK LOWER LIMIT F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F FIS SYSTEM (2 WORDS) SPT:ARGH EQU :10 ADDRESS OF CONTEXT AT AAARGH SPT:SBUF EQU :11 SMALL BLOCK EXTENSION COUNT SPT:MBUF EQU :12 MEDIUM BLOCK EXTENSION COUNT SPT:DBUF EQU :13 DOOR STACK BLOCK WAIT COUNT SPT:SWIN EQU :14 PAGES SWAPPED IN SPT:SWOU EQU :15 PAGES SWAPPED OUT * * * Define the initial upper and lower limits of the system stack * * SPT:SUL EQU :FC00 STACK UPPER TITL SYSTEM SEMAPHORE DEFINITION - SSB.MAC - 84-94150-65 (A300) * * A SYSTEM SEMAPHORE BLOCK CONSISTS OF 4 WORDS: * * SSB * ------------- * A-->| SEMAPHORE | COUNT * ------------- * | MAX LIMIT | MAXIMUM SIGNAL LIMIT * ------------- * | WAIT LIST | WAITING ACBS * ------------- * | INIT VALU | INITIAL SEMAPHORE VALUE (FOR POWERFAIL) * ------------- * * THE SEMAPHORE WORD IS SSB:SEM WHILE THE WAIT LIST * IS SSB:ACB. THE LIMIT WORD IS SSB:MAX. * A NEGATIVE SSB:MAX IMPLIES THAT THE SEMAPHORE IS DELETED. * IN THIS CASE, SSB:INIT CONTAINS AN ERROR CODE TO BE * RETURNED SHOULD ANY ACB SSIG OR SWAIT ON THE SEMAPHORE. * ****************************************************** * SSB:SEM EQU 0 SEMAPHORE COUNT WORD SSB:MAX EQU 1 UPPER LIMIT SSB:ACB EQU 2 ACB WAIT LIST SSB:INIT EQU 3 COUNT WORD INITIAL VALUE * * MACRO TO GENERATE A SYSTEM SEMAPHORE * SSB: MACRO * * CALLING SEQUENCE: * * SSB: P1,P2 * * P1 - INITIAL SEMAPHORE VALUE * P2 - MAXIMUM VALUE * CHECKP: #(?),2,2 SSB::: SET #(2) IFF #(1,?)=0 SSB::: SET #(1) ENDC WORD SSB::: SEMAPHORE COUNT WORD WORD #(2) MAXIMUM VALUE WORD 0 ACB WAIT LIST WORD SSB::: INITIAL VALUE ENDM  EQU 1 UPPER LIMIT SSB:ACB EQU 2 ACB WAIT LIST SSB:INIT EQU 3 COUNT WORD INITIAL VALUE * * MACRO TO GENERATE A SYSTEM SEMAPHORE * SSB: MACRO * * CALLING SEQUENCE: * * SSB: P1,P2 * * P1 - INITIAL SEMAPHORE VALUE * P2 - M TITL COMMON SYSTEM EQUATES AND MACROS - SYSCOMMON.MAC - 94150-60 (B307) * * DEFINE ABSOLUTE LOW MEMORY LOCATIONS * TRACEFLG EQU :16 ZERO SUPRESSES FM:DEBUG TRACE BUGJUMP EQU :17 JUMP TO CARBUG (TWO WORDS) ANCHOR: EQU :19 ADDRESS OF SYSTEM POINTER TABLE (SPT) R1:END EQU :1A HIGH ADDRESS OF R1 AREA * * DEFINE THE GLOBAL BOOLEAN VARIABLES * YES EQU -1 NO EQU 0 ON EQU YES OFF EQU NO SELF: EQU 0 ENVIRONMENT SPECIAL EQUATES PARENT: EQU -1 EOL: EQU 0 END OF LIST (GENERAL CASE) * * SPECIAL RETURN EQUATES * MEANING OF RETURN MAY DEPEND ON CALL TYPE * ********************************************************************** * * WARNING: IF ANY OF THESE VALUES ARE CHANGED, EVERYONE ON THE * PROJECT MUST BE NOTIFIED, SINCE SEVERAL ASSEMBLY * LANGUAGE MODULES DEPEND ON THE POSITIVE/NEGATIVE OR * ZERO/NON-ZERO SENSE OF THESE VALUES!!!!! * ********************************************************************** * BAD:ADDR EQU 0 BAD ADDRESS RETURN BLK:MSNG EQU -1 BLOCK MISSING GOOD: EQU 0 GOOD STATUS FOR OTHER TH@ AN ADDRESS RETURN BAD: EQU -1 BAD STATUS ("NOT" GOOD) NOSKIP: EQU 1 RETURN VALUE FOR R OPTIONED SERVICES SKIP: EQU 0 RETURN VALUE FOR R OPTIONED SERVICES COMMENT SIGNIFYING ERROR RETURN. DESTRYD: EQU 1 BLOCK DESTROYED STATUS (RETURNED BY DESTROY SERVS) * * DEFINE THE "DEBUG" EQUATES * DEBUG EQU OFF TURN DEBUG MODE "OFF" TRACE EQU OFF TRUN TRACE MODE "OFF" BUFCHK EQU OFF TURN BUFFER CHECK MODE "OFF" * * DEFINE THE UNIVERSAL CONTROL BLOCK EQUATES (THOSE DATA ITEMS WHICH * ARE ALWAYS IN FIXED LOCATIONS WITHIN EVERY CONTROL BLOCK IN THE * SYSTEM) * CHKWORD: EQU -1 THE OFFSET OF THE CHECKWORD OF A BLOCK PEER: EQU 0 THE OFFSET OF THE PEER POINTER OF A BLOCK FLAGS: EQU 1 THE OFFSET OF THE FLAG WORD OF A BLOCK FLG: EQU FLAGS: OFFSET OF THE FLAG WORD OF A BLOCK USAGE: EQU 2 THE OFFSET OF THE USAGE COUNT OF A BLOCK ID: EQU 3 THE OFFSET OF THE IDENTIFICATION WORD OF A BLOCK PRIORTY: EQU 4 THE OFFSET OF THE PRIORITY WORD OF A BLOCK * * DEFINE THE BIT FIELDS WITHIN THE UNIVERSAL FLAG WORD * FLG:DELB EQU 15 THE "DELETED" BIT OF THE FLAG WORD FLG:DELM EQU 1%FLG:DELB THE "DELETED" BIT MASK WORD * * DEFINE ENVIRONMENT ID'S * FM:EID EQU :AAAA FILE MANAGER EID TV:EID EQU :5456 'TV' TV ID SP:EID EQU :5456 'TV' SPOOLER ID SY:EID EQU :5359 SYNCHRONOUS HANDLER ENVIRONMENT ID * * DEFINE THE SPOOLER DISK LOGICAL UNIT NAME * AND MAXIMUM CHARACTERS FOR SPOOL DIRECTORY PATHNAME * SP:SPLUN EQU :5350 'SP' SP:MAXCH EQU 50 50 CHARACTERS MAX IN PATHNAME * * DEFINE SHARABLE REGION ID'S * DMA:RID EQU :5231 'R1' R1SIZE EQU :1000 R1 SIZE (USED BY CST:LOAD AND SHARING ENVS) * * DEFINE THE SIZE OF A DOOR STACK BLOCK * DBSZ: EQU 256 SIZE OF A DOOR STACK BLOCK * * DEFINE QUEUE ID'S * PMM:QID EQU 5 PAGE SWAPPING SUPPORT QUEUE SP:EQID EQU :5350 'SP' SPOOLER/MDE COMMUNICATION (SPOOL ERROR QUEUE) * * DEFINE TASK ID'S * FM::BGIN EQU :7FFB FILE MANAGER BEGINNING TASK ID SP::BGIN EQU :7FFA SPOOLER BEGINNING TASK ID * * DEFINE ACTIVITY PRIORITIES * Y:COLD EQU :7FF0 COLD START ACTIVITY CCT:PRIO EQU :7F00 CLOCK PROCESSOR ACTIVITY WDT:PRIO EQU :7E00 WATCH-DOG TIME ACTIVITY PMM:PRIO EQU :7500 MEMORY TRAP SUPPORT ACTIVITY IO:PRIO EQU :7400 IO POST PROCESSOR ACTIVITY FM:PRIO EQU :4F00 FILE MANAGER (THRU FM:PRIO + 2) SP:PRIO EQU :6F00 SPOOLER * * DEFINE THE ENTRY FLAG WORDS FOR THOSE ROUTINE WHICH HAVE BOTH A * BCPL AND AN ASSEMBLY LANGUAGE ENTRY POINT. * BCPLNTRY EQU 0 BCPL ENTRY POINT FLAG WORD ASSMNTRY EQU -1 ASSEMBLY LANGUAGE ENTRY POINT FLAG WORD * * DEFINE THE MISCELLANEOUS GLOBAL EQUATES IN THE SYSTEM * INT:S EQU :140 REGISTER S SETTING FOR INTERRUPT ROUTINES INT:K EQU :FC00 STACK UPPER LIMIT M4:95 EQU :100 THE "MACHINE" DIRECTIVE CODE FOR A 4/95 INSTRUCTION SET MAX:TICS EQU :4000 POSITIVE NUMBER FOR RTC INT. AT BOOT TIME CFM:ID:1 EQU :464D DEFINE THE FIRST WORD OF THE FILE MANAGER PUN ("FM") CFM:ID:2 EQU :3020 DEFINE THE SECOND WORD OF THE FILE MANAGER PUN ("0 ") * * DEFINE THE EQUATES FOR THE MACHINE STATUS REGISTER BITS * CY: EQU 0 CARRY BIT OV: EQU 1 OVERFLOW BIT BY: EQU 2 BYTE MODE BIT CI: EQU 4 CONSOLE INTERRUPT ENABLE BIT RI: EQU 5 REAL-TIME CLOCK ENABLE BIT XA: EQU 6 EXTENDED ADDRESSING ENABLE BIT INT: EQU 8 INTERRUPT ENABLE BIT UM: EQU 10 USER MODE BIT UP: EQU 11 USER PROTECT BIT SMASK: EQU :CF NON-RESERVED STATUS BITS F:XA: EQU 1%XA: F:RI: EQU 1%RI: F:CI: EQU 1%CI: F:INT: EQU 1%IA NT: SYS:SVAL EQU F:INT:++F:XA:++F:RI:++F:CI: SYSTEM S-REGISTER VALUE * * THE COPY:M MACRO * COPY:M MACRO COPY #(1),#(2) COPY #(2),#(3) ENDM * * EXTERNAL WORD MACRO * EWORD MACRO MACLAB IFF #(-1,?) NOTE E,'MISSING LABEL *E*E*E*E*E*E*E*E*E*E*E*E*E*E*E*E*E' ENDC IFT #(-1,?) IFF #(?) EXTR #(-1) WORD #(-1) ENDC IFT #(?) NOTE E,'TO MANY PARAMS *E*E*E*E*E*E*E*E*E*E*E*E*E*E*E*E*' ENDC ENDC ENDM * * SPECIAL DOOR STRAPS * * :FF DOOR EXIT * :FE DISPATCHER * :FD PUNT TRAP * :FC END AN ACTIVITY PART2 (SYSTEM STACK) * :FB END AN ACTIVITY PART1 (DOOR STACK) * * THIS MACRO DEFINES THE SPECIAL STRAPS * S:DEXIT MACRO :FF S:DISP MACENT :FE S:UNRN MACENT :FE S:PUNT MACENT :FD S:AEND MACENT :FC S:END MACENT :FB STRAP Q,#(0)&:FF ENDM E E E E E E E E E E E E E E TITL TASK CONTROL BLOCK EQUATES - TCB.MAC - 84-94153-61 (A300) ************************************************************************ * * +----------+ * -1 | TCB:CKW | Task Control Block checkword. * +----------+ *  0 | TCB:PER | Next TCB on chain. * +----------+ * 1 | TCB:FLG | Flag word. * +----------+ * 2 | TCB:USG | Block usage count. * +----------+ * 3 | TCB:ID | ID of block. * +----------+ * 4 | TCB:ECB | The ECB to which the TCB belongs. * +----------+ * 5  | TCB:PREG | Initial P-register for task. * +----------+ * 6 | TCB:YSL | Y-scratch length. *  +----------+ * 7 | TCB:SLEN | Stack length. * +----------+ * 8 | TCB:LIM | Stack address. * +----------+ * 9 | TCB:DAWP | Destroy TCB wait list. * +----------+ * A | TCB:TMPL | Template address. * +----------+ * B | TCB:QFLG | Flags for queue to be created. *  +----------+ * C | TCB:QID | ID of queue to be created. * +----------+ * D | TCB:QMAX |  Maximum PUT count for queue to be created. * +----------+ * E | TCB:NACS | Semaphore controling concurrent activities. * + - - - - -+ * F | | (Maximum number of concurrent activities.) *  + - - - - -+ * 10 | | (Activities waiting to begin.) * + - - - - -+ * 11 | |  (Initial value - 0) * +----------+ * * TCB:CKW - The TCB checkword. This word is validated whenever * a BEGIN operation in performed for this TCB. * * TCB:PER - The next TCB on the Environment chain. The address * of the first TCB in the chain is in the ECB (ECB:TCB). * * TCB:FLG - The flag word. * * Bit 15 (TCBN:DEL) - The task is being destroyed. * * Bit 7 (TCBF:ASA) - Activities begun are always system activities. * * Bit 3 (TCB:FC4R) - Initial procedure is rommable CG4 call * * Bit 2 (TCB:FBCL) - Initial procedure is non-rommable BCPL. * * Bit 1 (TCB:FTEX) - There is template expansion activities begun. * * Bit 0 (TCB:FIO) - This is an I/O task. A queue will be created * each time an activity of the task is begun. * * TCB:USG - The usage count for the block. Control and testing * B  of this word conforms to CARTOS standard block procedures. * * TCB:ID - The ID for the task. This will be unique for blocks in * this chain. * * TCB:ECB - The ECB of the Environment to which this block belongs. * Initialized when the task is created. * * TCB:PREG - The initial value of the P-register when an activity * of the task is begun. The value is specified in the TDB when * the task is created. * * TCB:YSL - This is the Y-scratchpad length specified in the TDB * unless template expansion is used in which case it is the * template length. * * TCB:SLEN - The length of the stack needed for an activity of the * task, specified in the TDB. * * TCB:LIM - The address of the static stack area specified in the TDB. * If this word is zero a dynamic stack area is allocated from the * Environment's EMP area whenever an acivity is begun. * * TCB:DAWP - A list of activities waiting for a destroy of the TCB * to complete. The block cannot be removed from the ECB chain * until the usage count becomes zero. * * TCB:TMPL - A pointer to the template if TCB:FTEX is set in the * flag word. * * TCB:QFLG - This word and the following two are used to initialize * a queue for an activity of the task if TCB:FIO is set in the flag * word. This word is the flags for the queue according to QDB:FLG. * * TCB:QID - The ID of the queue to be created. If this ID is not * system supplied (positive), a second activity begun for the * task will cause an exception due to a duplicate queue ID. * * TCB:QMAX - The maximum number of PUT's allowed for the queue. * * TCB:NACS - A system semaphore which controls the number of *  concurrent activities of this task. After the maximum * number is reached (specified in the TDB), activities which * attempt to begin additional activities of this task will * be suspended on this semaphore until some activity of this * task is ended. * ************************************************************************ * * TASK CONTROL BLOCK EQUATES * TCB:CKW EQU -1 TABLE CHECKWORD TCB:PER EQU 0 ECB PEER CHAIN TCB:FLG EQU 1 FLAG WORD *************************** * FLAG BITS *************************** TCB:FIO EQU 1 BIT 0=1 MEANS I/O TASK TCB:FTEX EQU 2 BIT 1=1 MEANS TEMPLATE EXPANSION TCB:FBCL EQU 4 BIT 2=1 MEANS TASK IS FOR NON-ROMMBLE BCPL ACTIVITIES TCB:FC4R EQU 8 BIT 2=1 MEANS TASK IS CG4 ROMMABLE TCBF:ASA EQU 128 BIT 7=1 MEANS TASK IS FOR ALWAYS-SYSTEM-ACTIVITIES TCBN:DEL EQU 15 BIT 15=1 MEANS TASK IS BEING DESTROYED * * TCB:USG EQU 2 USAGE COUNT TCB:ID EQU 3 ID OF THIS TASK TCB:ECB EQU 4 ENVIRONMENT CONTROL BLOCK POINTER TCB:PREG EQU 5 BEGINNING -P- REGISTER TCB:YSL EQU 6 Y-SCRATCH OR TEMPLATE LENGTH TCB:SLEN EQU 7 STACK LENGTH TCB:LIM EQU 8 STACK ADDR OR 0 (DYNAMIC) TCB:DAWP EQU 9 DELETE ACB WAIT POINTER TCB:TMPL EQU 10 PTR TO TEMPLATE IF TCB:FTEX FLAG=1 TCB:QFLG EQU 11 FLAGS FOR QUEUE TO BE CREATED TCB:QID EQU 12 ID OF QUEUE TO BE CREATED TCB:QMAX EQU 13 QUEUE FLOW CONTROL COUNTER TCB:NACS EQU 14 1ST WORD OF SYSTEM SEMAPHORE WHIC CH CONTROLS COMMENT NUMBER OF ACTIVITIES WHICH CAN STILL BE CREATED TCB:SIZ EQU 18 SIZE OF THE TCB TCB: MACRO * * TASK CONTROL BLOCK MACRO * * CALLING SEQUENCE: * * TCBLABEL TCB: P1,P2,...P11 * * P(-1) = ADDRESS OF THE TCB * P1 = FLAG WORD (DEFAULTS TO 0) * P2 = TCB ID * P3 = TASK EXECUTION ADDRESS *  P4 = Y-SCRATCH OR TEMPLATE LENGTH (DEFAULTS TO 0) * P5 = STACK LENGTH (DEFAULTS TO 0) * P6 = STACK ADDRESS (DEFAULTS TO 0 (0=DYNAMIC)) * P7 = POINTER TO TEMPLATE (DEFAULTS TO 0) * P8 = FLAG WORD OF QCB TO BE CREATED (DEFAULTS TO :000F) * P9 = ID OF QCB TO BE CREATED (DEFAULTS TO 0) * P10 = MAXIMUM NUMBER OF MESSAGES ON THE QUEUE (DEFAULTS TO :7FFF) * P11 = NUMBER OF CONCURRENT EXECUTIONS OF THIS TASK (DEFAULTS TO :7FFF) * * Macro invocation: * * #(-1) TCB: #1,#2,#3,#4,#5,#6,#7,#8,#9,#10,#11 * * MACLAB CHECKP: #(?),2,11 NAM #(-1) EXTR SECB: #(-1) STSTART: TCB:SIZ,CKW:TCB TCB:PER CHAN: TCB: TCB PEER LIST TCB:FLG WORD: #1,0 FLAG WORD TCB:USG WORD: 1 USAGE COUNT TCB:ID WORD: #2 TCB ID TCB:ECB WORD: SECB: ECB POINTER TCB:PREG WORD: #3 TASK EXECUTION ADDRESS TCB:YSL WORD: #4,0 Y-SCRATCH OR TEMPLATE LENGTH TCB:SLEN WORD: #5,0 STACK LENGTH TCB:LIM WORD: #6,0 STACK ADDRESS (0=DYNAMIC) TCB:TMPL WORD: #7,0 POINTER TO TEMPLATE TCB:QFLG WORD: #8,:000F FLAG WORD OF QCB BEING CREATED TCB:QID WORD: #9,0 ID OF QCB BEING CREATED TCB:QMAX WORD: #10,:7FFF MAXIMUM NUMBER OF MESSAGES ON THE QUEUE TCB:NACS ORG: CONCURRENT ACB SEMAPHORE SSB: #11,:7FFF NUMBER OF CONCURRENT EXECUTIONS OF THIS TASK TEND: ENDM Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q QTCB:SLEN WORD: #5,0 STACK LENGTH TCB:LIM WORD: #6,0 STACK ADDRESS (0=DYNAMIC) TCB:TMPL WORD: #7,0 POINTER TO TEMPLATE TCB:QFLG WORD: #8,:000F FLAG WORD OF QCB BEING CREATED TCB:QID WORD: #9,0 ID OF QCB BEING CREATED TCB:QMAX WORD: #10,:7FFF MAXIMUM NUMBER OF MESSAGES ON THE QUEUE TCB:NACS ORG: CONCURRENT ACB SEMAPHORE SSB: #11,:7FFF NUMBER OF CONCURRENT EXECUTIONS OF THIS TASK TEND: ENDM Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q QTCB:SLEN WORD: #5,0 STACK LENGTH TCB:LIM WORD: #6,0 STACK ADDRESS (0=DYNAMIC) TCB:TMPL WORD: #7,0 POINTER TO TEMPLATE TCB:QFLG WORD: #8,:000F FLAG WORD OF QCB BEING CREATED TCB:QID WORD: #9,0 ID OF QCB BEING CREATED TCB:QMAX WORD: #10,:7FFF MAXIMUM NUMBER OF MESSAGES ON THE QUEUE TCB:NACS ORG: CONCURRENT ACB SEMAPHORE SSB: #11,:7FFF NUMBER OF CONCURRENT EXECUTIONS OF THIS TASK TEND: ENDM Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q QIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIID IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIE IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIF IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIG IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIH IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIK IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIL IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIICARTOSMA282100513242240830907141448 830907141448BF12101 VOL84-94121-01 CARTOS MACROS II PRODUCT DISKETTE (B030)