File DRAW.FT (FORTRAN source file)

Directory of image this file is from
This file as a plain text file

C PROGRAM DRAW
C DRAW IS PRIMARILY CONCERNED WITH LINEAR IMAGES.THAT IS TO SAY,IT
C USES THE CROSSHAIRS TO DRAW STRAIGHT LINES,AND CAN ALSO CREATE
C CLOSED POLYGONS OF N-SIDES AND WITH A SPECIFIC RADIUS.THIS IMPLIES
C THE ABILITY TO INSCRIBE AND CIRCUMSCRIBE VERY SIMPLY,BY SPECIFYING
C THE CORRECT RADIUS AND THE SAME CENTER AS FOR THE ORIGINAL POLYGON.
C DRAW ALSO HAS ALL THE HOUSEKEEPING FUNCTIONS.
C	D	DRAWS DARK VECTOR
C	E	ERASES SCREEN
C	F	CHAINS TO MODIFY.SV
C	G	CHAINS TO GFIC.SV
C	I	INITIALIZES TABLE
C	L	DRAWS LIGHT VECTOR
C	N	WRITES NUMMBER OF POINTS USED IN TABLE
C	O	OMITS POINTS FROM TABLE (#)
C	P	DRAWS POINT
C	T	CHAINS TO TAPE.SV
C	W	WRITES ALL POINTS
C	X	EXITS FROM PROGRAM
C	Y	DRAWS POLYGON (RADIUS,NUMBER OF SIDES)
C FORTRAN II
C SR : ERASE.FT / JOY.FT / FDIS.FT / ALPHA.FT
C CH : TAPE.SV / MODIFY.SV / GFIC.SV
C BEARBEITUNG VON DECUS #8-773
	COMMON NTAB,IPT
	DIMENSION NTAB (500,3)
	GOTO 3
C INIT TABLE
1	IPT=0
	CALL FDIS (0,0,0)
	GOTO 3
C ERASE SCREEN
2	CALL ERASE
C GET COORDINATES AND CHARACTERS
3	CALL JOY(IX,IY,K)
C D(288) DARK VECTOR, O(992) OMIT, I(608) INITIALIZE
C L(800) LIGHT VECTOR, P(1056) POINT, E(352) ERASE,
C W(1504) WRITE TABLE, T(1312) TAPE, G(480) CHAIN TO GFIC
C Y(1632) POLYGON, X(1568) EXIT
C F(416) CHAIN TO MODIFY
	IF (K-288) 4,17,4
4	IF (K-992) 5,23,5
5	IF (K-608) 6,1,6
6	IF (K-800) 7,18,7
7	IF (K-1568)8,28,8
8	IF (K-1056) 9,19,9
9	IF (K-352) 10,2,10
10	IF (K-1504) 11,21,11
11	IF (K-1312) 12,26,12
12	IF (K-480) 13,27,13
13	IF (K-1632) 14,31,14
14	IF (K-928) 15,30,15
15	IF (K-864) 16,38,16
16	IF (K-416) 3,29,3
C SET I FOR DARK VECTOR

17 I=0 GOTO 20 C I=LIGHT VECTOR,CALL FDIS FOR LAST POINT 18 I=1 CALL FDIS(0,NTAB(IPT,2),NTAB(IPT,3)) GOTO 20 C I=POINT 19 I=-1 C DRAW VECTOR, PUT POINT IN TABLE 20 CALL FDIS(I,IX,IY) IPT=IPT+1 NTAB(IPT,1)=I NTAB(IPT,2)=IX NTAB(IPT,3)=IY GOTO 3 C WRITE ROUTINE-GO HOME, CALL FDIS WITH EACH POINT 21 CALL FDIS(0,0,0) DO 22 N=1,IPT 22 CALL FDIS(NTAB(N,1),NTAB(N,2),NTAB(N,3)) GOTO 3 C OMIT ROUTINE-GET NO OF POINTS TO OMIT 23 CALL ALPHA READ (1,100) M 100 FORMAT ('#',1I3) IF (IPT-M) 25,25,24 24 IPT=IPT-M CALL ERASE GOTO 21 25 CALL ERASE GOTO 1 26 CALL CHAIN ('TAPE') 27 CALL CHAIN ('GFIC') 29 CALL CHAIN ('MODIFY') 28 CALL EXIT C WRITE IPT 30 CALL ALPHA WRITE (1,101) IPT 101 FORMAT (I3) GOTO 3 31 CALL ALPHA C POLYGON ROUTINE READ (1,103) R,X 103 FORMAT ('RADIUS 'F3.0' # OF SIDES 'F3.0) CALL JOY(IX,IY,K) X4=6.2831853 X3=0. X2=X4/X IPT=IPT+1 NTAB(IPT,1)=-1 NTAB(IPT,2)=IFIX(R)+IX NTAB(IPT,3)=IY CALL FDIS(-1,NTAB(IPT,2),NTAB(IPT,3)) 34 IPT=IPT+1 IF (IPT-500) 35,35,37 35 NTAB(IPT,1)=1
NTAB(IPT,2)=IFIX(R*COS(X3))+IX NTAB(IPT,3)=IFIX(R*SIN(X3))+IY X3=X3+X2 IF (X3-X4) 36,36,3 36 CALL FDIS (1,NTAB(IPT,2),NTAB(IPT,3)) GOTO 34 37 CALL ALPHA WRITE (1,104) 104 FORMAT ('MATRIX FILLED') GOTO 3 C MOVING SUBROUTINE 38 CALL ALPHA READ (1,105) K 105 FORMAT ('DESTROY OLD? Y=1, N=2 'I1) GOTO (40,39),K 39 NPT=IPT NTAB(IPT+1,1)=-1 GOTO 41 40 NPT=0 41 CALL JOY(IX,IY,K) NX=IX NZ=IY CALL JOY(IX,IY,K) NX=IX-NX NZ=IY-NZ DO 42 N=1,IPT NTAB(NPT+N,1)=NTAB(N,1) NTAB(NPT+N,2)=NTAB(N,2)+NX 42 NTAB(NPT+N,3)=NTAB(N,3)+NZ IPT=IPT+NPT CALL ALPHA WRITE (1,106) IPT 106 FORMAT (I3) GOTO 3 END



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search