\documentstyle[a4,12pt]{article}
\begin{document}
\author{APM Manual pages}
\title{This is the APM bug file generated from files produced by the BUG and }
\maketitle
\parskip .1 in
\setcounter{secnumdepth}{10}
\parindent 0in
\section{Preamble}
SUGGEST commands and lists bugs as reported by users. Further information
on some bugs and fixes can be found under HELP ALERT

\section{Bugs Outstanding}
\subsection{I \hspace{ 0.2 in} Bug Report \hspace{ 2.6 in} 01/11/84 19.57 RWT/JHB}

1. Under certain (most?) conditions abandoning a program which has started
to write an output file causes the file to be Closed rather than Uclosed,
with unhappy consequences if there is an existing file of the same name.
2. The command DELETE FILE! deletes FILE if there isn't a FILE!.

\subsection{RWT \hspace{ 0.2 in} Bug Report \hspace{ 2.6 in} 09/11/84 17.45 JHB}

Analyse:
It appears to make value judgements based on the file name which are no
longer appropriate. When I copy a .mob file into something, then
analyse both, it tells me the .mob file is and object file and so on,
but that the other is a (mostly unprintable) character file.
* JGH agrees
* JHB doesn't...
* I reckon I have no right to make assumptions about an unextended filename.
* Analyse just comments on whether printing the file will be a useful exercise
* by giving no. of "lines" and \% printability. If someone extends a filename
* by the extension .MOB (Motorola OBject) then I reckon there is a fair chance
* that that is what it is and attempts to analyse it as such.

\subsection{RAS \hspace{ 0.2 in} Bug Report \hspace{ 2.6 in} 12/11/84 14.28 JGH}

CTED \hspace{ 0.3 in} (::b:il:main) \hspace{ 0.3 in} complains bitterly about VTLIB references.
"fixed" by oinstalling i:vtlib.mob. \hspace{ 0.5 in} Nasty
(JHB for RAS)
* Rewrite planned. Nasty bug

\subsection{PDS \hspace{ 0.2 in} Bug Report \hspace{ 2.6 in} 13/11/84 13.52 RWT}

PDS - m/c hung up in Edit - rebooted OK but lost edit.


\subsection{DJR \hspace{ 0.2 in} Bug Report \hspace{ 2.6 in} 13/11/84 15.01 RWT}

For a week or two now, my APM intermittently does not get past the:

.......
Ether Station ......

line on the Screen upon power-up. Ctrl-T \& R seems to cure it.

GDMR: Could be a filestore self-defence mechanism which operates when
\\ \hspace*{ 0.4 in} two or more would-be clients attempt to connect simultaneously.

\subsection{GMC \hspace{ 0.2 in} Bug Report \hspace{ 2.6 in} 14/11/84 13.18 HMD}

vecce-data does not work if you have a predef file.
The default of data replace mode should be resettable from the predef file.


\subsection{NWB \hspace{ 0.2 in} Bug Report IMP/System \hspace{ 1.6 in} 15/11/84 17.11 JGH/RWT}


When I compile my imp program just using the command:
\}imp move

and then run it, I sometimes get an array out of bounds error.
This is a legitimate error message.
However, I then continually get screen fulls of the error
message:

*Trouble(2):
**Array index 1 out of range
Stopped at line 612
*Trouble(2):
**Array index 1 out of range
Stopped at line 612
 .


etc.

There is no way to stop the error messages pouring out except
to reboot ($\hat{ }${}Y doesn't work). Also line 612 above isn't in my
program, there must be an error in the code to report an error.



\subsection{GJB \hspace{ 0.2 in} Bug Report \hspace{ 2.6 in} 16/11/84 09.25 JHB}

print file
commmand leaves a message saying amomg other things ... aborted - 2
eventhough it has executed properly. It will save paper if one does not
mistakenly duplicate or triplicate printouts.
Gavin .


\subsection{GDMR \hspace{ 0.2 in} Bug Report \hspace{ 2.6 in} 20/11/84 10.20 RWT}

The software front panel (bring back \%real lights and switches!) prints
out its help information in response to $\hat{ }${}S and $\hat{ }${}Q. This is, at the very
least, annoying to those of us who have terminals which generate their
own flow-control sequences. At worst, it can result looping, with the
terminal trying to stop the SFP which responds by sending more unwanted
help information, and so on.....

And while we're on the subject of terminals, when is somebody going to
get round to removing all these built-in assumptions about Visual200s ??
I can't use Help/View/Whatever-it's-called on my VT220 (at least, I couldn't
last time I tried), and ESC-H (as generated by the boot roms amongst
other things) might well mean "home" to a V200 but it screws up my TAB
stops no end.....

" No longer "presumed fixed""

\subsection{IMN \hspace{ 0.2 in} Bug Report \hspace{ 2.6 in} 20/11/84 10.28 RWT}

Does anyone know why I get this error message while the Edwin stuff is being
setup when I log in ?

Event 5 3 stack space exhausted
Line 21, relative PC 0000050A in Main Program



\subsection{IMN \hspace{ 0.2 in} Bug Report \hspace{ 2.6 in} 20/11/84 10.31 JHB}

Would it not be better for the trees of this world if when PRINT timesout,
it didn't leave great lumps of crub on the printer queue. Failing that,
would it not be possible to allow such bad jobs to be killed by their sender ?
(Errata : For crub read crud, sorry crub).

GDMR: Messy fix might be possible at the VAX end (deaccess-lock the file).
\\ \hspace*{ 0.4 in} RMS doesn't really provide the right hooks, though.

\subsection{PUB \hspace{ 0.5 in} Bug Report F/Files \hspace{ 1.7 in} 07/12/84 13.57}

F/Files
When I don't specify where the output is to go (e.g. F xyz:/temp.com),
it comes to the terminal. This is wrong - it should go to the current
control output (stream 0).
RWT

\subsection{FDC \hspace{ 0.5 in} Bug Report: search command -- faulty f.. 2C 09/12/84 16.36}

search command -- faulty form
The example use of the search command given in help doesn't work:
\\ \hspace*{ 0.3 in} \} search fmacs:* HDX
\\ \hspace*{ 0.3 in} *Faulty form: HDX
I have to say \} search ?? and enter the parameters interactively to get
it to work.

\subsection{JGH \hspace{ 0.5 in} Bug Report: T \hspace{ 1.9 in} 1A 10/12/84 13.05}

T
If you have re-directed stream 0 to a file and then say T FILE,
the output still comes to the terminal, since T is explicitly opening
a stream to the terminal, rather than using stream 0. \hspace{ 0.2 in} This is the same
problem as RWT's F bug report.
:

\subsection{ANON \hspace{ 0.5 in} Suggestion: Laser printing \hspace{ 1.0 in} 33 11/12/84 09.19}

Laser printing
JHB for Kate Duncan
Can we have facilities for including boxes in text for the laser printer?
currently you appear to need a graphics APM to enter boxes and surely this
can be circumvented.

*HMD: there are such facilities, which do not require graphics, though it
\\ \hspace*{ 0.3 in} is certainly much easier to design formats with graphics support

Why can't we write to the far right half inch of the paper?

*HMD: you can

\subsection{RMM \hspace{ 0.5 in} Bug Report: doc:lg1 \hspace{ 1.5 in} 32 13/12/84 09.32}

doc:lg1
It opens the null file!

File:
Opening

Otherwise much improved.

*HMD: trying to display the null file is foolish of you, but harmless

\subsection{AD \hspace{ 0.6 in} Bug Report: DRAW failing to recover SA.. 19 13/12/84 14.46}

DRAW failing to recover SAVEd files

\hspace*{ 0.2 in} I cannot recover page A in AD.4:ports.sav
\\ \hspace*{ 1.3 in} page A in AD.4:rots.sav
\\ \hspace*{ 1.3 in} page A in some other files

\hspace*{ 0.2 in} These were produced using the DRAW program, available after
setting up EDWIN. I could recover these files up to two weeks
ago. They contain large and complex drawings. Please could
the old DRAW version be reinstated, or the bug removed.

\hspace*{ 0.2 in} Thanks,
\\ \hspace*{ 0.4 in} Alex

\subsection{AD \hspace{ 0.6 in} Bug Report: More problems with DRAW \hspace{ 0.4 in} 19 13/12/84 14.52}

More problems with DRAW

\hspace*{ 0.2 in} Some more problems have cropped up with DRAW.

\hspace*{ 0.2 in} 1: The event numbers need updating: when it can't
\\ \hspace*{ 0.5 in} find a file typed in response to FILENAME:
\\ \hspace*{ 0.5 in} (when recovering SAVEd files), it hangs up.

\hspace*{ 0.2 in} 2: The page sizes are very wrong. \hspace{ 0.2 in} The A4 vertical
\\ \hspace*{ 0.5 in} page size must be increased by 20\% in the
\\ \hspace*{ 0.5 in} Vertical and Horizontal directions.

\hspace*{ 0.2 in} Thanks,
\\ \hspace*{ 0.4 in} Alex

\subsection{AD \hspace{ 0.6 in} Bug Report: If you tell me where to fi.. 19 13/12/84 14.55}

If you tell me where to find the source code for DRAW:
I'll have a go at fixing the bugs.

\hspace*{ 0.2 in} Cheers,
\\ \hspace*{ 0.4 in} Alex

\subsection{RWT \hspace{ 0.5 in} Bug Report: imp compilers \hspace{ 1.1 in} 1E 19/12/84 12.02}

imp compilers
They all (I tried FMAC:IMP and I:IMP22F) still have the bug which I think
I reported some time ago, namely that predicates, unless compiled with
diagnostics turned off, are always true. This bug was introduced when
all procedures were made to return via their \%end line-number in order
to aid debugging. Updating the line number at the \%end (which is jumped
to by the \%true/\%false) destroys the condition code. Either the line-number
update instruction should be followed by a TST D0, or the calling code
shoul do a TST D0.
I haven't tried this, but I suspect similar problems might arise where
function results are tested by comparison with zero. The compiler might
wrongly assume the condition code on function return to be consistent with
the result value.

*HMD: not true

\subsection{RWT \hspace{ 0.5 in} Bug Report: imp compilers \hspace{ 1.1 in} 1E 19/12/84 12.28}

imp compilers
Why does -nodiag not turn off diagnostics? It is not right that we
should need to say -noline. Line-numbers are but one of several
diagnostic aids, most of which are not yet implemented. -noline
should turn off just those, -nodiag should turn off the lot.

*HMD: to be revised when diagnostics extended

\subsection{RWT \hspace{ 0.5 in} Bug Report: view \hspace{ 1.7 in} 1E 19/12/84 17.48}

view
Could the help program please not keep re-painting the last page of the
file. The discreet "End." appearing above the prompt line is not
prominent enough when compared with the effect of the screen being cleared
and a page being drawn. I regularly get halfway through re-reading it
before realising that it's not different.

\subsection{DJR \hspace{ 0.5 in} Bug Report: Why do I get "No buffer" w.. 32 20/12/84 10.18}

Why do I get "No buffer" when doing a "setup vlsi" ?
:

\subsection{RWT \hspace{ 0.5 in} Bug Report: IMP predicates \hspace{ 1.0 in} 1E 20/12/84 17.07}

IMP predicates
Sorry, it was wrong of me to generalise. The fault was confined to
the predicate RESOLVES, invoked behind the scenes by "-$>$". The calling
code did a conditional branch without first, as after other predicates,
doing a MOVE D0,D0. The library containing RESOLVES had been compiled
-NODIAG instead of -NOLINE. I note that in 22f -NODIAG now implies

\subsection{GDMR \hspace{ 0.5 in} Bug Report: Installation \hspace{ 1.1 in} 34 15/01/85 09.37}

Installation
I have included ZeroECCE in my Custom file. Now when I reboot my machine
I get told about a load of externals being redefined. Surely it shouldn't
be beyond the bounds of modern technology to suppress this junk?

The same applies to symbol redefinitions.

\subsection{AD.5 \hspace{ 0.5 in} Bug Report: IMP19D \hspace{ 1.5 in} 19 15/01/85 12.26}

IMP19D

\hspace*{ 0.2 in} Somewhere I keep calling IMP19D instead of the NEWIMP.
I do not set IMP in my login.com. Where else can it come from.
This is a new problem - I didin't have any difficulty until now.

\hspace*{ 0.2 in} Alex

\subsection{RWT \hspace{ 0.5 in} Bug Report: imp22f \hspace{ 1.5 in} 1E 17/01/85 15.27}

imp22f
Is it a bug? No, just an undesirable feature.
\%constbyte x
\%byte y
 *temp d0-d1/a0-a1
 \%if y \& x \# 0 \%start
\\ \hspace*{ 0.2 in} moveq \#x,d0
\\ \hspace*{ 0.2 in} move.b y,d1
\\ \hspace*{ 0.2 in} andi.l \#\$00ff,d1
\\ \hspace*{ 0.2 in} and.l d1,d0
\\ \hspace*{ 0.2 in} beq ??
This sort of pessimisation we could do without.

*HMD: optimisation of \& is an open-ended task; tell me when all machines
\\ \hspace*{ 0.3 in} have at least one meg

\subsection{JHB \hspace{ 0.5 in} Bug Report: String concatenation error.. 33 17/01/85 17.10}

String concatenation error
Try this program...
\%conststring (253) hh=\%c
"This requires a list identifying the people who are to receive copies of
the letter. The list must consist of IDs or names, separated by semi-colons.
The list may spill over several lines. It must end with a blank line." \{ 2

