!*! Updated on 03-Aug-90 at 3:52 PM by Steve Archuleta; edit time: 0:05:50
!
! SINWAV
!
++INCLUDE AMGSYM.BSI
MAP1 GCB,X,56000
MAP1 DSP'MAX,F,6,200
MAP1 DSP'ARRAY
MAP2 DSP'COUNT,B,2
MAP2 DSP'XY(200)
MAP3 DSP'X,B,2
MAP3 DSP'Y,B,2
MAP1 CLEAR'MAX,F,6,200
MAP1 CLEAR'ARRAY
MAP2 CLEAR'COUNT,B,2
MAP2 CLEAR'XY(200)
MAP3 CLEAR'X,B,2
MAP3 CLEAR'Y,B,2
MAP1 POINT'MAX,F,6,200
MAP1 POINT'ARRAY
MAP2 POINT'COUNT,B,2
MAP2 POINTS(200)
MAP3 POINT'X,B,2
MAP3 POINT'Y,B,2
MAP1 HOLD'X,B,2
MAP1 HOLD'Y,B,2
MAP1 STATUS,F !Status retruned from AMIGOS calls
MAP1 RQLC$,S,80
MAP1 PI,F
PI =3.141592654
!***********************************************!
SINWAV:
ON ERROR GOTO END'IT
PRINT TAB(-1,0);
GOSUB DO'OVERHEAD
GOSUB DO'BOX
GOSUB DO'WAVE
END'IT:
XCALL AMGSBR,G'CLWK,GCB,STATUS
PRINT TAB(1,1);
END
!***********************************************!
DO'OVERHEAD:
! Open the workstation
XCALL AMGSBR,G'OPWK,GCB,"",STATUS
! Clear the workstation
XCALL AMGSBR,G'CLRW,GCB,STATUS
! Polymarker Overhead
! XCALL AMGSBR,G'SPMT,GCB,2,STATUS ! type
! XCALL AMGSBR,G'SPMS,GCB,20,STATUS ! style
! XCALL AMGSBR,G'SPMC,GCB,3,STATUS ! color
! Polyline Overhead
XCALL AMGSBR,G'SPLT,GCB,1,STATUS ! type
XCALL AMGSBR,G'SPLS,GCB,0,STATUS ! width
XCALL AMGSBR,G'SPLC,GCB,1,STATUS ! color
! Text Overhead
! XCALL AMGSBR,G'STXF,GCB,1004,STATUS ! font
! XCALL AMGSBR,G'STXC,GCB,3,STATUS ! color
! XCALL AMGSBR,G'SCHH,GCB,1500,STATUS ! height
! Fill Area Overhead
! XCALL AMGSBR,G'SFAC,GCB,4,STATUS ! color
! XCALL AMGSBR,G'SFAS,GCB,3,STATUS ! style
! XCALL AMGSBR,G'SFAI,GCB,55,STATUS ! index
RETURN
!***********************************************!
DO'BOX:
POINT'COUNT =5
XMIN =2000
XMAX =30000
YMIN =1000
YMAX =21000
POINT'X(1) =XMIN
POINT'Y(1) =YMIN
POINT'X(2) =XMIN
POINT'Y(2) =YMAX
POINT'X(3) =XMAX
POINT'Y(3) =YMAX
POINT'X(4) =XMAX
POINT'Y(4) =YMIN
POINT'X(5) =POINT'X(1)
POINT'Y(5) =POINT'Y(1)
XCALL AMGSBR,G'SPLC,GCB,7,STATUS
XCALL AMGSBR,G'PL,GCB,POINT'ARRAY,STATUS
POINT'COUNT =2
POINT'X(1) =XMIN
POINT'X(2) =XMAX
XCALL AMGSBR,G'SPLC,GCB,15,STATUS
IKTR =0
FOR I=(YMIN+2000) TO (YMAX-2000) STEP 2000
POINT'Y(1) =I
POINT'Y(2) =I
IKTR =IKTR+1
IF IKTR # 5 THEN &
XCALL AMGSBR,G'PL,GCB,POINT'ARRAY,STATUS &
ELSE &
XCALL AMGSBR,G'SPLT,GCB,2,STATUS : &
XCALL AMGSBR,G'SPLC,GCB,7,STATUS : &
XCALL AMGSBR,G'PL,GCB,POINT'ARRAY,STATUS : &
XCALL AMGSBR,G'SPLC,GCB,15,STATUS
XCALL AMGSBR,G'SPLT,GCB,1,STATUS
NEXT I
POINT'Y(1) =YMIN
POINT'Y(2) =YMAX
IKTR =0
FOR I=(XMIN+2000) TO (XMAX-2000) STEP 2000
POINT'X(1) =I
POINT'X(2) =I
IKTR =IKTR+1
IF IKTR # 7 THEN &
XCALL AMGSBR,G'PL,GCB,POINT'ARRAY,STATUS &
ELSE &
XCALL AMGSBR,G'SPLT,GCB,2,STATUS : &
XCALL AMGSBR,G'SPLC,GCB,7,STATUS : &
XCALL AMGSBR,G'PL,GCB,POINT'ARRAY,STATUS : &
XCALL AMGSBR,G'SPLC,GCB,15,STATUS
XCALL AMGSBR,G'SPLT,GCB,1,STATUS
NEXT I
RETURN
!***********************************************!
LOAD'POINTX:
POINT'COUNT =0
FOR I=0 TO (2*PI) STEP ((2*PI)/100)
POINT'COUNT =POINT'COUNT+1
POINT'X(POINT'COUNT) =XAXIS
XAXIS =XAXIS+XINC
NEXT I
POINT'COUNT =POINT'COUNT-1
RETURN
GET'POINTY:
Y =SIN(X)
POINT'Y(PLT'KTR)=YAXIS+INT(Y*YINC)
X =X+((2*PI)/100)
LOOP'KTR=LOOP'KTR+1
IF LOOP'KTR>200 THEN EOF'FLAG=1
RETURN
!***********************************************!
DO'WAVE:
YAXIS =(((YMAX-YMIN)/2)+YMIN)
XAXIS =XMIN
YINC =8000
XINC =(XMAX-XMIN)/100
GOSUB LOAD'POINTX
POINT'MAX=POINT'COUNT
PLT'KTR =POINT'MAX
GOSUB GET'POINTY
CLR'KTR =0
WAVE'LOOP:
PLT'KTR =PLT'KTR+1
IF PLT'KTR > POINT'MAX THEN &
POINT'Y(1) =POINT'Y(POINT'MAX) : &
PLT'KTR=2
GOSUB GET'POINTY
IF EOF'FLAG=1 THEN GOTO END'LOOP
GOSUB PLOT'WAVE
GOSUB CLEAR'WAVE
GOTO WAVE'LOOP
END'LOOP:
RETURN
!***********************************************!
PLOT'WAVE:
DSP'COUNT =2
DSP'X(1) =POINT'X(PLT'KTR-1)
DSP'Y(1) =POINT'Y(PLT'KTR-1)
DSP'X(2) =POINT'X(PLT'KTR)
DSP'Y(2) =POINT'Y(PLT'KTR)
XCALL AMGSBR,G'SPLC,GCB,1,STATUS
XCALL AMGSBR,G'PL,GCB,DSP'ARRAY,STATUS
IF PLT'KTR>(POINT'MAX-6) THEN CLR'FLAG=1
RETURN
!***********************************************!
CLEAR'WAVE:
IF CLR'FLAG # 1 THEN RETURN
CLR'KTR =CLR'KTR+1
DSP'COUNT =2
DSP'X(1) =POINT'X(CLR'KTR-1)
DSP'Y(1) =POINT'Y(CLR'KTR-1)
DSP'X(2) =POINT'X(CLR'KTR)
DSP'Y(2) =POINT'Y(CLR'KTR)
XCALL AMGSBR,G'SPLC,GCB,0,STATUS
XCALL AMGSBR,G'PL,GCB,DSP'ARRAY,STATUS
RETURN
!***********************************************!
!***********************************************!