GNAT 3.15p On Windows NT 3.51

posted Mar 27, 2014, 7:53 PM by Hyung-Hwan Chung   [ updated Mar 27, 2014, 7:54 PM ]

The installer gnatwin-3.15p.exe, when executed on Windows NT 3.51, failed with the message shown below.

Instead of making the installer working on Windows NT 3.51, I have copied over the files installed under C:\GNAT on Windows NT 4.0/2000 to the same location on Windows NT 3.51. When I executed gnatmake.exe from C:\GNAT\BIN, it was looking for msvcrt.dll which was missing on my Windows NT 3.51.

I've copied over msvcrt.dll from a Windows 2000 system to C:\GNAT\BIN of the Windows NT 3.51 system and put C:\GNAT\BIN to the system PATH and attempted to compile a small test program. It ended up with an error message shown below.

While digging through the working Windows NT 4.0 system, I realized that the installer has created some registry keys related to the installation location. I've replicated some keys looking relevant shown below.

The compiler worked like a charm after these registry keys have been added to the system.

Solaris 8 in VMware

posted Jan 8, 2012, 7:04 AM by hyunghwan chung   [ updated Jan 8, 2012, 7:17 AM ]

VMware Server 1.0.10 on Windows XP

Solaris 8 X86 Platform Edition 10/01



Openwindow not shown in session list.
Openwindow binaries all available in /usr/openwin

Opening XDMCP session from Ubuntu -
    Xnest crashes with segmentation fault after having shown initial dtsession
        Xnest alone also crashes if multiple screens are specified on the command line (Version: xnest 2:1.9.0-0ubuntu7.6)
        Xnest -geometry 1024x768 -scrns 2 -ac :5

    Xephyr loops back to the login screen
        Xephyr -screen 1024x768 -query sol8vm -ac :2
        $HOME/dt/sessionlogs - complains about Xinemara request
        /usr/dt/bin/dtwm seems to make a xinemara screen couint request.
        /usr/dt/bin/dtscreen or /usr/dt/bin/dtcalc ran with no problems.
            Xephry -screen 1024x768 -ac :2
            telnet to sol8vm
            $ DISPLAY=tpedge:2.0 /usr/dt/bin/dtcalc

    Interim solution => Xephyr without xdmcp but fake single-screen xinemara via xdmx
        sudo apt-get install xdmx
        Xdmx +xinerama -xinput local -display :2  -ac :3
        telnet to sol8vm
        $ DISPLAY=tpedge:3.0 /usr/dt/bin/dtsession

Solaris 8 X86 Platform Edition 04/01

GCC for SunOS 4.1.1

posted Mar 30, 2011, 6:07 PM by hyunghwan chung   [ updated Mar 30, 2011, 8:19 PM ]

The C compiler bundled in SunOS 4.1.1 is a pre-ANSI compiler that accepts the K&R style only. Some old GCC compilers that support SunOS 4  are still available from the GCC project site. In need of an ANSI C compiler, I chose to use one of the oldest gcc compilers available - gcc

As my SunOS runs in TME without the Ethernet support, the first issue was how I could transfer gcc source files to the emulated environment. The first idea was to load the source tar-ball as the virtual tape.

$ mkdir ${HOME}/emulators/tme-sun3/gcc2723
$ cd ${HOME}/emulators/tme-sun3/gcc2723

$ wget
$ gzip -d gcc-
$ ln -sf gcc- 01
$ cd ..

$ LTDL_LIBRARY_PATH=${HOME}/emulators/lib ${HOME}/emulators/bin/tmesh SUN3-CARRERA

After having started the emulator, I've loaded the tar-ball as a tape and powered up the machine.

tmesh> command tape0 load gcc2723/01
tmesh> command mainbus0 power up

After having logged into the emulated SunOS environment, I could view the tape contents with no problems initially.

suntme3$ mt -f /dev/nrst0 rewind
suntme3$ tar -tvf /dev/nrst0

However, I got caught in a serious problem when I tried to extract files from the tape. The problem was that a directory in the tape was extracted as a file and the files under the directory could not be extracted into the directory.

After some investigation, I've found out that it is the tar-ball format that caused the problem. To change the format, I've extracted all of the files on the host machine and recreated the tar-ball in the old V7 format.

I did the followings on the host machine.

$ cd ${HOME}/emulators/tme-sun3/gcc2723
$ gzip gcc-
$ tar -zxvf gcc-
$ tar --format=v7 -cvf gcc- gcc-
$ rm -rf gcc-
$ ln -sf gcc- 01
$ cd ..

I've reloaded the virtual tape at the tmesh prompt.

tmesh> command tape0 unload
tmesh> command tape0 load gcc2723/01

I've extracted files from the tape after having rewound it at the SunOS prompt.

suntme3$ mt -f /dev/nrst0 rewind
suntme3$ tar -xvf /dev/nrst0

The rest of the build procedure follows the standard autoconf/automake procedure and it ran very smoothly.

