Impressive work!
-Chandra


On Sat, Apr 15, 2017 at 8:27 AM, Ray Arachelian <ray.arachelian@gmail.com> wrote:
That's awesome, congrats! 


-------- Original message --------
From: Tom Stepleton <stepleton@gmail.com>
Date: 4/15/2017 6:05 AM (GMT-05:00)
To: LisaList <lisalist@googlegroups.com>
Subject: Announcing NeoWidEx

Hi everyone,

(Remember that bootloader from a while back? I found something to boot with it... :-)

I've made something that might be a useful addition to the Lisa fan's toolbox: a formatting and diagnostic utility for Widget hard drives. In the tradition of Apple's original Widex utility and Patrick Schäfer's UsbWidEx peripheral, the tool has the unimaginative name "NeoWidEx":


NeoWidEx runs on your ROM H Lisa 2, booting from a floppy disk to a familiar user interface. It expects a ProFile-compatible hard drive to be connected to the built-in (internal, on a 2/10) parallel port, and if that hard drive is a Widget, all menu options will be available. You can execute a large subset of the Widget commands from the Widget ERS document, and you can perform some automated actions as well (like formatting a Widget, or searching all sectors on the disk for a byte string). It's pretty easy to read the contents of any sector, edit the data, and write it back. NeoWidEx isn't anywhere near as powerful as UsbWidEx can be (particularly when it's being driven by a program running on a modern PC), but you don't have to know how to do surface-mount soldering to get NeoWidEx running, so it might just be handy in a pinch. (Fun fact: in the time it took me to write NeoWidEx, I learned how to do surface-mount soldering.)

Like all good low-level disk utilities, NeoWidEx makes it a breeze to destroy all of the data on your drive, so be careful!

All of NeoWidEx's code (about 10k lines of 68k assembly) is released into the public domain. Some of the code may be useful for building the user interface for similar tools: as long as you don't mind your program jumping to unpublished routines in the boot ROM (why should I have to re-program all of that stuff?), you get menus, text, and forms for obtaining numerical user input.

Storytime: NeoWidEx was written to investigate a mystery on my Widget, which had a bad evening in 2015 and decided that many of its blocks were failing. The Widget decided to "rescue" the data on these blocks by allocating some of the 74 available spare blocks to substitute for the bad ones. Unfortunately, the Widget decided that many of these spare blocks were also bad, including one of the two that it was already using to store copies of the "spare table"---the Widget's ledger for how the spare blocks are allocated. Fortunately, the Widget designers had a plan for that: simply copy the threatened spare table to yet another spare block.
 
Eventually my Widget felt better about itself, but once blocks are spared, there's no easy way to get the drive to un-spare them. Worse yet, enough spare blocks were in use that the Office System warned me that the Widget needed servicing. I didn't understand why the drive had gone bad all of a sudden and decided to write a tool to investigate. A look at the spare table revealed the situation just described, and although it's possible to "reset" the original spare table copies with the Widget's "Initialize_SpareTable" command, this couldn't clear the "spared spare table" that had been saved on a different spare block.
 
As long as the extra spare table was around, the Widget would find it on power-up and consider it authoritative. So, I wrote NeoWidEx's "grep" capability to find the errant spare table on the drive (this was before I fully understood where spare blocks were found on the disk). Overwriting the extra spare table with zeros meant that the "reset" spare table copies became authoritative. All those "bad" blocks passed the next surface scan with flying colours; my Widget was back to normal!
 
(Well, the transient issue that made it decide that so many blocks were bad is probably still lurking, but fixing that will have to be a job for another time!)

Anyway, here's where to find NeoWidEx: https://github.com/stpltn/NeoWidEx

Lots of people have done things to help me make NeoWidEx, and most of them probably don't know it! Dr. Schäfer knows---his insights and project documentation were very helpful---but other essential aids include LisaEm, BLU, Floppy Emu, Bitsavers, and of course the whole Lisa community in general. Thanks everyone!

I hope NeoWidEx is useful. Enjoy,
--Tom

--
--
-----
You received this message because you are a member of the LisaList group.
The group FAQ is at http://lowendmac.com/lists/lisa.html
To post to this group, send email to lisalist@googlegroups.com
To leave this group, send email to lisalist+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/lisalist
---
You received this message because you are subscribed to the Google Groups "LisaList" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lisalist+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
--
-----
You received this message because you are a member of the LisaList group.
The group FAQ is at http://lowendmac.com/lists/lisa.html
To post to this group, send email to lisalist@googlegroups.com
To leave this group, send email to lisalist+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/lisalist
---
You received this message because you are subscribed to the Google Groups "LisaList" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lisalist+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
--
-----
You received this message because you are a member of the LisaList group.
The group FAQ is at http://lowendmac.com/lists/lisa.html
To post to this group, send email to lisalist@googlegroups.com
To leave this group, send email to lisalist+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/lisalist
---
You received this message because you are subscribed to the Google Groups "LisaList" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lisalist+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.