File: M8GEN.FT of Disk: V50/Multi8/Multi-1
(Source file text) 

C*DATE 01-02-2023
C FORTRAN IV VERSION OF MULTI8 GENERATOR PROGRAM
C 	UNIT 4:TERMINAL, UNIT 6: CONFIG.PA<, 
C	UNIT 7:CONFIG.DA,UNIT 8: MULTI8.BI<
	DIMENSION ITXT1(30),ISYMB(3)
	DIMENSION MASK(20)
	VERS='50'
	IMASK=1
	DO 10 I=1,20
10	MASK(I)=0
	WRITE(4,15) VERS
15	FORMAT(1X,'    --- MULTI8 SYSTEM CONFIGURATOR V',A2,' ---',//,
     1  1X,'ANSWER ALL QUESTIONS WITH "Y", "N", A NUMBER OR "RETURN"',/
     2  1X,'"RETURN" GIVES THE VALUE INDICATED IN SQUARE BRACKETS ([])')
	N=8
C	NOW WRITING TO 6 CONFIG.PA
	WRITE(6,20) VERS
20	FORMAT(1X,'/MULTI8 V',A2,' CONFIGURATION FILE')
C	
	WRITE(4,22)
22	FORMAT(1X,'DO YOU HAVE 128K MEMORY (KT8A) ? [NO] ',$)
	READ(4,23) IA
23	FORMAT(A1)
	IF (IA.NE.'Y') GOTO 25
	WRITE(6,24)
24	FORMAT(1X,'KT8A=1')
25	WRITE(4,26)
26	FORMAT(1X,'WHAT VERSION OF OS/8 IS INSTALLED ? [50] ',$)
	READ(4,27) M
27	FORMAT(I2)
	IF (M) 28,28,30
28	M=50
	WRITE(6,29) M
29	FORMAT(1X,'OS8=',I2)
30	WRITE(4,31)
31	FORMAT(1X,'HOW MUCH MEMORY FOR THE FOREGROUND ? [8K] ',$)
	READ(4,32) M
32	FORMAT(I2)
35	IF (M) 45,40,45
40	M=8
45	IF (AMOD(M,4)) 50,60,50
50	WRITE(4,55)
55	FORMAT(1X,'IT MUST BE A MULTIPLE OF 4K, DARLING!',$)
	GOTO 30
60	M=M/4
	IF (M-2) 65,75,75
65	WRITE(4,70)
70	FORMAT(1X,'THE FOREGROUNDS NEEDS 8K MINIMUM ! TRY AGAIN.',$)
	GOTO 30
75	IF (N-M-2) 80,90,90
80	WRITE(4,85) 
85	FORMAT(1X,'THAT LEAVES TOO FEW FOR THE BACKGROUND !'
     1  ' TRY AGAIN ',$)
	GOTO 31
90	N=N-M
	WRITE(6,95) M
95	FORMAT(1X,'FIELDS=',I1)
	WRITE(4,100)
100	FORMAT(1X,'DO YOU HAVE AN EAE (EXT. ARITHM. ELEMENT) ? [NO] ',$)
	READ(4,101) IA
101	FORMAT(A1)
	IF (IA.NE.'Y') GOTO 115
105	WRITE(6,110)
110	FORMAT(1X,'EAE=1')
115	WRITE(4,120) 
120	FORMAT(1X,'HOW MANY TERMINALS DO YOU HAVE [1] ?',$)
121	READ(4,122) N
122	FORMAT(I1)
	IF (N) 123,123,125
123	N=1
125	NTERM=N
	WRITE(4,135)
135	FORMAT(1X,'DEVICE CODE FOR TERMINAL #1 IS 03')
	IDEV=24
	DO 280 I=1,NTERM
	IF (I-1) 140,170,140
140	WRITE(4,145) I,IDEV
145	FORMAT(1X,'ENTER DEVICE CODE FOR TERMINAL #',I1,' [',I2,'] ',$)
	N=0
	READ(4,150) N
150	FORMAT(I2)
	IF (N) 155,155,160
155	N=IDEV
160	WRITE(6,165) I,N
165	FORMAT(1X,'KL8E',I1,'=',I2,'0')
	IDEV=N+2
