26th anniversary of Linux!

As the joke goes:

Happy 25th birthday, Linux! Here’s your f-ing cake, go ahead and compile it yourself.

So it’s always a fun time for me to push my old project Ancient Linux on Windows.  And what makes this so special?  Well it’s a cross compiler for the ancient Linux kernels, along with source to the kernels so you can easily edit, compile and run early Linux from Windows!

As always the kernels I have built and done super basic testing on are:

  • linux-0.10
  • linux-0.11
  • linux-0.12
  • linux-0.95c+
  • linux-0.96c
  • linux-0.97.6
  • linux-0.98.6

All of these are a.out kernels, like things were back in the old days.  You can edit stuff in notepad if you so wish, or any other editor.  A MSYS environment is included, so you can just type in ‘make’ and a kernel can be built, and it also can be tested in the included Qemu.  I’ve updated a few things, first with better environment variables, and only tested on Windows 10.  Although building a standalone linux EXE still requires a bit of work, it isn’t my goal here as this whole thing is instead geared around building kernels from source.  I included bison in this build, so more of GCC is generated on the host.  Not that I think it matters too much, although it ended up being an issue doing DooM on GCC 1.39.

So for people who want to relive the good old bad days of Linux, and want to do so from the comfort of Windows, this is your chance!


Download Ancient Linux on Windows
Download Ancient Linux on Windows

Setting up Windows environment variables for DJGPP (& other GCC based compilers)

DJGPP & other compilers, such as EMX require that you set needed variables with a UNIX style slash convention.  Also it is a pain to hard code the entire path into a command shell.  I know this works on Windows 10, although I’m not sure about earlier versions.

The %cd% variable contains the current directory, so it makes it easy to do something like this:

@echo.
@set tmpdir=%cd%\tmp
@set path=%cd%\bin;%PATH%
@set C_INCLUDE_PATH=%cd%\include
@set _LIBRARY_PATH=%cd%\lib
@echo.
@echo finished.

Which is great, but of course all the paths are MS-DOS style.  There now is the ability to replace strings!

@set _tmpdir=%cd%\tmp
@set tmpdir=%_tmpdir:\=/%
@set _tmpdir=

So in this example I set a temporary variable to the MS-DOS style path, and then using the pattern :(match)=(replace) it will then replace \ with /, giving me the UNIX style path.  I then just set _tmpdir to nothing, unsetting the variable.  So this way I don’t have to hard code any paths, and I can flip the slashes as needed.

Another fun thing is you can do logic blocks..  A simple one if a file doesn’t exist then compile it:

IF NOT EXIST dhyrst. (
echo.
echo Executable missing attempting to compile….
@make -f makefile
echo.
)

I’m sure most people knew about this, but for an old guy used to doing things the hard way, it was nice to see that there finally was some way to do this kind of thing.

Uploaded my cross DJGPP v1 environment to sourceforge

project is here.

I also put up the source for my ‘null doom‘, for anyone who ever needs some massaged source to DooM that will compile with a C compiler, instead of needing something that can understand C++ style comments, although I know in cccp.c there is the ability to turn on cplusplus style processing.  However since I did want something that would compile without altering the compiler (too much) I thought it was best to just change all the comments.

And a quick download link to the zip file with the source & binaries.
Download crossdjgppv1
Download crossdjgppv1

RETROTECHTACULAR: ASCII ART IN THE 19TH CENTURY

I saw this post on hack a day, and oddly enough my old Fortran Snoopy calendar was on there.

And as  a bonus in the comments was a talk on RTTY porn.  Obviously NFSW….  But kind of interesting & funny regarding the preservation of old things.  If the thought of ascii art port from the 1960s, along with some nude pictures from the 1920’s scare you, obviously don’t click.

To me what is crazy is that I can download an entire GIF CD faster today than I could download an image back when this stuff was new and exciting.  But I did have a 2400 baud modem.

Null DooM, GCC 1.39, GO32 and DPMI


phew.

DooM via DJGPP v1 GO32

Around the time of the x68000 port of DooM, I was cutting down the DooM source for a null/portable version.  I never could get it to actually run either using EMX or DJGPP 1.03, as I couldn’t get it to link to save my life with a constant never-ending battle of unresolved symbols. After a while I just used what I had towards the x68000 version and concentrated on getting it up and running and just shelved the null/portable effort.

Later on I wanted to get it running again as part of messing with another cross compiler, as DooM isn’t a trivial application to port and verify correct operation. And in the process of trying to get the null version to build and run on Windows using TDM GCC, I wanted to make sure it at least kept compiling with GCC v1.x.

Once more again I was able to compile individual files but unable to link.  But this time, I just looked at the diffs for binutils, I thought it should be somewhat easy to get hosted on Windows.  Although versions may point to binutils 1.0, I had to use binutils-1.9.tar.gz even though the diffs are against Mar 24 1991, and the source for 1.9 is dated April 17 1991.

My first effort gave me a linker that would happily link, but go32 would either refuse to run the executable, or just crash.  I was going to give up again, but I found mention in another file that DJGPP actually uses the linker from G++, the C++ compiler which was a separate thing in the late ’80s and early’90’s.  This time it worked, and I could link a trivial hello world style application!

