GCC for Windows NT / Dec Alpha?

Somehow I never noticed this until making what seemed like a pointless GCC config.

You can apparently build a GCC like this:

sh configure –host=i386-winnt35 –target=alpha-winnt35

And you can get a cross compiler.

The real question is, does it work?  I don’t know I don’t have a cross assembler, linker or a target machine.

 


D:\proj\gcc-3.0.4\gcc>xgcc -v
Using builtin specs.
Configured with: : (reconfigured) : (reconfigured) : (reconfigured)
Thread model: single
gcc version 3.0.4

D:\proj\gcc-3.0.4\gcc>xgcc -v -S hi.c
Using builtin specs.
Configured with: : (reconfigured) : (reconfigured) : (reconfigured)
Thread model: single
gcc version 3.0.4
cc1 -lang-c -v -iprefix ../lib/gcc-lib/alpha-winnt35/3.0.4/ -D__GNUC__=3 -D__GNUC_MINOR__=0 -D__GNUC_PATCHLEVEL__=4 -DWIN32 -D_WIN32 -DWINNT -D__STDC__=0 -DALMOST_STDC -D_M_ALPHA -D_ALPHA_ -D_LONGLONG -D__unaligned= -D__stdcall= -D__WIN32__ -D_WIN32 -D__WINNT__ -D__STDC__=0 -D__ALMOST_STDC__ -D_M_ALPHA -D_ALPHA_ -D_LONGLONG -D__unaligned= -D__stdcall= -D__WIN32 -D__WINNT -D__ALMOST_STDC -Asystem=winnt -D__NO_INLINE__ -D__STDC_HOSTED__=1 -D__LANGUAGE_C__ -D__LANGUAGE_C -DLANGUAGE_C -Acpu=alpha -Amachine=alpha -D__alpha -D__alpha__ -D__alpha_ev4__ -Acpu=ev4 hi.c -quiet -dumpbase hi.c -version -o hi.s
GNU CPP version 3.0.4 (cpplib)
GNU C version 3.0.4 (alpha-winnt35)
compiled by GNU C version 5.1.0.
ignoring nonexistent directory “../lib/gcc-lib/alpha-winnt35/3.0.4/include”
ignoring nonexistent directory “../lib/gcc-lib/alpha-winnt35/3.0.4/../../../../alpha-winnt35/sys-include”
ignoring nonexistent directory “../lib/gcc-lib/alpha-winnt35/3.0.4/../../../../alpha-winnt35/include”
ignoring nonexistent directory “NONE/include”
ignoring nonexistent directory “D:/pcem/building/MinGW/msys/1.0/local/lib/gcc-lib/alpha-winnt35/3.0.4/include”
ignoring nonexistent directory “D:/pcem/building/MinGW/msys/1.0/local/lib/gcc-lib/alpha-winnt35/3.0.4/../../../../alpha-winnt35/sys-include”
ignoring nonexistent directory “D:/pcem/building/MinGW/msys/1.0/local/lib/gcc-lib/alpha-winnt35/3.0.4/../../../../alpha-winnt35/include”
#include “…” search starts here:
End of search list.
: warning: “__STDC__” redefined
: warning: this is the location of the previous definition
: warning: “__STDC__” redefined
: warning: this is the location of the previous definition
hi.c: In function `main’:
hi.c:3: warning: return type of `main’ is not `int’

This is what the output looks like, which looks nothing like targeting the i386 so I guess so?


.set noreorder
.set volatile
.set noat
.globl __fltused
.file 1 "hi.c"
.rdata
.quad 0
$LC0:
.ascii "Hello from GCC %s\12\0"
$LC1:
.ascii "3.0.4\0"
.text
.align 2
.globl main
.ent main
main:
.frame $15,0,$26,0
.mask 0x4008000,0
lda $30,-16($30)
stq $26,0($30)
stq $15,8($30)
mov $30,$15
.prologue 0
jsr $26,__main
lda $1,$LC0
addl $1,$31,$2
lda $1,$LC1
addl $1,$31,$1
mov $2,$16
mov $1,$17
jsr $26,printf
mov $15,$30
ldq $26,0($30)
ldq $15,8($30)
lda $30,16($30)
ret $31,($26),1
.end main

Torbjörn Granlund’s Excellent resource on running free OS’s on Qemu

Ever get tired of x86 on x86?  yeah me too.

How to solve that problem?

Simple, grab QEMU, and jump off into all those cool RISC processors of the 1990’s that were going to save us all from the WINTEL hegemony!

Lots of instructions, samples, images, and hints here:

https://gmplib.org/~tege/qemu.html

It’s really more comprehensive than I’ve sat down to do, so yeah it’s awesome!

Supported platforms include:

mips32,mips64,sparc32,sparc64,ppc32,ppc64,arm32,arm64,s390x,alpha

Alpha Linux on Qemu

I got sent a quick heads up about a post on firstwork systems, where the author details the steps needed to install, and boot up the installer, and then get the rest of it running.

Very cool stuff!

I pulled down debian-5010-alpha-netinst.iso, and extracted /boot/vmlinuz & /boot/initrd.gz .. Decompressed vmlinuz, and booted away!  For anyone who want’s it, my minimal install is here.  All things considered, it works well!

$ ./qemu-system-alpha -hda alpha.disk -kernel vmlinux -append ‘console=ttyS0’ -initrd initrd.gz -L pc-bios/ -nographic -net nic -net user -drive file=debian-5010-alpha-netinst.iso,if=ide,media=cdrom
PCI: 00:00:0 class 0300 id 1013:00b8
PCI: region 0: 10000000
PCI: region 1: 12000000
PCI: 00:01:0 class 0200 id 8086:100e
PCI: region 0: 12020000
PCI: region 1: 0000c000
PCI: 00:02:0 class 0101 id 1095:0646
PCI: region 0: 0000c040
PCI: region 1: 0000c048
PCI: region 3: 0000c04c
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 2.6.26-2-alpha-generic (Debian 2.6.26-29) ([email protected]) (gcc version 4.1.3 20080704 (prerelease) (Debian 4.1.2-25)) #1 Sun Mar 4 21:08:03 UTC 2012
[ 0.000000] Booting GENERIC on Tsunami variation Clipper using machine vector Clipper from SRM
[ 0.000000] Major Options: MAGIC_SYSRQ
[ 0.000000] Command line: console=ttyS0
[ 0.000000] memcluster 0, usage 1, start 0, end 11
[ 0.000000] memcluster 1, usage 0, start 11, end 16384
[ 0.000000] freeing pages 11:2048
[ 0.000000] freeing pages 2987:16384
[ 0.000000] reserving pages 2987:2988
[ 0.000000] Initial ramdisk at: 0xfffffc0007b28000 (5076756 bytes)
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16272
[ 0.000000] Kernel command line: console=ttyS0
[ 0.000000] PID hash table entries: 512 (order: 9, 4096 bytes)
[ 0.000000] HWRPB cycle frequency bogus, and unable to estimate a proper value!
[ 0.000000] Using epoch = 2000
[ 0.000000] Turning on RTC interrupts.
[4194001.858529] Console: colour VGA+ 80×25
[4194001.860482] console [ttyS0] enabled
[4194001.865365] Dentry cache hash table entries: 16384 (order: 4, 131072 bytes)
[4194001.865365] Inode-cache hash table entries: 8192 (order: 3, 65536 bytes)
[4194001.871224] Memory: 117120k/131072k available (2162k kernel code, 13728k reserved, 3314k data, 304k init)
[4194001.899544] Security Framework initialized
[4194001.900521] Capability LSM initialized
[4194001.900521] Mount-cache hash table entries: 512
[4194001.905404] Initializing cgroup subsys ns
[4194001.907357] Initializing cgroup subsys cpuacct
[4194001.907357] Initializing cgroup subsys devices
[4194001.918099] net_namespace: 1208 bytes
[4194001.920052] NET: Registered protocol family 16
[4194001.926888] EISA bus registered
[4194001.928841] pci: enabling save/restore of SRM state
[4194001.939583] Linux Plug and Play Support v0.97 (c) Adam Belay
[4194001.953255] NET: Registered protocol family 2
[4194001.964974] IP route cache hash table entries: 1024 (order: 0, 8192 bytes)
[4194001.967904] TCP established hash table entries: 4096 (order: 3, 65536 bytes)
[4194001.967904] TCP bind hash table entries: 4096 (order: 2, 32768 bytes)
[4194001.968880] TCP: Hash tables configured (established 4096 bind 4096)
[4194001.968880] TCP reno registered
[4194001.972787] NET: Registered protocol family 1
[4194001.975716] checking if image is initramfs… it is
[4194003.320442] Freeing initrd memory: 4957k freed
[4194003.323372] VFS: Disk quotas dquot_6.5.1
[4194003.323372] Dquot-cache hash table entries: 1024 (order 0, 8192 bytes)
[4194003.325325] msgmni has been set to 238
[4194003.327278] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
[4194003.327278] io scheduler noop registered
[4194003.327278] io scheduler anticipatory registered
[4194003.329231] io scheduler deadline registered
[4194003.329231] io scheduler cfq registered (default)
[4194003.330208] isapnp: Scanning for PnP cards…
[4194003.750129] isapnp: No Plug & Play device found
[4194003.767708] Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
[4194003.769661] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[4194003.782356] brd: module loaded
[4194003.784309] serio: i8042 KBD port at 0x60,0x64 irq 1
[4194003.784309] serio: i8042 AUX port at 0x60,0x64 irq 12
[4194003.787239] mice: PS/2 mouse device common for all mice
[4194003.792122] TCP cubic registered
[4194003.792122] NET: Registered protocol family 17
[4194003.793098] registered taskstats version 1
[4194003.793098] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
[4194003.795051] Freeing unused kernel memory: 304k freed
[4194003.889778] input: AT Translated Set 2 keyboard as /class/input/input0
[4194011.195438] Uniform Multi-Platform E-IDE driver
[4194011.195438] ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
[4194011.204227] CMD646: IDE controller (0x1095:0x0646 rev 0x07) at PCI slot 0000:00:02.0
[4194011.204227] CMD646: UltraDMA capable
[4194011.205204] CMD646: 100% native mode on irq 28
[4194011.205204] CMD646: IDE port disabled
[4194011.206180] PCI: Setting latency timer of device 0000:00:02.0 to 64
[4194011.206180] ide0: BM-DMA at 0x8040-0x8047
[4194011.596805] hda: QEMU HARDDISK, ATA DISK drive
[4194012.325320] hdb: QEMU DVD-ROM, ATAPI CD/DVD-ROM drive
[4194012.378055] hda: UDMA/33 mode selected
[4194012.378055] hdb: UDMA/33 mode selected
[4194012.379031] ide0 at 0x8050-0x8057,0x8062 on irq 28
[4194012.554812] hda: max request size: 512KiB
[4194012.556766] hda: 4194304 sectors (2147 MB) w/256KiB Cache, CHS=4161/255/63
[4194012.558719] hda: cache flushes supported
[4194012.559695] hda: unknown partition table
[4194012.663211] hdb: ATAPI 4X DVD-ROM drive, 512kB Cache
[4194012.665164] Uniform CD-ROM driver Revision: 3.20
Starting system log daemon: syslogd, klogd.

 

Qemu starts to add more Dec Alpha support.

From the mailing list:

Since virtio devices intentionally access memory directly, we
are not actually dependant on the iommu patches in order to 
make progress.  Merely fixing the PCI interrupt setup was 
enough to get the virtio-pci interface working.

We now make it quite a long way into the Debian Lenny install.

At some random point during the install, it hangs.  I assume
we're somehow losing an interrupt or something, but it's very
hard to tell.  The cpu is still running, servicing timer
interrupts, but the userland process is stuck.

I hope to get the vga console working next.  That should allow
me multiple vt's, which should allow me to poke at the install
process from within the VM.

And..

$ ./alpha-softmmu/qemu-system-alpha -nographic -kernel 
../../linux/linux-git/vmlinux -append 'console=ttyS0 rdinit=/bin/sh' -initrd 
../alpha-test/initrd.gz
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 2.6.39-rc4+ ([email protected]) (gcc version 4.7.0 
20110408 (experimental) (GCC) ) #18 SMP Thu Apr 28 10:11:46 PDT 2011
[    0.000000] Booting GENERIC on Tsunami variation Clipper using machine 
vector Clipper from MILO
[    0.000000] Major Options: SMP MAGIC_SYSRQ 
[    0.000000] Command line: console=ttyS0 rdinit=/bin/sh
[    0.000000] memcluster 0, usage 1, start        0, end        8
[    0.000000] memcluster 1, usage 0, start        8, end    16384
[    0.000000] freeing pages 8:2048
[    0.000000] freeing pages 3813:16384
[    0.000000] reserving pages 3813:3814
[    0.000000] Initial ramdisk at: 0xfffffc0007b26000 (5079886 bytes)
[    0.000000] SMP: 1 CPUs probed -- cpu_present_map = 1
[    0.000000] PERCPU: Embedded 6 pages/cpu @fffffc0000126000 s12608 r8192 
d28352 u49152
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total 
pages: 16272
[    0.000000] Kernel command line: console=ttyS0 rdinit=/bin/sh
[    0.000000] PID hash table entries: 512 (order: -1, 4096 bytes)
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 131072 bytes)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 65536 bytes)
[    0.000000] allocated 524288 bytes of page_cgroup
[    0.000000] please try 'cgroup_disable=memory' option if you don't want 
memory cgroups
[    0.000000] Memory: 110088k/131072k available (3489k kernel code, 20920k 
reserved, 8487k data, 384k init)
[    0.000000] SLUB: Genslabs=16, HWalign=64, Order=0-3, MinObjects=0, CPUs=1, 
Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000]  RCU-based detection of stalled CPUs is disabled.
[    0.000000] NR_IRQS:32784
[    0.000000] Console: colour dummy device 80x25
[    0.000000] console [ttyS0] enabled
[    0.000000] Calibrating delay loop... 10138.40 BogoMIPS (lpj=158408704)
[    1.343750] pid_max: default: 32768 minimum: 301
[    1.343750] Mount-cache hash table entries: 512
[    1.343750] Initializing cgroup subsys ns
[    1.343750] ns_cgroup deprecated: consider using the 'clone_children' flag 
without the ns_cgroup.
[    1.343750] Initializing cgroup subsys cpuacct
[    1.343750] Initializing cgroup subsys memory
[    1.343750] Initializing cgroup subsys devices
[    1.343750] Initializing cgroup subsys freezer
[    1.343750] Initializing cgroup subsys blkio
[    1.343750] SMP mode deactivated.
[    1.343750] Performance events: Supported CPU type!
[    1.343750] Brought up 1 CPUs
[    1.343750] SMP: Total of 1 processors activated (10138.56 BogoMIPS).
[    1.343750] devtmpfs: initialized
[    1.343750] atomic64 test passed
[    1.343750] NET: Registered protocol family 16
[    1.375000] EISA bus registered
[    1.375000] bio: create slab <bio-0> at 0
[    1.375000] vgaarb: loaded
[    1.375000] Switching to clocksource qemu
[    1.375000] NET: Registered protocol family 2
[    1.375000] IP route cache hash table entries: 1024 (order: 0, 8192 bytes)
[    1.375000] IPv4 FIB: Using LC-trie version 0.409
[    1.375000] TCP established hash table entries: 4096 (order: 3, 65536 bytes)
[    1.375000] TCP bind hash table entries: 4096 (order: 3, 65536 bytes)
[    1.375000] TCP: Hash tables configured (established 4096 bind 4096)
[    1.375000] TCP reno registered
[    1.375000] UDP hash table entries: 256 (order: 0, 8192 bytes)
[    1.375000] UDP-Lite hash table entries: 256 (order: 0, 8192 bytes)
[    1.375000] NET: Registered protocol family 1
[    1.375000] Trying to unpack rootfs image as initramfs...
[    1.406250] Switched to NOHz mode on CPU #0
[    1.625000] Freeing initrd memory: 4960k freed
[    1.656250] srm_env_init: This Alpha system doesn't know about SRM (or 
you've booted SRM->MILO->Linux, which gets misdetected)...
[    1.687500] VFS: Disk quotas dquot_6.5.2
[    1.687500] Dquot-cache hash table entries: 1024 (order 0, 8192 bytes)
[    1.687500] ROMFS MTD (C) 2007 Red Hat, Inc.
[    1.687500] msgmni has been set to 224
[    1.687500] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 
253)
[    1.687500] io scheduler noop registered
[    1.687500] io scheduler deadline registered
[    1.687500] io scheduler cfq registered (default)
[    1.687500] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    2.093750] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    2.125000] brd: module loaded
[    2.125000] mousedev: PS/2 mouse device common for all mice
[    2.125000] TCP cubic registered
[    2.125000] NET: Registered protocol family 17
[    2.156250] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
[    2.156250] Freeing unused kernel memory: 384k freed

BusyBox v1.10.2 (Debian 1:1.10.2-2) built-in shell (ash)
Enter 'help' for a list of built-in commands.

/bin/sh: can't access tty; job control turned off
~ # mount -t proc none /proc
~ # cat /proc/cpuinfo
cpu                     : Alpha
cpu model               : EV67
cpu variation           : 0
cpu revision            : 0
cpu serial number       : 
system type             : Tsunami
system variation        : Clipper
system revision         : 0
system serial number    : MILO QEMU
cycle frequency [Hz]    : 250000000 
timer frequency [Hz]    : 1024.00
page size [bytes]       : 8192
phys. address bits      : 40
max. addr. space #      : 255
BogoMIPS                : 10138.40
kernel unaligned acc    : 0 (pc=0,va=0)
user unaligned acc      : 0 (pc=0,va=0)
platform string         : N/A
cpus detected           : 0
cpus active             : 1
cpu active mask         : 0000000000000001
L1 Icache               : 64K, 2-way, 64b line
L1 Dcache               : 64K, 2-way, 64b line
L2 cache                : n/a
L3 cache                : n/a
~ # QEMU: Terminated

It’s incredible isn’t it?  I know the VMS crowd will be thrilled, even the legacy Digital UNIX folk.. Heck maybe one day it’ll even run Windows NT!

There is a new Dec Alpha emulator out there…

EmuVM‘s AlphaVM!

Currently it emulates an AlphaServer DS20, with up to 4 disks, a CD-ROM, two serial consoles and pcap’d ethernet.

AlphaVM

The UI is pretty self explanatory, however I was unable to boot either OpenBSD, nor Digital UNIX 4.0b (no wonder they support .e onward…) on it. I suspect it’s mainly targeted to VMS users as the Itanium is inching towards a silent death.

The requirements for this version are;

  • The emulator runs on x86 or x64 architecture. The appropriate build is chosen by the product installer. We recommend an x64 system. On x86 the performance is lower. Some features are supported only in x64 (for instance SMP trial ). These limitations arise due to the fact that Alpha AXP is itself a 64-bit system.

 

  • On x64 host system the CPU must support the instruction CMPXCHG16B. Note, that this instruction is not supported by older AMD CPUs, which are rare.

 

 

  • There must be at least two cores. There must be at least 3 cores for the SMP trial.
  • We recommend at least 2GB memory.
  • OS is Windows7, or later. The product may run on Vista x64, but it has not been tested there yet. The product will definitely not run on earlier versions.
  • The installer installs .NET framework client profile. The .NET framework is not included in the installation package of AlphaVM, but rather the downloader is included. You can download and install the framework prior to the product installation. The framework is used for the launcher GUI implementation.
  • The ‘tested’ installed OS’s are…
  • OpenVMS (starting from 7.1-2)
  • DigitalUNIX/Tru64 (starting from 4.0e)
  • Linux (tested with Debian Linux 5.0.6)

 

OpenWatcom for the DEC Alpha

Someone had contacted me about running some Fortran programs on the DEC Alpha with Windows NT. Now I know that DEC had released some compilers for the Alpha, the Digital Visual Fortran thing which some people still sell for around $600 USD.

OUCH.

But luckily a friend mentioned that I should look at the source code for Open Watcom.

So, I figure for the hell of it, I’ll show how to build a Dec Alpha cross compiler for both C & Fortran. First I’m using Open Watcom 1.8, the current ‘release’ version. You are on your own for older or newer versions.

First install Open Watcom 1.8, with whatever your host is (I’m running on win64, so I’m using the win32 install), and set the target for 32bit NT. We will need the headers so this is the easiest way to ensure your Watcom can make NT exes.

Next you are going to need the file owaxp0401.zip. This is a pre-compiled version of the compiler & libraries for the DEC Alpha. All we need from this is the libaxp directory, which you can just unzip to your Watcom directory.

Now we’ll need to copy some files to satisfy the build process.

C:\WATCOM\binnt>copy wcl386.exe bwcl386.exe
C:\WATCOM\binnt>copy wlib.exe bwlib.exe
C:\WATCOM\binnt>copy wrc.exe bwrc.exe

Ok, now with that out of the way, run c:\watcom\owsetenv.bat to setup your environment, and now let’s extract the source to 1.8. I’m just going to use c:\temp as a place to put it. Also you will have to edit the setvars.bat file, and change the following:

set OWROOT=c:\temp\ow18src
set WATCOM=c:\watcom
set DOC_BUILD=0

Now I suppose you could save this into a batch file, and kick that off, and this will build the needed libraries, then the C compiler.

cd c:\temp\OW18src\bld\builder\nt386
wmake
cd c:\temp\ow18src\bld\dwarf\dw\osi386\
wmake
cd c:\temp\OW18src\bld\yacc\nt386
wmake
copy yacc.exe \WATCOM\binnt\byacc.exe
cd c:\temp\OW18src\bld\re2c\nt386
wmake
copy re2c.exe \WATCOM\binnt\re2c.exe
cd c:\temp\ow18src\bld\cg\risc\axp\nt386\
wmake
cd c:\temp\ow18src\bld\sdk\rc\wres\flat386\mf_r
wmake
cd c:\temp\ow18src\bld\cfloat\osi386
wmake
cd c:\temp\ow18src\bld\as\alpha\inline\osi386\
wmake
cd c:\temp\ow18src\bld\owl\osi386\
wmake

Now this will build the cross compiler…

cd c:\temp\OW18src\bld\cc\wcl\nt386.axp
wmake
copy wclaxp.exe \WATCOM\binnt
cd c:\temp\OW18src\bld\cc\nt386.axp
wmake
copy wccaxpc.exe \WATCOM\binnt\wccaxp.exe
copy wccdaxpc.dll \WATCOM\binnt\wccdaxp.dll
cd c:\temp\OW18src\bld\as\alpha\nt386
wmake
copy wasaxp.exe \WATCOM\binnt

Now for the Fortran 77 compiler. Please note that the default flags include -we which will cause the compiler to error if there is a warning. And as luck would have it, one function doesn’t declare a prototype… So you can either remove the -we flat from the mif file, or fix the c file… The choice is yours.

cd c:\temp\OW18src\bld\f77\wfl\nt386.axp
wmake
copy wflaxp.exe \WATCOM\binnt
cd c:\temp\OW18src\bld\f77\wfc\nt386.axp
wmake
copy wfcaxp.exe \WATCOM\binnt
attrib c:\temp\OW18src\bld\f77\f77lib\flags.mif -r
notepad c:\temp\OW18src\bld\f77\f77lib\flags.mif

Do a search and replace on -we and replace it with nothing…

cd c:\temp\OW18src\bld\f77\f77lib\winnt.axp\_s
wmake
copy flib.lib \WATCOM\libaxp

With all that out of the way, let’s build some test programs…

Let’s start with hello.f for the Fortran compiler.

C234567
program hello
print *, ‘Hello!’
end

c:\temp>wflaxp hello.f
Open Watcom F77 Alpha AXP Compile and Link Utility Version 1.8
Portions Copyright (c) 1990-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
wfcaxp hello.f
Open Watcom FORTRAN 77 Alpha AXP Optimizing Compiler Version 1.8
Portions Copyright (c) 1984-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
hello.f: 3 statements, 40 bytes, 1 extensions, 0 warnings, 0 errors

Open Watcom Linker Version 1.8
Portions Copyright (c) 1985-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
loading object files
searching libraries
creating a Windows NT(AXP) character-mode executable

c:\temp>

Watcom Fortran cross on Dec Alpha

Watcom Fortran cross on Dec Alpha

Ok, now that’s enough for now…! Later I’ll show how to build these compilers so they’ll run on the Dec Alpha.

Neko x64!

 

For no real reason today I remmeber that there used to be this cool program back in the Windows 3.0 days called Neko. I was trying to explain it to my girlfriend about this cat that would chase your mouse!  Click the picture above to play with neko in jdosbox.

I recal that Neko even made it to OS/2 as it was more interesting then the mouse trails alternative from Microsoft.

 

At any rate, I was wondering if there ever was a 32bit version of Neko… And much to my amazement I found there was a Neko95, and a Neko98! And they even ran on my x64 version of Windows… So after googling around, I found the source code to Neko 98!

So I did the next best thing, which is download the source, fix a single casting ‘error’ in some square root function and I got it building under Visual C++ 2008. Then I figured, what the hell, added a target for the x64, and built… a 64 bit version of neko!

 

You can download the x64 binaries, and the source directory that I used here.

You may need some VC runtimes if your system is an old x64… At this moment it can be found here:

Or by searching for Microsoft Visual C++ 2008 SP1 Redistributable Package (x64)

Oh well at any rate, it’s cool to see Neko still kicking!

PS When I get back I’ll have to see about an i386, MIPS, Dec Alpha and Itanium build… wink wink!

—edit

Neko98’s source code has been rescued, all saved here.

—years later

I just received this screen shot of Neko x64 rocking it on Windows 8 (Desktop mode)

Neko on Windows 8

Just got a DEC AlphaServer 800…

All 100lb of it. It is HEAVY.

Anyways, long story short, after hauling it around Financial District, and Times Square, it’s now safe and installing Windows NT 4.0 Terminal Server.

AlphaServer 800

AlphaServer 800

It’s got a single 5/500 CPU, along with 256MB of ram, and 2x 36gig disks. I’ll have to check to see if I have any ram that’ll fit it. I may very well turn it into a public access thing too….. But we’ll see.

DEC Legacy Event

Well I just found out about a “DEC Legacy Event” being held in the UK. Sadly I already booked tickets to the UK *this* month not the correct one… But then who knows… 😉

From the site:

The DEC Legacy Event that will take place on the 17th & 18th April 2010 in Windermere, UK.

The purpose of the event is to bring together people with an interest in the company Digital Equipment Corporation and their legacy of hardware, software and ethos. There will be both vintage DEC computer hardware and software and more recent HP hardware and software being demonstrated at the event.

I suppose this would have been the place to get some win terminals going, and have multi-user access into a VMS system running on SIMH on an Alpha…

Oh well…

At any rate they promise to upload video from the aftermath, and they’ve got up some interesting promo pics