170	CONTINUE
	WRITE(4,175) 
175	FORMAT(1X,'   IS THIS A VIDEO TERMINAL ? [YES] ',$)
	READ(4,176) IA
176	FORMAT(A1)
	IF (IA.NE.'N') GOTO 190
180	WRITE(6,185) I
185	FORMAT(1X,'T',I1,'BACK=334')
	GOTO 210
190	WRITE(4,195) 
195	FORMAT(1X,'   WHAT IS ITS BACKSPACE CODE ? [210] ',$)
	READ(4,196) M
196	FORMAT(I3)
	IF (M) 198,198,200
198	M=210
200	WRITE(6,205) I,M
205	FORMAT(1X,'T'I1,'BACK=',I3)
210	WRITE(4,215)
215	FORMAT(1X,'   WHAT IS ITS ESCAPE CODE ? [233] '$)
	READ(4,196) M
	IF (M) 216,216,220
216	M=233
220	WRITE(6,225) I,M
225	FORMAT(1X,'T',I1,'ESCP=',I3)
	WRITE(4,235) 
235	FORMAT(1X,'   DOES IT NEED FILLER CHARACTERS ? [NO] '$)
	READ(4,176) IA
	IF (IA.NE.'Y') GOTO 275
240	M=0
	WRITE(4,245)
245	FORMAT(1X,'   HOW MANY FILLER CHARACTERS ? ',$)
	READ(4,246) M
246	FORMAT(I3)
	WRITE(6,250) I,M
250	FORMAT(1X,'T',I1,'FILL=',I4)
	M=0
	WRITE(4,255) 
255	FORMAT(1X,'   AFTER WHAT CHARACTER CODE ? [212] ',$)
	READ(4,256) M
256	FORMAT(I3)
	IF (M) 260,260,265
260	M=212
265	WRITE(6,270) I,M
270	FORMAT(1X,'T',I1,'CHAR=',I3)
275	CONTINUE
280	CONTINUE
	WRITE(4,285) 
285	FORMAT(1X,'HOW MANY BACKGROUNDS DO YOU NEED. THERE CAN BE'/
     1  1X,'MORE BACKGROUNDS THAN TERMINALS, BUT NO MORE THAN 7 ',$)
	READ(4,286) NBG
286	FORMAT(I1)
	WRITE(6,290) NBG
290	FORMAT(1X,'BGMAX=',I1)
295	WRITE(4,300)
300	FORMAT(1X,'WHAT TYPE OF SYSTEM DISK DO YOU HAVE ?'/
     1  1X,'SELECT ONE OF THE FOLLOWING AND ENTER THE NUMBER:'/
     1  1X,'0 = RK8E'/,1X,'1 = RF08'/,1X,'2 = SYSTEM INDUSTRIES 3040 '
     1  'CONTROLLER'/,1X,'3 = RL01')
305	WRITE(4,310) 
310	FORMAT(1X,'YOUR NUMBER [0(=RK8E)] ',$)
	READ(4,311) N
311	FORMAT(I1)
	IF (N) 315,325,325
315	WRITE(4,320) N
320	FORMAT(21X,I2,' IS AN ILLEGAL ANSWER')
	GOTO 305
325	IF (N-3) 330,330,315
330	N=N+1
	GOTO (335,345,365,375),N
335	WRITE(6,340)
340	FORMAT(1X,'SYRK8E=1')
	GOTO 385
345	WRITE(4,350) N
350	FORMAT('   HOW MANY PLATTERS ? ',$)
	READ(4,351) N
351	FORMAT(I1)
	IF (N) 345,345,355
355	WRITE(6,360) N
360	FORMAT(1X,'SYRF08='I1)
	GOTO 385
365	WRITE(6,370)
370	FORMAT(1X,'SY3040=1')
	GOTO 385
375	WRITE(6,380)
380	FORMAT(1X,'SYRL01=1')
	GOTO 385
385	CONTINUE
	WRITE(4,390)
390	FORMAT(1X,'WHAT TYPE OF (LINE-)CLOCK DO YOU HAVE ?'/
     1  1X,'SPECIFY ONE OF:'/,1X,'0 = DK8EA'/,1X,'1 = DK8EC'/,1X,
     1  '2 = DK8EP'/,1X,'3 = DKC8AA')
