OSWORD &7F Memory Corruption ============================ OSWORD &7F incorrectly assumes it owns the absolute workspace instead of just the NMI workspace. Consequently, it corrupts certain memory locations in page &10. This can cause problems with other software that owns the absolute workspace and then calls OSWORD &7F. These are the locations corrupted by various versions of DFS. Calling software should not touch these locations and should not rely on their contents afterwards. OSWORD &7F also corrupts many locations in zero page at &B0-&CF, but it is quite easy to stack all 32 locations before calling OSWORD &7F and then restore them all afterwards. Acorn 0.90 Acorn DFS 1.20 Acorn DFS 2.10 ---------- -------------- -------------- 1072/3/4/5=address 1072/3/4/5=address 1087=7F 1080=01 1080=01 1088=04 drive 0/2 flag 10C9=00 1082=FF 1089 drive 1/3 flag 108B must be FF - drive 0 flag 108C must be FF - drive 1 flag 108D must be FF - drive 2 flag 108E must be FF - drive 3 flag 10D6=00 1083=00 10D3 b7=I own NMI 1085=b7 set 10D6=Tube presence flag 10C8=00 10DE must be b7=0 - drive 0 flag 10D3=A9 10DF must be b7=0 - drive 1 flag 10D5=00 10E0 must be b7=0 - drive 2 flag 10E1 must be b7=0 - drive 3 flag Watford DFS 1.10/1.30/1.43/1.44 Watford DDFS 1.54 ------------------------------- ----------------- 1042=00 1030=02 1043=FF 1036=80 1044 must be 00 1038=63 104A=last drive used 103F=0A 1078=drive 0 flag 1042=00 1079=drive 1 flag 1043=FF 107A=drive 2 flag 1044 must be 00 107B=drive 3 flag 104A=last drive used 1088=00/FF 1078=drive 0 flag 1089=00/01 1079=drive 1 flag 108A=00 107A=drive 2 flag 107B=drive 3 flag 1088=88 1089=00/01 108A=00 10A0/1/2/3=addr 10A4=00 10A5=01 10A6=00 10A7=01 10A8=02 10A9=03 10AA=94