You should have copied your Workbench disks with the "clone" parameter, so all the protection bits were cloned.
copy df0:#? dh0: all clone
There is only one rule to make a program pure: it must be reentrant. That means the program must be cappable to run the same code on several tasks concurrently. This is because making the program resident means the program is loaded into memory once and on every call it is just run, without any repeated initialisation.
Bye,
Thomas