I thought I was the only one nuts enough to be researching this a few years ago!
"We're all a little weird, we like to think theres someone weirder. I'm sure some of you are looking at me going 'At least I'm not as weird as Gaffigan.' And then I'm thinking 'At least I'm not as weird as those people in the looney bin.' And the people in the looney bin are going 'Well, at least I'm not an orange."
From scouring old links years ago (and archive.org IIRC) I have:
PSXLinux-cross-tools-i586.tar.gz
PSXLinux-kernel-2.4.x-alpha2.tar.gz
PSXLinux-kernel-2.4.x-beta1.tar.gz
kernel-psx-2.4.0.tar.gz
press-release3.txt
The press release reads:
PSXLinux kernel alpha 2 release
Blokman Trading s.r.o released alpha 2 version of Linux kernel for Sony Playstation - PSXLinux.
PSXLinux based on uClinux 2.4.x kernel (
http://www.uClinux.com" onclick="window.open(this.href);return false;) and contains new drivers for
Sony Playstation.
Essential features were added:
- GPU virtual console
- Playstation memory card block driver
- ability to mount root file system on Playstation memory card;
- minor bugs fixed
In August we intend to release tools for memory card root image creation.
Please, visit
http://www.runix.ru" onclick="window.open(this.href);return false;
Best regards,
Chief Executive Officer
Vadim V. Veshchezerov
I don't believe you need PSXLinux-cross-tools-i586.tar.gz -- you can build yer own
gcc/binutils cross chain easily enough. There is (was?) also a "psxdev" toolchain that had a few patches to gcc/binutils IIRC. PSXdev IIRC contained a bunch of linux tools (e.g. gimp plugin to make TIM images IIRC) and some programs for talking to a PSX from linux. You can do stuff like have a program running on the psx use your pc hard drive as a "virtual filesystem" if that makes sense. I don't use psxdev other than I built a toolchain from
it's sources, since I don't run linux at home (and, I believe it needed a kernel module loaded on your pc, which probably won't work with any kernel newer than 7 years old or whatever).
I can build and run homebrew apps with either a toolchain built from psxdev source rpms, or my own "stock" gcc/binutils-built toolchain, and haven't noticed any difference except code size varies.
I believe I gave up on runix because I couldn't find the "memory card root filesystem image"
creator? Anyone know where that is? OR an alternative way to create it?
I don't remember if I was ever able to compile the kernel succesfully, but IIRC I sent a kernel
over piocons and it didn't seem to do anything (might have caused psx to crash, i don't remember). I think it was a precompiled kernel from who knows where (inside one of those tarballs maybe?).
The unanswered questions I have:
what compiler to use to compile the kernel?
Is PSXLinux-cross-tools-i586.tar.gz anything more than
a stock gcc/binutils? Does it output ecoff or elf or aout or...?
Assuming you can compile, what are the steps to convert a compiled kernel to run on the psx? (there are various tools for converting a gcc-generated ecoff into the PSX EXE format, fixing headers, setting the "start location in RAM", etc.) Or do the kernel makefiles handle
all this for you? One nice thing for homebrew is UPX can pack PSX executables (maybe not a kernel though). I imagine the kernel compile also uses a psx-specific linker script to layout
the sections in the executable.
Can you boot from a burned CD (e.g. using the swap trick)?
Can you send a kernel binary over piocons to load it? (does the kernel do anything
"special" that will interfere with caetla?)
piocons is simply a linux/unix/bsd tool that talks to an ISA "comm link card", which has a
parallel-cable-ish-type cord that goes to an action replay plus, which is plugged into the back of an old-school psx. the action replay plus runs a "custom" "firmware" known as caetla. you can flash your action replay with caetla if it doesn't come with it.
piocons/caetla lets you call printf() or getchar() etc. in your psx prog, and have it
routed to your pc display/keyboard. (I believe caetla "patches" the psx "bios"/memory to call it's own custom routines instead of the "built-in libc" system calls that are on the psx). I would think if runix has written a GPU console, you could easily write a console that worked
over piocons/caetla (disclaimer: I can compile a kernel, but I don't mess with kernel sources, so "easily" doesn't mean I know how).
Since ps2 is backward-compatible with psx, I imagine runix might even work on it?
(although sony did an official linux kit for ps2 IIRC). The same issues apply for
1) how to actually load the kernel
2) I don't know what (specifically unix) tools there are for loading homebrew apps on ps2, so a GPU console might be the best bet.
You can use the swap trick on a stock old-school psx, but I haven't tried the net yaroze
boot cd. The swap trick is sometimes sensitive on what "original CD" you are swapping with (e.g. the # of audio tracks on the original, length of the data track, etc.). This can manifest in games as audio tracks or FMV videos not playing or stuttering (see thrill kill for an example that is known to not play good using the swap trick). This means even if it works, it might not be reliable enough to use, unless you have enough original CDs and enough patience to find a good "match". (I have never had a modchip, so I don't know if that helps).
There are various other things (if you want to use malloc() on the psx, you have to tell it where to allocate memory from) that are hard to find documented anywhere if you are not
using the official dev kit. Best bet is to look at any homebrew sources and see what they do.
The runix kernel is probably a good source for some psx-specific "initialization code" and whatnot.
This is probably way too long, but if you have tried looking for any of this stuff a few years ago, let alone now, it is a pain. If I helped one insane person become crazier, it will all have
been worthwhile.
Anyone else crazy enough to comment or research further?