ASMB,L,R,C * * NAME: ID.36 * SOURCE: 92071-18299 * RELC: 92071-16299 * PGMR: DJW,DJN * * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * *************************************************************** * NAM ID.36,0 92071-16299 REV.2041 800717 * * * * ID.36 IS THE INTERFACE DRIVER FOR THE PROM CARD FOR * THE RTE-L SYSTEM. THE DRIVER PROVIDES TRACK AND * SECTOR ADDRESSING FOR THE ROM CARD. IT SERVICES * SINGLE REQUESTS ( NON-MULTIBUFFERED ) ALWAYS USING * DMA FOR ITS OPERATIONS. * * * CHANGE 2/25/80 * THE DRIVER DEFAULT FOR NUMBER OF SECTORS PER TRACK * WAS CHANGED FROM 8 TO 4 TO ACCOMODATE THE FILE * MANAGER ON AN INITIALIZATION. WHEN A USER DOES AN * EXEC REQUEST TO THE DRIVER SHE'S TALKING 64 WORD * SECTORS, BUT WHEN THE FILE MANAGER DOES AN INITIALIZE * ITS TALKING 128 WORD SECTORS. * * GEN 11,EID.36,TX:6,IT:36B * ENT ID.36 * EXT $DIOC,$DMPR EXT $DV6,$DV15,$DV16,$DV17,$DV18,$DV19,$DV22,$DVTP EXT $IF5,$IFTX,$IF1,$SELR * DMA EQU 20B 1ST SELECT CODE FOR DMA SELF-CONFIG A EQU 0 B EQU 1 * * ID.36 NOP LDB $DVTP GET DVT EXTENSION ADDRESS ADB P5 ONLY NEED DVP6 AND DVP7 STB DVP6 NUMBER OF TRACKS ON DEVICE INB STB DVP7 SECTORS/TRACK START AND B7 ISOLATE ENTRY TYPE ADA JMPTB POINT TO ADDRESS OF PROCESSING JMP A,I ROUTINE AND JUMP TO IT SKP * * THIS SECTION HANDLES A NEW REQUEST ( LOGICAL INITIATION ) * PI.00 LDB $DV15,I GET REQUEST CONTROL WORD RBR SSB,SLB CONTROL REQUEST ? JMP ERR YES, NO CONTROL REQUESTS ALLOWED. STB REQST SAVE THE REQUEST FOR LATER LDA $IFTX ADDRESS OF IFT EXTENSION STA TEMP USE AS A RUNNING POINTER FOR OTA DMA BUILDING QUADRUPLET LDA $DV15 SET UP A AND B FOR $SELR LDB $IF1 JSB $SELR DETERMINE RELOCATION REGISTER IOR CONWD OR IN DMA CONTROL WORD ( 41200 ) STA TEMP,I STORE DMA CONWD IN IFT EXTENSION ISZ TEMP POINT TO NEXT WORD * LDA DVP6,I NUMBER OF TRACKS ON DEVICE CMA,INA LDB $DV18,I IS REQUESTED TRACK GOOD ? SSB -VE ? JMP ERR YES, REJECT REQUEST ADA B TRACK TOO LARGE ? SSA,RSS JMP ERR YES, TOO LARGE LDB $DV19,I REQUESTED SECTOR ( 64 WORD ) SSB,RSS -VE ? SLB ODD ? JMP ERR YES, REJECT REQUEST BRS DIVIDE BY 2 ( 128 WORD ) CMB GET -SECTOR NUMBER -1 ADB DVP7,I ADD IN #SECTORS/TRACK ( 128 WORD ) SSB SECTOR # TOO LARGE ? JMP ERR YES, REJECT REQUEST LDA $DV18,I GET REQUESTED TRACK # AGAIN MPY DVP7,I CALCULATE SECTOR NUMBER ( 128 WORD ) MPY P2 CONVERT TO SECTOR NUMBER ( 64 WORD ) ADA $DV19,I PLUS REQUESTED SECTOR NUMBER ( 64 WORD ) MPY P64 CONVERT TO WORD ADDRESS STA TEMP,I SAVE FOR DMA ISZ TEMP POINT TO NEXT WORD * LDA $DV16,I USER BUFFER ADDRESS STA TEMP,I SAVE FOR DMA ISZ TEMP POINT TO THE NEXT WORD * LDB $DV17,I ORIGIONAL REQUEST LENGTH SZB,RSS ZERO LENGTH ? JMP STTUS YES, IMMEDIATE COMPLETION CPB MXWRD SPECIAL CASE--100000B IS 32K WORD TRANSFER JMP SVDMA JUMP TO SAVE IT FOR DMA SSB,RSS CONVERT TO -VE WORDS CMB,INB,RSS CURRENTLY +VE WORDS BRS CURRENTLY -VE BYTES SVDMA STB TEMP,I SAVE FOR DMA STB $DV19,I SAVE FOR POST-PROCESSING LDA REQST GET THE ORIGINAL REQUEST SSA IS THIS A WRITE? JMP CONT NO, SO CONTINUE CLA YES, SO FAKE OUT REQUEST JMP CONT2 * CONT CLF 30B CLEAR CARD FLAG STC DMA,C DO SELF-CONFIGURATION AND GO ISZ ID.36 TAKE PHYSICAL CONTINUE EXIT CLA,INA REQUEST TIME-OUT JMP ID.36,I EXIT ( PHYSICAL CONTINUE ) * ERR LDA NODF SEND ERROR RETURN, DON'T FLUSH JMP REJ1 SKP * * * ENTER HERE ON INTERFACE INTERRUPT ( PHYSICAL RESUME ) * PR.00 CLA,INA LDB $IF5,I ADDRESS OF ACTIVE DVT JSB $DIOC SET UP DVT ADDRESSES SFC 22B PARITY ? JMP $DMPR YES LIA DMA+3 READ REMAINING COUNT CMA,INA CONT2 ADA $DV19,I A = -VE XMISSION LOG CMA,INA LDB $DV17,I GET USER SPECIFIED LENGTH SSB,RSS GIVEN IN WORDS ? JMP ALSET YES, SO WE'RE ALL SET ALS NO, SO CONVERT TO +VE BYTE COUNT SSB,SLB,RSS ODD BYTE REQUEST? JMP ALSET NO, TLOG IS CORRECT NOW ADA N1 SUBTRACT 1 TO CORRECT THE TLOG ALSET STA $DV17,I RETURN XMISSION LOG * STTUS CLA NO ERRORS REJ1 LIB 31B READ CARD STATUS STB $DV18,I AND RETURN IN 1ST OPT.PARAMETER * PDONE LDB $IF5,I SET COMPLETION ERROR STATUS ADB B17 POINT TO $DV16 STA B,I ($DVT POINTERS NOT SETUP IN TIMEOUT CASE) CLC DMA+3,C CLEAR THE CARD CLA EXIT WITH NO SYSTEM FLAGS SET JMP ID.36,I BACK TO I/O SYSTEM ( PHYSICAL DONE ) SKP * * ENTER HERE ON PHYSICAL TIMEOUT * TO.00 JSB ZTLOG ZERO TRANSMISION LOG LDA B3 RETURN ERROR CODE JMP PDONE CLEAR CARD AND EXIT * ZTLOG NOP CLA ZERO TRANSMISION LOG LDB $IF5,I POINT B TO DV17 ADB B20 STA B,I JMP ZTLOG,I * * ENTER HERE ON ABORT * AB.00 JSB ZTLOG ZERO TRANSMISION LOG JMP STTUS EXIT POSTING NO ERRORS * * ENTER HERE ON POWER FAIL * PF.00 LDA RETRY SET TO RESTART ANY CURRENTLY JMP PDONE ACTIVE REQUEST * * DATA AREA * TEMP NOP REQST BSS 1 N1 DEC -1 B3 OCT 3 B7 OCT 7 B17 OCT 17 B20 OCT 20 P5 DEC 5 P2 DEC 2 P64 DEC 64 WORDS PER SECTOR MXWRD OCT 100000 THIS NEGATIVE CASE IS TREATED AS POS WORDS DVP6 NOP NUMBER OF TRACKS DVP7 NOP NUMBER OF SECTORS TRACK RETRY OCT 100077 NODF OCT 140001 CONWD OCT 41200 DMA SELF-CONFIG CONTROL WORD * * BIT 14 = DV CMD, DEVICE COMMAND * BIT 9 = FOUR, SET INDICATES FOUR WORDS TO BE FETCHED FOR * CURRENT DMA CONFIGURATION, LOADS REGISTER 31 AS * PART DMA QUAD. CLEAR INDICATES THREE DMA CONTROL * WORDS, 31 MUST BE LOADED SEPERATELY PRIOR TO THE * TRIPLET. * BIT 7 = IN, SET INDICATES THAT THE DIRECTION OF THE DATA * TRANSFER IS FROM THE PROM MODULE TO MEMORY. CLEAR * INDICATES REVERSE. * JMPTB DEF *+1,I JUMP TABLE DEF AB.00 ABORT DEF PI.00 PHYSICAL INITIATE DEF PR.00 PHYSICAL RESUME DEF TO.00 PHYSICAL TIMEOUT DEF PF.00 POWER FAIL END