General Category > LisaList2

Workshop

(1/5) > >>

D.Finni:
I have an article on Lisa Workshop Pascal for Macintosh Development and I'm missing the latest Workshop Supplement '86 disks that should have the latest libraries and interfaces for Macintosh Plus.

Now I came across these three disk images on another site, but the problem is the disks were imaged with DiskCopy 6.x, so there's no tag bytes in these images.

Anyone have these last Supplement '86 disks?

rayarachelian:
Very cool article!
One thing to note, I've seen bugs in LisaEm where the linker throws either a bus error or "Bad Intrin Instruction" error, it may be possible to use LPW in a limited fashion, but you'll likely run into this at some point. A real Lisa would help in your efforts - at least until I find a fix for it, or you could use IDLE.

I do not have those supplement disks, but perhaps the tags can be regenerated. The tags are important for booting LOS - the boot ROM and the boot sector absolutely requires tags, but theoretically it should be possible to regenerate the tags for normal files as what they are, are just volume id, next/previous and file id values, all of which are available elsewhere.
The Lisa file system uses inode like blocks that, unlike unix, also contain file names. The file id is the same as the block id of these inodes offset by the start of the volume (I think the boot blocks - that is file id bbbb might be outside the file system I don't recall off the top of my head). But basically if you find the thing that looks like an inode for a specific file, say that's block # 100 and the first 30 blocks are the boot loader, then the file id should be 70. These values are just examples and have little basis in reality, but for illustration purposes.  ;D The inode like block also has a list of the blocks in the files, I think they're pairs of words indicating a start/stop for a run, also offset to the start of the file system's first actual block. So then, with that you can then set the file id tag on each of those to the inode block #, and then the previous/next as well...
I should be able to whip up some code using libdc42 to be able to resurrect the lost tags from the inodes as described above, but I'm currently swamped with a ton of work related projects which is why it's taking so long to port the old LisaList archive here.  :'(
If they're actual Disk Copy 6 format file, what happens when you restore the Disk Copy 6 images to actual floppies, then reimage them to dc42 format? If they were made as Disk Copy 4 format from Disk Copy 6 they shouldn't need to be converted and might be readable in LPW despite the lack of tags. (Does anyone know the file format that native Disk Copy 6 uses?)

Does LPW reject them when you try?

I do see that bitsavers has Workshop Supplement 85 and not 86 here , which might or might not help.

D.Finni:

--- Quote from: rayarachelian on March 01, 2019, 05:26:35 pm ---Very cool article!
One thing to note, I've seen bugs in LisaEm where the linker throws either a bus error or "Bad Intrin Instruction" error, it may be possible to use LPW in a limited fashion, but you'll likely run into this at some point. A real Lisa would help in your efforts - at least until I find a fix for it, or you could use IDLE.
--- End quote ---
I was wondering if it's an emulator bug... The resulting Macintosh application produced from the Workshop crashes when launched on the Macintosh. I opened MacsBug (the disassembler) and the assembly code isn't being generated correctly. There's some garbage, maybe a debugger label or something, that's getting inserted among the legitimate 68000 instructions.


--- Quote ---I do not have those supplement disks, but perhaps the tags can be regenerated. The tags are important for booting LOS - the boot ROM and the boot sector absolutely requires tags, but theoretically it should be possible to regenerate the tags for normal files as what they are, are just volume id, next/previous and file id values, all of which are available elsewhere.
--- End quote ---
I was looking into doing that too. I am more familiar with the Macintosh filing system and its tags, which are documented in Inside Macintosh. I looked at all the Lisa documentation on Bitsavers archive, and could not find any documentation for Lisa tags.



--- Quote ---I should be able to whip up some code using libdc42 to be able to resurrect the lost tags from the inodes as described above,
--- End quote ---
I could do it if I had access to Lisa file system documentation, or at least an outline of the algorithm needed to reconstruct the tag data.



--- Quote ---If they're actual Disk Copy 6 format file, what happens when you restore the Disk Copy 6 images to actual floppies, then reimage them to dc42 format?
--- End quote ---
Disk Copy 6 has a command to convert the image files to 4.2 format. I did this, and you can mount the resulting image in LisaEm. Then in Workshop, you can read the disk's volume name, but you can't catalog it. This is almost certainly because the tags are missing.

The frustrating thing is that on the Macintosh, I have an application called Read Lisa, that will mount and show ASCII text files from Lisa 3.5" disks. This application works fine to show the contents of these Disk Copy images, but there's no way in the application to do anything more. So all I know is that the data on the disk images is good; it's just the tags are missing because the person used Disk Copy 6 instead of 4.2.

I don't recall the web site source for these disks images, but if I find it again, I'll post the link.


--- Quote ---I do see that bitsavers has Workshop Supplement 85 and not 86 here , which might or might not help.

--- End quote ---
Yeah, maybe I should try only using the 1985 Supplement and see what happens. It could be that trying to mix the 1985 and 1986 files is leading to Macintosh applications which crash.

rayarachelian:

--- Quote ---I was wondering if it's an emulator bug... The resulting Macintosh application produced from the Workshop crashes when launched on the Macintosh. I opened MacsBug (the disassembler) and the assembly code isn't being generated correctly. There's some garbage, maybe a debugger label or something, that's getting inserted among the legitimate 68000 instructions.
--- End quote ---

Yeah, so the Lisa compiler, or perhaps linker will absolutely add the function/procedure name either before or after each function in a weird way, I think off the top of my head it takes the first byte and flips the high bit on, or something like that. I have code in LisaEm when debugging is enabled that looks for these and flags them so I know what's being executed and when. But the emitted code should ignore these and should branch/JSR/JMP around it.


I suspect it's less of a bug than perhaps there's some routine that needs to run that can strip those out and use them as the resource names in CODE resources. Or maybe you're using too new a version of the Mac System Software and it's setting up the CODE resource pointers incorrectly.


The tags are well documented, the Lisa's File System isn't. I started to do that a long time ago, and @claunia finished the job. I have notes somewhere that I've been meaning to turn into a new version of the lisafsh-tool. Perhaps I should revisit that soon'ish.

If you run lisafsh-tool on a proper image with tags and walk through the sectors you'll see the tags and what they mean.

For example:
-----------------------------------------------------------------------------
Sec 0:(0x0000)   Used Block Part of file bootsect-aaaa:"bootsect-aaaa"
-----------------------------------------------------------------------------
            +0 +1 +2 +3 +4 +5 . +6 +7 +8 +9 +a +b
tags:       00 00 00 24 aa aa . 00 00 87 ff 07 ff             
           |volid| ??  |fileid|absnext|next|previous

block 1-26 boot blocks:

Sec 1:(0x0001)   Used Block Part of file OSLoader-bbbb:"OSLoader-bbbb"
-----------------------------------------------------------------------------
            +0 +1 +2 +3 +4 +5 . +6 +7 +8 +9 +a +b
tags:       00 00 00 24 bb bb . 00 01 87 ff 07 ff             
           |volid| ??  |fileid|absnext|next|previous


Off the top of my head, the very earliest versions of the Mac System software did use tags, but in a different way, and later they were totally discarded. Certainly they were gone by the first SCSI Macs, so either the 512KE or the Mac Plus era.

Since really only Lisa Office System (and by extension the Pascal Workshop) needs them, Apple got rid of them and support for them in Disk Copy 6 thinking nobody cared about Lisa anymore. Boy were they wrong! :-D

Let me see how things go with the email system, I'm almost done setting that up. I have one more task to implement before LisaList2 can send out emails, so I might be able to invest a day or two over a weekend writing some code to rebuild LOS tags before going back to the mailing list import project.

D.Finni:

--- Quote from: rayarachelian on March 04, 2019, 09:11:37 am ---
--- Quote ---I was wondering if it's an emulator bug... The resulting Macintosh application produced from the Workshop crashes when launched on the Macintosh. I opened MacsBug (the disassembler) and the assembly code isn't being generated correctly. There's some garbage, maybe a debugger label or something, that's getting inserted among the legitimate 68000 instructions.
--- End quote ---

Yeah, so the Lisa compiler, or perhaps linker will absolutely add the function/procedure name either before or after each function in a weird way, I think off the top of my head it takes the first byte and flips the high bit on, or something like that. I have code in LisaEm when debugging is enabled that looks for these and flags them so I know what's being executed and when. But the emitted code should ignore these and should branch/JSR/JMP around it.
--- End quote ---
I think that's what's going on. Maybe David Craig would recall what's going on.

Because I can see that there is correct code in the CODE resource, as I can see the various toolbox calls to initialize dialogs, menus, textedit, and so on. But there's extra stuff in between these calls that's being executed by the 68000 thus causing an Illegal Instruction error.



--- Quote ---Or maybe you're using too new a version of the Mac System Software and it's setting up the CODE resource pointers incorrectly.
--- End quote ---
I don't think this is the case, as I'm using a Mac 512K and its system software from 1985.



--- Quote ---The tags are well documented, the Lisa's File System isn't. I started to do that a long time ago, and @claunia finished the job. I have notes somewhere that I've been meaning to turn into a new version of the lisafsh-tool. Perhaps I should revisit that soon'ish.

If you run lisafsh-tool on a proper image with tags and walk through the sectors you'll see the tags and what they mean.

[...]
--- End quote ---
Thanks; this should be enough information to get me started.



--- Quote ---Off the top of my head, the very earliest versions of the Mac System software did use tags, but in a different way, and later they were totally discarded. Certainly they were gone by the first SCSI Macs, so either the 512KE or the Mac Plus era.
--- End quote ---
Right. At first tags on the Mac were for file system recovery. I don't know if Apple released any disk utilities that could restore a damaged floppy from its tags, but I do know that FEdit sector editor by John Mitchell had support for tags.

And as you said, Apple later deprecated tags.


--- Quote ---Let me see how things go with the email system, I'm almost done setting that up. I have one more task to implement before LisaList2 can send out emails, so I might be able to invest a day or two over a weekend writing some code to rebuild LOS tags before going back to the mailing list import project.

--- End quote ---
I'll see what I can come up with this weekend too. I'd started writing code to read a Lisa file system several months ago (probably before the summer) and I might revisit it in this time of need. ;-)

Navigation

[0] Message Index

[#] Next page

Go to full version