\%begin

print string(snl.hh.snl)
\%endofprogram

It'll print garbage. \hspace{ 0.2 in} Remove the "snl." and it'll work OK.

GDMR: Why not include the two SNLs in the string? (You've got two newlines
\\ \hspace*{ 0.4 in} in it already.) That way you'd save on a couple of unnecessary
\\ \hspace*{ 0.4 in} string concatenations...

*HMD: But it shouldn't get it wrong nonetheless; the corruption is related
\\ \hspace*{ 0.3 in} to the length of the string involved in the concatenation, but there
\\ \hspace*{ 0.3 in} isn't a simple fix.

\subsection{RMM \hspace{ 0.5 in} Bug Report: Missing Warning in Imp Com.. 2C 18/01/85 09.56}

Missing Warning in Imp Compiler
With all the new warnings in this compiler whatever happened to

? Non-local

on \%for loops. I find this message very useful.

*HMD: removed to save space

\subsection{AD.5 \hspace{ 0.5 in} Bug Report: RWT's UTILS:YECCE fix for \hspace{ 0.3 in} 13 18/01/85 11.33}

RWT's UTILS:YECCE fix for the compiler heap problem fails
\\ \hspace*{ 0.2 in} Cheers,
\\ \hspace*{ 0.4 in} Alex

\subsection{AD.5 \hspace{ 0.5 in} Bug Report: Dam'd IMP bug \hspace{ 1.1 in} 22 18/01/85 16.15}

Dam'd IMP bug

\hspace*{ 0.2 in} I've just spent 3 days tracking down a most slimy bug.
An integer record field + integer variable + STOI(string var)
does not always give the correct answers. I'm still struggling to
get over this. I've written a miniprog to try and manifest it in
12 lines but in short progs it seems to work OK.

\hspace*{ 0.2 in} Cheers,
\\ \hspace*{ 0.4 in} A user with a brain ache (how do you spell slimey?)

\subsection{AD.5 \hspace{ 0.5 in} Bug Report: Ga ga \hspace{ 1.6 in} 22 18/01/85 16.32}

Ga ga
\\ \hspace*{ 0.2 in} I've gone mad! I've found the "IMP bug"!
\\ \hspace*{ 0.2 in} Just when I was about to be certified, I found what was causing the
bug. I had diagnostics to print the results of

\hspace*{ 0.2 in} int var = int record field + int var + sti(string var)

and got

\hspace*{ 0.2 in} big num = -big num + 0 + big num

where -big num = big num.

The thing was caused by a lib insidiously installing a different
STOI routine that prints 16\_EFFFFFFF as "maxint". This manages to
get around the type checking such that

\hspace*{ 0.2 in} 216

sorry, typing problem

\hspace*{ 0.3 in} 16\_EFFFFFFF = -16\_EFFFFFFF + 0 + "maxint"

Enough to make you go mad

*HMD: - or at least become less than totally coherent: is there a bug
\\ \hspace*{ 0.4 in} or isn't there?

\subsection{IGF \hspace{ 0.5 in} Bug Report: How to confuse a screen ed.. 26 18/01/85 16.35}

How to confuse a screen editor : Lesson 1

a) Select your screen editor, in this case IE.

b) Open a new file for editing.

c) Enter the following text :-

garbage garbage garbage sdklfhds lskdjflds lskdjf
lskdjf lksdjf sldkfj
lksdjfhl; lksdjf lskdjf sldkfj
lskdjf sldkfj sldkfj sdlfkj


*

lsdkfgj lskdfj lskdfj lsdfkj

d) Now set the copy position to the line marked *

e) GOTO the line begining garbage and use Cntr-T repeatedly.

f) It should quickly become apparent that the hapless editor is well and
\\ \hspace*{ 0.2 in} truly lost. If you are lucky it will even forget how big the file is
\\ \hspace*{ 0.2 in} and get confused when you try and move the window up and down with the
\\ \hspace*{ 0.2 in} cursor.

