I think I found a situation where the BSY transition (BSY is tied to CA1 on the parallel port VIAs, where CA2 is used for handshaking), was not sending IRQs. Still working on this bit, however, it doesn't seem to affect LOS at all.
As an aside was looking to add HLE ProFile read/write support and seeing that LOS is doing some sort of XOR checksum on both reads and writes. Not sure if this is related to the document checksum protection/password thing, but it's interesting anyway. The strange bit is that it doesn't seem to do a whole sector in one shot, or even all the tags together in one shot, but rather in chunks. For example, for tags it does 2-3 tags at a time and I see several repeated calls to this code for a single sector.
I'm unsure about this chunking thing I'm seeing, but, it is what it is.
This read routine does 8x reads per pass (looks like manual loop unrolling) and in between it's doing an EOR to D1 (I removed the register and other outputs to clean it up a bit):
(A2) is the read from the IRA port on the VIA.
It may well be that this checksum is written to the tags. But it's different from other checksums that we see for example in the Boot ROM code, where it would also mix in some shifts to deal with single bit errors, so not as robust. Likely this code was written by someone else who wasn't aware of the code in the Boot ROM.
1 102470 1/00c08a88 (0 0/0/0) : 1012 : .. : 239 : MOVE.B (A2),D0 SRC:clk:00000000038eb7ad +8 clks
102472 src/lisa/io_board/via6522.c:lisa_rb_Oxd800_par_via2:1806:reading from register 1 (I/ORA )| 14:50:38.6 59684781
102476 src/lisa/io_board/via6522.c:via2_ira:572:profile.c:READ 00 from ProFile, pc24:00c08a88 tag:profile state:10| 14:50:38.6 59684781
102482 1/00c08a8a (0 0/0/0) : b101 : .. : 1278 : EOR.B D0,D1 SRC:clk:00000000038eb7b5 +4 clks
102486 1/00c08a8c (0 0/0/0) : 10c0 : .. : 225 : MOVE.B D0,(A0)+ SRC:clk:00000000038eb7b9 +8 clks
102487 src/lisa/cpu_board/memory.c:dmem68k_store_byte:486::::::WRITE BYTE 00 ' ' to @1/00ad5700 using 17-ram| 14:50:38.6 59684793
2 102491 1/00c08a8e (0 0/0/0) : 1012 : .. : 239 : MOVE.B (A2),D0 SRC:clk:00000000038eb7c1 +8 clks 2nd read
102494 src/storage/profile.c:ProfileLoop:777:ProFile access at PC:1/00c08a8e event:1 read IRA state:10 SEND_DATA_AND_TAGS_STATE idxr,idxw: 529,4 bsy:0 cmd:0 rrw:0| 14:50:38.6 59684801
102503 1/00c08a90 (0 0/0/0) : b101 : .. : 1278 : EOR.B D0,D1 SRC:clk:00000000038eb7c9 +4 clks
102507 1/00c08a92 (0 0/0/0) : 10c0 : .. : 225 : MOVE.B D0,(A0)+ SRC:clk:00000000038eb7cd +8 clks
3 102512 1/00c08a94 (0 0/0/0) : 1012 : .. : 239 : MOVE.B (A2),D0 SRC:clk:00000000038eb7d5 +8 clks
102524 1/00c08a96 (0 0/0/0) : b101 : .. : 1278 : EOR.B D0,D1 SRC:clk:00000000038eb7dd +4 clks
102528 1/00c08a98 (0 0/0/0) : 10c0 : .. : 225 : MOVE.B D0,(A0)+ SRC:clk:00000000038eb7e1 +8 clks
4 102533 1/00c08a9a (0 0/0/0) : 1012 : .. : 239 : MOVE.B (A2),D0 SRC:clk:00000000038eb7e9 +8 clks
102545 1/00c08a9c (0 0/0/0) : b101 : .. : 1278 : EOR.B D0,D1 SRC:clk:00000000038eb7f1 +4 clks
102549 1/00c08a9e (0 0/0/0) : 10c0 : .. : 225 : MOVE.B D0,(A0)+ SRC:clk:00000000038eb7f5 +8 clks
5 102554 1/00c08aa0 (0 0/0/0) : 1012 : .. : 239 : MOVE.B (A2),D0 SRC:clk:00000000038eb7fd +8 clks
102557 src/storage/profile.c:ProfileLoop:777:ProFile access at PC:1/00c08aa0 event:1 read IRA state:10 SEND_DATA_AND_TAGS_STATE idxr,idxw: 532,4 bsy:0 cmd:0 rrw:0| 14:50:38.6 59684861
102566 1/00c08aa2 (0 0/0/0) : b101 : .. : 1278 : EOR.B D0,D1 SRC:clk:00000000038eb805 +4 clks
102570 1/00c08aa4 (0 0/0/0) : 10c0 : .. : 225 : MOVE.B D0,(A0)+ SRC:clk:00000000038eb809 +8 clks
6 102575 1/00c08aa6 (0 0/0/0) : 1012 : .. : 239 : MOVE.B (A2),D0 SRC:clk:00000000038eb811 +8 clks
102587 1/00c08aa8 (0 0/0/0) : b101 : .. : 1278 : EOR.B D0,D1 SRC:clk:00000000038eb819 +4 clks
102591 1/00c08aaa (0 0/0/0) : 10c0 : .. : 225 : MOVE.B D0,(A0)+ SRC:clk:00000000038eb81d +8 clks
7 102596 1/00c08aac (0 0/0/0) : 1012 : .. : 239 : MOVE.B (A2),D0 SRC:clk:00000000038eb825 +8 clks
102599 src/storage/profile.c:ProfileLoop:777:ProFile access at PC:1/00c08aac event:1 read IRA state:10 SEND_DATA_AND_TAGS_STATE idxr,idxw: 534,4 bsy:0 cmd:0 rrw:0| 14:50:38.6 59684901
102608 1/00c08aae (0 0/0/0) : b101 : .. : 1278 : EOR.B D0,D1 SRC:clk:00000000038eb82d +4 clks
102612 1/00c08ab0 (0 0/0/0) : 10c0 : .. : 225 : MOVE.B D0,(A0)+ SRC:clk:00000000038eb831 +8 clks
8 102617 1/00c08ab2 (0 0/0/0) : 1012 : .. : 239 : MOVE.B (A2),D0 SRC:clk:00000000038eb839 +8 clks
102629 1/00c08ab4 (0 0/0/0) : b101 : .. : 1278 : EOR.B D0,D1 SRC:clk:00000000038eb841 +4 clks
102633 1/00c08ab6 (0 0/0/0) : 10c0 : .. : 225 : MOVE.B D0,(A0)+ SRC:clk:00000000038eb845 +8 clks
102639 1/00c08ab8 (0 0/0/0) : 51ca ffce : Q... : 1031 : DBRA.W #$c08a88,D2 SRC:clk:00000000038eb84d +10 clks
Edit: seeing the same kind of read + xor in MacWorks XL 3.0 as well. Since MacWorks is built on top of Monitor OS and Monitor OS was built before LOS, I suspect this is the original source of this behavior, and likely the XOR is used with one of the tags, perhaps as a way for the scavenger program to detect corrupted data.