Compucolor.org – Virtual Media

Listing of file='FORDEM.FOR;01' on disk='vmedia/chip_61-sector.ccvf'

C
C
	PROGRAM FORDEM
C
C	THIS PROGRAM, FORTRAN-DEMO, IS TO DEMONSTRATE THE USE
C	 OF THE FORTRAN PLOT SUBROUTINES WRITTEN BY THE AUTHOR
C
C	WRITTEN BY: JOSEPH J. CHARLES, 130 SHERWOOD DRIVE,
C		    HILTON, NY 14468  TEL:(716) 392-8152
C
C
C	VERSION: JULY 18,1982,  6:55 PM
C
C
	DIMENSION X(51),Y(51),X2(51),Y2(51),Y3(51)
C
	LOGICAL BLACK,RED,GREEN,YELLOW,BLUE,MAGNTA,CYAN,WHITE
	LOGICAL FGOFL0,BGOFLO,BLA7OF,BLINK,ERASE,SETBR,ESC
	LOGICAL A7ON,BRC,PAGE,SCROLL,CURSOR,LX,LY,COLOR,HOME
	LOGICAL X2,Y2,Y3,HR,MIN,SEC
C
	DATA BLACK,RED,GREEN,YELLOW,BLUE,MAGNTA/16,17,18,19,20,21/
	DATA CYAN,WHITE,ERASE,BLA7OF,BLINK,HOME/22,23,12,15,31,8/
	DATA ESC,SETBR,A7ON,PAGE,SCROLL,CURSOR/27,18,14,24,11,3/
	DATA BGOFLO,FGOFL0/30,29/
C
	WRITE(3)BGOFLO,BLACK,FGOFL0,YELLOW,BLA7OF
C
	WRITE(3,105)
105	FORMAT(' INPUT DATA MUST BE IN FORM INDICATED. FOR EXAMPLE'/
     1	' ## ## ##  MEANS 3 TWO DIGIT NUMBERS ,RIGHT JUSTIFIED, WITH A',
     2	'  SPACE BETWEEN THEM. E.G. 09 17 30')
C
	WRITE(3,106)
106	FORMAT(' ENTER THE TIME (HOURS MINUTES SECONDS) ## ## ##')
	READ(3,107) IHR,IMIN,ISEC
107	FORMAT(3(I2,1X))
C
C	CONVERT TO  ONE BYTE EACH
	HR=IHR
	MIN=IMIN
	SEC=ISEC
C
C	POKE TO 33211,33210,33209
C		(X'81BB',X'81BA',X'81B9' IN HEX)
C
	CALL POKE(X'81BB',HR)
	CALL POKE(X'81BA',MIN)
	CALL POKE(X'81B9',SEC)
C
	WRITE(3,111)
111	FORMAT(' ENTER BAUD RATE CODE FOR YOUR PRINTER IF'/,
     1	' YOU WANT TO USE IT. (1-7) ENTER 0 OTHERWISE. # ')
C
	READ(3,112) IBRC
112	FORMAT(I1)
C
	IF( IBRC .EQ. 0) GO TO 2
C
	BRC=IBRC
3	WRITE(3) ESC,SETBR,BRC
C
	WRITE(3,113)
113	FORMAT(' ENTER NUMBER OF STOP BITS FOR YOUR PRINTER.'/,
     1	' (1 OR 2) # ')
	READ(3,112) NSB
C
	IF(NSB .EQ. 1) WRITE(3) A7ON
	IF(NSB .EQ. 2) WRITE(3) BLA7OF
C
2	WRITE(3,130)
130	FORMAT(' FOR HOW MANY SECONDS WOULD YOU LIKE TO OBSERVE '/
     1	' EACH DEMONSTRATION PLOT? ## ')
	READ (3,107) NSEC
C
	WRITE(3,101)
101	FORMAT(' ENTER X,Y FOR LOWER LEFT CORNER: ### ###'/,
     1	' ENTER X GREATER THAN 127 TO END PROGRAM.')
C
	READ (3,102)IXMIN,IYMIN
102	FORMAT(I3,1X,I3)
	IF(IXMIN .GT. 127) GOTO 8
C
	WRITE(3,103)
103	FORMAT(' ENTER X,Y FOR UPPER RIGHT CORNER: ### ###')
	READ (3,102) IXMAX,IYMAX
C
C	DEFINE GAUSSIAN FUNCTION:
C		N(0,1) ( NOT NORMALIZED TO UNIT AREA )
C
	Y(26)=1.
	X(26)=0.
	DO 1 I=1,25
	X(I)=(I-26)/8.
	Y(I)=EXP(-0.5*(X(I)**2))
	X(I+26)=I/8.