suntme3$ cd gcc-
suntme3$ ./configure
suntme3$ make
suntme3$ make install

After all these, I've got the compiler files installed in various subdirectories under /usr/local. See the screen-shot below for the error emitted by the stock K&R C compiler and successful compilation by GCC.

Installing SunOS 4.1.1 to Sun3 Emulated in TME 0.8 on Linux

posted Mar 19, 2011, 5:40 AM by hyunghwan chung   [ updated Mar 24, 2011, 12:43 AM ]

In need of an old SunOS 4 for reference purpose, I've manged to install it to an emulated Sun3 on Ubuntu Linux 10.10 x86_64 as I came across TME capable of emulating Motorola 68020 based Sun3 machines. Here are the steps I've taken to get it done.

Set up the directory on the host Ubuntu machine. I placed the emulator files under ${HOME}/emulators.

$ mkdir ${HOME}/emulators
$ cd ${HOME}/emulators

Get the TME source archive and extract the files.

$ wget
$ tar -zxvf tme-0.8.tar.gz
$ cd ${HOME}/emulators/tme-0.8

TME requires GTK to emulate a framebuffer, a keyboard, and a mouse. I've installed the GTK development files on my host machine.

$ sudo apt-get install libgtk2.0-dev

Create a helper script named 'gtk-config' to work around an autoconf issue in detecting the GTK development packages.

$ cat >${HOME}/emulators/tme-0.8/gtk-config <<EOF 
#! /bin/sh

module=`pkg-config --list-all | egrep '^gtk\+?-' | head -1 | sed -e 's/^\(.[-a-z0-9_\+\.]*\).*$/\1/'`
if test "x${module}" = x; then
echo "$0: no gtk under pkg-config control" 1>&2
exit 1
for option
if test "${option}" = --version; then
args="${args} ${option}"
exec pkg-config ${args} ${module}
$ chmod +x ${HOME}/emulators/tme-0.8/gtk-config

Configure the source and build the emulator. I've included the tme source directory into PATH to let configure find the gtk-config script and execute it as necessary. I've set the prefix to ${HOME}/emulators to isolate this emulator environment into a single location. I didn't have luck in building the emulator without providing --disable-shared.

$ PATH=$PATH:${HOME}/emulators/tme-0.8 ./configure --prefix=${HOME}/emulators --disable-warnings --disable-shared
$ make
$ make install

At this point, you should have the emulator files installed into respective directories under ${HOME}/emulators. Executable files are shown below.

$ ls -l ${HOME}/emulators/bin
total 3232
-rwxr-xr-x 1 hyung-hwan hyung-hwan 3269688 2011-03-24 14:46 tmesh
-rwxr-xr-x 1 hyung-hwan hyung-hwan   22120 2011-03-24 14:46 tme-sun-eeprom
-rwxr-xr-x 1 hyung-hwan hyung-hwan   11395 2011-03-24 14:46 tme-sun-idprom

Let's start creating an environment for Sun3 emulation by creating a dedicated directory.

$ mkdir ${HOME}/emulators/tme-sun3
$ cd ${HOME}/emulators/tme-sun3

Copy some sample configuration files from the default installation into the emulation directory.

$ cp ${HOME}/emulators/share/examples/tme/SUN3-CARRERA .
$ cp ${HOME}/emulators/share/examples/tme/sun3-carrera-eeprom.txt .
$ cp ${HOME}/emulators/share/examples/tme/sun-keyboards.txt .
$ cp ${HOME}/emulators/share/examples/tme/my-sun-macros.txt .

Get the ROM file to the emulation directory.

$ wget

Create IDROM and the EEPROM files. Note that you can change 11:22:33 to a different value of your choice.

$ ${HOME}/emulators/bin/tme-sun-idprom 3/150 8:0:20:11:22:33 > my-sun3-idprom.bin
$ ${HOME}/emulators/bin/tme-sun-eeprom < sun3-carrera-eeprom.txt > my-sun3-eeprom.bin

Create a disk image file to use. Change the number in seek to change the file size.

$ dd if=/dev/zero of=my-sun3-disk.img bs=1 count=1 seek=1000000000

Customize the SUN3-CARRERA file for installing SunOS 4.1.1.

# Edit Line 12 to change the memory size to 32MB.
#ram0 at obmem0 addr 0x0: tme/host/posix/memory ram 8MB
ram0 at obmem0 addr 0x0: tme/host/posix/memory ram 32MB

# Comment out Line 75 and 84 to disable the color display.

#cgthree0 at vme0 addr 0xff400000 ipl 4: tme/machine/sun3/cgtwo type sun3
#display0 at cgthree0

# Edit Line 93 to change the disk type from tme-scsi-1 to acb4000
#sd0 at scsibus0: tme/scsi/disk id 0 type tme-scsi-1
sd0 at scsibus0: tme/scsi/disk id 0 type acb4000

