GCC moved to git!

After all that flap about having moved GCC into GIT I thought it would be worth checking out, you know digging for interesting old artifacts.

I found the ‘start’ back over here on github:

Sadly the ‘initial revisions’ only contain a few files, far from the contents of the ’87 archive.

Pitty.

Not that I would envy anyone crazy enough to do such a thing, I was just hoping someone else would have done a better job than I did.

emulator-sun-2

Since I was playing with the 68000 based GCC ’87 I know it was going to be more geared to SUN workstations, certainly of the early 80’s vintage as they would be the most ‘affordable/cheap/donated’ to FSF (Or so I’d imagine).

Naturally the go to emulator is TME, however this time while searching around for the install scripts and stuff I found lisper‘s (heeltoe.com) emulator-sun-2, a greatly cut down and SUN-2 focused emulator that emphasizes ease of use.

Wait, what? SUN-2, and ease of use? Why yes, not only that, as it uses SDL 1.2 it also means it’s much easier to compile. After an hour of messing around with it, I had it running on Windows. After a few minutes I had it running on my ARM based Acer NovaGO.

At it’s core is the m68k 68010 emulation from Karl Stenerud‘s Musashi core which is a great choice for the SUN-2 as it’s a 68010 based machine. Some fun notes from web.cuzuco.com/~cuzuco/sun2/ include:

  • CPU is a Motorola 68010 running at 10MHz
  • Maximum physical memory is 4 Megabytes
  • Maximum virtual memory is 16 Megabytes
  • All I/O is via a Multibus (an Intel design)
  • Main disk is a SMD, the largest size is 380Mbyte
  • Has a SCSI adapter, but the disk is slow and small (42Mbyte)
  • Sun was just finishing NFS
  • alludes to future AT&T UNIX System VI and VII
  • Display supported dual heads and a resolution of 1152×900
  • List price as tested: $44,900
  • Sun was still private, had 400 employees and sold 1500 units

You can read about the debut of the SUN-2 in the UNIX/WORLD Magazine, VOlume 1, Number 5 dated October 1984 in archive.org. It starts on page 86.

I started to integrate sigurbjornl’s patches for networking but I think I need to work through SunOS 2.0’s weird VAX 4.2BSD arp issues (anyone have the source code to SunOS 2.0?!). I’ll probably update it with UDP or some fixed ARP thing to remove that or just let the SUN-2 talk to a VAX with 4.2BSD so they can be weird, together.

I’m also pretty sure my old Cockatrice III sort of debugged SLiRP thing broke the packed structs to let it work properly when compiled with Microsoft C, so I’ll have to break down and either try to fix that, or update and borrow the vastly updated SLiRP from SIMH.

For Windows users who want to play along the bundle is on the terribly named page “Ancient UNIX/BSD emulation on Windows” as SUN2.zip.

GCC from ’87 on the 68000

Years ago I found the ‘first’ released version of GCC, and had built it for the VAX. And things were… fun.

While digging around on bitsavers for new and interesting things, I saw some newer stuff from MIT, and stumbled into the GNU directory and rediscovered the early GNU software depot.

And I re-built the early GCC to target the 68000 which I’d imagine primarily was for the SUN target.

simple program

Using a simple program I can run it through the pre-processor, and the compiler to get the following assembly:

assembly from ’87 GCC

Then it’s a matter of running it through the cross assembler, uuencoding it, and sending it to the target.

I used the cross assembler from the AtariST cross ‘project’, to get an object file. I fired up MachTen, pasted my object file to the VM, and uudecoded the object.

And yeah, much to my surprise the object file linked fine, and I got my native EXE.

It’s not much of a cross toolkit, and honestly it’s kind of useless… but I thought it was maybe worth a bare paragraph to show the other available target available for the 1987 release of GCC.

Also on the MIT archive is TRIX, the MIT Unix work alike that almost became the GNU Kernel, until Mach stole their hearts, and basically lead them on a wild goosechase.

