	SUBROUTINE USRSAT(B,I)
C
C	SIMPLE DRAWING PROGRAM USING DECGRAPHIC-11 SOFTWARE
C
C		SATELLITE END OF HOST/SATELLITE VERSION
C		USES INTEGER MODE, LOCAL SAVE/RSTR,
C		AND LK11 PUSH BUTTON BOX
C
	LOGICAL*1 B(60),FILE1(16),FILE2(16)
	IF(I.EQ.0.OR.B(1).LT.101.OR.B(1).GT.103)RETURN
	GOTO (10100,10200,10300),B(1)-100
10100	K2=B(2)
	CALL INFILE(K2,FILE1,FILE2,I)
	RETURN
10200	CALL DHOST(1)
	CALL MENUH(IT,INTEGR(B(2)),INTEGR(B(4)))
	CALL TOHOST(1,IT)
	RETURN
10300	CALL DHOST(2)
	K=B(2)
	CALL PICKOB(IT,K)
	CALL TOHOST(2,IT)
	RETURN
	END
	SUBROUTINE MENUH(IT,M1,M2)
C
C	WAIT FOR MENU HIT
C
	LOGICAL*1 ALL(16),TEMP(16)
	DATA ALL/16*.TRUE./
	DO 10 I=1,16
10	TEMP(I)=.FALSE.
	CALL PBL(ALL,TEMP)
100	CALL GRATTN(1,IDEV,1,2,3)
	GOTO (130,120,110),IDEV
110	CALL KBC(IT)
	IT=IT-65+M1
	IH=1
	GOTO 135
120	CALL PBH(IH,TEMP)
	DO 125 IT=M1,M1+15
	IF(TEMP(IT-M1+1))GOTO 135
125	CONTINUE
	GOTO 100
130	CALL LPEN(IH,IT)
135	IF(IH.EQ.0.OR.IT.LT.M1.OR.IT.GT.M2)GOTO 100
	CALL POINTR(10,IT)
	CALL INTENS(10,8)
	IT=IT-M1+1
	TEMP(IT)=.TRUE.
	CALL PBL(ALL,TEMP)
	TEMP(IT)=.FALSE.
	CALL WAIT(5000)
	CALL LPEN(IH,IX)
	CALL INTENS(10,4)
	CALL PBL(ALL,TEMP)
	RETURN
	END
	SUBROUTINE PICKOB(IT,IP)
C
C	PICK AN OBJECT
C
100	CALL GRATTN(1,IT,1)
	CALL LPEN(IH,IT)
	IF(IH.EQ.0.OR.IT.LT.1.OR.IT.GT.209)GOTO 100
	CALL POINTR(IP,IT)
	CALL INTENS(IP,-8)
	CALL WAIT(5000)
	CALL INTENS(IP,-4)
	RETURN
	END
	SUBROUTINE INFILE(IFUN,FILE1,FILE2,II)
	COMMON/PDATA/NPRIM(209),NVPRIM(209),NDEF,NHID
	LOGICAL*1 FILE1(16),FILE2(16),DAT(5),DSP(5),D,X
	DATA DSP,DAT/'.','D','S','P',0,'.','D','A','T',0/
	DATA D,X/'D','X'/
	CALL DHOST(23)
1	CALL TTW(0,'FILENAME : ',-1)
	CALL KBS(16,FILE1,N)
	IF(N.EQ.0)GOTO 1
	DO 100 I=1,N
100	FILE2(I)=FILE1(I)
	DO 200 I=1,5
	FILE1(I+N)=DSP(I)
200	FILE2(I+N)=DAT(I)
	IF(FILE1(1).EQ.D.AND.FILE1(2).EQ.X)GOTO 300
	CALL TOHOST(11,FILE1,11,FILE2,1,0)
	RETURN
300	CALL TOHOST(22,FILE1,1,1)
	IF(IFUN.EQ.0)GOTO 800
	DO 400 I=1,420,20
400	CALL FRHOST(NPRIM(I))
	CALL ACCESS(1,FILE2,1,IR)
	IF(IR.LT.0)CALL ACCESS(2,FILE2,1,IR,2)
	CALL READWR(1,1,0,420,NPRIM,IR2)
	CALL SAVE(FILE1)
500	IF(IR.LT.0.OR.IR2.LT.0)CALL TTW(0,'IO ERROR')
	RETURN
800	CALL ACCESS(1,FILE2,1,IR)
	CALL READWR(0,1,0,420,NPRIM,IR2)
	DO 900 I=1,420,20
900	CALL TOHOST(40,NPRIM(I))
	CALL INIT
	CALL RSTR(FILE1)
	GOTO 500
	END
��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������