/******* MULTI8 VIRTUAL DISK TASK ******* /LAST EDIT: 19-AUG-75, ELC (DEVICE NAME ADDED) /LAST EDIT: 6-AUGUST-75, JV /AUTHOR E.LOPES CARDOZO, PHYSIOLOGY UTRECHT, APRIL 75 / /THIS TASK PERFORMS THE CONVERSION BETWEEN A VIRTUAL DISK /REQUEST AND A TRUE PHYSICAL DISK REQUEST. IT MAY BE CALLED /AS AN ORDINARY BLOCKTRANSFER MODULE (WITHOUT QUEING) /AND WILL TRANSFORM THE CALLERS REQUEST ACCORDING TO THE /DEFINITIONS FOUND IN 'DSKTAB', WHICH SHOULD BE IN MONFLD AND /MUST BE SETUP BY THE POWERUP SEQUENCE. DSKTAB SHOULD CONTAIN /EIGHT ENTRIES OF THREE WORDS EACH DESCRIBING A VIRTUAL DISK /LAYOUT OF EACH ENTRY: / /WORD 0: NAME OF HANDLER TASK /WORD 1: BITS 9-11=PHYSICAL UNIT NUMBER /WORD 2: RELATIVE BLOCK # 0 /WORD 3: LAST BLOCK+1 (PHYSICAL) / /IF THE TRANSFER GOES ACROSS THE BOUNDS OF THE VIRTUAL DISK, /THE TRANSFER IS NOT DONE AND A HARDERR STATUS IS RETURNED. / DKUDTV=ZTEM1 DKUNIT=ZTEM3 "D^100+"K&3777 /TASK NAME IS "DK" 2AGE HEADER: IDKDTV, DKDO TRANSFER VECTOR 0 /, DCA DKUDTV /POINTER TOF /CDF TO USERS DTV, USED TO INITIALIZE DCA DKCDF /CDF-USER ROUTINE TAD I DKUDTV /FETCH FUNCTION WORD AND C7 /EXTRACT UNIT NUMBER DCA DKUNIT TAD DKUNIT CLL RTL /MULTIPLY BY 4 TAD (DSKTAB /INDEX IN DIS MONFLD /DSKTAB IS IN MOWORD CONTAINS PHYSICAL UIS UNIT DEFINED ? JMP ILLEGAL DCA DKNAME /NAME OF HANDLER TASK ISZ X TAD I X /GET WORD 1 DCA DKDTV /BUILD A NEW DTV, THIS IS THE TRUE UNIT # DKCDF, HLT /CDF TO CALLERS FIELD TAD I DKUDTV /GET REST OF USERS FUNCTION WORD AND C7770 /MASK OF UNIT # TAD DKDTV /GET TRUE UNIT # DCA DKDTV /THIS IS THE FINAL FUNCTION WORD ISZ DKUDTV /BUMP POINTER TO USERS DTV TAD I DKUDTV /GET USERS BUFFER ADDRESS DCA DKDTV+1 ISZ DKUDTV TAD I DKUDTV /GET VIRTUAL BLOCK # CDF MONFLD ISZ X /SELECT OFFSET TAD I X /ADD OFFSET TO OBTAIN PHYSICAL BLOCK # DCA DKDTV+2 /AND STORE IT IN DKDTV TAD DKDTV /NOW CHECK IF WHOLE TRANSFER AND C3700 /IS WITHIN THE RANGE. GET LENGTH SNA AC4000 IFZERO PDPTYP-PDP8E < BSW > IFNZRO PDPTYP-PDP8E < CLL RTR RTR RTR > IAC RAR /MAKE # BLOCKS CLL TAD DKDTV+2 /ADD START BLOCK # CIA ISZ X TAD I X /ADD MAXIMUM ALLOWED DKERR, /LINK=0, WILL ABORT AFTER A WHILE CDTOIF CIF MONFLD /NOW RESERVE A SLOT FOR THE USER TO WAIT RM /HELP, NO MORE SLOTS LER CONTINUE WITH SLOT #NUE DCA DKSLT2 SNL COVERFLOW ? JMP DKERROR /YES, TRANSFER OUT OF RANGE CDTOIF TAD IDKDTV /GET POINTER TO DKDTV JMS MONITOR CALL /CALL SYSTEM HANDLER DKNAME, "S^100+"Y&3777 JMP .-3 /BUSY ? DCA DKSLT1 JMS MONITOR SKP /PASS INTERRUPT ROR,TAD (HRDERR JMS MOLEAR RELEASE DKSLT2, ERE THE TRANSFER VECTOR IS BUILD $