• Updated 2023-07-12: Hello, Guest! Welcome back, and be sure to check out this follow-up post about our outage a week or so ago.

Announcing NeoWidEx

stepleton

Well-known member
(Crossposting from LisaList; hope this is OK. I know not everyone reads both forums---I didn't join 68kmla until very recently!)

Hi everyone,

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.jpg.d963207e3d030701c7bc5bcc3c69118c.jpg


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



 

stepleton

Well-known member
Oh, and: I guess today is a good day to point out that NeoWidEx has an easter egg  :lisa2:  .

It's easy to spot if you examine the source, but I wonder if anyone will find it organically. You don't have to use any of the commands that modify your drive in order to access it...

 

mactjaap

Well-known member
I try to test this disk for my widget drive, but Disk Copy 4.2 doesn't recognize it as a valid file. Must be some trick to do this. I downloaded the zip file to a Netatalk Linux box and unzip it. Then mounted the netatalk share to a System 6 Mac and copied the file NeoWidEx.dc42 to it. But...no way it want to open the file.

Anyone knows what to do?

 

mactjaap

Well-known member
Always nice to answer yourself!  :)

I found this utility.

http://dazuma.freeshell.org/filetyper/index.html

Filetyper. If dragged from Mac to Linux, Windows, Zip, Unzip, resource information can get lost. With ResEdit or Filetyper (more simple in use...) you can restore the origional filetype.

Found it online

https://groups.google.com/forum/#!topic/lisalist/-DVxsPsD3Vs

For Compactor (.cpt) archives use:  'CPCT' as the file type and 'PACT'as the creator (without the quotes on all of these.)For StuffIt, use 'SIT5' as the creator and 'SIT!' (or 'SITx') as thetype (there's some version difference there.)For DiskCopy 4.2, use 'dImg' for the file type and 'dCpy' for the creatorFor DART, use 'DART' for the file type and I think the creator is 'DMd2'
So add dImg and dCpy to the file and save and you are done. DiskCopy 4.2 now will recognize the file and let you make a disk.

Will test the disk on my widget tommorrow!

 

mactjaap

Well-known member
Yes. If I switch it I I have to close all the doors in the house for protection of my family ears!

 

mactjaap

Well-known member
Have been reading about the UsbWidEx too. The Servo part is giving me also the most headache. The disk doesn’t want to spin without a soft push or with repetitive switch on and of power. I would like to give it some “pace maker”. Would be great if the UsbWidEx could do this..

if hope someone will take this box in production. Same for the the IDEfile. 

Just missing the engeniering skills to do so.

Did some tests today with NeoWidEx today. Could restore the disk state after a bad start up. The soft reset worked brilliant. After that the disk was seen by the Lisa and it booted fine!

 
Top