.LIST TTM,MEB .TITLE PUDDA .MCALL SETF$S, CLEF$S, DIR$, EXIT$S, VSDA$ .MCALL WTSE$S, VRCD$ ; ; ; ; DSW=0 ; PUD: WTSE$S #52. DIR$ #RCV ;RECEIVE DATA FROM MAIN CMP @#0,#1 BEQ 1$ INC PC 1$: MOV .PUDBA,R4 ;PUD BEGINNING ADDRESS TO R4 COMP: CMP (R4),TAPE ;IS THIS A TAPE DRIVE? BEQ CHECK ;IF YES GO TO CHECK LOOP: ADD #50.,R4 ;OTHERWISE ADD 50 TO ADDRESS CMP .PUDEA,R4 ;COMPARE ENDING ADDRESS BEQ OUT ;IF YES GET OUT BMI OUT ;MAKE SURE BR COMP CHECK: BITB #CH.OFF,U.CH(R4) ;CHECK BIT FOR OFF-LINE BEQ LOOP ;IF ON LINE CHECK FOR ANOTHER DRIVE MOVB U.UN(R4),R5 ;OTHERWISE MOVE UNIT NUMBER TO R5 ASL R5 ;DOUBLE R5 BISB TABLE(R5),CODE ;OTHERWISE SET BIT OF AVAILABLE DRIVE BR LOOP ;AND BRANCH TO LOOP OUT: MOV TSKNAM+0,SEND+S.DATN ;MOV FIRST PART OF TASKNAME TO LOC. MOV TSKNAM+2,SEND+S.DATN+2 ;MOV SECOND PART INTO LOC. DIR$ #SEND CMP @#0,#1 BEQ 2$ INC PC 2$: WTSE$S #53. EXIT$S CODE: .WORD 0 TAPE: .ASCII/MM/ .EVEN TABLE: .WORD 1,2,4,8.,16.,32.,64.,128.,256.,512.,1024.,2048., .WORD 4096.,8192.,16384.,32768. SEND: VSDA$ DUMMY,CODE,1,51. RCV: VRCD$ ,TSKNAM,2 TSKNAM: .WORD 0,0,0,0 .END PUD