\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}