.NLIST .TITLE CDPREF .IDENT /V3.1/ ; ; AUTHORS: ; VICKY WHITE, MARK PYATETSKY ; FERMI NATIONAL ACCELERATOR LABORATORY ; BATAVIA, IL 60510 ; ; UPDATE HISTORY: ; V01 - MAY1882 - VW - ORIGINAL VERSION ; V02 - JULY1982- MP - RT-11 ADDED ; V03 - OCT1182 - VW - INITIALISE HEADER AREA IN COMMON CDCM82 TO 0 ; CHANGE ALL INTERNAL CDPACK ERRORS (EXCEPT SUCCESS ; AND PENDING) TO NUMBERS > 1000 OCTAL ; V3.1 - 22JUN84 - DB - Add CD.CMP and CD.SIG to CDCM82 (for RSX only) ; ; ++ ; ; FUNCTION: ; SET OF MACROS USED BY THE CDPACK ROUTINES AND THEIR RELATED ; UTILITY ROUTINES ; ;-------------------------------------------------------------------- ; ; CHT$DF - MACRO TO DEFINE AN ENTRY IN THE CHANNEL TABLE OF ; THE CDPACK COMMON CDCM82 ; .MACRO CHT$DF .ASECT .=0 CH.NUM: .BLKB ;CHANNEL NUMBER CH.UNT: .BLKB ;PHYSICAL DEVICE UNIT NUMBER CH.DEV: .BLKW ;PHYSICAL DEVICE (2 ASCII CHARACTERS) CH.FLG: .BLKB ;EVENT FLAG .BLKB ;SPARE ; CH.SIZ=. ;SIZE OF ONE CHANNEL TABLE ENTRY IN BYTES .ENDM .PSECT ; ;-------------------------------------------------------------------- ; ; MBL$DF - MACRO TO DEFINE A MESSAGE BLOCK ENTRY ; .MACRO MBL$DF .ASECT .=0 MB.CUR: .BLKW ;CURRENT STATUS OF THIS MESSAGE BLOCK ;WHEN 0 THE MESSAGE BLOCK IS INACTIVE AND ;MAY BE RE-USED FOR ANOTHER OPERATION MB.PTC: .BLKW ;PACKET TYPE CODE MB.MBN: .BLKW ;MESSAGE BLOCK NUMBER MB.ST1: .BLKW ;TRANSFER COMPLETION STATUS (1ST WORD) MB.ST2: ;TRANSFER COMPLETION STATUS (2ND WORD) MB.BUF: ;BUFFER ADDRES FOR PENDING RECEIVE MB MB.SNO: .BLKW ;LAST SIGNAL NUMBER MB.CHN: .BLKB ;CHANNEL NUMBER ASSOCIATED WITH THIS MB MB.UNT: .BLKB ;PHYSICAL DEVICE UNIT NUMBER MB.SAW: ;SIGNAL AREA (WORD) = MB.SIG+MB.DSN (RT-11) MB.SIG: .BLKB ;LAST SIGNAL VALUE FOR OPEN CONNECTION MB'S MB.DSN: ;DRIVER SIGNAL NUMBER (RT-11) MB.FLG: .BLKB ;FLAG BYTE (EF TO BE USED FOR QIO IN RSX) MB.PWC: .BLKW ;PENDING MESSAGE WC FOR OPEN CONNECTION MB'S ;AND PENDING RECEIVE MB'S ; MB.SIZ=. ;SIZE OF ONE MESSAGE BLOCK IN BYTES .PSECT ; ; STATUS BITS FOR MB.CUR ; S.OPEN= 1 ;OPEN CONNECTION MESSAGE BLOCK S.PSIG= 2 ;PENDING SIGNAL - NOT YET PASSED TO PROGRAM ;THROUGH CALL TO CDSTAT S.PMSG= 4 ;PENDING MESSAGE TO BE RECEIVED S.RCV = 10 ;CURRENT OPERATION IS A RECEIVE S.XMT = 20 ;CURRENT OPERATION IS A TRANSMIT S.TIMO= 40 ;TIMEOUT OCCURRED ON CURRENT OPERATION S.SIG = 100 ;CURRENT OPERATION IS TRANSMIT SIGNAL S.WRCV= 200 ;THIS MESSAGE BLOCK HAS A BUFFER READY FOR ;RECEIVE ALLOCATED BUT NO RECEIVE OPERATION ;HAS ACTUALLY BEEN STARTED S.CLOS= 400 ;CURRENT OPERATION IS CLOSE THIS OPEN CONNECTION S.WAIT= 1000 ;CDPACK WILL WAIT FOR CURRENT OPERATION TO ; COMPLETE BEFORE RETURNING TO CALLER S.LOK = 2000 ;RE-ENTRANCY INTERLOCK BIT TO RESERVE MESSAGE ;BLOCK - UNTIL CORRECT BITS ARE SET IN MB.CUR .ENDM ;-------------------------------------------------------------------- ; ; $CM82 - MACRO TO DEFINE THE HEADER AREA OF THE COMMON CDCM82 ; WHICH IS THE COMMON AREA FOR THE CDPACK ROUTINES ; .MACRO $CM82 MBL$DF ;DEFINE MESSAGE BLOCK SIZE CHT$DF ;DEFINE CHANNEL TABLE SIZE .PSECT CDCM82,RW,D,GBL,OVR,REL ; ; COMMON AREA FOR THE CDPACK OF ROUTINES ; ; IT IS DIVIDED INTO 3 AREAS ; 1) A HEADER AREA OF VARIABLES INDICATING THE STATE OF THE ; TABLES IN THE COMMON AND THE DEFAULT VALUES USED BY THE ; PACKAGE ; 2) A TABLE OF MESSAGE BLOCKS ; 3) A TABLE OF CHANNEL BLOCKS - ONE FOR EACH CHANNEL IN USE ; THIS IS LOCATED AT THE VERY END OF THE COMMON REGION ; THE COMMON IS FOLLOWED BY ANOTHER COMMON CDCM83. THE FACT THAT ; THIS COMMON IS LOADED IMMEDIATELY AFTER CDCM82 IS USED BY ; THE PACKAGE TO DYNAMICALLY DETERMINE THE SIZE OF THE COMMON CDCM82 ; CD.LEN: .BLKW ;LENGTH OF COMMON IN BYTES CD.CHN: .BLKW ;SET TO ADDRESS OF 1ST CHANNEL TABLE ENTRY ; INITIALLY WHEN NO ENTRIES - SET TO END ; OF COMMON CD.NUM: .WORD 0 ;NUMBER OF MESSAGE BLOCK IN TABLE CD.SPC: .WORD 0 ;FREE SPACE AVAILABLE FOR NEW TABLE ENTRIES CD.RPT: .BYTE 0 ;CURRENT RECEIVE PACKET TYPE CODE CD.XPT: .BYTE 0 ;CURRENT TRANSMIT PACKET TYPE CODE CD.RBF: .WORD 0 ;CURRENT RECEIVE BUFFER ADDRESS CD.RWC: .WORD 0 ;CURRECT RECEIVE BUFFER WC CD.XBF: .WORD 0 ;CURRENT TRANSMIT BUFFER ADDRESS CD.MOD: .WORD 0 ;CURRENT TRANSMISSION MODE CD.LUN: .WORD 0 ;CURRENT CHANNEL/LUN NUMBER CD.TMO: .WORD 5. ;CURRENT TIMEOUT VALUE CD.TMU: .WORD 2 ;CURRENT TIMEOUT UNIT (DEFAULT SECS) CD.FNC: .WORD 0 ;CURRENT FUNCTION TO PERFORM CD.CUR: .WORD 0 ;STATUS OF CURRENT OPERATION CD.OPE: .WORD 0 ;ADDRESS OF CURRENT OPEN CONNECTION MB ;IF CURRENT ACTION IS RCV CD.MSK: .WORD 0 ;MASK OF ACTIVE CHANNEL FLAGS CD.CRN: .WORD 0 ;USERS OWN COMPLETION LEVEL/AST LEVEL CODE ; .IF NDF RT11 CD.CMP: .WORD 0 ;ADDR OF USER I/O COMPLETION ROUTINE CD.SIG: .WORD 0 ;ADDR OF USER UNSOLICITED MESSAGE/SIGNAL ROUTINE .ENDC ; CD.ERL: .WORD 5 ;ERROR MESSAGE CHANNEL NUMBER/LOGICAL UNIT CD.MBL: .BLKB 3*MB.SIZ ;MESSAGE BLOCK TABLE ; - ROOM FOR 3 MESSAGE BLOCKS - DEFAULT .BLKB CH.SIZ ;ROOM FOR 1 CHANNEL TABLE ENTRY - DEFAULT ; ; .PSECT CDCM83,RW,D,GBL,REL,OVR CD.END: .WORD 77777 ;END OF CDCM82 COMMON .IF DF RT11 CD.QFG: .WORD 0 ;Q.E. FLAG - SET TO 1 WHEN .QSET IS CALLED ; TO AVOID REPEATED .QSET CALLS CD.QEN= 3 ;DEFAULT NUMBER OF ADDITIONAL QUEUE ELEMENTS CD.QUE: .BLKW 7*CD.QEN ;ROOM FOR ADDITIONAL QUEUE ELEMENTS ; - DEFAULT CD.77: .WORD 77 .ENDC .PSECT ;REVERT TO BLANK PSECT .ENDM ;-------------------------------------------------------------------- ; ; ERR$DF - DEFINE ERROR CODES FOR ERRORS DETECTED BY THE ; CDPACK ROUTINES THEMSELVES ; ; ; ***NOTE*** THE ERRORS ER.SUC AND ER.PND ARE ; NUMBERS WHOSE VALUE IS DETERMINED BY THE RSX SYSTEM. THE STATUS ; BLOCK FOR RSX IS PASSED TO THE CD DRIVER ON A QIO CALL AND THE ; FIRST WORD OF THE STATUS BLOCK IS AUTOMATICALLY ZEROED BY THE ; SYSTEM. THE RETURN STATUS IS SET BY THE DRIVER, BUT THE RSX ; CONVENTION FOR SUCCESS IS +1. FOR RT11 THE VALUES FOR THESE ; SYMBOLS COULD BE CHOSEN ARBITRARILY, SO THEY ARE IN FACT CHOSEN ; TO BE THE SAME AS FOR AN RSX SYSTEM. ; .MACRO ERR$DF ER.SUC= 1 ;SUCCESS RETURN CODE ER.PND= 0 ;STATUS CODE IN MESSAGE BLOCK DURING ;PENDING MESSAGE ER.CDP= 1000 ;CDPACK INTERNAL ERRORS ARE ALL IN ;THE RANGE >1000 OCTAL. AN UNKOWN ;CDPACK ERROR TAKES THE VALUE ;1000 -1 ER.UNK= ;UNKNOWN CDPACK ERROR ER.CHN= ;NO CHANNEL TABLE ENTRY ER.LUN= ;NO LUN (CHANNEL) AVAILABLE ER.SPC= ;NO SPACE FOR FURTHER MESSAGE BLOCKS ER.OPE= ;NO OPEN CONNECTION FOR THIS PTC ER.DUP= ;OPEN CONNECTION ALREADY EXISTS ER.TMO= ;TIMEOUT ON REQUEST TO DRIVER ER.BUG= ;CDPACK BUG CHECK ER.MBN= ;MESSAGE BLOCK NOT ACTIVE ER.ARG= ;BAD PARAMETERS IN CALL TO ROUTINE ER.INI= ;CALL TO CDASGN AFTER OTHER TRANSFER CALLS ;TO CDPACK ALREADY MADE ; .IF NDF RT11 ; IE.DAO=-13. ;RSX ERROR RETURNED WHEN BUFFER TRANSFERRED ;BUT TRUNCATED IE.ABO=-15. ;RSX ERROR RETURNED WHEN REQUEST CANCELLED ; .ENDC ; .ENDM ;--------------------------------------------------------------------- ; ; INF$DF - DEFINE INF RETURN VALUES RETURNED BY THE STATUS ROUTINE ; CDSTAT ; .MACRO INF$DF I.BUG =-2 ;ERROR - MESSAGE BLOCK IN UNKNOWN STATE I.NOMB=-1 ;MESSAGE BLOCK NOT ACTIVE I.OPEN= 0 ;OPEN CONNECTION - NO NEW TRANSFERS I.XMTP= 1 ;TRANSMISSION PENDING I.RCVP= 2 ;RECEIVE OF MSG PENDING I.XMTD= 3 ;TRANSMISSION COMPLETED OR TIMED OUT I.RCVD= 4 ;RECEIVE OF MESSAGE COMPLETED OR TIMED OUT I.PMSG= 5 ;PENDING MESSAGE - NO BUFFER AVAILABLE I.SIG = 6 ;NEW SIGNAL ARRIVED .ENDM ;-------------------------------------------------------------------- ; ; PUSH - PUSH A LIST OF ARGUMENTS ON THE STACK ; ; USAGE: PUSH ; .MACRO PUSH $LIST .IF NB <$LIST> .IRP $1,<$LIST> .IF NB <$1> MOV $1,-(%6) .IFF CLR -(%6) .ENDC .ENDR .IFF CLR -(%6) .ENDC .ENDM PUSH ;-------------------------------------------------------------------- ; ; POP - POP A LIST OF ARGUMENTS OFF THE STACK ; NOTE: THE ORDER OF THE ARGUMENTS SHOULD BE THE REVERSE ; ORDER TO THAT USED IN THE PUSH CALL ; ; USAGE: POP ; .MACRO POP $LIST .IF NB <$LIST> .IRP $1,<$LIST> .IF NB <$1> MOV (%6)+,$1 .IFF TST (%6)+ .ENDC .ENDR .IFF TST (%6)+ .ENDC .ENDM POP ;-------------------------------------------------------------------- ; ; ASSUME - CHECK THAT 2 ARGUMENTS WHICH ARE ASSUMED TO BE ; EQUAL ARE IN FACT - USED WHEN ASSUMPTIONS ABOUT POSITION ; OR RELATIVE POSITION OF OFFSETS ARE MADE IN THE CODING ; .MACRO ASSUME ARG1,ARG2 .IF NE - .ERROR ;ARG1 NOT EQUAL TO ARG2 .ENDC .ENDM ASSUME ;-------------------------------------------------------------------- ; ; CALL - SUBROUTINE CALL ; ; USAGE: CALL SBRTNE ; .MACRO CALL SBRTNE JSR PC,SBRTNE .ENDM CALL ;-------------------------------------------------------------------- ; ; RETURN - SUBROUTINE RETURN ; ; USAGE: RETURN ; .MACRO RETURN RTS PC .ENDM RETURN .LIST