Mac68k Forums

Home


Welcome, Guest
Guest Settings
Help

Mac68k Forums » Development » Software Hacking

Thread: Serial Disk Driver


Reply to this Thread Reply to this Thread Search Forum Search Forum Back to Thread List Back to Thread List

Permlink Replies: 72 - Pages: 5 [ Previous | 1 2 3 4 5 ] - Last Post: Oct 29, 2013 12:19 PM Last Post By: bbraun
bbraun


Posts: 493
Registered: 7/25/12
Re: Serial Disk Driver
Posted: Dec 9, 2012 11:40 PM   in response to: techknight in response to: techknight
Click to report abuse...   Click to reply to this thread Reply
In theory, yes it can be placed in ROM. I spent some time attempting to do so a while back, and had some trouble. It's a little complicated since it chains off the serial drivers, which are loaded later in the boot process than most other drivers. That just needed some rearrangement of the code (I took the SERD driver loading, moved it into the disabled RAM test area, added the load of the serial disk driver afterwards, and then returned). The driver its self would probably need some minor changes as well. Currently the driver uses a VBL task to poll for a disk image periodically, and then mount it when found. For booting, the server and disk image would need to be found synchronously in order to ensure it is ready to go by the time the system boots. So it's a slightly different operating model.
dougg3

Posts: 190
Registered: 8/13/12
Re: Serial Disk Driver
Posted: Dec 19, 2012 9:28 PM   in response to: bbraun in response to: bbraun
Click to report abuse...   Click to reply to this thread Reply
This serial disk driver is awesome, thanks bbraun!

I ported the server code to Windows. I'm not a Win32 programmer so I hope I did everything correctly. Tested in Windows 98, Windows XP, and Windows 7. Beware, fairly ugly #ifdefs scattered throughout the code for Windows support. But it works. Compiles with MinGW with the command "make CC=gcc", but I also supplied a .exe in the zip file.

I'm pretty sure from past experience if you use a COM port number higher than 9 you will need to reference, for example, COM14 as: \\.\COM14 when you pass the port name to the server. I guess I could fix it in the code but I'm too lazy right now :-P

serialserver0.8-win.zip
Bunsen

Posts: 39
Registered: 10/15/12
Re: Serial Disk Driver
Posted: Dec 21, 2012 7:13 AM   in response to: dougg3 in response to: dougg3
Click to report abuse...   Click to reply to this thread Reply
In regards to overclocking the serial port: somewhere around here I have a few of the Farallon Localtalk-Ethernet adapters that do this. Would analyzing them help at all?
bbraun


Posts: 493
Registered: 7/25/12
Re: Serial Disk Driver
Posted: Dec 21, 2012 11:14 AM   in response to: Bunsen in response to: Bunsen
Click to report abuse...   Click to reply to this thread Reply
The driver currently works at 57600, so not using the full 230kbps of the available clocks. External clocking won't give any speed improvement with the current driver.
tt


Posts: 144
Registered: 8/25/12
Re: Serial Disk Driver
Posted: Dec 27, 2012 6:24 PM   in response to: landonf in response to: landonf
Click to report abuse...   Click to reply to this thread Reply
landonf, do you think your AVR code could be ported to the *duino platform as a library without too much effort? There are shields available for SD cards and adding a serial interface would be fairly straightforward. It might make obtaining the HW a little more accessible.
landonf


Posts: 86
Registered: 7/23/12
Re: Serial Disk Driver
Posted: Dec 28, 2012 11:28 AM   in response to: tt in response to: tt
Click to report abuse...   Click to reply to this thread Reply
tt wrote:
landonf, do you think your AVR code could be ported to the *duino platform as a library without too much effort? There are shields available for SD cards and adding a serial interface would be fairly straightforward. It might make obtaining the HW a little more accessible.

I can't imagine it would be too difficult, but I'm not particularly familiar with Arduino. One could always just use the Arduino hardware directly, too.
bbraun


Posts: 493
Registered: 7/25/12
Re: Serial Disk Driver
Posted: Jan 3, 2013 8:09 PM   in response to: bbraun in response to: bbraun
Click to report abuse...   Click to reply to this thread Reply
I've got the serial disk driver integrated into the IIsi ROM, and can boot from it. It's not a floppy or a slot or a SCSI device, so it can't be selected as a default boot device, which essentially means if you have a boot device set in PRAM, the serial disk will never be booted. If there is no boot device set in PRAM, the system just traverses the drive queue looking for a bootable disk, so it's entirely dependent on the order of drives in the drive queue. The driver is still kicking off the requests to the server asynchronously, so it's a bit non-deterministic when the server is found and the drive is responsive. What this means is, if you have the serial server up and running so it can be found immediately, the serial disk will boot if you've got no SCSI drive, or if your SCSI drive is slow at spinning up.