I haven’t bothered uploading binaries or patches or anything yet, I don’t know if people are interesting in such a fringe thing……

The Jingsha x79 redeemed itself

Back on Christmas Eve I struggled to get this board to do much of anything. When it did boot it’d bluescreen Windows with a useless ‘ IRQL NOT LESS OR EQUAL ‘ error. I took it that the board was crap, and just shelved it.

Today however I’m working on another project and I need to emulate a ‘datacentre’ deployment so I’m stuck looking for machines with RAM, and of course cores. They can be slow I don’t care, but I need to run a TONNE of VM’s. I need egress, ingress, routers, policing, domains, email, servers, various databases, some container infrastructure to provision some other apps and all kinds of crap. I’d planned on maxxing this board out to 256GB or more, but it wasn’t playing nice. And now that it’s like the end of the world out here, getting more RAM from China really isn’t going to happen.

So this time I tried something different.

I have this Dell r710 server with a bunch of memory but it’s CPU’s are frankly lacking. I took the 32GB I had reserved for the Jingsha and swapped out 64GB from the Dell to put into here. I also picked up some massive GAMEMAX GM-1650 power supply which I figured would be more than enough for the dual processor board. The PSU clearly was built for a miner, and I had to use some really lame Y cable for the CPU power. I wasn’t sure what would happen if any of it even worked. My expectations were pretty low, and the first few times the board didn’t appear to do anything at all.

Then suddenly it beeped!

Booting Windows 10 from USB

I shoved in a Windows install USB, and it actually booted this time!

I bought some more of those ALSEYE 120mm cpu radiators as they couple with socket 2011 just fine.

Probably the weakest Quadro ever. But it’s low powered compared to anything modern

Although finding an E-ATX case that isn’t some ‘bling surprise’ is kind of difficult. It’s annoying all these ‘glass window’ cases, and other nonsense. What was wrong with IBM AT BEIGE?!

The lack of a boot diagnostic LED display really hurts this board. Clearly there was something about the memory I had it doesn’t like. It ran fine in the Huananzhi dual x79 board, and it runs fine in the Dell r710.

So yeah. Now I have 3 machines with 64GB of ram, and one with 96. It’d be easier to order but here we are.

So 6 weeks later the Jingsha finally did something useful.

One thing to mention as well is that like others have mentioned while running Linux it’s not uncommon to freeze, reboot and other fun things. Meanwhile Windows is fine. What is going on here?!

I enabled NUMA thinking if something was going wrong maybe it’d be isolated to a single NUMA node, and not take down the entire machine. I’m not convinced I was right, HOWEVER I did capture this error message!

Feb 19 07:31:27 rancher kernel: [    5.820094] mce: [Hardware Error]: CPU 1: Machine Check: 0 Bank 7: cc00008000010093
Feb 19 07:31:27 rancher kernel: [ 5.821328] mce: [Hardware Error]: CPU 0: Machine Check: 0 Bank 7: cc00008000010093
Feb 19 07:31:27 rancher kernel: [ 6.812122] mce: [Hardware Error]: CPU 1: Machine Check: 0 Bank 7: cc0069c000010093

Well that’s not good. So what is more interesting, is that I entered the BIOS after hammering F2/DEL like a typical end user and found this in the memory settings:

Memory is being configured as 1333Mhz, incorrectly

As you can see the current memory speed is 1333 MHz.

However as you can see, I’m using hynix 8gb 2rx4 pc3-10600r-9-11-e2 memory sticks, which means they should be clocked down to 1066 MHz. It’s probably a bit premature to write this, but I’m 30 minutes up, which is a record running Linux on the Jingsha.

It feels like RAM is the new Lupus. it’s never Lupus, but it’s always Lupus.

Cross compiling SDL 1.2.15 for ARM Win32

I was getting this fun error:

