Subscribe via RSS

Hey BeBox, My SMB Network Hates You!

Sheesh. After getting the machine up and running, getting it on the network was next-level shite! The BeBox, with BeOS 4.5 PPC, comes with an optional folder and, included in there, is an experimental folder containin an application known as WON. This stands for World 'O Networking (I REALLY blame this use of O' for my apostrophicities in this entire blog as I was introduced to WON back in '99) and is a CIFS implementation. Running the setup app easily installs it, but opening the newly placed World 'O Networking icon on the desktop does nothing but tell me that my CIFS Master Browser didn't exist.

Do excuse the crappy photo...

In this day'n'age, there's no #@%#$%'n reason for a CIFS browser to exist on anyone's network. We have random french-named services to say 'hello' to eachother and list eachother in eachother's network lists. There's no need for this (now inappropriate) client/server (master/slave) relationship. Of course, should we expect BeOS 4.5 PPC to be up with the times? No. So? Let's just try the cifsmount call from the command line.

$cifsmount \\\\\\public [user] [password] ./testMountFolder
General OS Error -1

General OS error? Awful. Fortunately, my NAS can log the snot out of Samba, so I turned on verbosity. Whenever BeOS tried to access the share, the following was visible:

[2022/12/19 14:37:58.602852,  2, pid=6552, effective(0, 0), real(0, 0)] ../../source3/smbd/reply.c:708(reply_special)                                                                                                                                                     
  netbios connect: name1=AS6604T-BDE6   0x20 name2=BEBOX          0x0                                                                                                                                                                                                     
[2022/12/19 14:37:58.603018,  2, pid=6552, effective(0, 0), real(0, 0)] ../../source3/smbd/reply.c:749(reply_special)                                                                                                                                                     
  netbios connect: local=as6604t-bde6 remote=bebox, name type = 0                                                                                                                                                                                                         
[2022/12/19 14:37:58.613129,  0, pid=6552, effective(0, 0), real(0, 0)] ../../source3/smbd/negprot.c:600(reply_negprot)                                                                                                                                                   
  negprot protocols not 0-terminated

