5 JN 1974 may,

advertisement
IMPLEMENTATION OF AN URBAN DESIGN
GRAPHICS TERMINAL ON THE IMLAC PDS-1
by
BRIAN L.
KEMERER
SUBMITTED IN PARTIAL FULFILLMENT OF THE
REQUIREMENTS FOR THE DEGREE OF
BACHELOR OR SCIENCE
AT THE
MASSACHUSETTS:-INSTITUTE OF TECHNOLOGY
may, 9174
Signature of Author
Department of Urban Studies and.Planning,
Certified by
Th"'is Supervisor
Accepted by
Chairman, Departmental Undergraduate Thesis Committee
Rotch
16.
1974)
JN 5 1974
IMPLEMENTATION OF AN URBAN DESIGN
GRAPHICS TERMINAL ON THE IMLAC PDS-1
by
BRIAN L.
KEMERER
Submitted to the Department of Urban Studies and Planning
on E MaiO10)19
7
-
in partial fulfillment of the
requirements for the Degree of Bachelor of Science.
ABSTRACT
An urban design graphics terminal was programmed
on the Imlac for the users of the Discourse programming
language.
A method for user-oriented display timing,
which stores output from rapidly executed iterative loops
for subsequent display at a user-determined rate, was
described and implemented.
Facilities for a more complete
Discourse design terminal are discussed.
THESIS SUPERVISOR:
TITLE:
Wren McMains
Lecturer in Urban Studies and Planning
ACKNOWLEDGEMENTS
I would like to thank Wren McMains for the idea
of user-oriented display timing.
Mike Miller wrote the assembler, loader, and
text editor for the Imlac,
as well as the routine to
form long-vector display commands.
Luther Goodie wrote
the Multics communicator (ARDS simulator) program.
Both
patiently answered my questions about the Imlac, and provided much-needed information that was not yet documented.
.-W4TABLE OF CONTENTTS'
. .
. . .
2
. .
.
.
.
. .
.
.
.
.
.
.
Acknowledgements
.
.
.
.
.
.
.
.
.
.
List of Firures and Tables
.
.
.
.
.
.
. . . . . . .
3
5
.
.
.
.
.
.
. . . . . . .
6
User-Oriented Display Timing .
.
.
.
.
Abstract .
.
.
.
. . . . . . .
.
Introduction to Discourse
and its Display. .
.
.
.
.
.
. . .
. .
. 10
The PDS-1 Urban Design Graphics Terminal
A.
Multics Communication .
.
.
. . . . . . . 13
B.
Subroutine Discourse.
0
.
.
. . . . . . . 14
.
.
.
. . . . . . . 19
An Example of its
Use.
.
.
.
.
.
Results and Suggestions
A. User-Oriented Display Timing. .
0
0.
B. A More Complete Discourse Term inal.
Bibliography
-
. *
-
*
-
-
*
0
-
.
.
.
.
. .
0
23
. . . . 24
0
0
0
.
26
LIST OF FIGURES
Figure
.
.
.
7
2.
Large Map Used in a Recent Discourse Model . .
.
.
9.
3.
Drawing theid
1. Example of a Discourse Map
.
.
.
4.Drawring- a Display 'Character. . .
Display
6.
Display Sequence
#2.
7.
Display Sequence #3.
9.
Display
Sequence #1. .
Sequence
#45.
.
.
.
.
.
16
. . . . . . . . .. .
.h.r.c.e.
6.
.
. .
. .
.
16
.
.
.
.
.
.
.
.
.
.
.
.
.
.
20
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
20
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
21
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
22
LIST OF TABLES
Table
1. Discourse Display Instructions
.
.
,
.
15
-6INTRODUCTION TO DISCOURSE
AND ITS GRAPHICAL DISPLAY
Discourse programming involves a spacial grid
and a data structure for placing locational information,
called attributes, in the grid squares.
represent quantities such as housing,
zoned land, or existing industry.
The attributes
water,
commercially
Variables can be
associated with each grid square where a particular attribute 3xists; the number of rooms and date of construction
could be the "charvars" of each housing location,
maximum F.A.R.
or the
and land cost of a development site.
tional attributes are displayed with a map command,
Locawhich
is currently printed on either a Multics remote terminal
or an offline printer.
from a map command; it
in a 101O grid.
Figure I is
an example of the output
shows the locations of two attributes
For further explanation of the Discourse
language, see "Discourse Command Descriptions" (2).
Discourse is programmed to allow an urban planner
to interact with the computer as the design session progresses.
It
is
run by a PL/1 interpreter, which translates
into object code and executes each Discourse command as
it is typed in on the console.
In a loop with multiple
lines, each one is translated only once, since the translation process itself is sometimes significant in terms
of the time it
takes to execute a command.
The visual interaction of the planner with this
-m7-
1
123 4 5 6 7 8 9 0
.
'4
.
.
.
5
*
*
7
6
x
. ex.xex
. OX.x.X
.xexex.xx
0 .x.XWX
.
.X.X*x
x
.
x x
x x
x x
x x
x x
1
2
3
4
5
6
7
8
123 4 5 6 7 8 9 0
1
LEGENP;
PRIMARY ATTRIBUTE ASSIGNMENTS
-
REFERENCE ATTRIBUTE ASSIGNMENTS
FIGURE 1.
=
-
-x
EXAMPLE OF A DISCOURSE MAP
A(2)
= B(3)
0
O-0-
spatial grid is
terrminal,
limited by the speed of the IBM 2741
about 800 characters per minute,
type
and the necessity
of issuing a map command to see changes which have been made
A 50x50 grid with a character printed
since the last map.
in
each square, such as Figure 2, takes about four minutes
to print.
This is
the first advantage of using the Imlac as
a remote terminal: its
capabilities as a refresh CRT give
a display which always remains on the screen, but is dynamically altered when attributes are added-to or deleted from
the Discourse map,
With the normal teletype printing
scrolled at the bottom, the map and the commands which modify
it
are closer together than on a rolled paper terminal.
Talow avanoos tic 1Tmaca
v Ni ciaoE cIvN a~awi oz aufDiL1:
3
CG -W4,
w
'
US " %a Us US to
s: , ,u r um %n v%%n c*
Ud~~~
%n v.,
g- 4P.9
4P,.
v1
V- Zs W
Usu%,USv
%US
A Rm
Sr .0 -f
%
vI
%A$
v
vs
%n$" %vs
%n
v
vn
% % nrrp
. c 4
%.
v %.%An %R
v %M
%Avr0
91 ar
V*
%Mwl %Mt VI %AI %A%I %nM$ V % "~ %A
Uf
%
ON %Mk
%
A"
A%
" I_"IV
%n
W%
%M
%n t Ln vs v
vs
Go % m %nj,^ b. 6-
v
v
% V IVI
%A %A
n%
es-
-
v
--
%
vA
nk
vm
n%
^ %M%A%" %A%M
.0
;
%
vI
%v n
%n .L v.L .
v
s IVIvn
%M
%
vI vi v%Vm v
A%
7
M%
s
v
%v
%n %^ v.n %n
.
v
.
. vn
%
,S,'-V
vI %AVs
" VI
NJs-svI vIvs
vIvI
v% v%V% VI vL
%
v% V% VI
%.n
%nv
M %n%A
un%r%.nv vs
VI v % %n
v
S
0
C'L 40A
='AL
=P
0,%e
='
S .
A
.0
0
va
a SUSvU
I-a S
AU a% ,
4:'
Z.-
SU
~
4-
='
wv
A%
SU
Sw U
S
A%
&-
S V
pC
U
:Z.,
SU
%A%SU
v.
SU A-
U
A%4 " U
L
a lUaU
S AU SWU
P
%
%
%R
V
vP'
vp
VIIviv uusVI
v v.
fV
AR
vo
v
VI
VIvAVI V
vIVIVIL v
.I v.
^%
A P
4USU
C
=-
.0-
r-'
t va UaU a
SUSU
n
VI
%M
461
vF*
V
Sr
m
AA
U
C.
4p
C-Cv-C-C-C-C-C-C-C-C-e
-
.m vs Ae vs %M
vA %A%n%
%M
vi m%vs -S
i %n %^
vX %A% %M
vv- v- I -% %n
Vm
$%%n . . . . . %A%n%n
Zr
- vA vMv vs %." vt .s v. . .s . .i . %A%ALMIY % %n vs
VI VI VI VI VI VI VIu
wIIIV
VI VI u ,IV
VV
VC
CwVIV
IoIVI.-
tIVIV
etI
oVIVIVIVIVIVIVIVIV.
A,%A
&-
-=-
v
US
US
ALAL A
C-C-C-C-w
ULALA LA LA
w
%M%g
US
US US US w
A US
LAUS
LA av
LALA
LA
U# v#
L %A
A%. ve US
L vaA US
AA
US
C-C-C-CwC-Cw
I
C-C-s
ALA LA LA
S
ALA LA LA
A AL A
4L ALA LA
S S LA LAUAa
-
C-
C-
C-
C-
C--C,
,-C-C-C--,C-CC--C-,
v-
,-
O
%A
'
S% P
,,,
CC-CC-.CC--
" v
C-
-
-
%
Us UaUS
C-C
-C
-C
LA
V
VI VI=VI us
0. %n
%"
%01
v Av
%R" %M%A
UVSVI
V IVIVI , VI
to
v3 IIVe
v8: v1
v
c-
4!
Cr
C-
-V
-
LM%In %Av n %" %A%sr=1
%CC%"-C
VoVIVIV
%n v nwvi v t vi wi %n %AvA
J- J!, .- Z,
VI
.
vn
%A's
C-v
C-
%n %n v a,
401
e
C- C S:
v* -=I
C -C-
C-
.
Acr
:-
U
US
=o = Z.
wC-
w
a
wa
C-
. %a v
- C-C C- L- v U4 C-
V V, S rv* rvi v ,
Ce
A
LA
US ALAL
LA %Aa %AUS
Cs
a, 4 47 Ud %AV4
S!, U4 %A%Av0 US4A US vv m %A%..ra .s . .a . . . . . . .
w
-C
-
.
C - C -o,
,,,1
VI %A"s va "e 14v"
eVI A
%
%Ry
C
A
-4
e
gw"%
I
U4
JIA
LA L
4 LA LA ALa LALA
C -
S%0U st
Csee
A ALA
A%.4vaGo%4 Z,
va
%ALA
USL0
X- z %. US US US US %Av US %pws
C-
USU
%A
US%A
%A
USUSUsUSUS%SUe%%m%
,-
US
to
%n
0A
l
Vs V Lv S4 1Va v v I v I
"v v n n %M
vn
%n %01%R-C' .9 4; 4; v-C" - -t
- J :4P .- :Z W US U US US VI v US A %a V4
%n%n%nv%R
LM
v kmv
n %M
v .A %n " %n%R%. " %A
v . .s. vw %n
z -A Sr.4 St z %A
%W
US%A vo%xUaUo%a%A
Uev %A
%A %."
VI VI VI
I
a %A
v
vs
V
- vVI VI
" kv
m
JA
%
Swv
v!i
US %A
wALLA
%A sUa US
V,
LA
="US%
Z, rv 4p. g!. r.-
%n Z'AD"
s
A-US
J-%M
vA LA
%A%A %M
we C ve %% vsv
ALAA%.mAL
0- v-
Sm w
V NJ NJNJ VI VI
LAO
VINJVIVIVIV
Z4 A
ova
v-e:
V-
v
vS
I
%v
n
4;
v
vi
usI
%A WU
a- a- r. S- Z- 0- -a-C- =- = V
%M
%vin %A%Av ^
.0
aA%
t sWu u
US USS% %Ao
oSUSSUSsUa
aAv gAIU
r aU
ew %"%
-4--
,Ar"s
Vit %M
%M
%n%M
vs
5vva .
n v.
R V.v.
V
vA vs
%AU"
vi
US"
"
AWWU
Sv
p
0 4 %f% swt
.
LAVI
%n
aw%
X
*U
sN)9
M VIVVIIIIV
I%
%m %n%Avn
vA%
M
%M
v vi %n
v v
VINJtVIL
C-
41.1-,-PV
LN
oU
US US V4 US
N. US USUS US US
=, M
ul %M
%
vs v%M
t- 0-0 n I-- %nw v%n%n%.- I %.-v %,
I4VI R %.%,
As4U
JAL
rr.7v7
wUs%
%. .v% .Aa "V4%A SUSwUS%
A* r.- IV C Jr -P, -c v*.1=
%AdL
LM %AL
"I %n
W US Ul Wt WWW
oUUSUSUA$
"z
P" P*viU
47
U oSaAUsvUSsUSUa
.o%
US US US
%A%,It i l-r.- vi v91 vs v91 v1 v, vr vrz s : -r% 4 ve
" USUS%A%. %. USU SeSU U A
b.- %n "i " us ^ vn %A%^ %A"e %A um ve VP
-C-vi v' V-4 -r-V
WwU
AWW14U
S
U 4U
" u"
%A
%. S- v91
%Av
%AvC"LM %A
vs
vs v=I
%A
vr,
.1 -C -=I
s: v
U SU Mt U SU .IU
vR
16 %
.9
V'v
vvi
v* 41
vr
%R
km%A%R
v, %1 %A
,
9
LALA LAN.
n %M
gr 40 vP
Lm
vs
%A
, 0 v, - a
.91
u Wuvs I I Lc-Cs.9
n kf %nL %n%A VI%A
Us
.
W
-C USU4 UOUS USUS%A%A%.4to UdUs Ud USUSve to USUS%.9USw US US %SUS USU S U
-a,
l wl %M
vR V%
a VsUS%
Che -C .,A,
US %. S Us %0
U4 % US
w w
w
4
wAA
.0
D
S US %A%Av %Awww
at LAF"
L %a
LA .I1LA
LA
d US US Ul VA "s Ut U4 Uf V w %A C wuso
sw su swae se cwu
,y
-10USER-ORIEITTED DISPLAY TIMING
The
ultics time-sharing system uses the extremely
fast execution time of modern CPU's,
unlimited virtual memory,
together with an
to service many users at once.
The user receives what appers to be control of an online
computer,
and exploits its high-speed computational abilities
to solve problems that would be prohibitively time-consuming
Yet some of the intermediate information in
by hand.
the
computational process may be of interest to the -user; and
to display it,
he might have to slow all of the steps in
the computation to the point of using an expensive, dedicated
com-uter.
This is a problem of finding an appropriate way
to match a speed which is
convenient to the user to the
speed which Multics deems appropriate to perform calculations
efficiently.
An airlines reservation system speedily answers
a query with the appropriate data; since the process by
which is
was obtained is
well matched to its user.
of little
interest,
the system is
But the planner using Discourse
routinely uses iterative loops to choose spatial locations
on the basis of some criteria, and if
he could "slow down"
the execution process to display the attribute grid squares
chosen, he could use this intermediate data to formulate
subsbquent instructions.
This process will be called user-
oriented display timing.
It would be an extension of the
planner's ability to interact with the computer during the
-11-
design process.
The way to make this feature available is
not to
slow the execution of Multics, of course, but to selectively store intermediate steps of the computation for
subsequent display.
For instance,
those grid squares
which are selected in a loop would sequentially "-light up"
We would need at least a
for half a second or longer.
memory buffer, but there must also be a way to transfer
this stored information into a display that runs at a speed
that is
convenient to the user.
It
would. take a very
complex scheme to have Multics transfer its
own "delayed"
output from the buffer into the display at regular intervals,
since Multics is
sharing its
We
time among many users.
should therefore have an "intelligent" graphics terminal,
with its
own memory and CPU.
To remove a lighted attribute from a storage CRT
screen would involve redrawing the entire grid, which could
take several seconds.
Removing an attribute location, a
frequently used instruction, would require the same operation.
A dynamic display CRT,
the screen of which is
re-
freshed 40 times per second, can perform these tasks
easily.
The Discourse urban design graphics terminal was
impl&ented on the Imlac PDS-1,
an intelligent graphics
terminal with the characteristics described above.
It is
part of the Machine Architecture Group in the Department
-12-
of Architecture and Planning at M.I.T.
The equipment in-
cludes a 16 bit minicomputer with 8K core, refresh CRT,
and data console.
The Imlac has two CPU's; one is a
display proc- essor which runs through the display list
40 times per second (lettering as well as graphics is done
in software), and the other executes normal single-address,
one-accumulator instructions.
are a clock interrupt,
Some of the important options
display interrupt at 1/40 second
intervals, suppressed grid mode, and teletype interface
which is also used to communicate to Multics.
N
13-
THE PDS-1 URBAN DESIGN GRAPHICS TERMINAL
A.
Multics Communication
An existing program provided communications with
Multics by dataphone; the Imlac appeared to Multics as
an ARDS terminal or a regular,
terminal.
"unintelligent" remote
The main program takes characters from the
store-buffer and puts them in the display list.
The
interrupt subroutines receive characters from Multics
and place them in the store-buffer.
character, 0338,
A special code
precedes four Discourse Display Char-
acters, which are decoded by subroutine Discourse.
-i4.THE PDS-1 URBAN DESIGN GRAPHICS TERiNAL
B.
Subroutine Discourse
To implement the visual display of a Discourse
grid and to light up (brighten) attribute locations
chosen in a Discourse loop, the Discourse interpreter
was modified to send the special display instructions
shown in Table 1.
Each Discourse Display instruction is
prezPded by a special recognition character; the next four
characters are not placed in the display list.
The grid was formed using longvector (relative
location) lines, starting from an absolute location in
the middle of the screen.
which grid lines are drawn.
Figure 3 shows the order in
The beam is left in the upper
left hand corner for the attribute display characters which
follow.
Figure 4 shows the beam moving to grid location,
drawing the display character, and returning to the upper
left hand corner.
If the number of grid columns is less
than 16, the grid and display characters are scaled up by
a factor of three; if
less than 32, by a factor of two.
This option can be suppressed by setting data switches
10-15 to 41 when the setup command is issued.
The existing communication program used a circu-
lar tuffer 400
words long to store characters from Multics,-
and the Imlac could form instructions for the display list
fast enough not to exceed this intermediate storage area.
-15Table 1.
ASCII
G
Discourse Display Instrutions
7-bit binary
charac ters
Meaning
Form a grid of size rows x cols;
enlarge this grid to fill the
screen.
Maximum grid size is
rows cols
60x60.
A
row
col
attr
Add the attlibute at row, col.
The attr is one of fourcurrent1y~defined grid display
characters.
D
row
col
attr
Delete the attr at rowcol.
L
row
col
attr
Light up the attr at row,col
for a period ofT~ight-ime.
T
light-time
P
pause-time
*
Change the duration an attribute
stays lighted to light-time.
*
Change the duration of the
pause when an attribute is
added or deleted to pause-
time.
End; remove the grid from
the CRT screen; scroll Multics
lines over entire screen again.
4 in tenths of a second
-16-
FIGURE
-----
3.
DRAWING THE GRID
-beam
off
beam -on
FIGURE 4. DRAWING A DISPLAY CHARACTER
V
-17-
But the.Discourse Display Instructions take pause-time or
light-time to execute, which is typically from
onds.
i'to
2 sec-
Mieanwhile, none of the succeeding display instruc-
tions can be executed.
So Multics sends a "ready"! character
-
1773 - every 150 characters,
-
0148 - before sending any more.
and waits for an "acknowledge"
Default for pause-time
and light-time is one second.
The period for lighting or pausing is
timed off
the display interrupt rather than setting the clock interrupt.
The display interrupt goes up once every fortieth
of a second (25 milliseconds), whether or not the display
processor takes more than one-fortieth of a second to complete execution of the display list.
If it is not finished,
it can't be started at the top of the list yet.
So the
clock interrupt is set for one millisecond, and the display
processor flag is checked when the clock interrupts.
If
the clock interrupt were also set to time either of the
pauses,
it
would be difficult to tell
whether the display
processor was running past one-fortieth of a second or
whether it was time to end a pause.
But it is easy to
count 25 milliseconds for each display interrupt and 1 for
each clock interrupt, then compare the desired period of
time with this elapsed time.
The beam is repositioned to the upper left hand
corner of the grid after drawing each grid display character,
since all beam positions must be relative in order to enlarge
-13-
the grid.
The display list for grid characters has the
following format:
3 longvector words - beam off, go to row, col
1 djms word - display jump to grid character
subroutine, beam on
3 longvector words - beam off, return to upper
left of grid
Chaining the long vector instructions to position the bean
for display characters was considered; this would require
only four words for each character instead of seven.
But
the added complexity to search down a chain to delete a
character made this unattractive.
If the flicker rate for
large, full grids is unacceptable, chaining may have to be
reconsidered.
Adding a grid display character is
usually done
at the end of the current display list, while deletions
are made by filling the seven locations with display nooperation (d nop) instructions.
Then five or more seven-
word holes exist., the next addition is
of the list.
made in
the middle
Search for the proper grid display character
to delete is made by comparing the three beam-positioning
words, then the djms word.
-19-
AN EXAMPLE OF ITS USE
A simplified example is shown in Figures
5-8.
Let the slash character represent a potential housing
location, and the circular character an existing industry.
The planner wants to see the effect of setting a minimum
distance between industry and new housing.
He might
issue the following commands:
through label for i,j= each industry circle of radius 2
around temp(i,j)
label for 1,m= each temp delete hopsingloc(lm)
The sequence of grid displays shows the right-hand industrial
location lighting up, since it was selected in a for loop
(Figure 5).
At one second intervals, the potential housing
sites within two grid squares are deleted from the grid.
(Fiigures-6 and 7).
up (Figure
8),
The next industrial location lights
and the housing site within two squares is
deleted.(FiGure 9).
The planner would then try several other distances,
forming an idea of their effects by watching the potential
sites that are excluded.
I
0
2
-6 OJflTA
Figure 7.
Figure 8.
a
R)
I
Figure 9.
-23RESULTS AND SUGGESTIOTQS
A.
User-Oriented Display Tirling
The method of display timing described controls
the rate at which
It
ultics sends data to the teriinal.
could be used to scan files visually be scrolling lines
If
at a user determined rate.
incorporated into the Bas-
ic
editor program as a command to "roll" x number of lines,
it
might be used to examine long files..
Less formally, it
Mnight be used to make computer
games that measure the speed of accomplishing some goal
in
relation to the display.
'I
'I
-24RESULTS AND SUGGESTIONS
B.
A More Complete Discourse Terminal
An important step in programming an intelligent
graphics terminal has been made on the Imlac.
interpreter is
Characters,
WVhen the
modified to send the Discourse Display
an urban design session will have an up-to-date
grid and user-oriented timing.
An urban design graphics terminal should also aid
in
th
input operations of Discourse.
The light pen can
obviously be used to input data for the "put" command;
the block version of the command,
which puts an attribute
from a point -at the upper left to one at the lower right,
would be especially easy to program.
An algorithm has been written for the Sylvania
tablet that fills
locations.
in a pen-dravn outline with attribute
This allowvs great flexibility in
placing atti-
butes, but a large part of the data preparation is
assoc-
iating the charvars of an attribute with its grid location.
The difficulty lies in coordinating the input of spatial
locations with numerical data, since changing from light
pen to typing numbers on the keyboard is
A possible solution is
unwieldy.
to group the values of the
charyar3, and-display these approximate values on the
screen.
A grid location could be touched,
check in front of a charvar value.
followed by a
For many uses of
-25-
Discourse,
A refinement
this would be accurate enough.
would be to put the numerals 0-9 on the screen,
the user touch the digits.
and let
A combination of the two would
provide both coarse and fine charvar input.
In addition to data input, almost any Discourse
command which takes a locational argument could be issued
form the screen.
butes,
A list
of the currently displayed attri-
together vrith "remove" and "show",
could be combined
in several ways to make valid commands.
Hard-copy output of the map would be desirable.
Since the user is not restricted to line printer characters,
he can define his own; a permanent copy would ease the
restrictions of current computer mapping.
User generated
characters would no doubt be used much more frequently if
the character could be drawn on an enlarged grid square
and automatically converted to Imlac increment mode instruc-
tions.
As a matter of convenience,
the teletype could
make a printed copy of the lines scrolled off the screen.
A second interface board would be the necessary hardware
addition..
-26BIBLIOGRAPHY
1.
Porter, William Lyman,
"The Developmentof DISCOURSE:
a Language for Computer Assisted City Design, M.I.T.
Department of Urban Studies and Planning Ph.D.
Thesis,
1969.
2.
"Discourse Command Descriptions," M.I.T.
Department
of Urban Studies and Planning, March 1972.
3.
"IMLAC basic-assembler language specification," The
Architecture Machine, M.I.T.,
4.
User Reference Manual,
1 June 72.
Imlac PDS-1
Programmable
Display System, Imlac Corportation, 1971.
5.
Vickery, David R.,
"A Computer Program to Aid in
the
Evaluation of Development Controls," M..T. Department of Urban Studies and Planning Masters Thesis,
1972.
Download