C:\proj\ss\SDL-1.2.15\VisualC\SDL>link /dll -out:sdl.dll *.obj winmm.lib dxguid.lib gdi32.lib user32.lib advapi32.lib dxguid.lib uuid.lib dxguid.lib Version.res
Microsoft (R) Incremental Linker Version 14.24.28315.0
Copyright (C) Microsoft Corporation. All rights reserved.

Creating library sdl.lib and object sdl.exp
SDL_dx5events.obj : error LNK2001: unresolved external symbol GUID_SysMouse
SDL_dx5events.obj : error LNK2001: unresolved external symbol GUID_SysKeyboard
SDL_dx5events.obj : error LNK2019: unresolved external symbol IID_IDirectInputDevice2A referenced in function DX5_DInputInit
SDL_dx5video.obj : error LNK2001: unresolved external symbol GUID_XAxis
SDL_dx5video.obj : error LNK2001: unresolved external symbol GUID_YAxis
SDL_dx5video.obj : error LNK2001: unresolved external symbol GUID_ZAxis
SDL_dx5video.obj : error LNK2001: unresolved external symbol GUID_RxAxis
SDL_dx5video.obj : error LNK2001: unresolved external symbol GUID_RyAxis
SDL_dx5video.obj : error LNK2001: unresolved external symbol GUID_RzAxis
SDL_dx5video.obj : error LNK2001: unresolved external symbol GUID_Slider
SDL_dx5video.obj : error LNK2001: unresolved external symbol GUID_Key
SDL_dx5video.obj : error LNK2001: unresolved external symbol GUID_POV
sdl.dll : fatal error LNK1120: 12 unresolved externals

Which was NOT easy to track down. Thankfully while amputating and chasing the origin of GUID_Key, I ran across this: cboard.cprogramming.com

I have read various texts that state you must
Code:?

1#define INITGUID

And yes, you do!

In the file SDL-1.2.15\src\video\windx5\directx.h I just added it to the top, and now it’ll build the hacky DLL!

Maybe it’s something for Visual C++ version 19? I don’t know.

Anyway the advantage is now I have full audio for DosBOX!

Luckily updating binaries wasn’t too hard.

Congruent (Toolbusters) GCC 2.4.5 for Windows NT

Perhaps one of the more interesting, if not abandoned GCC ports.

It’s from 1994 (although they apparently had earlier), and it’s just enough binutils & gcc to compile stuff for Win32.

I stumbled onto the directory http://www.nic.funet.fi/index/win-nt/gcc/ while looking for the source code to the ‘top’ program, which incidentally can be found here. In hindsight the name ‘top’ is pretty terrible, as looking at the ‘top program for Linux’, well you are going to find all kinds of crap, and surely not top.

The files gnu-bin.tar.Z and gnu-lib.tar.Z contain enough binaries for GCC 2.4.5 C/C++ and ObjectiveC, along with GAS and what purports to be a linker, although I think it just prints the flags to MS Link that you’d need.

And as mentioned in this post, by Juha Inkari, how on earth do you use this thing? Well thankfully in the future we have access to more stuff, so I decided to throw MinGW at it, and see what happens.

I’m using the Linker & LIBC from Fortran PowerStation 1.00 with the linker update.

There is no source diffs, patches, or anything really.

Is this useful? I suspect not. Thanks to RSXNT there is easier ways to get much older versions of GCC… Although I guess it speaks more so to this port using OMF objects.

Congruent Corporation
110 Greene Street
New York City, NY 10012
(212) 431 – 5100
(212) 219 – 1532 (f)

Anyone ever heard of Congruent? Sounds almost Cygnus like.

Living with ARM for a week

So after the crazed purchase I made a few weeks ago, I returned from Japan, and was able to unbox and use the machine I’d been wanting for a while, a non x86 Windows laptop!

The NovaGo has a Snapdragon 835, and my phone, the ASUS ROG phone has the 845. Yes for this week, my cellphone actually has the stronger processor than my computer. Honestly this is almost an unthinkable situation! Although I haven’t been using my phone as a desktop substitute this week. It’s amazing how MS screwed up 10 on the phones, and Continium.