395	WRITE(4,400)
400	FORMAT(1X,'YOUR NUMBER ? [0(=DK8EA)] :',$)
	READ(4,401) N
401	FORMAT(I2)
	IF (N) 405,415,415
405	WRITE(4,410) N
410	FORMAT(I1' IS OUT OF RANGE.')
	GOTO 395
415	IF (N-3) 420,420,405
420	N=N+1
	IF (N-3) 425,475,425
425	M=110
	WRITE(4,430)
430	FORMAT(1X,'DO YOU HAVE A PROGRAMMABLE KLOCK (DK8EP) AS WELL'
     1  ' ? [NO] ',$)
	READ(4,431) IA
431	FORMAT(A1)
	IF ((IA.NE.'Y')) GOTO 475
435	M=0
	WRITE(4,440) 
440	FORMAT(1X,'ENTER DEVICE CODE FOR LINE CLOCK [130] ',$)
	READ(4,441) M
441	FORMAT(I2)
	IF (M) 450,445,450
445	M=130
450	K=0
	WRITE(4,455) 
455	FORMAT(1X,'ENTER DEVICE CODE FOR PROG. CLOCK [130] ',$)
	READ(4,456) K
456	FORMAT(I2)
	IF (K) 465,460,465
460	K=130
465	WRITE(6,470) K
470	FORMAT(1X,'DK8EP=',I2)
475	GOTO (480,510,520,530),N
480	WRITE(6,485) M
485	FORMAT(1X,'DK8EA=',I2)
	WRITE(4,490)
490	FORMAT(1X,'WHAT IS THE LINE FREQUENCY HERE ? [50 HERTZ] ',$)
	READ(4,491) IHERTZ
491	FORMAT(I2)
	IF (IHERTZ) 500,495,500
495	IHERTZ=50
500	WRITE(6,505) IHERTZ
505	FORMAT(1X,'HWTICK=',I2)
	GOTO 540
510	WRITE(6,515) M
515	FORMAT(1X,'DK8EC=',I2)
	GOTO 540
520	WRITE(6,525)
525	FORMAT(1X,'DK8EP=130')
	GOTO 540
530	WRITE(6,535) M
535	FORMAT(1X,'DKC8AA=',I2)
	GOTO 540
540	CONTINUE
545	WRITE(4,550)
550	FORMAT(1X,'HOW LARGE SHOULD THE VIRTUAL MEMORY BE ? [16K] ',$)
	READ(4,551) N
551	FORMAT(I2)
555	IF (N) 560,560,565
560	N=16
565	IF (N/4*4-N) 570,580,570
570	WRITE(4,575) 
575	FORMAT(1X,'IT MUST BE A MULTIPLE OF 4K. TRY AGAIN. ')
	GOTO 545
580	IF (N-8) 585,595,595
585	WRITE(4,590) 
590	FORMAT(1X,'MUST BE 8K AT LEAST. TRY AGAIN. ')
	GOTO 545
595	N=N/4
	WRITE(6,600) N
600	FORMAT(1X,'BGCORE='I2)
	WRITE(4,605) 
605	FORMAT(1X,'DO YOU WANT NON-STANDARD DISK ALLOCATION ? [NO] ',$)
	READ(4,606) IA
606	FORMAT(A1)
	IF (IA.NE.'Y') GOTO 645
610	DO 640 I=1,NBG
	WRITE(4,615) I,I
615	FORMAT(1X,'DISK UNIT # FOR BG'I1' ['I1'] ?',$)
	READ(4,620) IUNIT
620	FORMAT(I1)
	IF (IUNIT) 621,621,624
621	IUNIT=I
624	WRITE(4,625)
625	FORMAT(1X,'STARTING BLOCK NUMBER (OCTAL) ?',$)
	READ(4,626) IFROM
626	FORMAT(I5)
	WRITE(4,630) 
630	FORMAT(1X,'LENGTH IN BLOCKS (OCTAL) ?',$)
	READ(4,631) ISIZE
631	FORMAT(I5)
	WRITE(6,635) I,IUNIT,I,IFROM,I,ISIZE
