ASMB,A,B,L,C HED *** 8K SIO HP7970B/7970E MT DRIVER (DMA/DCPC REQUIRED) *** ORG 00106B DEF MTD-1 LAST WORD AVAILABLE MEMORY DEF MTD DRIVER ENTRY POINT SPC 2 ***** DRIVER INITIALIZATION SECTION ***** SPC 1 * PURPOSE OF THIS SECTION IS TO SET THE I/O * INSTRUCTIONS TO REFERENCE A DESIGNATED I/O * ADDRESS FOR THE 7970 MAG TAPE DRIVER. SPC 1 * EXECUTION OF THIS SECTION IS BEGUN AT LOCATION 2: SPC 1 * (2) JMP 3,I * (3) DEF I.MT SPC 1 * WITH SWITCHES 00-05 = I/O ADDRESS SPC 1 * THIS SECTION IS RELEASED AFTER THE INITIALIZATION * IS COMPLETED. SPC 1 ORG 00002B JMP 00003B,I SET STARTING DEF I.MT POINT IN 2 AND 3 SPC 2 KCORE EQU 10000B 8K MEMORY SIZE SPC 2 ORG KCORE+06000B SPC 1 * CONFIGURE I/0 INSTRUCTIONS SPC 1 CONFG HLT 00B SPC 1 SSW EQU 01B SENSE SWITCH REGISTER ADDRESS. I.MT LIA SSW GET DATA CHANNEL ADDRESS STA UNITS SAVE THE SWITCH OPTIONS. AND .77 STA B SAVE DATA CHANNEL ADDRESS IN B ADA M.10 "SUBTRACT": S.C. - 10B. SSA IS CHANNEL NUMBER < 10B? JMP CONFG YES, GO RESTART CONFIGURATION. ADA MAXCH "SUBTRACT": S.C. - 70B. SSA,RSS IS CHANNEL NUMBER > 67B? JMP CONFG YES, GO RESTART CONFIGURATION. SPC 1 LDA DMACW CONFIGURE DMA CW1 ADA B STA CW1 * LDA C4 CLC DATA INSTRUCTIONS ADA B STA MT.50 STA MT.13 SPC 1 LDA C12 STC DATA,C INSTRUCTIONS ADA B INCLUDE THE CHANNEL NUMBER. STA MT.11 STORE THE INSTRUCTION. SPC 1 LDA C13 CLF DATA INSTRUCTION. ADA B INCLUDE THE CHANNEL NUMBER. STA MT.12 STORE THE INSTRUCTION. SPC 1 LDA C6 LIA CMND INSTRUCTIONS ADA B STA S.1 SPC 1 LDA C7 LIB CMND INSTRUCTIONS ADA B STA S.0 SPC 1 LDA C9 SFS CMND INSTRUCTIONS ADA B STA MT.0 STA MT.8 SPC 1 LDA C10 OTA CMND INSTRUCTIONS ADA B STA MT.14 STA MT.1 SPC 1 LDA C11 STC CMND,C INSTRUCTIONS ADA B STA MT.7 STA MT.6 SPC 1 LDA C0 OTB CMND INSTRUCTION. ADA B STA O.B SPC 1 LDA C3 CLC CMND INSTRUCTION. ADA B STA MT.4 STA MT.16 SPC 1 LDA UNITS LOAD THE SWITCH OPTIONS. RAL,RAL SHIFT BIT 14 TO BIT 0. SLA,RAL IS MAXIMUM UNIT > 3? JMP CONFG YES, ERROR; RESTART. RAL SHIFT UNIT MAXIMUM TO 2-0. AND .3 ISOLATE THE MAXIMUM UNIT NUMBER. CPA .3 ARE THERE FOUR(4) MT UNITS? JMP STOP YES, TERMINATE CONFIGURATION. LDB SL0 NO, LOAD THE SL0 COMMAND. STB SL3 SET UNIT 3 TO BE UNIT 0. CPA DEC2 ARE THERE THREE(3) MT UNITS? JMP STOP YES, TERMINATE CONFIGURATION. STB SL2 NO, MAKE UNIT 2 EQU UNIT 0. CPA DEC1 ARE THERE TWO(2) MT UNITS? JMP STOP YES, TERMINATE CONFIGURATION. STB SL1 NO, MAKE UNIT 1 EQU UNIT 0. SPC 1 STOP HLT 77B END OF DRIVER CONFIGURATION. SPC 1 LDA .SL1 LOAD THE SELECT UNIT 1 COMMAND. STA SL1 RESTORE THE COMMAND. LDA .SL2 LOAD THE SELECT UNIT 2 COMMAND. STA SL2 RESTORE THE COMMAND. LDA .SL3 LOAD THE SELECT UNIT 3 COMMAND. STA SL3 RESTORE THE COMMAND. JMP I.MT SPC 2 .77 OCT 77 M.10 OCT -10 MAXCH OCT -60 UNITS NOP .SL1 OCT 002400 SELECT UNIT 1 COMMAND. .SL2 OCT 004400 SELECT UNIT 2 COMMAND. .SL3 OCT 010400 SELECT UNIT 3 COMMAND. DMACW OCT 20000 SPC 1 * I/O INSTRUCTIONS SPC 1 C0 OTB CMND C3 CLC CMND C4 CLC DATA C6 LIA CMND C7 LIB CMND C9 SFS CMND C10 OTA CMND C11 STC CMND,C C12 STC DATA,C C13 CLF DATA SPC 1 * END OF RELEASABLE INITIALIZATION SECTION SPC 1 I.P.L EQU 00445B DRIVER LENGTH. ORG KCORE+07135B-I.P.L SPC 1 * F.W.A. OF SIO MT DRIVER MUST BE > X6467B. SPC 1 * L.W.A. OF SIO MT DRIVER MUST BE < X7135B. SKP * CALLING SEQUENCE: (WRITE/READ) SPC 1 * LDA (>0=CHARS, <0=WORDS) * LDB * JSB 107B,I * OCT (0=READ, 1=WRITE) * * * (A)=RECORD LENGTH, (B)=STATUS SPC 1 * READ AND WRITE REQUESTS OF 0 LENGTH ARE RETURNED * BY THE DRIVER TO THE NORMAL RETURN LOCATION * WITHOUT ANY TAPE MOVEMENT. SPC 1 * THE FIRST WORD OF 2 BYTES WRITTEN ON TAPE IS THE * USER'S REQUEST LENGTH. THIS WORD IS NOT STORED * IN THE USER'S BUFFER BY A READ REQUEST, BUT IS * LEFT IN THE A REGISTER IN THE FORM WHICH THE * USER SPECIFIED (+CHARACTERS OR -WORDS) AS THE * TAPE RECORD LENGTH IF THE TAPE RECORD < THE * BUFFER REQUEST LENGTH. SPC 2 * CALLIN @SEQUENCE: (REWIND/REWIND STANDBY/STATUS) SPC 1 * P JSB 107B,I * P+1 OCT (3=REWIND, 7=STATUS, * P+2 5=REWIND & STANDBY) SPC 2 * CALLING SEQUENCE: (GAP/WRITE END OF FILE) SPC 1 * P JSB 107B,I * P+1 OCT (6=GAP, 2=END OF FILE) * P+2 * P+3 * P+4 (B)=STATUS SPC 2 * CALLING SEQUENCE: (POSITION) SPC 1 * LDA (+=FORWARD, -=REVERSE) * LDB " " * JSB 107B,I * OCT 4 * * * (A)=FILE COUNT, (B)=STATUS SPC 1 * A BACKFILE LEAVES THE TAPE POSITIONED ON THE SIDE OF * THE N-TH FILE MARK (-N IN A FOR BACKFILE) AWAY FROM * LOAD POINT. THUS (A) = -2 LEAVES THE TAPE AT THE * BEGINNING OF THE FILE PRECEEDING THE CURRENT FILE. SPC 1 * RECORD OPERATIONS WILL MOVE THE TAPE THE APPROPRIATE * # OF RECORDS. THE FILE MARK IS COUNTED AS 1 RECORD. SPC 1 * COMMANDS TRYING TO CROSS THE SOT OR EOT MARKERS WILL * CAUSE AN EXIT TO THE END OF TAPE RETURN POINT. SPC 1 * END OF TAPE ON READ, WRITE OR GAP WILL BE CHECKED * BEFORE THE OPERATION IS INITIATED. SPC 2 * TAPE COMMANDS - SPC 1 * OCT 0 - READ * 1 - WRITE * 2 - WRITE END OF FILE * 3 - REWIND * 4 - POSITION * 5 - REWIND AND STANDBY * 6 - GAP (4" BLANK TAPE) * 7 - STATUS (RETURNS STATUS IN -B- ) SPC 2 * THE STATUS WORD BIT ASSIGNMENTS ARE: SPC 1 * BIT MEANING SPC 1 * 0 TAPE UNIT NOT ON-LINE * 1 PARITY AND/OR TIMING ERROR * 2 FILE PROTECTED (NO WRITE ENABLE RING) * 3 REJECT: 1 MOTION REQ'D AND CONTROLLER BUSY * 2 BACKWARD MOTION REQ'D & AT LOAD POINT * 3 WRITE COMMAND GIVEN AND NO WRITE RING * 4 TIMING ERROR * 5 END OF TAPE * 6 START OF TAPE * 7 END OF FILE * 8 CONTROLLER BUSY * 9 TAPE UNIT NOT READY * 10 TAPE UNIT REWINDING * 11 ODD NUMBER OF BYTES READ SKP * F.W.A. OF SIO MT DRIVER MUST BE > X6467B. SPC 1 MTD NOP ENTRY POINT. STA BUFL SAVE LENGTH AND STB BUFA ADDRESS OF BUFFER JSB STIN GO LOAD THE MT STATUS. SLA IS THE MT CONTROLLER BUSY? JMP S.1 YES, CONTINUE. MT.13 CLC DATA NO, CLEAR DATA CHANNEL CONTROL. MT.16 CLC CMND CLEAR COMMAND CHANNEL CONTROL. LDA MTD,I LOAD THE COMMAND CODE WORD. ALF SHIFT UNIT NUMBER TO BITS 2-0. AND .7 ISOLATE THE UNIT NUMBER. STA SPACE SAVE UNIT NUMBER SZA,RSS SELECT UNIT 0? LDA SL0 YES, LOAD THE SELECT CODE. CPA DEC1 SELECT UNIT 1? LDA SL1 YES, LOAD THE SELECT CODE. CPA DEC2 SELECT UNIT 2? LDA SL2 YES, LOAD THE SELECT CODE. CPA .3 SELECT UNIT 3? LDA SL3 YES, LOAD THE SELECT CODE. CPA SPACE UNIT NUMBER > 3? JMP UNDEF YES, UNDEFINED UNIT. MT.1 OTA CMND OUTPUT THE UNIT SELECTION. LDA MTD,I LOAD THE OPERATION CODE. AND .7 USE THE LOWER 3 BITS ONLY. CPA .7 IS THE REQUEST FOR STATUS. JMP ERR.1 YES, RETURN; STATUS IS IN "B". STA ABS SAVE THE COMMAND REQUEST CODE. OK... CLE,SLB IS THE TAPE UNIT IN LOCAL MODE? JMP LOCAL YES, STOP 44B. ISZ MTD INCREMENT THE RETURN ADDRESS (P+2). ADA TBASE LOOK UP PROCESSOR IN TABLE JMP A,I CALL PROCESSOR SPC 1 TBASE DEF *+1,I COMMAND PROCESSOR ENTRY DEF READ POINT TABLE DEF WRITE DEF WEOF DEF REW DEF POS DEF RES DEF GAP SPC 1 RES LDA RWO LOAD THE REWIND/STANDBY COMMAND. CCE,RSS SKIP. REW LDA .101 REWIND ** CCE ENTER: E=1. JSB CMAND GO INITIATE COMMAND EXECUTION. JSB STIN GO LOAD THE MT UNIT STATUS. JMP EXIT1 SPC 1 UNDEF HLT 15B ILLEGAL UNIT NUMBER. JMP UNDEF IRRECOVERABLE ERROR. SPC 2 * TAPE POSITIONING ROUTINE SPC 1 * ENTER WITH COMMANDS STORED IN BUFL AND BUFA. SPC 1 POS LDB BUFL GET FILE COUNT LDA SFILE LOAD THE FILE CODE OFF-SET. JSB ABS SET FLAGS, COMMANDS AND COUNT JMP P.1 # FILES = 0, DO RECORDS P.5 CCA,SEZ,CCE,RSS ENTER: E=1; BACKWARDS MOTION? JSB P.2 YES, GO CHECK FOR "BOT". JSB SPACE FORWARD SPACE JMP P.5 REPEAT UNTIL FILE ISZ CNTR CHECK FOR FINISHED JMP P.5 NO, LOOP LDA BUFL RAL,CLE,SLA,ELA BACKFILE REQUEST? ISZ BUFA .31 SLA,ARS SKIP. JMP EXIT P.1 LDB BUFA PROCESS RECORDS CLA ENTER: A=0. JSB ABS SET FOR FWD/REV RECORD SPACING JMP EXIT NO RECORDS, EXIT P.0 CCA,SEZ,CLE,RSS ENTER: E=0; BACKWARDS MOTION? JSB P.2 YES, GO CHECK FOR "BOT". JSB SPACE FORWARD SPACE SL0 ALR SELECT UNIT 0 COMMAND. ISZ CNTR FINISHED? JMP P.0 NO, LOOP SPC 1 EXIT ISZ MTD JSB STIN GO LOAD THE MT STATUS. ERR.1 ISZ MTD EXIT1 LDA BUFL MT.4 CLC CMND CLEAR THE MT COMMAND CONTROL BIT. JMP MTD,I SPC 2 P.2 NOP ENTRY POINT. JSB STIN GET TAPE STATUS (BACKFILE) RAL SHIFT THE "SOT" BIT TO A15. SSA,RSS IS THE MT UNIT AT THE "SOT"? JMP P.2,I NO, RETURN. SEZ YES; FILE SKIPPING? ISZ CNTR CNT = -1? JMP EXIT1 NO, TRIED TO CROSS SOT, ERROR JMP P.1 YES, DO RECORD SPACING SPC 2 ABS NOP SET-UP ROUTINE SSB,RSS IS TAPE MOTION TO BE FORWARD? ADA .3 FORWARD SPACE COMMAND SSB IF # IS < 0 SET FOR ADA .41 BACKSPACE COMMAND STA WNEC CLE,SSB,RSS GET -ABS(#) FOR CNT CMB,CCE,INB,SZB IS THE MT TO BE MOVED? ISZ ABS YES, EXIT TO (P+2). STB CNTR JMP ABS,I SPC 2 SPACE NOP SPACE TAPE CLE,SSA IS TAPE MOTION BACKWARDS? JSB EOTC LDA WNEC JSB CMAND SPACE RAL,SLA END-OF-FILE (EOF) MARK? ISZ SPACE YES, SKIP EXIT. CCE,SSA IS THE MT UNIT AT "SOT"? JMP EXIT1 JMP SPACE,I SPC 2 STIN NOP GET TAPE STATUS S.1 LIA CMND LDB A LOAD THE MT UNIT STATUS. ALF,ALF SHIFT THE MT UNIT STATUS 8 BITS. JMP STIN,I SPC 2 * WRITE 4" BLANK TAPE SPC 1 GAP JSB WNEC CHECK FOR WRITE RING IN JSB EOTC CHECK FOR END OF TAPE LDA .15 4 INCH TAPE GAP JSB CMAND JMP EXIT NORMAL EXIT SPC 2 * WRITE END OF FILE SPC 1 WEOFR LDA .41 LOAD: BACKSPACE RECORD COMMAND. JSB CMAND GO EXECUTE THE COMMAND. SPC 1 WEOF JSB WNEC CHECK FOR WRITE RING IN MT.12 CLF DATA CLEAR THE DATA CHANNEL FLAG. LDA GFM WRITE FILE MARK CODE JSB CMAND RBR,SLB,RBL DID A PARITY OR TIMING ERROR OCCUR? JMP WEOFR YES, GO BACKSPACE OVER THE RECORD. JSB EOTC JMP EXIT SPC 2 WRITE JSB WNEC GO CHECK FOR A WRITE ENABLE RING. JSB EOTC GO CHECK FOR END-OF-TAPE. JSB CNTR GET NEG # WORDS STA WNEC SAVE WORD COUNT LDA .31 LOAD THE WRITE RECORD COMMAND. JSB CMAND GO INITIATE WRITE SEQUENCE. LDA BUFA BUFFER ADDRESS JSB BUFM1 SAVE POINTER TO & CONTENTS BUFF-1 JSB INDMA EXECUTE DMA SEQUENCE * * 1. INITILIZE DMA CONTROL WORDS * 2. TURN ON DMA * 3. WAIT FOR DMA TO COMPLETE * LDA EOTC RESTORE WORD IN USERS PROGRAM STA P.2,I RBR,SLB DID A PARITY OR TIMING ERROR OCCUR? CLE,RSS YES, SKIP. JMP EXIT NORMAL EXIT LDA .41 BACKSPAC1 RECORD JSB CMAND LDA .15 4 INCH TAPE GAP JSB CMAND EXECUTE COMMAND JMP WRITE RETRY WRITE TILL TAPE END SPC 2 READ JSB EOTC READ *** LDA .M3 STA SPACE SET RETRY COUNTER TO -3. JSB CNTR GET NE,# OF WORDS STA WNEC NEG WORD XFER COUNT RERED LDA .23 READ CHARACTER CODE JSB CMAND INIT. READ RECORD SEQ. LDA BUFA USERS INPUT BUFFER JSB BUFM1 ADA BIT15 DIR BIT FOR DMA READ JSB INDMA EXECUTE DMA SEQUENCE * * 1. INITILIZE DMA CONTROL WORDS * 2. TURN ON DMA * 3. WAIT FOR DMA TO COMPLETE * LDA P.2,I RETREIVE RECORD LENGTH STA ABS LDB EOTC NOW RESTORE USERS PROGRAM STB P.2,I JSB STIN MT STATUS SSA WAS AN "EOF" READ? JMP EXIT1 YES, RETURN TO (P+2). RBR,SLB,RBL DID A PARITY OR TIMING ERROR OCCUR? RSS YES, SKIP. JMP ENDR NO, DONE. ISZ SPACE HAVE WE TRIED 3 TIMES ? CLE,RSS NO JMP ERR.1 YES, EXIT TO ERROR ROUTINE LDA .41 BACKSPACE JSB CMAND JMP RERED TRY AGAIN SPC 1 * RECORD < BUFFER LENGTH, GET TAPE LENGTH IN USER'S BUFFER SPC 1 ENDR LDA ABS GET TAPE RECORD LENGTH LDB BUFL GET USER BUFFER LENGTH CLE,SSA IS ACTUAL LENGTH IN WORDS? JMP ENDR2 YES, GO CHECK READ REQUEST. CMA,INA NO, CONVERT TO - # OF CHARACTERS. CCE,SSB NO; WAS READ REQUEST IN WORDS? ARS YES, CONVERT CHARACTERS TO WORDS. ENDR2 SEZ,SSB,RSS WAS READ REQUEST IN CHARACTERS? ALS CMA,INA STA BUFL SAVE TAPE LENGTH FOR USER SSB,RSS IS USER LENGTH IN CHARACTERS? CMB,INB YES, COMPLEMENT USER REQUEST. ADA B "SUBTRACT": RECORD LENGTH - USER REQ.. CMB,INB MAKE THE USER REQUEST POSITIVE. SSA,RSS IS RECORD LENGTH > USER REQUEST? STB BUFL YES, STORE USER REQUEST LENGTH. JMP EXIT CONTINUE READ PROCESSING SPC 2 * DO A TEMP SAVE OF WORD IN USERS PROGRAM THAT IS AT * BUFFER ADDRESS - 1. THIS DONE BEFORE BOTH READ AND WRITE * OPERATIONS AND THEN THIS WORD IS RESTORED AFTER THE DMA XFER. * BUFM1 NOP ADA .M1 BACK BUFF POINTER BY ONE LDB A,I RETRIVE FROM USERS PROGRAM STA P.2 STB EOTC SAVE BOTH POINTER & CONTENTS JMP BUFM1,I EXIT SPC 2 CFLAG NOP ENTRY POINT. MT.8 SFS CMND IS THE FUNCTION COMPLETE? JMP MT.8 NO, CONTINUE. JSB STIN YES, GO LOAD THE UNIT STATUS. JMP CFLAG,I RETURN. SPC 2 CNTR NOP GET NEG # WORDS IN A LDA BUFL USER'S BUFFER LENGTH CCE,SSA WORDS OR CHARACTERS? JMP CNTR,I WORDS --- RETURN. CMA,INA,SZA,RSS COMPLEMENT; IS THE REQUEST = 0? JMP EXIT YES, GIVE A NORMAL COMPLETION RETURN. ARS JMP CNTR,I RETURN. SPC 2 WNEC NOP WRITE NOT ENABLED CHECK- JSB STIN GO LOAD THE MT UNIT STATUS. RAR,SLA IS THE MT UNIT READY? JMP S.1 NO, CONTINUE. RBR,CLE,RBR SHIFT THE WRITE ENABLE RING BIT TO B0. SLB,RSS DOES THE MT HAVE A WRITE ENABLE RING? JMP WNEC,I EXIT WITH WRITE ENABLED HLT11 HLT 11B AND HALT JMP HLT11 PROTECT HALT. SPC 2 * CONFIGURE DMA INDMA NOP CLC 2 SETUP FOR CW2(BUFFER ADDRESS) OTA 2 CW2 LDA CW1 =B200XX XX=HIGH MT PRIORITY SC OTA 6 STC 2 LDA WNEC NEG OF # WORDS TO XFER STA P.2,I RECORD LENGTH FOR WRITE ADA .M1 SET DMA FOR ADDITIONAL WORD OTA 2 * INITIATE DMA READ/WRITE MT.11 STC DATA,C STC 6,C JSB CFLAG WAIT FOR DMA TO COMPLETE MT.50 CLC DATA STF 6 ROLL OVER DMA WORD COUNT JMP INDMA,I RETURN SPC 1 CMAND NOP ISSUE THE COMMAND IN -A- TO MT.14 OTA CMND OUTPUT THE COMMAND. S.0 LIB CMND LOAD THE STATUS WORD. RBR,RBR SHIFT THE REJECT BIT TO 0. RBR,SLB WAS THE REQUEST REJECTED? JMP REJCT YES, ISSUE A CLEAR AND RETRY. MT.7 STC CMND,C INITIATE COMMAND EXECUTION. CCB,SEZ,CLE READ OR WRITE COMMAND? JMP CMAND,I YES, RETURN. JSB CFLAG GO WAIT FOR FUNCTION COMPLETION. JMP CMAND,I SPC 1 LOCAL HLT 44B JSB STIN GO LOAD THE MT UNIT STATUS. RAR,SLA IS THE MT UNIT READY? JMP LOCAL NO, CONTINUE. LDA CLR LOAD THE CLEAR COMMAND. JSB CMAND GO EXECUTE THE CLEAR FUNCTION. LDA ABS LOAD THE COMMAND REQUEST CODE. JMP OK... SPC 1 REJCT LDB CLR LOAD THE CLEAR COMMAND CODE. O.B OTB CMND OUTPUT THE CLEAR COMMAND. MT.6 STC CMND,C INITIATE THE CLEAR COMMAND. MT.0 SFS CMND IS THE COMMAND COMPLETED? JMP MT.0 NO, WAIT. JMP MT.14 YES, GO RETRY THE REQUEST. SPC 2 EOTC NOP CHECK FOR EOT JSB STIN GET MT STATUS ALF,CLE,RAR SHIFT THE "EOT" BIT TO A0. SLA IS THE MT UNIT AT THE "EOT"? JMP EXIT1 JMP EOTC,I SKP * BEGIN "LOCAL STORAGE". SPC 1 A EQU 00000B B EQU 00001B SPC 1 DATA EQU 00B CMND EQU DATA+01B SPC 1 BUFL NOP BUFA NOP SPC 1 .7 OCT 000007 .3 OCT 000003 .15 OCT 15 CODE FOR 4 INCH TAPE GAPP .M3 DEC -3 .101 OCT 000101 .41 OCT 000041 .23 OCT 000023 DEC1 DEC 1 DEC2 DEC 2 .M1 OCT -1 SL1 OCT 002400 SELECT UNIT 1 SL2 OCT 004400 SELECT UNIT 2. SL3 OCT 010400 SELECT UNIT 3. CW1 OCT 20000 =B200XX XX=HIGH PRIORITY MT SC BIT15 OCT 100000 CLR OCT 000110 CLEAR COMMAND. RWO OCT 000105 REWIND/STANDBY COMMAND. GFM OCT 000215 GAP 4"; WRITE END-OF-FILE COMMAND. SFILE OCT 000200 SKIP-FILE COMMAND OFF-SET. SPC 1 * END OF "LOCAL STORAGE". SPC 2 * L.W.A. OF SIO MT DRIVER MUST BE < X7135B. SPC 1 END