By default it comes crippled with this ‘S’ mode Windows, which hearkens back to the Windows RT launch, with the difference that it’s a quick trip to the application store to unlock Windows 10 Professional. It’s a free download as it should be, and it doesn’t even require a reboot!

Build quality isn’t so bad, the screen folds all the way back to make the machine into a ‘tablet’ although I don’t like that mode so much, it just feels wrong to wrap a keyboard around a monitor. However if you have rambunctious young kids, it’s great as when someone went running by me flailing their arms around like a while animal, when they struck the laptop the screen could easily fold back 180 degrees. Yay.

My first thing to do after setting up Office and VMWare VDI was to install the Linux subsystem, and Ubuntu. it’s exactly the same as it is on x86_64, which is great. And this let’s me have the best of both worlds, just like x86_64. As much as I dislike stumbling around with that aborted child of Pascal & Fortran (Python) at least I can run it under (mostly) Linux to get something close to like the production environment.

The C/C++ compiler is actually all cross tools. I wanted CLI only stuff because I like torturing myself, and it required a few GB of downloads. The good news is that the latest Windows 10 SDK does support GDI/CLI apps, so no crazy SDK hacking required, unlike back in the Windows RT days. Oddly enough the Taskforce 87 interpreter runs fine, but nothing else does.

I did a horrible job at hacking up SDL 1.2 to at least run (kind of, the audio doesn’t work, and it’s all WinDB *EDIT I got it fixed!!!) I got a few things up and running, including DOSBox and FrontVM. One thing that greatly helps is that i386 binaries ‘just work’. Honestly you wouldn’t even know you are running them when you are. Which made hunting down the ARM64 version of Chromium Edge kind of difficult to find. There really needs to be a more apparent way to tell them apart, if anything for battery efficiency.

As pictured, SQL Server 4.21a runs just fine, again you wouldn’t even notice. Same for Visual C++ 1.0 & FORTRAN PowerStation 1.0.

Again the audio in my crap SDL build doesn’t work, so DOSBox is silent, and without Direct X, the text mode is tiny. Oh also, there is no OpenGL in this version of Windows dev kit for some reason. Running ssystem is ungodly slow. Also the default optimizations seems to be Os, optimize for space, and on this ASUS I have to say /Ox is way way faster. DooM is quite playable on DOSBox when build with /Ox, unlike /Os.

For me, I spend most of my day to day in Office, and VMWare VDI, connecting to secure networks. So I’m just one step above a terminal. Which I guess is kind of sad, but this machine more than fills that roll for me. The 120GB of storage is tight. This isn’t a development machine persay, nor is it something to download tonnes of data to, it’s a lightweight machine where it’s strength is the built in 4G modem, and when running ARM software the longer battery life. To me the biggest drawback is that the keyboard isn’t backlit. Even though I touch type, I didn’t realize how much I’d grown used to it for casual use.

I guess it’s a hard toss up from this and a PINEBOOK Pro, I think most readers here would prefer the Pinebook, for all it’s openness, although I still like the idea of being able to copy over the Win32s version of Lemmings, and it just running. For me I kind of like this thing, although once I switch back to an x86_64 with more memory, better GPU and disk options, maybe this just feels like some kids toy.

Neko98 ARM!

I don’t know how I didn’t think of this, but I also ported Neko98! Although the STL is having an issue with the ‘control panel’ so Neko is on autopilot.

This app can’t run on your PC

As for the emulation, it is 32bit only, so expect to see this stupid message quite a bit. The neckbeard is a nice touch though.

Also built into the thing is a cell modem. I guess it’s really not a surprise as the 835 really is a cellphone SOC. I have a ‘wifi egg’ as they are called here, a WiFi hotspot with unlimited internet from CLS, which is on the old 4G network. I popped the SIM in, and it picked up the APN settings on it’s own and I was connected in under a minute. I have to say that it’s about time that SIM cards have this stuff programmed into them for a plug & play experience. And thankfully the ASUS is unlocked, although from what I understand these were sold in the USA bundled with some cell service plans.

