As you suggested, "!SetType" now works for file types that don't have an icon. Before a file type icon is added to the icon bar, line 590 checks the the desktop's sprite pool to see if the appropriate "file_***" sprite exists. If it doesn't exist then the procedure "create_sprite" is called, and this creates the sprite in the desktop's sprite pool as follows:
   
  Line 660 obtains the address of the desktop's RAM sprite area.
       670 expands this area to accomodate the sprite that will be created.
       680 relfects the expansion in the first word of the new sprite area.
       690 obtains the address of the Window manager's workspace.
       700 updates the Window manager's pointer to the sprite area.
       710 creates the sprite.
   720-760 writes to the sprite.

The sprite then appears on the icon bar, and any files dragged onto it will have their type changed appropriately and they'll appear in the directory viewer as the new sprite.

This new version also replaces the checking of the "File$Type" variables with the SWI "OS_FSControl 31" which converts a string into a filetype. This call allows a filetype string to be entered in any case, and a filetype number to be entered in any base (default hex). It also means that the program length is kept down, and the whole application should now occupy about a page and a half in the magazine.