635	FORMAT(1X,'UNIT',I1,'=',I1,/,
     1  1X,'FROM',I1,'=',I5,/,1X,'SIZE',I1,'=',I5)
640	CONTINUE
645	CONTINUE
650	WRITE(4,655)
655	FORMAT(/,1X,'NOW COMES A LIST OF PERIPHERAL OPTIONS. FOR EACH'
     1  /,1X,'DEVICE ANSWER "YES" IF THAT DEVICE IS PRESENT IN '
     1  /,1X,'YOUR CONFIGURATION. JUST "RETURN" MEANS "NO".')
	WRITE(4,660)
660	FORMAT(1X,'  LINEPRINTER ? ',$)
	READ(4,661) IA
661	FORMAT(A1)
	IF (IA.NE.'Y') GOTO 740
665	MASK(IMASK)=1
	WRITE(4,670)
670	FORMAT(1X,'  ENTER NUMBER OF COLUMNS (DECIMAL) [80] ',$)
	READ(4,671) N
671	FORMAT(I3)
	IF (N) 674,674,675
674	N=80
675	WRITE(4,676)
676	FORMAT(1X,'  DOES IT HAVE LOWER-CASE CHARATERS [YES] ? ',$)
	READ(4,677) IA
677	FORMAT(A1)
680	IF (IA.EQ.'N') GOTO 685
	N=N+2048
685	WRITE(4,686)
686	FORMAT(1X,'  DO YOU WANT THE PRINTER SPOOLED [YES] ? ',$)
	READ(4,687) IA
687	FORMAT(A1)
690	IF (IA.EQ.'N') GOTO 695
	N=N+512
695	WRITE(4,696)
696	FORMAT(1X,'  IS IT AN LS8E INTERFACE [NO] ? ',$)
	READ(4,697) IA
697	FORMAT(A1)
700	IF (IA.NE.'Y') GOTO 705
	N=N+1024
705	WRITE(4,706)
706	FORMAT(1X,'  KL8E [NO] ? ',$)
	READ(4,707) IA
707	FORMAT(A1)
710	IF (IA.NE.'Y') GOTO 715
	N=N+256
715	WRITE(4,717)
717	FORMAT(1X,'  DKC8AA [NO] ? ',$)
	READ(4,718) IA
718	FORMAT(A1)
720	IF (IA.NE.'Y') GOTO 725
	N=N+1
725	NO=ICON(N,8)
C	CONVERT TO OCTAL
	WRITE(6,735) NO
735	FORMAT(1X,'LE8E=',I4)

C	READING FROM 7 CONFIG.DA

740	IMASK=IMASK+1
	READ(7,745) ITYPE,ISYMB,ITXT1
745	FORMAT(I2,1X,3A2,1X,30A2)
	IF (ITYPE) 795,795,750
750	WRITE(4,755) ISYMB,ITXT1
755	FORMAT(1X,3A2,1X,30A2,' ?',$)
	READ(4,760) IA
760	FORMAT(A1)
	IF (IA.NE.'Y') GOTO 740
765	MASK(IMASK)=1
	IF (ITYPE-2) 770,780,770
770	WRITE(6,775) ISYMB
775	FORMAT(1X,2A2,'=1')
	GOTO 740
780	CONTINUE
	WRITE(4,785)
785	FORMAT(1X,'        DEVICE CODE ? ',$)
	READ(4,786) N
786	FORMAT(I2)
	WRITE(6,790) ISYMB,N
790	FORMAT(1X,2A2,'=',I2)
	GOTO 740
795	MASK(IMASK)=-1
	ENDFILE 6

C	NOW WRITING TO 8 MULTI8.BI
C	WRITE(4,799) IMASK,(MASK(I),I=1,20)
C799	FORMAT(1X,I3,$)
	I=0
800	READ(7,805) J,ITXT1
805	FORMAT(I2,30A2)
	IF (J.NE.1) GOTO 815
810	WRITE(8,811) ITXT1
811	FORMAT(30A2)
	GOTO 800
815	I=I+1
	IF (MASK(I)) 825,820,810
820	READ(7,805) J,ITXT1
	IF (J.NE.1) GOTO 815
	GOTO 820
825	WRITE(8,830)
830	FORMAT('$END')
	ENDFILE 8
	STOP
	END