IMD 1.16: 1/09/2008 12:35:52 84-93460-01 g330 f46001 os4 utilities #1 product disk 8may84    @0|)wwЀЀtQql)  " }gA `_M@IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIOS4 MF282081610562500840504081929 840504081929 BF46001 VOLOS4 UTILITIES #1 PRODUCT DISKETTE 84-93460-01 G330   IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII_M@iGyy GGG`HZ@ b G`^Y e IQ BBp@;:9 :7P@ G:پN 8!0. * C'xC# b# }B @0DAJL w+™ЀЀΖQA1"   i ž} š} @EEFF)DEۄF8 џ} ԟ} ̟} * `jUBBI,v BI, # @ G9H@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:: SYS"iwvc Bc A@6<# Ic B# gIjHc rRD 0 LD:HAD .. HIGH LOAD ADDRESS/NEXT FREE ADDRESS WORD #(7)+0 LD:FLG .. FLAG WORD (410S ONLY) IFT #(8,?) WORD #(8)  LD:SDA .. USER SLAVE DEVICE ADDRESS (410S ONLY) ENDC IFF #(8,?) WORD :F0 LD:SDA .. DEFAULT SLAVE DEVICE ADDRESS (410S ONLY) ENDC * S: SET #(?)<2 S: SET #(?)>8++S: IFT S: NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ENDM TITL I:OVL PARAMETER BLOCK EQUATES AND MACROS * * OV:A BLOCK EQUATES * OVA:LUN EQU 0 LUN ENTRY IN OV:A BLOCK OVA:ADR EQU 1 DIRECTORY ADDRESS ENTRY IN OV:A BLOCK OVA:LEN EQU 2 LENGTH ENTRY IN OV:A BLOCK * OVL:A MACRO #(1) WORD #(2) LUN TO USE FOR OVERLAYS  WORD #(3) ADDRESS OF USER'S DIRECTORY BLOCK WORD #(4) LENGTH OF USER'S DIRECTORY BLOCK ENDM OVL: MACRO MACLAB  OVL:A #(-1),#(1),#(2),#(3) ENDM SPACE 2 SAVE END ,ADDRESS UAT ENTRY * * UAT:ZZ END OF UAT * * LABEL LABEL TO ASSOCIATED WITH UAT WORD -LPP: DI:LC - LINE COUNT WORD 0 WORD 0 WORD #(1)BF: DI:BUF - POINTER TO 2 WORD INTERNAL BUFFER WORD LPPUF: DI:PU - POINTER TO POWER UP SEQUENCE #(1)BF: RES 2,0 TWO WORD INTERNAL BUFFER ENDC ORG O: ENDM TITL ASYNCH MUX CIB MACRO * * THIS M ACRO GENERATES A CIB FOR AN ASYNC MUX CHANNEL * * THE CALLING SEQUENCE IS: * * C:AC CCDD,DA,CN,IV * * WHERE 'CCDD' IS THE 4 CHAR IDENTIFIER TO FORM CIB ENTRY * POINT NAME 'C:CCDD'. * A REFERENCE TO CIB EXTENSION NAME 'CX:ACDD' WILL * BE GENERATED. * 'DA' IS THE 'DIO' STYLE DEVICE ADDRESS (4 BITS), * 'CN' IS THE CHANNEL NUMBER (0-7), AND 'IV' IS THE INTERRUPT * ADDRESS SET BY THE INTERRUPT VECTOR ADDRESS SWITCH ON THE BOARD * * NOTE: A 5TH PARAMETER WAS ADDED FOR USE WITH CIB:TV ENTRY POINT. * THE EIO BOARD ON THE DATACASE REQUIRES SPECIAL HANDLING WHEN A * 'BREAK' IS ISSUED. #5 SPECIFIES WHETHER A DIO OR AN EIO IS *  INSTALLED. IF EIO, THEN BIT 11 IN THE FLAGWORD IS SET, ELSE IT'S * ZERO. * MHAYES 05/JAN/84 * C:AC MACRO AC CIB:TV MACENT TY CIB:LP MACENT LP LPOOL O: SET $ TABLE: REL SHARABLE TABLE: SYSTEM NAM C:#(1)  ASYNC CHANNEL CIB EXTR #(0):WRT TRANSMIT DRIVER IFF #(0,'LP') EXTR #(0):RD RECEIVER DRIVER ENDC EXTR #(0):FUN FUNCTION DRIVER C:#(1) CHAN CIB: CI:PER PEER LINK IFT #(5,'EIO') TV ON AN EIO BOARD? (F400) WORD :0800  CI:FLG - FLAGWORD (BIT 11 SET) ENDC IFF #(5,'EIO') TV ON A DIO BOARD? (F400) WORD 0 CI:FLG - FLAGWORD ENDC HEAD CIB: CI:MST MASTER LINK WORD D:#(1) LINK TO DIB (CI:DIB) WORD :7400 CI:PRI REQUEST PRIORITY IFT #(3,?) IF DEVICE ADDRESS AND VECTOR SPECIFIED WORD #(2)%3+#(3)%1 DEVICE ADDR WORD #(4)%-6%3+#(3)%3 CI:IV INTERRUPT VECTOR ADDR ENDC IFF #(3,?) IF NO DEVICE ADDR AND VECTOR SPEC IFT #(0,'AC') NOTE E,'NO DEVICE ADDRESS SPECIFIED FOR ASYNC MUX CIB' ENDC WORD ETIODAD:%3+#(2)%1 CI:DA DEVICE ADDRESS WORD #(2)%3+ETIODIB: CI:IV INTERRUPT VECTOR ENDC WORD 0  CI:UNI RESERVED * * SIMPLY REFER TO ALL DRIVER MAIN ENTRIES SINCE THEY ARE ALL * IN THE SAME CONTROL SECTION AND WILL ALL BE LOADED * IFF #(0,'LP') WORD #(0):RD READ ENTRY ENDC IFT #(0,'LP') WORD 0 ENDC WORD #(0):WRT WRITE ENTRY WORD 0  NO POSITION ENTRY WORD #(0):FUN FUNCTION ENTRY INT:SEQ I:EOB INTERRUPT SEQUENCE WORD 0 CI:T1 TEMP WORD 0 CI:T2 TEMP WORD 0 CI:APR REQUESTORS SAVED PRIORITY WORD 0 CI:TIB ADDR OF TIB WORD 1 CI:USM CONTROLLER USAGE SEMA4 WORD 0 CI:TIM WATCHDOG COUNTS WORD 0 CI:CSM COMPLETION SEMA4 WORD 0 CI:CFL COMPLETION FLAG IFT #(0,'AC') WORD CX:AC#(1,3,4) CI:OPT ADDR OF OPT+SPEC CHAR TBL ENDC ORG O: ENDM TITL ASYNCH MUX CHAN OPTION TABLE MACRO * * OPTION TABLE CIB EXTENSION FOR ASYNC MUX CHANNEL * * CALLING SEQUENCE IS: * * CX:AC DD,BAUD,FD:,SPCH * * WHERE 'DD' IS A TWO DIGIT STRING USED TO FORM THE CIB EXTENSION * ENTRY POINT NAME 'CX:ACDD' * 'BAUD' IS THE TERMINAL BAUD RATE * "FD:" SPECIFIES AN OFF-SET VECTOR ON RECIEVE FOR FULL-DUPLEX * OPERATION.(SEE 2.1.8.1 OF 53778-91 ASYNCH MUX REF MAN). * DEFAULT IS NO OFF-SET VECTOR * * "SPCH" DESIGNATES SPECIAL CHARACTERS THAT ARE IGNORED BY * THE DRIVER. DEFAULT IS RUBOUT AND UNDERSCORE (:7F5F). * IF ONLY ONE CHAR IS DESIRED, ENTER IT TWICE (:7F7F). * * CX:AC MACRO LPOOL O: SET $ TABLE: REL SHARABLE TABLE: SYSTEM NAM CX:AC#(1) TABLE ADDR CX:AC#(1) EQU $ START OF CIB EXTENSION IFT #(3,?) ANY OFF-SET SPEC IFIED? WORD :23CD FULL-DUPLEX OFFSET ENDC IFF #(3,?) NO OFF-SET SPECIFIED? WORD :21CD NO OFF-SET ENDC WORD BD:#(2)%8+:3037 IFT #(4,?) WORD #(4) ENDC IFF #(4,?) WORD :7F5F SPECIAL CHAR TABLE, ,_ ENDC ORG O: ENDM TITL MAGTAPE DIB MACRO * DIB MACRO * * DIB:MT #(1) --- #(1) = MTXX, XX = UNIT # * DIB:MT MACRO LPOOL O: SET $ TABLE: REL SHARABLE TABLE: SYSTEM D:#(1) NAM D:#(1) CHAN MT: DI:PER WORD 0 DI:FLG WORD C:MT0 DI:CIB HEAD Z:#(1) DI:FCB BYTE '##(1)' DI:NAM WORD 0 DI:DN WORD 0 DI:DS WORD -4 DI:SPB WORD 3*8 DI:WBT BIT:WORD FA:,FB:,FS:,DB:,UF: DI:DSW - READ BIT:WORD FA:,FB:,FS:,DB:,WP:,UF: DI:DSW - WRITE BIT:WORD SBF:,SBR:,SKF: DI:DSW - POSITION BIT:WORD RWD:,OFL:,EBL:,EFM:,OP:,CL:,SS:,WF: DI:DSW - FUNCTION RES 2,0 RESERVED WORD 0 DI:BLKCT WORD 0 DI:SERV WORD :0230 DI:BMI WORD :0250 DI:BMO WORD :0240 DI:BMR WORD 0 DI:OWM WORD :0005 DI:TRY WORD 1 DI:VTS WORD 0 DI:MASK WORD 0 DI:FLAG WORD 0 DI:THWS ORG O: ENDM TITL STREAMER TAPE DIB MACRO * DIB MACRO * * DIB:STR #(1) --- #(1) = STXX, XX = UNIT # * #(2) --- #(2) = INCHES PER SECOND (30 OR 90) * DIB:STR MACRO LPOOL O: SET $ TABLE: REL SHARABLE TABLE: SYSTEM D:#(1) NAM D:#(1) CHAN ST: DI:PER (PEER POINTER - WORD 0) WORD 0 DI:FLG  (DIB FLAG WORD - WORD 1) WORD C:ST0 DI:CIB (MASTER CIB ADDR - WORD 2) HEAD Z:#(1) DI:FCB (FCB LIST HEAD - WORD 3) BYTE '##(1)' DI:NAM (DEVICE NAME - WORDS 4 & 5) WORD 0 DI:DN (RESERVED - WORD 6) WORD 0 DI:DS (RESERVED - WORD 7) WORD -4 DI:SPB (WATCHDOG, SHIFTS PER BYTE - WORD 8) WORD 7*8 DI:WBT (WATCHDOG BASE TIME - WORD 9) BIT:WORD FA:,FB:,FS:,DB:,UF: DI:DSW (READ - WORD 10) BIT:WORD FA:,FB:,FS:,DB:,WP:,UF: DI:DSW (WRITE - WORD 11) BIT:WORD RFM: DI:DSW (POSITION - WORD 12) BIT:WORD OP:,CL:,WF:,RWD:,EET:,RT: DI:DSW (FUNCTION - WORD 13) RES 2,0 (RESERVED - WORDS 14,15) WORD 0 DI:BLKCT (BLOCK COUNT - WORD 16) WORD 0 DI:SERV (RESERVED - WORD 17) WORD :0210 DI:BMRW (BRANCH ADDR FOR READ & WRITE - WORD 18) WORD :0290 DI:BMPF (BRANCH ADDR FOR POS & FUN - WORD 19) WORD #(2) DI:IPS (INCHES PER SECOND - WORD 20) WORD 0 DI:OWM (ORIGINAL MODE WORD - WORD 21) WORD 0 DI:TRY (RESERVED - WORD 22) WORD 1 DI:VTS (RESERVED - WORD 23) WORD 0 DI:MASK (RESERVED - WORD 24) WORD 0 DI:FLAG (RESERVED - WORD 25) WORD 0 DI:THWS (TEMP H/W STATUS - WORD 26) ORG O: ENDM  TITL MAG TAPE CIB MACRO * CIB MACRO * * CIB:MT #(1) -- DEVICE ADDRESS / CHANNEL * #(2) -- INTERRUPT VECTOR * CIB:MT MACRO * * DEFAULTS FOR MAG TAPE * MTDA: SET :F0 MT DEFAULT DEVICE ADDRESS MTCHAN: SET  :02 MT DEFAULT CHANNEL NUMBER MTINTV: SET :C8 MT DEFAULT INTERRUPT VECTOR LPOOL O: SET $ TABLE: REL SHARABLE TABLE TITL RTX.MAC - RTX USER EQUATES & MACROS (93421-15-E200) TITL .... C O N T E N T S *************** * * * RTX.MAC * * * *************** * * MISCELLANEOUS EQUATES * EDB EXCEPTION VECTOR EQUATES * BGIN :(A) MACRO * ECB:(A) MACRO * EDXVT:(A) MACRO * INIT:(A) MACRO * MAIL:(A) MACRO * MDB:(A) MACRO * SINGL: MACRO * SDB:(A) MACRO * TDB:(A) MACRO * TICK:(A) MACRO * WALL:(A) MACRO ***************************************************************************** * * REVISION HISTORY: * * REV E200 - CHANGED ECB MACRO TO ALLOW FOR AN EXTERNAL PARAMETER; * IN PARTICULAR, THE EMP: AND EMPSIZE: PARAMETERS IN * THE CONFIGURATION FILE. * CWK 06/AUG/82. * ***************************************************************************** TITL .... M I S C E L L A N E O U S E Q U A T E S * SYSTEM FREE POOL BLOCK SIZE * BLKSZ: EQU 12 (DUPPED IN RTXD.MAC) * * INTERNAL BLOCK CHECK VALUE EQUATES * IN:CHK EQU :F00E INIT CHECK VALUE (IN IN:AID) TD:CHK EQU :F01E TDB CHECK VALUE (IN TD:CKW) AC:CHK EQU :F02E ACB CHECK VALUE (IN AC:CKW) SD:CHK EQU :F03E SDB CHECK VALUE (IN SD:CKW) CC:CHK EQU :F04E CCB CHECK VALUE (IN CC:CKW) EC:CHK EQU :F06E ECB CHECK VALUE (IN EC:CKW) MD:CHK EQU :F07E MDB CHECK VALUE (IN MD:CKW) UA:CHK EQU :F09E UAT CHECK VALUE (WORD 0) (DUPPED IN IOS.MAC) TITL .... E D B E X C E P T V E C T O R E Q U A T E S * EDB EXCEPTION VECTOR EQUATES * * THE FOLLOWING XV:????? EQUATES SPECIFY LOCATIONS IN THE * EXCEPTION VECTOR OF THE ENVIRONMENT DESCRIPTOR BLOCK * XV:UINTP EQU :0 UNIMPLEMENTED INSTRUCTION TRAP XV:MEMTP EQU :1 MEMORY EXCEPTION TRAP XV:CNMTP EQU :2 CHARACTER/NUMERIC EXCEPTION TRAP XV:USRTP EQU :3 USER TRAP XV:AERTP EQU :4 ARITHMETIC EXCEPTION TRAP XV:STKTP EQU :5 STACK EXCEPTION TRAP XV:STKSV EQU :6 STACK EXCEPTION REGISTER SAVE AREA XV:USTEX EQU :8 UNIMPLEMENTED STRAP EXCEPTION XV:ST0EX EQU :9 STRAP 0 EXCEPTION XV:DOREX EQU :A DOOR SERVICE EXCEPTION XV:RTXEX EQU :B RTX SYSTEM ERROR * * STACK EXCEPTION REGISTER SAVE AREA EQUATES * STKSV:A EQU 0 A REGISTER SAVE AREA STKSV:Q EQU 1 Q REGISTER SAVE AREA STKSV:X EQU 2 X REGISTER SAVE AREA STKSV:Y EQU 3 Y REGISTER SAVE AREA TITL .... B G I N : ( A ) M A C R O ** MACRO: BGIN: & BGIN:A * GENERATE A PARAMETER BLOCK FOR AN R:BGIN CALL * * CALLING SEQUENCE: LABEL BGIN:(A) TASK,PRI * BGIN:(A) LABEL,TASK,PRI (ARCHAIC) * LABEL = ADDRESS OF PARAMETER BLOCK * TASK = ADDRESS OF TDB * PRI = TASK PRIORITY ** SPACE 2 BGIN: MACRO BGIN:A MACENT P: SET 2 L: SET #(?) IFF #(-1,?) L: SET L:-1 #(1) BGIN:: #(2),#(3) ENDC * BGIN:: MACENT IFT #(-1,?) WORD #(1) TCB ADDRESS WORD #(2) PRIORITY IFF L:=P: NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ENDC ENDM TITL .... E C B : ( A ) M A C R O ** MACRO: ECB: & ECB:A * GENERATE AN ENVIRONMENT CONTROL BLOCK * * CALLING SEQUENCE: LABEL ECB:(A) UAT,(PEADD),(MPADD,MPLEN) * ECB:(A) LABEL,UAT,(PEADD),(MPADD,MPLEN) (ARCHAIC) * LABEL = ADDRESS OF PARAMETER BLOCK *  UAT = ADDRESS OF UNIT ASSIGNMENT TABLE * PEADD = ADDRESS OF END OF PROGRAM * MPADD = USER SPECIFIED MEMORY POOL ADDRESS * MPLEN = USER SPECIFIED MEMORY POOL LENGTH ** SPACE 2 ECB: MACRO MACLAB ECB:A MACENT MACLAB P: SET 1 L: S ET #(?) IFF #(-1,?) L: SET L:-1 #(1) ECB:: #(2),#(3),#(4),#(5) ENDC * ECB:: MACENT MACLAB IFT #(-1,?) LPOOL O: SET $ SHARABLE TABLE: TABLE: REL #(-1) NAM #(-1) CHAN R:ECBL ED:PER - PEER LINK WORD 0 EC:FLG - FLAG WORD WORD #(-1) EC:EDB - ENVIRONMENT DESCRIPTOR BLOCK WORD 1 EC:LUS - LUN SEMAPHORE (ALIAS EC:PRV) RES 2,0 WORDS 4-5 RESERVED  WORD 0 EC:CNT - NUMBER OF ACTIVITIES WORD 0 EC:ALH - ACB LIST HEAD WORD 0 EC:SUB - SUBORDINATE LIST HEAD WORD 0 EC:MST - MASTER ENVIRONMENT WORD 0 EC:NEC - NECESSARY ENVIRONMENT WORD EC:CHK EC:CKW - CHECK WORD WORD 16 ED:EVO - EXCEPTION VECTOR OFFSET WORD 48 ED:MRO - MAP REGISTER OFFSET RES 2,0 WORDS 14-15 RESERVED RES 16,0 ED:EVT - EXCEPTION VECTOR TABLE WORD #(1) ED:UAT - UNIT ASSIGNMENT TABLE WORD 0 ED:LMA - LOW MEMORY ADDRESS IFT #(2,?) P: SET P:+1 ENDC IFT #(2,?) WORD #(2) ED:MPA - USER SPECIFIED MEMORY POOL ADDRESS ENDC IFF #(2,?) WORD 0 ED:MPA - DEFAULT MEMORY POOL ADDRESS ENDC WORD 0 ED:HMA - HIGH MEMORY ADDRESS WORD 0 ED:EUS - ENVIROMENT USAGE SEMAPHORE WORD :7FFF ED:PRI - MAXIMUM PRIORITY HEAD R:TDBL ED:TLH - TASK LIST HEAD HEAD R:SL ED:SLH - SEMAPHORE LIST HEAD HEAD R:MBXL ED:MLH - MAILBOX LIST HEAD IFF #(3,?) WORD 0 ED:UMPA - USER MEMORY POOL ADDRESS ENDC IFT #(3,?) WORD #(3) ED:UMPA - USER MEMORY POOL ADDRESS ENDC IFF #(4,?) WORD 0 ED:MPL - USER MEMORY POOL LENGTH ENDC IFT #(4,?) WORD #(4) ED:MPL - USER MEMORY POOL LENGTH ENDC IFT #(3,?)+#(4,?) P: SET P:+2 IFF #(3,?) NOTE E,'MUST SPECIFY MEMORY POOL ADDRESS' ENDC IFF #(4,?) NOTE E,'MUST SPECIFY MEMORY POOL LENGTH' ENDC ENDC RES 1,0 WORD 43 IS RESERVED RES 1,0 NUMBER OF TASK ACTIVITY RES 1,0 TDB OF INITIAL TASK RES 1,0 PRIORITY OF INITIAL ACTIVITY RES 1,0 ID OF INITIAL ACTIVITY RES 1,0 MAP OF REGISTER TABLE IFF L:>=P: NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ORG O: ENDC ENDM TITL .... E D X V T : ( A ) M A C R O ** MACRO: EDXVT: & EDXVT:A * GENERATES ENTRIES IN THE EXCEPTION VECTOR TABLE OF THE EDB * THE EXCEPTION ADDRESS SPECIFIED WILL BE JUMPED TO IF THE * SPECIFIED EXCEPTION OCCURS * * CALLING SEQUENCE: EDXVT:(A) ECB,EXCEPT,EXPADD * *  ECB = ADDRESS OF ENVIRONMENT CONTROL BLOCK * EXCEPT = EXCEPTION VECTOR OFFSET * EXPADD = ADDRESS OF EXCEPTION PROCESSOR * * NOTE: CALLS TO THIS MACRO MUST ALL FOLLOW THE CALL TO THE ECB:(A) * MACRO ** SPACE 2 ED:EVT EQU 16 EXCEPTION VECTOR TABLE (DUPPED IN RTXD.MAC) * EDXVT: MACRO EDXVT:A MACENT P: SET 3 * LPOOL O: SET $ SAVE LOCATION COUNTER  ORG #(1)+ED:EVT+#(2) ORG INTO EDB WORD #(3) INSERT EXCEPTION PROCESSOR ADDRESS ORG O: ORG BACK TO WHERE WE WERE IFF #(?)=P: NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ENDM TITL .... I N I T : ( A ) M A C R O ** MACRO: INIT: & INIT:A * GENERATE AN ENVIRONMENT INITIALIZATION BLOCK * * CALLING SEQUENCE: * INIT:(A) AR,QR,XR,YR,ECB,TDB,PRI,(FPAMT,(FPADD)), * (EMADD) * * AR = INITIAL CONTENTS OF A REGISTER * QR = " "  " Q " * XR = " " " X " * YR = " " " Y " * ECB = ADDRESS OF ENVIRON MENT CONTROL BLOCK * TDB = ADDRESS OF TASK DESCRIPTOR BLOCK * PRI = PRIORITY OF TASK ACTIVATION * FPAMT = AMOUNT OF FREE POOL SPACE (WORDS) * FPADD = ADDRESS OF FREE POOL * EMADD = ADDRESS OF TOP OF MEMORY ** SPACE 2 INIT: MACRO INIT:A MACENT LPOOL O: SET $ SHARABLE TABLE: TABLE: REL P: SET 7 LOAD RTX: R:INIT NAM R:INIT WORD #(1)  IN:A - INITIAL A REGISTER WORD #(2) IN:Q - INITIAL Q REGISTER WORD #(3) IN:X - INITIAL X REGISTER WORD #(4) IN:Y - INITIAL Y REGISTER WORD #(5) IN:ECB - ECB ADDRESS WORD #(6) IN:TDB - TDB ADDRESS WORD #(7)**:7FFF IN:PRI - INITIAL ACTIVITY PRIORITY WORD IN:CHK IN:AID - CHECK WORD * IFT #(8,?) WORD #(8) IN:FPL - USER SPECIFIED FREEPOOL LENGTH P: SET P:+1 ENDC IFF #(8,?) WORD BLKSZ:*4 IN:FPL - DEFAULT FREEPOOL LENGTH ENDC * A: SET #(9,?) DEFAULT FPADD IF NOT SPECIFIED... IFT A:=1 OR IF '0' SPECIFIED A: SET '##(9)'<>'0' ENDC IFT A: WORD #(9) IN:FPA - USER FREE POOL ADDRESS Y: SET 0 P: SET P:+1 IFF #(8,?) NOTE E,'MUST SPECIFY AMOUNT OF FREE POOL = #(8)' ENDC ENDC IFF A: Y: SET BLKSZ:*4 S: SYMATT #(8) IFF S:**:0040 IF FPAMT NOT NULL... IFT S:=:8000 IF FPAMT IS ABSOLUTE... Y: SET #(8) ENDC IFF S:=:8000 IF FPAMT IS SOMETHING ELSE... NOTE E,'FPAMT MUST BE ABSOLUTE IF FPADD IS DEFAULTED' Y: SET 0 ENDC ENDC  WORD $+2 IN:FPA - DEFAULT FREE POOL ADDRESS (AFTER INIT BLOCK) ENDC * IFT #(10,?) P: SET P:+1 WORD #(10) IN:EOM - USER SPECIFIED END OF MEMORY ADDRESS ENDC IFF #(10,?) WORD 0 IN:EOM - DEFAULT END OF MEMORY ADDRESS ENDC * IFT Y:  RES Y:,:8080 RESERVE DEFAULT FREE POOL ENDC * IFF #(?)>=P: NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ORG O:  ENDM TITL .... M A I L : ( A ) M A C R O ** MACRO: MAIL: & MAIL:A * GENERATE A PARAMETER BLOCK FOR MAILBOX SERVICES * * CALLING SEQUENCE: LABEL MAIL:(A) BOXID,(ENVID) * MAIL:(A) LABEL,BOXID,(ENVID) (ARCHAIC) * LABEL = ADDRESS OF PARAMETER BLOCK * BOXID = MAILBOX IDENTIFIER * ENVID = ENVIRONMENT IDENTIFIER ** SPACE 2 MAIL: MACRO MAIL:A MACENT P: SET 1 L: SET #(?) IFF #(-1,?) L: SET L:-1 #(1) MAIL:: #(2),#(3) ENDC * MAIL:: MACENT IFT #(-1,?) IFT #(2,?) P: SET P:+1 ENDC WORD #(2)+0 ENVIRONMENT IDENTIFIER WORD #(1) MAILBOX IDENTIFIER IFF L:>=P: NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ENDC ENDM TITL .... M D B : ( A ) M A C R O ** MACRO: MDB: & MDB:A * GENERATE A MAILBOX DESCRIPTOR BLOCK * * CALLING SEQUENCE: (LABEL) MDB:(A) BOXID,(ENVID) * * BOXID = MAILBOX IDENTIFIER * ENVID = ENVIRONMENT IDENTIFIER ** SPACE 2 MDB: MACRO MACLAB MDB:A MACENT MACLAB LPOOL O: SET  $ SHARABLE TABLE: TABLE: REL P: SET 1 IFT #(-1,?) NAM #(-1) ENDC #(-1) CHAN R:MBXL MD:PER - PEER LINK WORD 0 MD:FLG - FLAG WORD WORD 1 MD:MBX - MAILBOX USAGE SEMAPHORE WORD 0 MD:MSG - MESSAGE SIGNALLING SEMAPHORE DOUBLE 0 MD:A,MD:Q - 32-BIT MESSAGE RES 3,0 WORDS 6-8 RESERVED IFT #(2,?) P: SET P:+1 ENDC WORD #(2)+0 MD:ECB - ENVIRONMENT IDENTIFIER WORD #(1) MD:ID - MAILBOX IDENTIFIER WORD MD:CHK MD:CHW - MDB CHECKWORD IFF #(?)>=P: NOTE E,'INCORRECT  NUMBER OF PARAMETERS' ENDC ORG O: ENDM TITL .... S I N G L : M A C R O ** MACRO: SINGL: * GENERATE A CANNED INIT BLOCK AND TASK DESCRIPTOR BLOCK, * (USER'S ECB MUST BE CALLED R:ECB1) * * CALLING SEQUENCE: (LABEL) SINGL: EXADD,STAMT,STREG * EXADD = EXECUTION ADDRESS OF INITIAL TASK * STAMT = AMOUNT OF STAMT TO ALLOCATE * STREG = INITIAL STATUS REGISTER ** SPACE 2 SINGL: MACRO EXTR R:ECB1 P: SET 3 INIT: 0,0,0,0,R:ECB1,R:TSK1,100,4*BLKSZ: R:TSK1 TDB:A #(1),0,R:STK1,#(2),#(3) R:STK1 RES #(2),0 LOAD UAT:S IFF #(?)=P: NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ENDM TITL .... S D B : ( A ) M A C R O ** MACRO: SDB: & SDB:A * GENERATE A SEMAPHORE DESCRIPTOR BLOCK * * CALLING SEQUENCE: LABEL SDB:(A) (VALUE),(FLAGS) * SDB:(A) LABEL,(VALUE),(FLAGS) (ARCHAIC) * LABEL = ADDRESS OF SEMAPHORE DESCRIPTOR BLOCK * VALUE = INITIAL VALUE OF SEMAPHORE (0 <= VALUE <= 255) * FLAGS = INITIAL VALUE OF FLAGS (NONE CURRENTLY DEFINED) ** SPACE 2 SDB: MACRO MACLAB SDB:A MACENT MACLAB P: SET 0 L: SET #(?) IFF #(-1,?) L: SET L:-1 #(1) SDB:: #(2),#(3) ENDC * SDB:: MACENT MACLAB IFT #(-1,?) LPOOL O: SET $ SHARABLE TABLE: TABLE: REL CHAN R:SL SD:PER - PEER LINK IFT #(1,?) P: SET P:+1 ENDC IFT #(2,?) P: SET P:+1 ENDC  WORD #(1)+0++#(2)+0 SD:FLG - FLAGS & INITIAL VALUE NAM #(-1) #(-1) WORD #(1)+0 SD:SEM - VALUE FOR WAITING TASK WORD SD:CHK SD:CKW - SDB CHECKWORD IFF L:>=P: NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ORG O: ENDC ENDM TITL .... T D B : ( A ) M A C R O ** MACRO: TDB: & TDB:A * GENERATE A TASK DESCRIPTOR BLOCK * * CALLING SEQUENCE: * LABEL TDB:(A) EXADD,YSCRA,STACK,STAMT,(FLAGS),(COACT),(SEMA4) * TDB:(A) LABEL,EXADD,YSCRA,STACK,STAMT,(FLAGS),(COACT), * (SEMA4) (ARCHAIC) * * LABEL = ADDRESS OF TASK DESCRIPTOR BLOCK * EXADD = EXECUTION ADDRESS * YSCRA = AMOUNT OF Y-SCRATCH TO ALLOCATE * "*" INDICATES MULTI-TASKING TEMPLATE EXPANSION * STACK = ADDRESS OF STACK * STAMT = AMOUNT OF STACK TO ALLOCATE * FLAGS = NONE DEFINED * COACT = NUMBER OF CONCURRENT EXECUTIONS * SEMA4 = CONCURRENCY SEMAPHORE ADDRESS (MUST BE SET AT RUNTIME) ** SPACE 2 TDB: MACRO MACLAB TDB:A MACENT MACLAB P: SET 4 L: SET #(?) IFF #(-1,?) L: SET L:-1 #(1) TDB:: #(2),#(3),#(4),#(5),#(6),#(7),#(8) ENDC * TDB:: MACENT MACLAB IFT #(-1,?) LPOOL O: SET $ SHARABLE TABLE: TABLE: REL #(-1) NAM #(-1) IFT #(5,?) P: SET P:+1 ENDC CHAN  R:TDBL TD:PER - PEER LINK IFF #(2,?)=1&#(2,'*') IF NO MULTI-TASKING WORD 0 TD:FLG - FLAG WORD ENDC IFT #(2,?)=1&#(2,'*') IF MULTI-TASKING WORD :8000 TD:FLG - MULTI-TASKING BIT SET ENDC A: SET 1 DEFAULT CONCURRENT EXECUTIONS IFT #(6,?) A:  SET #(6) USER SPECIFIED CONCURRENT EXECUTIONS P: SET P:+1 ENDC IFT #(7,?) WORD #(7) TD:USA - USER SPECIFIED CONCURRENCY SEMAPHORE ADDRESS P: SET P:+1 ENDC IFF #(7,?) WORD $+6 TD:USA - DEFAULT CONCURRENCY SEMAPHORE ADDRESS ENDC WORD A: TD:NOX - CONCURRENT EXECUTIONS IFF #(2,?)=1&#(2,'*') IF NO MULTI-TASKING WORD #(2)+0 TD:Y - Y SCRATCHPAD ALLOCATION   ENDC IFT #(2,?)=1&#(2,'*') IF MULTI-TASKING TASK #(-1) DECLARE TASK TEMPLATE #(-1) TD:Y - POINTER TO TEMPLATE LOAD R:TMPL TEMPLATE PROCESSOR ENDC WORD #(3)+0 TD:AD - STACK ADDRESS WORD #(4) TD:AMT - STACK ALLOCATION WORD #(1) TD:P - EXECUTION ADDRESS WORD A: TD:CSA - DEFAULT CONCURRENCY SEMAPHORE RES 2,0 WORDS 9-10 RESERVED WORD TD:CHK TD:CKW - TDB CHECKWORD IFF L:>=P: NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ORG O: ENDC ENDM TITL .... T I C K : ( A )  M A C R O ** MACRO: TICK: & TICK:A * GENERATE A PARAMETER BLOCK FOR TICK CLOCK SERVICES * * CALLING SEQUENCE2 * LABEL TICK2(A) TIMAD,SEMA4,TICKS,(ENVID) * TICK:(A) LABEL,TIMID,SEMA4,TICKS,(ENVID) (ARCHAIC) * * LABEL = ADDRESS OF PARAMETER BDOCK * TIMID = TIMER IDENTIFIER * SEMA4 = ADDRESS OF SEMAPHORE * TICKS = TICK COUNT * ENVID = ENVIRONMENT IDENTIFIER ** SPACE 2 TICK: MACRO TICK:A MACENT P: SET 3 L: SET #(?) IFF #(-1,?) L: SET L:-1 #(1) TICK:: #(2),#(3),#(4),#(5) ENDC * TICK:: MACENT IFT #(-1,?) IFT #(4,?) P: SET P:+1 ENDC WORD #(4)+0 ENVIRONMENT IDENTIFIER WORD #(1) TIMER IDENTIFIER WORD #(2) SEMAPHORE WORD #(3) TICK COUNT IFF L:>=P: NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ENDC ENDM TITL .... W A L L : ( A ) M A C R O ** MACRO: WALL: & WALL:A * GENERATE A PARAMETER BLOCK FOR WALL CLOCK SERVICES * * CALLING SEQUENCE: * LABEL WALL:(A) TIMID,SEMA4,HITOD,LOTOD,(ENVID) *  WALL:(A) LABEL,TIMID,SEMA4,HITOD,LOTOD,(ENVID) (ARCHAIC) * * LABEL = ADDRESS OF PARAMETER BLOCK * TIMID = TIMER IDENTIFIER * SEMA4 = ADDRESS OF SEMAPHORE * HITOD = HI-ORDER TIME OF DAY * LOTOD = LO-ORDER TIME OF DAY *  TITL I O S . M A C - IOS GENERAL EQUATES & MACROS (93420-1B-F200) TITL ..... CONTENTS ******************* *  * * IOS.MAC * * * ******************* * * UAT:AA MACRO * UAT:EE MACRO * UAT:ZZ MACRO *  BUF:R MACRO * IOB:A MACRO * IOB EQUATES * IOU: MACRO * IOR: MACRO * I/O ERROR BLOCK EQUATES * I:LOAD PARAMETER BLOCK (LOAD:) EQUATES * LOAD: MACRO * OVL:A MACRO * OVL: MACRO TITL .... REVISION HISTORY * * * REV F200 - 1. ADDED POSITION & FUNCTION MODIFIERS FOR THE * QIC-02 STREAMER TAPE. * 2. ADDED STREAMER TAPE INTERFACE (PICO) STATUS BITS. * MHAYES 5/NOV/83 * TITL ... UAT:AA UAT:EE UAT:ZZ UA:CHK EQU :F09E * UAT:AA LABEL START UNIT ASSIGNMENT TABLE * * UAT:EE LUN,ADDRESS UAT ENTRY * * UAT:ZZ END OF UAT * * LABEL LABEL TO ASSOCIATED WITH UAT * LUN LOGICAL UNIT NAME * ADDRESS ADDRESS OF DIB OR FCB * * UAT:AA MACRO MACLAB LPOOL O: SET $ SHARABLE TABLE: TABLE: REL LOAD I:IO WORD UA:CHK #1 WORD UAT:ND-$-4%-1 RES 3,0 UAT:NV SET 0  ENDM * UAT:EE MACRO WORD #1 S: SYMATT #2 IFT S:&UNDBT: EXTR #2 ENDC WORD #2 UAT:NV SET UAT:NV+1 ENDM * UAT:ZZ MACRO S: SYMATT #1 IFF S:&NULL: IFT #(1,'FORTRAN')>0 SNAM  UAT:ND ENDC ENDC UAT:ND EQU $ IFF S:&NULL: IFT #(1,'FORTRAN')>0 RES UAT:NV*2,0 ENDC ENDC ORG O: ENDM TITL .... BUF:R MACRO ************************************************************ * BUFFER POOL GENERATION MACROS + *  * * CALLING SEQUENCE * * BUF:R #1 * *  * * #1 - NUMBER OF BUFFERS * ************************************************************ * BUF:LN EQU 512 * * BUF:R - GENERATE BUFFER POOL * BUF:R MACRO LPOOL O: SET $ TABLE: REL SHARABLE TABLE: LOAD FM:SFM NAM BUF:N BUF:N EQU #(1) P: SET BUF:N BUF:LOOP MACENT IFT P: CHAN BUF: CHAIN LINK CHAN BUF:: STATIC LINK RES 4,0 WORD BUF:LN LENGTH RES 2,0 SECTOR RES 7,0 RES BUF:LN/2,0 BUFFER LENGTH P: SET P:-1 BUF:LOOP ENDC IFF P: ORG O: P: SET 1 ENDC ENDM TITL .... IOB:A MACRO * IOB:A IOB,LUN,OPC,OPM,BCT,BUF,CGI,OPO * * * IOB LABEL TO BE ASSIGNED TO START OF IOB * LUN LOGICAL UNIT NAME OR NUMBER * OPC OPERATION CODE * RE: EQU 0 READ * WR: EQU 1 WRITE * PO: EQU 2 POSITION * FU: EQU 3 FUNCTION * OPM OPERATION MODIFIER * UF: EQU 0 UNFORMATTED * FA: EQU 1 FORMATTED ALPHANUMERIC * FB: EQU 2 FORMATTED BINARY * DA: EQU 3 DIRECT FORMATTED ALPHA * DB: EQU 4 DIRECT FORMATTED BINARY * WP: EQU 5 WRITE PROMPT * FS: EQU 8 FORMATTED STREAM * DS: EQU 12 DIRECT STREAM * * BCT REQUESTED BYTE COUNT * BUF I/O BUFFER ADDRESS * CGI ADDRESS OF CURRENT FILE INDEX OR ZERO * OPO OPTIONAL MODE OF OPERATION * SB: EQU 11  START IN SECOND BYTE OF BUFFER * ER: EQU 12 DON'T CALL DOIO ERROR ROUTINE, GO TO USER * * TITL MACRO IOB:A IFT #?<7 NOTE 5,'NOT ENOUGH PARAMETERS' ENDC #1 WORD #2 LOGICAL UNIT NAME /NUMBER WORD  0 DEVICE DEDICATION NUMBER WORD #7 OPTIONAL ADDRESS OF CFI S: SYMVAL #8 IFF S:=0 IFT #8>15 S: SET #8 VALUE, NOT BIT EQUATE ENDC IFF #8>15 S: SET 1%#8 ENDC ENDC WORD #3%4+#4+S: WORD #5 BYTE COUNT WORD #6 I/O BUFFER ADDRESS WORD 0 ACTUAL COUNT PROCESSED WORD 0  SOFTWARE STATUS ENDM TITL INPUT/OUTPUT BLOCK (IOB) * INPUT/OUTPUT BLOCK (IOB) * IO:LUN EQU 0 LOGICAL UNIT NAME/NUMBER IO:DDN EQU 1 DEVICE DEDICATION NUMBER IO:CRI EQU 2 ADDRESS OF CURRENT RECORD INDEX IO:CFI EQU IO:CRI  CURRENT FILE INDEX POINTER IO:FC EQU 3 FUNCTION CODE IO:BCT EQU 4 BYTE COUNT REQUESTED IO:BUF EQU 5 I/O BUFFER ADDRESS IO:ACT EQU 6 ACTUAL COUNT PROCESSED IO:ST EQU 7 SOFTWARE STATUS * BISYNC PICO ONLY IO:HED EQU IO:BUF  FIRST BCB ON CHAIN IO:LST EQU IO:ACT LAST BCB PROCESSED * * FUNCTION CODE BITS * * BITS 15-6 MODE   OF OPERATION ER: EQU 12 DON'T CALL DOIO ERROR ROUTINE,GO TO USER SB: EQU 11 START ON SECOND BYTE OF BUFFER HA: EQU 10 USED BY HALT I/O FUNCTION. UD: EQU 9 UN-DEDICATE DEVICE AFTER PERFORMING I/O * ER:V EQU 1%ER: SB:V EQU 1%SB: TITL OPERATION CODES RE: EQU 0 READ WR: EQU 1 WRITE PO: EQU 2 POSITION FU: EQU 3 FUNCTION * UNKNOWN OPEN: EQU 4 OPEN CLOSE: EQU 5 CLOSE * ASYNCH MUX ONLY SBU: EQU 4 SEND BUFFER SNL: EQU 6 SEND END-OF-LINE SEQUENCE ('SEND NEW LINE') SBK: EQU 5 SEND 'BREAK' SCC: EQU 7 SEND CONTROL CHARACTER WMR: EQU :C WRITE MODEM REGISTER WOT: EQU :D WRITE OPTION TABLE WSC: EQU :E WRITE SPECIAL CHAR TABLE * BISYNC PICO ONLY IR: EQU 8 IMMEDIATE RETURN ON OPEN IR:V EQU 1%IR: BIT MASK TITL OPERATION MODIFIERS FOR READ/WRITE * * OPERATION MODIFIERS FOR READ/WRITE (BITS 0-3) * UF: EQU 0 UNFORMATTED FA: EQU :B FORMATTED ALPHANUMERIC FB: EQU :A FORMATTED BINARY FS: EQU :8 FORMATTED STREAM CD: EQU :2 SCOUT MULTI-CHANNEL SERIAL CHAR. DETECT (EOB) WP: EQU 1 WRITE PROMPT DA: EQU :F DIRECT ALPHANUMERIC DB: EQU 6 DIRECT BINARY DS: EQU :C DIRECT STREAM BS: EQU FS: SEQUENTIAL STREAM BINARY SA: EQU :9 SEQUENTIAL STREAM ALPHA RB: EQU FB: SEQUENTIAL RECORD BINARY RA: EQU FA: SEQUENTIAL RECORD ALPHA DSB: EQU DS: DIRECT STREAM BINARY DSA: EQU :D DIRECT STREAM ALPHA DRB: EQU :E DIRECT RECORD BINARY DRA: EQU DA: DIRECT RECORD ALPHA TITL OPERATION MODIFIERS FOR POSITION * * OPERATION MODIFIERS FOR POSITION (BITS 0-3) * FAB:  EQU 0 FILE POINTER ABSOLUTE BYTES FRB: EQU 1 FILE POINTER RELATIVE BYTES WAB: EQU 2  WRITE POINTER ABSOLUTE BYTES WRB: EQU 3 WRITE POINTER RELATIVE BYTES AR: EQU 4  ABSOLUTE RECORDS RR: EQU 5 RELATIVE RECORDS RFP: EQU 6 READ FILE POINTER RWP: EQU 7 READ WRITE POINTER * * MAGTAPE ONLY * SBF: EQU 8 SKIP BLOCKS FORWARD SBR: EQU 9 SKIP BLOCKS REVERSE SKF: EQU 10 SKIP FILES FORWARD * * STREAMER TAPE ONLY * WFM: EQU 8 WRITE FILE MARK RFM: EQU 9 READ FILE MARK * * SCOUT MULTI-CHANNEL SERIAL HANDLER ONLY * WC: EQU 14 TRANSFER USER'S SPEC. TABLE PTR. TO DIB TITL OPERATION MODIFIERS FOR FUNCTION * * OPERATION MODIFIERS FOR FUNCTION (BITS 0-3) * OP: EQU 0 OPEN CL: EQU 1 CLOSE PL: EQU 2 PUNCH LEADER WF: EQU 3 WRITE FILE MARK DF: EQU 4 DEVICE DEPENDENT FUNCTION SS: EQU 5 SELECT HARDWARE STATUS TF: EQU 6 TOP OF FORM SC: EQU 7 SOFTWARE CONTROL * * MAG & STREAMER TAPES ONLY * RWD: EQU 8 REWIND * * MAGTAPE ONLY * OFL: EQU 9 OFF-LINE EBL: EQU 10 ERASE BLOCK EFM: EQU 11 ERASE FILE MARK EOV: EQU 12 DO END OF VOLUME UBF: EQU 13 USER SUPPLIED BUFFER FUNCTION MOD. * * STREAMER TAPE ONLY * EET: EQU 9 ERASE ENTIRE TAPE RT: EQU 10 INITIALIZE CARTRIDGE (RETENSION) * * FOR OPEN BL: EQU 1 BLOCK I/O TITL * * FOR ASYNCH MUX * ROT: EQU 1 READ OPTION TABLE CM: EQU 1 SPECIAL CHARACTER MATCH OPTION (ADD TO RBF:) RMR: EQU 2 READ MODEM   REGISTER RM: EQU 2 RANGE MATCH OPTION (ADD TO RBF:) RBF: EQU 4 READ BUFFER AE: EQU 8 FIRMWARE AUTO ECHO OPTION (ADD TO RBF:) * TO: EQU 7 BIT NUMBER IN IO:FC TO INHIBIT HARDWARE WRITE ON WOT, WSC ID: EQU 7 BIT NUMBER IN IO:FC TO INHIBIT DATA TRANSFER ON RBF * * BISYNC PICO ONLY DOT: EQU 0 DUMP OPTION TABLE OPN: EQU 1 OPEN CLS: EQU  2 CLOSE EXU: EQU 3 EXECUTE REQUEST SAA: EQU 4 SET AUTO ANSWER TITL SOFTWARE STATUS * * SOFTWARE STATUS * IOERR: EQU 15 ERROR CAUSED I/O TERMINATION * BISYNC PICO ONLY IOCOM: EQU 14 OPERATION COMPLETION FLAG * BITS 13-12 DESCRIBE CONCURRENT CONDITIONS TFORM: EQU 1%12 TOP OF FORM BFORM: EQU 2%12 BOTTOM OF FORM * RETRY: EQU 11 A RETRY WAS REQUIRED TO PERFORM THE OPERAT EOM: EQU 10 END OF MEDIUM ENCOUNTERED DURING OPERATION DELDA: EQU 9 DELETED DATA READ FROM FLOPPY DISK * ASYNCH MUX ONLY RANGM: EQU 8 RANGE MATCH OCCURRED ON RECEIVE LBK: EQU 7 TRANSMIT STATUS ONLY, LINE BREAK SEEN BY RECV HALF CHARM: EQU 7 CHARACTER MATCH OCCURRED ON RECEIVE * * IOS4 ERROR CODES * BITS 0-5 OF STATUS WORD CONTAIN LOWER BYTE OF ERROR CODE * BIT 6 SET FOR UNRECOVERABLE * ERROR CLASSES ER:IOR EQU 0 I/O RECOVERABLE ER:IOU EQU 1 I/O UNRECOVERABLE SPACE 3 * NORMAL RETURN CODES NORML: EQU 0 NORMAL I/O COMPLETION EOF: EQU 1  END OF FILE (GOING FORWARD) BOF: SET 3 BEGINNING OF FILE * * STREAMER TAPE INTERFACE (PICO) STATUS BITS * ST:EXC EQU 0 EXCEPTION ST:RDY EQU 1 FORMATTER/DRIVE READY ST:IDLE EQU 2 PICO IDLE TITL .... IOU: IOR: MACROS * MACROS FOR IOS4 ERROR CODES * IOR: FOR RECOVERABLE * IOU: FOR UNRECOVERABLE * MACRO IOU: #1 EQU 1%6+#2 ENDM MACRO IOR: #1 EQU #2 ENDM * * ERROR CODES * IOR: HALTD:,1 I/O HALTED IOR: NORDY:,2 NOT READY IOR: WRTPR:,3 WRITE PROTECT IOR: TIMOT:,4 TIME OUT IOR: PWRFL:,5 POWER FAIL & UNABLE TO RECOVER IOR: DDTNA:,6 DDT NOT AVAILABLE,CFM ONLY IOR: VOLNU:,7 VOLUME NOT ON UNIT IOR: VOLNF:,8 VOLUME NOT FOUND IOR: NOREL:,9 LOGICAL UNIT NOT RELEASED IOR: AGAIN:,10 TRY AGAIN IOR: MNTAPE:,11 MOUNT NEXT VOLUME (MAG TAPE ONLY) * IOU: CKSUM:,1 BAD CHECK SUM IOU: UNDEV:,2 UNASSIGNED DEVICE IOU: NIUAT:,3 LUN NOT IN UAT IOU: REOM:,4 REACHED END OF MEDIA IOU: HARDW:,5 HARDWARE ERROR IOU: ILLOP:,6 ILLEGAL OPERATION FOR THIS DEVICE IOU: NEMEM:,7 NON-EXISTANT MEMORY ADDR IOU: INRTX:,8 MEMORY ADDR IN SYSTEM ARTEA IOU: DIRFL:,9 DIRECTORY FULL IOU: NOLAB:,10 DISK NOT LABELED IOU: FAOV:,11 FILE ADDR OVERFLOW IOU: ILLAU:,12 ILLEGAL AU IOU: AUNF:,13 AU NOT FOUND IOU: WDEOF:,14 WRITE DIRECT HIT EOF IOU: NOTXT:,15 NOT EXTENDABLE IOU: ILLFA:,16 ILLEGAL FILE ADDR IOU: ALOFU:,17 ALLOCATION TABLE FOULED UP IOU: SYSUG:,18 SYSTEM USAGE ONLY IOU: FCBCH:,19 FCB CHAIN BAD IOU: FILEO:,20 FILE OPEN IOU: NOPEN:,21 FILE NOT OPEN IOU: FNOP:,21 FILE NOT OPEN IOU: OONWR:,22 OLD OR NEW WRONG, CFM ONLY IOU: ILLFP:,22 ILLEGAL FILE POINTER IOU: NOUNT:,23 UNIT NOT GIV  EN IOU: UNFCB:,24 UNASSIGNED FCB IOU: BUFWP:,25 BUFFER HAS WRITE PENDING IOU: NOAU:,26 NO MORE FREE AU'S IOU: BADTC:,27 BAD TYPE CODE IOU: ABORT:,28 ABORT IOU: LDSR:,29 DSR NOT UP (ASYNCH MUX ONLY) IOU: BRKDT:,30 'BREAK' DETECTED ON RECEIVE (ASYNCH MUX ONLY) IOU: PE:,31 PARITY ERROR ON RECEIVE (ASYNCH MUX ONLY) IOU: OE:,32 OVERRUN ERROR ON RECEIVE (ASYNCH MUX ONLY) IOU: UBTSM:,33 USER'S BLOCK TO SMALL IOU: ONOOR:,34 OVERLAY NUMBER OUT OF RANGE IOU: DVNAL:,35 DEVICE NOT ALLOCATED TO USER (BISYNC PICO) IOU: DVNOP:,36 DEVICE NOT OPENED (BISYNC PICO) IOU: ILLCM:,37 ILLEGAL COMMAND (BISYNC PICO) IOU: DVINO:,38 DEVICE INOPERATIVE (BISYNC PICO) IOU: EOTPD:,39 EOT FAILED PAD CHECK (BISYNC PICO) IOU: NAKPD:,40 NAK FAILED PAD CHECK (BISYNC PICO) IOU: MSGAB:,41 MESSAGE ABORTED (BISYNC PICO) IOU: BCCER:,42 BCC ERROR (BISYNC PICO) IOU: ILLCC:,43 ILLEGAL CONTROL CHARACTER (BISYNC PICO) IOU: RCVOR:,44 RECEIVE OVERRUN (BISYNC PICO) IOU: LGOVR:,45  LEADING GRAPHICS OVERRUN (BISYNC PICO) IOU: RTXER:,63 RTX ERROR * * I/O ERROR BLOCK EQUATES * IOE:AC EQU 0 ACB ADDR OF ERROR ACTIVITY IOE:EC EQU 1 ERROR CODE IOE:K EQU 2 K-REG OF ACTIVITY WITH ERROR IOE:DI EQU 3 DIB ADDR IOE:TI EQU 4 TIB ADDR TITL I:LOAD & I:LD410S PARAMETER BLOCK EQUATES & MACROS * PARAMETER BLOCK EQUATES * LD:LUN EQU 0 LOAD FILE LUN LD:BUF EQU 1 FILE INPUT BUFFER ADDRESS LD:OFF EQU 2 RELOCATION OFFSET LD:HLL EQU 3 HIGH LOAD LIMIT LD:LLL  EQU 4 LOW LOAD LIMIT LD:XAD EQU 5 EXECUTION ADDRESS LD:HAD EQU 6 HIGHEST ADDRESS LOADED LD:FLG EQU 7 FLAG WORD LD:SDA EQU 8 SLAVE DEVICE ADDRESS (410S ONLY) LD:STP EQU 8 TOP-DOWN LOAD STEP VALUE (I:LOAD ONLY) LD:SIZE EQU 9 SIZE OF LOAD SERVICE PARAMETER BLOCK * * LD:FLG (FLAG WORD) EQUATES * LDF:ERR EQU 15 ERROR OCCURRED DURING LOAD LDF:IOE EQU 14 I/O ERROR LDF:BTC EQU 13 BAD TYPE CODE ERROR LDF:ADE EQU 12 ADDRESSING ERROR LDF:NOS EQU 11 NO 410S AT SPECIFIED DEVICE ADDRESS (410S ONLY) LDF:MAE EQU 10 MEMORY ADDRESS ERROR (16-32K) (410S ONLY) * LDF:PM EQU 2 PUBLIC MEMORY IN UPPER 32K (410S ONLY) LDF:EXA EQU 1 EXECUTION ADDRESS SPECIFIED (410S ONLY) LDF:EX EQU 0 INITIATE 410S EXECUTION (410S ONLY) TITL *  PARAMETER BLOCK GENERATION MACRO * * LABEL LOAD: LUN,OFF,(BUF),(HLL),(LLL),(XAD),(FLG),(SLV) * LOAD: MACRO WORD #(1) LD:LUN .. LUN WORD #(3)+0 LD:BUF .. INPUT BUFFER ADDRESS WORD #(2) LD:OFF .. RELOCATION OFFSET WORD #(4)+0  LD:HLL .. HIGH LOAD LIMIT WORD #(5)+0 LD:LLL .. LOW LOAD LIMIT WORD #(6)+0 LD:XAD .. EXECUTION ADDRESS (410S ONLY) WO TITL I O S D . M A C - IOS DEVELOPMENT EQUATES & MACROS (93421-1A-F400) TITL .... CONTENTS ************************* *  * * IOSD.MAC * * * ************************* * * DIB EQUATES *  CIB EQUATES * TIB EQUATES * DIO DEVICE EQUATES * NON-DIO DEVICE EQUATES * BIT:WORD MACRO * BIT:EQU MACRO * BIT:SET MACRO * INT:SEQ MACRO * DIB:ST MACRO * CIB:ST MACRO * TVDIBCIB MACR  O * CIB:DK MACRO * CIB:DF MACRO * CIB:DFQ MACRO * CIB:DP: MACRO * OPT:DS MACRO * DIB:DK MACRO * DIB:DM MACRO * DIB:DH MACRO * DIB:DF MACRO * DIB:DFQ MACRO * DIB:DS MACRO * CIB:DM MACRO * CIB:DH MACRO * CIB:DS MACRO * DIB:DP MACRO * CIB:DP MACRO * COND  MACRO * COND1 MACRO * D:AC MACRO * DIB:TV MACRO * DIB:LP MACRO * C:AC MACRO *  CIB:TV MACRO * CX:AC MACRO * DIB:MT MACRO * CIB:MT MACRO * DIB:BP MACRO * DBP:O MACRO * CIB:BP MACRO TITL .... REVISION HISTORY * * REV E500 - ADDED FIFTH PARAMETER TO DIB:LP TO SPECIFY TIME-OUT * SHIFT COUNT VALUE (FOR THE AXIOM IMP-2 PRINTER) * MSS RICHARDSON * * REV E600 - REA 10156 FIXED (CX:AC MACRO); REA'S 10168, 10173 * FIXED (CIB:BP MACRO) * DCR 15/JAN/81 * * REV E700 - CHANGED LINE PRINTER TO 81 COLUMNS. SLM 2/MAR/81 * * REV F000 - INT:SEQ MACRO FIXED SD 2/APR/81 * FIXED FS: IN READ/WRITE DSW WORDS FOR DISK BLOCK I/O * EQUATED FROM DFQDA: TO DFDA: FOR QUAD FLOPPY DIB * DIB:DFQ TO GENERATE CORRECT CHAN NAME. * (REAS FIXED: 10192,12979,12977,12976) * * REV F100 - ADDED DIB:DK, CIB:DK, DISK FAMILIES. * ALSO, INCLUDES CHANGES FOR SCOUT MULTI-CHANNEL SERIAL * IO HANDLER. * CWK 24/SEP/81. * * REV F101 - CHANGED DI:ERM FROM :2000 TO :3B14 FOR USE IN * IOSTTY.ASM (CHARACTER DRIVER). * VAW & CWK 02/OCT/81. * *  CHANGED CIB:DK TO CORRECT FAMILY LOGIC. * ALSO, FIXED RD,WRT,POS&FUN ENTRY POINTS *  FOR DFQ. ALSO, INCLUDED DFQ IN EOB SEQUENCE. * CHANGED FAM:PHXN AND FAM:PHXA EQU NAMES TO FAM:PHWS * AND FAM:PHNS. THIS CHANGES ITS MEANING; IT * NOW REFERS TO WHETHER OR NOT THE DRIVE HAS * SPO OPTION SO WE CAN MAKE SURE DH REFERS TO * THE FIXED VOLUME. * MDB & CWK 07/OCT/81. TITL * * REV F200 - CHANGED 'TPC:' TO 'SPA:' IN PHOENIX DIB AREA, * BEING PREVIOUSLY INCORRECT. * CWK 13/OCT/81 * * * REV F300 - ADDED 16-MB DEFAULT TO PHOENIX SIZE IN DIB * ADDED FD: AND SPCH OPTIONS TO CX:AC MACRO *  FOR ASYNCH MUX. * ADDED EDT: OPTION TO D:AC FOR ASYNCH MUX * MOVED DI:LPP AND DI:CPL DOWN IN ASYNCH MUX * DIB FOR USE BY DRIVER. * PFT 4/FEB/82 * * - ADDED SCOUT WINCHESTER DISKS TO DIB:DK AND * CIB:DK MACROS. THE FAMILY IDENTIFIER *  IS SWI. * CWK 08/AUG/82. * * - MADE THE TIMEOUT VALUE FOR ALL WINCHESTER * DISKS 7*8 AND SPB IS :FFFF FOR SCOUT * WINCHESTER DISKS. *   CWK 07/SEP/82. * TITL * REV F400 - FIXED CIB:DK SO THAT IT VALIDATES THE DEVICE ADDR *  OF THE UFDC, WHICH IS PASSED AS A PARAMETER IN A * CIB:DS CALL. A VALID ADDRESS IS ANYTHING BETWEEN * 4 & :FC THAT HAS THE 2 LOW-ORDER BITS TURNED OFF. * MHAYES 02/JUN/83 * - UPDATED DIB:DK SO THAT 5-1/4" WINCHESTER DRIVES * MAY BE GEN'D INTO SYSTEM. ALSO ADDED A TEST WHEN AU'S * PER DISK ARE CALCULATED; AN ERROR IS GENERATED IF * IT WINDS UP WITH MORE THAN 32,767 (:7FFF) AU'S. * - ADDED EQUATES TO BE USED BY LABEL WHEN PROCESSING * 5-1/4" WINCHESTERS. (SEE 'MISCELLANEOUS EQUATES' & * 'EQUATES FOR DISK DEVICE FAMILIES') *  MHAYES 04/OCT/83 * - FIXED THE WORD IN CIB:TV (CI:IV) THAT WAS GENERA- * TING THE INTERRUPT VECTOR ADDRESS. IT WAS COMPUTING * THE ADDRESS INCORRECTLY. *  CKEATING & MHAYES 11/OCT/83 * * - ADDED MACROS TO CREATE DIB & CIB FOR THE STREAMER *  TAPE. (DIB:STR & CIB:STR) * MHAYES 28/OCT/83 * * - ADDED A PARAMETER TO DIB:LP SO THAT IT'S POSSIBLE TO * GEN A NON-STANDARD CIB FOR THE LP. IF INCLUDED, THE *  STANDARD CIB FROM IOSDIBCIB IS NOT USED. THE CIB IS * CREATED BY A CALL TO CIB:LP IN OS4CONFIG.ASM. * ADDED CIB:LP TO CREATE THE NON-STANDARD CIB (SEE * ADDITIONAL ENTRY POINT TO C:AC) *  CKEATING & MHAYES 28/OCT/83 * * - ADDED A 5TH PARAMETER TO TVDIBCIB. USER MUST SPECIFY * 'EIO' OR 'DIO' FOR THE TV CONTROLLER. THE EIO HANDLES * 'BREAK' DIFFERENTLY. *  MHAYES 05/JAN/84 * * - CHANGED WATCHDOG BASE TIME FROM 4 TO 7 SECONDS IN * DIB:LP. OKIDATA LP WAS TIMING OUT ON THE DATACASE/5 * WITH JUST 4 SECONDS. *  MHAYES 19/JAN/84 * **************************************************************************** TITL DIB EQUATES * DEVICE INFORMATION BLOCK (DIB) * DI:PER EQU 0 PEER POINTER DI:FLG EQU 1 DIB FLAGWORD DI:CIB EQU 2 MASTER CIB ADDRESS DI:FCB EQU 3 FILE CONTROL BLOCK LIST HEAD DI:NAM EQU 4 DEVICE NAME (4 CHARACTERS) DI:DN EQU 6 DEDICATION NUMBER DI:DS EQU 7 DEDICATION SEMAPHORE DI:SPB EQU 8  WATCHDOG TIMER -- NUMBER OF SHIFTS PER BYT DI:WBT EQU 9 WATCHDOG TIMER -- BASE TIME DI:DSW EQU 10  DEVICE SPECIFICATION WORDS (10-13) * 14-15 RESERVED * * DIB FLAGWORD * EQU 15 ALWAYS ZERO FOR DIB DIF:ND EQU 14 NO DEDICATION ON THIS DEVICE DIFAM:DP EQU 13 DI:DDN IS A POINTER TO A DEDICATION NUMBER DIF:NT EQU 12 NO TIMER FOR READ DIF:RT EQU 11 RETRY ON P OWER FAIL DIF:FC EQU 10 FORM CONTROL DIF:OP EQU 9 DEVICE IS OPEN. DIF:MC EQU 8 SCOUT MULTI-CHANNEL PSEUDO-OPEN FLAG DIF:NCFL EQU 2 FLIST IS NONCONTIGUOUS DIF:UI EQU 1 DEVICE SUPPORTS UNSOLICITED INPUT DIF:BF EQU 0 BUFFER FLAG FOR CARD READER DIF:MT EQU 0 DISK IS MOUNTED DIF:NM EQU 1 NO AUTOMATIC MOUNT ON DISK TITL * DEVICE INFORMATION BLOCK FOR CHARACTER DEVICES * DI:CPL EQU 16 CHARACTERS PER LINE DI:LPP EQU 17 BOTTOM OF FORM COUNT/LINES PER PAGE DI:BMI EQU 18 BRANCH/MODE WORD FOR INPUT DI:BMO EQU 19  BRANCH/MODE WORD FOR OUTPUT DI:EOL EQU 20 POINTER TO END OF LINE SEQUENCE DI:TOF EQU 21  POINTER TO TOP OF FORM SEQUENCE DI:ERM EQU 22 ERROR MASK FOR STATUS DI:LC EQU 23 LINE COUNTER DI:EDT EQU 24 EDIT CHARACTER DI:ELI EQU 25 END OF LINE SEQUENCE FOR INPUT DI:BUF EQU 26  POINTER TO 2 WORD INTERNAL BUFFER DI:PU EQU 27 POINTER TO POWER UP SEQUENCE * * DEVICE INFORMATION BLOCK FOR SCOUT MULTI-CHANNEL SERIAL IO HANDLER * DI:CTRL EQU 28 BOARD CONTROL WORD (AUTO-ECHO INCLUDED) DI:MODE EQU 29 MODE WORD (CHAR. LENGTH, NO. OF BYTES, ETC.) DI:TYPE EQU 30 TYPE OF DEVICE (TV, LP, TK, ETC. (#) ) DI:SPC EQU 31 CONFIG. SPECIAL CHAR. TABLE ADDR. PTR. DI:UTBL EQU 32 USER'S SPECIAL CHAR. TABLE ADDR. PTR. * * DEVICE INFORMATION BLOCK FOR CARD READER * *I:CPL EQU 16 CHARACTERS PER CARD *I:LPP EQU 17 =0, NOPAGES ON CARD READER *I:BMI EQU 18  BRANCH/MODE WORD FOR INPUT DI:CBA EQU 19 CURRENT BUFFER ADDR DI:ABA EQU 20 ALTERNATE BUFFER ADDR, =0 FOR NO DOBLE BUF DI:TRT EQU 21 TRANSLATION TABLE ADDR *I:ERM EQU 22 ERROR MASK FOR STATSUS TITL * DEVICE INFORMATION BLOCK FOR DISKS * DI:BPS EQU 16 BYTES PER SECTOR DI:SPT EQU 17  SECTORS PER TRACK DI:TPC EQU 18 TRACKS PER CYLINDER DI:CPD EQU 19 CYLINDERS PER DISK DI:SPA EQU 20 SECTORS PER ALLOCATION UNIT DI:CYL EQU 21 CUURRENT CYLINDER FOR FLOPPY DI:TRY EQU  22 HARD/RATE ERROR RETYR COUNT DI:VTS EQU 23 VTOC SEMAPHORE DI:ATS EQU 24 ALLOCATION TABLE SEMAPHORE DI:HOS EQU 25 HEAD OFFSET DI:HSA EQU 26 HEAD SEMAPHORE ADDR DI:FAM EQU 27  DISK DEVICE FAMILY. DI:FLP EQU 28 FLIST POINTER IN AU DI:FLN EQU 29 FLIST LENGTH IN SECTORS DI:ALO EQU 30 ALLOCATION TABLE SECTOR ADDR DI:BPA EQU 32 BYTES PER AU DI:APD EQU 31  AU'S PER DISK DI:SBF EQU 33 SECTORS PER BUFFER DI:SAU EQU 34 DI:BIT EQU 35 BIT # DI:CUR EQU 36 CURRENT COUNT DI:REQ EQU 37 REQUESTED NUMBER OF AUS DI:FND EQU 38  NUMBER FOUND DI:FAU EQU 39 FOUND AU START * * DEVICE INFORMATION BLOCK FOR MINI-FLOPPY * DI:BMW EQU 21 DI:INT EQU 40 DI:SCT EQU 41 DI:SEC EQU 42 * * DEVICE INFORMATION BLOCK FOR 5-1/4" WINCHESTERS * DI:SPW EQU 41   STEP PULSE WIDTH, STEP PERIOD DI:RWC EQU 42 REDUCED WRITE CURRENT CYLINDER, OVERLAP SEEK * * DEVICE INFORMATION BLOCK FOR MAGTAPE * DI:BLKCT EQU 16 BLOCK COUNT DI:SERV EQU 17 ADDRESS OF MAGTAPE SERVICE ROUTINES DI:BMR EQU 20 BRANCH/MODE WORD REWIND DI:OMW EQU 21 ORIGINAL MODE WORD DI:MASK EQU 24 ERROR MASK DI:FLAG EQU 25 ERROR FLAGS DI:THWS  EQU 26 TEMPORARY H/W STATUS * * DEVICE INFORMATION BLOCK FOR STREAMER TAPE * DI:BMRW EQU 18 BRANCH ADDR FOR READ/WRITE DI:BMPF EQU 19 BRANCH ADDR FOR POSITION/FUNCTION DI:IPS EQU 20 DRIVE SPEED - INCHES PER SECOND TITL * DEVICE INFORMATION BLOCK FOR ASYNCH MUX * DI:FIO EQU 18 ADDRESS OF FORMATTED I/O ROUTINE DI:CNFG EQU 19 ADDRESS OF CONFIGURATION ROUTINE * * FLAGWORD BITS FOR ASYNCH MUX DIB * DIF:DC EQU 3 SET FOR DYNAMIC CONFIGURATION DIF:FA EQU 4 SET IF FA: HANDLER LOADED * * DEVICE INFORMATION BLOCK FOR BISYNC PICO * DI:DVS EQU 16 DEVICE STATE WORD DI:OPT EQU 17  OPTION TABLE DI:SID EQU 29 STATION IDENTIFIER TITL CIB EQUATES * CONTROLLER INFORMATION BLOCK (CIB) * CI:PER EQU 0 PEER POINTER CI:FLG EQU 1 CIB FLAGWORD CI:MST EQU 2 MASTER LINK CI:DIB EQU 3 SUBORDINATE LINK (DIB LIST HEAD) CI:PRI EQU 4 REQUEST PRIORITY CI:DA EQU 5 DEVICE ADDRESS CI:IV EQU 6 DEVICE INTERRUPT VECTOR LOCATION CI:RD EQU 8 ENTRY POINT TO READ CI:WRT EQU 9 ENTRY POINT TO WRITE CI:POS EQU 10 ENTRY POINT TO POSITION CI:FUN EQU 11 ENTRY POINT TO FUNCTION CI:EOB EQU 12 12-15 EOB SEQUENCE * JST R:SA12 USE SYSTEM STACK * COPY TIB,Y TIB ADDR OBVIOUSLY * JMP *$+1 * DATA I:EOB EOB ADDR CI:T1 EQU 16  TEMP CI:T2 EQU 17 TEMP CI:APR EQU 18 SAVEED PRIORITY OF ACTIVITY USING CIB CI:TIB EQU 19  TIB ADDR CI:USM EQU 20 CONTROLLER USAGE SEMAPHORE CI:TIM EQU 21 WATCH DOG TIMER CALCULATED INTERVAL CI:CSM EQU 22 COMPLETION SEMAPHORE CI:CFL EQU 23 COMPLETION FLAG * * CIB  FLAGWORD * CIF:PU EQU 14 POWER UP OCCURED CIF:TO EQU 13 TIME OUT CAUSED COMPLETION CIF:OO EQU  12 OVERLAPPED OPERATIONS CIF:EIO EQU 11 EIO/DIO FLAG (1=EIO, 0=DIO) (F400) TITL * CONTROLLER INFORMATION BLOCK FOR DISK * CI:RAT EQU 24 RATE ERROR RETRY COUNT CI:HRD EQU 25 HARD ERROR RETRY COUNTER CI:OPC EQU 27 OP CODE CI:DCB EQU CI:OPC START OF DISK CONTROL BLOCK CI:UNT EQU 28 UNIT CI:CYL EQU 29 CYLINDER CI:SEK EQU 30 RELATIVE SEEK COUNT CI:SEC EQU 31  SECTOR CI:CNT EQU 32 WORD COUNT CI:BUF EQU 33 BUFFER ADDR CI:IEA EQU 34  INTERUPT ENABLE & ADDR * * CONTROLLER INFORMATION BLOCK FOR HIGH CAPACITY DISK * CI:IOB EQU 35 NEXT IOB ADDR CI:WP EQU 36 WORDS PROCESSED CI:CST EQU 37 CONTROLLER SATTUS CI:DST EQU 38   DRIVE STATUS CI:DIV EQU 39 INTERUPT VECTOR, JSK CI:EOB CI:SSA EQU 40 SEEK COMPLETE SEMAPHORE ADDR TITL * CONTROLLER INFORMATION BLOCK FOR FLOPPY * CI:FWP EQU 35 WORDS PROCESSED CI:FST EQU 36  STATUS CI:FIV EQU 37 INTERUPT VECTOR CI:FT1 EQU 38 TEMP CI:EIV EQU 39 ERROR INTERUPT VECTOR * * CONTROLLER INFORMATION BLOCK FOR MINI-FLOPPY * CI:CLK EQU 27 * * CONTROLLER INFORMATION BLOCK FOR MAGTAPE * CI:RTY EQU 24 RATE ERROR RETRY COUNT CI:WCNT EQU 26 WAIT RETRY COUNT CI:TIC EQU 27 WAIT TIMER VALUE CI:MODE EQU 28 LAST PICO MODE WORD * * CONTROLLER INFORMATION BLOCK FOR ASYNCH MUX * CI:OPT EQU 24 ADDRESS OF CHANNEL OPTION TABLE OP:SCT EQU 2 OFFSET OF SPEC CHAR TABLE IN CIB EXTENSION * * CONTROLLER INFORMATION FOR SCOUT MULTI-CHANNEL SERIAL * CI:EOB2 EQU 24 2ND PART IN EOB ROUTINE TITL TIB EQUATES * TEMPORARY INPUT BLOCK (TIB) - USER'S STACK * TI:IOB EQU 0 IOB ADDRESS TI:FCB EQU 1 FCB ADDR TI:DIB EQU 2 DIB ADDRESS TI:CIB EQU 3 CIB ADDRESS TI:BCT EQU 4 REQUESTED BYTE COUNT TI:BUF EQU 5 BUFFER ADDRESS TI:FC EQU 6 FUNCTION CODE TI:SOF EQU 7 SOFTWARE STATUS TI:PRI EQU 13 TEMPOARY SAVE FOR ACTIVITIES PRIORITY. * * TIB ON ENTRY TO HANDLERS * TI:CRI EQU 12 ADDR OF CURRENT RECORD INDEX * *  TIB FOR DIO * TI:TIM EQU 8 WATCHDOG TIMER VAQLUE TI:ACT EQU 9 ACTUAL BYTE COUNT TI:BMW EQU 10 BRANCH/MODE WORD TI:IBF EQU 11 INTERMEDIATE BUFFER ADDR * * TIB FOR SCOUT MULTI-CHANNEL SERIAL IO HANDLER * TI:CMD EQU 10 COMMAND CONTROL WORD TI:IV EQU 19 RECEIVE/TRANSMIT INTERRUPT VECTOR LOCATION TI:CHR  EQU 20 NEGATIVE COUNT SPECIAL CHARS. TI:SAVE1 EQU 21 TEMPORARY STORAGE TI:SAVE2 EQU 22 " " " " " " * * TIB FOR DISKS * *TI:TIM EQU 8 WATCHDOG TIMER VAQLUE TI:SEC EQU 9 SECTOR NUMBER TI:TRK EQU 10  TRACK NUMBER (HEAD NUMBER) TI:CYL EQU 11 CYLINDER NUMBER * * TIB FOR MAGTAPES * TI:FCSS EQU 21 FILE MANAGER FUNCTION CODE SAVE TI:BCSS EQU 22 BLOCK COUNT SAVE * * TIB FOR ASYNCH MUX * TI:UTL EQU TI:CRI UTILITY PARAMETER TI:OPT EQU 18 ADDR OF OPTION TABLE GOES HERE TI:SCT EQU 19 ADDR OF SPECIAL CHAR TABLE GOES HERE TI:GCB EQU 20 FLAG SET IF CIB OCCUPIED TI:KSAVE EQU 21 SAVE K REG HERE ON ENTRY TI:SYSTM EQU 22 NON-ZERO TO ALLOW TIMOUT * * TIB FOR BISYNC PICO * TI:IST EQU 10 DEVICE STATUS (FROM INTERRUPT ROUTINE) TI:FLG EQU 18 FLAG FOR NON-BCB OPERATION TI:BCB EQU 19 ADDRESS OF BCB CURRENTLY BEING PROCESSED TI:CAF EQU 20 COMPARE ADDRESS FLAG ON READ TI:PFE EQU 21 FLAG FOR POWER FAIL TERMINATION TI:STT EQU 22 STATUS RETURNED FOR BCB CHAIN * *  TIB ON RETURN FROM HANDLERS * *TI:ACT EQU 9 ACTUAL BYTE COUNT TI:HWS EQU 10 HARDWARE STATUS (TWO WORDS) TI:HW2 EQU 11 HARDWARE STATUS WORD 2 * * TIB EQUATES * TI:T1 EQU 14 TEMP CELL TI:T 2 EQU 15 TEMP CELL TI:T3 EQU 16 TEMP CELL TI:T4 EQU 17 TEMP CELL TI:QUO EQU  18 RELATIVE AU TI:TVW EQU TI:QUO TV WAIT COUNT TI:REM EQU 19 REMIANDER OF SECTOR OR AU CALCULATION TI:RAU EQU 20 EXTENT RELATIVE AU BASE TI:PAU EQU 21 EXTENT PHYSICAL AU BASE TI:NAU EQU 22 NUMBER OF AUS IN EXTENT TI:FP1 EQU 23 WORKING FILE POINTER TI:FP2 EQU 24 WORKING FILE POINTER TI:WRQ EQU 25 WORKING REQUEST COUNT TI:PL EQU TI:WRQ PARAMETER LIST ADDR TI:WAC EQU 26 WORKING ACTUAL COUNT TI:FNO EQU  TI:WAC FNO TI:WSF EQU 27 WOKING SOFTWARE STATUS TI:UBX EQU 28 USERS BUFFER INDEX TI:CAU EQU 29  CURRENT AU TI:CNX EQU 30 CURRENT INDEX TI:T5 EQU 31 TEMP CELL TI:T6 EQU 32 TEMP CELL TI:FCS EQU 33 FUNCTION CODE SAVE TI:BCS EQU 34 BYTE COUNT SAVE TI:BUS EQU 35 BUFFER ADDR SAVE TIBLN: EQU 36 TIB LENGTH TITL DIO DEVICE EQUATES * DISTRIBUTED I/O * IODAD: SET :F  IOD ADDRESS (MAY ONLY BE :C,:D,:E OR :F) IODIB: SET :C0 IOD INTERRUPT ADDRESS BASE * CRCN: SET 0 CARD READER CHANNEL NUMBER CRDA: SET IODAD:%3+CRCN:%1 . DEVICE ADDRESS CRIA: SET CRCN:%3+IODIB: . INTERRUPT ADDRESS * MTCN: SET 1 MAGNETIC TAPE CONTROLLER CHANNEL NUMBER MTDA:  SET IODAD:%3+MTCN:%1 . DEVICE ADDRESS MTIA: SET MTCN:%3+IODIB: . INTERRUPT ADDRESS * TVCN: SET 2 CRT CHANNEL NUMBER TVDA: SET IODAD:%3+TVCN:%1 . DEVICE ADDRESS TVIA: SET TVCN:%3+IODIB: . INTERRUPT ADDRESS * IECN: SET 3 IEEE INTELLIGENT CABLE CHANNEL NUMBER IEDA: SET IODAD:%3+IECN:%1 . DEVICE ADDRESS IEIA: SET IECN:%3+IODIB: .  INTERRUPT ADDRESS * TYCN: SET 4 TELETYPEWRITER CHANNEL NUMBER TYDA: SET IODAD:%3+TYCN:%1 . DEVICE ADDRESS TYIA: SET TYCN:%3+IODIB: . INTERRUPT ADDRESS * PRCN:  SET 5 HIGH SPEED PAPER TAPE READER CHANNEL NUMBER PRDA: SET IODAD:%3+PRCN:%1 . DEVICE ADDRESS PRIA: SET PRCN:%3+IODIB: . INTERRUPT ADDRESS * PPCN: SET 6 HIGH SPEED PAPER TAPE PUNCH CHANNEL NUMBER PPDA: SET IODAD:%3+PPCN:%1 . DEVICE ADDRESS PPIA: SET PPCN:%3+IODIB: .  INTERRUPT ADDRESS * LPCN: SET 7 LINE PRINTER CHANNEL NUMBER LPDA: SET IODAD:%3+LPCN:%1 . DEVICE ADDRESS LPIA: SET LPCN:%3+IODIB: . INTERRUPT ADDRESS TITL NON-DIO DEVICE EQUATES * NON-DIO * DFCN: SET :11 DFDA: SET DFCN:%3 DISK, STANDARD FLOPPY * DFQDA: SET DFDA: DISK, QUAD FLOPPY * DMCN: SET :14 DMDA: SET DMCN:%3 DISK, MEDIUM CAPACITY * DHCN: SET :15 DHDA: SET DHCN:%3 DISK, HIGH CAPACITY SWDA: SET DHCN:%3 DISK, SHUGART WINCHESTER QWDA: SET DHCN:%3 DISK, QUANTUM WINCHESTER PHDA: SET DHCN:%3   DISK, PHOENIX * DSDA: SET :30 DISK, SCOUT DSIA: SET :C8 INTERRUPT VECTOR ADDRESS (SAME AS MT) DSMOD: SET  :8407 IBM FORMAT, 8", SINGLE DENSITY MAX:SPT SET 26 MAXIMUM SECTORS ON A TRACK = 26 FGAP: SET 26 26 BYTE GAP3 (BETWEEN DATA AND NEXT HEADER) FGAP2: SET 54 54 BYTE GAP3 FOR DOUBLE DENSITY * DPDA: SET 6 DEFAULT PICO-FLOPPY CHANNEL IS 6 * ETIODAD: SET :F CHANNEL NO. FOR IOD WITH EXTRA TV-S ETIODIB: SET :C0 INTERRUPT VECTOR BASE FOR THAT IOD MCSDA: SET :40 DEFAULT DEVICE ADDRESS FOR SCOUT MULTI-CHANNEL SERIAL * * THE INTERRUPT ADDRESS SPACE FOR THE SCOUT MCS WAS ALLOCATED * BELOW LOCATION :200 BECAUSE IT MUST ALSO FUNCTION IN CONJUNCTION * WITH THE SCOUT SPI BOARD WHICH INTERRUPTS TO THE SAME LOCATIONS * AS THE DIO. INTERRUPT VECTOR ADDRESS MUST BE BELOW 8K. * MCSIV: SET :180 DEFAULT INTERRUPT BASE ADDRESS TITL DIB & CIB GENERATION SUPPORT EQUATES & MACROS * * MISCELLANEOUS EQUATES * R:SA12 EQU :3F LF: EQU :A FF: EQU :C CR: EQU :D WIN:5IN EQU :12 DISPLACEMENT INTO LABEL'S TABLE FOR 5-1/4 WINCH * * EQUATES FOR DISK DEVICE FAMILIES. * FAM:DM EQU :1 PERTEC MEDIUM CAPACITY DISK DRIVES FAM:DH EQU :2 CDC STORAGE MODULE DISK DRIVES FAM:SWIN EQU :3 NM4 SHUGART WINCHESTER DISK DRIVES FAM:QWIN EQU :4 NM4 QUANTUM WINCHESTER DISK DRIVES FAM:PHWS EQU :5 CDC PHOENIX DISK WITH SPO OPTION FAM:PHNS EQU :6 CDC PHOENIX DISK WITHOUT SPO OPTION FAM:5WIN EQU :7 5-1/4" WINCHESTER DRIVES FAM:SWNS EQU :13 NM4 SHUGART WINCHESTER DISK DRIVES ON SCOUT FAM:QWNS EQU :14 NM4 QUANTUM WINCHESTER DISK DRIVES ON SCOUT FAM:SWI EQU :15 SCOUT WINCHESTER DRIVES FAM:HARD EQU :20 HARD DISK CEILING * FAM:DF EQU :20 STANDARD FLOPPY DRIVES FAM:DP EQU :21 MINI-FLOPPY DRIVES FAM:DFQ EQU :22 QUAD FLOPPY DRIVES * * FAM:DS EQU :40 SCOUT FLOPPY DRIVES * * BUILD A WORD OF BITS MACRO * BIT:WORD MACRO WORD MACLAB BIT:EQU MACENT EQU MACLAB BIT:SET MACENT SET MACLAB * BIT:SET SET 0 * BIT:LOOP MACENT NULL IFT #(1,?) BIT:SET SET 1//#(1)++BIT:SET BIT:LOOP #(2),#(3),#(4),#(5),#(6),#(7),#(8) ENDC IFF '##(0,1,1)'='N' #(-1) #(0) BIT:SET ENDC ENDM  TITL * MACRO FOR INTERRUPT SEQUENCE * INT:SEQ MACRO JST R:SA12 COPY =$-CI:EOB-1,X CIN ADDR  JMP *$+1 IFF #(1,?) EXTR I:EOB WORD I:EOB ENDC IFT #(1,?) EXTR #1 WORD #(1) ENDC ENDM * * STANDARD DIB MACRO * * SUPPORTS: TK00 TY00 TP00 TR00 TV00 * LP00 (81,57,LF:) CR00 PP00 PR00 * DF00 DF01 DF02 DF03 (ALL FLOPPIES ARE SINGLE DENSITY) * DM00 DM01 (BOTH ARE 5MB) * DM02 DM03 (BOTH ARE 10MB) * DH00 (40MB) * DH01 (80MB) * DH02 (150MB) * DH03 (300MB) * DIB:ST MACRO LOAD D:#(1) ENDM * * STANDARD CIB MACRO FOR DM0 AND DH0 * CIB:ST MACRO  LOAD C:#(1,1,3) ENDM TITL ** MACRO: TVDIBCIB * * USAGE: TO CREATE DIB'S AND CIB'S FOR OTHER CRT'S ADDED *  TO THE SYSTEM.... * * TVDIBCIB NAME,CHAN * TVDIBCIB NAME,BDAD,CHAN,VECT,CTRL * * NAME = DEVICE  NAME (4 CHARACTERS) * CHAN = CHANNEL NUMBER FOR THIS DEVICE * BDAD = BOARD ADDRESS (DEFAULT = :F) * VECT = BASE VECTOR FOR THE BOARD (DEFAULT = :C0) * CTRL = TV CONTROLLER ('EIO' FOR EIO, 'DIO' FOR DIO (DEFAULT)) *  (THIS PARAMETER IS NEEDED FOR THE CIB ONLY) * * EXAMPLE: TVDIBCIB TV01,3 * * THIS CREATES DIB & CIB FOR TV01 ON CHANNEL 3 * * TVDIBCIB TV02,:C,3,:80 * * THIS CREATES DIB & CIB FOR TV02 AT DEVICE ADDR :C6 * AND WITH A DATA VECTOR AT :98 (:80 + 3*8) * * TVDIBCIB TV00,:F,4,:1C0,EIO * * THIS CREATES A DIB & CIB FOR TV00 ON THE DATACASE * USING THE EIO BOARD. NOTE THAT INTERRUPTS ARE OFFSET * BY :100. ** SPACE 1 TVDIBCIB MACRO * * GENERATE DIB FOR THIS TERMINAL * DIB:TV #(1),#(2),#(3),#(4) * * GENERATE CIB FOR THIS TERMINAL * CIB:TV #(1),#(2),#(3),#(4),#(5) ENDM TITL SCOUT DIB CONFIGURING MACRO * * OPTIONAL CONFIGURATION MACRO FOR SCOUT FLOPPY DIB * OPT:DS MACRO DS DSMOD: SET DSMOD:&:7F++:8400 ONLY FIELD NOT REQUIRED IS 'GAP=' IFT #(1,'MINI') DSMOD: SET DSMOD:--:600 ENDC IFT #(2,'MINI') DSMOD: SET DSMOD:--:600 ENDC IFT #(3,'MINI') DSMOD: SET DSMOD:--:600 ENDC IFT #(4,'MINI') DSMOD: SET DSMOD:--:600 ENDC IFT #(1,'UNI') DSMOD: SET DSMOD:--:8000 ENDC IFT #(2,'UNI') DSMOD: SET DSMOD:--:8000 ENDC IFT #(3,'UNI') DSMOD: SET DSMOD:--:8000 ENDC IFT #(4,'UNI') DSMOD: SET  DSMOD:--:8000 ENDC IFT #(1,'GAP=') YYY: SET #(1,?) DSMOD: SET #(1,5,YYY:)--DSMOD:&:7F--DSMOD: ENDC IFT #(2,'GAP=') YYY: SET #(2,?) DSMOD: SET #(2,5,YYY:)--DSMOD:&:7F--DSMOD: ENDC IFT #(3,'GAP=') YYY: SET #(3,?) DSMOD: SET #(3,5,YYY:)--DSMOD:&:7F--DSMOD: ENDC IFT #(4,'GAP=') YYY: SET #(4,?) DSMOD: SET #(4,5,YYY:)--DSMOD:&:7F--DSMOD: ENDC IFT #(1,'REV') DSMOD: SET DSMOD:--:400 ENDC IFT #(2,'REV') DSMOD: SET DSMOD:--:400 ENDC IFT #(3,'REV') DSMOD: SET DSMOD:--:400 ENDC IFT #(4,'REV') DSMOD: SET DSMOD:--:400 ENDC ENDM TITL DISK DIB MACROS * * THIS IS THE GENERALIZED DIB:DK MACRO WHERE A STANDARD * FORMAT GIVEN BELOW CAN BE FOLLOWED TO SET UP A DIB FOR * ANY DEVICE. * * HOS/UNIT WORD - SINCE THERE ARE TWO VOLUMES PER UNIT (AS WITH * THE PERTEC DRIVES), IT IS NECESSARY TO SET THE UNIT BYTE *  TO "1" WHICH WILL CAUSE THE UNIT NUMBER DESIRED TO BE * SHIFTED 1 BIT TO THE RIGHT THUS OBTAINING THE ACTUAL * UNIT NUMBER. * * SPO OPTION - THE SPO OPTION IS AVAILABLE IF A USER DESIRES TO * AUTOLOAD FROM THE FIXED PLATTER. AS OPPOSED TO NON-SPO, * THE SPO OPTION SWITCHES WHICH DRIVE YOU ARE TALKING TO - *  IN OTHER WORDS, THE FIXED BECOMES THE REMOVABLE AND VICE * VERSA. TO OVERCOME THIS PROBLEM, THE TABLE BELOW IS USED * TO KEEP THE FIXED VOLUME AS DH00, DH02 ... & * TO KEEP THE REMOVABLE AS DH01, DH03 ... *   ALL THAT IS NEEDED IS TO TOGGLE THE VOLUME CONTROL BIT * OF THE HOS WORD. * * LOGICAL/PHYSICAL DEVICE  HOS(NO SPO) HOS(SPO) * ----------------------- ----------- -------- * 0 / 0  :10 0 * 1 / 0 0 :10 * 2 / 1 :10 0 * 3 / 1 0 :10 * ETC..... * * * FORMAT --- * * DIB:DK ,[,] * * -- TWO LETTER CODE FOR THE FAMILY TYPE * EG. DM,DH,DF,DS,DP * WHERE DH IS USED FOR PHNS,PHWS,QWIN,SWIN,QWNS,SWNS * DF IS USED FOR DFQ * * -- IS THE SPECIFIC FAMILY FOR THE DIB. THE LIST * OF ALL POSSIBLE FAMILY NAMES IS GIVEN ABOVE IN THE * EQU'S WHERE QWNS AND SWNS HAVE NOT BEEN AS YET * IMPLEMENTED AND ARE IN FOR FUTURE USE. * * -- ARGUMENTS 3 TO N CORRESPOND TO ARGUMENTS 2 TO * N-1 IN THE STANDARD CALLS (EG: DIB:DM, DIB:DH ...) * *  NOTE: WHEN CALLING THE DIB:DK MACRO FOR THE 5-1/4" WINCHESTERS, * THERE ARE 7 PARAMETERS: * * DIB:DK DHnn,5WIN,TPC,CPD,SPA,SPW-SP,RWCC-OS * * where: DHnn is the family type & unit * 5WIN is the family name * TPC is tracks per cylinder * CPD is cylinders per disk *  SPA is sectors per AU * SPW-SP is step pulse width, step period * RWCC-OS is reduced write current cyl, overlap seek * DIB:DK MACRO FAM: SET FAM:#(2) SET FAMILY TYPE. DIB: #(1),#(3),#(4),#(5),#(6),#(7) ENDM * DIBS FOR THE PME/PLU DISK CONTROLLERS, THE SCOUT AND * NM4 FLOPPY DISK CONTROLLERS, AND THE MINIFLOPPY * PICO. * DIB: MACRO DIB:DM MACENT DM *** DISK CARTRIDGE DRIVE DIB MACRO *** DIB:DH MACENT DH *** DISK PACK DRIVE DIB MACRO *** DIB:DF MACENT DF *** STANDARD FLOPPY DISK DIB MACRO *** DIB:DFQ MACENT DFQ *** QUAD FLOPPY DISK DIB MACRO *** DIB:DS MACENT DS *** SCOUT FLOPPY DISK DIB MACRO *** DIB:DP MACENT DP *** MINIFLOPPY PICO DIB MACRO *** LPOOL O: SET $ TABLE: REL SHARABLE TABLE: SYSTEM XXX: SET 1 (FIX THE BUG IN MACRO) YYY: SET 1 (DITTO) BMW: SET -1 UNIT: SET 0 SET THE UNIT TO 0, CHANGE LATER IF DM,PHWS,PHNS IFT #(0,?) FAM: SET FAM:#(0) SET FAMILY NAME IF NOT DIB:DK ENDC IFT FAM:=FAM:DS UNIT: SET '##(1,4,4)'-'0'&3 SET UNIT TO IF SCOUT ENDC HOS: SET 0 SET HOS TO 0, CHANGE LATER IF DM,PHWS,PHNS IFF  FAM:=FAM:DS BPS: SET 512 ALLL HARD DISKS ARE 512 BYTE SECTORS IFF FAM:=FAM:5WIN DON'T NEED MB INFO FOR THE 5-1/4" MB: SYMVAL #(2) MEGABYTES ENDC IFT FAM:=FAM:DM UNIT: SET 1  FOR MCDC, UNIT = SHIFT COUNT HOS: SET '##(1,4,4)'-'0'&1*2 SPT: SET 12 SECTORS PER TRACK TPC:  SET 2 TRACKS PER CYLINDER SPA: SET 1 SECTORS PER AU CPD: SET 203 CYLINDERS PER DISK, 5MB IFT MB:=10 CPD: SET 406 ENDC ENDC IFT FAM:=FAM:DH TPC: SET 5 SPT: SET 32 CPD: SET 823 SPA: SET 8 IFT MB:=40 CPD: SET 411 SPA: SET 4 ENDC IFT MB:=150 TPC: SET 19 CPD: SET 411 ENDC IFT MB:=300 SPA: SET 16 TPC: SET 19 ENDC ENDC IFT FAM:=FAM:SWIN TPC: SET 2 CPD: SET 256 SPT: SET 16 SPA: SET 1 IFT MB:=10 TPC: SET 4 ENDC ENDC * IFT FAM:=FAM:QWIN TPC: SET 2 CPD: SET 512 SPT: SET 16 SPA: SET MB:/10 IFT MB:=20 TPC: SET 4 ENDC IFT MB:=40 TPC: SET 8 ENDC ENDC * T1: SET FAM:=FAM:PHWS IFT FAM:=FAM:PHNS++T1: IFF #(2,?) MB: SET 16 DEFAULT PHOENIX DISK CAPACITY IN MB ENDC TPC: SET MB:/16 UNIT: SET 1 SET UNIT TO 1 FOR SHIFT IN MCDC CPD: SET  823 SPT: SET 32 SPA: SET 1 IFT MB:=48 SPA: SET 4 ENDC IFT MB:=80 SPA: SET  8 ENDC DN: SET #(1,4,4) T1: SET DN:/2*2=DN: IFT T1: HOS: SET :10 SET HOS TO :10 IF UNIT IS EVEN ENDC IFT FAM:=FAM:PHWS HOS: SET :10-HOS: TOGGLE HOS IF FAMILY IS PHWS ENDC ENDC * IFT FAM:=FAM:5WIN 5-1/4" WINCHESTER? SPT: SET 18 TPC: SET #(2) CPD: SET #(3) SPA: SET #(4) ENDC  ENDC * IFT FAM:=FAM:SWI TPC: SYMVAL #(2) CPD: SYMVAL #(3) IFF #(2,?) TPC: SET 4  ENDC IFF #(3,?) CPD: SET 300 ENDC SPT: SET 16 SPA: SET 1 ENDC T1: SET FAM:=FAM:DF IFT FAM:=FAM:DFQ++T1: IFT FAM:=FAM:DFQ BPS: SET 256 ENDC  IFT FAM:=FAM:DF BPS: SET 128 ENDC SPT: SET 26 CPD: SET BPS:/128*77 SPA: SET 512/BPS: TPC: SET 1 ENDC IFT FAM:=FAM:DP BPS: SET 128 SPT: SET 16 CPD: SET 35 SPA: SET 4 TPC: SET 1 BMW: SET :200 ENDC IFT FAM:=FAM:DS BMW: SET DSMOD:++:1900 TPC: SET 1 BPS: SET 128 SD SECTOR SIZE DEFAULT = 128 BYTES XXX: SET #(2,?) YYY: SET #(3,?) CPD: SET  77 8 IN. DISKS USUALLY HAVE 77 TRACKS SPT: SET 5208-73 IFT BMW:&:200 IS IT A 5 1/4 IN. DRIVE? SPT:  SET 3125-67 BIT TIMES PER TRACK (LESS HEADER) CPD: SET 35 DEFAULT IS 35 TRACKS PER DISK ENDC  IFT #(2,?)>0 BPS: SYMVAL #(2) IFT '##(2,XXX:,XXX:)'='D' BMW: SET BMW:+:80 SET DOUBLE DENSITY FLAG IFT XXX:=1 BPS: SET 256 DD SECTOR SIZE DEFAULT = 256 BYTES ENDC ENDC ENDC IFT #(3,?) IFF '##(3,1,1)'='*' CPD: SYMVAL #(3) ENDC XXX: SET #(3,?)-1 IFT '##(3,XXX:,YYY:)'='*2' TPC: SET 2 XXX: SET #(3,?)-2 IFT XXX:>0 CPD: SYMVAL #(3,1,XXX:)  ENDC ENDC ENDC XXX: SET BPS:+33+FGAP: SPT: SET SPT:-33 SECTORS PER TRACK LESS ONE SECTOR O/H   IFT BMW:&:80 XXX: SET BPS:+61+FGAP2: BYTE TIMES PER SECTOR SPT: SET SPT:+SPT:+5 (61 NOT 66 OVERHEAD BYTES) ENDC SPT: SET SPT:-BPS: DATA IN THAT FIRST SECTOR SPT: SET SPT:*97/100 ALLOW 3% SPEED VARIATION SPT: SET SPT:/XXX:+1 NUMBER OF SECTORS PER TRACK IFT SPT:>MAX:SPT SPT: SET MAX:SPT ENDC SPA: SET 512/BPS: IFT SPA:=0 SPA: SET 1 ENDC ENDC APD: SET SPT:*TPC:*CPD:/SPA: AU'S PER DISK IFT APD:>:7FFF NOTE E,'TOO MANY AU'S - MUST BE <= 32,767 (:7FFF)' ENDC  NAM D:#(1) D:#(1) CHAN #(1,1,2): WORD 0 DI:FLG WORD C:#(1,1,3) DI:CIB HEAD Z:#(1)  DI:FCB BYTE '##(1)' DI:NAM WORD 0 DI:DN WORD 0 DI:DS SPB: SET -9 WBT: SET 1*8 T1: SET FAM:=FAM:DS T1: SET FAM:=FAM:DF++T1: T1: SET FAM:=FAM:DFQ++T1: IFT FAM:=FAM:DP++T1: SPB: SET -6 WBT: SET 2*8 ENDC T1: SET FAM:=FAM:SWIN T1: SET FAM:=FAM:QWIN++T1: T1: SET FAM:=FAM:SWI++T1: IFT FAM:=FAM:5WIN++T1: WBT: SET 7*8 IFT FAM:=FAM:SWI SPB: SET -1  ENDC ENDC WORD SPB: DI:SPB WORD WBT: DI:WBT BIT:WORD FA:,FB:,FS:,DA:,DB:,UF: BIT:WORD FS:,DA:,DB:,UF: BIT:WORD BIT:WORD OP:,CL: RES 2,0 WORD BPS: DI:BPS XXX: SYMVAL SEC:TRK USER SPECIFIED SECTORS/TRACK? IFT XXX: WORD SEC:TRK DI:SPT ENDC IFF XXX: WORD SPT: DI:SPT ENDC WORD TPC: DI:TPC WORD CPD: DI:CPD  WORD SPA: DI:SPA WORD BMW: DI:BMW IFT FAM:=FAM:SWI BYTE 1,10  DI:TRY ENDC IFF FAM:=FAM:SWI BYTE 3,10 DI:TRY ENDC WORD 1  DI:VTS WORD 1 DI:ATS BYTE UNIT:,HOS: DI:HOS -- UNIT AND HEAD OFFSET WORD 0  WORD FAM: DI:FAM -- DEVICE FAMILY WORD APD:/2 DI:FLP WORD CPD: DI:FLN  WORD APD:/2+CPD: POINTER TO FREE AU MAP WORD APD: DI:APD WORD BPS:*SPA: DI:BPA  IFT BPS:>256 FOR LARGE SECTOR DISKS, BUFFER=SECTOR WORD 1 DI:SBF ENDC IFF BPS:>256 FOR SMALL SECTOR DISKS, BUFFER=512 BYTES WORD 512/BPS: DI:SBF ENDC RES 6,0 DI:SAU - DI:FAU IFT FAM:=FAM:DS IFF DSMOD:&:200 IF A STANDARD FLOPPY DRIVE XXX: SET :AF24 IFT #(4,?) XXX: SET #(4)--:F+1%12--XXX:&:F000--XXX: ENDC IFT #(5,?) XXX: SET #(5)+1&:FE--XXX:&:FF--XXX: ENDC IFT #(6,?) XXX: SET #(6)+15%4--XXX:&:0F00--XXX: ENDC  ENDC IFT DSMOD:&:200 IF A MINI-FLOPPY XXX: SET :2F18 IFT #(4,?) XXX: SET #(4)+1/2--:F+1%12--XXX:&:F000--XXX: ENDC IFT #(5,?) XXX: SET #(5)+3/2&:FE--XXX:&:FF--XXX: ENDC IFT  #(6,?) XXX: SET #(6)+31%3--XXX:&:0F00--XXX: ENDC ENDC WORD XXX: DI:INT INTERVAL TIMER SPECS. ENDC IFT FAM:=FAM:DP MINI-FLOPPY? WORD -1 DI:INT (WORD 40) WORD 0  DI:SCT (WORD 41) WORD 0 DI:SEC (WORD 42) ENDC * IFT FAM:=FAM:5WIN 5-1/4" WINCHESTER? WORD 0 USED BY SCOUT (WORD 40) WORD #(5) DI:SPW (STEP PULSE WIDTH - WORD 41) WORD #(6) DI:RWC (REDUCED WRITE CURRENT CYL - WORD 42) ENDC * ORG O: ENDM TITL DISK CIB MACROS *  MINIFLOPPY CIB MACRO (REFORMATTER) * CIB:DP MACRO IFT #(?)>1 CIB:DP: DP00,#(1)%3+#(2)%1 ENDC  IFF #(?)>1 CIB:DP: DP00 ENDC ENDM * * THIS IS THE GENERALIZED CIB MACRO FOR ALL BUT THE MINIFLOPPY * PICO. IT HAS THE FOLLOWING FORMAT: * * CIB:DK ,[,,] * *  -- DM,DH,DS,DF,DP * WHERE DH IS USED FOR: QWIN,SWIN,PHWS,PHNS *  DF IS USED FOR: DFQ * * -- SET TO 00. * * -- FAMILY NAME (SEE DIB:DK FOR LIST). * *  -- DEVICE ADDRESS (USES DEFAULT IF NOT SPECIFIED). * * -- INTERRUPT ADDRESS (APPLICABLE TO SCOUT AND MINI ONLY) * (USES DEFAULT IF NOT SPECIFIED). * CIB:DK MACRO FAM: SET FAM:#(2) CIB: #(1),#(3),#(4),#(2) ENDM CIB: MACRO DK CIB:DM MACENT DM CIB:DH MACENT DH CIB:DS MACENT DS CIB:DF MACENT DF CIB:DFQ MACENT DFQ CIB:DP: MACENT DP IFF #(0,'DK') FAM: SET FAM:#(0) SET FAM: IF NOT CIB:DK ENDC LPOOL O: SET $ TABLE: REL SHARABLE TABLE: SYSTEM NAM C:#(1,1,3) C:#(1,1,3) CHAN CIB: CI:PER DEVAD: SYMVAL #(2) IFF #(2,?) IFT #(4,?) DEVAD: SET #(4,1,2)DA: SET DEVAD: IF FAMILY NAME GIVEN ENDC IFF #(4,?) DEVAD: SET #(0,1,2)DA: SET DEVAD: IF FAMILY NAME NOT GIVEN (NOT CIB:DK). ENDC ENDC IFT DEVAD:<:20 T1: SET FAM:=FAM:DS IFF FAM:=FAM:DP++T1: DEVAD: SET DEVAD:%3 ENDC IFT FAM:=FAM:DP DEVAD: SET ETIODAD:%3+DEVAD:%1 ENDC  ENDC IFT FAM:=FAM:DS IFT DEVAD:&3>0 NOTE E,'ILLEGAL DEVICE ADDRES - BITS 0 & 1 MUST BE OFF'  ENDC ENDC WORD 0 CI:FLG - FLAG WORD HEAD CIB: CI:MST - MASTER CIB LINK HEAD #(1,1,2): CI:DIB WORD :7600 CI:PRI WORD DEVAD: IFT FAM:<:20 CHECK IF HARD DISK EXTR DK:RD,DK:WRT,DK:FUN WORD 0,0,DK:RD,DK:WRT,0,DK:FUN ENDC T1: SET FAM:=FAM:DFQ  CHECK IF DF OR DFQ IFT FAM:=FAM:DF++T1: " " EXTR DF:RD,DF:WRT,DF:FUN WORD 0,0,DF:RD,DF:WRT,0,DF:FUN ENDC IFT FAM:=FAM:DP EXTR DP:RD,DP:WRT,DP:FUN XXX: SYMVAL #(3) IFF  #(3,?) XXX: SET DEVAD:&:E%2+ETIODIB: ENDC WORD XXX:,0,DP:RD,DP:WRT,0,DP:FUN ENDC IFF FAM:=FAM:DS INT:SEQ I:EOB ENDC IFT FAM:=FAM:DS EXTR UF:RD,UF:WRT,UF:FUN XXX:  SYMVAL #(3) IFF #(3,?) XXX: SET DSIA: CI:IV ENDC WORD XXX:,0,UF:RD,UF:WRT,0,UF:FUN DSMOD: SET :8407 RESTORE DEFAULT VALUE TO DSMOD INT:SEQ UF:EOB ENDC RES 4,0 WORD 1 CI:USM WORD 0,0,0,0,0,0 IFF FAM:=FAM:DP RES 6,0 T1: SET FAM:=FAM:DFQ IFF FAM:=FAM:DF++T1: WORD 0,C:#(1,1,3)+CI:DIV ENDC RES 4,0 IFT FAM:=FAM:DF++T1: JSK C:#(1,1,3)+CI:EOB WORD 0 ENDC JSK C:#(1,1,3)+CI:EOB ENDC  IFT FAM:=FAM:DP WORD -2 CI:CLK ENDC ORG O: ENDM TITL ASYNC MUX OPTIONS MACRO * MACRO TO CONDITIONALLY GENERATE A SYMBOLIC REFERENCE OR ZERO WORD * COND MACRO 0 COND1 MACENT 1 IFT #(2) IF CONDITION TRUE WORD #(1) GENERATE SYMBOLIC REFERENCE ENDC IFF #(0) IF ALTERNATE ENTRY, DON'T ASM IFF #(2) IF CONDITION FALSE WORD 0 GENERATE ZERO WORD ENDC ENDC ENDM * * USEFUL VALUES * DIF:DC EQU 3 BIT NUMBER FOR DYNAMIC CONFIGURATION DIF:FA EQU 4 BIT NUMBER TO SELECT FA: HANDLER DIF:AB EQU 7 BIT NUMBER TO REQUEST AUTO-BAUDING OPT:DC EQU 1%DIF:DC SET THE BIT OPT:FA EQU 1%DIF:FA SET THE BIT OPT:FC EQU 1%DIF:FC SET THE BIT FOR FORM CONTROL OPT:AB EQU 1%DIF:AB SET THE BIT * * BAUD RATE VALUES * BD:50 EQU 0 BD:75 EQU 1 BD:110 EQU 2 BD:135 EQU 3 BD:150 EQU 4 BD:300 EQU 5 BD:600 EQU 6 BD:1200 EQU 7 BD:1800 EQU 8 BD:2000 EQU 9 BD:2400 EQU :A BD:3600 EQU :B BD:4800 EQU :C BD:7200 EQU :D BD:9600 EQU :E BD:19200 EQU :F TITL ASYNCH MUX DIB MACRO * * THIS MACRO GENERATES A DIB FOR AN ASYNC MUX CHANNEL * * THE CALLING SEQUENCE IS * * 0 1 2 3 4 5 6 7 8 * D:AC CCDD[,OPTS,DEV,EDT,LPOPTS] * * WHERE 'CCDD' IS THE 4 CHAR IDENTIFIER TO FORM DIB ENTRY * POINT NAME 'D:CCDD'. * A REFERENCE TO CIB NAME 'C:CCDD' WILL BE GENERATED. * THE OPTIONAL 'OPTS' FIELD MAY CONTAIN THE OPTION SPECIFIERS: * * OPT:DC MEANING, DYNAMICALLY CONFIGURE AT FIRST OPEN * OPT:FA MEANING, LOAD FA: HANDLER * OPT:AB MEANING, REQUEST AUTO-BAUDING DURING CONFIG * OPT:FC MEANING, 1ST CHAR IS FORM CONTROL * * IF MORE THAN ONE OPTION IS TO BE SPECIFIED, THE OPTIONS ARE SEPARATED * BY PLUS (+) SIGNS. * AUTO-BAUDING IS EFFECTIVE AT THE FIRST OPEN ONLY IF DYNAMIC CON- * FIGURATION IS ALSO SPECIFIED. * * THE OPTIONAL 'DEV' FIELD MAY CONTAIN THE FOLLOWING ASYNC MUX * CHANNEL DEVICES: * * TV MEANING CHANNEL IS FOR STANDARD TV USE * LP MEANING CHANNEL IS FOR STANDARD LP USE * NULL MEANING CHANNEL IS GENERAL PURPOSE * * THE OPTIONAL 'EDT' FIELD CONTAINS A HEX REPRESENTATION OF THE * EDIT CHARACTER. THE STANDARD DEFAULT IS ':08'. * * THE OPTIONAL 'LPOPTS' FIELD IS SIGNIFICANT ONLY IF THE 'DEV' FIELD IS * 'LP'. IN THIS CASE THE PARAMETERS IN THIS FIELD HAVE THE SAME FUNCTIONS * AS PARAMETERS 2 IN THE DIB:LP MACRO. * * NON-STANDARD DEVICES CAN BE INTERFACED USING THE GENERAL PURPOSE 'DEV' * OPTION APPROPRIATELY PATCHED USING THE PATCH MACRO. * ******************************************************************** * * THERE IS ALSO AN ENTRY POINT FOR DIB:TV AND DIB:LP. * THEIR CORRESPONDING FORMATS ARE: * * DIB:TV TVnn[,address],cn[,int a] * * WHERE: TVnn is the name of any device used in this DIB * (e.g. TV00, TV01...) * * address is the device address; default is :F (shifted * with channel number :C6) * * cn is the channel number for this device * * inta is the interrupt vector address specified by the *  board switch; default is :C0 * * * DIB:LP LPnn[,cpl][,lpp][,LF:][,spb][,CIB:] * * WHERE: LPnn is the device name (e.g. LP00, LP01) * * cpl is the number of characters per line printed by * the device plus 1 (format control); default is 81 * * lpp is the number of lines per page printed by the *  device; default is 57. * * LF: specifies that the printer does not have the * automatic line feed capability; default is * automatic line feed * * spb watchdog timer (shifts per byte). Defines the * number of positions the byte count needs to be * shifted in order to form the time in seconds for * watchdog timer calculations. Refer to Topic 7.2 *  for details. * * CIB: specififies that a non-standard CIB is needed. * If included, the standard CIB from IOSDIBCIB is * not used. An explicit call to CIB:LP is made from * OS4CONFIG.ASM. * D:AC MACRO AC DIB:TV MACENT TY DIB:LP MACENT LP LPOOL O: SET $ TABLE: REL SHARABLE TABLE: SYSTEM NAM D:#(1) ASYNC CHANNEL DIB ENTRY POINT NAME IFT #(0,'LP') D:#(1) CHAN D:#(1,1,3) ENDC IFF #(0,'LP') D:#(1) WORD 0 DI:PER PEER POINTER (NO PEERS) ENDC P2: SET 2 PARAMETER OFFSETS P3: SET 3 P4: SET 4 P5: SET 5 IFT #(0,'AC') P2: SET 5 P3: SET 6 P4: SET 7 P5: SET 8 IFT #(3,'TV') EXTR TYEOL:,TYTOF:,TYELI: ENDC EXTR AC:CNFG DYNAMIC CONFIGURATION ROUTINE ENTRY POINT EXTR AC:FIO FORMATTED I/O ROUTINE ENTRY POINT D:: SET 0 PREPARE FOR DEFAULT 'OPTS' FIELD IFT #(2,?) IF 'OPTS' FIELD EXISTS D:: SET #(2) EVALUATE OPTIONS ENDC WORD D:: ASSEMBLE FLAGWORD ENDC IFT #(0,'TY') EXTR TYEOL:,TYTOF:,TYELI: BIT:WORD DIF:NT,DIF:FC DI:FLG FLAGWORD ENDC * IFT #(0,'LP') BIT:WORD DIF:FC IFF #(6,?) IF STANDARD CIB, GENERATE EXTR EXTR C:#(1,1,3) ENDC ENDC * IFF #(0,'LP') WORD C:#(1) ENDC * IFT #(0,'LP') IFF #(6,?) WORD C:#(1,1,3) STANDARD CIB ENDC IFT #(6,?) WORD C:#(1) NON-STANDARD CIB ENDC ENDC * WORD 0 DI:FCB FCB ADDR (NOT USED) BYTE '##(1)' DI:NAM DEVICE NAME WORD 0 WORD 0 IFF #(0,'LP')++#(3,'LP') WORD 0 DI:SPB WATCHDOG SHIFTS/BYTE WORD -1 DI:WBT WATCHDOG BASE TIME (NO WATCHDOG) ENDC IFT #(0,'LP')++#(3,'LP') SPB:: SET -3 DEFAULT SHIFT COUNT IFT #(P5:,?) SHIFT COUNT SPECIFIED? SPB:: SET #(P5:) THEN USE IT! ENDC WORD SPB:: DI:SPB (SHIFTS/BIT) WORD 7*8 DI:WBT WATCHDOG BASE TIME ENDC * O:: SET $ IFT #(0,'AC') TRAILER OF ASYNC MUX DIB WORD -1,-1,0,-1 ALL READ, WRITE, FUNCTION ALLOWED RES 2,0 LAST TWO WORDS OF STANDARD DIB RES 2,0 FIRST TWO WORDS OF AMUX SPECIFIC DIB IFT D::&OPT:DC ASSEMBLE IF DYNAMIC CONFIG CALLED FOR COND AC:FIO,D::&OPT:FA REFERENCE FIO OR SPACER WORD AC:CNFG REFERENCE CONFI GURATOR ENDC IFF D::&OPT:DC ASSEMBLE IF NO CONFIGURATION COND1 AC:FIO,D::&OPT:FA REFERENCE FIO OR ASSEMBLE NOTHING WORD 0 ENDC ENDC ORG O:: IFT #(0,'TY')++#(3,'TV') BIT:WORD FA:,UF: READ BIT:WORD FA:,UF:,WP: WRITE BIT:WORD 0 POSITION BIT:WORD WF:,TF:,SC:,OP:,CL: FUNCTION RES 2,0 LAST TWO WORDS OF STANDARD DIB WORD 80 DI:CPL - CHARACTERS PER LINE WORD 0 DI:LPP - BOTTOM OF FORMS CT/LINES PER PAGE IFT #(0,'AC') ORG $+2 FIELDS ALREADY PLACED ENDC IFF #(0,'AC') WORD :1618 DI:BMW - BRANCH MODE WORD FOR INPUT WORD :1612 DI:BMO - BRANCH MODE WORD FOR OUTPUT ENDC WORD TYEOL: DI:EOL - POINTER TO EOL SEQUENCE WORD TYTOF: DI:TOF - POINTER TO TOF SEQUENCE WORD :2000 DI:ERM - ERROR MASK FOR STATUS WORD 0 DI:LC - LINE COUNTER IFT #(0,'AC') IFT #(4,?) IS THE 'EDT' CHAR SPECIFIED? WORD #(4) YES, THEN USE THE SPECIFIED CHAR ENDC IFF #(4,?) IS THE 'EDT' CHAR NOT SPEC'D WORD :08 DI:EDT - DEFAULT EDIT CHARACTER ENDC ENDC IFF #(0,'AC') WORD :08 DI:EDT - DEFAULT EDIT CHARACTER ENDC WORD TYELI: DI:ELI - ADDRESS OF EOL SEQUENCE ON INPUT WORD #(1)BF: DI:BUF - POINTER TO 2 WORD INTERNAL BUF WORD TYEOL: DI:PU - POINTER TO POWER UP SEQUENCE #(1)BF: RES 2,0 TWO WORD INTERNAL BUFFER ENDC IFT #(0,'LP')++#(3,'LP') WORD 0 NO READS BIT:WORD FA:,UF: WRITE FUNCTIONS ALLOWED WORD 0 NO POSITION FUNCTIONS ALLOWED BIT:WORD OP:,CL:,WF:,SC:,TF: ALLOWED OTHER FUNCTIONS LPP: SET 57 LINES/PAGE BOF: SET 3 BOTTOM OF FORMS COUNT (LINES) CPL: SET 81 DEFAULT LINE LENGTH IS 81 CHARS IFT #(P2:,?) CPL: SET #(P2:) ENDC IFT #(P3:,?) LPP: SET #(P3:) ENDC RES 2,0 LAST TWO WORD OF THE STANDARD DIB WORD CPL: DI:CPL - CHARACTERS PER LINE BYTE BOF:,LPP: DI:LPP - BOTTOM OF FORMS CT/LINES PER PAGE IFT #(0,'AC') ORG $+2 FIELDS ALREADY PLACED  ENDC IFF #(0,'AC') WORD 0 DI:BMW - BRANCH MODE WORD FOR INPUT WORD :1210 DI:BMO - BRANCH MODE WORD FOR OUTPUT ENDC IFT #(P4:,?) EXTR DPEOL: WORD DPEOL: ENDC IFF #(P4:,?) EXTR LPEOL: WORD LPEOL: ENDC EXTR LPTOF:,LPPUF: WORD LPTOF: WORD :3202OVicEdDano  }CuF1J@hM%z u}Chn t'yLhg i̡# A `Q T ( :Ԃ1 - :Ԃ" )   pP0 @0B բ` h }c= ¢‚pP0Oo X)C $ `)C ")PC ")C " `m X D B U G 4 E 8 0 0 ԟe } ԂzԾ P AC Q@ X= Y:սҾ K3 L0 S- D* C'՟K =ԟ{ }  ԟ| @)C ")PC ")C " `r" Ž *ڽӆ Y Q A T Gӽن R Ʀ M D V Wƚ›LBLCLFLLLSLJLILGLRLZ Ȟ8@ }ӆ{ӆu Ƃt P LƂj T P BƁ P ԂY T H Tƅ Ş|QEF , , ` 6 _ڞ?? } ` J B YK QJfׂ ^ޡ @ޟޝ `@E ;RA@EN@Aޏǎ Qފ ,^$A*Y o){ w_ D `nX*Qc Ѐ^Ѐ āY@AĄ܃S B `ȁ D*K_U2 `Ţ0* .( &r o{5 M쇅 `X v} T C I U N S A ›PQI哢_@"ӟƠ -LlQłބMb 5}⼢ x C “KQG`@" qQłއށj Iސސސސ޳޳ ,Ӟ  }I迋tbJK| W¨KQGa@"ӑƒ qQł‹Ljޖj Uȝ '} AAw r} { yxwt “KQGEMNb@"JK qQłEBDAށj \ NI “KQG)56c@"23 qQł-*,)ށj @ S- “KQG d@" qQłށj $ AK "Bƽ҃ܽ׽́CŁ / Xƃ ҽܞi Ϟ]ҁ@ۃׁܽBǢ ,ž[ + - * X /KJƎ^[{ xނZ ,Ɵ| ׽L ΁ P ҁ۽ܽ޺{ ӽq kɆȂGާ}ަyޠ}y E ~  .ԃ E ~  .ޣރfN ,ƽ׆s@FC kqLL (w{u ^|JQBZy L S TҞNM  Isžˆ_]]| IƎ> ,ƽƇ ,ƂpIưk , ,Htr Hm -Ɔׁ -Ɔ('\\ÂF -t҂ۃ՞x ’@"Fz@ Ό F ƍ l #.bƝޙޖJQ!’ފދJQŽ %Ԃ՞u U  B * ԂGo h fe "cIaM K Y&V&RR `QKL$kK N =ԂDD GԂA   :Ԟ ԟL ԟ{ y9u    :Ԃw @0ƵQ¾ˢ̂C C 96C C " z a ࢜0 `a ´C /6 C C 6 C C 6C h Q¾{”C "C C I6DÎA6TO6T6T  Gj6 F I Dҽhg Ԟx @9@@? R6A W ߍ?ÌˌJR>JKSB|ҝ s={ ӆvtrLDLELILRLWƖd ,ka ņyĆxÆw pQAlýkL=\L>L:|öbL<L=L^]\Q HǞ wqqno = < > :ba  ~dy C 1 =Ԃ C 2 =Ԃ C 3 =Ԃ M =ԃTܽҞH&ƽ׆ =FFEFCCE=:7&Ɠ5-Ɠ,&Ɠ$Q߇ƽ? lmEEEBE5E3--E2E1?ÌˌJR>JKSB|ҝ s={ ӆvtrLDLELILRLWƖd ,ka ņyĆxÆw pQAlýkL=\L>L:|öbL<L=L^]\Q HǞ wqqno = < > :ba  ~dy C 1 =Ԃ C 2 =Ԃ C 3 =Ԃ M =ԃTܽҞH&ƽ׆ =FFEFCCE=:7&Ɠ5-Ɠ,&OVicEdDano3z3O `IA # &D#'q$3\C @qW6TAM 6 6ɀFHXĆ `pEc # #u@ SOQKM ^*T`"i# # )# h*n?z)ҀGQ)F@ @G͢6ɢF@ @F@ @T# @I.#  SI =  SO =  LO = )+Xs)G#  MACRO (F510)  MACRO (F510) C @`PF`pDc # C @`PI)%C *V;LJU /GJ :QT .W MN[Z 9D'A @ ``pDc # N 10# C @`Pu_ c # p)rHC @³)" b%bfd1edaS٠`r "` ςSΠaS p c r )c #  ps zUFOV <CVC @]` ]_ p]Č)ҀG)`+a]āI`C ]C U`IB ]ăc # C @ _ ^D] c@ UD@k{`"`#]^c # C @^]_^c # C @`P]qa]` 0`I]C `C Ua]`٠] pă_ _]J]@cCSBI] `pDc # I 00H # IUǠ1FU 10H# `Pe@p ÀAKKrQ@  I?`%5`C+`I 5'³ 1A°@`)DB)@><1B O  "%'. # C @ bUbV)օ5CU Uc # +( h%BJXQlĤVS@6]@/6eRSX U+UGVG0N4H# II00 VI# 0Ir)Q  Ă0)C A# QIQdiA)" brF q H# bdI1ded@ q# eЀy D q # q{b;qex qs] M?RAC @`@K'@``pBC`HARJk%`(C @`(C @U ``p'BDBc # # C @`p ĄBࠁ1^RDĂ DIDc # @ DĂ@ ďS p_ GրXTOPQRKLMNT TrL,L)L(L=dIS ")SFY) b $O K QMrL())rL+^ GPORQLKNMT T3rJQWSˈqHd^FF@GA)Ҁ *.1[)  QJd€eÞ "D L“)<AVSAZ2*BXsST5OZXÀHFـr )2 b΀vÀtFΟ]XTQQAT KMX„Kr A)2 bsQrQw)8 bX+JQaހXK# @ B# @ KBM# @ # @ r # @ M)2 brr +LNO_$GA)2 btsQrQpwr*ߤB1X)2 bjrXxdX1B(JR+9 b[-3AO# @ XB# @ OBQ# @ # @ QrL,HL FL+DL)A)2 b5s# F) b) b¾ÄO K QM GS) " bSZ]JQY QW UYQ „\ \ ZrL()# 9Z1Z2<X2SISACV* JYAq bŸijSL=AQHR "a_Ϟ] YJCASZ# Z3SO bD WI# `"  # eP`pjP`ۢۄ 5 'HԠĀAHHF)IPX)IPTEPIPLIH)\IPD)QI@I<Ţp @)2 bsrQA CCCI )# h%sLOZ5zhyYZ4OCCISL.I))Χ _QADDVr +iNG 0 ĢDDr ,VAsBSMDEFINITIONS 40ERRORSONLY EXPANDMACROS0FALSECONDS @FIRSTONLY PFORMATSOURCE`IFSANDENDCS pLISTING ~"LISTOBJECT  LISTONPASS1 LISTSPACES MACRODEFS MACHINE  OBJECT PAGESIZE SAVE |XADDRESSING 410 410A0430 @430AP490 `490Ap404 404A495 MAC ASM`" JF KI jOkLEIDIC@`K EIPDI CFQ&`Y`DFF)J%'+J`H}# GSX?JUC @`_RDYQB^Q1E`pLc Mc MAC..<`"@@} L DJ+%'+DJHIC ` DĄID;H9C @XNX`PU,K KꕀO6AKJ[ -3A# qqqOsq%)\IWQҢu Sڢo6E "0I U[ўc )# VjSn SYDD)ҀG)E6B՞ b͂Є b  USAR P DE+DQEUU`p%Ec )# SǢDESEE+-E? πDDc )# @? wc )# %XXZ4QQFB ZO Sᢹ6E "0_U`D%'+D` ʟQI0LIğC @i` `(%'`( @1 pt)`pDc # # XhZ)@  Xׄۄ؄܄لaIȀd6I6I)@Qɞz)@eJQ)I)@eeL)@a)1!)@ wVV)@aĀXXNIII#  A)n +#J]  e )@1# _^# d/6C )@ s)Ä))@քڄdb b+ 1KVXāXLgsh f# 7ik@) 6FB(Ѐ(,4C @IX `+` 1YЁ@֨  @@mЁC@``pEB dc `+ `+ 1# yj# *HRd6ҀXXIQEȞIk@VZj# d6ҀX6XIIk@W[j# @I @ )@@I/@@œI )@I/# " ))) )) ))  $ **** GRAND-TOTALS **** ERRORS ( WARNINGS ( +})@edX@6,@6A,@6AX `Gt)@Y  # B Q۞ QXYX    )1Bʞ )1BŞ )1Lc #  `  W±   |dO6 Gt )1 )1,6XYXK #  )4&D$*-Eu""#  C @C AL "L &)@ VQNQ@I p @V1c # ] b    BLANK  0SEGMENTENDM +4 MACENT +G4 MACLAB +4 MACRO +<4MACRO +<4 XMACRO +<4 XMACRO +<4 &ABS > . ASMDATE @7 6 BYTE k7 > CHAN 5 F8COMMENT 4 N COMMON 4 V DOUBLE <; ^ DPOOL m? fEND 6 nENDC  4 vEQU A: ~ EXTR 4  FLOATINGF;  HEAD 5 IFF : IFT }: 0INCLUDE 4  INITY <  LINKDATE3O5  LOAD 4  LPOOL 86 MACHINE E>  M4D12 ?  NAM 6 0NOTE ?  OBJECT p6  OBJNOTE n6 OPTIONS G> 0ORG  > REL >  RES 7  ROMMABLE4 &0SAVE 4 .SET C: 6 SEXT 4 > SHARABLE4 F SNAM 6 N0SPACE ( VSYMATT W: ^SYMVAL Y: f SYSTEM < n TASK  4 v TASKEX 6 ~ TEMPLATE5 0TITL  4  WORD N 7SIGNAL & WAIT & ENTER &] SCNTX \5 FIELD  SFIELD  SEX &  NXTQUE & LCNTX \E DEQUEN &M DEQUE & ENQUEB &= ENQUEA & GENECC & MOVE &} COPYU \ ECC & SEARCH  &LOCATE = .INSERT ] 6DELETE } >ENT   FHLT   NNOP   VRSK #  ^UIS   fFIX R  nFLOAT R  vEXIT &m ~FMT  XNX   SAL pf PUSH C   POP c  SIN  AIB E AIN  AOB e AOT % SST  COMP  CSN  NEG  IN  OUT  SELP  STRAP  UTRAP  ROTATE  SHIFT  (CBIT  0RBIT  9SBIT  BTBIT  KJT  TJF  \JEQ  dJGE  lJGT  tJLE  |JLT  JNE  IJEQ  IJNE  JEQD  JNED  DMS Gg  DMSE Gg  IMSE GG _ JST E G' ? JMPE G  JSKE G ADDF G\ SUBF G\ MULF G\ DIVF G\CSKF G\ IMS JST JMP !JSK )CSM 1 CSME E: CSK C CSKB M CSKE D'?WADDC `SUBC C'?iANDE CrORE C'?{XORE CDIV MUL  ADDE C  SUBE C  CEA C AND  OR  XOR  ADD  &  SUB  &  ANDB  ORB  XORB  ADDB   SUBB  CLSN  `EXCH *EXCHB 3 EXCHE A <COPY F COPYB W COPYE @  AY s AX | AQ   P  L  K  S  Y  Q  X  A  V Hc66YQA6t@ltXXV# (Q"? YQ) 1k` lBIĆlB)1[Ćg* fg›hW8o•1”# # **"#(i##$&D@$I . '%'+U ' ` q rIlXX+U# &a&&D$kRI̞IWIVk ' H)T*5Q|Nƀl  ,Y yVĀkB V# + ' # ' # +# mH&)&"&D# "kQqWk# WWVXX dQkWGt# #$"k@L )1K6 l ky# kl&D("*#=#$Y ]k%5'ji `# &D$k  y 1Ck ,p y# &D# *$<' k HAml kWošo  , y GtXXk^# "1n#'q$&D# m9  ny 1df  ,yk@jj힄Al C W8o.q'“ XX# &D# *#"x#'q$^ VS)@` Ԟ lWXLX BA@A uvwj6X6Xe _^d6XXdX6@Xi6A¡)@BqJBf””l)@#  (&D$"#+%-#){$~'#i# `(BIdO6A )@A B@ B @d6A) GtA# &D"$A3 o BHG6 rYmWlo# lhmǀqfr IfY Œy# ("(q$#$gh}.  k@B BHqAlmA kJB@A XXmWloGtǀd6O6BB# ("&D$C `) -u `j6G)@ ` a)@ 傢# e # %'+# C @Iak@Œdec # &&)&"# &D"a#J$/  y )1\6 , ykq) 6“klo XX# &D# *#=*#G#$8   `^W # &D$(ETHIkdQAbWYQJl mq r o̢QC@ 4oQAÀGtDX=XWoo {k)@QBQ€@ $oGokQAbQ̄dv1A6I6I# +=-l# l# l l#  (q&)&""&D# $ U HҀr Ξp  G6U@6Zq1ŀloh3B f1΀lh@6 lqo kGo6Qp@6p@<@ loh B@ NG oW” GtXX.# "#"#$&)     I@IWk V  )1A)1A6kခWVlk@ LL   Le Ǟe €  Le WJeLlk   D6AVkJASGWWXXV  ,_ Gt V# G# &D**#=#"#$,X|X6`L E Wd@/6U@ ,tLELW @L z `#  $&)&""##@%))&D)'hDmAlC ,X@Xšf˜CLDA‘CClW# l# 'q&)#$"e k@),4j `ek@ @@j# &D$(*qAGtl*dd6AIoXY8XXlUQSIk@dj B3K)@ 䞇UFk@dj## ("$WM)) Go` b 6|"#"mPWlRC €WW# "<# mm4WL L L lNGWWU6֟ ֜ ֚ ֘U # LORORALR # "# m @ # 6B# # "m}U@6  WpqWW# c&Dk&"#"m>@6À` @6rM b6AW# @6ȀG G `s# n WW1WW9W `#  }#1Rm#Fj""U#[@6Π`,JQn W WW@6@ߢ6 , I`c@6Lc@6ÀW W# # TLLTEQLEGTNEGEHDSUUCSNNEEQNT Ylw&)&"&j# mU֘UW W# |"m# H@6@6J6# |C @ "I ,%'FL +U/phF`xc #  ,ws0(Q)"m# &)&"@6HJQ֠n cc# |"m# 'M 6M WJW# |lQpJQ# # R"Um"Jkp6/6@6AlCnDqErF# ""jj2WX X@ ֬XE©F  ¥ ¤DyW6ԀX6Q']" ?6Y /6/6l@@l-6EqQd@6A /6ErLLL prqnc # #"#." qG6O)5OkojJQ9MRBq3 q# #C @QDJ+z)`pDc #  +!j\!a-![+!k-!p*!u/!z//!%!**!D&!D++!G;!G--!E<!>!=!<=!=<!>=!=>!<>!oC @@@鞄C6B p܆c # ko Gj# KQ[ko)5jDCȞ *3+ bjVŒLL6B# L)orQPCQViKko)5fd VG1EG0/Ȟp6T `+oЀml$ G K ďjj# #8ml# ml# QPQPQP @IQPLL# hi# cd# $^_# YZ# mQ# mlP# l#  !!""2"[\L)oǀQP՞@B 1Q 1I @ Ğ& lm1A # P3B !II5# N#  N # BqKKQP@IIIMMIԂQAIlIm#  !(!! |"!G6# @I T wy6Dn6Cu# jr# #"wAăQPAQP ߄# Z6Đe# 6sĉ# C @C @ pU6ŀ4ą    ܉jD9Qc c # C @C @ p,QPNąQP@ą܃܉f'c c # #C" C# p(܀ # &)&"# "LC AIC @X6)@@@&)@ `+ `+aF aVC pIăI)@c # # 1PAGE   SI =  SO =  LI = "))d""bGGGG G\G,GܞGlG̞GGG[`pBc # .q&&DC @`1ǤZ\]Yjj )# &Y&&n&&gBI` * )QGIY`֞I`) @Q8IQ3I @`Q.@(Z - )` `]j6TI '@IQ I`Is]jj `)QBIQQBI@ II | pĂc # &)' &&")* &C @I Td o6]]] K păc # &)&"&-C @`1ä]\\@*\d@o6̪]Rq ]UB4]y]-T)S]c # k%'ji#  ''  ž.IV̞KL :%C 'oVA# '0&)*?*5+6&"'W'0' !jj6C @šðvQssąv`")%@ 0 9 *N9Qc # 00'WC @L p%C ']k%-S 'ji]T4c # 'qC @h)@BFhg@c # #7',C @)@¦⦠@k|`pE Ÿ I HC @—c `H%'`H+ HqoI@c # #'im'J'I'L( O( o'K@'M@'N@('w'h p+DBI1CD6L@A+*QIgc @``pE)`@1A+Cl, .r y p+@AC @A ` )@ %'4c C @`pLc # *'O#(QC @YLhl mfq r oc # Y‡ †y# (qgh#(qcC @ )1)ܤY1i     oC6Broрr @6EXD p܆c # lmqoA@ā֤G# l̀mɀ6q#  ḠG# **# "( # {&D"(wC @)GItXGXC @^1߀fhU1F1D?6AXX lqn r GtXXfe ӀQ((K 6 6^ ^Me lrqn Gt<^e  #``pH`1I ^ ^c GtXc # $)[3\*H)[C @BqC `{Cc # *)n _1G_19|^# *)[){_1N^1H/6C8208061025000082080610250575820816152210& e1;<840109133324840109133331840109133341 eM` 840120082030840120082059840120082127 e"B8401181028132584011810302475840308170743 e8111021712122581110217121450820816152157 e=#M8402210949002584022109502400840306110049 e6 tw840109134940840109134954831217193058e8' v]840504081709840501144138840504081817de9q8403061209072584030612091650840306120952de 28107271335080081072713353950820816143605e831211104046831211104049831211104106e840109132833840109132837840109132848e^8101290929470081012909300525820816143622ec81111316451600811113164814840308170744d(  . OS:: SCTRTX MACIOS MAC IOSD MAC EXEC:: SYS OS4 MAC LABEL SYS MACRO SYSOS:: SYSOS:: SCTDEBUG SYSG300 HLPEDIT SYSPATCH SYSINITIAL:: JCL: SYSTEM EXTR MT:RD,MT:WRT,MT:POS,MT:FUN C:MT0 NAM C:MT0 CHAN CIB: CI:PER (PEER POINTER - WORD 0) WORD 0 CI:FLG (CIB FLAG WORD - WORD 1) HEAD CIB: CI:MST (MASTER LINK - WORD 2) HEAD MT: CI:DIB (DIB LIST HEAD - WORD 3) WORD :7600 CI:PRI (REQUEST PRIORITY - WORD 4) IFF #(1,?) WORD MTDA:++MTCHAN: CI:DA - DEFAULT (DEV ADDR - WORD 5) ENDC  IFT #(1,?) WORD #(1) CI:DA - USER DEFINED (DEV ADDR - WORD 5) ENDC IFF #(2,?) WORD MTINTV: CI:IV - DEFAULT (INTERRUPT VECTOR - WORD 6) ENDC IFT #(2,?) WORD #(2) CI:IV - USER DEFINED (INTERRUPT VECTOR - WORD 6) ENDC WORD 0 CI:UNI (RESERVED - WORD 7) WORD MT:RD CI:RD (READ ENTRY POINT - WORD 8) WORD MT:WRT CI:WRT (WRITE ENTRY POINT - WORD 9) WORD MT:POS CI:POS (POSITION ENTRY POINT - WORD 10) WORD MT:FUN CI:FUN (FUNCTION ENTRY POINT - WORD 11) INT:SEQ I:EOB CI:EOB (EOB SEQUENCE - WORDS 12-15) DOUBLE 0 CI:T1,CI:T2 (TEMP - WORDS 16,17) WORD 0 CI:APR (SAVED PRIORITY OF ACTIVITY USING CIB - WORD 18) WORD 0 CI:TIB (TIB ADDR - WORD 19) WORD 1 CI:USM (CONTROLLER USAGE SEMAPHORE - WORD 20) WORD 0 CI:TIM (WATCHDOG TIMER CALCULATION INTERVAL - WORD 21) WORD 0 CI:CSM (COMPLETION SEMAPHORE - WORD 22) WORD 0 CI:CFL (COMPLETION FLAF - WORD 23) WORD 0 CI:RAT/CI:RTY (RESERVED - RATE ERROR RETRY COUNT - WORD 24) WORD 0 CI:HRD (HARD ERROR RETRY COUNT - WORD 25) WORD -720 CI:WCNT (WAIT RETRY COUNT - WORD 26) WORD -2 CI:TIC (WAIT TIMER VALUE - WORD 27) WORD 0 CI:MODE (LAST PICO MODE WORD - WORD 28) ORG O: ENDM TITL STREAMER TAPE CIB MACRO *  CIB MACRO * * CIB:STR #(1) -- DEVICE ADDRESS / CHANNEL * #(2) -- INTERRUPT VECTOR * CIB:STR MACRO * * DEFAULTS FOR STREAMER TAPE * STDA: SET :F0 MT DEFAULT DEVICE ADDRESS STCHAN: SET :0C MT DEFAULT CHANNEL NUMBER STINTV: SET :F0 MT DEFAULT INTERRUPT VECTOR LPOOL O: SET $ TABLE: REL SHARABLE TABLE: SYSTEM EXTR ST:RD,ST:WRT,ST:POS,ST:FUN C:ST0 NAM C:ST0 CHAN CIB: CI:PER (PEER POINTER - WORD 0) WORD 0 CI:FLG (CIB FLAG WORD - WORD 1) HEAD CIB: CI:MST (MASTER LINK - WORD 2) HEAD ST: CI:DIB (DIB LIST HEAD - WORD 3) WORD :7600 CI:PRI (REQUEST)  PRIORITY - WORD 4) IFF #(1,?) WORD STDA:++STCHAN: CI:DA - DEFAULT (DEV ADDR - WORD 5) ENDC IFT #(1,?) WORD #(1) CI:DA - USER DEFINED (DEV ADDR - WORD 5) ENDC IFF #(2,?) WORD STINTV: CI:IV - DEFAULT (INTERRUPT VECTOR - WORD 6) ENDC IFT #(2,?) WORD #(2) CI:IV - USER DEFINED (INTERRUPT VECTOR - WORD 6) ENDC WORD 0 CI:UNI (RESERVED - WORD 7) WORD ST:RD CI:RD (READ ENTRY POINT - WORD 8) WORD ST:WRT CI:WRT (WRITE ENTRY POINT - WORD 9) WORD ST:POS CI:POS (POSITION ENTRY POINT - WORD 10) WORD ST:FUN CI:FUN (FUNCTION ENTRY POINT - WORD 11) INT:SEQ I:EOB CI:EOB (EOB SEQUENCE - WORDS 12-15) DOUBLE 0 CI:T1,CI:T2 (TEMP - WORDS 16,17) WORD 0 CI:APR (SAVED PRIORITY OF ACTIVITY USING CIB - WORD 18) WORD 0 CI:TIB (TIB ADDR - WORD 19) WORD 1 CI:USM (CONTROLLER USAGE SEMAPHORE - WORD 20) WORD 0 CI:TIM  (WATCHDOG TIMER CALCULATION INTERVAL - WORD 21) WORD 0 CI:CSM (COMPLETION SEMAPHORE - WORD 22) WORD 0 CI:CFL (COMPLETION FLAF - WORD 23) WORD 0 CI:RAT/CI:RTY (RESERVED - RATE ERROR RETRY COUNT - WORD 24) WORD 0 CI:HRD (HARD ERROR RETRY COUNT - WORD 25) WORD 0 CI:WCNT (WAIT RETRY COUNT - WORD 26) WORD -8 CI:TIC (WAIT TIMER VALUE - WORD 27) WORDVw@EQM@ wuw A@?# 1A#1R m VA`(%6„ƞ'`(k# jV# w w܁B@ @`` ) %5'`@# I# -܃ ?IdŞ G<Ąu¹ąĆćĈI`( H%' H`(KL :rno@ c )1 @ I9 v @@@QA# 00*? *5*1Rs{zvv1Ax @ Qhzz1d d  d1Q @ 1Mzz1GĂx z{# )z|I1dy@Ĉ|@M1Y G 0XQCK0NqG@ yyĂ v# Iw@s01234*H00q[{zv 1lyiG͠ya yyq`H%'@hyJ@6 V܃JĄ{z# HwvB9# 71TvBB` QBHEFG# 1\1A.q1R`z{v1| @v @Ҁ6 ΠvQ[ @°||6G6A@ 6A@Ĉ@6||ćvQG @8(EX|XXd1A1C|QĀjjQI @XjQj{z# **$z{1J wāz{ # { # ww@g@# *HOv1C1ʠu%'+ )u#  1nrr1KqlmrPQlmqs# 11R HOQCҞOnKńpIJȄNǞpn, SIJIQ2ppS/Im . EndKJMcJx)  , + - * /1o1O1S2S&)&"2^2* 2X2[2*242>&D2g2k2p2"JK !I I Qn3M4HHH5 I@ȠH+3C͞*2ڂHH+.aLi'NiLNLNt tO# QG6EH Hy# ' + -## #  9 0 p܀# # I @ J # BH#  N # N# IQP# QP# ML# ML# "[!#(#%"22g/# # DJJLMI*y# DJJQ @IJLMI !+z# 23*3#%3_BLMJ1ALMJ !I1K2F !IIILM* N 5I*G  JJA# K N G ΄N KMN G KG G# LKLMQML KZ# G NIG NN# !Ry JLMIPQ# QE .i|# N# *  TITL O S 4 . M A C - OS4 GENERAL EQUATES & MACROS (93421-12-F000) TITL ..... CONTENTS ******************** *  * * OS4.MAC * * * ******************** * * EXR: MACRO * E:MON MACRO * E:MONE MACRO *  E:MONC MACRO * E:SLU MACRO * E:SF MACRO * E:UF MACRO * E:IJCL MACRO * E:JCL MACRO * E:ISM MACRO * E:ICH MACRO * E:GFN MACRO * E:MSG MACRO * E:CMD MACRO * E:RCI MACRO * E:LOAD MACRO * E:PRINT MACRO * E:LDR MACRO * ISM:PL MACRO * GFN:PL MACRO * E:ISM PL EQUATES TITL ..... EXR: * EXEC REQUEST MACRO, FOR ROGER PARAMETERS: * A ROGER PARAMETER IS AN INDEXED OR UNINDEXED, NON-INDIRECT, * WORD ADDRESS. *  THIS MACRO GENERATES INLINE CODE WHICH LOADS THE ROGER * PARAMETER INTO THE X REGISTER. * EXR: MACRO S: SYMATT #(1) * IFT S:**:0040 IF NO PARAMETER... COPY =0,X USE DEFAULT ENDC * IFF S:**:0040 OTHERWISE... P: SET #(1,'(') COMPUTE POSITION OF INDEX SPECIFICATION... IFF P: P: SET 100 ENDC P: SET P:-1 IFT S:**:0200 IF POST-INDEXED... ADD =#(1,1,P:),X ENDC IFF S:**:0200 IF NOT POST-INDEXED... COPY =#(1,1,P:),X ENDC IFT S:**:0100 IF PRE-INDEXED...  ADD Y,X ENDC IFT S:**:0830 FLAG INDIRECT, BYTEREL, OR ERROR NOTE E,'PARAMETER ERROR' ENDC ENDC ENDM TITL . *  MONITOR EXIT * E:MON MACRO EXTR E:MON JMP E:MON ENDM * * MONITOR ERROR EXIT * E:MONE MACRO EXTR E:MONE JMP E:MONE ENDM * * MONITOR CONTINUE EXIT * E:MONC MACRO EXTR E:MONC JMP E:MONC ENDM * * SEARCH FOR LOGICAL UNIT * E:SLU MACRO EXTR E:SLU COPY #(1),A JSK E:SLU ENDM * * GET SYSTEM FILE * E:SF MACRO EXTR E:SF JSK E:SF ENDM TITL * GET USER FILE * E:UF MACRO EXTR E:UF JSK E:UF ENDM * * INIT JCL MACRO * E:IJCL MACRO EXTR E:IJCL JSK E:IJCL ENDM * * GET JCL STACK ADDR * E:JCL MACRO EXTR E:JCL COPY E:JCL,X ENDM * * INPUT SYMBOL * E:ISM MACRO EXTR E:ISM EXR: #(1) JSK E:ISM ENDM * * INPUT CHARACTER MACRO * E:ICH MACRO EXTR E:ICH EXR: #(1) JSK E:ICH ENDM TITL * GET FILE NAME * E:GFN MACRO EXTR E:GFN IFT #(2,?) USER SUPPLIED DEFAULT LUN? IFF #(2,'A') COPY #(2),A 2ND PARAMETER IS DEFAULT LUN ENDC IFT #(3,?) USER SUPPLIED CONNECT LUN? IFF #(3,'Q') COPY #(3),Q 3RD PARAMETER IS CONNECT LUN ENDC ENDC IFF #(3,?) NO USER SUPPLIED CONNECT LUN? COPY ='OV',Q USE DEFAULT ENDC ENDC EXR: #(1) IFT #(2,?) USER SUPPLIED CONNECT LUN? SBIT BY:,S FLAG FOR SUPPLIED DEFAULT LUN ENDC JSK E:GFN ENDM * * MESSAGE SERVICE * E:MSG MACRO EXTR E:MSG EXR: #(1)  JSK E:MSG ENDM * * COMMAND SERVICE * E:CMD MACRO EXTR E:CMD EXR: #(1) JSK E:CMD ENDM * * READ CI * E:RCI MACRO EXTR E:RCI EXR: #(1) JSK E:RCI ENDM * * LOAD PROGRAM SERVICE * E:LOAD MACRO EXTR E:LOAD  EXR: #(1) JSK E:LOAD ENDM TITL * PRINT FILE SERVICE * E:PRINT MACRO EXTR E:PRINT EXR: #(1) JSK E:PRINT ENDM * * LOAD OVERLAY SERVICE * E:LDR MACRO EXTR E:LDR EXR: #(1) JSK E:LDR ENDM TITL * E:ISM P+ L MACRO * ISM:PL MACRO S: SYMATT #(1) IFF S:&NULL: #(1) EQU $ ENDC RES ISMLN:,0 ENDM * * E:GFN PL MACRO * GFN:PL MACRO CREA:A #(1),0,,,0,0,0 RES 7,0 RES 2,0 ISM:PL #(2) ENDM TITL * E:ISM PL EQUATES * ISMTC: EQU 0 TEST CHAR ISMNC: EQU 1 NUMBER OF CHARS ISMDV: EQU 2 DECIMAL VALUE ISMHV: EQU 3 HEX VALUE ISMDF: EQU 4 DECIMAL FLAG ISMHF: EQU 5 HEX FLAG ISMSB: EQU 6 SYMBOL BUFFER, 7 WORDS ISMBP: EQU 13 BUFFER POINTER ISMUB: EQU 14 USER BUFFER ADDR ISMLN: EQU 15 LENGTH OF PARAMETER LIST * * E:GFN PL EQUATES * NAME: EQU 6+1 NAME OFFSET (RLN:+1) FEXTL: EQU NAME:+7 FILE EXTENSION FLAG GFNLN: EQU FEXTL:+2+ISMLN: GFN BLOCK LENGTH SPACE 3 SAVE END ISM PL EQUATES * ISMTC: EQ ENVID = ENVIRONMENT IDENTIFIER ** SPACE 2 WALL: MACRO WALL:A MACENT P: SET 4 L: SET #(?) IFF #(-1,?) L: SET L:-1 #(1) WALL:: #(2),#(3),#(4),#(5),#(6) ENDC * WALL:: MACENT IFT #(-1,?) IFT #(5,?) P: SET P:+1 ENDC WORD #(5)+0  ENVIRONMENT IDENTIFIER WORD #(1) TIMER IDENTIFIER WORD #(2) SEMAPHORE ADDRESS WORD #(3) HI-ORDER TIME OF DAY WORD #(4) LO-ORDER TIME OF DAY IFF L:>=P: NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ENDC ENDM SPACE 3 SAVE END e82081615212800820816152132dOVicEdDanom.ASSIGN .ADVANCE AUTOLOAD;BACKSP COPY  COPYALL CREATE  COPYPACKDATE vDELETE DISMOUNTUDO #DUMP IDIR INIT JOB )KILL MOUNT XPAUSE 4PRINT vRENAME REWIND TIME 5VIEW  VERIFY WTAPEM Z3. .. OS:: SYSLDZ1LD 'Z1Z2Z1Z2Z3LOCIZ1CICIOCOCCIOC > CX> I ʿ 1DBQ 9(SLxrXQF ss SGCI) [I@EWQ:O0) B" ` /ݢǃ V ߒ ˜%AɿԞ $SFOVL1GãÀB*kf ]e ςbb[%`ԃWRKЃSE ,UȃJE B Z1, "4 1:7 h] +  [: 0:7㒀@AS  :CI ) ˜%̓K:C# +z)y&tUFOVH߆U{ r0 ƿ M@QDɃ힃QCk.ny އJJJ%I"Q ԇЃώ҃ˎ81HFJɄȀ8*u 1:72N+ B㷀@AK[ۃ` 뭀APÕΙQ ÍΠQ ⇓SLCL (CIpoDj  0:7 Ń , +# : .I\܃MK J1GG  0j:7 >N+ B<@AW)T&Q 1R:7 ""DW?{<  Y  1M@6ʃ 1:wfʃHb:ó]DZ:BZ1ĿS UO:o:W NyLCLXELcLxAm)): 7wzCI\   @w:/. أAԸ @BKנ1NF πϠBC ߳߶X:/O C:/# :@p@p@K @ K: p ;p+# SL /2410 .MTEX::  SYS4 UNIMPLIMENTED COMMAND. USE MAG TAPE EXEC (MTEX::)  LU DEVICE FNO 9K̢̟̂%6OǖAĂŇăB!# o6AHAKLC f 6:Pp @0C f0)@ )UFOVUTIN00DFt uQ Pqpˇ:?)JSIW^QA @ ] \C @ ` "* H1LJy  >: H*3mc @0›$㕀@k+U# .|yCD*%tD ۇ ڢDևѢDχˢDȇ:$wǎ D߼;G ;ǵ :'Ă:':' I Ā IR *,  :' 't:' oeQ PW\ # M|yv)qn0p   ه1IȀE&y M :냞f )C @A vwLO ^+  v ʟʟʟ:+9 ã+  :"  ++ " +7E4 /6B= <)C @AΞߟ xD $   : A 0:? # C @)$5 p5 ]Zc # ?B 4 ec 5J6‚X.-Շ؀;NҀ DsΞpoà * p6F*/+  <AA F +  A+Iǜ" +IǓ - <<>>,IR >  D$LM m W}+{]wv -VU -ߣp N 7KhJ ӿN]Ϟ^Y.>QAɃ0:D()6_6 pQJ NyJQIQJQD߳:˲DZ_6^o6GGÀF Dä pM@+C @* B[      |pf e\4 YLHE , Pp# qMw<=2P3Q n.  @ G‚‡:?< # E¹ ݃R ۿE «ǩÃB Cv" eMTR  _ T h̃sJiy `l ]geg[̇̃ec:F QAş  0:W ؃E=;9EG d: :؃˃1&ȃ"/ţ)Ð Qaȃƃ:Wٟ  G >j k S C쿪`V: T1D ˜ǖBBKMTR 1s6ȃE  pSB@A@YIP +P[[wF +DD ? ,# # FL$" vrolMi&fC @ € Y G @AǶ óG Dz :?hE 6ߚt+ ØN Cߕg->c #  .D2CFG s{ +ts n(ܣ;+ I 5BB}+ߧߦm e_ A# 6J:/ ߓߖ  # } 4,> {&q `` ^  6 +@]K  K7GO+ MCnB.# &D -  IǤ+ߠ&m ++ gIǓ+ߏ\Y + # }LA $CR J NAME .EXT LENGTH DATE TIME EXTENTS AU'S F# 2NDX NAMSJ NAME .EXT NAME .EXT NAME .EXT NAME .EXT <1PAGE VIEW (F300) UNIT= VOLUME=  J 19YY/MM/DD HH:MM:SS CREATED 19YY/MM/DD HH:MM:SS DIRECTORY=  TITLE=  TOTAL AU'S =  TOTAL FILES=  AU'S FREE =  AU'S USED = FA FB FSUFFL NAMEONLYEXTENDEDSTANDARDALLFILES NOTREE @DIRONLY SUMMARY  œ% SӃт:O)i cbUFOVT5 ң1D ®ǬiXQNWvwMT e+ AƂƇ#+ k DQ2_]b:BŞ 0: RGT d d:Ã6Ξ: àK + 3jIR",cÇm:p nk:_ e­K T1ģ+ Q y% njy# {MwMuUrd  KHң". : y 4 À- # # ZR㲌DLíE ¬=9 :#+:IRZ[^advuxD tlŇx:  ЀC 6I_Ƣ[B7 ߦߨn҃GP:  # M|<yvsZ3 "YoL ʇʇʇʇʇʇʂʇʇɇɇ# l¿ƟƃƇE ÃÇãN€݃ ۿE µdz6Ã#$MT R k̓unNyJQcm_ `hZheY: D>QA  0:X3 /Aك?=C@>:J 0:Þ "%$ Bѿhj 1D “ǑTT!MT R  I{SB@A@Y?: +>\ ^ÿ B ,B# PxvsuprmoMjg d :AdA% :  H Z4'#Z3dA䂝+ ™:B0 0: V` ̃@w:o 0: ÙQ¢ ×K^   "PCB , c} == +5 ,# OVERWRITE Z4'Z3v\:ョ - - :: # G|  Eٞٞ٢Q9 ؇ע [Ȁ; π QI ÀDy Ń@e+± :XZI-QI :'# ~"{x ,IR *:ɇ Ȣȿ ‚Ň b¿ 1㿣@AǽigeceP((@6ˀB?:w9 E1DSB%&:++kߎP#   $zCI w=ɞ ƀă ܢþG ǼD  AéG!@ ª:? ǃÒG!ϑR# vwMT2 C4]<M.YC @ كg֣рa̓Fɏ̞v 㿀߸:/ c # c # :o:Wy C X c x ~l 1:7 # # DE \: ) =C @G`@@Q+kc I# c # C @QQ@AǩZ%'㥣%'ߞߟߛqc I# c # C @QP@AǐA%'㌣%'߆߇߃rc # C @) w(N Gpo N15c # :_:WGy# C @H^@N2@% @'Suc # C @)@ G@0FD5c # C @%'ߛc # C @@Xy}@} . ~ .M I.M~I.d@bc # / 4.C @{I [ /O+Uo mHkc # fII C :7+UW U0S#  { Jʑx I怅 I.Gk#   ׇׇׂ҃ע)Ƣҧ҂:# :|xǢ%CL(Ճ )¯ǵ1B ,] +[# wM t0123456789ABCDEF duUFOV ԂԢ%AчучwɇÇ:ꂽ¼%郺E샴: _òK  !:'  :'# {xMtqpnUFOVH,+*d: -R-<H-<::  N# KO|00 $(&&&%% s"_ VT1Pg  ÙT •Ǖ  # {wTV(C @` ?@Aǡ%'  +ÖN1B6/ߑo pc #   kc # ߇߃߇: I Eւ@@ # D_ {  0:' # Ȟ} 1:' # } :C #  {I Dz :  0:? â GǠ:? 1:? # } +*.?CBF7Ώ܃̇fˠ1VT6ăćY1IG)@ # IV!  + # H I H:? ? 7#  ;y w&en" Dgh!H V@ąلC΢nk9IUE@+t@y# `+9 X^ v 0:/ # } 1:/ # } {+ áK-:/qp :' D # } {OLSL/LO264*,. 0:::G:6: ߔl# # e "G#:v;v: sql - _@QB+kTX죇Y# %$ +u:r +:7k hC @ߴ ³ .qeIíG! G!@B AINj c #  *BLOCK AU  IĀ+# ў 1 # I?ȣȄ+U# MH ǢăF #  | :)䃯⃰ ކIIڣ; 㝀@+kUƀy@NyC #  4 ,Ƀ S DB # # { b9:'7ZX@AKN1\ # ۞}KMH+s # } ǣ| 7VKԀCC C :'"߬m ^] | G ǡǡ::  # |IR*+.#&!ã # } B90.r# e1# z_QS: ɣB:#  2YSIN ˃mm ÃmB# l*yQ B ΢TT˃S )HH # vBB yTO( }@0 7I3%C B'`(l%C @'` fK%oe `kA YX ƃD # k% {#  ~|{IC @`@@+kc #  ~ƊK 1ģ+ icqp   C @ @…Ā+c # EXEC (F300)  AU YY/MM/DD HH:MM:SS /JOB (FILE IS OVERWRITTEN) > FILE ALREADY EXISTS. OVERWRITE IT?(Y OR N)  VERIFY SUCCESS VERIFY IS PROGRESSING , END OF MEDIA, MOUNT NEXT VOLUME?(Y OR N)  END OF MEDIA  FILES DO NOT MATCH SYNTAX ERROR INVALID COMMAND  DIRECTORY NOT FOUND  INVALID UNIT NAME  INVALID OPTION INVALID DECIMAL NUMBER UNIT NOT FOUND INVALID FILE NAME  UNASSIGNED LOGICAL UNIT & FILE ALREADY EXISTS FILE NOT FOUND ON " NEITHER UNIT OR VOLUME SPECIFIED CLOSING  VOLUME NOT GIVEN( CORRECT VOLUME NAME IS  PARAMETERS IGNORED & FILE IS SYSTEM FILE BAD AU  UNITS NOT SAME TYPE INVALID DATE  INVALID TIME  SYSTEM LOGICAL UNIT  NOT LABELED  UNITS DO NOT MATCH  JCL STACK FULL 8 FILES DO NOT MATCH AT RECORD WORD 2 FILE DOES NOT EXIST, CREATE IT? ZBP* from tvxCI XQ# zZ$ 0::̂̆7 P4 1:+XQb L_ @ X¹@*+ QP6qJ­@)5HQB|@ 1:Z$ÓXQÐ֘ǎ/D ,Z%)(6 H ݇݃݇ :hڇ :_ &:ZLJŃLJŃ  P ": 1: ꂶ%G'@: A: ` A: 0: ǂ  Z$#  CIUF j⧂@+k zZ$C @ STV OU O: c # pZ$9  bAX`$ BATCH FILE NOT FOUND* BATCH QUEUE EMPTY - PROCESSING SUSPENDED " BATCH QUEUE PROCESSING COMPLETED  OS4 INTERACTIVE MODE RESUMED  LUN EF NOT FOUND  I/O ERROR ON LUN ZBmG2G2G1G2G1G4--E7G1--G0E3----8 3E3E 02D9 0049 DRBUF 02DA 0056 OPTIONS 02DB 4952 02DC 0022 MOVNAM 02DD 03CF RFENT 02DE 0067 FLISTADR 02DF 0082 T1 02E0 0054 BP 02E1 0021 HAD 02E2 0025 PDAT 02E3 0387 VIEW7 02E4 0041 DUBUF 02E5 0081 T2 02E6 0024 PTIM 02E7 4C4D 02E8 0038 ATB 02E9 02EA 02EB 02EC 0OVicEdDano*SCRATCH Z1QZ1Q PZ1QZ1QPZ18Z13CIFICIF , 5 .  OS4 F4 00    VOL1OS4:MT    VOL   3  I rv~   5 10 40 80 150 300 5 10 10 20 40 16 48 80 16 48 80   1 #M77777,w&@8@Lzz) @@@@fM(@LK pӿECϠSCɀȃp ÇÇÇ¿I1Z%@' F *1P%A' ƃ*1W  NI ۃك=COC [uI`~&؇:֚՚Ic@6RgW!QO  ǟJQB :FN~SMAdzC VL L@L" 3@6A;(,*@6A WCI4L! bZ1MT gDF 1} '$ LyL)I&pnC C # *ۣQۡQB@ ]@N KC VT6D I Iq CuIJ`` s{rI1D/ĒihIA1D%Ē G G @6BIIC K|K@AIG7ž|Ǽ@6GĒĒG!ĒG Ē $#I1CƘI1CƐ  1 ދI ?`x@ @`x# `'JQ¿ǯǮǭǬǫǪN ǩǨGǥpN CpPXVpPP  }bacdeo_` SXA G`AK G[AK@GL GRAK G! AK̟@A G6 G8G7ǿ G>J@A˸Ƿ øG! AKN 6AK@AˬǫI !I@  " @ G GʞAN C @c  YZT@ gC  ! GG! AKǿ ˸Ǹ KN)G! AKǰBè] GG! KǣQII1Bǜ7*gpojkmnu 1l]^ S  - @qXGABD E FGX  } b }JKJKQRNML  BQCC @Jƅ xÖ ) >h1E`pKCc # 3 w !I@y4E@k4# 9 0N1@# F A N1@# =(# 8`pEUU/cI1:NP%xI1:DQI1::S ™GQITa G`R GGG_c `u3 ïěL `   P+Q+R+S+T+_+`ijLLLL} i 8IJQVބVJ8I1D3Rb.I#1D)S' QGGG_ `C @ a RUA y{U ߿/  `pEU: `pE ŸGHU|UH`pEUUV`pE RC 1 g S \EBC  66 a c )c  Y W| R_ E6A Y q: zyxOC ,s.+ y@Jb쾧<%'UmlI߀Gk9 ?Aۢր@+kU+ӢjOS4:SCRATCHVOL  . / ӽ@ ӺB+ުh !  \ӡQH GAK *O JE  @S [ w _(o np¿ h*edk   ~|%@ % '2 Q[) bAjÖQ@INFLVLMY@)5SRCuOL Z @ 9 / # # n :&:@G^ ➙A%J' Od۞~ Pփ֘Ey ̿>=I/y@%@'kI .%C AC U'úSƂBⷞ⳿HDZⳢI %C @`(KC @`(JU'Ϳ j }I9VO L1`SI 3  u66C ʞ+ȃA: IÓöÓ:5_C @ O6A  ţ@ c # `pF Fc # 9S9H5 . A6   ]QR 2 :.{I+9j} +8JRBKu T +9 CFk@ Q;C*ƞ*¾ C3SOL i曃}{zyxJut.rCNn. lji `β@ uc%'I%C @'J%C @'ʟΟS"ΜʜTҙQ$җK1 G+K%C @'3>%'ΆʄR΂ʂW+: @֝Q@XQ+k6uAԿ  ( {# ptACkA{ butd    Կa`п][ I1@SÿOqſK;I1:@Sÿ@r  7NI15J G@ϮSÿ% f ßG& @  A4f ,A .`}u 1dcaT_ ~:&::.Aq:.mC:6 |y ^a z a qpI KI 1Ly%@' F C^XqonЃ :% A Σ  C܅qߊ߅j oVS$R£ĖCg [ÞǙǙ::A Iz`  Q`, ~*?  ½Ɓb5k*igCܞïUUíG@@AǦ5LGGVGǞEGDϙS#  ߏ8ÏGCË@lj C2yb_ReC @sc # C @`pF+F)I@M JKK0%'95 U c # [4{ ߯  nQGS⣤ji ģ J ߓ ߎߌ߈J]# = |w+rrJRnmomăkԞgeK_`ăXVRWPJ^SB ÌIIEG A|wvX! ǃw6t11n+,(jh ãe"Amu\[Z XVUvPMu  ǟz .߁v xEu& Iۃѣڀـ؀׀րՀԿFφ8ȿ:ğC @ p+` @ @*׀I1K%@' C c # c QR$S Z1`CuI " փT G#AK˞ IGGAKăY[‚‡‡¿opmnjk HFF 6 5:;=3   uq A usAr g h_   poquEst"ü GAKƳ  +@ΨQHߢߢv: Y  Ɛ:L Yg,TUS Ǹ nF: "ǧIGWVߦǢ: \Y\gf::K: V\jR$Qm$FsÇ1‡0 n !(' " @³²YBE+[JQ L QGć ÛAGĈQRSTaYM"# YSCTn. _  +C*q : : 1AΞ}cdTQRUVS   :orIⴀG@A+kKwmq h@AǤ~}ߟzjmÚN @AǖQH–Ɓ~}ߎz:p rW~+0îN Bp $G # . *5# Ƨ| :X rq ~+:X}vu`CI ~+:m}vuSL ~Ǭ|{y:>&@y 15N%' ^+ % K4'1L*% z a 5'QBCD&> GG!GV# . *@@5# £G!Ɵ߾BYĀ # V p #  ~})Ö@*+xr gQoR$ e`CTU Ë G!G2Vhi#  ~ G1G0@Af XXXpo: PZWv dcb,8 ~ yx@  e  ;4 806A10܆+܄@B B kk@Bƅ+ @B B++++! CY&%A G Ć  Ïġ  : S$Tl@ ԀAB+kJR8ms@1N9 B N N Ā# @1N9 B N N Ā#  !Pz G_vu ~ h ;GHVߕǓ:-/L:ml\[VjRQ$  ~}|{zUF@+kUsrC @ÏLeC C C }c # }[ LABEL (F400)  ENTER UNIT NAME> (Y OR N)>  ENTER VOLUME NAME>$ OLD IDENTIFIERS ON THIS UNIT ARE:  VOLUME NAME: TITLE>4 TO CONTINUE LABELING, TYPE IN THE OLD VOLUME NAME> UNUSABLE DISK  LABEL MORE (Y OR N)> VERIFY DISK (Y OR N)>  DISK VERIFY IN PROGRESS  NEW BOOT ONLY (Y OR N)> \ VOLUME NAME DOES NOT MATCH YOU MAY HAVE TO USE THE APPROPRIATE DIAGNOSTIC TO REFORMAT THE TOTAL NUMBER OF BAD AUS =  RENAME VOLUME ONLY (Y OR N)> AVAILABLE DISK FAMILIES ARE: 1. PERTEC MEDIUM CAPACITY DRIVE. 2. CDC SMD HIGH-CAPACITY DRIVE. 3. SHUGART WINCHESTER DRIVE. 4. QUANTUM WINCHESTER DRIVE. 5. PHOENIX, WITH SPO OPTION. 6. PHOENIX, WITHOUT SPO OPTION. 7. 5 1/4" WINCHESTER DRIVE. 15. SCOUT WINCHESTER DRIVE. 20. STANDARD FLOPPY DRIVE. 21. PICO-FLOPPY DRIVE. 22. DUAL DENSITY DRIVE. 40. SCOUT FLOPPY DRIVE.  ENTER FAMILY NUMBER>( INVALID DEVICE FAMILY, PLEASE REENT4 ER  ENTER DISK SIZE IN MB>& ADDITIONAL MEMORY REQUIREMENTS ARE: . ENTER TRACKS PER CYLINDER (DEFAULT IS :4)> :0 ENTER CYLINDERS PER DISK (DEFAULT IS :12C)> : . ENTER TRACKS PER CYLINDER (DEFAULT IS :8)> :0 ENTER CYLINDERS PER DISK (DEFAULT IS :177)> : < ENTER STEP PULSE WIDTH / STEP PERIOD (DEFAULT IS :101)> : : ENTER REDUCE WRITE CURRENT CYL / OVERLAP SEEK (:0000)> :< FORMAT ONLY, FORMAT AND LABEL OR LABEL ONLY (F, FL, [L])>  RETRY OR EXIT (R,X)>. UNRECOVERABLE I/O ERROR. CONTROLLER STATUS=  DISK FORMAT IN PROGRESS 6 FORMATTING FLOPPIES IS NOT ALLOWED ON THIS PROCESSOR CONTINUE LABEL (Y OR N)>2 W A R N I N G --- TRYING TO LABEL SECURE TAPE 6 MAGNETIC TAPE...LABEL IN PROGRESS...STAND BY PLEASE : ENTER AN ACCESS SECURITY CODE (A..Z , 0..9 , OR BLANK)> F UN-LABELED OR NON-STANDARD LABELED TAPE LABEL THIS TAPE (Y OR N)> $ ONE MOMENT PLEASE FOR TAPE ACCESS 0 OVERRIDE VERIFICATION OF VOLUME NAME (Y OR N)>$ MAXIMUM NUMBER OF FILES (DEFAULT=:,MAX=: NOT A HEX NUMBER - RE-ENTER> 8" DRIVE (Y OR N)> DOUBLE DENSITY (Y OR N)> IBM 2D FORMAT (Y OR N)>  DOUBLE SIDED (Y OR N)>( ENTER BYTES PER SECTOR (NO DEFAULT)> :* ENTER SECTORS PER TRACK (NO DEFAULT)> : ( ENTER TRACKS PER DISK (NO DEFAULT)> : " CA SINGLE SIDED DRIVE (Y OR N)> 4 INPUT EXCEEDS MAXIMUM FILES ALLOWED, TRY AGAIN...  FILES ON DISK:  FILES IN ROOT DIRECTORY: 0 SECONDARY EXTENT SIZE FOR ROOT (DEFAULT=0)> : : DO YOU WISH TO ENTER MANUFACTURER'S BAD SPOTS (Y OR N)> 4 ENTER CYLINDER NUMBER (CARRIAGE-RETURN IF DONE)> :$ ENTER TRACK NUMBER (NO DEFAULT)> :. ENTER BYTE INDEX INTO TRACK (NO DEFAULT)> : 2  THE LIMIT OF 30 SETS BAD SPOTS HAVE BEEN ENTERED* YOU MAY ENTER UP TO 30 SETS OF BAD SPOTS SYNTAX ERROR UNIT NOT FOUND I/O ERROR  I/O ERROR CODE : TOO MANY BAD AUS4 INSUFFICIENT STACK SPACE AVAILABLE FOR VCB BUFFER  -K- REGISTER =  -L- REGISTER =4 INSUFFICIENT MEMORY AVAILABLE TO FORMAT ONE TRACK  DEVICE NOT READY! RATE ERROR ON SELECTED DEVICE  FAULT ERROR ON SELECTED DEVICE" UNIT SELECTED IS WRITE PROTECTEDD I/O FAILS RE-TRY COUNT DATA TRANSFER FROM/TO DEVICE IS UNREADABLE  FORMAT ON MAGTAPE NOT ALLOWED & TO CONTINUE LABEL ENTER ACCESS CODE>( 'OC' NOT FOUND IN UAT...ABORTING LABEL0 'OC' NOT CONNECTED PROPERLY....ABORTING LABEL $ UNIT IS NOT READY, RETRY (Y OR N)>* UNIT IS WRITE PROTECTED, RETRY (Y OR N)>" INVALID CYLINDER NUMBER ENTERED  INVALID TRACK NUMBER ENTERED" BYTE INDEX EXCEEDS SIZE OF TRACKf CAN NOT INITIALIZE TCU CONTROLLER CONTROLLER STATUS = : DRIVE STATUS = :4 TCU CONTROLLER NOT PRESENT - CHECK DEVICE ADDRESS C @Ȣ X N 6  B N ā BGąc # [ `P@p@cjp` G G!RPC@ Gƅ6 pp# }C`C5 m@ AB G@AǤECD[ Ń DAyBN |{mdU2  ƃw tqCm܂kDGgg+\J+@ XGǮ ̀DKI GDCE@)# @@>y8 BGNjE+ .%‚#yr5 W Q|JSAw G @GmȁGf£e^Gb@ GXCćRAZí G/ǩ  åQBJ C*1 G B9×+U# 0ÍJ+U# TU}_V+Xā fQWe bJS_ GQ\`@@ GAGdžl# [{C ֣G,C C })C C }ŢƠ̞tC C }2e*L1A# ô G BNy @AB G BGBá@RǞ;: 9 ǖG CÒJ+UÉCbT_ 6` 6J 6W 6H 6J /6K ?6Lml h{&x7u ] m 12C @  X Rwc # c `C3 @hhgge@n G geaf잺a XRW R^e IPiAp@;:9 G7P@ G:NPCHC C GTqE&ɞ * Cϟx @0DAJL )ЀЀ΍QAy"  i+ fFC `jn@kC# b# }J,r`j`@k6l`@p  @EEFF)DZEF% jH@pcƟv g6g3]X] PhV+s=胾c_N GF؞Þھ “@ALS)"$ C k1/j-h p tRw nnwn ig 15 !\Zd V %'+Ls愾Q)s CB|{ @" o O m J K i g, V tsFn`"FED) E`Cnrgy w"N{Rq1H }L0`.tE+ @a &<;:y897-3 v@J\OS:: SYS )  @0|)wwЀЀtQql)  " }gA ` z_M@iGyy GGG`HZ@ b G`^Y e IQ BBp@;:9 :7P@ G:پN 8!0. * C'xC# b# }B!zd @0DAJL w+™ЀЀΖQA1"   i ž} š} @EEFF)DEۄF8 џ} ԟ} ̟} * `jUBBI,v BI, # @ G9H@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:: SYS"A"iwvc Bc A@6<# Ic B# gIjHc rc ޚ# @0X)P VVЀЀSQPpI N@6=< G:P@ G=NPCHC C GTqn/I iޞU * Cןx @0DAJL )ЀЀ΍QAy"  i+ fC@ `j_NQRSTTIITSSJISRIN# B# A@6<@6Y # B|  vH@pɾv g.g+iXi Phb+s=胾c_Z SRמؾ ¡@AvLS)"$ C j<:j8h p y06 Rw kkos rp  15 !YW\ f %'+\s愾I)s SR|{ @$ o O m J K i g< V tsFn`"FED) E`Cnrgy w"N!{Rq1H|L2`0tG- Bc (>=>>  EXEC::  SYSLD '1ƞ þmM)ŢfE) ]]⺤B1C: ): ̃ !_pC PE` C   p0! pCPEs !) LD shbIqC C @U ilffeKB́QȃYAـ ԄQ`(QBNKCBǞB!=? pCùC @KP@E OQF@ +zCI ƀv: N#  [ }G +* b 7OC ` EXEC:: NOT FOUND  BAD TYPE CODE PROGRAM TOO LARGE LOAD ERROR  NO EXECUTION ADDRESS  UAT WIPED OUT SYSTEM EXCEPTION XXXX OCCURRED AT LOCATION XXXX%I@2NK0M9K+U'#  =/p(p(C @`pD+E` B@ C@/ph@ph?ph@kphE@/p p?p(+p(# OCSL :@`` D@1HNFLODL)OB`H: ) # `@:(x  OVST 4@pJp@`H@Bƒ C ADEFGHF HAEG@h @6@6@6@6I pB# ) "ZP * 4PO 4Bƻ: C @@ B+{āc  0 0$: ": ,  : ": ,w 1: , 1: " Z: :ZPZP +׀!ӄҢҢ̀@QD@QBkz A@N JÀA+kUǺ : ::&y X R C x r ck4  > 33 "+)*  OC(OC+OC% CRX> ?  " h n v |    A B C D E F G H I JKLMN&O0P;QERRS\TdUjVrW~XYZK NOT READY WRITE PROTECT TIME OUT POWER FAIL  VOLUME NOT ON UNIT  VOLUME NOT FOUND  LOGICAL UNIT NOT RELEASED  BAD CHECK SUM UNASSIGNED DEVICE LOGICAL UNIT NOT IN UAT END OF MEDIA  HARDWARE ERROR  ILLEGAL OPERATION NON-EXISTANT MEMORY ADDR  ADDR IN SYSTEM MEMORY DIRECTORY FULL  DISK NOT LABELED  FILE ADDR OV ILLEGAL AU  AU NOT FOUND  WRITE DIRECT EOF 7  FILE NOT EXTENDABLE ILLEGAL FILE ADDR ALLOCATION TABLE ERROR  SYSTEM USAGE ONLY BAD FCB CHAIN FILE OPEN FILE NOT OPEN ILLEGAL FILE POINTER  UNIT NOT GIVEN  UNASSIGNED FCB  BUFFER HAS WRITE PENDING DISK FULL RTX ERROR UNDEFINED ERROR0GG GBpaFbDcE/ph@ph?ph@kph# FaDbEc# # 33,</ph@ph/ph@ph?ph@kph?ph@kphĢ/ph@ph`pHK Q KRQH ?ph@kph`pC# 33.!ŸǟžǜœǙšǖ˜Ǔ–ǐ”Ǎ p+LJc #   itPLt| n0K 2>8;5A.JDMP t H  H 9H v 9H>   TV01P## ##|t$#&?+4 DF00AAM @MG$]4 DF01AAM @MG$|]v0(u(u*K?*d LP008Q'##2# X1X2X3X4SILOSF4UF]OCCISLSOSALDOVXX]POZ1Z2Z3Z4Z5Z6ZP4daTI1ECNBCO# $'/p(p(` D/ph@ph)@BCOD6DZ `+ʀP COBBT€RQ EVAQ mWG CW90.r@ VBCOOV!= 00ߞހP D  /NBy M  `+f,NQ (Vy )ք5` @P  `+ON sVWNy%ZrY['OCP  /NM D%Y'B4BC] ҀO? ?ph@kphD?p(+p(# r pN N igIRN1N1  # =d/p(p(` BDCEAׂI `+C Uф@z 0 :D A FE [ _ E :E ED DAQ\DQZBN!BB @BCN1@CA,D,E,@k%'jACN€MDB BEB CA?p(+p(#  I</p(p(` /p(p( MNQ@ ϪSW/p(p(Nq% ' z ` ?p(+p(M?p(+p(# '?p(+p(L 0nJNMN1EMM M1ÉB I@@Mǁ# I 1 æ :5:/ph@ph?ph@kphF:= ª # @SAyNCI! SLCIE NSLGK @Ǡ1DSB# :"SFUF!ZϤA FDZYBZ Z Bą  Y H H H @ DggZAZg ZuXlth5lmѤA ʄZH 8 ĞƞΞϞЀWX AZ̀  TZT UVETi`ZӀ`Z͠AZ QZgZAsLthl5N͠Y ABSA ZZߠYۀABā A@Ѐ ĀBĉZĊ¨ć§ā@ giZAZw ABZZCAN IN5O&*B1:A QB1NBɀ6[ 1 g psqowl! _ "* H1KQJGBĀZB B C @C @ pā_B __ __6 1  B* pE/p p_/p p @*31*_1A&# /p p@pKp@gK*B1RBJQDC ggf N OQJ?QC @QB[TP G `QRS GGG_\ ºG!ac B BR IG*SF@ B, @GBĝBR IG SB # t+(Lh{t Y 1C# MTC @C @C @C @C @`p FYcB/p $p# ? I[QbGWXZ/p(p(Y@IC @C U?p(+p(# URV_ S R_ 3C#  Lth<mYIA@AĊ# PB1LZĀ6P1PA# ƒċ# 7IGVWXWBG! R]^TVC SSUR` `1р^SB `G G! RBR$# # ZΞQ;/ph@ph@(РP+?ph@kph P+P6oP   @瞛Pvu  Ā ΦQ/ph@ph ?ph@kph ?ph@kph # ?ph@kphv!33ZPMT5FZB+E(z(# ^][`WXS SEI@ Z# Y\΀[ PWXG[ # I\a`\+U*ZZ# LthYYB1Jy YQ^\YQg!WXWXJS+XW7y B N OMƠQ ?K # }{yBv N O7ӠQMI+9\Y\+\JR9P(P# LM \F6\AB [ IZF cL\FXN9C `9C{{{{{{{{{{B[GZI # + ,A6AkDYLWXFXC 8{{{{{{{70WXADAASO`NCZNZYNNYCYTڀ`LS 6=^tjXWFA Z [NWOX IV]^G [NWOXWXQAPGA?A6QSÂYK>A>YQFXQfx['aWX&A%EA [SÂlYHAgYDfc#LWXā  A6ADYF {{{{{{{{~~~{Y}{:WXAPQBWXGA;A6XSÀYRSDAYA\Aw7<MLmtUDn„WNXOAhPQfBbWX``G^AY\;[A6`SÀYRZRAHPPYAaAWFXFAAA@P> j2?@&&WXY )C+NOAWXAGA;SD ABf×E JEI\YSYZ ZLU1v2WXPQY )nBBWXB\B[rZE JEI\YSONeLDZ:7t9 `E`9A6ALWXjF מ DSAGV WE [NOWXP [ I}1{WXWXLā=7EҠA+! DSAGV NCWXM [ IA+WXNFрOF [WXEA;WXAĂ/ 3U<MLNO[sFFAA6AAA`AA׀F̄F@BK@" @+ `  @6F@F@``/AB`@ CVUF̈́F` ʀ6AAA A@(@( À# ‘D } 0lth_5+}ޭqqA6B6D6BπF ĠA AZ_Aפ`ASRF̄FN6@BK@" H @(_GBCA_@``EF D`@1`G CABŀÀ@@`@!C `AF@F@ā ܉ZL  Z__<A_AVBVlt=BV TBVUA__dc+*OW+NRTTOxCR_fUЀVŞH_BWhU;˄`_21s`A`'& f_`_ A[  +@(R+@(@#QF*UR+UVATVU # )/ph@ph?ph@kphrXm\Y/p(p(E%G @  }*19 ' ?p(+p(Y# YDLPWX T]VBG S^YSBYDEQ` LPLIY@SB INZZI QE# 5SN# PQWXʸNO F # [| TV]R]TSUR^S # !+_ Yx^A]AZؠQÈJ^*+DYY^yEDDY]AZNWOXQEDZင\\1g*\ "E8Y@Y]RVU ǀWNXOb7lt,|DZZIonDـDedZπDZ%@AІ̆VUV # h3NO@AGVA PÀYCY# 2V# AVUT# MB TUA/ąV # ML/A1 # L# ANO# WPXQY)=EYPY # NYR€YNN# A+# 3 qSÒZNZ# 60_@APOQ`H%} 'F+`HPu `@_P# ZB+F C8# AEYF@Y# AWXĂ/ # NVWXW# YNY# A+# 3oYS@@YCYZBZ @GVWX@ Y# Q# C @Q# C A @\"\S@"VSO 6ĈEN 6ОEN 6Q`*%VB`H`H5Q`*%VBt`H`H5Q`%VA`HA`HA'kK*Q`V`H 6*%`H`H'. 5D@5c # '"S SRKRPQWSРBGVNOPSǀSP S # }t RBG NOS GS G !GVNO# }S. Q# @/ph@ph5 7 GϠBG! SR/646_RQS_ R S?;W?ph@kphR猆+JzR(?ph@kph GG! RSAJS̀RR 7# ?ph@kph# BG! ]^ # I C U# B+# !+# B SZRRS SB 9PFQƀVVUJ 1 NĀ9  `NW E 6i V sĀS SBVNO  S[ E 1 NĀ # *|LhmQ Q # t BQKQ# PP{ W'Q QQQ QQ ߘ Q+K/1FǎÌNJw # 35 Q QQQ Q PQ6PP#  Y+1NA6QQp #  * # 38z*1]*BONQ6J,!A Q+^^ QNOBA! #  i G{ Q|{((Ā ? A /6-6C @Q# ))FP'FQDBLEDB G E LQDBLEPFFIćĈăąЄ# z# # !+33 [C @C @C @C @C @C @`p҄GI@DEFLA1MHF@6EQM@IGk F@6IMIāM/p $p# Jho6Mekk@6M_@6;Z,33@Р1MIABC # ABx# !+@ D   # # U=+vUvBCF09FXB + N1C 6C8F09C +HF@6E,o# # BKQ\6ƀF IDL 1 N6H 1 N Bȉ@AH# MCMC+CM # ! # C+C # 44 35/ph@phC+Cq?ph@kph# ,3C6# 6B # # 섁@ +k @1# !( _Hܕ܄+Ϟj@F@ `+11X 3123>@!p.!A s⑂@ @AF ## # !!"s p`pA bDBOϠ 1E OS p# G AEA@BF EG HK 1ETRIP EAO sO G@iNJK˜FC@@BF]GG@oFS#ab?" [IFF# #""#"=]p pSRXN` P 0Q Q YZ О E@ @ E 1Q]‚p# @M SA G[C  ""#####!#!##D[LL@fLOLoLmMNMIG#% qXQ3ĤX;\@`XS%'`@\'X# hA@ QA[1DHV ]'#b##NF[1DHV)NGQBIT#HL[1۠Y1Y@" Y&ZA&Z[1DHVIGa@Zs1@N Y@&VV<V9V6[1CHV1I""V1G@CZQCYQG C pÀYZA@@eZ1B@Z`GG}YY&Z@# p``p^] )5]@AB_][Y@QADQZQBY@ĈE6Bg^ p# ""TV00P##<# #|t$#&?+ #    |t#&?+ # # %EPP00 ACA E |%; t#&?+E^|PR00  _z|E|^t$$,?+||#EDπF ĠB΋QG F ʀD+TR$'ZDׄDI3BJEKCFyDOFB6E@6ArP + 1QCܗ 0y xBD+KFQFQFWBwPB ЄP怑GG[柊++!Q++!+,,5$TO [DFF6EEKhhhgfBewF@0 CXJQB1h6ǀy C DD P+KFQFBJGy ÂGG1pPAC +%!!GTӞw@KQB@61U@ KCNJĂ܄6À @KQNDI@lJFJCIIBΠQ:ʜNyJQKQĀJ/6C6(,+!+!+,LP'i&c&L%j IPRED)DDNF  EKBF @Q6@JPF 6 M_CK_%'3 oPDJ IQDF6AKFQCK_%+'PQ͟+&b!Q+&Q%%&ALL K IDGDQh IIADDIIFXJQCcKF6+DJ B%QC*˞aa' QQ ICB1€F DPQ_QAFND&D&O,$$v&K%EKM B%'Q_J  K@* H%'@(KK+I_K#BK`M@#QbAIIDMN F6FKK _IQҠMK1yAʠMK1yv DBKFFM `K@P QQҞ QMJM`UEK>Q hKMeII ΀_E6q.y' IICđB@1B P;XJQp# c p+p(%;/*$r$++!+,,5,$+!$' ':BJFF $ # ʠK` D II ӠB1P1wD+KB I瞮 ҠB K D IIF  FBDQKNy@HID@D€DrI1oD+KGeCI I^ BBܗI ICF  ŠB- @KQB@6T !Q$eLP$$$+!$?Bt MBZ ;KI D I KI D I , &TYTKPP&TP'T'^&'iwDIBK̈́JSC DIFF IEDמҞОсKy  D5 ͠CFK ICDEKnCCFF DBKCILUCCIDGKCǞ{x!Q+!+(_++,(C(G+!o؞ӀDIBK̈́JFGFc0 DCIĐ IK ֠CKD@yNqāKJpGFCDEK@CC:`DI79݀FF DCBK Ā$#I" IG}!!wDI@lJ_6D/6Bh!!G,)KF@6+%'6* 6|EK+D@*l# (u EDIF+*)^)\*8ByC  +C $ByC CKJIBCHĕ!Q++)nF C yC C EC DC  BQԠCB yC1 CHCB  ****_**AUFX0KQA B@6lL|CSEQ__ _][BVRy   RPM H E C A ? C݀5Rܝ  ?!ط@*%(DIA +b+u!!G,!*"*< D&~C 1C C  # CB@6l C FC̀# * *rxB@~ĕ# (C @[FYGc 4# c # c #  + C G Z # # R@hŠCJ# # ByCC CC @ 7O 4L9B6C턕섕IQ+CXN1 C aBB66Bc # Bc # 3*EByCC c # ,:5# BCDB1ABCD !E-E*GCV B B# BB# !EEECD# * N 5# /E/x/,F ÄB%*h-B1ANONBB# # +2*+1m# *2Q+*1d# B1ANO 1Q# NOM M# M M# NOM M# /E/> >{c 6~ e5[J.55394855|5650<@ A# @HBD`pCDEF!I JAFGHDIH6 @QDCEGEI Aˆ `@# 1$7(50KM# BJJ B` E ``h`# D# r`@@ABCDEF` &`JHIFˤHG^FDZ HFFEFĎEJ # 55 454H4BGDFzDHI`(j򀁄IJKLG@ @HA BF@`CED@ H6RC @I܆/#@# ``@ # CČ @䀞l657'30<{!I; @"HDDBI&CCHÀEIH`(B` I1G@ I @H hB`(̠1J@ H @ `0x54  ~ޭ1$ @6NN @ SA# 47'# 10!/p(p(` F/ph@ph@AB01Gă51nN1U1U(` /ph@ph),ƞ,@,i `?ph@kph`?p(+p(# 44 36Y531⒂@ @A BCDEF 䃧# 1k@1k.1> 01AwA?10,qgI,B0&C1&D `@/ph@ph?ph@kphq`H@@h@`@@q`H@D 1233541k11PiSC* bĀ+u*M] # Sm vjsCk JS검@mkb `@nbG*`@ G*g'ā  2433# 54 oSJRCQM܀ Ā #Ā# # # e3+# '`)iHOr@bRCj(""@`'`@(qMqK `#Ā# jr) # 5 4 p# !# @ A# 4 # !"Ă##1$544A# A# I?FE # 45 gG?442g3i3444HD QeJ@`ĺQF!  @ @+ # 1)# Fdߘ @  JāIĂ  Ā@ P 4OIF H @# # F  Ď # 糧 ΫQˣ1HiQB ` 1N# G D qMBʃ@ >A A@ ` ` 1$V.b0xst44 !CDC!CBp c # /#qP@#I""B1F@ y@(@m/P P!U%'y# 25J0 9 ܆@?p(Āp(`@qEB`@ Op(+p(@`@qDB{y`H@ĀOp(+p( # 5J/"qI!C?#Qp c # 55 4@5[$ @0 PßQA@pAA o0_2nm6nqp!47.4"ovA rphjBCDpEF0AmedP@[@ !䃞W 5.O%1K%&ߥ/ # ܋ /&&1„% # ܋ ?%%& # 2325UC @IC @IC @IC @II`pF!`@qC p@1 p~ !1Eā䃀*!oqC@1gIf61I I H!ID H@Iq~4 /} ?| ?|6F6F?!1qB@1I nEE6YJO@ 1LJIq# # F 6y6lFI6nIȃȇȃȇȂwÂvàJ*+$DB$ @@Ģ$@ĪHI f)% JS `k z&‹DI 7,iIJ7?40d~1k35l7, # 7. # 67C @ð+`pF @6@6@6R 6D6ƨE6 !F66DXʎ`@@ Ac # 7&7563707$6133004 4 472732747576777879103d37:l02^1P"7;7<7=6"$7072737475767778797:7;7<7=7>639ⷀ@u  `0_ pP㬠!@@BK+k@+kU:S:E:U:cʃ:h W OC M1OS4 (G330) 84050114444750INITIAL:: JCL\CICI0KS\W:Z# K ABORT? OC ] _OC ] c OC v xAT  >:χ: f: n: y"y X x B  ! q>B|{ñC F E:  : hCEC @Û㕣f&!1ç1>/Njc  \ x6mG2G2G1G2G1G4--E7G1--G0E3----OVicEdDanoP8){ @ƤI@0@¡Ǥ ǣ)@IЀЀ؀QA1*@ ΍╢@+kUŒk5mEEEBE5E3--E2E1POVicEdDano9s~  LDLD? Z1 b 4 . }8"S >>>  EXEC::  SYSLD '1ƞ þmM)ŢfE) ]]⺤B1C: ): ̃ !_pC PE` C   p0! pCPEs "S)  LD hbIqC C @U ilffeKB́QȃYAـ ԄQ`(QBNKCBǞB!=? pCùC @KP@E OQF@ +zCI ƀv: #  [ G +* OC ` EXEC:: NOT FOUND  BAD TYPE CODE PROGRAM TOO LARGE LOAD ERROR  NO EXECUTION ADDRESS  UAT WIPED OUT SYSTEM EXCEPTION XXXX OCCURRED AT LOCATION XXXX%I@2NK0M9K+U'#  =/p(p(C @`pD+E` B@ C@/ph@ph?ph@kphE@/p p?p(+p(# OCSL :@`` D@1HNFLODL)OB`H: () # `@:(x  OVST .4@pJp@`H@Bƒ C ADEFGHF HAEG@h @6@6@6@6I pB# ) bZP j tPO tBƻ: C @@ B+{āc  0 0$: b: l  : b: lw 1: l 1: b Z: :ZPZP +׀!ӄҢҢ̀@QD@QBkz A@N JÀA+kUǺ : ::&y X R C x r ck4  > }56b+)*  OC(OC+OC% CRX> ? b ABCDEFG"H0I<JEKOLWM^NfOpP{QRSTUVWXYZK NOT READY WRITE PROTECT TIME OUT POWER FAIL  VOLUME NOT ON UNIT  VOLUME NOT FOUND  LOGICAL UNIT NOT RELEASED  BAD CHECK SUM UNASSIGNED DEVICE LOGICAL UNIT NOT IN UAT END OF MEDIA  HARDWARE ERROR  ILLEGAL OPERATION NON-EXISTANT MEMORY ADDR  ADDR IN SYSTEM MEMORY DIRECTORY FULL  DISK NOT LABELED  FILE ADDR OV ILLEGAL AU  AU NOT FOUND  WRITE DIRECT EOF  FILE NOT EXTENDABLE ILLEGAL FILE ADDR ALLOCATION TABLE ERROR  SYSTEM USAGE ONLY BAD FCB CHAIN FILE OPEN FILE NOT OPEN ILLEGAL FILE POINTER  UNIT NOT GIVEN  UNASSIGNED FCB  BUFFER HAS WRITE PENDING DISK FULL RTX ERROR UNDEFINED ERROR0GG GBpaFbDcE/ph@ph?ph@kph# FaDbEc# # 6}5.6+</ph@ph/ph@ph?ph@kph?ph@kphĢ/ph@ph`pHK Q KRQH ?ph@kph`pC# 6}5!n!ŸǟžǜœǙšǖ˜Ǔ–ǐ”Ǎ p+LJc #  + itPt| @ n0~ Lr~x{un t 1H  1H yH  yH>   M DF00AAM  MG%M DF01AAM  MGM%v))*m?.2 fdMvLP008m'%%2%vLP018Q6%%2%R DM00AA  &R DM01AA  &R DM02AA  &*R DM03AA  &RM*v*}*}+#?.2ydR{ DH00AA   !@8{ DH01AA 7  &7#]@L DH02AA  =>z DH03AA 7 =7@Lz* Rv*}*}+#?.2BdD_ MT00 A C+ 0P@_Dv++,[,?.2 0_} X1X2X3X4SILOSFUF%OCCISLSOSALDOVXX%POvZ1Z2Z3Z4Z5Z6ZP4dTI1ECNBCO# $'/p(p(` D/ph@ph)@BCOD6DZ `+ʀP COBBT€RQ EVAQ mWG CW90.r@ VBCOOV"S} 00ߞހP D  /NBy M  `+f,NQ (Vy )ք5` @P  `+ON sVWNy%ZrY['OCP  /NM D%Y'B4BC] ҀO? ?ph@kphD?p(+p(# r pN N igIRN1N1  # }d/p(p(` BDCEAׂI `+C Uф@z 0 :D A FE [ _ E :E ED DAQ\DQZBN!BB @BCN1@CA,D,E,@k%'jACN€MDB BEB CA?p(+p(# $ </p(p(` /p(p( MNQ@ ϪSW/p(p(Nq% ' z ` ?p(+p(M?p(+p(# '?p(+p(L 0n$$MN1EMM M1ÉB I@@Mǁ# 8 1 æ :u:/ph@ph?ph@kphF:} ª # @SAyCI"S SLCI SL @Ǡ1DSB# :"SFUF"S<ZϤA A FDZYBZ Z Bą  Y H H H @ DggZAZg Zu3G-Q  7mѤA ʄZH ĞƞΞЀWX AZ̀  TZT UVETi`ZӀ`Z͠AZ QZgZAs3G-Q5 !   70N͠Y ABSA ZZߠYۀABā A@Ѐ ĀBĉZĊ¨ć§ā@ giZAZw ABZZCAN 3G-Q7&*B1:A QB1NBɀ6[ 1 g3!'P!psqowl! _ "* H1KQJGBĀZB B C @C @ pā_B __ __6 1  B* pE/p p_/p p @*31*_1A&# /p p@pKp@g*B1RBJQDC gg3f N OQJ?QC @QB[TP G `QRS GGG_\ ºG!ac B BR IG*SF@ B, @GBĝBR IG SB #  +q {t Y 1C# MTC @C @C @C @C @`p FYcB/p $p# ? I[QbGWXZ/p(p(Y@IC @C U?p(+p(# URV_ S R_ 3C#   !  | YIA@AĊ# PB1LZĀ6P1PA# ƒċ#  7IGVWXWBG! R]^TVC SSUR` `1р^SB `G G! RBR$# # L ZΞQ;/ph@ph@(РP+?ph@kph P+P6oP   @瞛Pvu  Ā ΦQ/ph@ph ?ph@kph ?ph@kph  # ?ph@kphv"S65ZPMT7FZB+E(z(# ^][`WXS SEI@ Z# Y\΀[ PWXG[ # I\a`\+U*ZZ#  ! N YYB1Jy YQ^\YQg!WXWXJS+XW7y B N OMƠQ ?K # }{yBv N O7ӠQMI+9\Y\+\JR9P(P#  \F6\AB [ IZF cL\FXN9C yB[GZI # kK.6A6AkDYLWXFXC xBBBBBBw0WXADAASO`NCZNZYNNYCYTڀ`LS v}U  XWFA Z [NWOX I^G [NWOXWXQAPGA5A6QSÂYK>A>YQFXQfxH'aWX&A%EA [SÂlYHAgYDfc#LWXā  A6ADYF P  :WXAPQBWXGA;A6XSÀYRSDAYA\AwwU|  Dn„WNXOAhPQfBbWX``G^AY\;[A6`SÀYRZRAHPPYAaAWFXFAAA@P> jrH@&&WXY )C+B NOAWXAGA;SD ABf×E JEI\YSYZ ZC 1v2WXPQY )nBBWXB\B[rZE JEI\YSONeLDZzwU `E`9A6ALWXjF מ DSAGV WE [NOWXP [ IqWXWXLā}wEҠA+! DSAGV NCWXM [ IA+WXNFрOF [WXEA;WXAĂ/ 6 !|LNO[sFFAA6AAA`AA׀F̄F@BK@" @+ `  @6F@F@``/AB`@ CVUF̈́F` ʀ6AAA A@(@( À# ‘D } ! p  7k}ޭqqA6B6D6BπF ĠA AZ_Aפ`ASRF̄FN6@BK@" H @(_GBCA_@``EF D`@1`G CABŀÀ@@`@!C `AF@F@ā ܉ZL  Z__Q |A_AVBV  =BV TBVUA__dc+*OW+NRTTOxCR_fUЀVŞH_BWU;˄`_21s`A`'& f_`_ A[  +@(R+@(@#QF*UR+UVATVU # )/ph@ph?ph@kphr m\Y/p(p(E%G @  }*19 ' ?p(+p(Y# YDLPWX T]VBG S^YSBYDEQ` LPLπIY@SB INZZI QE# 5SN# PQWXʸNO F # [| TV]R]TSUR^S # "k_ Yx^A]AZؠQÈJ^*+DYY^yEDDY]AZNWOXQEDZင\\1g*\ "E8Y@Y]RVU ǀWNXObw 0 ,|DZZIonDـDedZDZ%@AІ̆VUV #  3NO@AGVA PÀYCY# 2V# AVUT# MB TUA/ąV #  !/A1 # L# ANO# WPXQY)=EYPY # NYR€YNN# A+# 5 qSÒZNZ# v0_@APOQ`H%} 'F+`HPu `@_P# ZB+F C8# AEYF@Y# .AWXĂ/ # NVWXW# YNY# A+# 6oYS@@YCYZBZ @GVWX@ Y# Q# C @Q# C A @\"\S@"VSO 6ĈEN 6ОEN 6Q`*%VB`H`H5Q`*%VBt`H`H5Q`%VA`HA`HA'kK*Q`V`H 6*%`H`H'. 5D@5c # g"S SRKRPQWSРBGVNOPSǀSP S # }  RBG NOS GS G !GVNO# }S. Q# @/ph@ph5 7 GϠBG! SR/646_RQS_ R S?;W?ph@kphR猆+JzR(?ph@kph GG! RSAJS̀RR 7# ?ph@kph# BG! ]^ # I C U# B+# !+# B SZRRS SB 9PFQƀVVUJ 1 NĀ9  `NW E 6i V sĀS SBVNO  S[ E 1 NĀ # *|L  Q Q # !,  BQKQ# PP{!,!  'Q QQQ QQ ߘ Q+K/1FǎÌNJw # !'PO5NM7S! Q QQQ Q PQ6PP# ! ! +1NA6QQp # !'P!j! !'# M68z*1]*BONQ6J,!A Q+^^ QNOBA! # Q!Pi G{ Q|{((Ā ? A /6-6C @Q# ))FP'FQDBLEDB G E LQDBLEPFFIćĈăąЄ# z# # O"kN6M5L![C @C @C @C @C @C @`p҄GI@DEFLA1MHF@6EQM@IGk F@6IMIāM/p $p# Jho6Mekk@6M_@6;Z}.665!@Р1MIABC # ABx# !+@ D   # # U=+vUvBCF09FXB + N1C 6C8F09C +HF@6E,o# # BKQ\6ƀF IDL 1 N6H 1 N Bȉ@AH# MCMC+CM # " # C+C # 6:6=67M/ph@phC+Cq?ph@kph# .65C6# 6B # # 섁@ +k @1# #( _Hܕ܄+Ϟj@F@ `+11X X6T45R5STUX>jZ@#pjZ.#6A s⑂@ @AF ## # "jZ#q}#Ps p`pA bDBOϠ 1E OS p# G AEA@BF EG HK 1ETRIP EAO sO G@iNJK˜FC@@BF]GG@oFS#ab?# [IFF# $##$#=]p pSRXN` P 0Q Q YZ О E@ @ E 1Q]‚p# @M SA G[C  ##$F$C$S$R$a$a$[$[LL@fLOLoLmMNMIG$% qXQ3ĤX;\@`XS%'`@\'X# hA@ QA[1DHV ]'$$$NF[1DHV)NGQBIT#HL[1۠Y1Y@" Y&ZA&Z[1DHVIGa@Zs1@N Y@&VV<V9V6[1CHV1I#$V1G@CZQCYQG C pÀYZA@@eZ1B@Z`GG}YY&Z@# p``p^] )5]@AB_][Y@QADQZQBY@ĈE6Bg^ p# #$,TV00P$$<$$_t&;%'?.2$D    t%'?.2% % %EDπF ĠB΋QG F ʀD.!TR%)0ZDׄDI3BJEKCFyDOFB6E@6ArP + 1QCܗ 0y xBD+KFQFQFWBwPB ЄP怑GG[柊--"--"..E.h& TO [DFF6EEKhhhgfBewF@0 CXJQB1h6ǀy C DD P+KFQFBJGy ÂGG1pPAC -&""TӞw@KQB@61U@ KCNJĂ܄6À @KQNDI@lJFJCIIBΠQ:ʜNyJQKQĀJ/6C6(.6."-"..ELP(''&j IPRED)DDNF  EKBF @Q6@JPF 6 M_CK_%'3 oPDJ IQDF6AKFQCK_%+'PQ͟.!'"-''<''LL K IDGDQh IIADDIIFXJQCcKF6+DJ B%QC*˞aa' QQ ICB1€F DPQ_QAFND''.E&%'&OEKM B%'Q_J  K@* H%'@(KK+I_K#BK`M@#QbAIIDMN F6FKK _IQҠMK1yAʠMK1yv DBKFFM `K@P QQҞ QMJM`UEK>Q hKMeII ΀_E6q.y' IICđB@1B P;XJQp# c p+p(&{/*%%--"..E.h.6%."& (`(zBJFF $ # ʠK` D II ӠB1P1wD+KB I瞮 ҠB K D IIF  FBDQKNy@HID@D€DrI1oD+KGeCI I^ BBܗI ICF  ŠB- @KQB@6T "%LP%%%."& ?Bt MBZ ;KI D I KI D I .S'TYTKPP'TP((((wDIBK̈́JSC DIFF IEDמҞОсKy  D5 ͠CFK ICDEKnCCFF DBKCILUCCIDGKCǞ{x"-".)--.E))."o؞ӀDIBK̈́JFGFc0 DCIĐ IK ֠CKD@yNqāKJpGFCDEK@CC:`DI79݀FF DCBK Ā$#I" IG}!!wDI@lJ_6D/6Bh"".6)KF@6+%'6* 6|EK+D@*l# )ZEDAAѠBCAĠCI  ID  EK@BĕXCĜ FN9XKQA rC6G@G@XQII/6РBܕCܝ ]} .!+4"+[*A+N++"".6]@KQ26٠C =6?6ˠCCKJJBC  %BCBE@KQ:C6N53C6FB # # }/*F AE D+f++.J*l)*}mEDB.m5# BCDB1ABCD !E-E*GCV B B# BB# !EEECD# * N 5# 1x11o1\.# .m..DBBCDEE EE# G N GH GDN GGGG CD# 1x1W11].2DBBQ# CDE+E+*# CGCCDQÀCD# G G# GHIGNH# 1x11W1X11o.1g/C @QBBRRc # 1x.q/-F ÄB%*h-B1ANONBB# # +2*+1m# *2Q+*1d# B1ANO 1Q# NOM M# M M# NOM M# 1x1o1g1]/w B 1A)BNO# 1o1/M0BBBBGCBGB1D+1A@AB0M# 21o2/ M0@IG0M# 2 1/ QPONMLKk p`c # / # 1/F# RR# 2 /N# 1/N# 2 /# 1/# 2 /M00M# 2 1/M00M# 2 1/# 2 1/R# /R+R# 0M0܀R0M# 0  M0 HJR0M# 0# 2 10# 2 10!# 2 10'K# RR# 2 00.2# # 2 108.2#  # 2 10@ .2I@*# I@#C # 2 10M5# 21]20UM00M# 0M0\N6@ 5# 220f M0N50M# 220r5# F 21g20zM00M# 0r0 N 65# 220 M0 N 50M# 220 M0 N 50M# 220NO@ RA9@A8*2+# .m.../1120@RNOA8# /-/w0@RA9@*A # ////////////000A //00  A6AA6A1000!0'0@RA8.A6A    0M0U0\0f22220r0z000  200080@1(C @C @`pä@Ak p`c #  01601:\01>01B ~1A v21U# # N#  N # 1o @IGVA # 1x 1Q# .i|# 1CDE6A)BCDE# 1x1?66/66# R B# Q B# P B# 1#CDEM M# CDE*MMRA R# BNO# 11!QGV++ *2F+3.a" p܀ p܀# I# *6# 1_1]1A֒AN2XC N# P# O# Q# N@p# @2 A֒AN2XC N# P# O# Q# r@N# @2AIk p`89   "9C @_9#C @? P Px!@p@C @ *P z ał S 9*q 2 r8I>> >{c 9,~ e7J1(8$75l6k85|88828<@ A# @HBD`pCDEF!I JAFGHDIH6 @QDCEGEI Aˆ `@# 3W9[72~M# BJJ B` E ``h`# D# r`@@ABCDEF` &`JHIFˤHG^FDZ HFFEFĎEJ # 7M7S7"76{6BGDFzDHI`(j򀁄IJKLG@ @HA BF@`CED@ H6RC @I܆/#@# ``@ # CČ @䀞l9(79Z33<{!I; @"HDDBI&CCHÀEIH`(B` I1G@ I @H hB`(̠1J@ H @ `277"  ~ޭ3W @6NN @ SA# 6:9Z# 3c!/p(p(` F/ph@ph@AB01Gă73N33(` /ph@ph),ƞ,@,i `?ph@kph`?p(+p(# 6:6= .68753⒂@ @A BCDEF 䃧# 3k@3k.3> 01AwA?10,qgI,B0&C1&D `@/ph@ph?ph@kphq`H@@h@`@@q`H@D 45657 t4k44PiSC* bĀ+u*M] # Sm vjsCk JS검@mkb `@nbG*`@ G*g'ā A A@ ` ` 1$V.b2st /74 !CDC!CBp c # /#qP@#I""B1F@ y@(@m/P P!U%'y#  r7}0 9 ܆@?p(Āp(`@qEB`@ Op(+p(@`@qDB{y`H@ĀOp(+p( # 7}/"qI!C?#Qp c # 7J7<7( 2@7$ @0 PßQA@pAA o0_ 2 rnm8qp#6 t9a7""ovA rphjBCDpEF0AmedP@[@ !䃞W 7.O%1K%&ߥ/ # ܋ /&&1„% # ܋ ?%%& #  r s r8UC @IC @IC @IC @II`pF!`@NPC7 @0)@ Ѐ+ @ 4*@u *m{ Cşy+v f[XYY HC C FTQ&FFG_ ?`@gOgLXu P+s=胾 H@p;v 15 50 0- F Jr4 .-瞂ʞ ž@AvLS)"$ C jjh p ⋾%Rw % ssevs nl؆f/o6B k  Z#擾F)%'+ Lo1¢\ !HF9 @?{CDq)3 @ o O m g i' V H`Fnrgy)v1%W4b p"Q{[ sn`"FE=*`(tL%J@)   :K 654y23 ł^֠ By44444q4  A@6zJx B4قD A@6XQFYh@o6D B AXĀޕ44) D D+dOS:: SCT&\ 2 2 6V 2 6Q N 6L f~|H! *1բ*) $)5) $)5) $71`i@) A@61MJ@. Df  5O6v' ' ~'$   PA yIĚaEAyC Tm6l''@yX 6 yꀑy   J۠# 6CyNqDI @.½@@ƺ6¼UV@m¶@-ƴI_6IưIƯIƫ $"Ec c  ```bqj*@A 2: #  ')'''*E 1 5  5 1  5뿂:C ) @@)  * * **"***6*s*vNk# A# DB# Dka@o6H@O6.@H # BkV# Ar# A@6X/@^Qs@O6@o6Q@# Bސt@O6@o6# A@ބtZ# # # _6HC @ c o6C @c a# c [֏`B# # A@6A# krp# 'C'% )mG2G2G1G2--G4--E7G1--G0E3----c c  ```bqj*@A 2: #  ')'''*E 1 5  5 1  5뿂:C ) @@)  * * **"***6*s*vNk# A# DB# Dka@o6H@O6.@ N # Q\*l6GV++ c*2F+3.a"JHJ I# #%#(mG2G2G1G2--G4--E7G1--G0E3----u# 6CyNqDI @.½@@ƺ6¼UV@m¶@-ƴI_6IưIƯIƫ $"Ec c  ```bqj*@A 2: #  ')'''*= 1 5  5 1  5뿂3>) @@)  *** **"*.*k*nNk# A# DB# Dka@o6H@O6.@# BkV# Ar# C p@1 p~ !1Eā䃀*!oqC@1gIf8cI I H!ID H@Iq~ t /} ?| ?|8x8x?!1qB@1I n  8JO@ 1LJIq# #   88  8IȃȇȃȇȂwÂvàJ*+$DB$ @@Ģ$@ĪHI f)% JS `k z&‹DI 9^i  9q62~3 0 CI:MODE (LAST PICO MODE WORD - WORD 28) ORG O: ENDM TITL BISYNC PICO DIB MACRO * * BISYNC PICO DIB MACRO * DIB:BP MACRO LPOOL O: SET $ TABLE: REL SHARABLE TABLE: SYSTEM D:#(1) NAM D:#(1) CHAN BP:#(1,3,3) WORD 0 WORD C:BP#(1,3,3) DI:CIB WORD 0 DI:FCB  BYTE '##(1)' DI:NAM WORD 0 DI:DN WORD 0 DI:DS IFF #?>1  WORD -7 DI:SPB ENDC IFT #?>1 WORD #(2) ENDC WORD 1  DI:WBT WORD 0 READ MASK WORD 0 WRITE MASK WORD 0 POSITION MASK WORD :1F FUNCTION MASK WORD 0 RESERVED WORD 0 RESERVED V: SET 0 IFT #?>4 V: SET #(5,?)-2%11++:8000 ENDC WORD V: DI:DVS V: SET 0 IFT #?>2 V: SET #(3)%2 IFT #?>3 V: SET V:++#(4) ENDC  ENDC WORD 0 DI:OPT WORD V:%8 WORD BPO:02 WORD BPO:03 WORD BPO:04 WORD BPO:05 WORD BPO:06 WORD BPO:08 WORD BPO:08 WORD BPO:09  WORD BPO:10 WORD BPO:11 IFT #?>4 BYTE #(5) DI:SID ENDC ORG  O: ENDM TITL BISYNC PICO OPTION TABLE MACRO * * BISYNC PICO OPTION TABLE MACRO * BPO:02 SET :0016 DEFAULT SYNC CHARACTER BPO:03 SET :1610 DEFAULT DLE CHARACTER BPO:04 SET :FF1F DEFAULT PAI D AND ITB CHARACTERS BPO:05 SET :1703 DEFAULT ETB AND ETX CHARACTERS BPO:06 SET :0102 DEFAULT SOH AND STX CHARACTERS BPO:08 SET :0405 DEFAULT EOT AND ENQ CHARACTERS BPO:09 SET :1530 DEFAULT NAK AND ACK0 CqC p@1 p~ !1Eā䃀*!oqC@1gIf8dI I H!ID H@Iq~ t /} ?| ?|8y8y?!1qB@1I n  8JO@ 1LJIq# #   88  8IȃȇȃȇȂwÂvàJ*+$DB$ @@Ģ$@ĪHI f)% JS `k z&‹DI 9_i  9r62~3k579_ # 9a # 87C @ð+`pF @6@6@6R 6D6ƨE6 !F66DXʎ`@@ Ac # 9Y958+8f9c95$8d562836=66!6Q9e9f59g9h9i9j9k9l3c559m<0/p44#9n9o9p9'#P$9c9e9f9g9h9i9j9k9l9m9n9o9p9q8f9ⷀ@u  `0_ pP㬠!@@BK+k@+kU:S:E:U:cʃ:h   OC M1OS4 (G330) 84050114395325INITIAL:: JCL\CICI0    : #   ABORT? OC  OC   OC  AT  >:χ: : : "y X x B  ! q>B|{ñC F E:  : hCEC @Û㕣f&!1ç1>/Njc   8mG2G2G1G2G1G4--E7G1--G0E3----00000000000000000000000000000000000EXED PNXBT: EQU :0100 PRE INDEXED UNDBT: SET :0080 UNDEFINED NULL: EQU :0040 NULL SYMER: EQU :0020 EVALUATION ERROR BYTRL: EQU :0010 BYTE RELOCATABLE KNXBT: EQU :0008 STACK INDEXED (K-RELATIVE) TITL * DIO INTERUPT VECTOR EQUATES * IV:AIO EQU 0 AUTO I/O IV:CNT EQU 1 BYTE COUNT IV:BUF EQU 2 BUFFER ADDRESS IV:JSK EQU 4 JSK $+1 IV:EOB EQU 5 EOB ADDRESS * * CONSOLE DEVICE ADDRESS & FUNCTION CODES * CONDA: EQU 0//3 CONSOLE DEVICE ADDRESS CSSFC: EQU 0 CONSOLE SENSE SWITCH FUNCTION CODE CIRFC: EQU 1 CONSOLE INTERRUPT RESET FUNCTION CODE CDR: EQU 4 CONSOLE DATA REGISTER FUNCTION CODE TITL .... S T A T U S R E G I S T E R E Q U A T E S * STATUS REGISTER BIT POSITION EQUATES * CY: EQU 0 CARRY OV: EQU 1 OVERFLOW BY: EQU 2 BYTE MODE CI: EQU 4 CONSOLE INTERRUPT ENABLED RI: EQU 5 REAL TIME CLOCK INTERRUPT ENABLED XA: EQU 6 EXTENTED ADDRESSING MODE INT: EQU 8 INTERRUPTS ENABLED IM12: EQU 12 LEVEL 0 WORD INTERRUPT MASK IM13: EQU 13 LEVEL 0 EVENT INTERRUPT MASK UX: EQU 13 EXCEPTION RETURN FOR UNRECOVERABLE ERROR RX: EQU 14 EXCEPTION RETURN FOR RECOVERABLE ERROR * * STATUS REGISTER BIT VALUE EQUATES * CY:V EQU :1 CARRY OV:V EQU :2 OVERFLOW BY:V EQU :4 BYTE MODE B3:V EQU :8 RESERVED STATUS BIT 3 CI:V EQU :10 CONSOLE INTERRUPT ENABLED RI:V EQU :20 REAL TIME CLOCK INTERRUPJ T ENABLED XA:V EQU :40 EXTENDED ADDRESSING MODE B7:V EQU :80 RESERVED STATUS BIT 7 INT:V EQU :100 INTERRUPTS ENABLED IM12:V EQU :1000 LEVEL 0 WORD INTERRUPT MASK IM13:V EQU :2000 LEVEL 0 EVENT INTERRUPT MASK TITL .... F I X E D M E M O R Y E Q U A T E S * FIXED MEMORY ADDRESS ASSIGNMENTS * PUPA: EQU :80 POWER UP ADDRESS UITA: EQU :84 UNIMPLEMENTED INSTRUCTION TRAP ADDRESS UMTA: EQU :88 UNINSTALLED MEMORY TRAP ADDRESS PFTA: EQU :8C POWER FAILURE TRAP ADDRESS EACA:  EQU :90 EFFECTIVE ADDRESS CALCULATION ADDRESS RTCNC: EQU :91 REAL TIME CLOCK INCREMENT ADDRESS RTCIA: EQU :92 READ TIME CLOCK INTERRUPT ADDRESS CONIA: EQU :94 CONSOLE INTERRUPT ADDRESS CNTA: EQU :98 CHARACTER/NUMERIC EXCEPTION TRAP ADDRESS SOTA: EQU :9C STACK OVERFLOW TRAP ADDRESS SETA: EQU :9C STACK EXCEPTION TRAP ADDRESS USTA: EQU :A0 USER TRAP ADDRESS SYTA: EQU :A4 SYSTEM TRAP ADDRESS AETA: EQU :A8 ARITHMETIC EXCEPTION TRAP ADDRESS TITL .... B I T : ? ? ? M A C R O S ** MACRO: BIT:EQU, BIT:SET, & BIT:WORD * BUILD A 16-BIT ARRAY OF BITS AND ASSIGN IT APPROPRIATELY * * CALLING SEQUENCE:  (LABEL) BIT:??? (BIT1),(BIT2),...,(BIT8) * BIT1-BIT8 = BIT POSITIONS TO BE TURNED ON ** SPACE 2 BIT:EQU MACRO EQU MACLAB BIT:SET MACENT SET MACLAB BIT:WORD MACENT WORD MACLAB A: SET 0 * BIT:LOOP MACENT NULL IFT #(1,?) A: SET 1//#(1)++A: BIT:LOOP #(2),#(3),#(4),#(5),#(6),#(7),#(8) ENDC * IFF #(0,'NULL') #(-1) #(0) A: ENDC ENDM TITL .... C O P Y M E M O R Y - M E M O R Y M A C R O ** MACRO: COPY:M * COPY THE CONTENTS OF ONE MEMORY CELL TO ANOTHER * * CALLING SEQUENCE: (LABEL) COPY:M MEM1,REG,MEM2 * MEM1 = ADDRESS OF SOURCE MEMORY CELL * REG = REGISTER TO BE USED FOR TRANSFER * MEM2 = ADDRESS OF DESTINATION MEMORY CELL ** SPACE 2 COPY:M MACRO COPY #(1),#(2) COPY #(2),#(3)  ENDM TITL .... E X C H M E M O R Y - M E M O R Y M A C R O ** MACRO: EXCH:M * EXCHANGE THE CONTENTS OF TWO MEMORY CELLS * * CALLING SEQUENCE: (LABEL) EXCH:M MEM1,MEM2 * MEM1,MEM2 = MEMORY ADDRESSES OF CELLS TO BE EXCHANGED ** SPACE 2 EXCH:M MACRO EXCH #(1),A EXCH A,#(2) EXCH A,#(1) ENDM TITL .... R E T U R N M A C R O ** MACRO: RET: * RETURN WITH A VALUE IN THE A REGISTER * * CALLING SEQUENCE: (LABEL) RET:A VALUE * VALUE = VALUE TO RETURNED IN THE A REGISTER ** SPACE 2 RET: MACRO COPY =#(1),A RSK ENDM TITL .... D U P ( L I C A T E ) M A C R O ** MACRO: DUP * DUPLICATE THE GIVEN BYTE THE NUMBER OF TIMES SPECIFIED. * * CALLING SEQUENCE: (LABEL) DUP 'TEXT',NUM * 'TEXT' = BYTE STRING (DUPLICATION STARTS IN COLUMN 1) * NUM = NUMBER OF TIMES TO DUPLICATE ** SPACE 2 DUP MACRO A:: SET #(1,?)-1 IFT #(2)>0 #(1,2,A::) Q:: SET #(2)-1 DUP #(1),Q:: ENDC ENDM TITL .... S Y S T E M S E R V I C E C A L L M A C R O ** MACRO: * GENERATE A CALL TO A SYSTEM SERVICE THROUGH THE DOOR * * CALLING SEQUENCE: (LABEL) * SERVICE NAME = NAME OF SYSTEM SERVICE * PBA = PARAMETER BLOCK ADDRESS (CALL DEPENDENT) * THE PBA MAY BE ANY VALID M4D12 ADDRESS OR * ANY DIRECT OR INDIRECT UNINDEXED ADDRESS ** SPACK E 2 F:CFNO MACRO F:CFNO/26 F:CONN MACENT F:CONN/24 F:CREA MACENT F:CREA/22 F:DELE MACENT F:DELE/23 F:DMNT MACENT F:DMNT/29 F:MONT MACENT F:MONT/25 * I:IO MACENT I:IO/7 I:LOAD MACENT I:LOAD/30 I:LD410S MACENT I:LD410S/31 I:OVL MACENT I:OVL/35 * R:ABUF MACENT R:ABUF/13 R:AWAL MACENT R:AWAL/17 R:BGIN MACENT R:BGIN/3 R:CINT MACENT R:CINT/8+:8000 R:CTIC MACENT R:CTIC/19 R:CWAL MACENT R:CWAL/21 R:DBUG MACENT R:DBUG/0+:8000 R:END MACENT R:END/4+:8000 R:GATD MACENT R:GATD/27 R:GPRI MACENT R:GPRI/6+:8000 R:GTOD MACENT R:GTOD/16+:8000 R:ITIC MACENT R:ITIC/11 R:IWAL MACENT R:IWAL/18 R:MTIC MACENT R:MTIC/20 R:PAUS MACENT R:PAUS/12 R:RECV MACENT R:RECV/10 R:RBUF MACENT R:RBUF/14 R:SATD MACENT R:SATD/28 R:SEND MACENT R:SEND/9 R:SIG MACENT R:SIG/1 R:SPRI MACENT R:SPRI/5 R:STOD MACENT R:STOD/15+:8000 R:WAIT MACENT R:WAIT/2 R:AFB MACENT R:AFB/32+:8000 R:RFB MACENT R:RFB/33 R:EX MACENT R:EX/34 * * * X: SET #(0,'/')-1 LOAD #(0,1,X:) X: SET X:+2 Y: SET #(0,X:,30) IFT #(1,?) S: SYMATT #(1) X: SET NXBT:++PNXBT:**S:=0 X: SET INDBT:**S:<>0+X:*X://13 ENDC IFF #(1,?) X: SET Y:**:8000//-14--3//13 ENDC *  WORD Y:**:00FF++:1A00++X: STRAP INSTRUCTION IFT X: IFT #(1,?) WORD #(1,) DIRECT OR INDIRECT UNINDEXED PARAMETER ENDC IFF #(1,?) WORD 0 NO PARAMETER ENDC ENDC IFF X: M4D12 #(1) M4D12 PARAMETER ENDC * IFF \Y://-15**:00000001=#(?) NOTE E,'INCORRECT NUMBER OF PARAMETERS' ENDC ENDM SPACE 3 SAVE END  @c qC@N9K B1 N N Ā7# 0 TA-x+I@@B B^T]T CN KrPPPdUV]TUR^S # |W SBRU N)G! RRS>ƀVVUJ 1 NĀ9  `NW E 6i V sHARACTERS BPO:10 SET :313B DEFAULT ACK1 AND WACK CHARACTERS BPO:11 SET :3C05 DEFAULT RVI AND TTD CHARACTERS * DBP:O MACRO IFF #?=16 NOTE 5,'WRONG NUMBER OF PARAMETERS' ENDC BPO:02 SET #(2) BPO:03 SET #(2)%8++#(1) BPO:04 SET #(3)%8+#(4) BPO:05 SET #(5)%8+#(6) BPO:06 SET #(7)%8+#(8) BPO:08 SET #(9)%8+#(10) BPO:09 SET #(11)%8+#(12) BPO:10 SET #(13)%8+#(14) BPO:11 SET #(15)%8+#(16) ENDM TITL BISYNC PICO CIB MACRO * * BISYNC PICO CIB MACRO * CIB:BP MACRO LPOOL O: SET $ TABLE: REL  SHARABLE TABLE: SYSTEM C:#(1,1,3) NAM C:#(1,1,3) EXTR BP:FUN,BP:EOB CHAN CIB: CI:PER RES  2,0 HEAD BP:#(1,3,3) CI:DIB WORD :7600 CI:PRI WORD #(2) CI:DA WORD #(3) CI:IV WORD 0 CI:UNI WORD 0 CI:RD WORD 0 CI:WRT WORD 0 CI:POS WORD BP:FUN CI:FUN JST R:SA12 INTERRUPT SEQUENCE COPY =$-CI:EOB-1,X JMP *$+1 WORD BP:EOB DOUBLE 0 CI:T1, CI:T2 WORD 0 CI:APR WORD 0 CI:TIB WORD 1 CI:USM RES 3,0  RESERVED ORG O: ENDM SAVE END NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNL OVicEdDano2AORG RORG ADATA RDATA RES END 'AEND  REND "SITfCIb CNʃ=ǧŇƃƇ:*t 0:L ':L :L !:L  :L  #:L ':L :PIJ*, -L.O9fgTVUW g:Z)]nT) k # J ! u E)ߛ<Cy@yX%'# d]YphQGYX o#   :NI @%'KM(w 1:L 1:Lm&***** PATCHED YYMMDDHHMMSSQQ ***** 2%'߇# OEIJP< @yXl@j# fǰ,+,-,*,/ # XˢTC@N GHӒ SA Gnj[ # EÈQA Æ# K:?= 6:L/#  ~@I%C B'`(%C @'` Kof akA [Z ~+: vuOCli  ":L ;@X?VTWUO'0 PATCH (E600)  INVALID HEX VALUE INVALID FILE NAME FILE NOT FOUND  INVALID COMMANDmE7E4E5E3--E2E0f%'߇# OEIJP< @yXl@j# fǰ,+,-,*,/ # XˢTC@N GHӒ SA Gnj[ # EÈQA Æ# K THIS IS THE "INITIAL::.JCL" FILE ON UTILITIES DISKETTE #1. USE EDIT TO CREATE ANY INITIAL MESSAGES YOU DESIRE. THIS FILE IS PRINTED WHENEVER A SOFTWARE OR HARDWARE AUTOLOAD IS DONE. REMEMBER TO SET DATE (DA) AND TIME (TI)! 820816105625820816105625820816105625k579^ # 9` # 87C @ð+`pF @6@6@6R 6D6ƨE6 !F66DXʎ`@@ Ac # 9X948*8e9b94$8c562836=66!6Q9d9e59f9g9h9i9j9k3c559l<0/p44#9m9n9o9&#P$9b9d9e9f9g9h9i9j9k9l9m9n9o9p8e9ⷀ@u  `0_ pP㬠!@@BK+k@+kU:S:E:U:cʃ:h   ]‚p# @M SA G[C  ""# # ###(#(#"#K[LL@fLOLoLmMNMIG#% qXQ3ĤX;\@`XS%'`@\'X# hA@ QA[1DHV ]'##i#NF[1DHV)NGQBIT#HL[1۠Y1Y@" YOS4 MF282081610562500840504081929 840504081929 BF46001 VOLOS4 UTILITIES #1 PRODUCT DISKETTE 84-93460-01 G330