Now that I finally had a cross linker actually working, I didn’t want to compile under emulation, so looking at the other diffs, they didn’t look too extensive. I went ahead ,and took DJGPP v1.06 and patched up the compiler & assembler to get a full cross toolchain.  And in no time, I had a null version of DooM running on MS-DOS well at least tested on DOSBox.

This was fun, and all but I didn’t see any easy way to do fun things like hook interrupts so I could get the keyboard & clock like any good MS-DOS program.  DPMI greatly eased this kind of stuff, so looking at the DJGPP history, DJGPP v1 version 1.10 actually adds preliminary DPMI support!  And in the next version, DPMI was much more better supported, however the binary format had changed from a.out to COFF as part of the move to v1.11. I was able to take the memory, and DPMI portions from the final v1.12 libc, and manually build and run them against the v1.06 library / dev tools.

And much to my surprise, it actually worked!  At least having the wrong format didn’t have any effect on how GO32 worked for me.

So, feeling lazy, I snagged some of the support code from Maraakate’s revamp of DooM, just to make sure of the timer code, and the keyboard code, and again verified that I can build with the keyboard & timer ISR and I’m able to play the v1.9 shareware & commercial levels fine.  I haven’t done a thing to clean up or update the DooM source itself against all the dozens of bugs and issues with Ultimate DooM, or other games like Chex Quest etc.

I’m sure 99% of people wouldn’t care but you can download it here:

Win32_DJGPPv1_DooM.7z
Download crossdjgppv1

Although I’m using DPMI to drive real-time events, if I looked further at the GO32 v1.06 environments I could either figure out how it operates it’s timer or modify the extender directly to drive the PIC timer and keyboard as I need.  But overlooking that, the vintage 1991 software is more than capable of running DooM.

DECUS links to ancient GNU software

Digital Equipment Computer Users’ Society (DECUS), used to put out tapes of interesting things to it’s members.  Back when everyone didn’t have an internet connection, or even if they did a high speed one.

I was looking for stuff where I only had a patch, but not the original files.  So it was great for me to not only dig out an ancient sed from the era, but also bison, and gas.  The ancient binutils are great for people who need to manipulate the a.out format, although the later binutils version 2 supports far more formats by virtue of it’s “BFD” or binary file database or as it was known as back then a ‘big fucking deal’

If you have ancient and or obsolete stuff, GNU stuff can fill the void of the often missing vendor development tools.  It’s crazy how many people sold the tools that kept their systems relevant, although needless to say that attitude pretty much solidified the end of their existence..

The good stuff from 1989 to 1993.

http://www.decuslib.com/decus/lt89a/gnusoftware/
http://www.decuslib.com/decus/lt89b2/gnusoftware/
http://www.decuslib.com/decus/lt90a/gnusoftware/
http://www.decuslib.com/decus/lt90b1/gnusoftware/
http://www.decuslib.com/decus/lt91a/gnusoftware/
http://www.decuslib.com/decus/lt91b/gnusoftware/
http://www.decuslib.com/decus/lt93a/gnusoftware/
It’s not complete, but it’s still fantastic!

 

Sometimes the 80’s never end.

Here is one of the dockets, along with this one that includes images of the complaint.

The age old battle of owning right to SDF Macros redistribution outside of Japan.  It’s a shame that this is dragging on, as Battletech has been seemingly crushed every moment in it’s life, from originally going by Battledroids and having to be renamed care of Lucas co, then buying art assets it turns out that had been sold prior to New harmony gold.

Rumor is that it’s over the robotech movie stuck in development hell.  Which is a double shame as I don’t see it having mass appeal, and the latest Harebrained Schemes game was moving along quite well.

It’s bizzare in a world where making things with Japanese assets is less money than doing realestate and it’s more profitable to go to litigation rather than licensing them.

I wonder if it’s even possible to discuss BattleTech: The Crescent Hawk’s Inception, using the included drawings, and media in this litigious age.

Hsiao & Hunter, Inc.’s GIF News

While trolling through the internet archive I stumbled onto this ‘zine from back in the day, ‘gif news’.  I think it’s kind of interesting in a way, back from the time of dialup BBSes, although later in 1991 it did become available over the internet, but It’s original issue as below was availbale over dialup.  The early collection is here.

Domo Arigato! Thank-You! Gracias! Merci! Sheh-Sheh!

For taking the time to download the first 1990 issue of GIF News. I’d like to wish everyone a happy new year/decade! May the 90’s bring good fortune to everyone who reads GIF News. This issue has articles on: The Eighties, The Colonel’s Bequest, VGA Games, sound cards, and more!

And behold.

 

Of course it is reminiscent of web pages.  Back in the day, various online services wanted this kind of look and feel for news, and in some ways this news paper folio design carries on today.  Although this kind of thing may not have caught on, much like offline readers, everyone wants a live feed.  And we are so lucky living in the iPhone world, when we went from shitty annotated, and cut down websites, to having hand held computers that rival some desktops, but also a significantly fast enough internet connection.

I don’t think I would have bothered trying to setup something like this back in the day, but the barrier for random posts, much like this thanks to things like wordpress sure lowers that barrier, and a random thought can become a post, as easy as 1-2-3!