1	Y(I+26)=EXP(-0.5*(X(I+26)**2))
C
C	WRITE DATA TO PRINTER IF PRINTER IS THERE
	IF(IBRC .EQ. 0) GO TO 4
C
6	WRITE(2,104)
104	FORMAT(' ','  I',5X,'X(I)',6X,'Y(I)',9X,'X(I+1)    Y(I+1)')
C
	WRITE(2,100) (I,X(I),Y(I),X(I+1),Y(I+1), I=1,49,2)
100	FORMAT(' ',I5,2(F10.4,F10.6,5X))
C
	WRITE(2,110)
C
4	CALL SCALE(X,X2,51,IXMIN,IXMAX)
C
	CALL SCALE(Y,Y2,51,IYMIN,IYMAX)
C
C	WRITE SCALED VALUES TO PRINTER
	IF( IBRC .EQ.0 ) GOTO 5
C
7	WRITE (2,108)
108	FORMAT(////' SCALED BYTE VALUES'/)
C
	WRITE(2,109) (I,X2(I),Y2(I),X2(I+1),Y2(I+1), I=1,49,2)
109	FORMAT (' ',I5,5X,I3,7X,I3,12X,I3,7X,I3)
C
	WRITE(2,110)
110	FORMAT(///)
C
5	WRITE(3) ESC,PAGE,ERASE
C
	WRITE(3,140)
140	FORMAT(' PLAIN OLD BELL-SHAPED CURVE FOR STARTERS...')
	CALL TIMER(2)
	CALL LINE (X2,Y2,51,RED,BLACK,0,0)
	CALL TIMER(NSEC)
	WRITE(3) ERASE
C
	WRITE(3,141)
141	FORMAT(' SAME, BUT IN POINT PLOT MODE WITH BLINKING.')
	CALL TIMER(3)
	WRITE(3) ERASE
	CALL PPLOT(X2,Y2,51,GREEN,BLACK,1,0)
	CALL TIMER(NSEC)
C
	WRITE(3,142)
142	FORMAT(' PUT TWO CURVES UP...')
	CALL TIMER(2)
	WRITE(3) ERASE
	CALL LINE (X2,Y2,51,YELLOW,BLACK,0,0)
	DO 14 I=1,41
14	Y3(I)=Y2(I+10)
	CALL LINE (X2,Y3,41,BLUE,BLACK,0,0)
	CALL TIMER(NSEC)
C
	WRITE(3) HOME
	WRITE(3,143)
143	FORMAT(' ERASE ONE BY REPLOTTING WITH XOR-ING')
	CALL TIMER(2)
	CALL LINE (X2,Y2,51,YELLOW,BLACK,0,1)
	CALL TIMER(NSEC)
	WRITE(3) ERASE
C
	WRITE(3,144)
144	FORMAT(' Y BAR-GRAPH MODE...ONE SUB CALL FOR EACH LINE')
	CALL TIMER(4)
	DO 13 I=1,51
13	CALL YBAR(Y2(1),X2(I),Y2(I),RED,BLACK,0,0)
	CALL TIMER(NSEC)
	WRITE(3) ERASE
C
	WRITE(3,145)
145	FORMAT(' X BARS...')
	CALL TIMER(2)
	WRITE(3) ERASE
	DO 9 I=1,51
9	CALL XBAR(Y2(1),X2(I),Y2(I),YELLOW,BLACK,0,0)
	CALL TIMER(NSEC)
C
	WRITE(3) HOME
	WRITE(3,146)
146	FORMAT(' ERASE BY XOR-ING EVERY OTHER ONE...')
	CALL TIMER(4)
	DO 10 I=2,50,2
10	CALL XBAR(Y2(1),X2(I),Y2(I),YELLOW,BLACK,0,1)
	CALL TIMER(NSEC)
C
	WRITE(3) HOME
	WRITE(3,147)
147	FORMAT(' REPLOT REMAINING ONES BLINKING YELLOW.')
	CALL TIMER(4)
	DO 11 I=1,51,2
11	CALL XBAR(Y2(1),X2(I),Y2(I),YELLOW,BLACK,1,0)
	CALL TIMER(NSEC)
	WRITE(3) ERASE
C
	DO 12 K=1,5
	DO 12 I=17,23
	COLOR=I
12	WRITE(3)BGOFLO,COLOR,ERASE
C
	LX=0
	LY=16
	WRITE(3)BGOFLO,BLACK,FGOFL0,RED,ERASE,BLINK,A7ON,CURSOR,LX,LY
	WRITE(3,131)
131	FORMAT(17X,'TH..TH..THAT''S ALL, FOLKS!!! ')
C
	CALL TIMER(15)
	WRITE(3) ESC,SCROLL,FGOFL0,GREEN,BLA7OF
C
	GOTO 2
C
8	END