.NLIST; VALMFD - MACRO AND OFFSET DEFINITIONS FOR VAL PACKAGE ; LAST EDIT: 3-OCT-81 .NLIST TOC ; ; THIS IS A FILE OF MACRO DEFINITIONS FOR USE BY THE VAL PACKAGE ; IT SHOULD PRECEDE THE SOURCE OF BOTH VALIO & VALCTL. ; ; ASSEMBLEY IS CONDITIONAL FOR RSX11M,RSX11D OR RT11 ; THE FOLLOWING SYMBOL DEFINITION SELECTS THE SYSTEM. RSX11M=0 ; ; SOME FUNCTIONS ARE CONDITIONAL BETWEEN UCH AND ORSAY ; SO NOW SPECIFY SITE ORSAY=0 ; ; ; SET UP DEFAULT PARAMETERS DEFAPR=7 ;APR FOR VAL MAPPING DEFLUN=6 ;DEFAULT LUN FOR VAL I/O ; ; ; .IF NDF RT11 RSX=0 ;11M OR 11D .ENDC ; R0=%0 PC=%7 .MACRO RDT$ BLK,INPUT,RTRUE,RERR,VAL,INWAS,DF,LOW,HIGH,BUF1,LEN,OFF,WC .GLOBL READIT .IF NB BLK .NTYPE $BLKM,BLK .IF EQ,$BLKM&70 MOV BLK,R0 .IFF MOV #BLK,R0 .ENDC .ENDC .IIF NB MOV #VAL ,26(R0) .IIF NB MOV #OFF,30(R0) .IIF NB MOV #WC,32(R0) .IIF NB MOVB #INWAS,3(R0) .IIF NB MOV #DF,36(R0) .IIF NB MOV #LOW,40(R0) .IIF NB MOV #HIGH,42(R0) .IIF NB MOV #BUF1,14(R0) .IIF NB MOV #LEN,16(R0) 65$: JSR PC,READIT TSTB 2(R0) BNE 66$ JSR PC,INPUT JMP 65$ 66$: .IF NB BMI 67$ JMP RTRUE .ENDC 67$: .IF NB BPL 68$ JSR PC,RERR JMP 65$ .ENDC 68$: .ENDM RDT$ .MACRO RDBLK$ BUF,VAL,TYP,DF,LOW,HI,BUF1,LEN,OFF,WC .IF B ICH1=1 .IFF ICH1=0 .ENDC .IF B ICH2=1 .IFF ICH2=0 .ENDC .IF B ICH3=1 .IFF ICH3=0 .ENDC .BYTE ICH1++ .BYTE 0 .BYTE 1 .IF NB .BYTE TYP .IFF .BYTE 0 .ENDC .BYTE 0 .BYTE 0 .BYTE 0 .BYTE 0 .WORD BUF,BUF .IF B .WORD 0,0 .IFF .WORD BUF1,LEN .ENDC .WORD 0 .WORD 0,0 .IF NB .WORD VAL .IFF .WORD 0 .ENDC .IF NB .WORD OFF,WC .IFF .WORD 0,0 .ENDC .WORD 0 .IF B .WORD 0 .IFF .WORD DF .ENDC .IF B .WORD 0,0 .IFF .WORD LOW,HI .ENDC .ENDM RDBLK$ .MACRO RDOFF$ RD.ICH=0 RD.IST=1 RD.ITW=RD.IST+1 RD.INW=RD.ITW+1 RD.K=RD.INW+1 RD.L=RD.K+1 RD.SI=RD.L+1 RD.PO=RD.SI+1 RD.KP=RD.PO+1 RD.IA=RD.KP+2 RD.STR=RD.IA+2 RD.LEN=RD.KP+6 RD.INT=RD.LEN+2 RD.REA=RD.INT+2 RD.VL=RD.REA+4 RD.OFF=RD.VL+2 RD.WC=RD.OFF+2 RD.LIB=RD.WC+2 RD.DFA=RD.LIB+2 RD.LWA=RD.DFA+2 RD.HWA=RD.LWA+2 .ENDM RDOFF$ RD.SIZ=44 ;LENGTH OF READIT BLOCK ; .MACRO SAVE MOV R5,-(SP) MOV R4,-(SP) MOV R3,-(SP) MOV R2,-(SP) MOV R1,-(SP) MOV R0,-(SP) .ENDM SAVE ; .MACRO UNSAVE MOV (SP)+,R0 MOV (SP)+,R1 MOV (SP)+,R2 MOV (SP)+,R3 MOV (SP)+,R4 MOV (SP)+,R5 .ENDM UNSAVE ; .MACRO NPAGE .IF DF BLURB .PAGE .IFF .LIST ; ; ; ; .NLIST .ENDC .ENDM NPAGE ; ; FORTRAN PARAMETER BLOCK OFFSETS P1=2 P2=4 P3=6 P4=10 P5=12 P6=14 ; ; TWO VAL IMPURE AREAS EXIST. THE FIRST VALIMP IS ; RE-CREATED FOR EACH TASK USING VAL. THE SECOND VALCOM IS ; PASSED THROUGH GOTASK,CHAIN AND FINISH CALLS TO TRANSFER ; INFORMATION BETWEEN TASKS. ; IN RSX11D THIS BUFFER IS PASSED VIA A NODE ; IN RSX11M BY A SHARED DYNAMIC COMMON ; IN RT11 VIA THE TOP OF THE USER STACK WHICH IS PRESERVED ; DURING .CHAIN DIRECTIVES. ; ALL LOCATIONS ARE ACCESSED VIA OFFSETS OF THE FORM VI.XXX FOR VALIMP ; AND VIA OFFSETS OF THE FORM VC.XXX FOR VALCOM ; NOTE THAT CERTAIN FIELDS ARE GROUPED AND MUST REMAIN ; CONTIGUOUS. ; ; THE FOLLOWING DEFINED CONSTANT FIXES THE LENGTH OF THE ; FIELD AT VC.UBF WHICH IS AVAILABLE TO THE USER FOR ; PASSING INFORMATION BETWEEN TASKS. UBFLEN=20. ;10 WORDS AT PRESENT ; ; MACRO IMPDEF DEFINES OFFSETS IN THESE AREAS .MACRO IMPDEF NAME,LEN NAME=IMPLEN IMPLEN=IMPLEN+LEN .ENDM ; SO NOW DEFINE THE LOCAL COMMON VALIMP IMPLEN=0 ; IMPDEF VI.BLK,RD.SIZ ;READIT CONTROL BLOCK IMPDEF VI.COM,2 ;ADDRESS OF VALCOM IMPDEF VI.STA,2 ;LOCAL STATUS WORD ;STATUS BITS ;ALSO USED FOR VC.STA ST.MAC=1 ;CONNECTED TO 'MACRO' ST.CL1=2 ;CONNECTED TO CLONE ST.ERR=4 ;LAST INPUT PRODUCED AN ERROR ST.FIN=10 ;TASK IS FINISHING ST.QIO=20 ;INPUT REQUEST IN PROGRESS ST.SPC=40 ;SPECIAL MODE ST.NWT=100 ;NO-WAIT (FOR INPUT) MODE ST.JOY=400 ;TERMINAL COORDINATE INPUT ST.CHN=1000 ;TASK CHAINING ST.CLA=2000 ;CLONE ACTIVE IMPDEF VI.DLN,2 ;DEFAULT LUN FOR INPUT IMPDEF VI.LUN,2 ;ACTUAL LUN FOR INPUT IMPDEF VI.DEV,2 ;DEVICE # OF TI TERMINAL IMPDEF VI.UIC,2 ;UIC OF CURRENT TASK IMPDEF VI.TNM,4 ;CURRENT TASK NAME IMPDEF VI.CTK,4 ;NAME OF TASK WHICH CALLED US IMPDEF VI.RTK,4 ;NAME OF TASK TO WHICH WE RETURN IMPDEF VI.SAV,14. ;LOCAL PARAMETER SAVE BLOCK IMPDEF VI.SCR,32. ;SCRATCH AREA FOR DPB'S ETC .IF DF RSX11M IMPDEF VI.APR,2 ;APR FOR VALCOM MAPPING IMPDEF VI.RDB,16. ;REGION DEFINITION BLOCK IMPDEF VI.WDB,16. ;WINDOW DEFINITION BLOCK IMPDEF VI.SWB,146. ;SAVE CONTEXT WINDOW BLOCK .ENDC VI.LEN=IMPLEN ; ; NOW DEFINE VALCOM OFFSETS ; NOTE THAT ANY MODIFICATION TO THE FOLLOWING OFFSETS ; REQUIRES THAT ALL TASKS USING VAL MUST ; BE RE-BUILT. IMPLEN=0 ;RESET OFFSET POINTER IMPDEF VC.RCV,0 ;RECEIVE BUFFER FOR RSX11D IMPDEF VC.CTK,4 ;RECEIVED CALLER TASK NAME IMPDEF VC.SND,0 ;SEND BUFFER FOR RSX11D IMPDEF VC.RTK,4 ;RECIEVED RETURN TASK NAME IMPDEF VC.TNO,2 ;TI: TERMINAL NUMBER IMPDEF VC.GEF,2 ;TI: GLOBAL EVENT FLAG IMPDEF VC.UBF,UBFLEN ;USER COMUNICATION BUFFER IMPDEF VC.MRB,4 ;BUFFER FOR MACRO NODES VC.STA=VC.MRB ;USED TO PASS STATUS BETWEEN TASKS VC.EFN=VC.MRB+2 ;LOCAL EVENT FLAG PASSED TO CLONE IMPDEF VC.LBF,82. ;LINE BUFFER PRECEDED BY COUNT. IMPDEF VC.QST,4 ;2 WORD QIO STATUS BLOCK IMPDEF VC.NAM,7 ;CLONE NAME BUFFER IMPDEF VC.PRM,81. ;CLONE PROMPT BUFFER IMPDEF VC.FUN,2 ;CLONE FUNCTION CODE FU.CON=0 ;CONNECT FU.REQ=1 ;NORMAL REQUEST FU.RTX=2 ;TEXT REQUEST FU.SPC=3 ;SPECIAL REQUEST FU.REC=4 ;RECORD FUNCTION FU.FIN=5 ;TASK FINISHING FU.SYN=6 ;SYNCH FUNCTION FU.TST=7 ;TEST IF INPUT IS AVAILABLE FU.CHN=10 ;TASK CHAINING IMPDEF VC.CL1,2 ;CL1 TASK STREAM ADDRESS IMPDEF VC.TNM,4 ;NAME OF TASK WHICH OWNS COMMON VC.LEN=IMPLEN .LIST