Nice! It actually says BEBOX!. Somehow, samba does nothing after that line. It doesn't say "ERROR"... but it also doesn't continue? Checking the code...

	if (req->inbuf[size-1] != '\0') {
		DEBUG(0, ("negprot protocols not 0-terminated\n"));
		reply_nterror(req, NT_STATUS_INVALID_PARAMETER);

Oh yup. That's a hard-stop. It seems that the CIFS implementation on BeOS hasn't null-terminated a string as it sent it to Samba. We'll need to build the code and rip this out, or rollback to an older version. SMB is running as a package on my NAS and ... I assume there's source somewhere, but every time I've SSH'd into that console the tools I need don't exist, so let's virtualise this shit.

Samba Proxies or Virtual Box?

We have two options here. Spin up a RedHat Linux (~7.0) version and just start Samba on that (it works, I tried it!) or spin up a possibly awesome docker image and "re-share" our existing security-conscious shares. Yes, I got the VM going, but I wasn't happy with an entire VM running endlessly for no reason when my retro machines were off. I also hated the need to cleanly bring-up and shut-down the machine, not to mention the speed of interaction.

So, I went for a Docker image. I'm running an Asustor Lockerstor AS6600T which has a neatly packaged version of Docker and Portainer running. It's currently doing all sorts of things and adding a samba container wasn't going to hurt. The only real consideration was that, even though I was using a macvlan to get real IPs for my containers, I still had not successfully managed to get the NAS to talk directly into the hosted docker containers. I was initially surprised by this, but it turns out that's by-design... docker images aren't 'allowed' to see the metal they're hosted on. Although there's articles mentioning how to fix this (and a slightly different one here), I couldn't get it to work. Therefore, a 'samba proxy' wont actually work... as it needs to be able to SMB mount the host's share(s) and share those forward via it's own SMB server.

Fortunately, we don't have to fret yet. It occurred to me that I can simply mount the host's drives in the docker image and use David Personette's Samba Server container to share those! There's no need to actually proxy anything.

Samba Versions

This negprot 0-termination check has been in Samba since r24001, which was around 15 years ago, which equates to something around Samba 3.1. Docker can run older Linux versions, but only until around 8 years ago. Centos 5 might work, but you'll be hard-pressed finding functional package repos once it's installed. Alpine Linux is the way to go, but there's only docker images going back to 3.1, which doesn't line up with Samba 3.1! If we can't use a version of Samba (in Docker, anyway) that doesn't include the check, then maybe we can remove the check from a newer version? We just need to make sure the newer version supports SMB v1.0 (LANMAN, CIFS, etc..) and it turns out support for these older protocols was removed in version 4.11+.

As that David's container is build on the latest Alpine, it includes Samba 4.18 and this is obviously too new. It turns out that the last version of Samba before 4.11 is v4.18.10 and it's conveniently included in Alpine v3.10. Thanks for Docker's customisable recipes, we can modify David's Dockerfile, adjusting the top line to peg the Alpine base image version to this. Finally, we also need to make sure that the install scripts don't get Samba from the base Alpine 3.10 repo as we actually want to custom-build the APKs and carve out the zero-termination check.

I was initially going to download the source of Samba and try to build/install it myself in a new docker container... but I realised that it would be a tonne of extra work as there's probably distro-specific guff that needs to be configured/carried-out. So instead, as above, I chose to roll my own APK using the APK recipe from the Alpine repo.

Adding a package to Alpine Linux to make Docker better again

If you want to actually build the APK yourself, then here's a basic run-through. I've taken the package recipe from the alpine packages store and made a few changes. You'll find them here. Mainly just a sed script to hack out the 0-termination check.

If you don't want to bother compiling your own APK with this modification, then you can just download the already-compiled APK here. The only reason you'd want to do the next chunk yourself is if you don't trust my hard work. I wont be offended if that's the case.

I started by spinning up a new docker container...

sudo docker run --name apk-builder -v /volume1/Public:/public-share  -it alpine:3.10

Note that I've mapped a local drive. You'll want to do this as otherwise you'll have to work out a better way to get the compiled APKs out. Once up, you'll be already at the console and you can get started...

apk add --update alpine-sdk wget nano sudo
adduser builder

At this point you'll need to give builder a good password. Once done, continue to set up the APK build environment. Note that the sed line injects the rule to sudoers for the user builder at line 80. If you're doing this on a tainted Docker container (not the fresh one I just built) then you might want to be wary as to which line you insert on.

sed -i "80i builder ALL=(ALL) ALL" /etc/sudoers
sudo -lU builder
addgroup builder abuild
mkdir -p /var/cache/distfiles
chmod a+w /var/cache/distfiles
chgrp abuild /var/cache/distfiles
chmod g+w /var/cache/distfiles

We've done all we need to as root, so switch to builder:

su builder

And then generate your signing keys which'll be used when compressing the APK...

abuild-keygen -a -i

You'll need to type in builder's password for the key storage. Finally, go into the dir and download the APKBUILD files from my server. Please do check out the files downloaded... specifically APKBUILD! The hack to remove the 0-term if statement is already contained inside. It's simply a sed line requesting the deletion of lines 599-605 in negprot.c.

cd /tmp

Finally, kick it off. Go grab a coffee.

abuild -r

The build takes around 20 minutes on my quad core i3 NAS. The build is nice as it tells you the progress via the files-completed numbers at the start of each line.

[3287/5138] Linking bin/default/source3/
[3288/5138] Linking bin/default/source3/
[3289/5138] Linking bin/default/source3/
[3290/5138] Linking bin/default/source3/
[3292/5138] Linking bin/default/source3/
[3294/5138] Linking bin/default/source3/
[3295/5138] Linking bin/default/source3/
[3297/5138] Linking bin/default/source3/
[3299/5138] Linking bin/default/source3/
[3301/5138] Linking bin/default/source3/
[3303/5138] Linking bin/default/source3/
[3306/5138] Linking bin/default/source3/
[3308/5138] Linking bin/default/source3/
[3310/5138] Linking bin/default/source3/
[3312/5138] Linking bin/default/source3/auth/
[3313/5138] Linking bin/default/source3/auth/
[3316/5138] Linking bin/default/source3/auth/
[3318/5138] Linking bin/default/source3/auth/
[3320/5138] Linking bin/default/source3/modules/
[3323/5138] Linking bin/default/source3/modules/
[3325/5138] Linking bin/default/source3/modules/
[3327/5138] Linking bin/default/source3/modules/
[3329/5138] Linking bin/default/source3/modules/
[3331/5138] Linking bin/default/source3/modules/
[3333/5138] Linking bin/default/source3/modules/
[3335/5138] Linking bin/default/source3/modules/
[3337/5138] Linking bin/default/source3/modules/
[3339/5138] Linking bin/default/source3/modules/
(93/105) Purging tevent (0.9.39-r0)
(94/105) Purging talloc (2.2.0-r0)
(95/105) Purging tdb-libs (1.3.18-r0)
(96/105) Purging libbz2 (1.0.6-r7)
(97/105) Purging gdbm (1.13-r1)
(98/105) Purging xz-libs (5.2.4-r0)
(99/105) Purging readline (8.0.0-r0)
(100/105) Purging sqlite-libs (3.28.0-r3)
(101/105) Purging lz4-libs (1.9.1-r1)
(102/105) Purging keyutils-libs (1.6-r1)
(103/105) Purging libverto (0.3.1-r0)
(104/105) Purging libsasl (2.1.27-r4)
(105/105) Purging db (5.3.28-r1)
Executing busybox-1.30.1-r5.trigger
OK: 184 MiB in 56 packages
>>> samba: Updating the /x86_64 repository index...
>>> samba: Signing the index...

Once built, you'll end up with a bunch of APKs in /home/builder/packages.

~/packages/x86_64 $ ls
APKINDEX.tar.gz                            samba-dev-4.10.18-r0.apk
libsmbclient-4.10.18-r0.apk                samba-doc-4.10.18-r0.apk
libwbclient-4.10.18-r0.apk                 samba-heimdal-libs-4.10.18-r0.apk
pam-winbind-4.10.18-r0.apk                 samba-libnss-winbind-4.10.18-r0.apk
py3-samba-4.10.18-r0.apk                   samba-libs-4.10.18-r0.apk
samba-4.10.18-r0.apk                       samba-libs-py3-4.10.18-r0.apk
samba-client-4.10.18-r0.apk                samba-pidl-4.10.18-r0.apk
samba-client-libs-4.10.18-r0.apk           samba-server-4.10.18-r0.apk
samba-common-4.10.18-r0.apk                samba-server-libs-4.10.18-r0.apk
samba-common-libs-4.10.18-r0.apk           samba-server-openrc-4.10.18-r0.apk
samba-common-server-libs-4.10.18-r0.apk    samba-test-4.10.18-r0.apk
samba-common-tools-4.10.18-r0.apk          samba-winbind-4.10.18-r0.apk
samba-dc-4.10.18-r0.apk                    samba-winbind-clients-4.10.18-r0.apk
samba-dc-libs-4.10.18-r0.apk               samba-winbind-krb5-locator-4.10.18-r0.apk

Copy these all somewhere to your local drive, as we'll need to use them for the Docker container creation. If you are rolling this yourself, then your Dockerfile/docker-compose.yaml will need to map a local volume to the folder where all of these files are. If you're not rolling them yourself, then use the zip that's in this Dockerfile.

The container script uses David's as a base, but sets Alpine to 3.10 and uses Samba from my APKs. It also does a lot of mucking around with smb.conf. Prior to that configuration mucking around, BeOS would get past the negprot issue only to bring up another error:

Allowed connection from (
init_oplocks: initializing messages.
Transaction 0 of length 72 (0 toread)
netbios connect: name1=   0x20 name2=               0x0
netbios connect: local= remote=, name type = 0
Transaction 0 of length 51 (0 toread)
switch message SMBnegprot (pid 1071) conn 0x0
Requested protocol [NT LM 0.12]
reply_negprot: No protocol supported !
Server exit (no protocol supported)

Seems that NT LM 0.12 is NT LAN Manager 2.1, or somesuch. I'd thought about digging back into negprot.c and checking the reply_negprot function, but a quick google lead to something very obvious... configuration!


As always, someone has already faced this issue and it seems that all they had to do was set the 'lowest' protocol that the server would accept, via a setting? David's smb.conf had a default minimum of SMB2_10, which seems to mean that we only supported Windows 7 and above? Wowzers. For those not clicking links, here's the protocol limitation options:

Option Description
LANMAN1 First modern version of the protocol. Long filename support.
LANMAN2 Updates to Lanman1 protocol.
NT1 Current up to date version of the protocol. Used by Windows NT. Known as CIFS.
SMB2 Re-implementation of the SMB protocol. Used by Windows Vista and later versions of Windows. SMB2 has sub protocols available.
SMB2_02 The earliest SMB2 version. (Windows Vista and higher)
SMB2_10 Windows 7 SMB2 version.
SMB2 By default selects the SMB2_10 variant.
SMB3 The same as SMB2. Used by Windows 8. SMB3 has sub protocols available.
SMB3_00 Windows 8 SMB3 version.
SMB3_02 Windows 8.1 SMB3 version.
SMB3_11 Windows 10 SMB3 version.

There's actually a really cool piece of code explaining all this in the negprot.c source file:

/* these are the protocol lists used for auto architecture detection:

WinNT 3.51:
protocol [PC NETWORK PROGRAM 1.0]
protocol [XENIX CORE]
protocol [MICROSOFT NETWORKS 1.03]
protocol [LANMAN1.0]
protocol [Windows for Workgroups 3.1a]
protocol [LM1.2X002]
protocol [LANMAN2.1]
protocol [NT LM 0.12]

protocol [PC NETWORK PROGRAM 1.0]
protocol [XENIX CORE]
protocol [MICROSOFT NETWORKS 1.03]
protocol [LANMAN1.0]
protocol [Windows for Workgroups 3.1a]
protocol [LM1.2X002]
protocol [LANMAN2.1]
protocol [NT LM 0.12]

protocol [PC NETWORK PROGRAM 1.0]
protocol [LANMAN1.0]
protocol [Windows for Workgroups 3.1a]
protocol [LM1.2X002]
protocol [LANMAN2.1]
protocol [NT LM 0.12]

protocol [PC NETWORK PROGRAM 1.0]
protocol [LANMAN1.0]
protocol [Windows for Workgroups 3.1a]
protocol [LM1.2X002]
protocol [LANMAN2.1]
protocol [NT LM 0.12]
protocol [SMB 2.001]

protocol [PC NETWORK PROGRAM 1.0]
protocol [XENIX CORE]
protocol [LANMAN1.0]
protocol [LM1.2X002]
protocol [LANMAN2.1]

protocol [NT LM 0.12]
protocol [SMB 2.002]
protocol [SMB 2.???]

  * Modified to recognize the architecture of the remote machine better.
  * This appears to be the matrix of which protocol is used by which
  * product.
       Protocol                       WfWg Win95 WinNT Win2K OS/2 Vista OSX
       PC NETWORK PROGRAM 1.0          1     1     1     1     1    1
       XENIX CORE                                  2           2
       MICROSOFT NETWORKS 3.0          2     2
       DOS LM1.2X002                   3     3
       MICROSOFT NETWORKS 1.03                     3
       DOS LANMAN2.1                   4     4
       LANMAN1.0                                   4     2     3    2
       Windows for Workgroups 3.1a     5     5     5     3          3
       LM1.2X002                                   6     4     4    4
       LANMAN2.1                                   7     5     5    5
       NT LM 0.12                            6     8     6     6    6    1
       SMB 2.001                                                    7
       SMB 2.002                                                         2
       SMB 2.???                                                         3
  * 09/29/95
  *  Win2K added by matty 17/7/99

#define PROT_PC_NETWORK_PROGRAM_1_0		0x0001
#define PROT_XENIX_CORE				0x0002
#define PROT_MICROSOFT_NETWORKS_3_0		0x0004
#define PROT_DOS_LM1_2X002			0x0008
#define PROT_MICROSOFT_NETWORKS_1_03		0x0010
#define PROT_DOS_LANMAN2_1			0x0020
#define PROT_LANMAN1_0				0x0040
#define PROT_WFWG				0x0080
#define PROT_LM1_2X002				0x0100
#define PROT_LANMAN2_1				0x0200
#define PROT_NT_LM_0_12				0x0400
#define PROT_SMB_2_001				0x0800
#define PROT_SMB_2_002				0x1000
#define PROT_SMB_2_FF				0x2000
#define PROT_SAMBA				0x4000
#define PROT_POSIX_2				0x8000

#define ARCH_WIN95    ( ARCH_WFWG | PROT_NT_LM_0_12 )
			PROT_LM1_2X002 | PROT_LANMAN2_1 | PROT_NT_LM_0_12 )
#define ARCH_VISTA    ( ARCH_WIN2K | PROT_SMB_2_001 )
#define ARCH_SAMBA    ( PROT_SAMBA )
#define ARCH_CIFSFS   ( PROT_POSIX_2 )
#define ARCH_OSX      ( PROT_NT_LM_0_12 | PROT_SMB_2_002 | PROT_SMB_2_FF )

/* List of supported protocols, most desired first */
static const struct {
	const char *proto_name;
	const char *short_name;
	NTSTATUS (*proto_reply_fn)(struct smb_request *req, uint16_t choice);
	int protocol_level;
} supported_protocols[] = {
	{"SMB 2.???",               "SMB2_FF",  reply_smb20ff,  PROTOCOL_SMB2_10},
	{"SMB 2.002",               "SMB2_02",  reply_smb2002,  PROTOCOL_SMB2_02},
	{"NT LANMAN 1.0",           "NT1",      reply_nt1,      PROTOCOL_NT1},
	{"NT LM 0.12",              "NT1",      reply_nt1,      PROTOCOL_NT1},
	{"POSIX 2",                 "NT1",      reply_nt1,      PROTOCOL_NT1},
	{"LANMAN2.1",               "LANMAN2",  reply_lanman2,  PROTOCOL_LANMAN2},
	{"LM1.2X002",               "LANMAN2",  reply_lanman2,  PROTOCOL_LANMAN2},
	{"Samba",                   "LANMAN2",  reply_lanman2,  PROTOCOL_LANMAN2},
	{"DOS LM1.2X002",           "LANMAN2",  reply_lanman2,  PROTOCOL_LANMAN2},
	{"LANMAN1.0",               "LANMAN1",  reply_lanman1,  PROTOCOL_LANMAN1},
	{"MICROSOFT NETWORKS 3.0",  "LANMAN1",  reply_lanman1,  PROTOCOL_LANMAN1},

So, is it just as-simple-as setting the lowest bloody value and rebooting? I edited the Dockerfile and updated the injected smb.conf configuration:

    echo '   # Security' >>$file && \
    echo '   client ipc max protocol = SMB3' >>$file && \
    echo '   client ipc min protocol = LANMAN1' >>$file && \
    echo '   client max protocol = SMB3' >>$file && \
    echo '   client min protocol = LANMAN1' >>$file && \
    echo '   server max protocol = SMB3' >>$file && \
    echo '   server min protocol = LANMAN1' >>$file && \

And it worked! Finally! BeOS has connected to my NAS with a reasonably-recent version of linux and Samba! Sure, commenting out the zero-termination might reinstate a bug that can be exploited, but this service will never be public. Meanwhile, World 'O Networking still hated me... but that's OK, at least I can now transfer files!

Giving Docker a Hostname

As you can see above, all interactions with the new samba docker server are via IP. It turns out that the --hostname field that you configure in Docker only applies internally to the docker container. It's not exported! Googlin' around, I found a great stack overflow article describing the same issue, with many "can't do that" responses.

It's not until you scroll a few answers down that you'll see a --net-alias flag that seems to do want I want. Just a note, it's --alias if you're using docker network connect and --net-alias when using docker compose. I added the required configuration to the Dockerfile and spun up a new instance.

    external: true

mynet has been set up using the instructions over here, which were pertinent to getting PiHole running in an adjacent Docker container. The rest of the configuration was borrowed from here.

I honestly hoped this would get Samba showing up on the local LAN with a hostname, but no such luck! I wonder if the docker network is preventing promiscuous traffic or somesuch... Maybe I'll spin this up on a physical machine on the network just to rule a few things out.

But what about that CIFS Browser error?

Oh yeah, I would still love WON to actually list my computers... can I do it? It seems that you can configure Samba to be a CIFS Server with a single local master = yes in the configuration file. Unfortuantely this didn't work... neither did wins support = yes. I'll have to keep fighting to get my WORKGROUP listed.

Filed under: Retro No Comments

PC-98 – 110-Pin CenterCOM ME1500 Ethernet Adapter

This gets a special mention after getting the PCMCIA slot working on this machine. Since my NS/A only has one PCMCIA slot, it's nice to be able to have ethernet on the 110-pin port and SCSI in the PCMCIA. Or vice-versa!

What I can't believe is that Allied Telesis still has a FULL list of drivers for all of their archaic hardware. Thank you Allied Telesis, from the entire retro community! Just in case that site does go down, the drivers for this device are over here for safe-keeping.

Once downloaded, just make it available to the MS LAN Manager setup interface. Clear your current configuration and then choose to add an unlisted driver...

Yet again, set up TCP/IP with DHCP as the default...

And Bob's your uncle! Transmission!

The bloody thing worked perfectly and now I have my single PCMCIA slot free for SCSI. Actually, it'd be nice if they made the rear 110-pin port daisy-chain-able. All of these devices should have the matching rear socket to add more devices... just like the C-Bus slots.

Filed under: Retro No Comments

PC-98 – PC-9801NS/A PCMCIA Network

It's done. I did it. I managed to wrangle a set of disks via Yahoo Auctions Japan and succeeded. It seems the winner of the previous auction didn't want these disks as well... which is good for us all!

Look at that floppy disk. Isn't it the most awesome disk you've ever seen in your life? It cost AU$50. Fifty-#$%#$-bucks for a floppy disk. If you add the previously bought floppy (that had been overwritten!), then this total adventure cost over AU$100. Anyway, the outcome is that anyone can now get PCMCIA running on their NS/A, NL/R, NX/C or Ne!

The file on the disk happened to be SSDRV.SYS, not SSMECIA.SYS as I'd been expecting. It turns out that SSDRV.SYS comes in two flavours: a ~5kb version for PCMCIA 2.0 and a ~6.34kb sized version for PCMCIA 2.1+. As that I scored the actual PC Card Support Software disk for this specific laptop, it all just installed fine.

Firstly, a copy was made of the disk, with the original being stored away safely.

Of course, this copy is now available to the world! As it should be! Note that this is a 1.2mb Disk Image and that you'll need to format the floppy as 1.2mb prior to imaging or copying the data over. RawWrite for windows worked fine once I re-formatted a floppy disk from 1.44mb to 1.2mb under DOS in the NS/A.

PC Card Support Software

Slap in the disk, type SETUP.EXE and hit enter. You'll be presented with the main menu, as per the middle shot below.

From the menu, the top item is the installation source, secondly the install destination and the highlighted row is "Let's do this!". Go down to that option and smack enter, as the defaults should be correct.

In that second-last shot you can see the CONFIG.SYS listing where the installer has added three lines to the bottom. The first two are legit and the last is the Memory Card (i.e. flash storage) driver... which we don't need.

Network Hardware

I initially tried a RATOC R280, but it seems that it needs PCMCIA 2.1. Instead I reverted to my NEC PC-9801N-J02R, as I'd read somewhere that it was compatible with the NS/A.

As mentioned in the fine-print under the lovely graphic on the card, it's also known as a B4680 "Interface Card T", so remember this when installing the next software product. The drivers for this card are useless without host software to use them, so we need to choose something that can use this card!

MS Lan Manager + Network Drivers

How do I get network sharing going? It turns out that Windows for Workgroups was never released for the PC-98? I could go up to Windows 95 again, or go backwards to MS LAN Manager for PC-98. Lettuce do the latter and get some files transferring!

Not much to discuss yet. First screen is an introduction and the second tells you how to use the menus. Basically that the bottom-left button is OK and the one next to it is Back. Use TAB to switch between and ENTER to confirm selections. The next screen firstly defines the installation source and then the target installation directory. After that, you get the choice between installing the "Enhanced" or "BASIC" version of MS LAN Manager. I chose the defaults (the top option, "Enhanced") and continued.

Per disk, you get cute little countdowns instead of progress bars. It's telling you the amount of files it still needs to copy. Once it gets to zero it'll ask for the next disk:

It also asks where the next disk is, so I assume you can dump all of the files into one folder on A:\ (that's your HDD, stop thinking about C:\) and just do a super-quick install. Instead, I wrote out the six disks and inserted Disk #2.

It asked for disk #3: Drivers... and blew up.

And kept blowing up... and then threw me back to the DOS prompt. Ok, I failed to write #3 correctly! I found a substitute, re-wrote it and kept going. Cool! Driver selection!

Remember how I told you to remember the 'secondary' name of the PCMCIA LAN card? That's what we need to go by here. It's the 5th or 6th option... depending on which version of NDIS you wish to use? I chose v1.0. But now that I look at it, is it actually the version of the PCMCIA card? My card doesn't have a version on it, assumingly it's v1.0 then as they didn't think to put a version on the first if it was only meant to be a single version?! (Spoiler, it still worked...)

Ok ok, that says RATOC R280. Disregard and pretend it sayd B4680. I tried the RATOC card first and it vomited when trying to initialise it. I then switched to the NEC card. Either way, the middle shot lets you select the protocols. Use TCP/IP, unless you have other specific purposes to use other protocols. Make sure the DHCP box is checked and let it install!

Next up, set your Computer Name, Username and Domain/Workgroup name respectively. Then choose if Windows or DOS will be controlling the LAN Manager? Or does it say something else. I went with defaults. It then asks where Windows is... and I gave it the appropriate response.

Finally, there's something about message popups... I left it as default, and then hit "Let's do this" on the "we're gonna make changes now" middle screenshot. Finally it confirms that everything has been done! Let's save, quit and reboot.

We're in DOS, I connected the cable, we booted and it looks happy?

IPCONFIG works and it's displaying a correctly-assigned DHCP address! Can we ping?

We can! I .. what .. it works?!

Browsing the Neighbourhood

There's a NET command in MS LAN Manager for DOS that lets you browse the network and map shares. I can't say I had much luck with it, but I tried anyway.

When you first run NET, you'll be presented with a small configuration dialog. It asks for your Username, Password and Domain/Workgroup. I entered the required values and then hit enter, which dismissed the dialog. I then got a few warnings that the domain didn't respond and that things probably wont work properly... or that's what I think they said.

A short while two computers appeared in the main list!

The first is "Local" and the second is my W98 PC. I created a 'free for all' share on Windows 98 and then tried to hit 'enter' on the machine in the list after selecting it. Nothing really happened. Going to the view menu and choosing the first option popped up a dialog with the share I'd created!

Hitting enter on the share didn't work...

Something about a remote name? Oh well... I have a plan!

Speaking the correct version of SMB

So, SMB is the windows network share standard and it's come a long way. We're up to encrypting everything, from being able to have zero-password free access, way back in the day. The issue here is that the old LANMAN client speaks zero encryption and my NAS doesn't want to even consider talking to it. Windows 98 is even scoffing at it!

Errors are "share not found" or "access denied". Pretty much expected... so what to do? I cheated with the BeBox in the past.. and I now realise I never made a post on how I got network shares going. Oh well, now is a better time than ever. I did something really dodgy and loaded up RedHat 7.2 (not RHEL!) to create a kind-of SAMBA proxy. I'm sure that you could get Docker to do this, but setting up a VM was just as fun!

The goal was simple: a VirtualBox VM with RedHat 7.2 installed which could SMB to the NAS and then share that folder forward with all the encryption disabled. Sure, dangerous as hell, but it's all only accessible on the local network.

With the machine set up, it even showed up on the LANMAN net browser!

I got a weird NET2123 (API out of buffer space) error when trying to list the shares, so I just went and mapped it to Z: manually in DOS.

Woah... it worked... Oh, the actual use command scrolled off the screen... it was net use Z: \\redhat-oldie\public

It even shows up with a cute network icon in File Manager!

Filed under: Retro No Comments

Sony Electronic Book Player DD-S35

Found this in a Hard-Off in Shikoku, somewhere. Maybe Niihama? The Hard-Off is actually in the basement of a hardware store. It was great to rummage around, as I also found a boxed PC-98 game, or two!

To no surprise, others have toyed with these machines before, so I knew I was in with a chance to get something going on it. Fortunately it spun straight up with 2 AA batteries.

It also came with an original disc...

Turns out these are 8cm Mini-CDs. I had thought they were minidisc, or magneto-optical. As you can see above, I managed to find some on eBay. But testing the original disc anyway:

So yeah, that dictionary is pretty boring... Let's make some other CDs? Finding Mini-CDs wasn't easy...

They sit nicely in tray-loading drives... DON'T try and use them in slot-loaders!

And then we need to find images! Japanese Wikipedia has a great list of formats for ebooks that this sytem should be able to use. Searching for EBXA on web.archive. Turns out there's quite a lot. Do you want Passport's World Travel Translator (Version 2.0)?, English Teacher? or how about Five Star Stories, The - Chronicle 3 (Japan)? We could even possibly make our own.

Burn any of the images (Use PowerISO if you can't open the BIN/CUE with anything else) and pop them in the caddy. You'll need a sharp tool to press in the tab in the 'open' hole on the side. For an old unit, the plastic is still in great condition.

Different boot screen... must be working?

Choose your own adventure! I do note it's pretty clunky. But you can select chapters and read... really just as if it was a physical book.

You can even just browse through the graphics.

Seems that Sega saturn had a reader. Even the Mega Drive! Many have fallen down the rabbit hole. Find more info here in this great video. And more images here in EBG format.

I'm not going to. This unit has already changed hands via eBay!

Filed under: Retro No Comments

PC-98 – Yahoo Auction Floppy Disks

To the winner of recent Yahoo Auction f1100292216, I salute you! It was a PC Card Support Software Disk for PC-9821Ne, titled in Japanese as NEC PC-9821Ne カードサポートソフト ソフトウェア FD.

Now, I have no idea if it'd work with my NS/A, as its contents were listed as follows:

SSDRV.SYS? We're expecting an SSMECIA.SYS for anything PCMCIA 2.0... as per the information in my other post.

But whatever... I went for it anyway. I prepared a budget for around AUD$80, but I was obviously dreaming.

If you bought this disk, please make it available to the world for preservation! That was my plan.

Update: Actually.. the same seller has just listed a PC-9821Nm PC Card Support Disk and the picture of the disk listing shows PCMCIA LAN Card drivers?... so it's been overwritten. It seems I've dodged a bullet above, as it really didn't have the proper PC-9821Ne drivers!

Update: Actually actually.. This installation document seems to indicate that SSMECIA is part of SystemSoft Cardware and that SSDRV is part of NEC's drivers. Could this be any more confusing? There's another auction up and it has the NS/A PCMCIA Support Drivers in there. The screenshot lists SSDRV.SYS, with a much smaller file-size than what we've seen before... this must be it!?

Filed under: Retro No Comments

PC-98 – PC-9801NS/A – CPU, SCSI and Windows 95!

After failing miserably with the previous CPU upgrade, I scoured Mercari and YafuOku and found another accelerator. It's a HNS-25T DX4 75mhz module created by Buffalo/MELCO.

This time, after reading numerous pages online, I'd decided it didn't need to be IPL'd and would just work.

And well, it just bloody worked! Even the RAM count on post felt zippier! Of course, it's not actually able to run at the full clock speed thanks to the system bus speed in this laptop?

So, in the same care package, I also picked up an ICM IF-2660 SCSI module. This bulky unit screws onto the 110pin "C-Bus" connector on the rear of the Laptop.

I initially had no-end of trouble with it, as the HDD I'd plugged in was actually badly partition/formatted and caused the whole laptop to lock up. It wasn't until I connected up the same CD drive (as when I was mucking around with the PC-9801VX) that things started to work.

I could see the drive get init'd, and so I went on the hunt for drivers. SENRI's 98Station seems to have gone offline again, so the drivers are back to unobtanium. I swear this page had been online two weeks back when I was looking for the other accelerator drivers. I found other drivers here, but didn't have much luck with them. Update: SENRI's site is back again!

The ASPI driver loaded and listed connected devices, but no ASPICD.SYS that I could get my hands on would init the CD drive. Just for fun, I tried the same NECCDB.SYS from the DOS folder (they're all sitting in there on a standard install) and rebooted.

Hilarious... it just worked! This made it much easier to get data onto the unit.

Further down the track, whilst mucking around and re-installing DOS 6.22, the CD drive was simply found and NECCDB.SYS was installed by the DOS installer. It didn't even need the ASPI drivers?!

Windows 95

Just for shits-and-giggles... I gave the installer a spin...

All was going well until that last shot! Not enough space on A:! What to do?

Add more disk! Doing so caused the SCSI boot menu to appear.

But the drive wasn't in the right format... so I installed DOS on it (this is when I realised the DOS installer would just set up the CD drive by itself with zero help.) Of course.. problems always come out of the woodwork... I replaced LEDs and tidied up the HDD housing whilst it was taking its sweet time to format.

And then we were off and racing again...

Oh yeah, it was now installing to B:\ as A:\ was the internal IDE drive.

It crashed when it tried to install the video drivers... on a second install attempt it actually asked which driver to install. I had to choose "other" from the bottom of the list as there was no actual driver available.

And then we were off again...

Upon reboot, it crashed and rebooted itself again into safe mode.

Thanks to the internet, other users have already tried to do this before me. There's a driver over here by nanabon which simply uses the safe-mode driver as a real driver. You can find it at also. I 'installed' the INF whilst in safe-mode and rebooted.

And so yeah, Win95 was up! I wanted to then muck around with network cards but, due to the PCMCIA 2.0 hardware, the two I had on-hand would just crash out badly. I thought about scouring buyee again for an older PCMCIA card, like a PC-9801N-J02, but then I remembered I don't have the PCMCIA PC-Card Support Software and that the network would only work under Windows 95 and... and... it'd be fun but pointless. Maybe if I go for another care package, then I'll add the PCMCIA card to the loot.

Filed under: Retro No Comments

PC-98 – PC-9801NS/A – RAM, CPU And PCMCIA

This story doesn't have a happy ending. I went on a buyee-spree, trying to find all the parts I needed for this laptop... including a single (obviously-not-legit) floppy drive that contained the PCMCIA driver software needed to get the PCMCIA slot working in DOS. The goal was to then load up a SCSI PCMCIA card connected to a SCSI CD Drive to get data flowing. There were also RAM and CPU upgrades and they looked awesome! Who didn't want a DX2/66 laptop? Who cares if the internal LCD is monochrome.

Anyway, the crap arrived...

RAM and CPU Upgrades

The RAM module was clean and tidy, but the CPU (PK-NSA66/C) not so much.

They're both add-in modules that slot in underneath the unit.

No issues powering up... and the RAM was obviously working!

Very nice... +11mb? There was already a 1.2mb RAM disk in this thing, so the additional 11mb was a bit weird. Maybe it's 10mb? Or maybe it totally replaces the onboard RAM and it's +12mb? Anyway, I went into MSD.EXE and CPU info showed...

No dice... no amount of cleaning or re-inserting got it to say anything different. There was also no heat in the board, so I can't quite tell if it's kicking in... or if it needs an IPL like the PC-9801VX. It seems there are many hardware benchmark softs and other CPU tools on which I'll play around with later. Thanks to this thread on another upgrade for pointers.

Update: Yeah, I was right... this specific upgrade board for the NS/A is the only one that needs an IPL! Of course, the drivers at IO-Data are just updates... just like the hell I went through with obtaining the IPL for the PC-9801VX. See more about the available upgrade boards here, and an even better write-up over here. It seems I need to find PKNSA.EXE. How insulting.

Anyway, I suppose I might as well go ahead and install Win3.1 via floppies... since I'd already created them. Later.


So, I'd received the disk from Yahoo Auctions with an original manual. I still cannot work out what that image/logo is on the manual? Anyway, I eagerly got everything set up.

I slapped the disk in the laptop and DIR'd.

Get stuffed. What is TAKAHOUSE? I tried to boot it...

GRRRR... AUD$60 for an over-written floppy ... but I got the manual!

Marcin to the rescue!

If you jump to the comments below, you'll see two pointers from Marcin to drivers that might-just-work. I tried the MECIA3ATA driver first from PC-98 Tips, using a PCMCIA to CF adapter that I had lying around.

First screenshot is with no card in the slot... and a complaint from the driver saying it can't find anything. Second screenshot above is a switch to D:! What's in there?

Random Macintosh stuff that I had totally forgotten about! Useless for this unit, but we can read a PCMCIA ATA card! Unfortunately the second link just provided SSDRV.SYS which doesn't work with this hardware. Maybe it'll work on the 9821Np/540W that I'll whip out next.

Thanks Marcin! We've made progress!

Filed under: Retro 2 Comments

PC-98 – MIDI

During the most recent trip to Japan, I managed to pick up an SC-55 Roland Sound Canvas. Once back in Australia, and once I had the PC-9801NS/A up and running, it was time to get it outputting MIDI signals. The SC-55 has a serial port, and it turns out that many games can support MIDI over RS-232.

Many moons back, during a trip to Japan that I've nearly forgotten about, I actually managed to pick up this unit.

It's the COME ON MUSIC MA01.

I had originally thought it was for PC or Amiga, but, this time around, whilst searching for RS-232 MIDI options, a photo of this unit appeared! I quickly dug through the boxes to find it.

Of course, the serial port on the PC-9801NS/A isn't a standard DB-9...

It's a mini-centronics something-something and it'd need a serial converter cable to get it to connect to the MA01 above. Fortunately, here's one I prepared earlier... hilariously also found at the Hard-Off in Okayama where I got the PCMCIA SCSI card.

Not feeling like finding the right game from the initial list above, I instead searched for a DOS MIDI player that supported RS-232. had a great list of software to choose from and Fu-Music Player 1.03 mentioned RS-232 compatibility in the description!

A standard DIN-5 MIDI cable was used between the MA01 and SC-55 and.. the rest is history... and CANYON.MID.

Filed under: Retro No Comments

PC-98 – PC-9801NS/A (98-Note)

This beast was sitting next to another PC-9821 Note (more about that one in the future) at a junk shop in Den Den Town, Osaka. They were cheap. The shopowner gave me a huge WTF?! are you doing when I asked to purchase them. "No return, no refund!" he exclaimed as I told him I just wanted them for decoration.

I don't know what I expected when I brought them home, but the mofos (plural, there's another PC-9821Np/540W) fired straight up, asking for system disks. I used the 3.5" DOS disks I'd previously created.

And I was in DOSS Hell before I knew it! Next up I'd want Windows installed, but I wasn't doing that via floppies... I needed a better file transport mechanism.


I managed to pick up an IODATA PCSC-F PCMCIA SCSI Card from Hard Off in Okayama, which just happens to support the PC-98 Note series.

The drivers are over here and I thought I could just install them and go. Unfortunately, when you try, it exclaims that PC Card Services are not running.

A quick read of the manual tells you that you need PCカードサポートソフトウェア (PC Card Support Software) installed prior to trying to install the driver.

Is this disk available on the Internets? Hellz no. It's unobtanium... unless you google for closed auctions on Yahoo.

Then you see an auction for a SINGLE DISK going (buy-it-now) for well over AUD$60. Isn't it pretty? Anyway, back to the manual above, it notes that we need SSMECIA.SYS loaded in CONFIG.SYS... but this file is also NOT on the internet. All bulletin boards mentioning any of this software just contain people begging for it, asking everyone else to email them a copy!

For fun, I scoured the PC-98 Win3.11 disks, but they don't contain the DOS drivers. Nor do the DOS disks.

I thought I had something after googling for "PCカードサポートソフトウェア". I got here and saw a promising link to the NEC Lavie support site. Unfortunately this is just an ATA HDD driver to be used AFTER loading the support services!

So, back to where we were at with the PK-486 for the PC-9801VX.... drivers lost to time.. or scalpers! But then I realised something.. There's quite a list of laptop models noted in the manual for the SCSI PCMCIA Card, which all use the same driver? Maybe we can find another support disk on Yahoo... Maybe for the NX/C instead of the NS/A?

And shit, there it is, sitting on Yahoo Auctions right now, ready for me to spend money on! A dodgy copy for the bargin-basement price of AUD$65! It's a huge gamble, but let's see what happens when it arrives. The best part is that it's also coming with RAM+CPU for this unit and a new HDD caddy for the other Note. Anyway, in the meantime...

UPDATE: The gamble didn't pay off: The floppy was over-written with other shit.

Can it play A-Train?

A-Train needs two floppy drives.... this unit only has one. I was curious though, as the unit has a very specific RAM Drive activity LED? Oh right! That RAM Drive is specifically designed to act as a second floppy drive. NEAT! But, how do we use it?

PC-98 Machines start lettering from A:\ and just keep going... usually HDDs first and the Floppy Drives. A:\ is the internal HDD and B:\ is the floppy, so does C:\ exist?

Yes, yes it does... let's format it? Ok, sure... and a quick text file with SEDIT persisted after power cycle!

So... let's dump the "DATA" floppy over to C: and then boot the real floppy in B:. Do excuse the LCD refresh vs. my shitty phone camera.

Crisp! The animation was smooth also... what is this magical power from a tiny 486 SX?

Shiitttt.... it works. There was one weird thing though. I initially booted it with no mouse, so I couldn't do anything in-game. I then powered off and booted up with a mouse plugged in. During boot it just presented the "Please insert the system disk and press a mouse button" screen. Even if I clicked the mouse, the screen kept appearing... I'm guessing a RAM issue?

So I disconnected the mouse, rebooted back into the game... then plugged the mouse in after the game had loaded and all was well!

Amazing. (Excuse the dither/blur on the LCD. I ASSURE YOU there's a train in the last shot above!)

Let's try Windows...

You could tell what was going to happen next...

Unfortunately, Windows installer baulked at zero Extended Memory...

I suppose I could disable the RAM drive and start again, but I don't think 1.2mb of RAM will cut it. I'll make another post in the future regarding PCMCIA shennanigans. Actually... regarding MIDI also... if I can do it.

Filed under: Retro 2 Comments

PC-98 – Working With 3.5″ Disks

So far, I've only really had to deal with physical 5.25" floppy disks, as my PC-9801VX does not have 3.5" drives. My external Gotek was an emulated 3.5" set, but there was never a need to write actual 3.5" floppies. This all changed once I picked up other PC-98 machines.

Above are three BIOS screens from two 98-Notes and a PC-9821, all complaining that they want you to "Set a System Disk". The term 'set' is a little misleading, as they're really asking you to insert one. None of these machines have 5.25" drives, and all the disk images I have in my arsenal are 1.22mb images!

Make a 3.5" Floppy Disk think it's a 5.25"

To get anything to boot, we'll need to write one of these images to a 3.5" drive. I assumed this would all be simple and used the same technique as I did over here. Turns out that, even though the image will write fine to the disk, the machines needing the floppy won't be able to read it.

This is because standard 3.5" floppies are, by default, formatted as 1.44mb. Writing a 1.22mb image to a 1.44-formatted drive will mismatch the data and the receiving PC wont be able to correctly read the tracks. Or this is what I understand. Prior to all this, I'd assumed that the format of the disk was in the first track and that writing an image would also re-write the format... but this isn't true. Instead, we have to re-format the disk prior to writing the image. You can read all about disk formats here.

(Update: Oh lol... if I'd read the link above I would've realised that 1.22mb 3.5" disks are normal... they're known as 2DD, not the 2HD I'm used to!)

Of course, this is the internet, so someone has already done all of this for us. The basic idea is to re-format the disk to the correct format using a tool called ufiformat, convert the image to raw bytes with no header and then dd the image over. There are supposedly only a limited number of USB floppy drives that can do this, but my Teac FD-05PUW worked perfectly.

First up, connect the USB floppy to the machine you'll use. If you're using Virtual Box (like I was, on my NAS!), then you'll need to map the USB device through to the guest OS in settings. Once it's up and your machine is alive, make sure to update your package manager with the latest sources. I did this with:

swh@virtual-deb-nas:~$ sudo apt-get update
Get:1 file:/run/live/medium bullseye InRelease
Ign:1 file:/run/live/medium bullseye InRelease
Hit:7 bullseye InRelease
Get:8 stable InRelease [1,825 B]
Get:9 stable/main amd64 Packages [1,078 B]
Fetched 2,903 B in 1s (3,537 B/s)
Reading package lists... Done
E: Some index files failed to download. They have been ignored, or old ones used instead.

Next, let's install ufiformat:

swh@virtual-deb-nas:~$ sudo apt-get install ufiformat
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
0 upgraded, 1 newly installed, 0 to remove and 265 not upgraded.
Need to get 0 B/14.4 kB of archives.
After this operation, 42.0 kB of additional disk space will be used.
Selecting previously unselected package ufiformat.
(Reading database ... 214799 files and directories currently installed.)
Preparing to unpack .../ufiformat_0.9.9-1+b1_amd64.deb ...
Unpacking ufiformat (0.9.9-1+b1) ...
Setting up ufiformat (0.9.9-1+b1) ...
Processing triggers for man-db (2.9.4-2) ...

Once that's installed, we need to find the floppy drive. The best method is with dmesg.

swh@virtual-deb-nas:~$ sudo dmesg | grep "removable disk"
[    5.065667] sd 3:0:0:0: [sdb] Attached SCSI removable disk

Nice, so the floppy is loaded at /dev/sdb. Now we need to get our images ready. I'm wanting to install DOS 6.22, so grab your images from whereever you need to. Depending on the image format, use any of the d88split tools over here to get the images into the correct format.

swh@virtual-deb-nas:~/dos622$ ls -l
total 9888
-rw-r--r-- 1 swh swh 1265664 Jun  6 18:53 DOS1.FDI
-rw-r--r-- 1 swh swh 1265664 Jun  6 18:53 DOS2.FDI
-rw-r--r-- 1 swh swh 1265664 Jun  6 18:53 DOS3.FDI
-rw-r--r-- 1 swh swh 1265664 Jun  6 18:53 DOS4.FDI
-rw-r--r-- 1 swh swh 1265664 Jun  6 18:53 DOS5.FDI
-rw-r--r-- 1 swh swh 1265664 Jun  6 18:53 DOS6.FDI
-rw-r--r-- 1 swh swh 1265664 Jun  6 18:53 DOS7.FDI
-rw-r--r-- 1 swh swh 1265664 Jun  6 18:53 DOS8.FDI

My DOS images were in FDI format, so I needed to convert to Mahalito and then to RAW. For each of the images, this required:

swh@virtual-deb-nas:~/dos622$ ../ DOS1.FDI DOS622-1-MHLT
FDI: 1265664 bytes (4096 header + 1261568 body)
77 cyls, 2 heads, 8 sectors/track, 1024 bytes/sector => body 1261568 bytes
writing to DOS622-1-MHLT.2hd and DOS622-1-MHLT.dat
swh@virtual-deb-nas:~/dos622$ ../ DOS622-1-MHLT.2hd DOS622-1

This results in the following files from one disk image:

swh@virtual-deb-nas:~/dos622$ ls -l DOS622*
-rw-r--r-- 1 swh swh   10175 Jun  6 18:58 DOS622-1.2hd
-rw-r--r-- 1 swh swh 1261568 Jun  6 18:58 DOS622-1.dat
-rw-r--r-- 1 swh swh   10175 Jun  6 18:57 DOS622-1-MHLT.2hd
-rw-r--r-- 1 swh swh 1015808 Jun  6 18:57 DOS622-1-MHLT.dat

You can ignore everything but the final DOS622-1.dat. We need to write this to our floppy, but beforehand we need to format our floppy! Slap a disk in and enter the following:

swh@virtual-deb-nas:~/dos622$ sudo ufiformat -f 1232 /dev/sdb
geometry: track=77, head=2, sector=8, block=1024
formatting track=76, head=1...

Once it's done, we can write or first image:

swh@virtual-deb-nas:~/dos622$ sudo dd if=DOS622-1.dat of=/dev/sdb bs=64k
19+1 records in
19+1 records out
1261568 bytes (1.3 MB, 1.2 MiB) copied, 27.4431 s, 46.0 kB/s

Done! 1.3mb Written! Did it work?

Rinse and repeat for the rest!

Filed under: Retro No Comments