;       Linked icon block structure (active and buffered)
; Pointed to by workspace!active_ptr and workspace!buffered_ptr (two lists)

                ^       0
next_ptr        #       4       ;       Pointer to next in chain                (-1 if none)
prev_ptr        #       4       ;       Pointer to previous entry in chain      (-1 if none)
icon_handle     #       4       ;       Icon handle (for buffered, open to right of icon handle)
icon_id         #       4       ;       Icon identifier
icon_filetype   #       4       ;       File type of the file to which the icon pertains
icon_spritename #       14      ;       Sprite name
icon_filename   #       0       ;       Full pathname of the file
                ( Size of filname bytes on top of this)

        ASSERT  next_ptr=0
; ----------------------------------------------------------------------------------------------------------------------                  
All the workspace: Takes up about 2K I think.

;       Workspace layout
indirected_space        *       256

workspace       RN      R12
                ^       0,workspace
wsorigin        #       0

mytaskhandle    #       4       ; put here so we know where it is
Filer_taskid    #       4       ; Filer's task id - needed to detect a copy operation
buffered_ptr    #       4       ; head of list of buffered files
active_ptr      #       4       ; head of list of active icons
monotonic_icon_id #     4       ; Monotonically increasing icon identifier (for removals)
tinydir_icon    #       4       ; Flag to say we have a tinydirs icon
max_idle_work   *       (@-wsorigin)
file_store      #       12      ; store for 'file_???'
my_reference    #       4       ; Wimp message reference
no_selected     #       4       ; Number of icons selected
no_icons        #       4       ; Number of icons known about
remove_line     #       32      ; Remove menu option
selection_line  #       16      ; Clear selection menu option
bounding_box    #       16      ; Screen coordinates (bl,tr)
vdu_vars        #       24      ; VDU variables for finding bounding box
dest_x          #       4       ; Destination of load - x position
dest_y          #       4       ; Destination of load - y position
dest_window     #       4       ; Destination of load - window handle
dest_icon       #       4       ; Destination of load - icon handle
source_icon     #       4       ; Icon from which we are sending the DataLoad
weak_selection  #       4       ; Set if and only if last icon selected was created with Menu button
menu_icon       #       4       ; Icon menu was produced on - needed for recreating menus
dest_taskid     #       4       ; Destination taskid for messages
copy_options    #       20      ; Copy options (read from CMOS RAM)
filer_action_copy_options # 4   ; Filer action copy options
control_status  #       4       ; Control button status during a series of dataloads
poll_word       #       4       ; Control status OR buffered_ptr

indirected_data #       indirected_space ; Data area for indirected data from the template file

        ALIGNHASH       wsorigin,16
menu_store      #       &100    ; RAM copy of menu data
tinydir_menu    #       &100    ; Tinydir menu

dataarea        #       &100    ; wimp data block

dest_directory  #       &100    ; destination directory for copy operations

stackbot        #       &200    ;  stack at most 512 bytes long
stacktop        #       0

max_running_work   *       (@-wsorigin)