\hspace*{ 0.2 in} IMN (Don't believe all you read.)

\subsection{GDMR \hspace{ 0.5 in} Bug report: ZeroECCE \hspace{ 1.4 in} (using IE)}

I'm told that UTILS: is obsolete. In particular, stuff there won't be
moved to other filestores when initialising or upgrading them. Why, then,
was ZeroECCE put there? It means, for example, that I can't (easily) switch
between B:: and P::. I quote from the relevant alert:

\hspace*{ 0.4 in} "!$<$Recent Alerts
\\ \hspace*{ 0.5 in} !$<$14/01/85 Dummy version of XECCE for use with compilers

\hspace*{ 0.4 in} "Non-fans of ECCE may care to INSTALL UTILS:ZEROECCE.
\\ \hspace*{ 0.5 in} This will prevent the roughly 30k of XECCE and VTLIB being wheeled in
\\ \hspace*{ 0.5 in} each time you invoke the Imp or Pascal compilers."

\subsection{AD.5 \hspace{ 0.5 in} Bug Report: IMP Bug with array address.. 13 22/01/85 12.32}

IMP Bug with array addresses

\hspace*{ 0.2 in} Where there is an external array, the elements of the array
can appear to be in a different array address. Under some circumstances
this causes the APM to hang, and it is not possible to CTRL Y, or use
the software front panel. \hspace{ 0.2 in} (Another call for "old fashioned" lights
and bulbs).

Errata:
\\ \hspace*{ 0.2 in} By "different array address", I mean in an incorrect address.

*HMD: see next entry

\subsection{AD.5 \hspace{ 0.5 in} Bug Report: Manifestation of previousl.. 13 22/01/85 12.44}

Manifestation of previously reported IMP compiler bug


\{ The program looks like:

\%external \%string (31) \%arrayspec junk (1:31)
\%externalroutinespec setup array
\%begin
\\ \hspace*{ 0.2 in} \%integer i
\\ \hspace*{ 0.2 in} setup array
\\ \hspace*{ 0.2 in} \%for i=1,1,31 \%cycle
\\ \hspace*{ 0.4 in} Print String("Faulty Dump of junk ".junk(i)); Newline
\\ \hspace*{ 0.2 in} \%repeat
\%endofprogram


\{ The external file looks like:

\%include "INC:util.imp"
\%external \%string(31) \%array junk (1:31)

\%externalroutine setup array
\\ \hspace*{ 0.2 in} \%integer i
\\ \hspace*{ 0.2 in} \%for i=1,1,31 \%cycle
\\ \hspace*{ 0.4 in} junk(i) = "String " . ITOS(i,0)
\\ \hspace*{ 0.2 in} \%repeat
\\ \hspace*{ 0.2 in} \%for i=1,1,31 \%cycle
\\ \hspace*{ 0.4 in} Print String("Correct dump of junk ".junk(i)); Newline
\\ \hspace*{ 0.2 in} \%repeat
\%end
\%endoffile

*HMD: see next entry

\subsection{AD \hspace{ 0.6 in} Bug Report: A whole pile of IMP compil.. 13 22/01/85 13.06}

A whole pile of IMP compiler bugs
 I will send as a bug report two pairs (total of 4) files.
Each pair consists of a program and an external routine, which must
be separated off and compiled on its own.

 None of the programs work properly. There are thus 3 bugs:

 1: External arrays with non-zero bottom indexes are misaddressed
 2: External arrays of records which have arrays in them are misaddressed
 3: Combination of bug 1 plus bug 2 caused the machine to hang.

I am absolutely washed up by this bug - I can do no more work.
Does the "same day" promise still hold?

*HMD: see next entry

\subsection{AD \hspace{ 0.6 in} Bug Report: ! Another mini prog to dem.. 13 22/01/85 13.11}

\{ Another mini prog to demonstrate yet another compiler bug

\%recordformat dont care (\%integer i)
\%recordformat test rec (\%string(31) goodies,
\\ \hspace*{ 0.2 in} \%record (dont care) \%name \%array indexes (0:3))

\%external \%record (test rec) \%name \%arrayspec names (0:31)
\%externalroutinespec setup array

\%begin
\\ \hspace*{ 0.2 in} \%integer i
\\ \hspace*{ 0.2 in} setup array
\\ \hspace*{ 0.2 in} \%for i=0,1,31 \%cycle
\\ \hspace*{ 0.4 in} Print String("Faulty dump of names ".names(i)\_goodies); Newline
\\ \hspace*{ 0.2 in} \%repeat
\%endofprogram

\{ Here is the external file

\%include "INC:util.imp"
\%recordformat dont care (\%integer i)
\%recordformat test rec (\%string(31) goodies,
\\ \hspace*{ 0.2 in} \%record (dont care) \%name \%array indexes (0:3))
\%external \%record (test rec) \%name \%array names (0:31)
\%ownrecord (test rec) ref test rec

\%externalroutine setup array
\\ \hspace*{ 0.2 in} \%integer i
\\ \hspace*{ 0.2 in} \%for i=0,1,31 \%cycle
\\ \hspace*{ 0.4 in} names(i) == New(ref test rec)
\\ \hspace*{ 0.4 in} names(i)\_goodies = "String " . ITOS(i,0)
\\ \hspace*{ 0.4 in} names(i)\_indexes(0) == NIL
\\ \hspace*{ 0.4 in} names(i)\_indexes(1) == NIL
\\ \hspace*{ 0.4 in} names(i)\_indexes(2) == NIL
\\ \hspace*{ 0.4 in} names(i)\_indexes(3) == NIL
\\ \hspace*{ 0.2 in} \%repeat
\\ \hspace*{ 0.2 in} \%for i=0,1,31 \%cycle
\\ \hspace*{ 0.4 in} Print String("Correct dump of names ".names(i)\_goodies); Newline
\\ \hspace*{ 0.2 in} \%repeat
\%end

\%endoffile


*HMD: the only compiler problem evidenced by these programs is associated
\\ \hspace*{ 0.3 in} with string assignment involving a complex LHS as well as RHS; this
\\ \hspace*{ 0.3 in} problem has already been corrected in V2.2f (awaiting release)

\subsection{AD.5 \hspace{ 0.5 in} Bug Report: The IMP22F compiler gets l.. 13 23/01/85 13.28}

The IMP22F compiler gets line numbers hopelessly wrong

*HMD: under what circumstances?

\subsection{AD \hspace{ 0.6 in} Bug Report: IMP22F problem \hspace{ 1.0 in} 13 23/01/85 14.00}

IMP22F problem

\hspace*{ 0.2 in} I've got the last "demo" working OK. I'll keep working on
a
a small program that demonstrates the bug.

\subsection{RMM\_R \hspace{ 0.4 in} Bug Report: Imp Compiler \hspace{ 1.1 in} 2C 23/01/85 15.09}

Imp Compiler
\{ The following program should fail unassigned variable, it does not.
\{ The output is:

\{ Wrong
\{ Wrong

\%begin
\\ \hspace*{ 0.2 in} \%string (255) A
\\ \hspace*{ 0.2 in} \%record \%format T Fm (\%string (255) A)
\\ \hspace*{ 0.2 in} \%record (T Fm) T

\hspace*{ 0.2 in} \%if A \# "Hello" \%start
\\ \hspace*{ 0.4 in} Print String ("Wrong")
\\ \hspace*{ 0.4 in} New Line
\\ \hspace*{ 0.2 in} \%finish
\\ \hspace*{ 0.2 in} \%if T\_A \# "Hello" \%start
\\ \hspace*{ 0.4 in} Print String ("Wrong")
\\ \hspace*{ 0.4 in} New Line
\\ \hspace*{ 0.2 in} \%finish
\%end

\subsection{SM \hspace{ 0.6 in} Bug Report: EFTP leaves files open in \hspace{ 0.3 in} 21 24/01/85 10.11}

EFTP leaves files open in Vax.
If a failuire occurs during transfer from Vax to B, the file in Vax is
sometimes left Open. Further attempts at use of that file with eftp
fail with the report 'File open'.
The report about dubious block size is not very comprehensible to the
user. What can a user do when this report is made?
S.M.
:

\subsection{IMN \hspace{ 0.5 in} Bug Report: Am I repeating myself ? \hspace{ 0.3 in} 26 24/01/85 13.48}

 Am I repeating myself ?
I may have reported this before but I can't find it in any of the BUG
files so I may be wrong. Anyway the files IMN:TESTAR and IMN:TESTAR2
differ only in the order in which some record fields are defined.
However TESTAR does not compile and TESTAR2 does. Should this in fact
be the case ? If it is a bug then it is more of an anoyance than a
handicap, that is always assuming that you know what is wrong and how to
circumvent it.

\subsection{AD.5 \hspace{ 0.5 in} Bug Report: Another IMP bug \hspace{ 0.9 in} 26 24/01/85 16.14}

Another IMP bug

\hspace*{ 0.2 in} \%enddoffile instead of \%endoffile causes the compiler to think
that it has reached the end of a program rather than the end of an
include file. There are no error messages. The only thing that
one notices is that instead of nnnn statements, there are only 120 say.
Compiling with the -list option identifies the include file, but
progress beyond that point is slow.

\hspace*{ 0.2 in} There should be an error message.

\hspace*{ 0.2 in} Cheers,
\\ \hspace*{ 0.4 in} Alex

\subsection{AD.5 \hspace{ 0.5 in} Suggestion: IE \hspace{ 0.2 in} Death by F11 and F12 \hspace{ 0.3 in} 26 24/01/85 16.26}

IE \hspace{ 0.2 in} Death by F11 and F12

\hspace*{ 0.2 in} F11 (get a buffer) is to close to
\\ \hspace*{ 0.2 in} F12 (write a buffer).

Several times I have overwritten a file that I wanted by pressing
F12 instead of F11. The messages look similar enough for one to
type in the file name and press CR before noticing the mistake.

Could IE either use a completely different prompt when writing things out.

\subsection{AD.5 \hspace{ 0.5 in} Suggestion: Corrections \hspace{ 1.2 in} 26 24/01/85 16.30}

Corrections
\\ \hspace*{ 0.2 in} As cane be seen from my last message, the SUGGEST fn needs an on-line
(no pun intended) editor. I have just noticed a CANEy mistake in this
message too.

\subsection{NWB \hspace{ 0.5 in} Bug Report: \{Variant Records in APM im.. 29 24/01/85 18.16}

\{Variant Records in APM imp and pascal \hspace{ 2.5 in} \}
\{ \hspace{ 5.0 in} \}
\{While in the process of converting programs from IMP to \hspace{ 1.3 in} \}
\{pascal I have noticed the following undesirable feature. \hspace{ 1.3 in} \}
\{Consider the two following program segments to print out the \hspace{ 1.0 in} \}
\{addresses of various fields of a variant record relative to \hspace{ 1.1 in} \}
\{the start of the record. It would seem that the two record \hspace{ 1.1 in} \}
\{formats are compatible, but running the programs gives the \hspace{ 1.1 in} \}
\{following answers:- \hspace{ 3.7 in} \}
\{ \hspace{ 0.8 in} IMP \hspace{ 1.6 in} PASCAL \hspace{ 2.0 in} \}
\{offset of x\_a is: \hspace{ 0.2 in} 0 \hspace{ 1.0 in} offset of x.a is: \hspace{ 0.2 in} 0 \hspace{ 1.2 in} \}
\{offset of x\_b is: \hspace{ 0.2 in} 2 \hspace{ 1.0 in} offset of x.b is: \hspace{ 0.2 in} 1 \hspace{ 1.2 in} \}
\{offset of x\_c is: \hspace{ 0.2 in} 4 \hspace{ 1.0 in} offset of x.c is: \hspace{ 0.2 in} 2 \hspace{ 1.2 in} \}
\{offset of x\_d is: \hspace{ 0.2 in} 2 \hspace{ 1.0 in} offset of x.d is: \hspace{ 0.2 in} 2 \hspace{ 1.2 in} \}
\{ \hspace{ 5.0 in} \}
\{Certainly, the problem is relatively easy to avoid by changing the \hspace{ 0.6 in} \}
\{order of declaration of fields 'b' and 'c', but I thought I should \hspace{ 0.6 in} \}
\{mention the difference, since the pascal HELP information states \hspace{ 0.7 in} \}
\{that pascal data types are 'completely compatible' with those \hspace{ 0.9 in} \}
\{in IMP. \hspace{ 4.5 in} \}
\{This file exists as ::b:nwb:record; and may be compiled with either \hspace{ 0.5 in} \}
\{the pascal or imp compiler to illustrate the above points. \hspace{ 1.1 in} \}
\{ \hspace{ 5.0 in} \}
\{ \hspace{ 3.6 in} Neil Bergmann \hspace{ 0.5 in} \}
\{
\%begin
 \%include "inc:util.imp"
 \%record \%format xf( \%byte a,
\\ \hspace*{ 0.5 in} (\%byte b, \%integer c \%or \%real d))
 \%record(xf) x
 \%integer base
 base = addr(x)
 printline("offset of x\_a is:".itos(addr(x\_a)-base,4))
 printline("offset of x\_b is:".itos(addr(x\_b)-base,4))
 printline("offset of x\_c is:".itos(addr(x\_c)-base,4))
 printline("offset of x\_d is:".itos(addr(x\_d)-base,4))
\%endofprogram
\{\}

program recordtest(output);
var x : record
\\ \hspace*{ 0.3 in} a:0..255;
\\ \hspace*{ 0.3 in} case boolean of
\\ \hspace*{ 0.5 in} true: (b:0..255; c:integer);
\\ \hspace*{ 0.5 in} false: (d:real)
\\ \hspace*{ 0.3 in} end;
\\ \hspace*{ 0.2 in} base: integer;
begin
 base := addr(x);
 writeln('offset of x.a is:', addr(x.a)-base: 4);
 writeln('offset of x.b is:', addr(x.b)-base: 4);
 writeln('offset of x.c is:', addr(x.c)-base: 4);
 writeln('offset of x.d is:', addr(x.d)-base: 4)
end.


*HMD: agreed to be undesirable; IMP will change (see RWT below)

\subsection{JGH \hspace{ 0.5 in} Bug Report: PAMSET \hspace{ 1.5 in} 1A 24/01/85 19.12}

PAMSET
This DOES NOT WORK

Try ' ' and - for Unix compatibilty

\subsection{JGH \hspace{ 0.5 in} Bug Report: STARTUP \& SYSTEM HACKERS \hspace{ 0.3 in} 1A 24/01/85 19.13}

STARTUP \& SYSTEM HACKERS
We decided a few weeks ago, well I suppose it was last year, that there
should be a SMALL number of directories which would define as being 'essential'
to a filestore supporting APM's. In particular all software in these places
should NOT assume the precence of other peoples directories.
I think it is something like -

Essential : FMAC, MANAGR, ANON, L, INC

Probable : EDWIN, VLSI, ILAP, IE, .......

All libraries -$>$ L
All include files -$>$ INC
All commands -$>$ FMAC

If we look at the startup file we see this is not the case, there are pointer
to various individuals directories \& lots of JUNK which could be installed by
means of CUSTOM (I forgot that from above). I hope someone is going to sort
it all out, because I have given up....

\subsection{AD.5 \hspace{ 0.5 in} Bug Report: SETUP EDWIN puts the m.c... 13 25/01/85 09.36}

SETUP EDWIN puts the m.c. into an infinite loop

\hspace*{ 0.2 in} When I SETUP EDWIN, the APM's Ether lights and RAM lights flicker
endlessly, but the machine never returns to the command level.

\hspace*{ 0.2 in} Alex

\subsection{SM \hspace{ 0.6 in} Bug Report: EFTP again \hspace{ 1.3 in} 21 25/01/85 12.02}

EFTP again
I have now discoverd that sometimes when Vax reports Readblock: dubious size
and then Close: -3 Illegal Xno, the next transfer receives the
response Open: -3 Illegal Xno. (This is for transfers from Vax).
What is going on?
Sidney
:
Whoops! Not in the Emas editor! The two ransfers referred to above werew of
different files.


\subsection{RWT \hspace{ 0.5 in} Bug Fix: \hspace{ 0.3 in} setup edwin \hspace{ 1.2 in} 1E 25/01/85 13.36}

setup edwin
looping was due to address errors caused by old dictionary being over-
strained by DRAWEXT. Made slightly bigger. Now works.

\subsection{RWT \hspace{ 0.5 in} Bug Report: Imp record variants \hspace{ 0.7 in} 1E 25/01/85 13.52}

Imp record variants
Further to NWB's report, the cause would appear to be that the Imp
space allocator, unlike the Pascal one, forces even-address alignment
when it needn't. I thought the requirement that strings be word-aligned
was dropped long ago (example 2), and it is questionable whether
embarking into a variant should force alignment (example 1).
Example 1:
\%begin
\%recordformat f(\%byte a,(\%byte b \%or \%byte c))
\%record(f)r
\%integer b=addr(r)
 write(addr(r\_a)-b,1)
 write(addr(r\_b)-b,1)
 write(addr(r\_c)-b,1)
\%end
prints out 0 2 2, my preference would be 0 1 1.
Example 2:
\%begin
\%recordformat f(\%byte a,\%string(2)b,\%byte c)
\%record(f)r
\%integer b=addr(r)
 write(addr(r\_a)-b,1)
 write(addr(r\_b)-b,1)
 write(addr(r\_c)-b,1)
\%end
prints out 0 2 5, I would strongly prefer 0 1 4.

*HMD: IMP should change -- will this cause problems for anyone without sin?

\subsection{GDMR \hspace{ 0.5 in} Bug Report: Z \hspace{ 1.9 in} 34 25/01/85 14.46}

Z
Somebody somewhere is trying to Z files TO filestore C -- have a look
at the console log. Any ideas, anybody?

\subsection{AD \hspace{ 0.6 in} Bug Report: IE keeps hanging when it t.. 13 28/01/85 10.28}

IE keeps hanging when it tries to journalise

\subsection{IGF \hspace{ 0.5 in} Bug Report: Esdl Sketch Utility. \hspace{ 0.6 in} 19 28/01/85 10.35}

Esdl Sketch Utility.
When trying to use the above I get this sort of conversation :

Terminal set to Level 1 graphics board
Draw chip-side or wire-side of board?
Side= w $<$- my response
Draw annotated edge connections?
Y or N?n $<$- me
Suppress slot types and chip names?
Y or N?y $<$- me
at this point sketch starts to draw the board. It draws a single chip on it,
it does NOT suppress the chip name and then I get Y or N? again to which I r
reply 'y' and again I get Y or N$>$?
sorry Y or N? this time when I reply 'y' the program crashes with a
non-numerical value y to READ etc.

 Why d'it do that ?

\hspace*{ 0.2 in} IMN.

\subsection{IGF \hspace{ 0.5 in} Bug Report: Addition to my last call. \hspace{ 0.3 in} 19 28/01/85 11.01}

Addition to my last call.
 I should have said that sketch works OK on a V200 with the same design file.

 IMN.

\subsection{DJR \hspace{ 0.5 in} Bug Report: PASCAL \hspace{ 1.5 in} 1D 28/01/85 12.21}

PASCAL
There seems to be a problem using arrays of strings i.e. packed arrays
of chars, not the built-in varying length strings. I am trying to
avoid non-standard features. The program in DJR:PBUG1 demonstrates
the problem, producing an event 0,3 when it tries to do the assignment.

I can use the built-in strings for the moment but I don't want to be
forced to indefinitely.

*HMD: inconsistent assumptions about alignment; corrected in V2.2d+

\subsection{RWT \hspace{ 0.5 in} Bug Fix: \hspace{ 0.3 in} djr's pbug1 \hspace{ 1.2 in} 1E 28/01/85 15.09}

djr's pbug1
Definitely a compiler problem: it's using MOVE.L with an odd address.
If you want to avoid the problem until it's fixed, and not use varyings,
make them string6 instead of string5.

\subsection{RWT \hspace{ 0.5 in} Bug Report: Imp compiler ?feature? \hspace{ 0.5 in} 1E 28/01/85 15.55}

Imp compiler ?feature?
The effect of the *TEMP directive appears not to be local to the
textual block in which it occurs.

*HMD: who said it wasn't? One meg first.

\subsection{JGH \hspace{ 0.5 in} Bug Report: !IMP bug 2 \hspace{ 1.3 in} 13 28/01/85 17.33}

IMP bug 2

Spurious Access warning -

\%include "inc:util.imp"
\%begin
\%integer \%array len(1:3),ad(1:3),enter(1:3),started(1:3),jobfin(1:3)
\%integer rj

 OK
\%integerfn selectjob
rj=rem(rj+1,3)+1
\%if jobfin(rj)=0 \%then \%start
 \%result=rj
\%else
 \%result=selectjob
\%finish
\%end

\%integerfn selectjob
rj=rem(rj+1,3)+1
\%if jobfin(rj)=0 \%then \%start
 \%result=rj
\%finish \%else \%result=selectjob
 Spurious Access warning on the above line

\%end

\%endofprogram

*HMD: see earlier report on same subject

\subsection{ANON \hspace{ 0.5 in} Bug Report: Pascal Hex constants \hspace{ 0.6 in} 33 28/01/85 19.45}

Pascal Hex constants
JHB
Pascal doesn't seem to be able to handle hex constants in the 16\_xxxx form
At least DWB and I have been unable to make it do so. Cf the example in the
PASCAL help. - can't be entered. \hspace{ 0.3 in} Also can I lock down routines \&/or vars
yet? Tried but failed. (a' la IMP @tted variables etc.

*HMD: mixed radix constants scuppered by extension to allow '\_' in idents;
\\ \hspace*{ 0.3 in} corrected in V2.2d+
\\ \hspace*{ 0.3 in} @... is a permitted 'attribute' in same context as 'readonly', but
\\ \hspace*{ 0.3 in} for vars only; I cannot think of a sensible syntax for procedures.

\subsection{IGF \hspace{ 0.5 in} Suggestion: That problem with printing.. 13 29/01/85 09.33}

That problem with printing incompletely transfered files.
 Would it not be possible to "spool" files into a directory on VAX,
 say USER or some such and then only issue the print command on
 succesful completion of file transfer ? The file could then be
 deleter
 deletem
 got rid of, or is this not feasable ?

\subsection{GDMR \hspace{ 0.5 in} Bug Fix: \hspace{ 0.3 in} Printing \hspace{ 1.4 in} 34 29/01/85 10.24}

Printing
IGF's suggestion is exactly what happens at the moment. There are two
VAX directories, one for each of the print queues, and a process which
wakes up every so often and enqueues all the files in its directory onto
its queue. However, an incomplete file is still a file as far as the
respooler is concerned -- it has no way of knowing that the file is
"incomplete".

There are two cases where the file requires to be rendered inaccessible
in order to stop short listings: one is when the file is UClosed as
part of clearing down the port when the connection is aborted; the other
is when the VFS\_CONTROL process is killed, implicitly closing all its
channels. The fix for the former case requires a change in the meaning
of UClose to zap the file rather than merely closing it. The fix for the
latter case involves setting the deaccess-lock bit in the file header --
this may turn out not to be compatible with RMS.

If no-one objects I will change UClose tomorrow (Wednesday).

\subsection{RWT \hspace{ 0.5 in} Bug Report: imp procedure parameters \hspace{ 0.3 in} 1E 29/01/85 12.20}

imp procedure parameters
Is there some other restriction I can't find in the help info?
It doesn't let me pass a procedure parameter as a parameter.
In the following example (RWT:PROCBUG), the two procedures perform the
same operation, namely to call OPERATE for every element on the tree R\_F.
The compiler accepts the first, but objects "wrong class" to the lines
marked in the second.
\%begin
\%recordformat f(\%record(f)\%name l,r)
\%recordformat g(\%record(f)\%name f)
\%record(g)\%name r
\%routine operate(\%record(f)\%name r); \%end

\%routine for each g(\%record(g)\%name r,\%routine s(\%record(f)\%name t))
 \%routine do(\%record(f)\%name r)
\\ \hspace*{ 0.3 in} \%returnif r==nil; \hspace{ 0.2 in} do(r\_l); \hspace{ 0.2 in} s(r); \hspace{ 0.2 in} do(r\_r)
 \%end
 do(r\_f); s(nil)
\%end

\%routine for each f(\%record(f)\%name r,\%routine s(\%record(f)\%name t))
 s(nil) \%andreturnif r==nil
 for each f(r\_l,s) \%unless r\_l==nil \hspace{ 0.3 in} \{**here**\}
 s(r)
 for each f(r\_r,s) \%unless r\_r==nil \hspace{ 0.3 in} \{and here\}
\%end

for each g(r,operate); for each f(r\_f,operate)

\%end

*HMD: the restriction noted earlier regarding the scope of procedures
\\ \hspace*{ 0.3 in} passed as parameters is somewhat limiting in the way it is applied
\\ \hspace*{ 0.3 in} to the onward passing of those parameters; this has been relaxed
\\ \hspace*{ 0.3 in} in V2.2g+

\subsection{RWT \hspace{ 0.5 in} Bug Report: imp compiler (22f) \hspace{ 0.7 in} 1E 29/01/85 13.36}

imp compiler (22f)
Files of external routines without a main program:
Their object modules say that their main entry point is somewhere, and
that somewhere is (nearly) the same as the reset routine. This is wrong.
They should have a proper null routine (i.e. consisting of just an RTS).
When compiling with -noline, the main and reset entry points are the same.
When compiling with -line, the main entry point has code to set the line
number (to one past the last line in the source), and then falls into the
reset routine. Wrong but harmless. When there is no own area, the reset
routine is nullified and move from its normal position (the end of the
code section) to the beginning of the code section. However, the main
entry point is left where it is. When compiling -line, the main entry
point is 4 bytes before the end of the file (which contains a set line
number instruction), it then runs off the end! I have not tried compiling
-noline, but would think it would put the entry point just off the end of
the file!

*HMD: corrected V2.2g

\subsection{NWB\_2 \hspace{ 0.4 in} Bug Report: Pascal Compiler - string a.. 36 29/01/85 14.16}

Pascal Compiler - string assignment

I get the following error:

Event 0 3 9430625 (008FE661)
PC 00837650 relative PC 0000001C in Main Program

when the following example program is run:-

program silver;
var
 layername : array [1..2] of packed array[1..3] of char;
begin
 layername[2] := '123';
end.

The error only occurs with strings of odd length (eg. 3,5,7),
and only for an array index of 2, not 1.
A word alignment problem, perhaps?
The above program is in file: \hspace{ 0.3 in} ::b:nwb\_2:sbug

\hspace*{ 2.1 in} Neil Bergmann

*HMD: see earlier report (DJR)

\subsection{NWB\_2 \hspace{ 0.4 in} Suggestion: INSTALL \hspace{ 1.5 in} 36 08/02/85 14.49}

INSTALL
I've just spent a few hours trying to find a bug in a program which
ended up being caused because I had installed a module and then
subsequently done a 'setup vlsi'. One of the modules in the VLSI
suite had the same name as my module and so replaced it in the
externals dictionary. Unfortunately, INSTALL did not warn me of the
fact. I know you can't please all the people all the time, and I
know people have complained in the past about too many warnings
from INSTALL about replaced names. However, I don't think we can
be expected to know the name of every module in libraries like
ilap, edwin etc., and it would be nice if we were told when
names in the dictionary are replaced by names from different
.mob files.

\hspace*{ 2.2 in} Neil Bergmann

\subsection{GDMR \hspace{ 0.5 in} Suggestion: terminal "input" \hspace{ 0.9 in} 34 08/02/85 15.46}

terminal "input"
There should be some way of injecting "terminal input" from a program
so that it will later be read as though it came from the terminal.
This would make command chaining rather easier, for one thing.
UNIX lets you do it, so it must be a good idea :-).

* JHB I have a routine DO COMMAND somewhere which takes string parameters
\\ \hspace*{ 0.4 in} $<$command$>$ $<$params$>$ $<$auxillary data$>$ and sticks them in the input buffer.
\\ \hspace*{ 0.4 in} I've kept it quiet cos I thought it was so nasty but if you want it...

\subsection{GDMR \hspace{ 0.5 in} Suggestion: Logging off \hspace{ 1.2 in} 34 08/02/85 15.49}

Logging off
Calling the logon/off program is the only reasonable way of logging off.
The only alternative would be to copy the program and then track any changes
made in the genuine article. Stuffing some "terminal input" seems to be the
only way to go.

[The logon/off program does more than just log you off the filestore.]

\subsection{AD \hspace{ 0.6 in} Bug Report: IE fails (again) \hspace{ 0.9 in} 1C 09/02/85 10.57}

IE fails (again)
\\ \hspace*{ 0.2 in} If one has too many buffers on a small machine, when one tries to
write out the main buffer (closing the edit), the machine craps out with
a stack failure. The event is caught, one gets a "tread wearily" mesg,
but as soon as one hits any other key, the editor stops (ie, one is
returned to the OS command level).

\subsection{GMC \hspace{ 0.5 in} Bug Report: print scenario \hspace{ 1.0 in} 13 10/02/85 14.32}

print scenario

 The Perkin-Elmer 550 does not use the same escape sequences as the V200,
funnily enough. So why does the newly 'reconfigured' bantam + APM + printer
send out V200 escape sequences, potentially confusing those members of the
user community who don't happen to know that most departmental software is
hardwired for V200s ?

(or simply put: the APM O/S puts out escape sequences which might cause
alarm to someone using a bantam)

\subsection{AD.5 \hspace{ 0.5 in} Bug Report: IMP22F line numbers for ru.. 13 11/02/85 11.37}

IMP22F line numbers for run time error reports
Above are often wrong

\subsection{RWT \hspace{ 0.5 in} Bug Fix: \hspace{ 0.3 in} Print scenario \hspace{ 1.0 in} 1E 11/02/85 11.48}

Print scenario
It is well known that assumptions are built-in to too many bits of
software that they are talking to a Visual 200. As we move towards
a freezable stable-ish system it is intended to weed out most (all?)
of these. Not worth the effort for the printer bantam just for a
weekend and a day. As for causing alarm to the uninitiated, well,
they are probably quite used to being alarmed often enough.

\subsection{IMN \hspace{ 0.5 in} Bug Report: Vague Imp bug... \hspace{ 0.9 in} 35 11/02/85 13.32}

Vague Imp bug...
\%begin

 \{This is an incomplete characterisation of a bug. This program demonstrates\}
 \{that the compiler misses the void 'result' in this case. If \hspace{ 1.0 in} \}
 \{ \%result = result." I think " \hspace{ 3.0 in} \}
 \{is used then it does spot the void occurence. In at least one program \hspace{ 0.3 in} \}
 \{which I have, this failure results in incorrect string concatination using\}
 \{the result of a function like test string. In particular in the case given\}
 \{here the result would be "I say: I am a string". This does not happen in \}
 \{this program though. \hspace{ 3.6 in} \}

 \%string (255) \%fn test string
\\ \hspace*{ 0.2 in} \%string (255) result
\\ \hspace*{ 0.2 in} result = result." I think"
\\ \hspace*{ 0.2 in} \{This ****$\hat{ }${}**** is void\}
\\ \hspace*{ 0.2 in} \%result = result
 \%end \{of test string\}

 \%string (255) var, const = " I am a string ", pre = "I say :"

 var = test string
 print string (var) ; new line
 print string (pre.var.const) ; new line

\%end \%of \%program

\subsection{JHB \hspace{ 0.5 in} Suggestion: Comment on Printers \hspace{ 0.7 in} 33 11/02/85 14.23}

Comment on Printers
1) Best solution to VAX+Printer solution is to wait for the 2-10 MHz gateway
\\ \hspace*{ 0.2 in} which'll do the job properly
2) Capital Submission for 1985/86 will include a request for a slow devices
\\ \hspace*{ 0.2 in} spooling machine which'll eliminate this particular problem anyway.

\subsection{NEWS \hspace{ 0.5 in} Bug Report: Imp Library \hspace{ 1.2 in} 1E 11/02/85 14.32}

Imp Library
Date and Time are not predeclared.

\subsection{RWT \hspace{ 0.5 in} Bug Report: imp compiler \hspace{ 1.1 in} 1E 11/02/85 16.22}

imp compiler
Not a bug, just a moan.
How come static declarations are flagged '?' out of order, but array
declarations are flagged '*' out of order? I've just converted a program
from old Imp to new, and it didn't like me doing things like
 read(inputs)
\%stringarray in(0:inputs)
 read(outputs)
\%stringarray out(0:outputs)
 etc
Surely the extra \%BEGINs I put in to placate it aren't REALLY necessary?

\subsection{NWB \hspace{ 0.5 in} Bug Report: Pascal enumerated types ou.. 3F 11/02/85 20.42}

Pascal enumerated types output

I get the following error with the following program which can be found in
nwb:enumbug.
\\ \hspace*{ 2.4 in} Neil Bergmann

*************************************************************
Event 8 1 Invalid address
Line 10, relative PC 00000AB6 in L:PASLIB called from Main Program
***********************************************************
 EUCSD Pascal Compiler for M68000. APM Version 2.2d

\hspace*{ 0.2 in} ENUMBUG compiled on 11/02/85 at 20.39

\hspace*{ 0.3 in} 1
\\ \hspace*{ 0.3 in} 2 program setbug(output);
\\ \hspace*{ 0.3 in} 3 \hspace{ 0.3 in} type
\\ \hspace*{ 0.3 in} 4 \hspace{ 0.3 in} masklayers =(layerfiller,diff,poly,metal,
\\ \hspace*{ 0.3 in} 5 \hspace{ 0.9 in} contact,buried,implant,active,depactive);
\\ \hspace*{ 0.3 in} 6 \hspace{ 0.4 in} masks = diff..depactive;
\\ \hspace*{ 0.3 in} 7 \hspace{ 0.3 in} var
\\ \hspace*{ 0.3 in} 8 \hspace{ 0.4 in} m: masks;
\\ \hspace*{ 0.3 in} 9 \hspace{ 0.3 in} begin
\\ \hspace*{ 0.2 in} 10 \hspace{ 0.4 in} for m := diff to depactive do writeln(m);
\\ \hspace*{ 0.2 in} 11 \hspace{ 0.3 in} end.
ENUMBUG compiled: 7 statements (+ 0 comments) to 122 bytes (+ 24)

\subsection{NWB \hspace{ 0.5 in} Bug Report: Pascal Compiler - Sets \hspace{ 0.5 in} 3F 11/02/85 20.56}

Pascal Compiler - Sets

The following program (in nwb:setbug) shows a fault in the
compiler's handling of sets.
Line 14 correctly writes out the elements of a set constant;
Line 18 should do the same for a previously assigned set
variable, but it seems as if the set is empty.
The output from the program follows the listing.

\hspace*{ 2.5 in} Neil Bergmann
********************************************************************
 EUCSD Pascal Compiler for M68000. APM Version 2.2d

\hspace*{ 0.2 in} SETBUG compiled on 11/02/85 at 20.48

\hspace*{ 0.3 in} 1
\\ \hspace*{ 0.3 in} 2 program setbug(output);
\\ \hspace*{ 0.3 in} 3 \hspace{ 0.3 in} type
\\ \hspace*{ 0.3 in} 4 \hspace{ 0.3 in} masklayers =(layerfiller,diff,poly,metal,
\\ \hspace*{ 0.3 in} 5 \hspace{ 0.9 in} contact,buried,implant,active,depactive);
\\ \hspace*{ 0.3 in} 6 \hspace{ 0.4 in} masks = diff..depactive;
\\ \hspace*{ 0.3 in} 7 \hspace{ 0.3 in} var
\\ \hspace*{ 0.3 in} 8 \hspace{ 0.4 in} outlined: set of masks;
\\ \hspace*{ 0.3 in} 9 \hspace{ 0.4 in} m: masks;
\\ \hspace*{ 0.2 in} 10 \hspace{ 0.3 in} begin
\\ \hspace*{ 0.2 in} 11 \hspace{ 0.4 in} outlined := [buried,implant,active,depactive,contact];
\\ \hspace*{ 0.2 in} 12 \hspace{ 0.4 in} write('Right: ');
\\ \hspace*{ 0.2 in} 13 \hspace{ 0.4 in} for m := diff to depactive do
\\ \hspace*{ 0.2 in} 14 \hspace{ 0.6 in} if m in [buried,implant,active,depactive,contact]
\\ \hspace*{ 0.2 in} 15 \hspace{ 0.7 in} then write(ord(m):2); writeln;
\\ \hspace*{ 0.2 in} 16 \hspace{ 0.4 in} write('Wrong: ');
\\ \hspace*{ 0.2 in} 17 \hspace{ 0.4 in} for m := diff to depactive do
\\ \hspace*{ 0.2 in} 18 \hspace{ 0.5 in} if m in outlined then write(ord(m):2); writeln;
\\ \hspace*{ 0.2 in} 19 \hspace{ 0.4 in} writeln('Sigh!');
\\ \hspace*{ 0.2 in} 20 \hspace{ 0.3 in} end.
SETBUG compiled: 15 statements (+ 0 comments) to 294 bytes (+ 36)
****************************OUTPUT****************************
Right: 4 5 6 7 8
Wrong:
Sigh!

\subsection{USEFUL \hspace{ 0.3 in} Comment: \hspace{ 0.3 in} Some capital suggestions. \hspace{ 0.3 in} 42 12/02/85 15.53}

Some capital suggestions.

1) Just a quick comment on RDW's bit.
\\ \hspace*{ 0.2 in} I agree, and suggest that he (or others) get a start on the basis
\\ \hspace*{ 0.2 in} of a news system.
\\ \hspace*{ 0.2 in} One of the most important points mentioned was that it be run of
\\ \hspace*{ 0.2 in} one filestore (presumably Bravo), what would be a nice side kick
\\ \hspace*{ 0.2 in} is a couple of external routines to allow a program to establish
\\ \hspace*{ 0.2 in} a logical connection to any filestore, EFTP, USEFUL:USERS, and
\\ \hspace*{ 0.2 in} others all do this, but in a rather messy way. Can we have these
\\ \hspace*{ 0.2 in} externalized and put in INC:FS?.IMP or something.
\\ \hspace*{ 0.2 in} In fact why bother with all the messing about at this level and get
\\ \hspace*{ 0.2 in} the 'system' to do it for us, such that ALL file names can be
\\ \hspace*{ 0.2 in} specified as residing on a given filestore, eg \%include "::B:INC:???.IMP"
\\ \hspace*{ 0.2 in} etc etc etc.

2) As for next years capital expenditure.
\\ \hspace*{ 0.2 in} How about another 'network server'.
\\ \hspace*{ 0.2 in} Into this plug the coming MSF clock decoder (super accurate time),
\\ \hspace*{ 0.2 in} Teletext decoder (up to the minute cricket results and news),
\\ \hspace*{ 0.2 in} (both CS4 projects)
\\ \hspace*{ 0.2 in} A new hardware addon with
\\ \hspace*{ 0.3 in} 6 (or so) RS-232 serial ports
\\ \hspace*{ 0.3 in} 2 (or so) parallel ports (centronics?)
\\ \hspace*{ 0.3 in} etc
\\ \hspace*{ 0.2 in} Then into this we can plug printers, plotters, and anything else
\\ \hspace*{ 0.2 in} that comes to mind.
\\ \hspace*{ 0.2 in} Get some enthusiastic boffin to write the necessary control software
\\ \hspace*{ 0.2 in} queuing theory, etc etc, and the VAX-ETHER problems vanish overnight
\\ \hspace*{ 0.2 in} (hopefully)
\\ \hspace*{ 0.2 in} I don't see why VAX can't send its output to the ethernet, rather than
\\ \hspace*{ 0.2 in} APM users sending output to VAX, after all this is how it was in the
\\ \hspace*{ 0.2 in} old days

\hspace*{ 0.2 in} Of course the above suggestion may become void with the arrival of the
\\ \hspace*{ 0.2 in} 10Mbit/sec ether port... but won't it have to sit in a 'server' somewhere

\hspace*{ 0.5 in} David A Kerr

\subsection{SM \hspace{ 0.6 in} Bug Report: Compiler fault \hspace{ 1.0 in} 21 12/02/85 16.21}

Compiler fault
A program which previously compiled (about 2 weeks ago) is now being rejected
as having a statement that is too complex. The rejected statement is
q\_extra\_head\_line=q\_id." "
Introduction of an auxiliary variable to replace q\_head ledt to the similar
rejection of the line
r\_head\_line=q\_id." "
(SORRY, r REPLACES q\_extra.)
The concatenation is a fudge to deal with a different compiler bug that
leads to characters being lost from the ends of string components of
records!
SM

\subsection{GDMR \hspace{ 0.5 in} Bug Report: View \hspace{ 1.7 in} 34 13/02/85 12.17}

View
Or is it called Help?
Anyway, it should print out the number of the current message somewhere.

\subsection{ANON \hspace{ 0.5 in} Bug Report: TO command (for CS2) \hspace{ 0.6 in} 3C 13/02/85 22.00}

TO command (for CS2)
DAK
I have just 'bailed out' a CS2 student from trouble....
the TO command is supposed to redirect output to a file, given as
a parameter..... unfortunately if you provide no file name as a
parameter (ie just type the command \}TO) it appears to dump the
output nowhere. This is permanent!!!!!
It is not affected by loging out, etc. The only way back to normal
is to give the filename 'TT:' as parameter.

Surly a null parameter should have this effect also?
Could the TO command not be 'hacked' in some way so as to only
affect the output from the next executed program etc etc etc.
(have CS2 been told how to use the command properly)

etc etc etc etc
\\ \hspace*{ 1.2 in} David

\subsection{NWB\_3 \hspace{ 0.4 in} Bug Report: LINK \hspace{ 1.7 in} 29 14/02/85 17.44}

LINK

I have a large number of modules which work successfully when
linked dynamically.
I attempted to statically link some of the modules which are no longer
subject to change into one super module, which would then be
linked dynamically with those modules currently under development,
but I get the following error when the program is executed:
*********************************************************
Event 0 3 8773849 (0085E0D9)
PC 0085E208
*********************************************************

I am reasonably certain that the problem is not one
of unsatisfied external references, since trying it with
link ... -include=*
gives a similar error.

The working version of the program used the EDWIN and ILAP libraries
(using setup vlsi)
plus the following installed files:

install nwb\_2:parse
install nwb\_2:state
install nwb\_2:forif
install nwb\_2:partx
install nwb\_2:intx
install nwb\_2:cond
install nwb\_2:misc
install nwb\_2:evalcell
install nwb\_2:evalpart
install nwb\_2:readin
install nwb\_2:impstr
install nwb\_2:template
install nwb\_2:silplot
install nwb\_2:silcif
install nwb\_2:silout
install nwb\_2:find
install nwb\_2:silsim

******************************
The newer version first does the following LINK command:

link parse,state,forif,partx,intx,cond,misc,evalcell,evalpart,readin,find/david-
 -include=newlink.inc -exclude=*

AND then does the following installs:

install nwb\_2:david
install nwb\_2:impstr
install nwb\_2:template
install nwb\_2:silplot
install nwb\_2:silcif
install nwb\_2:silout
install nwb\_2:silsim

before the program

nwb\_2:sil

is run, which gives the above error.

\hspace*{ 3.7 in} Neil Bergmann

\subsection{RWT \hspace{ 0.5 in} Comment: \hspace{ 0.3 in} TO command \hspace{ 1.3 in} 1E 15/02/85 11.06}

TO command
mumble mumble
all it does is openoutput(0,cliparam)
If you look in the documentation, you will see (perhaps) that special
filenames are treated as follows:
"" means the same as ":n" which is the null device.
":" means the same as ":t" which is the terminal.
I think the bit of paper CS2 have been given does say to use "TO :" to
switch back.
Incidentally, "TT:" has gone out of favour, I'm not quite sure why it
still works as if it were ":T". It would be ambiguous, and would refer
to file "" in directory "TT".

\subsection{RWT \hspace{ 0.5 in} Comment: \hspace{ 0.3 in} LINK command \hspace{ 1.1 in} 1E 15/02/85 11.27}

LINK command
There is a temporary restriction on what you can and cannot link which,
wihtout my having examined NWB's report in detail, probably explains his
problem.
I have updated HELP LINK to explain.

\subsection{AD.5 \hspace{ 0.5 in} Suggestion: IMP \%ALIAS errors ignored \hspace{ 0.3 in} 13 15/02/85 11.30}

IMP \%ALIAS errors ignored

 If one has two variables with the same alias name, then
the compiler does not complain and the linker does not complain,
so the programmer has to find out the hard way. These "bugs" can
be very difficult to trace. Is it possible for the compiler or the
linker (or even both?) to check for duplicate alias names. It would
be (I assume) easy to add this to the compiler.
\\ \hspace*{ 0.2 in} Alex

\subsection{GDMR \hspace{ 0.5 in} Bug Fix: \hspace{ 0.3 in} UClose / VAX \hspace{ 1.1 in} 34 15/02/85 12.24}

UClose / VAX
UClose to VAX (VFS\_CONTROL) now deletes the file rather than closing it
normally. All files are UClosed as part of image winddown.

\subsection{RWT \hspace{ 0.5 in} Comment: \hspace{ 0.3 in} Duplicate aliases. \hspace{ 0.7 in} 1E 15/02/85 14.14}

Duplicate aliases.
It is difficult for the compiler, easy for INSTALL. In fact, INSTALL used
to report such things, but was muted by popular demand. There is obviously
a case for putting it back in again, perhaps with a mute option. Will do.

\subsection{FDC \hspace{ 0.5 in} Suggestion: Link Command \hspace{ 1.1 in} 2C 17/02/85 16.07}

Link Command
The link command should not do an open input(":") if the user
specifies : for the include or exclude parameters, but just read
stream 0. That way you can put the command and a list of names
in a .com file. It won't work if you need both includes and excludes
though.

\subsection{FDC \hspace{ 0.5 in} Bug Report: \%systempredicate Exists \hspace{ 0.4 in} 38 18/02/85 08.48}

\%systempredicate Exists
'Exists and 'File size' are both hard-wired to talk the booted-from
filestore. Any reason why they shouldn't use the port 'fsport' rather
than 'lsap' ?

\subsection{EHS \hspace{ 0.5 in} Bug Report: Strung out by IMP ? \hspace{ 0.7 in} 26 18/02/85 09.29}

Strung out by IMP ?
\%begin

 \{This program demonstrates a bug in the imp compiler ? \hspace{ 0.7 in} \}
 \{The output is something like : \hspace{ 2.2 in} \}
 \{ \hspace{ 4.2 in} \}
 \{suriouse bits of the other 4 strings followed by terminal bleep\}
 \{Wobbly gaga gaga etc... \hspace{ 2.7 in} \}
 \{16/02/85 \hspace{ 3.7 in} \}
 \{13.12 \hspace{ 3.9 in} \}
 \{Hopeful \hspace{ 3.7 in} \}
 \{terminal hang (on this 1 Meg machine) \hspace{ 1.7 in} \}
 \{ \hspace{ 4.2 in} \}
 \{I suggest that this is a bug because if the size of \hspace{ 0.8 in} \}
 \{the record \%string (80) is changed to \%string (75), \hspace{ 0.8 in} \}
 \{the program works OK. BUT if the \%constant \%string (80) \hspace{ 0.5 in} \}
 \{is also changed to \%constant \%string (75) the error comes back.\}

 \%constant \%string (80) text = "Wobbly gaga gaga gaga gaga gaga gaga gaga "

 \%record \%format safe (\%string (80) first,
\\ \hspace*{ 1.6 in} \%string (12) date,time,name,
\\ \hspace*{ 1.6 in} \%string (80) last)

 \%record (safe) record

 record\_first = text ; record\_last = text
 record\_date = "16/02/85" ; record\_time = "13.12"
 record\_name = "Hopeful"

 print string (record\_first) ; new line
 print string (record\_last) ; new line
 print string (record\_date) ; new line
 print string (record\_time) ; new line
 print string (record\_name) ; new line

\%end \%of \%program

 IMN..


\subsection{ANON \hspace{ 0.5 in} Bug Report: IE \hspace{ 1.8 in} 3C 18/02/85 12.00}

IE
DAK
IE on Charlie doesn't work!
Can someone port a 'good' version of L:SYSDEP.MOB onto charlie which
will fix the problem.

 Ta,
\\ \hspace*{ 0.8 in} David

* Now fixed - what we need is a proper release facility for the APMs....
* RMM 18/Feb/85



\subsection{DJR \hspace{ 0.5 in} Comment: \hspace{ 0.3 in} Can some info on the 68000.. 1D 18/02/85 12.28}

Can some info on the 68000 assembler be put in the help system?

\subsection{RWT \hspace{ 0.5 in} Comment: \hspace{ 0.3 in} Lin command \hspace{ 1.2 in} 1E 18/02/85 15.14}

Lin command
Have complied with FDC's suggestion regarding ":" as the Include/Exclude
parameters. Since there is not yet any mechanism for forcing end-of-file
in command files, the lists are terminated with ":". If both the include
list and the exclude list are specified as ":", then one of them (I'll
have to check which) is read first. The Help info will say which.

\subsection{NEWS\_S \hspace{ 0.3 in} Bug Report: Imp Compiler \hspace{ 1.1 in} 2C 18/02/85 15.23}

Imp Compiler
If the file name is too long the compiler blows up Event 3, 3, 4 Param Error.

\subsection{RWT \hspace{ 0.5 in} Comment: \hspace{ 0.3 in} Compiler failing on too lo.. 1E 18/02/85 17.10}

Compiler failing on too long filenames
This is precicely what it should do.
We have found on numerous occasions that when applications trap
errors which occur in modules they use, and then substitute an
error report of their own, this only serves to mislead. In such
circumstances, the only sensible course of action is to output
the report generated by the original error, and stop. You get that
effect most easily by not trapping the error at all.
Admittedly, 'param error' is not the most informative of reports,
but the source is the filestore, not the compiler, and it is all too
easy to get carried away with over-informative error messages.
In the specific case of the compiler, there might be a case for the
compiler attempting to open the output file sooner rather than later,
thus avoiding the delay incurred through reading in the sources and
doing the compilation, before it actually fails.
Presumably you don't lose the edit when this happens...

\subsection{AD.5 \hspace{ 0.5 in} Bug Report: FAULTY OPERAND problem wit.. 26 18/02/85 18.01}

FAULTY OPERAND problem with \%owns and \%externals

\hspace*{ 0.2 in} The file AD.5:graphics.imp cannot be compiled without
FAULTY OPERAND errors. I understand this can be due to using
\%own variables, but my prog does it whether I have \%owns or
\%externals. I am using large \%external arrays. The code itself
comes from a program written by IBH for his level 2 graphics.

\hspace*{ 0.2 in} Cheers,
\\ \hspace*{ 0.4 in} Alex

* RWT \hspace{ 0.2 in} Not true. I just compiled his program nae bother.

\subsection{GDMR \hspace{ 0.5 in} Suggestion: Error handling \hspace{ 1.0 in} 34 19/02/85 10.24}

Error handling
One of the many nice things about Mouses was the way that the subsystem could
be asked to handle events. By default, an untrapped event resulted in a
full diagnostic traceback. It was possible, however, to set a bit in the
header of the .EXE which would be invoked by a command which was interpreted
by the subsystem as a request to print out only the failure reason for the
command. The result looked something like

$<$command name$>$ fails: $<$event\_message$>$

For example, if the file JIM didn't exist then the command

RENAME JIM/HARRY

would result in the error message

RENAME fails: File JIM does not exist.

Note that the error report is being printed by the subsystem (CLI in
Fred-OS terminology). This was highly convenient for writers of commands,
as they didn't need to bother about all the (not so) little eventualities
which might arise.

The question arises: what happens if the implementor wants to see the
diagnostic information as an aid to debugging (FRED fails: Unassigned
variable). The answer is that the subsystem's behaviour could be
suppressed so that MDIAG would always be invoked.

This would be a useful enhancement to the current Fred-CLI (or any future
one...).

\subsection{GDMR \hspace{ 0.5 in} Suggestion: $\hat{ }${}W \hspace{ 1.8 in} 34 19/02/85 11.38}

$\hat{ }${}W
Wouldn't it be nice if the Fred-OS supported $\hat{ }${}W (erase last word)? UNIX has
it. Mouses had it. VMS will have it.

\subsection{GMC \hspace{ 0.5 in} Bug Report: imp arrays \hspace{ 1.3 in} 32 19/02/85 14.31}

imp arrays

The Imp help information needs updating for VAX type arrays. (I would also
add that the absence of support for VAX type arrays makes writing portable
code more difficult)

\} t gmc:test
\%begin
 \%integer \%array fred (1:8)
 \%integer \%array(1)\%name k
 k == fred
\%end
\} i test
* \hspace{ 0.2 in} 3 Not supported \hspace{ 0.2 in} \%integer \%array|(1)\%name k
TEST: 1 fault reported

and I quote from help imp

\hspace*{ 0.4 in} "For the time being, the Vax/VMS form ... \%array(n)\%name ... is also
\\ \hspace*{ 0.5 in} accepted, but note that the '(n)' part is obligatory even when n is one."

I take that such times have passed.

\subsection{ANON \hspace{ 0.5 in} Bug Report: No response from filestore.. 21 19/02/85 18.20}

No response from filestore when closing editing
S.Michaelson
Very severe - I had to re-boot 6 times and re-edit the file each time
in order to obtain an edited version.
The APM stopped responding to $\hat{ }${}Y when the filestore did not respond as
expected when \%c was typed.
Whe a new version was produced, it was put by me into a file called TEMP.
I could not then destroy the old version untiul I had tried Delete 3 times.
It appeared to delete the file, but when I tried Rename, I was told that the
file still existed and files responded with its name.
:

\subsection{JHB \hspace{ 0.5 in} Bug Report: IMP string resolution \hspace{ 0.5 in} 33 20/02/85 13.54}

IMP string resolution
Try this...
\%begin

\%string (255) x,y,z
\%integer i

x=""
\%for i=1,1,130 \%cycle; x=x."*"; \%repeat
x=x.","
\%for i=1,1,100 \%cycle; x=x."*"; \%repeat

printstring(x); newline
\%if x -$>$ y.(",").z \%then printstring("Yes") \%else printstring("No")
newline
\%endofprogram
It'll print 'No'. \hspace{ 0.3 in} I have been having problems where strings resolve into
bits $>$ ca. 128 long.

\subsection{GDMR \hspace{ 0.5 in} Bug Report: Imp \hspace{ 1.7 in} 34 20/02/85 14.39}

Imp
The following program does not compile. The \%else part of the event block
is complained about....

[This construct has been in Imp77 for some time now. Since version 7 of
the compiler, at least.]

\%begin
\\ \hspace*{ 0.2 in} \%on 9 \%start
\\ \hspace*{ 0.4 in} printstring("Event 9")
\\ \hspace*{ 0.4 in} newline
\\ \hspace*{ 0.4 in} \%stop
\\ \hspace*{ 0.2 in} \%else
\\ \hspace*{ 0.4 in} printstring("Initialisation")
\\ \hspace*{ 0.4 in} newline
\\ \hspace*{ 0.2 in} \%finish
\%end \%of \%program

\subsection{GDMR \hspace{ 0.5 in} Bug Report: Imp, continued. \hspace{ 0.9 in} 34 20/02/85 14.43}

Imp, continued.
The following is the compiler listing generated by the VAX/VMS compiler....


\hspace*{ 0.4 in} Computer Science VAX-11 IMP77 Compiler. Version 8.02

\hspace*{ 0.8 in} Compiled on 20-FEB-1985 at 14:46:21

\hspace*{ 0.2 in} Source file: U0:[GDMR]TEST.IMP;1

\hspace*{ 0.3 in} 36 Procedure FLOAT
\\ \hspace*{ 0.3 in} 36 End
\\ \hspace*{ 0.3 in} 1 \%begin
\\ \hspace*{ 0.3 in} 2 \hspace{ 0.3 in} \%on 9 \%start
\\ \hspace*{ 0.3 in} 3 \hspace{ 0.5 in} printstring("Event 9")
\\ \hspace*{ 0.3 in} 4 \hspace{ 0.5 in} newline
\\ \hspace*{ 0.3 in} 5 \hspace{ 0.5 in} \%stop
\\ \hspace*{ 0.3 in} 6 \hspace{ 0.3 in} \%else
\\ \hspace*{ 0.3 in} 7 \hspace{ 0.5 in} printstring("Initialisation")
\\ \hspace*{ 0.3 in} 8 \hspace{ 0.5 in} newline
\\ \hspace*{ 0.3 in} 9 \hspace{ 0.3 in} \%finish
\\ \hspace*{ 0.3 in} 10 \%end \%of \%program
Code 112 bytes Glap 64 bytes Diags 95 bytes \hspace{ 0.2 in} Total size 271 bytes
\\ \hspace*{ 0.3 in} 10 statements compiled in 1.82 seconds. (329 statements/minute)

\subsection{NWB\_2 \hspace{ 0.4 in} Suggestion: Run time errors \hspace{ 0.9 in} 36 20/02/85 18.45}

Run time errors

Often when running programs I get errors such as

Event 0 3 ....
Event 0 4 ....

However, I cannot find anything in any of the HELP information,
including that for the relevant language compilers, to tell
me what these errors mean.
Such information might help one to tell why a program isn't working.
(The IMP manual says for event 0 with subevent $>$0 'User Generated Event',
 this user certainly never generated them)

\hspace*{ 1.9 in} Neil Bergmann

\subsection{I \hspace{ 0.7 in} Bug Fix: \hspace{ 0.3 in} IMP Compiler \hspace{ 1.1 in} 2F 20/02/85 21.30}

IMP Compiler
1. Wrong line number in run-time error report (AD)
\\ \hspace*{ 0.2 in} Example of program exhibiting problem, please.
2. Undetected unassigned string as function result (IMN)
\\ \hspace*{ 0.2 in} This context was overlooked: to be dealt with in later release
3. TIME \& DATE not pre-declared (NEWS)
\\ \hspace*{ 0.2 in} These functions are not regarded as sufficiently universal
\\ \hspace*{ 0.2 in} in definition to be, in effect, part of the language.
4. 'Out-of-order' reports (RWT)
\\ \hspace*{ 0.2 in} The compiler does not report (hard or soft) static (eg \%own)
\\ \hspace*{ 0.2 in} declarations in among instructions. It does report dynamic
\\ \hspace*{ 0.2 in} declarations which appear after instructions in the same block,
\\ \hspace*{ 0.2 in} since these are, would you believe, implemented as dynamic
\\ \hspace*{ 0.2 in} declarations. If the report is soft ('?'), the effect is benign;
\\ \hspace*{ 0.2 in} if hard ('*'), it won't work, and you must re-order.
5. 'Too complex' reports for string expressions (SM)
\\ \hspace*{ 0.2 in} There is a weakness in the compiler's treatment of temporary
\\ \hspace*{ 0.2 in} string variables which can lead to a register embarrassment.
\\ \hspace*{ 0.2 in} In earlier versions, this might pass unreported; in the current
\\ \hspace*{ 0.2 in} version, a report is made even for a remote possibility.
\\ \hspace*{ 0.2 in} The source of the problem will be cleared up in a later release.
6. Problem 'strung out' (IMN)
\\ \hspace*{ 0.2 in} This was caused by an error regrettably introduced in V2.2f;
\\ \hspace*{ 0.2 in} a correction has been applied to V2.2f (as released).
7. 'Faulty operands' (AD)
\\ \hspace*{ 0.2 in} Although RWT notes that he was unable to reproduce, it is worth
\\ \hspace*{ 0.2 in} alerting users to the likely meaning of such a report, viz that
\\ \hspace*{ 0.2 in} the size of the \%own/\%external data in a module exceeds 32k.
8. \%integer\%array(1)\%name not accepted (GMC)
\\ \hspace*{ 0.2 in} The Vax-compatible form of \%array\%name declaration is regarded
\\ \hspace*{ 0.2 in} as equivalent to a conformant-array declaration with anonymous
\\ \hspace*{ 0.2 in} lower and upper bounds. As such, the restriction noted for
\\ \hspace*{ 0.2 in} conformant-arrays applies, viz they may only be used as procedure
\\ \hspace*{ 0.2 in} parameters, not as ordinary variables. Apologies that the Help
\\ \hspace*{ 0.2 in} information does no make clear.
9. String resolution with long strings (JHB)
\\ \hspace*{ 0.2 in} The problem lies in the implementation of resolution in the system
\\ \hspace*{ 0.2 in} library (FMACS maintainer please note: unsigned for string lengths)
10.\%on \%event .... \%start .... \%else (GDMR)
\\ \hspace*{ 0.2 in} Murder of language deemed less harmful than GOTO?
\\ \hspace*{ 0.2 in} Not part of IMP as described in IMP77 (P.S.Robertson).
11.Event 0 reports (NWB)
\\ \hspace*{ 0.2 in} The Help information needs to be updated (and why no line number?)
:

\subsection{I \hspace{ 0.7 in} Bug Fix: \hspace{ 0.3 in} Pascal Compiler \hspace{ 0.9 in} 2F 20/02/85 22.02}

Pascal Compiler
1. Pascal enumerated type (NWB)
2. Pascal sets (NWB)
\\ \hspace*{ 0.2 in} Both problems related to the treatment of a sub-range of an
\\ \hspace*{ 0.2 in} enumerated type. This is corrected in V2.2e.

\subsection{GDMR \hspace{ 0.5 in} Bug Report: ...(1)... \hspace{ 1.3 in} 34 21/02/85 09.49}

...(1)...
Surely ... \%array \%name is just a shorthand way of writing \%array (1) \%name,
so either should be equally acceptable anywhere.

\subsection{NEWS\_S \hspace{ 0.3 in} Bug Report: Imp Compiler \hspace{ 1.1 in} 2C 21/02/85 11.08}

Imp Compiler
\%begin
\\ \hspace*{ 0.2 in} \%constant \%string CS = "---"
\\ \hspace*{ 0.2 in} \%own \%string (255) OS = CS
\\ \hspace*{ 1.8 in} $\hat{ }${} Not Literal

\%end

1) Why is the \%const without a length not flagged as Nonstandard?
\\ \hspace*{ 0.2 in} (This begs the question "What does nonstandard mean?")
2) Why must OWNS have literals?

\subsection{ End of Outstanding bugs list}


\section{Bugs presumed fixed}
These are now in file "OLDBUGS"

\section{Bugs waiting on a long-term fix}
\subsection{GMC \hspace{ 0.2 in} Suggestion \hspace{ 2.6 in} 30/10/84 16.29 *}

print could be more friendly and allow list of files.
* Replied "Wait for PAM2" JHB

\subsection{DJR \hspace{ 0.2 in} Bug Report \hspace{ 2.6 in} 16/11/84 09.28 RWT}

Why should I get an Event 0 3 13 etc. when I log in? All my login.com
file does is some installs and a setup.

I just got an Event 3 3 19 trying the bug command before this attempt!
* Acked JHB 20/11. Probably o/of dict space. Palliative on way

\subsection{DJR \hspace{ 0.2 in} Bug Report \hspace{ 2.6 in} 16/11/84 17.24 RWT}


this dashed IMP compiler keeps on using too much heap space!
Is this the heap dispose wrong or do I just need more store?
* Acked - YES - more store. Palliative on the way. JHB 20/11



\section{Suggestions}
\subsection{GMC \hspace{ 0.2 in} Suggestion \hspace{ 2.6 in} 26/10/84 15.09 JHB}

rename *.par/*\_par*
Param error *.par* \hspace{ 0.7 in} - more sophistication necessary here
JGH agrees

\subsection{NWB \hspace{ 0.2 in} Suggestion \hspace{ 2.6 in} 05/11/84 11.38 RWT}

Us VLSI hackers types suffer from the problem that we use lots and
lots of libraries, such as edwin, ilap etc., which tend to clog up
the external symbol table. (e.g. I don't think that there is enough room
to "setup" both ilap and edwin, plus all of my modules).
I personally tend to use a modular style of programming (a la ADA modules)
with lots of 200-300 line modules, all with a few external routines which
provide an interface to the module.

Apart from the problem of symbol table size, there is also the problem
of a relatively long wait for the linking of modules everytime a program
is run. While such a delay is inevitable during program development, it is
annoying for programs which are in a stable state.

My suggestion is to implement a "link" command which performs the linking
of modules into a single executable lump of code, but then dumps this code
into a file rather than executing it immediately. Perhaps this "link"
command might also take a list of libraries which are to be used as
a parameter (and/or have a default search list of libraries), which
would alleviate the cluttered external symbol table problem.

The linked file outlined above could be executed immediately after being
loaded into memory.

Neil Bergmann

\subsection{GMC \hspace{ 0.2 in} Suggestion \hspace{ 2.6 in} 07/11/84 11.56 RWT}

I think I have mentioned to several people that a set verify (c.f. VMS)
type command would be nice for debugging command files.
This is just to put the suggestion on record.

GDMR: Hasn't this been done?

The help information for IMP does not (as far as I can see) give an
exact meaning for -NODIAG i.e. what does it turn off (I guess -LINE ?).

\subsection{GMC \hspace{ 0.2 in} Suggestion \hspace{ 2.6 in} 12/11/84 11.24 JHB}

More suggestions for things like find, users etc.
Perhaps the data structure for storing room attributes should allow
arbitrary long lists (perhaps using good old linked lists) therefore
allowing "find gmc \hspace{ 0.2 in} =$>$ George McCaskill (GMC) is in his room" instead
of Frank, George and Richard's room. A more powerful underlying representation
would also facilitate more complex command combinations.

I assume that users, find etc. are going through some kind of metamorphosis-
no doubt they were stiff following system changes and the departure of
last years worthy CS4 hackers - may I just make a plea that the new fu
functionality is kept in the spirit of the original hacks ? (Just ask any of
the old guard for indoctrination)


\subsection{RMM \hspace{ 0.2 in} Suggestion \hspace{ 2.6 in} 16/11/84 14.12 JHB}

Why doesn't the delete command print out what files it deletes.

For those who are paranoid about wasted ASCII codes there could be
a Delete-Log option with -NoLog being the default.


\subsection{AD \hspace{ 0.2 in} Suggestion \hspace{ 2.6 in} 16/11/84 21.13 DAK}


\hspace*{ 0.2 in} Hey, I've just found something.
 When I type in "find Robot", I get the message: "* is in John Butler's room".
 Is this a set up job? If so, can we all join in? WPC isn't the same
 on the APMs as on VAX, but at least on VAX respectable people had almost
 litanic titles (e.g. anyone with syspriv). The present JB title seems
 the reverse (decent person with indecent address).

 Does anyone mind if we personalise WHOIS?


\subsection{RMM \hspace{ 0.2 in} Bug Report \hspace{ 2.6 in} 08/11/84 13.47 HMD/?}

DOC:LG1

This program has a number of bugs in it:

1) It still doesn't take a file name parameter.
2) The cursor keys are STILL, after 6 months of complaint, back to front!
3) It obviously has not been modified in-line with the recent system "upgrades"
\\ \hspace*{ 0.2 in} and dies norribly when given a file which does not exist.
4) The only way to leave it is to type Ctrl-Y where Ctrl-Z would be
\\ \hspace*{ 0.2 in} much better.
5) It does not test to see if there is a framestore attached to the machine.
* Suggestions noted -- HMD

\subsection{RMM \hspace{ 0.2 in} Bug Report IMP \hspace{ 2.1 in} 14/11/84 12.58 JGH/HMD}

Imp Compiler Bug:

\%begin
\\ \hspace*{ 0.2 in} \%string (12) A, B, C, D

\hspace*{ 0.2 in} A = "aA"
\\ \hspace*{ 0.2 in} B = "bB"
\\ \hspace*{ 0.2 in} C = "cC"
\\ \hspace*{ 0.2 in} D = "dD"
\\ \hspace*{ 0.2 in} \%if A . B = C . D \%start
* Too Complex!
\\ \hspace*{ 0.4 in} Print String ("Wrong!")
\\ \hspace*{ 0.2 in} \%else
\\ \hspace*{ 0.4 in} Print String ("OK")
\\ \hspace*{ 0.2 in} \%finish
\\ \hspace*{ 0.2 in} New Line
\%end

* Not bug; the statement reported is too complex -- HMD

\subsection{RMM \hspace{ 0.2 in} Bug Report \hspace{ 2.6 in} 19/11/84 17.42 JGH/HMD}

The following "Imp" feature is regretable. Why is

\hspace*{ 0.4 in} \%integer A = B
? Non-standard n

but....

 EUCSD IMP Compiler for M68000. APM Version 2.2d

\hspace*{ 0.2 in} Z compiled on 19/11/84 at 17.40

\hspace*{ 0.3 in} 1 \%integer \%function Z (\%integer A)
\\ \hspace*{ 0.3 in} 2 \hspace{ 0.3 in} Write (A, 0)
\\ \hspace*{ 0.3 in} 3 \hspace{ 0.3 in} New Line
\\ \hspace*{ 0.3 in} 4 \hspace{ 0.3 in} \%result = A + 5
\\ \hspace*{ 0.3 in} 5 \%end
\\ \hspace*{ 0.3 in} 6
\\ \hspace*{ 0.3 in} 7 \%begin
\\ \hspace*{ 0.3 in} 8 \hspace{ 0.3 in} \%integer Q
\\ \hspace*{ 0.3 in} 9
\\ \hspace*{ 0.2 in} 10 \hspace{ 0.3 in} Q = Z (5)
\\ \hspace*{ 0.2 in} 11 \hspace{ 0.3 in} Z (Q, 5)
* 11 Not reference \hspace{ 0.2 in} Z (Q, |5)

\hspace*{ 0.2 in} 12 \hspace{ 0.3 in} Z (5, Q)
**************************************************
* Surely this should AT LEAST say ? Non-standard *
**************************************************
\\ \hspace*{ 0.2 in} 13 \hspace{ 0.3 in} Z (5)
* 13 Too few args \hspace{ 0.3 in} Z (5|)
\\ \hspace*{ 0.2 in} 14 \%end
Z: 2 faults reported

* Internal facility which might be better hidden -- HMD

\subsection{RMM \hspace{ 0.2 in} Bug Report \hspace{ 2.6 in} 20/11/84 11.08 JGH/HMD}

Some more "Imp" compiler bugs:

 EUCSD IMP Compiler for M68000. APM Version 2.2d

\hspace*{ 0.2 in} Z compiled on 20/11/84 at 11.08

\hspace*{ 0.3 in} 1 \%integer \%function Z (\%integer A)
\\ \hspace*{ 0.3 in} 2 \hspace{ 0.3 in} Write (A, 0)
\\ \hspace*{ 0.3 in} 3 \hspace{ 0.3 in} New Line
\\ \hspace*{ 0.3 in} 4 \hspace{ 0.3 in} \%result = A + 5
\\ \hspace*{ 0.3 in} 5 \%end
\\ \hspace*{ 0.3 in} 6
\\ \hspace*{ 0.3 in} 7 \%routine X (\%integer \%name A)
\\ \hspace*{ 0.3 in} 8 \hspace{ 0.3 in} A = 5
\\ \hspace*{ 0.3 in} 9 \%end
\\ \hspace*{ 0.2 in} 10
\\ \hspace*{ 0.2 in} 11 \%begin
\\ \hspace*{ 0.2 in} 12 \hspace{ 0.3 in} \%integer Q, R
\\ \hspace*{ 0.2 in} 13
\\ \hspace*{ 0.2 in} 14 \hspace{ 0.3 in} Q = Z (5)
\\ \hspace*{ 0.2 in} 15 \hspace{ 0.3 in} Z (5, Q)
\\ \hspace*{ 0.2 in} 16
\\ \hspace*{ 0.2 in} 17 \hspace{ 0.3 in} Q = X
* 17 Too few args \hspace{ 0.3 in} Q = X|
\\ \hspace*{ 0.2 in} 18 \hspace{ 0.3 in} Q = X (Q)
* 18 Wrong class \hspace{ 0.3 in} Q = X (|Q)
\\ \hspace*{ 0.2 in} 19
\\ \hspace*{ 0.2 in} 20 \hspace{ 0.3 in} X = 5
* 20 Too few args \hspace{ 0.3 in} X |= 5
\\ \hspace*{ 0.2 in} 21 \hspace{ 0.3 in} X (Q) = 5
* 21 Faulty form \hspace{ 0.3 in} X (Q) |= 5
\\ \hspace*{ 0.2 in} 22
\\ \hspace*{ 0.2 in} 23 \hspace{ 0.3 in} Z = 5
* 23 Too few args \hspace{ 0.3 in} Z |= 5
\\ \hspace*{ 0.2 in} 24 \hspace{ 0.3 in} Z (Q) = 5
* 24 Too few args \hspace{ 0.3 in} Z (Q|) = 5
\\ \hspace*{ 0.2 in} 25 \hspace{ 0.3 in} Z (Q, Q) = 5
* 25 Faulty form \hspace{ 0.3 in} Z (Q, Q) |= 5
\\ \hspace*{ 0.2 in} 26
\\ \hspace*{ 0.2 in} 27 \hspace{ 0.3 in} Q = Read
\\ \hspace*{ 0.2 in} 28 \hspace{ 0.3 in} Q = Read Symbol
\\ \hspace*{ 0.2 in} 29
\\ \hspace*{ 0.2 in} 30 \hspace{ 0.3 in} Q = Read (R)
* 30 Too many args \hspace{ 0.2 in} Q = Read |(R)
\\ \hspace*{ 0.2 in} 31 \hspace{ 0.3 in} Q = Read Symbol (R)
* 31 Too many args \hspace{ 0.2 in} Q = Read Symbol |(R)
\\ \hspace*{ 0.2 in} 32 \%end
Z: 9 faults reported

* Same as above -- HMD

\subsection{RWT \hspace{ 0.2 in} Bug Report \hspace{ 2.6 in} 20/11/84 11.22 JGH/HMD}

imp-novol
a(i) = a(i)+a(i) \hspace{ 0.3 in} where a is an array and i an autoindexing function
 x \hspace{ 0.5 in} y \hspace{ 0.3 in} z
Dubious though this statement might be, it can surely not mean what it
does, namely, call I to evaluate the address of x, then call it again to
pick up Y, (having pushed \#X), then pop \#X, ignore it, and store the
result in Y.
Surprisingly enough, when compiled -vol, it gets it right.
Surely it should call I either three times or once (depending on the
stateof -vol), but not twice.

* -NOVOL means "my functions are not volatile"; effect of untruthfulness
 is not defined; what do you mean "surprisingly enough"? -- HMD

\subsection{RMM \hspace{ 0.5 in} Bug Report Rename \hspace{ 1.7 in} 20/11/84 17.32 JHB}

rename occam*/occ* does not work. Wildcards please !!!!
(this is a severe lack of functionality)

\subsection{RWT \hspace{ 0.5 in} Suggestion Compilers \hspace{ 1.5 in} 22/11/84 11.29 JGH/HMD/FDC}

How about an option -noclr for the compilers? This would force them
to abstain from using the CLR instruction and make it MOVE zero instead.
This need not cost much in terms of code size, as D4 is mostly zero
anyway and the compiler could remember whether it needs to do a SUB.L D4,D4
before a MOVE D4,xxx. Confound Motorola for making a hash of their microcode
and causing the CLR instruction to do a read-before-write, and design
practise both here and for bought-in stuff has meant that different registers
are involved for reading/writing even though they share the same address.
The fault lies with Motorola, but WE have to circumvent it.

* Attribute \%writeonly provides preferable solution -- HMD

\subsection{RMM \hspace{ 0.5 in} Bug Report \hspace{ 2.3 in} 27/11/84 11.20}


 EUCSD IMP Compiler for M68000. APM Version 2.2d

\hspace*{ 0.2 in} BUG compiled on 27/11/84 at 11.18

\hspace*{ 0.3 in} 1 \%begin
\\ \hspace*{ 0.3 in} 2
\\ \hspace*{ 0.3 in} 3 \hspace{ 0.3 in} \%constant \%string (10) \%array A (0 : 2) =
\\ \hspace*{ 0.3 in} 4 \hspace{ 0.5 in} "Zero",
\\ \hspace*{ 0.3 in} 5+ \hspace{ 0.5 in} "One"
? \hspace{ 0.2 in} 5+ 1 missing value(s) for a

* As this is a \%constant array it should be a Fault

\hspace*{ 0.3 in} 6
\\ \hspace*{ 0.3 in} 7 \hspace{ 0.3 in} \%constant \%string (10) \%array B (0 : 2) =
\\ \hspace*{ 0.3 in} 8 \hspace{ 0.5 in} "Zero",
\\ \hspace*{ 0.3 in} 9+ \hspace{ 0.5 in} "One",
\\ \hspace*{ 0.2 in} 10+ \hspace{ 0.5 in} "Two",
\\ \hspace*{ 0.2 in} 11+ \hspace{ 0.5 in} "Three"
* 11+ 1 extra value(s) for b
\\ \hspace*{ 0.2 in} 12
\\ \hspace*{ 0.2 in} 13 \hspace{ 0.3 in} \%constant \%string (2) \%array C (0 : 2) =
\\ \hspace*{ 0.2 in} 14 \hspace{ 0.5 in} "AB",
\\ \hspace*{ 0.2 in} 15+ \hspace{ 0.5 in} "CDE"
? 15+ Out of range \hspace{ 0.3 in} |"CDE"

* Surely this should be a Fault
* Also, what about the missing element?

\hspace*{ 0.2 in} 16 \%end
BUG: 1 fault reported

* The choice of warning versus error report in the above cases was
 carefully considered and is well motivated. In the final case, the
 "Out of range" warning takes precedence over the "missing element"
 warning. -- HMD

\subsection{RWT \hspace{ 0.2 in} Suggestion \hspace{ 2.6 in} 20/11/84 11.32 JHB}

How about a way of including files in the text of a suggestion or bug
report. Sugegsted syntax: if a line begins with '@' treat the rest
as a filename. This would still let you report bugs relating to @-
declarations, provided the @ does not start the line. Or you might
let @@ mean @.


\section{Bug Fixes}
\subsection{FMACS \hspace{ 0.4 in} Bug Fix \hspace{ 0.3 in} Bug fix reporting \hspace{ 1.1 in} 26/11/84 22.26}

Bug fix reporting
* OK - -f in as an option

\subsection{RWT \hspace{ 0.5 in} Bug Fix \hspace{ 0.3 in} pascal library \hspace{ 1.3 in} 27/11/84 14.28}

pascal library
It should now be possible to have multiple input and output files open
at the same time.

\subsection{RWT \hspace{ 0.5 in} Bug Fix \hspace{ 0.3 in} pascal library \hspace{ 1.3 in} 27/11/84 14.35}

pascal library
(NWB's line-number problem)
This was due to the pascal library having been compiled with diagnostics
enabled - now fixed.
But there is still a compiler bug (feature?) in that the compiler
assumes (I don't think it should) that the WRITE it calls does not
modify the stored line number. So the diagnostic code it generates
for line 7 is INCREMENT LINENUMBER (assuming it was 6) rather than
MOVE 7 INTO LINENUMBER.
* \%system routines are assumed not to modify D5 -- HMD

\subsection{RWT \hspace{ 0.5 in} Bug Fix \hspace{ 0.3 in} open append \hspace{ 1.5 in} 06/12/84 17.11}

open append
now fixed

\subsection{RWT \hspace{ 0.5 in} Bug Fix: \hspace{ 0.3 in} quota problem \hspace{ 1.1 in} 1E 12/12/84 13.34}

quota problem
It appears AD's quotas were running close to being exceeded and I've
increased them.
I do recall that there is a bug n the filestore's error reporting,
where if the error report contains a directory name and not a filename,
some random filename, not necessarily one's own, is appended to the
directory name.

\subsection{GDMR \hspace{ 0.5 in} Bug Fix: \hspace{ 2.2 in} 34 12/12/84 14.01}

AD: I have just lost the greater part of a large file because
AD: while it was being written to the file store, there was a NACK
AD: and so the back end of the file got lost. The editor (IE) caught the
AD: NOACK, but when I closed the edit for the second time, it did not
AD: do anything about writing the file out.

Unanswerable without a trace, but probably due to the '!' version of the
file existing from the first attempt to write it out.
[If you're using IE you could always use the journaliser to recover
your edit from the original file.]

AD: Why can't I get at the temporary files? What is being done about the
AD: problem?

Presumably this is referring to the '!' version of the file. It isn't a
problem, it's what the filestore is \%supposed to do. If you have both
FRED! and FRED and you attempt to open FRED as input you get the non-'!'
version. If you really want the improperly-closed version you rename the
'!' off the end. Of course, if it's still open then you still won't be
able to get at it as that would result in a conflict of access, but you
can easily UClose the transaction by logging off and on again (remember
to rename the '!' off first!)

AD: When using IE, I'm logged on as AD, but attached to AD.4. It won't let
AD: me write back files to AD nor AD.4 (it says no quota). I have plenty of
AD: quota. What causes this?

If it says "no quota" it means "no quota" -- see someone about getting more.

AD: When I type "T pub:ad.mss/draft.mss" I get the message
AD: "No quota for AD.4:DRAFT.MSS". I already have a file called
AD: DRAFT.MSS in AD.4, of the same length as the one in PUB. Why
AD: can't it overwrite it?

Because you're not "overwriting" it, you're creating a new version of it.
When you close it the old one will be deleted and the new one renamed.

AD: \hspace{ 0.2 in} I have just cleared out a whole pile of files and the thing is
AD: still giving me "No quota for AD.4:DRAFT.MSS" messages. Why does
AD: it not say "No quota for AD.4" if that is what it means.
AD: \hspace{ 0.3 in} Has someone changed the naming conventions?

The filestore is reporting the name of the file involved. It says that
you have no quota for that particular file. You might still have
enough quota for a smaller one, so it would be misleading to refer to
the directory in general.

RWT: I do recall that there is a bug n the filestore's error reporting,
RWT: where if the error report contains a directory name and not a filename,
RWT: some random filename, not necessarily one's own, is appended to the
RWT: directory name.

This bug was fixed some time ago, and in any case wasn't connected with
quotas. The full filename is set explicitly each time the error is
reported.


\subsection{GDMR \hspace{ 0.5 in} Bug Fix: \hspace{ 0.3 in} PS to AD \hspace{ 1.4 in} 34 12/12/84 14.06}

PS to AD
The filestore doesn't keep multiple versions because the definition doesn't
say anything about them and the directory structure (identical to that of
the original 1976 Interdata filestore) doesn't make any provision for them.
See Dewar et al. "The Filestore" October 1977, 2nd revision August 1983.

\subsection{RWT \hspace{ 0.5 in} Bug Fix: \hspace{ 0.3 in} imp compilers \hspace{ 1.1 in} 1E 19/12/84 12.22}

imp compilers
Tried it with functions: they are OK.

\subsection{HMD \hspace{ 0.5 in} Bug Fix: \hspace{ 0.3 in} IMP predicates \hspace{ 1.0 in} 2F 19/12/84 19.40}

IMP predicates
Simple test programs work correctly, so the universal failure reported by
RWT is not substantiated. Example of afflicted program please.
:

\subsection{HMD \hspace{ 0.5 in} Bug Fix: \hspace{ 0.3 in} IMP inaccessible \%else \hspace{ 0.5 in} 2F 19/12/84 19.45}

IMP inaccessible \%else
As RWT observes, there is something redundant in these examples, though
it may not be obvious at first sight what it is. In my programming style,
the appearance of this warning in such cases would indicate a mistake
somewhere earlier, which is the purpose of such reports.
The checks on accessibility require to be fairly rigorous for some
purposes, and it is awkward to make them less so for others.
If, on balance, it is thought important not to have this report in these
cases (important = worth increasing compiler size), so be it.

\subsection{HMD \hspace{ 0.5 in} Bug Fix: \hspace{ 0.3 in} IMP \%const\%string (RMM) \hspace{ 0.4 in} 2F 19/12/84 21.00}

IMP \%const\%string (RMM)
The form cited should have been faulted, but was wrongly accepted because
of a relaxation which permits SCALAR \%const \%strings to be declared
without length. Corrected in V2.2e.

\subsection{FMACS \hspace{ 0.4 in} Bug Fix: \hspace{ 0.3 in} inserting files into Bug r.. 33 14/01/85 22.32}

inserting files into Bug reports
This is a file inserted using '@'. New BUG facility.
:

\subsection{RWT \hspace{ 0.5 in} Bug Fix: \hspace{ 0.3 in} ... replaces ... \hspace{ 0.9 in} 1E 15/01/85 10.56}

... replaces ...
Agreed, the report that is made when command symbol definitions are
replaced is more annoying than helpful. It was just mimicry of Vax's
"previous logical name assigment replaced", but these aren't logical
names anyway, and Vax says nothing when you change command symbols.
I have taken it out altogether for now, rather than attempting to make
it conditional on some bizarre condition, such as being logged on.

\subsection{RWT \hspace{ 0.5 in} Bug Fix: \hspace{ 0.3 in} AD's directory access \hspace{ 0.5 in} 1E 17/01/85 15.34}

AD's directory access
There has been no such change as the one AD implies.
The rules are, and have been since introduction of the new filestores,
as follows:
 You are allowed owner-access (as specified by the first character of
 the protection attribute) if either the file is in your log-on directory,
 or if the currently quoted password is the same as that associated with
 the directory in which the file is.
 When you log on, the currently quoted password is the one you have used
 to log on.
 It follows that if you quote a different password, you lose owner-access
 to files in directories with the same password as your log-on password.
 To restore such access, simply re-quote your own password.
The new filestores introduced this feature of there only being one
active password. The old (Interdata) filestore I think had two, the first
being the log-on password and the second the currently quoted one. You
were allowed access when either of them matched that of the target directory.
Or was it the other way round? Each directory has two passwords associated
with it, one to allow log-ons, the other to allow owner-like access.
You were allowed access if either you logged on to the target directory
or the target directory's second password matched your currently quoted one.
Or was it different yet again?

\subsection{GDMR \hspace{ 0.5 in} Bug Fix: \hspace{ 0.3 in} Access to filestore direct.. 34 17/01/85 16.01}

Access to filestore directories
As RWT says, the rules for filestore directory access have not changed
recently; indeed they have not changed since the new filestores were
first implemented (except as regards logging on and null passwords -- not
relevant to this discussion). The rules, which are defined in "The Filestore"
in the section entitled "Security and permissions", are as follows:

 Associated with each logged-on user are the logon directory (the directory
 the user logged on to); and quoted password. A user has Owner authority
 with respect to any directory iff
\\ \hspace*{ 0.3 in} (i) \hspace{ 0.2 in} it is the user's logon directory; or
\\ \hspace*{ 0.3 in} (ii) the user's quoted password matches the directory's password.
\\ \hspace*{ 0.7 in} (Note that a null directory password is matched by anything,
\\ \hspace*{ 0.7 in} except at logon).
 Otherwise the user has Public authority.

 Owner authority implies the ability to alter a file's attributes and
 to modify the directory (including creating and deleting files).
 Public authority is restricted to accessing already-existing files
 according to their (second) access field.

 Users never lose Owner authority with respect to their logon
 directory; however quoting a new password results in loss of Owner
 authority with respect to those directories which the previously-
 quoted password gave authority to.

This scheme is the one which the new filestores have always implemented.
It is also the one which the Interdata filestore has implemented for the
past five years or so. In the distant past the Interdata filestore had
two passwords associated with the directory -- a "logon" password and a
"directory" password. The logon password gave full Owner authority and
allowed a user to log on. The directory password provided a means of
granting more access to a more restricted group than the whole world
but still reserving Owner authority. Thus, one could have Full access
to Owner, Read access to quoters of the directory password, and No access
to everyone else. However, since (almost) nobody made use of this facility
it was dropped in the Isys-based rewrite of (around) 1979/80.


PS I'm surprised AD didn't come across this non-bug before, since the
BUG program used to quote VIEW's password and then unquote it (by quoting
null again).

\subsection{AD \hspace{ 0.6 in} Bug Fix \hspace{ 2.3 in} 19 13/12/84 15.18}

Found a bug-fix

\hspace*{ 0.2 in} I dug around and found the code for DRAW in G\_ED
\\ \hspace*{ 0.2 in} The values for A4 size in DRAWEXT are wrong.
\\ \hspace*{ 0.2 in} I have changed them in AD:DRAWEXT. I'm still working
\\ \hspace*{ 0.2 in} on fixes for the other bugs.

\hspace*{ 0.2 in} Cheers,
\\ \hspace*{ 0.4 in} Alex

\subsection{End of Bug Fixes}


\vspace{.75in} view:Bugs printed on 09/02/89 at 17.19

\newpage
\tableofcontents
\end{document}