# Edit Line 101 to change the tape drive info by deleting the vendor and the product info.
#st0 at scsibus0: tme/scsi/tape id 4 type emulex-mt02 vendor EMULEX product "MT-02 QIC"
st0 at scsibus0: tme/scsi/tape id 4 type emulex-mt02

Get the boot tape files for SunOS 4.1.1 from and place them under ${HOME}/emulators/tme-sun3/sunos411.

$ mkdir ${HOME}/emulators/tme-sun3/sunos411
$ cd ${HOME}/emulators/tme-sun3/sunos411
$ # Take all the means to get required files from

Create symbolic links to prepare a virtual tape image.

$ uncompress *.Z
$ ln -sf tpboot.sun3 01

$ ln -sf SunOS411.sun3.Exa.xdrtoc 02
$ ln -sf munix_sun3 03
$ ln -sf munixfs_sun3 04
$ ln -sf miniroot_sun3 05
$ ln -sf sun3_proto_root.sunos_4_1_1.tar 06
$ ln -sf sun3_usr.tar 07
$ ln -sf sun3_kvm.tar 08
$ ln -sf sun3_install.tar 09
$ ln -sf sun3_networking.tar 10
$ ln -sf sun3_system_v.tar 11
$ ln -sf sun3_sys.tar 12
$ ln -sf sun3_sunview_users.tar 13
$ ln -sf sun3_sunview_demo.tar 14
$ ln -sf sun3_text.tar 15
$ ln -sf sun3_demo.tar 16
$ ln -sf sun3_openwindows_users.tar 17
$ ln -sf sun3_openwindows_demo.tar 18
$ ln -sf sun3_openwindows_fonts.tar 19
$ ln -sf sun3_user_diag.tar 20
$ ln -sf sun3_manual.tar 21
$ ln -sf sun3_tli.tar 22
$ ln -sf sun3_rfs.tar 23
$ ln -sf sun3_sunview_programmers.tar 24
$ ln -sf sun3_debugging.tar 25
$ ln -sf sun3_shlib_custom.tar 26
$ ln -sf sun3_graphics.tar 27
$ ln -sf sun3_uucp.tar 28
$ ln -sf sun3_games.tar 29
$ ln -sf sun3_versatec.tar 30
$ ln -sf sun3_security.tar 31
$ ln -sf sun3_openwindows_programmers.tar 32
$ ln -sf copyright_sun3_tape1 33

Run the emulator.

$ cd ${HOME}/emulators/tme-sun3
$ LTDL_LIBRARY_PATH=${HOME}/emulators/lib ${HOME}/emulators/bin/tmesh SUN3-CARRERA

You should have the emulated display in a GTK window while tmesh prompts for your input in your terminal. Note you can ignore multiple keyboard warnings.

Load the boot tape and power up the machine.

tmesh> command tape0 load sunos411/01 sunos411/02 sunos411/03 sunos411/04  sunos411/05  sunos411/06  sunos411/07  sunos411/08  sunos411/09  sunos411/10  sunos411/11 sunos411/12 sunos411/13 sunos411/14 sunos411/15 sunos411/16 sunos411/17 sunos411/18 sunos411/19 sunos411/20 sunos411/21 sunos411/22 sunos411/23 sunos411/24 sunos411/25 sunos411/26 sunos411/27 sunos411/28 sunos411/29 sunos411/30 sunos411/31 sunos411/32 sunos411/33
tmesh> command mainbus0 power up

The framebuffer display shows some start-up messages and waits for your input.

You can boot from the tape drive by entering b st() on the prompt. After showing some boot messages, it asks you to install SunOS mini-root.

Choose 1 to install SunOS mini-root and continue to format sd0.

Type disk at the format> prompt and enter disk geometry.

Type partition at the format> prompt and change a/b/g partitions.

Once you write label and quit the format program, it copies miniroot to /dev/rsd0b.

Choose 1 to reboot using the miniroot.

Type suninstall to install SunOS.

Choose 1 for Quick installation to save time. You are asked to choose to preserve existing disk partitions. Say yes by pressing y.

Press the Enter keys to move down to Full_install followed by the x key.

Enter y for final confirmation.

Installation procedure creates new file systems on /dev/rsd0a and /dev/rsd0b,  copies many files from the tape drive to the disk, and creates various device nodes.

Once the installation is over, it asks you to reboot the system. Enter y to reboot.

The system reboots to the disk. For the first boot, it asks you for a few things such as a host name and time zone. I've named it sun3tme and chose my region for the time zone.

I chose n for the network question as TME supports Ethernet via BPF which my host system does not support.

I entered u at the confirmation screen.

The question goes on to the supervisor password for root. You can enter a password of your choice. You can set up extra user accounts at the user account screen. I didn't set up any. The boot procedure continues to the login prompt. You can log-in to the system with root or an extra account you've created.

The system is ready for use. Enjoy SunOS 4.1.1.

1-4 of 4