The serial disk driver is placed where the .ATBOOT driver lives, and the .ATBOOT driver has been renamed .SerDsk. To get the driver loaded and opened, I relocated the code that populates the WarmStart global variable, added the following code, and replaced the WarmStart with a jsr to the relocated/added code. The new code is added after the added color happymac code in what used to be the memory test routine.
dc.w $21FC
dc.w $574C
dc.w $5343
dc.w $0CFC
sub #$32, a7 ; allocate a parameter block on the stack
move.l a7, a0
clr.b $1b(a0) ; clear out IOPermssn
lea serdiskname, a1
move.l a1, $12(a0) ; load the ioFileName
dc.w $A000  ; _Open
cmp #0, d0
beq done      ; If _Open failed, stay here, for debugging purposes
loop:
bra loop
done:
add #$32, a7 ; deallocate parameter block
rts
 
serdiskname:
dc.b $07
dc.b ".SerDsk"


Here is the ROM image. It includes the rom disk for 8MB rom simms, color happy mac, and all the other goodies.

Remember, with this ROM, the modem port will always be in use by the serial disk. If you attach a serial cable and serial server at any time after boot, it should pop up with the serial disk after a couple seconds.
bbraun


Posts: 493
Registered: 7/25/12
Re: Serial Disk Driver
Posted: Jan 8, 2013 9:37 PM   in response to: bbraun in response to: bbraun
Click to report abuse...   Click to reply to this thread Reply
FWIW, there's a problem booting System 7 from the serial disk in ROM. I'm
not exactly sure what the problem is at this point, although my guess is
System 7 is doing something like replacing the serial drivers during boot
which cause the state to get reinitialized and break the serial disk
driver's use of it.

But System 6.0.8 seems to work fine.
techknight

Posts: 110
Registered: 10/13/12
Re: Serial Disk Driver
Posted: Jul 19, 2013 11:30 PM   in response to: bbraun in response to: bbraun
Click to report abuse...   Click to reply to this thread Reply
I was going to use serialdisk just for storage anyway. its a really dirt cheap and albeit slow way to access an SD card at least ;-)
bbraun


Posts: 493
Registered: 7/25/12
Re: Serial Disk Driver
Posted: Jul 20, 2013 12:36 AM   in response to: techknight in response to: techknight
Click to report abuse...   Click to reply to this thread Reply
Now that I've got a bazillion rpi's and beaglebone blacks, I've been contemplating extending the serial disk to multiplex multiple things. Like a virtual ethernet. My todo seems longer than ever though, so who knows.
techknight

Posts: 110
Registered: 10/13/12
Re: Serial Disk Driver
Posted: Jul 20, 2013 3:51 PM   in response to: bbraun in response to: bbraun
Click to report abuse...   Click to reply to this thread Reply
would be kind of handy to have a serial ethernet driver. lol. Well, i know they make serial based WiFi devices, such as the RN171 wiFly module, etc... which is wifi over serial, you can establish DHCP, UDP and TCPIP links directly in the module and open a socket inside the module, from there, the datapath is serial, its up to the client to parse the data comming from the port, which would be raw HTTP or FTP or etc.
bigmessowires


Posts: 217
Registered: 10/29/13
Re: Serial Disk Driver
Posted: Oct 29, 2013 1:10 AM   in response to: bbraun in response to: bbraun
Click to report abuse...   Click to reply to this thread Reply
This is a cool project! What are you guys connecting to to serve the serial data? From page 1 the original goal was some embedded hardware with an SD card, but it looks like in practice everyone is connecting to a Windows PC or modern Mac? How are you making the physical connection from the old Mac to the modern PC, with a null modem cable and appropriate cable-end adapters?
bbraun


Posts: 493
Registered: 7/25/12
Re: Serial Disk Driver
Posted: Oct 29, 2013 12:19 PM   in response to: bigmessowires in response to: bigmessowires
Click to report abuse...   Click to reply to this thread Reply
Yeah, at the moment I think everyone is connecting to modern systems for the server side. For cabling, I've mostly been using existing cables, like modem cables. One little hiccup is for the earlier macs with the DE9 serial ports, the ImageWriter I cable looks like it'll work, but most of those cables don't have tx hooked up, since the communication to the ImageWriter I was unidirectional.

The main thing that's preventing this project from being generally useful IMO, is there's no checksumming of the data, so things can go sideways fairly easily. Adding it has been on my todo for a while now...
The other thing I wanted to do was separate the disk driver from the serial protocol, and have a serial muxing driver that allowed more than just disk accesses over the serial protocol. Being able to have multiple logical endpoints over the serial link, and have both disk and ethernet (for instance) over the serial port would be pretty useful I think. Especially when connected to a raspberry pi or something you can just slap on the back of the machine.

Point your RSS reader here for a feed of the latest messages in all forums