1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
|
Begin V2.8 CONVEX/IRAF BETA port, 6-8 August 1989.
See also notes from October 1987 ALPHA port (appended).
-------------------------------------------------------
Summary:
Installation of V2.8 was straightforward except for a nasty bug
involving the host routine BCOPY. I originally tried to use the
C code versions of AMOVC etc. (installed in AS). This caused the
system environment list to become mangled, due to BCOPY modifying
the data it was copying during a copy used to shift by one char
to align the buffer in a REALLOC of the environment buffer. The
speculation is that the BCOPY uses vector instructions, and if the
input and output arrays are aligned to within less than one vector
register length data can be corrupted due to the whole vector
segment being copied at once.
Aside from that, things came up fine. There were several compiler
crashes with core dumps, but all but one of these were a result of
problems with the IRAF code or system configuration. In general
the compiler seems to be in much better shape than during the
alpha port.
The final system is configured as follows: the HSI is generic (no
floating point, can run on any Convex), and two architectures are
supported, IEEE and NATIVE, corresponding to the two floating point
architecture options available for the Convex.
Detailed notes on the modifications made to port V2.8 BSD/IRAF follow.
unix/as.convex/
unix/as.convex/zsvjmp.s
unix/bin.convex/
Added AS and BIN directories to the HSI for the Convex. Installed
the zsvjmp.s written for the alpha port.
unix/boot/bootlib/osputenv.c
Commented out the call to putenv() - there is no comparable facility
on the Convex.
unix/boot/spp/mkxc.sh
Fixed a bug - the call to CC was not referencing $HSI_CF.
unix/boot/spp/rpp/rppfor/declco.f
Replaced by a version that enables IMPLICIT NONE, which is how
undeclared variable detection is handled by the Convex compiler.
unix/boot/spp/rpp/ratlibf/mkpkg.sh
unix/boot/spp/rpp/rppfor/mkpkg.sh
Replaced the F77 by FC, the Convex fortran compiler. There is no
F77 on the Convex.
unix/boot/spp/xc.c
1. Replaced all F77 references by FC.
2. The link library list for the Convex is
-lF77 -lI77 -lD77 -lm -lmathC1
3. Modified the list of directories searched by sys() (for XPP and
RPP) to include /local/bin, /usr/local/bin, and /iraf/local/bin.
Merely another hack until the problem is fixed properly.
4. Modified the list of directories searched by run() (for FC) to
include /usr/convex, which is where FC resides on the Convex
(another hack until the problem is properly resolved).
unix/boot/spp/xpp/xppcode.c
This HSI file turned out to have code in it (for converting HMS to
decimal floating) that used floating point. Replaced by an
equivalent routine which uses only integer calculations.
unix/hlib/iraf.h
The bitwise intrinsics for the Convex are IAND, IOR, IEOR, and NOT.
unix/hlib/i1mach.f
unix/hlib/r1mach.f
unix/hlib/d1mach.f
Replaced by the Sun versions.
unix/hlib/mkpkg.sf.CX
noao/lib/mkpkg.sf.CX
Added special file lists for the Convex. At present there is only
one special file, images$geometry/geofit.x, which has to be compiled
at O1 due to a fortran compiler bug.
unix/hlib/irafuser.csh
unix/hlib/libc/iraf.h
unix/hlib/libc/libc.h
unix/hlib/mkiraf.csh
unix/hlib/mkpkg.inc
unix/hlib/motd
Routine changes for the Convex. Added a #define CONVEX to <iraf.h>.
MACH is set to `convex' in the irafuser.csh. The HSI flags are
setenv HSI_CF "-O -fx"
setenv HSI_FF "-sa -fx -O0 -na -nv -nw"
setenv HSI_XF "-q -/sa -/fx -/O0 -/na -/nv -/nw -z"
The MKPKG flags for the IEEE architecture are
$set FLOAT = "fi"
$set XFLAGS = "-c -q -/sa -/fi -/O2 -/na -/nw -/nv"
$set XSFLAGS = "-c -q -/sa -/fi -/O1 -/na -/nw -/nv"
$set XVFLAGS = "-c -q -/sa -/fi -/O2 -/na -/nw"
$set LFLAGS = "-z -/fi"
and similarly for the NATIVE (Convex floating point) architecture.
unix/os/getproc.c
This file, part of the tape drive allocation code, would not compile
on the Convex (it reads the kernel process table which is fairly
system dependent). Commented out the offending code (a status value
is returned indicating that the user does not have any processes)
until the tape drive allocation problem can be resolved for the
Convex.
unix/os/irafpath.c
Modified to look for files in unix/bin.convex if the machine type
is convex.
unix/os/zxwhen.c
Added FPE hardware signal codes from <signal.h>.
mkpkg
noao/mkpkg
bin.ieee/
bin.native/
noao/bin.ieee/
noao/bin.native/
noao/lib/mkpkg.inc
unix/hlib/cl.csh
unix/hlib/mkpkg.inc
Configured the system for two architectures, IEEE and NATIVE,
corresponding to the two floating point options on the Convex.
The HSI is compiled generic (no floating point dependencies),
hence is runnable on either type of Convex.
dev/pix.imh
dev/pix.pix
dev/vdm.gki
Installed versions for the Convex (IEEE architecture only!).
sys/gio/nspp/sysint/encd.f
Fixed a bug in this file - this was fixed once before but evidently
never got merged back into the master system. The problem is the
statement
if (len (char (ns + ichar ('0'))) .eq. 2) then
which is evidently unnecessary and which makes an illegal or at
least very questionable use of CHAR.
sys/gio/ncarutil/sysint/ishift.x
sys/gio/nspp/sysint/ishift.x
Commented out the code for IAND and IOR, since these are intrinsic
functions in Convex/Fortran.
unix/hlib/install
Changed the machine type from `vax' to `convex'.
----------
Basic BETA port completed. (8/8)
----------
August 8-10: on site at the VLA testing IRAF on the VLA system, which
includes two Convexes (plus some Suns and VAXes).
dev/devices
Configured for the Convex. (8/11)
unix/hlib/login.cl
Added EDT and EMACS as foreign tasks to the default USER package.
(8/11)
unix/as/zsvjmp.s
An IMAGES task failed during testing while trying to create a type
DOUBLE image, indicating that the MEM common was not double word
aligned. I was able to fix this by setting the symbol __mem_ (the
mem common) to the absolute value 0, which not only double word
aligns the common, it aligns it to any size, and simplifies
debugging by arranging for SPP pointers to directly index process
virtual memory. This technique (setting __mem_ to zero) did not
work for the Convex back when the alpha port was attempted. (8/12)
[Postscript] Setting mem to zero evidently was the cause of a
number of mysterious program crashes that occurred once the system
was relinked with the new zsvjmp.o with mem=0. The problems went
away when things were relinked with the mem=0 commented out,
indicating that the mem=0 was the problem. There was not time
to check this out, but my guess is that since on the Convex program
memory begins at 0x80000000, setting mem=0 causes very large pointer
offsets which can overflow to negative integer values. I changed
zsvjmp.s to set mem=0x80000000 and the problems seem to have gone
away, and we still get double word alignment. (8/13)
unix/hlib/ic.csh +
unix/hlib/install
unix/hlib/login.cl
unix/boot/spp/xc.c
Had problems getting IMFORT programs to link.
1. The solution was to modify XC (FC) to link against the Convex
library -lU77 when linking a host program. This can only be done
when XC is called with the -h flag as the library will result in
a multiply defined loader error message if searched when linking
an SPP program.
2. The iraf foreign task FC now calls a new cshell script ic.csh,
which calls XC after first determining the floating point option
switch required to link IMFORT programs so that they are consistent
with IRAFARCH. For example, if Convex/IRAF is running the IEEE
binaries, XC will be called with -/fi.
3. Modified the install script to make a link for ic.csh. The new
task name stands for imfort-compile, and is not called FC because
that is the Convex Fortran compiler. Possibly FC should not be
used as the command name in the USER package either, but I did
not want to change that as it is shown as FC in all the user
documentation. (8/12)
unix/hlib/cl.csh
Modified to define IRAFARCH if not already defined. (8/12)
unix/os/alloc.c
Modified to support the Convex tape allocation facilities. Uses
the Convex TPALLOC and TPDEALLOC utilities to perform the actual
tape allocate/deallocate. As a result, alloc.e no longer needs
to have suid-root, although the install script will still install
it that way. Verified that local as well as remote network
allocation works. (8/12)
pkg/images/imarith/imcmode.gx
IMCOMBINE would fail when presented with a section containing pixels
that all had the same value. The program would go into an infinite
loop in the code at the end of imcmode.gx. Modified to avoid a
floating point equality test, and to add some limit checking in
a couple of places to avoid infinite looping. (8/13)
unix/hlib/mkfloat.csh
1. While using "mkpkg [ieee|generic]" etc. on teh Convex, the message
"usage: rm -[rif]" would sometimes appear. This turned out to be due
to calling rm with a null file list when restoring from generic.
The fix was to to delete the file list file in the same command
which deletes the listed files, ensuring that there is at least
one file in the command.
2. Also reorganized the code somewhat to use only one RMBIN rather
than two, which speeds it up by a factor of two. (8/14)
unix/os/zmaloc.c
IMFORT programs would die on a memory allocator error: this was
traced to the fact that the custom memory allocator used for
BSD4.3/IRAF was still present in Convex/IRAF (which was built from
the BSD version). Commented out the memory debug code in zmaloc.c
and all was well. We will leave the applications relinked with the
custom memory allocator in for now, since they have already been
tested and did not show any problems. (8/14)
----------
ALPHA port notes follow.
CONVEX/IRAF Port. D.Tody, beginning 26 October 1987.
Using machine in Greenbelt, MD, as follows:
-----------------------------------------------------------------------------
*********************************************************
WELCOME TO C1EAST
*********************************************************
SYSTEM MANAGERS: BRIAN CHRISTIANSON & DALE LANCASTER
C1EAST IS A CONVEX C1-XP MINI-SUPERCOMPUTER.
- 128 MEGABYTES OF PHYSICAL MEMORY
- 1.5 GIGABYTES OF DISK SPACE
- 40 MFLOPS PEAK PERFORMANCE
C1EAST IS CONFIGURED WITH:
- 25.6 MEGABYTES OF DISK BUFFER CACHE
- 64 USER SYSTEM
- ETHERNET
- IMAGEN LASER PRINTER
- 4.2 BSD UNIX, CONVEX RELEASE 6.1.1
- VECTORIZING FORTRAN VERSION 3.0
- VECTORIZING C VERSION Beta 2.0 (vc 1.0 is still around)
- ANSYS VERSION 4.2
-----------------------------------------------------------------------------
Snapshot of V2.6 IRAF restored to disk (/extra/iraf) by Convex. (10/26)
Logged in via modem, took a look at Convex/UNIX, configured the IRAF login.
unix/as -> unix/as.vax
unix/as/zsvjmp.s
Renamed the VAX assembler directory, and set up a new one for the
Convex. Wrote ZSVJMP/ZDOJMP for the Convex. This took a while,
and was one of the harder ones I have done, as the architecture and
the C setjmp/longmp are complex. The machine has a RISC architecture
but nonetheless is fairly complex (and fast and expensive). (11/2)
unix/os/zxwhen.c
Modified the hardware specific exception codes table for the Convex.
In the process of doing this, discovered that the old code assumed
that hardware codes were distinct, while in fact they can be
numbered similarly for different signals. Modified the ZXGMES
routine to work with hardware codes of the form SIGNAL+HWCODE rather
than the old HWCODE. (11/2)
unix/boot/spp/rpp/ratlibf/mkpkg.sh
unix/boot/spp/rpp/rppfor/mkpkg.sh
Replaced "f77" by "fc". (11/2)
unix/hlib/irafuser.csh
Added an "-sa" flag for fc (the Convex Fortran compiler). This flag
prevents static compilation of argument lists and is necessary if C
code is to be called from Fortran. (11/2)
unix/hlib/libc/spp.h
unix/hlib/libc/libc.h
unix/hlib/libc/iraf.h
Replaced the vax spp.h by the Sun version, which should be good
enough for now, and may even be correct (Convex evidently supports
IEEE floating as well as their native (Cray?) format). Modified
the Fortran COMMON external names in libc.h to add the extra
leading underscore, used by the Convex Fortran compiler to make
common external names distinct from other Forran externals.
Edited the iraf.h file for the new $iraf (= /extra/iraf). (11/2)
unix/hlib/motd
Modified logo for the Convex. (11/2)
-------------------------------------
Started up a bootstrap of the HSI. This completed without incident, except
for a great many copies of the following warning messages from FC:
Obsolete flag '-O' - flag '-no' assumed.
fc: Warning on line X of Y.f: label defined but never referenced.
Modified HSI_FF (fc flags) in hlib$irafuser.csh to "-O1 -sa -nw" and repeated
the bootstrap starting in the SPP directory. This worked, but now the
optimizer was enabled, and it helpfully produced a zillion of the following
advisory messages:
fc: Advisory on line X of Y.f: more optimization is possible if this
function call has no side effects.
Changed the flags to "-O1 -sa -nw -na" to fix this. Tested the main HSI
tasks (rmbin, rtar, wtar, mkpkg, xpp, rpp) and they all passed basic tests!.
(11/2)
unix/hlib/i1mach.f
unix/hlib/d1mach.f
unix/hlib/r1mach.f
Installed the versions for the Sun (IEEE floating etc.) for now.
This will probably need to be tweaked later. (11/3)
unix/hlib/iraf.h
Modified the name mappings for the bitwise intrinsic functions (and,
or, etc.). For the Convex they are the same as in VMS Fortran.
Set values of INDEFR and INDEFD, as below. (11/3)
unix/boot/spp/xpp/xppcode.c
Changed the Fortran mappings of the SPP "char" and "short" type
coercion functions to "int2", which is implemented on the Convex.
(11/3)
unix/boot/spp/xpp/decl.c
Convex Fortran supports IMPLICIT NONE, so I modified the code which
processes a procedure declaration to output this statement. (11/3)
unix/hlib/mach.h
Modified the values of various numeric constants. The max exponent
for real is 38, for double is 307. The INDEF values were modified
slightly. The EPSILON values were very similar to those for the Sun.
Byte swapping is no - most significant byte first. (11/3)
unix/hlib/mkpkg.inc
Set the default compiler flags as follows:
XFLAGS = "-cq -/O2 -/nw -/na -/nv"
XSFLAGS = "-cq -/O1 -/nw -/na -/sa"
XVFLAGS = "-cq -/O2"
I have added a new global flag variable XSFLAGS, to be used for the
VOS routines, i.e., for pure system code. XFLAGS is for normal
scientific applications code, which is pure SPP or SPP/Fortran code,
and which would often benefit from vectorization. System code may
call C routines (e.g., the kernel routines), and rarely involves
vector operations. Distinguishing between the two broad classes
of codes is necessary on the Convex in order to permit static
allocation of procedure argument lists in Fortran (SPP) code.
If Fortran code is to call C routines, all arguments must be pushed
on the stack, hence this optimization option cannot be used in VOS
code (flag -sa disables static allocation of argument lists).
Optimization level O2 includes vectorization, O1 provides only local
and global scalar optimization but no vectorization. The -n flags
turn off various compiler informative and warning messages, which one
normally will not want to see (except perhaps once during development).
These messages are enabled by default only for the VOPS routines.
(11/3)
iraf$mkpkg
sys/*/mkpkg
Added the line '$set XFLAGS = "$(XSFLAGS)"' to each VOS mkpkg file,
to override the default xflags with the xsflags. In the root mkpkg,
added the $set to the "syslibs" program. (11/3)
unix/boot/spp/xc.c
unix/boot/spp/mkxc.csh -> mkxc.sh
Modified XC to use "fc" rather than "f77" as the compiler; omitted
the -u flag, since this is done differently for Convex Fortran.
To the "run" code, added /usr/convex to the search path, since that
is where fc is located (a better solution would probably be to put
the path in the #define). (11/3)
local/bin/ +
local/bin/xc -> $hlib/xc.e (etc.)
Only for the purposes of the port, set up a local/bin directory for
iraf, and put it on PATH in the .login. This will work only for iraf,
but avoids having to make a request to the local system manager.
(11/3)
------------------------------------
Started up the first full sysgen. (11/3)
Summary of results of first full sysgen:
The sysgen ran to completion, but not without problems. The spool file
was 19305 lines, 7205 lines when summarized (the extra stuff was
mostly advisory information about vectorizing the VOPS routines).
There were 23 serious runtime compiler errors of the form:
fc: >>>>> C O M P I L E R E R R O R <<<<<
>>>>> See your system manager for help <<<<<
Error : Compiler error on line X of Y.c.
These were distributed as follows:
#times Error Message
16 Error : Compiler error on line 396 of misc.c.
6 Error : Compiler error on line 155 of allocSReg.c.
1 Error : Compiler error on line 584 of callintr.c.
Note that these are errors in the Fortran compiler, not errors in
the Fortran source. The compiler routine which generated the error
is given in the message. These errors prevented compilation of the
affected source file.
Other errors in the sysgen were [1] fc cannot compile .c files,
hence xc will have to be modified to call cc directly, and [2] in
sys/gio/ncarutil/sysint/ishift.x, functions IAND and IOR are defined
which appear to call themselves recursively, when the macros AND and
OR are expanded. These are dealt with further below. (11/4)
local/bugs/
local/bugs/spool.full
local/bugs/spool.bugs
Created a BUGS directory for the Convex and stored therein copies of
all the Fortran sources which cause compiler time compiler failures,
plus copies of the full spooled output from the first sysgen, and an
edited digest of the same containing only the compiler error messages.
Verified that the files cannot be compiled even at optimization level 0.
All files compiled with optimization turned off EXCEPT one, the
sysint/support.f file from gio/ncarutil. (11/4)
sys/gio/ncarutil/sysint/support.f
The subroutine ENCD in this file contained a statement which would
cause the compiler to crash even with all optimization turned off.
The culprit is as follows:
if (len (char (ns + ichar ('0'))) .eq. 2) then
This is a pretty strange statement, and after staring at it for
a while I decided that it would always be false (NS can take on
values only between 4 and 6) and commented it out. Of course it
should not cause the complier to bomb, and I will report it to
Convex, but I think the code is incorrect and should be fixed. (11/4)
sys/gio/ncarutil/ishift.x
This file contains source for the functions IAND and IOR, written in
SPP and defined in terms of the SPP intrinsics AND and OR, which are
implemented as macro defines in hlib$iraf.h. On the Convex these are
defined as the Fortran intrinsics IAND and IOR, but they are declared
as external functions, hence the Fortran compiler quite correctly
flags them as recursive references and fails to compiler the file.
A simple fix is to replace the calls to AND and OR by calls to the
OSB library functions ANDI and ORI; this is inefficient, but on the
Convex the calls in the NCAR code map directly to the Fortran
intrinsics anyhow, and if this were not the case the routines should
be encoded in assembler and put on the special file list. (11/4)
unix/hlib/mkpkg.sf
Added the 22 or so files with runtime compiler failures to the special
file list for CONVEX/IRAF. Specifically:
$set noao = "iraf$noao/"
$set XCP = '& "$xc -cq -/no -/nw -/na &"'
$set XCS = '& "$xc -cq -/no -/sa -/nw -/na &"'
$special "sys$fio/": fseti.x $(XCS);
$special "math$iminterp/": msifit.x $(XCP);
$special "pkg$dataio/fits/": fits_rheader.x $(XCP)
fits_wheader.x $(XCP);
$special "pkg$images/imarith/generic/": imcmode.x $(XCP);
$special "pkg$images/filters/": t_convolve.x $(XCP);
$special "pkg$plot/": prows.x $(XCP);
$special "pkg$utilities/": t_curfit.x $(XCP);
$special "$(noao)proto/": t_bscale.x $(XCP)
t_imscale.x $(XCP);
$special "$(noao)onedspec/": t_addsets.x $(XCP)
t_bswitch.x $(XCP)
t_dispcor.x $(XCP)
t_flatfit.x $(XCP)
t_sums.x $(XCP)
t_widstape.x $(XCP);
$special "$(noao)twodspec/apextract/": excextract.x $(XCP)
excstrip.x $(XCP)
t_apnormalize.x $(XCP);
$special "$(noao)twodspec/longslit/": ilsetbins.x $(XCP);
$special "$(noao)imred/ccdred/src/generic/": imcmode.x $(XCP);
$special "$(noao)imred/dtoi/": hdtoi.x $(XCP);
(11/4)
unix/boot/spp/xc.c
Modified to sort out .c source files and compile these separately
with CC (the original XC used f77, which would accept anything). (11/4)
unix/as/zsvjmp.s
This file contains the code which attempts to set the address assigned
by the linker to the symbol __mem_ (the MEM common in Fortran) to 0.
This is not yet working on the Convex; get multiply defined symbol
errors. I have commented this out for the moment in order to proceed.
(11/4)
------------------------------------
Second attempt at a sysgen. Special files all compiled ok, but got loader
errors as noted above, hence no executables. After fixing zsvjmp.s I was
able to successfully link an executable. Tried running it, and wonder of
wonders, it actually ran and produced a prompt! The process did not quite
run correctly, but most of the iraf main stuff was evidently working if we
got that far, so this is encouraging. (11/4)
unix/hlib/mkpkg.inc
unix/hlib/mkpkg.sf
I just remembered that there are a number of VOPS routines coded in
C in the OSB directory, which can be called by any applications code.
Fortran code compiled with static argument lists enabled cannot be
call C routines directly, so until the OSB routines can be recoded
in Fortran for Convex, I have added the -sa switch for applications
code as well as VOS code. (11/4)
----------------------------
Third attempt at a sysgen. Deleted all non-HSI binaries and started up a full
sysgen. Should work this time with all the above bug fixes. (11/4)
The sysgen completed normally, and this time suceeded in producing most of
the executables. The cl runs and most basic things work ok! There are a
number of runtime problems however, which need to be checked out. Looking
over the spooled output I find four more files that caused the compiler to
crash, this time with a core dump, without even a compiler error message.
The message from FC (indicating abnormal termination of a subprocess) is
fc: System error in /usr/convex/fskel
The files causing the problem were t_imarith.x in images, and in math,
gsaccum.x, gsrejectd.x, and isresolve.x. Dale, my contact at Convex,
says that there is a major new version of the Convex Fortran compiler,
currently in beta test, and that I should try that. I will proceed a bit
further with the current binaries before starting up another full sysgen,
as these have been running 8-9 hours. (11/5)
unix/hlib/mkpkg.sf
Added the above four files to the special file list, to be compiled
with optimization level -O1 rather than -O2 (no vectorization). (11/5)
unix/hlib/mkpkg.sf
After adding the above files to the special file list and resuming
the compile of the gsurfit and surfit packages, more files requiring
special treatment were uncovered. The total is now 34. (11/5)
-----------------------------
With the math libraries now built, I was able to finish building the IMAGES
package and tried out a few things - IMSTATR was about 3.5 cpusec, IMSHIFTR
around 6+ cpusec. Interactive plotting is not yet working due to some
problem in the CL. Error recovery in the CL is not yet working due to a
problem in ZDOJMP, which has not yet been debugged. Until this is fixed,
any error will cause the CL to die. (11/5)
unix/boot/spp/xc.c
Modified to use version 4.0 of the Convex Fortran compiler. (11/5)
------------------------------------
Sysgen 4. Archived (local/oldfc.arc) and deleted all the old non-HSI binaries.
Ready to start a full sysgen with the new compiler. Will do this in such a
way that the current executables remain intact for people to play with
tomorrow. (11/5)
local/bugs.newfc +
local/bugs -> local/bugs.oldfc
Set up separate bug directories for the old and new FC. (11/5)
unix/hlib/sf +
unix/hlib/sf/main.x +
unix/hlib/mkpkg.sf
The new sysgen has thus far compiled all the system libraries without
any compile time errors, hence looks much better (sysgen still in
progress; stay tuned). Even with the new compiler, however, I am still
getting an incorrect warning message "illegal transfer out of IFERR
block" from the iraf main. This was traced to the following code in
the main:
iferr (...)
;
or
call xerpsh
...
if (.not.xerpop()) then goto NN
NN continue
Even with the optimizer turned completely off, FC is chucking out the
call to XERPOP, causing the error message noted above. Since this is
not an optimizer problem, the only way to fix it was to hack on the
source file. The hacked version is in hlib$sf, and the file has been
added to the special file list for the new-fc. This is a particularly
worrisome bug, as there may be cases such as this scattered all over
the system. (11/5)
-----------------------------
Sysgen with new FC looks pretty good. There was one fskel coredump (vectorizer
evidently) which I will check out below. (11/6)
noao/onedspec/sensfunc/mkpkg
noao/onedspec/sensfunc/sfgraphs.x -
Deleted this zero length junk file and fixed up the mkpkg. (11/6)
unix/hlib/mkpkg.sf
Added an entry for file dataio$reblock/reblock_file.x, which causes
fskel to coredump when compiled with level O2 optimization. Entered
in special file list for level O1 optimization. (11/6)
unix/as/zsvjmp.s
Finished debugging ZSVJMP/ZDOJMP (this was the cause of the CL crashing
upon logout and during error recovery). The Convex version of this
routine was easily the most complex I have thus far encountered.
The Convex architecture and instruction set is simple, no problem;
the problem here as the complexity of the longjmp() code used to
make ZDOJMP. Instead of saving and restoring the machine context,
the routine actually pops successive stack frames off the machine
stack until it gets back to the stack frame of the ZSVJMP. There
are special cases, e.g., the stack frame pushed by the OS for an
interrupt handler. Twas a mess! (11/12)
-------------------------------------------------
Resumed work on Convex port on 5 March - don't know how much time I have to
spend on this, but a little anyhow, and maybe the compiler is better.
Cleaned up the some somewhat; moved some files to a save directory,
deleted a lot of junk test files scattered about the system.
Redid the bootstrap without incident.
Deleted all binaries and started a full sysgen. As of now (5 March
5 pm) this is still in progress. The CL and x_system.e are up
and look fine.
Here is the /etc/motd for the current Convex system:
-------------------
*********************************************************
WELCOME TO C1EAST
*********************************************************
SYSTEM WINGNUTS: BRIAN CHRISTIANSON & DALE LANCASTER
C1EAST IS A CONVEX C1-XP MINI-SUPERCOMPUTER.
- 128 MEGABYTES OF PHYSICAL MEMORY
- 1.5 GIGABYTES OF DISK SPACE
- 40 MFLOPS PEAK PERFORMANCE
C1EAST IS CONFIGURED WITH:
- 12.8 MEGABYTES OF DISK BUFFER CACHE
- 64 USER SYSTEM
- ETHERNET
- IMAGEN LASER PRINTER
- 4.2 BSD UNIX, CONVEX RELEASE 6.1
- VECTORIZING FORTRAN VERSION 4.0 with In-Lining
- VECTORIZING C VERSION Beta 2.0 (vc 1.0 is still around)
- ANSYS VERSION 4.2
CONVEX COVUEshell V7.0 installed. Look in /usr/doc for
new release notices.
----------------------------------------------
Resume testing yet again, this time with a new version of the Fortran
compiler.
unix/boot/spp/xc.c
unix/hlib/mkpkg.inc
1. Added a new flag "-N" to XC. Setting this flag causes XC to try to
use the beta test Fortran compiler, which is called as
/usr/convex/newfc/fc -B/usr/convex/newfc ...
2. Added the -N flag to the flag macros in mkpkg.inc. (4/16)
unix/as/zsvjmp.s
unix/os/zdojmp.c +
unix/os/mkpkg
Replaced the nativ ZSVJMP/ZDOJMP I originally wrote for the Convex
with a much simpler version which "piggybacks" on the C setjmp/longjmp.
The old file is zsvjmp.CONVEX. (4/16)
----------------------
Deleted the main system binaries and started a new sysgen. Will use the old
HSI for now. (4/16)
The sysgen ran to completion with minor problems. One was the
appearance of the following warning message for every file, regardless
of the fact that none of our code uses any Convex Fortran preprocessor
facilities:
fpp: WARNING: Use of fpp is being phased out; please update
your program by removing uses of #define, #if, #ifdef
The second problem, more serious, what that a number of modules failed
to compile due to the IMPLICIT NONE statement being out of order; in
pointer functions, the Mem declarations were being output before the
IMPLICIT NONE (see below). (4/17)
unix/boot/spp/xpp/decl.c
unix/boot/spp/rpp/rpprat/defs
unix/boot/spp/rpp/rpprat/declco.r
unix/boot/spp/rpp/rppfor/declco.f
1. In decl.c, deleted the code previously added to generate the
implicit none statement. This is not the right place for it, as it
doesn't work for pointer functions.
2. In declco.r, added code to output theIMPLICIT NONE immediately
after a function or subroutine statement.
3. In defs, added a switch IMPNONE, which if defined, causes the
IMPLICIT NONE statements to be output.
4. Processed the fortran for declco.r and put it in rppfor/declco.f.
The defs and declco.r files were not updated on the Convex; I made
the changes on lyra since this is a generally useful mod, and only
copied the processed Fortran to the Convex. (4/17)
... incremental sysgen now in progress...
[Ran all benchmarks except [24]USER, networking, and IMLOADs. No errors.]
[4/18 SRo]
[Ran all test procedures except magtape i/o; no errors. 4/27 SRo]
hlib/mkpkg.sf
Added the following files to the special file list, to be compiled
with the old fc compiler, to avoid a fatal bug in the new 4.1 fc.
sys/imfort/clargs.x
sys/imfort/imemsg.x
sys/imfort/imokwl.x
sys/imfort/impixf.x
sys/imfort/imtypk.x
sys/gio/ncarutil/conlib/congen.f
sys/gio/ncarutil/conran.f
sys/gio/ncarutil/conrec.f
sys/gio/ncarutil/isosrf.f
sys/gio/ncarutil/threed.f
sys/gio/ncarutil/velvct.f
noao/onedspec/t_standard.x
(5/13 SRo)
[Relink sysgen to replace the missing executables in bin$ prior to having ]
[a tape cut for mailing to NOAO. (5/13 SRo) ]
|