For anyone with one of these rare machines that cares to play along you can find my built stuff on my ‘vpsland’ archive:

https://vpsland.superglobalmegacorp.com/install/Windows10-ARM/

And the f2c/dungeon build along with the C/C++ compiler is in the aptly named dungeon-2.5.6-ARM(32bit)-win32.zip file.

Random fun with video cards

So that 3d Mark 11 bench tool was on sale, and I thought it’d be interesting to judge various machines.

NVIDIA GeForce RTX 2070(1x) and Intel Core i7-9700K ProcessorNVIDIA GeForce GTX 980(1x) and Intel Xeon Processor E5-2678 v3AMD Radeon R9 290X(1x) and Intel Xeon Processor E5-2620 v2
3DMark Score239801635113534
Graphics Score290581758518872
Physics Score15672132897876
Combined Score15824138556623
Graphics Test 1 fps1146.83182.54180.92
Graphics Test 2 fps2145.84282.38290.27
Graphics Test 3 fps3173.273111.73124.86
Graphics Test 4 fps481.82452.33457.79
Physics Test (fps)49.7642.1925
Combined Test (fps)73.664.4430.81

One glaring thing is that the old AMD (new ones too??) don’t have any PhysX acceleration so the weak processors shine through. And honestly the 980 is still a really solid card. Assuming yours hasn’t been mined to death.

Going from memory here is roughly what I paid (Yes I bought the RTX 2070 before the announcement of the Supers, and basically it’s too high for right now, but this is what happens in tech, value slides way down).

RTX 2070GTX 980R9 290x
price in HKD$3,739$800$350
3DMark Score239801635113534
3DMark per HKD6.4120.4438.67

So the biggest bang for the buck is the used stuff. Like it’s not even close. I should probably add in MSRP’s for the old cards. But here we are.

My old GPU was an GTX 460, before I tried out the 1030 & 1050 before making the leap to the 2070. But lately I’ve been looking for old gen cards as they seem to perform pretty well. Also for AutoCad I picked up a P2000. It’s insane how much those cards can go for, and I should bench that one to show how terrible it is at gaming. But wow what a speed difference in CAD.

Roy was right, GTR PSU’s are terrible.

My GTR Power Com PS530 Plus ‘Chinesium‘ PSU blew up.

Roy called it!

Well, Roy called it. It’s a shame I don’t have footage as I didn’t really expect anything to happen, but I let the system run for a few days nothing much to report, I had mostly left it to idle, until the kids came in, and it became a YouTube, music machine. Again nothing much to report, I loaded some program to report CPU temperatures, and it was hovering under 30c. Not to bad.

With the kids gone, I thought I’d run FurMark to see how the GPU cooler is scaling as I suspect I should disassemble the video card, clean it up some, add new paste at least. So basically at 600×400 it was scaling about 1c ever second, just going vertical until it was in the 80c range. I’m not sure of the exact temp, but it was at least 80c and then the PSU shorted, shot electricity out the back, and let out some magical blue smoke. I yanked the power cable, and pulled the PSU, which was still hot to the touch.

Yikes!

Now granted the TDP of the E5-2620 v2 is 80 watts, and what I suspect is the killer, the graphics card, an ASUS Radeon R9 290x can consume up to 300 watts. I don’t know how much 4 sticks of RAM, and a M.2 drive will hit, but considering the PSU says 550 on the box, 530 on the sticker, I suspect going anywhere near 450 is really pushing it to the limits.

I pulled the card, and cleaned it up, and put in an ANTEC 650 PSU, and was amazed that the system powered up just fine. I even reran FurMark until it hit 75c, and killed it, and let it drop back to it’s idle temperature of 35c.

So yeah, the GRT PSU killed itself under load. I though that disclaimer in FurMark was a bit crazy, but no really it really can kill hardware! And I got lucky the only thing that died was the PSU, the machine is still happily running.