	program init
#
# enthaelt die Initialisierungen fuer die Kette der Programme RGEN und PARSER.
#
# Verwendete externe Routinen, die nicht in FORLIB sind:
# Name		File,Bibliothek
# inibnk	BANKLIB		initialisiert das Banking
# storew	BANKLIB		schreibt eine Integer-Zahl in Bank 1
# storer	BANKLIB		schreibt eine Real-Zahl in Bank 1
# wang		WANG		initialisiert die SIO-A zum WANG
# keybd		KEYBD		fragt nach Eingabe vom Keyboard
#
# Entwurf und Programmierung	A.Herrmann
#
define	VERSION '1.2 vom 30.03.85'
#
define BADR x'1000'	# Basisadresse in Bank 1
#
logical	kbhit		# Flag Keyboard hit
#
byte	char,yes
byte	g
#
integer	i,j,k
integer	adrr			# Adresse der random-Zahl in Bank 1
integer	radr			# Adresse der Variablen r
integer	ranadr			# Startadresse der ran-Function
integer	imin,dimax,dgmax	# Analyse-Toleranzen
integer	imax,dimin,dgmin
integer bog,minbog		# und -Parameter
integer	maxgap,minabs
integer	varptr			# function; liefert eine Variablenadresse
#
real	schfak
real	r,s			# Real-Zahlen
#
external ran			# function; liefert Random Number
#
data	yes/'Y'/
#
#
write(1,10)
10 format('1INIT - Version ',VERSION)
#
call inibnk				# Banking init.
call wang				# SIO-A init.
#
adrr=BADR 
ranadr=varptr(ran)-7			# Adresse des Zuf'zahlenspeichers
radr=varptr(r)
#
write(1,20)
20 format(' Bitte Taste druecken')
#
s=1.0 ; kbhit=.false.
repeat
[	r=ran(s)			# Random Number generieren
	call keybd(kbhit)
] until (kbhit)
do i=0,6				# und in Bank 1 ablegen
[	k=ranadr+i ; g=peek(k)
	k=adrr+i ; call storeb(g,k)
]
write(1,30) r
30 format(' Random Number = ',f8.7)
#
char='N'
repeat
[	write(1,40)
	40 format(' Analyse-Toleranzen')
	write(1,42)
	42 format(' bog,minbog,maxgap,minabs = ')
	read(1,44) bog,minbog,maxgap,minabs
	44 format(4i4)
	write(1,46)
	46 format('+imin,dimax,dgmax = ')
	read(1,48) imin,dimax,dgmax
	48 format(3i3)
	write(1,50)
	50 format('+imax,dimin,dgmin,schfak = ')
	read(1,52) imax,dimin,dgmin,schfak
	52 format(3i3,f6.3)
	write(1,44) bog,minbog,maxgap,minabs
	write(1,48) imin,dimax,dgmax
	write(1,52) imax,dimin,dgmin,schfak
	write(1,60)
	60 format(' Okay ? (Y/N) ')
	read(1,62) char
	62 format(a1)
] until (char==yes)
#
i=BADR+16 ; call storew(bog,i)
i=i+2 ; call storew(minbog,i)
i=i+2 ; call storew(maxgap,i)
i=i+2 ; call storew(minabs,i)
i=i+2 ; call storew(imin,i)
i=i+2 ; call storew(dimax,i)
i=i+2 ; call storew(dgmax,i)
i=i+2 ; call storew(imax,i)
i=i+2 ; call storew(dimin,i)
i=i+2 ; call storew(dgmin,i)
i=i+2 ; call storer(schfak,i)
#
write(1,70)
70 format(' *** INIT - Ende ***')
end
