ASMB,R,L,C
      HED PLOSB 91700-16149 REV.A * (C) HEWLETT-PACKARD CO. 1976
      NAM PLOSB,2,30 91700-16149 REV.A 760325 
      SUP 
      SPC 2 
*********************************************************** 
*     (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976.  ALL
*     RIGHTS RESERVED.  NO PART OF THIS PROGRAM MAY BE
*     PHOTOCOPIED, REPRODUCED, OR TRANSLATED TO ANOTHER 
*     PROGRAM LANGUAGE WITHOUT THE PRIOR CONSENT OF 
*     HEWLETT-PACKARD COMPANY.
*********************************************************** 
      SPC 3 
* 
*********************************************************** 
* 
*     PROGRAM LOAD AND SAVE FOR BASIC 
* 
*     BUFFERED DATA TRANSFER FOR 8500 SATELLITES
* 
*     SOURCE PART # 91700-18149 REV A 
* 
*     REL PART #    91700-16149 REV A 
* 
*     LISTING PART # A-91700-16149-1
* 
*     WRITTEN BY:   BARBARA PACKARD, LARRY POMATTO
* 
*     DATE WRITTEN: 12-05-74
* 
*     MODIFIED BY:  JEAN-PIERRE BAUDOUIN
* 
*     DATE MODIFIED: DEC 1975 
*********************************************************** 
      SPC 2 
* 
*     PROGRAM TO DO READ/WRITE ON UP TO MAXN
*     OPEN FILES FOR 8500 SATELLITES.  MAXN IS THE NO.
*     OF FILES WHICH MAY BE OPEN AN ANY ONE TIME. 
*     REMEMBER EACH FILE TAKES 145 WORDS!!! 
*     CENTRAL PROGRAM WHEN SCHEDULED MUST BE
*     PASSED THE CLASS NUMBER.
* 
*     DATA IS PACKED INTO 512 WORD BUFFERS BEFORE 
*     TRANSFER. 
* 
      SKP 
*     DEFINE ENTRY POINTS 
      SPC 2 
*     DEFINE EXTERNALS
      SPC 1 
      EXT EXEC,READF,POSNT,CLOSE,WRITF
      EXT OPEN,CREAT,D65SV,D65CL
      IFN 
      EXT DBUG
      XIF 
      SPC 2 
*     DEFINE A AND B REG
      SPC 1 
A     EQU 0 
B     EQU 1 
      SKP 
* 
*     PROGRAM STARTS HERE 
* 
PLOSB LDA B,I       GET CLASS NUMBER
      STA CLSNM     SAVE CLASS NUMBER 
      IFN 
      SZA           DO THEY WANT DBUG?
      JMP PLOSS     YES WAIT FOR FIRST USER 
      JSB DBUG      NO...GIVE THEM DBUG 
      DEF *+1 
      JSB EXEC      TURN OFF, SAVE RESOURCES FOR LATTER 
      DEF *+4 
      DEF D6
      DEF D0
      DEF D1
      JMP PLOSB     GO TO BEGINING WHEN RE-STARTED
      XIF 
      SPC 1 
D6    DEC 6 
* 
*     WE SHOULD ONLY GO THROUGH THE ABOVE ONCE
* 
      SPC 1 
PLOS0 BSS 0         HERE ON ALL OTHER CALLS 
PLOSS JSB EXEC      DO A GET CALL...WAIT FOR SOMETHING
      DEF *+5 
      DEF D21       CODE FOR A GET CALL 
      DEF CLSNM     CLASS # 
      DEF RBUF      REQUEST BUFFER
      DEF D35       REQUEST BUFFER LENGTH 
* 
*     WHEN WE GET HERE SOMEONE WANTS SOMETHING
* 
      LDA DCBN      GET DCB NUMBER..IF ZERO 
      SZA           IT IS A NEW REQUEST 
      JMP PLOS1     NOT A NEW REQUEST 
      LDA STAT      GET STATUS WORD 
      CPA M1
      JMP CLSIT     CLOSE REQUEST 
      LDA CALOC     NEW REQUEST...SEE IF WE CAN HANDLE IT 
      ADA MMAXS 
      LDB M3        SET ERROR TO -3 ...CAN'T HANDLE IT
      SSA,RSS       HANDLE REQUEST? 
      JMP TERM      NO...TELL THEM TRY LATER
      LDB M4        GET ERROR CODE IF LENGTH ERROR
      LDA BLEN      GET LENGTH WORD 
      ADA MBUFS     SEE IF LARGER THAN BUFFER 
      SSA,RSS 
      JMP TERM      YES...ERROR 
      LDA LSFG      GET LOAD-SAVE FLAG
      SSA           LOAD OR SAVE LOAD=0,SAVE=1
      JMP PSAV1     SAVE
      JSB OPN       GO OPEN FILE
      JMP PLOS1     OK ON OPEN...TREAT AS STANDARD
PSAV2 LDB M2        SET FOR NOT THERE 
      JMP TERM      AND TERMINATE 
*     HERE FOR SAVE 
* 
PSAV1 JSB CRET      GO CREATE THE FILE
      JMP PLOS1     CREATED OK...PROCESS
      LDA FERR      GET ERROR CODE
      STA TEMP0     SAVE INCASE NOT TYPE 0 FILE 
      JSB OPN       CHECK IF TYPE 0 FILE
      RSS           POSSIBLY
      JMP PSAV2     NO...OH WELL
      LDA LSFG      GET LOAD-SAVE FLAG
      SLA           OVERRIDE BIT SET? 
      JMP PLOS1     YES,OK
      LDA DCBN      GET ADDRESS WHERE DCB LOCATED 
      ADA D2        GET TO TYPE WORD
      LDA A,I       GET WORD
      SZA,RSS       TYPE 0? 
      JMP PLOS1     YES...GOOD
      JSB DALOC     NO...DEALOCATE DCB
      LDA TEMP0     GET FILE ERROR
      STA FERR      RESET ERROR TYPE
      JMP PSAV2     TERMINATE 
* 
*     AT THIS POINT THE DCB IS DEFINED
*     THE FILE IS OPENED AND WE ARE READY TO DO 
*      OUR THING. 
* 
PLOS1 LDA STAT      GET STATUS WORD 
      CPA M1
      JMP PLOS3     REQUEST WAS TO CLOSE THE FILE 
      LDA LSFG      LOAD OR SAVE? 
      SSA 
      JMP PLOS2     SAVE
      JSB LBUF      LOAD THE BUFFER FROM THE DISC 
      STB STAT      SAVE THE FILE STATUS
      CPB M2        FMGR ERROR? 
      JMP TERM      YES, TERMINATE
      JSB WREC      SEND THE DATA ACROSS THE LINE 
      JSB WRPLY     SEND STATUS REPLY 
      JMP PLOS0     AND TERMINATE AND WAIT
      SPC 1 
PLOS2 JSB RREC      READ THE DATA FOR SAVE
      CLB           TELL THEM ALL WENT WELL 
      STB STAT      SAVE IT IN THE STATUS WORD
      JSB SBUF      SAVE BUFFER IN FILE 
      CPB M2        FMGR ERROR? 
      JMP TERM      YES, TERMINATE
      JSB WRPLY     SEND REPLY
      JMP PLOS0     GO WAIT FOR MORE
* 
*     CLOSE FILE AND DEALLOCATE DCB 
* 
PLOS3 JSB DALOC     DEALLOCATE DCB AND CLOSE FILE 
      CLB 
      STB STAT      STATUS OK 
      JSB WRPLY     SEND REPLY
      JMP PLOS0     GO TO SLEEP 
* 
*     SUBROUTINE TO READ RECORDS FROM A FILE UNTIL
*     BUFFER IS FULL. 
*     CALLING SEQUENCE
*     JSB LBUF
*     UPON RETURN...B REG= STATUS 
*     STATUS= -1=EOF,O=BUFFER FULL
* 
LBUF  NOP 
      LDA DBUFA     GET DATA BUFFER ADDRESS 
      STA TEMP1     SAVE AS CURRENT DATA ADDRESS
      INA           GET TO FIRST DATA WORD
      STA LBUF1     SAVE FOR FILE WRITE COMMAND 
      LDA BLEN      GET MAX BUFFER SIZE 
      ADA M1        EOB WORD, JUST IN CASE
      STA TEMP2     SAVE CURRENT BUFFER SIZE
LBUFA JSB READF     GO READ A RECORD
      DEF *+6 
      DEF DCBN,I    DCB ADDRESS 
      DEF FERR      FILE STATUS AFTER READ
LBUF1 NOP           BUFFER ADDRESS GOES HERE
      DEF TEMP2     CURRENT MAX BUFFER LENGTH 
      DEF TEMP3     ACTUAL SIZE OF RECORD 
      LDA FERR      GET FILE STATUS 
      LDB TEMP3     GET LENGTH
      SSA,RSS       ERROR?
      JMP LBUFF     NO
      CCB           YES...SET TO -1 
      JMP LBUFG     AND TERMINATE 
LBUFF CPB TEMP2     ARE THE TWO EQUAL?
      CLB,RSS       YES...LOST SOMETHING
      SZB           NO, 0 LENGTH? 
      RSS           NO
      JMP LBUFA     YES,GET NEXT ONE
LBUFG STB TEMP1,I   SET STATUS IN BUFFER
      SZB           EOF OR BUFFER FULL? 
      CPB M1        ? 
      JMP LBUFB     YES...EITHER BACKSPACE OR TERMINATE 
      LDB TEMP3     GET RECORD LENGTH AGAIN 
      ADB LBUF1     GET ADDRESS OF NEXT RECORD TO READ
      STB TEMP1     SAVE ADDRESS
      INB           GET TO FIRST DATA WORD
      STB LBUF1     SAVE AS CURRENT BUFFER ADDESS 
      LDB TEMP3     GET LENGTH OF LAST READ 
      CMB           NEGATE AND SUBTRACT 1 (INCLUDE COUNT WORD)
      ADB TEMP2     SAVE AS NEW LENGTH
      STB TEMP2     SAVE NEW LENGTH 
      SSB,RSS       SHOULD NEVER GO NEGATIVE
      JMP LBUFA     BUT MAKE SURE ANYWAY
* 
*     AT THIS POINT THE BUFFER IS FULL OR AN
*     EOF HAS BEEN HIT...IN ANY CASE DON'T READ 
*     ANY MORE NOW
* 
LBUFB SZB           EOF?
      JMP LBUFC     YES...CLOSE FILE
      JSB POSNT     NO...BACKSPACE ONE RECORD 
      DEF *+4 
      DEF DCBN,I    DCB ADDRESS 
      DEF FERR
      DEF M1
      CLB           SET THE B REG...BUFFER FULL 
      LDA FERR      GET ERROR CODE
      SSA 
      LDB M2        SET TO -2 IF ERROR
      JMP LBUF,I    RETURN
* 
*     EOF HIT...CLOSE FILE
* 
LBUFC JSB DALOC     DEALOCATE DCB AND CLOSE FILE
      CCB           SET B=-1...EOF
      LDA FERR      GET ERROR CODE
      SSA 
      LDB M2        SET TO -2 FOR STATUS IF ERROR 
      JMP LBUF,I    RETURN
      SKP 
* 
*     SUBROUTINE TO MOVE BUFFER TO FILE 
*     CALLING SEQUENCE
*     JSB SBUF
* 
SBUF  NOP 
      LDA DBUFA     GET DATA BUFFER ADDRESS 
      STA TEMP1     SAVE BUFFER ADDRESS 
SBUFA LDA TEMP1,I   GET LENGTH OF RECORD
      SZA,RSS       DONE? 
      JMP SBUF,I    YES...RETURN
      ISZ TEMP1     GET ADDRESS OF 1ST DATA WORD
      STA TEMP2     SAVE LENGTH FOR WRITE 
      INA,SZA,RSS   EOF?
      JMP SBUFB     YES...CLOSE FILE
      JSB WRITF     WRITE THE RECORD
      DEF *+5 
      DEF DCBN,I    DCB ADDRESS 
      DEF FERR      ERROR STATUS
      DEF TEMP1,I   BUFFER ADDRESS
      DEF TEMP2     LENGTH OF WRITE GOES HERE 
      LDA FERR      GET ERROR CODE
      SSA           ERROR?
      JMP SBUFB     YES, TRY TO CLOSE FILE
      LDA TEMP2     GET LENGTH OF LAST WRITE
      ADA TEMP1     GET ADDRESS OF NEXT WRITE 
      STA TEMP1     SAVE FOR NEXT WRITE 
      JMP SBUFA     CONTINUE WRITING ON FILE
* 
*     HERE WHEN EOF REACHED 
* 
SBUFB JSB DALOC     DEALOCATE THE DCB 
      CLB 
      LDA FERR      GET CLOSE ERROR CODE
      SSA           SKIP IF OK
      LDB M2        SET FOR STATUS WORD 
      STA FERR      RESTORE ERROR CODE
      JMP SBUF,I    RETURN
      SKP 
      SPC 2 
* 
*     THIS SECTION CLOSES ALL FILES CURRENTLY 
*     OPEN TO THE REMOTE LU # 
* 
CLSIT LDA SATA      GET ADDRESS OF ACTIVE SATELLITES
      STA TEMP1     SAVE IN UP COUNTER
      LDA MMAXS     GET MAX # OF ENTRIES
      INA 
      STA TEMP2     SAVE IN DOWN COUNTER
      CLA           SET UP FOR TABLE DISPLACEMENT 
      STA TEMP3 
CLOS1 LDA RLU       GET REMOTE LU # 
      CPA TEMP1,I   IS THERE A MATCH
      RSS 
      JMP CLOS2     NO, TRY NEXT ONE
* 
      LDA TEMP3     GET DISPLACEMENT
      ADA DCBBA     GET TO DCB ADDRESS
      LDB A,I       GET DCB ADDRESS 
      STB CLSAL     SAVE FOR CLOSE
      CLB           DEALLOCATE DCB
      STB A,I         CLEAR TABLE LOCATION
      STB TEMP1,I     CLEAR SATELLITE ENTRY 
      JSB CLOSE     CLOSE DCB 
      DEF *+3 
CLSAL NOP 
      DEF FERR
      LDA CALOC     GET CURRENT # OF ACTIVE TERMINAL
      ADA M1        DECREASE IT BY 1
      CPA M1        NONE ACTIVE?
      JMP CLOS3      YES. GO TO COMPLETION. 
      STA CALOC     SAVE NEW CURRENT #
* 
CLOS2 ISZ TEMP1     NO...GET NEXT ENTRY 
      ISZ TEMP3 
      ISZ TEMP2     DONE? 
      JMP CLOS1     NO...CONTINUE 
* 
CLOS3 LDB M2
      LDA FERR      GET FMGR ERROR CODE 
      SSA           NO ERROR
      CPA M11         OR FILE ALREADY CLOSED
      CLB 
      CPB M2
      JMP TERM      EXIT IF ERROR 
      STB STAT      OK IN STATUS WORD 
      JSB WRPLY     SEND REPLY
      JMP PLOS0     GO TO SLEEP 
      SKP 
*     SUBROUTINE TO ALOCATE DCB AND OPEN A FILE 
*     CALLING SEQUENCE
*     JSB OPN 
*     NORMAL RETURN 
*     ERROR RETURN
* 
OPN   NOP 
      JSB ALOC      GO GET A DCB ADDRESS
      LDA DCBN      GET DCB ADDRESS 
      STA OPEN1     SAVE DCB ADDRESS
      JSB OPEN      GO TRY TO OPEN FILE 
      DEF *+7 
OPEN1 NOP           DCB ADDRESS HERE
      DEF FERR
      DEF PNAM      NAME OF FILE
      DEF D0
      DEF SC
      DEF LU
      LDA FERR      ANY ERRORS? 
      SSA,RSS 
      JMP OPN,I     NO...RETURN 
      JSB DALOC     YES...DEALOCATE THE DCB 
      ISZ OPN       SET FOR ERROR RETURN
      JMP OPN,I     ERROR RETURN
      SKP 
* 
*     SUBROUTINE TO CREATE A FILE 
*     CALLING SEQUENCE
*     JSB CRET
*     NORMAL RETURN 
*     ERROR RETURN
* 
CRET  NOP 
      JSB ALOC      GO GET A DCB
      LDA DCBN      GET THE DCB ADDRESS 
      STA CRET1     SAVE DCB ADDRESS
      LDA TYPE      GET TYPE WORD 
      SZA,RSS       IS IT ZERO? 
      LDA D11       YES...DEFAULT TO TYPE 11
      STA TYPE      SAVE TYPE WORD
      LDA SIZE      GET SIZE WORD 
      SZA,RSS       IS IT ZERO? 
      LDA D40       YES...DEFAULT TO 40 RECORDS 
      STA SIZE      SAVE SIZE WORD
      JSB CREAT     CREATE THE FILE 
      DEF *+8 
CRET1 NOP 
      DEF FERR
      DEF PNAM      NAME TO BE USED 
      DEF SIZE
      DEF TYPE      TYPE IS DEFINED AS TYPE 9 
      DEF SC        SECURITY CODE 
      DEF LU
      LDA FERR      GET FILE STATUS 
      SSA,RSS       ANY ERRORS? 
      JMP CRET,I    NO...RETURN 
      JSB DALOC     DEALOCTE DCB
      ISZ CRET      SET FOR ERROR RETURN
      JMP CRET,I    RETURN...ERROR
      SKP 
* 
*     SUBROUTINE TO ALOCATE A DCB 
*     CALLING SEQUENCE
*     JSB ALOC
* 
ALOC  NOP 
      LDA DCBBA     GET ADDRESS OF DCB AVAILABLE TABLE
      STA TEMP1     SAVE IN TEMP LOCATION 
      LDA MMAXS     GET MAX # OF ENTRIES
      STA TEMP2     SAVE IN DOWN COUNTER
      CLA           GET A ZERO
      STA TEMP3     SAVE AS MULT. FACTOR
ALOC1 ISZ TEMP2     DONE? 
      JMP ALOC3     NO...CONTINUE 
      LDB M3        YES...NO ROOM 
      JMP TERM      TELL OTHER SIDE TO TRY LATER
ALOC3 LDA TEMP1,I   GET CONTENTS OF TABLE 
      SZA,RSS       IS THERE SOMETHING THERE? 
      JMP ALOC2     NO...GOOD FOUND A HOME!!! 
      ISZ TEMP1     GET NEXT ADDRESS
      ISZ TEMP3     INCREMENT MULT COUNT
      JMP ALOC1     CONTINUE
* 
*     HERE IF WE HAVE ROOM
* 
ALOC2 LDA TEMP3     GET MULT FACTOR 
      MPY D144      GET DISPLACEMENT FROM FIRST 
      ADA DCBA      ADDRESS OF AVAILABLE DCB
      STA TEMP1,I   SAVE IN TABLE TO HOLD A PLACE 
      STA DCBN      SAVE IN PARMB 
      ISZ CALOC     INCREMENT # OF ACTIVE TERMINALS 
      NOP 
      LDA TEMP3     GET DISPLACEMENT
      ADA SATA      ADD FOR SATELLITE TABLE ENTRY 
      LDB RLU       GET REMOTE LU 
      STB A,I       SAVE PLACE IN TABLE 
      JMP ALOC,I    RETURN
      SPC 3 
      SKP 
* 
*     SUBROUTINE TO DALOCATE A DCB
*     CALLING SEQUENCE
*     JSB DALOC 
* 
DALOC NOP 
      LDA DCBBA     GET ADDRES OF DCB ACTIVE TABLE
      STA TEMP1     SAVE IN TEMP LOCATION 
      LDA MMAXS     GET MAX # OF ENTRIES
      STA TEMP2     SAVE IN TEMP LOCATION 
      LDA SATA      GET ADDRESS OF SATELLITE OPEN TABLE 
      STA TEMP3 
DALC1 ISZ TEMP2     GONE THRU TABLE?
      JMP DALC2     NO....GOOD
      LDB M4        WE IN BIG TROUBLE...SHOULD NEVER GET HERE 
      JMP TERM      UNKNOWN DCB 
DALC2 LDA TEMP1,I   GET ADDRESS IN TABLE
      CPA DCBN      THE SAME? 
      JMP DALC3     YES...DEALOCATE IT
      ISZ TEMP3     GET TO NEXT SATELLITE ENTRY 
      ISZ TEMP1     GET NEXT BUFFER ADDRESS 
      JMP DALC1     GO TRY AGAIN
* 
*     HERE FOR MATCH CONDITION
* 
DALC3 JSB CLOSE     CLOSE THE FILE
      DEF *+3       RETURN
      DEF DCBN,I    DCB ADDRESS 
      DEF DCBN      IGNORE ANY ERRORS 
      CLA           GET A ZERO
      STA TEMP1,I   CLEAR OUT TABLE LOCATION
      STA TEMP3,I   CLEAR OUT SATELLITE ENTRY 
      STA DCBN      CLEAR OUT DCB POINTER 
      LDA CALOC     GET CURRENT # OF ACTIVE TERMINALS 
      SZA           [ PROTECT AGAINST A NEGATIVE COUNT ]
      ADA M1        DECREASE IT BY 1
      STA CALOC     SAVE AS CURRENT # OF ACTIVE 
      JMP DALOC,I   RETURN
      SKP 
* 
*     SUBROUTINE TO SEND DATA TO TERMINAL 
*     CALLING SEQUENCE
*     JSB WREC
* 
WREC  NOP 
      LDA RLU       GET LU
      AND B77       CLEAN IT
      IOR B300      SET FOR DATA ONLY 
      STA CNWD
      JSB D65CL     SEND EXEC CALL
      DEF *+7 
      DEF IWRIT     WRITE REQUEST 
      DEF CNWD
      DEF DBUF      ADDRESS OF DATA BUFFER
      DEF BLEN      DATA LENGTH 
      DEF RBUF+33   PASS TIME-TAGS TO DRIVER
      DEF RBUF+34 
      NOP           ERROR RETURN
      JMP WREC,I    RETURN
      SPC 4 
* 
*     ROUTINE TO READ DATA FROM A TERMINAL
*     CALLING SEQUENCE
*     JSB RREC
* 
RREC  NOP 
      LDA RLU 
      AND B77 
      IOR B300      SET FOR DATA ONLY 
      STA CNWD
      JSB D65CL 
      DEF *+7 
      DEF IREAD     READ  DATA
      DEF CNWD
      DEF DBUF
      DEF BLEN
      DEF RBUF+33   PASS TIME-TAGS TO DRIVER
      DEF RBUF+34 
      NOP           ERROR RETURN
      JMP RREC,I    RETURN
      SKP 
* 
*     SUBROUTINE TO SEND A REPLY TO THE TERMINAL
*     CALLING SEQUENCE
*     JSB WRPLY 
*     B REG= STATUS 
* 
WRPLY NOP 
      LDA RBUF      SET IN REPLY BIT
      IOR BIT14 
      STA RBUF
      LDA RLU       GET REMOTE LU 
      STA RRLU      SAVE IN REPLY BUFFER
      AND B77 
      STA CNWD      SET CONTROL WORD (MODE 0) 
      JSB D65SV     SEND REPLY
      DEF *+7 
      DEF IWRIT     WRITE 
      DEF CNWD      REQUEST ONLY
      DEF RBUF      REQUST BUFFER 
      DEF RBUFL     REQUST BUFFER LENGTH
      DEF DUMMY 
      DEF DUMMY 
      NOP           ERROR RETURN
      JMP WRPLY,I   RETURN
      SPC 4 
* 
*     HERE TO TERMINATE ON AN ERROR CONDITION 
*     B REG=STATUS
* 
TERM  STB STAT      SAVE STATUS 
      LDA RLU       GET LU
      AND B77       CLEAN IT
      STA CNWD      SAVE THE CONTROL WORD.
      JSB D65CL     TELL OTHER SIDE, NO DATA
      DEF *+7 
      DEF ICONT     CONTROL REQUEST 
      DEF CNWD      SEND STOP 
      DEF DUMMY 
      DEF DUMMY 
      DEF DUMMY 
      DEF DUMMY 
      NOP           ERROR RETURN
      JSB WRPLY     SEND REPLY...REASON FOR STOP
      JMP PLOS0     WAIT FOR SOMEONE ELSE 
      SPC 3 
      SKP 
* 
*     TEMP VALUES,CONSTANTS,BUFFERS, WHAT EVER
* 
MAXN  EQU 2         MAX # OF OPEN TERMINALS 
BUFS  EQU 512       SIZE OF DATA BUFFER 
      SPC 1 
CLSNM NOP           CLASS NUMBER
BIT14 OCT 40000 
D21   DEC 21
D1    DEC 1 
D2    DEC 2 
D11   DEC 11
D40   DEC 40
D144  DEC 144 
M1    DEC -1
M2    DEC -2
M3    DEC -3
M4    DEC -4
M11   DEC -11 
MMAXS ABS 0-MAXN-1  MAX # OF TERMINALS + 1
MBUFS ABS 0-BUFS-1 DATA BUFFER SIZE 
CALOC OCT 0         CURRENT # OF ACTIVE DCB'S 
TEMP0 NOP 
TEMP1 NOP 
TEMP2 NOP 
TEMP3 NOP 
D0    OCT 0 
DBUFA DEF DBUF
D35   DEC 35
IREAD OCT 100001    READ    / RETURN IF ERROR 
IWRIT OCT 100002    WRITE   / RETURN IF ERROR 
ICONT OCT 100003    CONTROL / RETURN IF ERROR 
RBUFL ABS RBFL      REQUEST BUFFER LENGTH 
DCBBA DEF DCCB
DCBA  DEF DCBF
SATA  DEF SAT 
CNWD  NOP 
B77   OCT 77
B300  OCT 300 
DUMMY NOP 
      SKP 
* 
*     HERE WE DEFINE THE PARMB
* 
.     EQU * 
RBUF  NOP           STREAM ID 
DCBN  NOP           DCB ADDRESS 
LSFG  NOP           LOAD-SAVE FLAG,OVERIDE FLAG 
FERR  NOP           FILE MANAGER STATUS 
STAT  NOP           STATUS
PNAM  NOP           PROGRAM NAME
      BSS 2 
SC    NOP           SECURITY CODE 
LU    NOP           LOGICAL UNIT
TYPE  NOP           FILE TYPE 
SIZE  NOP           FILE SIZE 
BLEN  NOP           BUFFER LENGTH 
      BSS 3         NOT USED
RRLU  NOP           REMOTE LU 
RBFL  EQU *-.       LENGTH OF REQUEST BUFFER
      BSS 7         NOT USED
RLU   NOP           REMOTE LU (PARMB + 24)
      BSS 10        REMAINDER OF PARMB (TIME TAGS)
      SPC 2 
* 
*     DEFINE SATELLITE OPEN TABLE 
* 
SAT   REP MAXN
      NOP 
      SPC 2 
*     DEFINE DCB TABLE
DCCB  BSS 0 
      REP MAXN
      NOP 
      SPC 2 
*     DEFINE DCB AREA 
DCBF  BSS 0 
      REP MAXN
      BSS 144 
      SPC 2 
*     DEFINE DATA BUFFER
DBUF  BSS 512 
END   EQU * 
      END PLOSB 
                                                                                                                                                                                                                                                          