From 485575059f3c9117738967c019211b94e2e07d07 Mon Sep 17 00:00:00 2001 From: Neil Turton <nturton@gitlab.riscosopen.org> Date: Mon, 13 Jan 1997 12:16:31 +0000 Subject: [PATCH] Files removed from merged WIMP --- .gitattributes | 2 - BlackLog | 1311 ----------------- Resources/UK/Sprites,ff9 | Bin 76088 -> 0 bytes Resources/UK/Sprites22,ff9 | Bin 272 -> 0 bytes Resources/UK/Sprites23,ff9 | Bin 29160 -> 0 bytes Resources/UK/Template3D,fec | Bin 937 -> 0 bytes Resources/UK/Templates,fec | Bin 637 -> 0 bytes Resources/UK/Tools,ff9 | Bin 11500 -> 0 bytes Resources/UK/Tools3d,ff9 | Bin 33932 -> 0 bytes Test/!Double/!Run,feb | 19 - Test/!Double/!RunImage,ffb | Bin 1769 -> 0 bytes Test/!Double/Templates,fec | Bin 132 -> 0 bytes Test/!ManyWinds/!Run,feb | 19 - Test/!ManyWinds/!RunImage,ffb | Bin 5709 -> 0 bytes Test/!ManyWinds/Templates,fec | Bin 331 -> 0 bytes Test/!MenuTree/!Run,feb | 19 - Test/!MenuTree/!RunImage,ffb | Bin 4478 -> 0 bytes Test/!MenuTree/Templates,fec | Bin 412 -> 0 bytes Test/!Monitor/!Boot,feb | 15 - Test/!Monitor/!Run,feb | 17 - Test/!Monitor/!runimage,ff8 | Bin 11108 -> 0 bytes Test/!Monitor/Templates,fec | Bin 382 -> 0 bytes Test/!Monitor/c/Monitor | 110 -- Test/!Open/!Run,feb | 19 - Test/!Open/!RunImage,ffb | Bin 1588 -> 0 bytes Test/!Open/Templates,fec | Bin 132 -> 0 bytes Test/!Redraw/!Run,feb | 19 - Test/!Redraw/!RunImage,ffb | Bin 1682 -> 0 bytes Test/!Redraw/Templates,fec | Bin 132 -> 0 bytes Test/!Redraw2/!Run,feb | 20 - Test/!Redraw2/!RunImage,ffb | Bin 1682 -> 0 bytes Test/!Redraw2/Sprites,ff9 | Bin 2584 -> 0 bytes Test/!Redraw2/Templates,fec | Bin 206 -> 0 bytes Test/!Test/!Boot,feb | 18 - Test/!Test/!RUNIMAGE,ff8 | Bin 37860 -> 0 bytes Test/!Test/!Run,feb | 21 - Test/!Test/!Sprites,ff9 | Bin 924 -> 0 bytes Test/!Test/Templates,fec | Bin 282 -> 0 bytes Test/!Test/Templates1,fec | Bin 288 -> 0 bytes Test/!Test/sprites,ff9 | Bin 736 -> 0 bytes Test/!Valid/!Boot,feb | 15 - Test/!Valid/!Run,feb | 17 - Test/!Valid/!RunImage,ffb | Bin 1738 -> 0 bytes Test/!Valid/Templates,fec | Bin 1052 -> 0 bytes Test/!WimpBUG/!Run,feb | 17 - Test/!WimpBUG/!Runimage,ffb | Bin 1790 -> 0 bytes Test/!WimpBUG/Templates,fec | Bin 261 -> 0 bytes Test/Arrows,aff | Bin 208 -> 0 bytes Test/FontTest,fec | Bin 582 -> 0 bytes Test/GrabMem,ffb | Bin 1281 -> 0 bytes Test/PlotIcon,ffb | Bin 894 -> 0 bytes Test/PollWord,ffb | Bin 1554 -> 0 bytes Test/ShowSpr,ffb | Bin 2106 -> 0 bytes Test/TestMsg,ffb | Bin 1049 -> 0 bytes Test/TwoTasks,ffb | Bin 1230 -> 0 bytes Test/WimpInit,ffb | Bin 865 -> 0 bytes "Test/[\210\211\243\212\213]" | 0 Test/swap,ffb | Bin 808 -> 0 bytes Test/test1,feb | 15 - Test/test2,feb | 15 - Test/trans,feb | 16 - Test/trans1,ffb | Bin 865 -> 0 bytes Test/trans2,ffb | Bin 717 -> 0 bytes s/W08_oldway | 2562 --------------------------------- 64 files changed, 4266 deletions(-) delete mode 100644 BlackLog delete mode 100644 Resources/UK/Sprites,ff9 delete mode 100644 Resources/UK/Sprites22,ff9 delete mode 100644 Resources/UK/Sprites23,ff9 delete mode 100644 Resources/UK/Template3D,fec delete mode 100644 Resources/UK/Templates,fec delete mode 100644 Resources/UK/Tools,ff9 delete mode 100644 Resources/UK/Tools3d,ff9 delete mode 100644 Test/!Double/!Run,feb delete mode 100644 Test/!Double/!RunImage,ffb delete mode 100644 Test/!Double/Templates,fec delete mode 100644 Test/!ManyWinds/!Run,feb delete mode 100644 Test/!ManyWinds/!RunImage,ffb delete mode 100644 Test/!ManyWinds/Templates,fec delete mode 100644 Test/!MenuTree/!Run,feb delete mode 100644 Test/!MenuTree/!RunImage,ffb delete mode 100644 Test/!MenuTree/Templates,fec delete mode 100644 Test/!Monitor/!Boot,feb delete mode 100644 Test/!Monitor/!Run,feb delete mode 100644 Test/!Monitor/!runimage,ff8 delete mode 100644 Test/!Monitor/Templates,fec delete mode 100644 Test/!Monitor/c/Monitor delete mode 100644 Test/!Open/!Run,feb delete mode 100644 Test/!Open/!RunImage,ffb delete mode 100644 Test/!Open/Templates,fec delete mode 100644 Test/!Redraw/!Run,feb delete mode 100644 Test/!Redraw/!RunImage,ffb delete mode 100644 Test/!Redraw/Templates,fec delete mode 100644 Test/!Redraw2/!Run,feb delete mode 100644 Test/!Redraw2/!RunImage,ffb delete mode 100644 Test/!Redraw2/Sprites,ff9 delete mode 100644 Test/!Redraw2/Templates,fec delete mode 100644 Test/!Test/!Boot,feb delete mode 100644 Test/!Test/!RUNIMAGE,ff8 delete mode 100644 Test/!Test/!Run,feb delete mode 100644 Test/!Test/!Sprites,ff9 delete mode 100644 Test/!Test/Templates,fec delete mode 100644 Test/!Test/Templates1,fec delete mode 100644 Test/!Test/sprites,ff9 delete mode 100644 Test/!Valid/!Boot,feb delete mode 100644 Test/!Valid/!Run,feb delete mode 100644 Test/!Valid/!RunImage,ffb delete mode 100644 Test/!Valid/Templates,fec delete mode 100644 Test/!WimpBUG/!Run,feb delete mode 100644 Test/!WimpBUG/!Runimage,ffb delete mode 100644 Test/!WimpBUG/Templates,fec delete mode 100644 Test/Arrows,aff delete mode 100644 Test/FontTest,fec delete mode 100644 Test/GrabMem,ffb delete mode 100644 Test/PlotIcon,ffb delete mode 100644 Test/PollWord,ffb delete mode 100644 Test/ShowSpr,ffb delete mode 100644 Test/TestMsg,ffb delete mode 100644 Test/TwoTasks,ffb delete mode 100644 Test/WimpInit,ffb delete mode 100644 "Test/[\210\211\243\212\213]" delete mode 100644 Test/swap,ffb delete mode 100644 Test/test1,feb delete mode 100644 Test/test2,feb delete mode 100644 Test/trans,feb delete mode 100644 Test/trans1,ffb delete mode 100644 Test/trans2,ffb delete mode 100644 s/W08_oldway diff --git a/.gitattributes b/.gitattributes index c5f607c..1f3dca7 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,4 +1,2 @@ hdr/** gitlab-language=armasm linguist-language=armasm linguist-detectable=true s/** gitlab-language=armasm linguist-language=armasm linguist-detectable=true -*,ffb gitlab-language=bbcbasic linguist-language=bbcbasic linguist-detectable=true -**/c/** gitlab-language=c linguist-language=c linguist-detectable=true diff --git a/BlackLog b/BlackLog deleted file mode 100644 index e9a75ae..0000000 --- a/BlackLog +++ /dev/null @@ -1,1311 +0,0 @@ -*************************************************************************** -* * -* Project: RiscOS * -* * -* Module: Wimp * -* * -* Created: Wed 24-Oct-90 By: Ran Mokady * -* * -* First version: 2.80 * -* * -* Copyright: (C) 1990, Acorn Computers Ltd., Cambridge, England. * -* * -*************************************************************************** - -Purpose: -======== - -The WIMP. - -*************************************************************************** - - -Change Log: -=========== - -Version 2.01 - * Pending slot is now scanned on screen remapping - -Version 2.02 - * Wimp objects to > 256 pages, not >= 256 - -Version 2.03 - * Message block too small is now checked for - -Version 2.04 - * Up-to-date value of CAOPointer is now read in OS_ChangeDynamic - - don't store CAOPointer in Service_NewApplication - - don't overwrite CAOPointer in Wimp_Initialise - -Version 2.05 - * Doesn't give address exception if 0 pages on startup any more - -Version 2.06 - * Wimp_ReportError <escape> now returns R1=1 or 2 as appropriate - -Version 2.07 - * Enable interrupts in Service_MemoryMoved (MOS bug) - -Version 2.08 - * Implement 2-way scrolling (drag_scrollboth) - -Version 2.09 - * Errors in Wimp_Poll are reported internally - * Disables escape conditions explicitly when Wimp_Poll is called - -Version 2.10 - * Remember pointer position over a mode change - * Use separate buffers for errors and starttask - (Problems if task causes an upcall) - * Report error if window deleted while dragging - * Stop dragging menu / dbox if menus closed - * *Help WimpSlot message altered slightly - * Move dynamic error block up 4 bytes - (It's overlaid on the error handler's buffer!) - * Ensure that Wimp_CreateMenu can return an error - * Check for errors while creating menu icons - * Delete menu window if error while creating icons - * Correct behaviour of caret / menu selection - -Version 2.11 - * Switch off pointer during 2-D scrolling - -Version 2.12 - * Return child's task handle from Wimp_StartTask (0 if dead) - -Version 2.13 - * Issue Open_Window_Requests after a mode change later on (ie. on the next - call to Wimp_Poll). This allows the window structure to be rearranged - on receipt of the Mode_Change message. - -Version 2.14 - * Bugfix to the above: a copy of the window list is made, in case - 'backdrop' windows cause the window ordering to change, and the - background and iconbar windows are opened before the Mode_Change message - is returned, for compatibility. - -Version 2.15 - * Pointer readjustment when dragged window's extent changes is now fixed - properly (eg. when dragging Filer windows around, the pointer remains - over the resize box as it should). - -Version 2.16 - * WimpFlags CMOS bit 5 set => windows are allowed to go off the - bottom-right of the screen when being dragged by the title bar and when - Wimp_OpenWindow is called on them, unless bit 13 of the window flags is - set. Bit 14 of the window flags acts similarly, but is cancelled after - the next call to Wimp_OpenWindow relating to that window. - * Menus automatically have bit 13 of their windowflags set, as well as - dboxes (ie. windows which are opened using Wimp_CreateMenu or - Wimp_CreateSubMenu). - * When a window is toggled to full size, or when it is being reopened - because a mode change has occurred, the Wimp sets bit 14 of the window - flags first (so the next Wimp_OpenWindow will cause it to be kept on the - screen). - * Window extent supplied in Wimp_CreateWindow and Wimp_SetExtent is - automatically rounded to pixels by the Wimp. - * Double-click with different buttons is not allowed any more - * Fix bug: iconbar scrolls if the pointer is moved over either end, even - if a drag is in progress at the time - -Version 2.17 - * Fix bug: scroll bar dragging when window is partly off-screen - * Change pointer shape during double-click period - * Cancel double-click as soon as ptr moves away - * Cancel double-click if Wimp_DragBox is called - -Version 2.18 - * Fix bug: double-click ptr was not reset if shape <> 1 - * If the menu-owning application knows about Wimp 2.18 (ie. - Wimp_Initialise was called with R0 >= 218, R1 = "TASK"), then messages - destined for menu windows are forwarded to the menu owner task. - * Wimp_GetMenuState can be called to determine the current state of the - menu tree (null tree if you are not the menu owner). It can also - determine the menu tree corresponding to a given window/icon if the - window is a menu or an open dialogue box. - -Version 2.19 - * Increase drag timeout period from 0.2 seconds to 0.5 seconds - * Report a drag button event immediately if the button is held down and - the mouse is moved by 16 OS units or more (as for double-click - cancellation). - -Version 2.20 - * Mode_Change message and reopen-window messages are only sent after a - mode change if an old-style task was not active when the call to - Wimp_SetMode was made, or at any time after that prior to the next - Wimp_Poll. This is so that old-style tasks do not get new-style windows - being reopened on top of them, if they execute Wimp_SetMode in their - !Run sequence (some programs such as !Delta execute Wimp_SetMode (R0=12) - to try to get the RISC OS Wimp to behave in a more compatible way with - the Arthur 1.20 version). - * Wimp_SetMode is now allowed while a command window is pending, without - activating it, and if the command window was already active before the - mode change, a VDU 4 is executed afterwards (to keep the text visible). - * *Wimp_SetMode <number> now causes SWI XWimp_SetMode to be called with - the number supplied. This command can be put into !Run files by users - for convenience (eg. if they prefer a certain package to work in a - particular mode). The default !Run files of packages should not cause - the mode to change. - -Version 2.21 - * New parameters to Wimp_CreateIcon allowed: - [R1,#0] = -3 => create icon on iconbar to left of icon handle R0 - -4 => create icon on iconbar to right of icon handle R0 - R0 = handle of icon to open next to, if [R1,#0] = -3 or -4 - R0 = -1 => create icon at extreme left (-3) or right (-4) - This allows icons to be recreated and deleted (in order to change their - width, for example) such that they stay in the same relative position on the - iconbar. - -Version 2.22 - * BUG FIX: Wimp 2.21 preserves R10 (handle) over calls to 'openiconbar', - which means that the value of 'handle' is not set up correctly for the - next call to 'recalcposns' after a mode change. This in turn results in - OS memory being scrambled, and address exceptions occurring etc. - -Version 2.23 - * If application sets R0 >= 223 when calling Wimp_Initialise, then - Wimp_Poll or Wimp_PollIdle with R0 bit 13 clear, bit 22 set => R3 -> - poll word (must NOT be in application space). If R0 bit 23 is also set, - then the word is scanned by the Wimp at the start of the Wimp_Poll loop; - otherwise it is not scanned until just before the Wimp is about to read - the mouse (ie. after all messages have been delivered and - Redraw_Window_Requests sent). If the Wimp finds that the word is - non-zero, then it will return R0=13 from Wimp_Poll, with [R1,#0] = - address of poll word, [R1,#4] = contents. - -Version 2.24 - * Fix bug: the above stuff did not work for Wimp_PollIdle (the error "Bad - parameter passed to Wimp in R0" was returned, even if no bits above bit - 23 were set in R0. - -Version 2.25 - * "*Wimp_SetMode" command changed to "*WimpMode". - -Version 2.26 - * Wimp automatically sets bit 14 of window flags on Wimp_CreateWindow and - Wimp_SetExtent. This forces new windows to be initially on-screen, but - allows them to be dragged off subsequently. - -Version 2.27 - * Menus and dboxes now get bit 14 set, rather than bit 13. This allows - them to be dragged off-screen after initial opening. - -Version 2.28 - * Bit 7 of R1 set on entry to Wimp_ReportError suppresses the 'beep' that - would normally occur if bit 4 of the WimpFlags was clear. - -Version 2.29 - * Drag movement limit increased from 16 to 32 OS units. - -Version 2.30 - * Double-click movement limit increased from 16 to 32 OS units. - * Extra sprites added: file_fea and small_fea. - -Version 2.31 - * Sprites taken out of Wimp and put into Desktop module - * Also spots when the Desktop module dies or re-inits - -Version 2.32 - * Don't give error on initialisation if ROM sprites can't be found - -Version 2.33 - * Fix problem with *WimpPalette opening the command window - * Fix syntax message for *WimpMode <n> - -Version 2.34 - * Make *IconSprites look for <file>23 if in mono mode - * Pick up DeskFS:$.Sprites or DeskFS:$.Sprites23 for ROM sprite area - * Add Wimp_ReadSysInfo R0=1 => R0=current Wimp mode - -Version 2.35 - * Fix bug: OpenWindowRequest messages should always be dealt with by the - Wimp, rather than going to the menu owner (even if he says he knows - about recent Wimps). - -Version 2.36 - * Message_ModeChange, and window re-opening, is only performed after - Wimp_SetMode if the new mode is different from the last mode for which a - message was returned. - * Iconbar doesn't scroll on a mode change - * Escape in a Wimp_ReportError box causes the non-highlighted box to be - selected, or the only box if it is highlighted. Any other key selects - the highlighted box, or the only box if it isn't highlighted. - * Maximum number of created windows increased to 256 - * "Bad Wimp mode" error returned for Wimp_SetMode to double-pixel modes - -Version 2.37 - * If R0 >= 223 on Wimp_Initialise, then Wimp_Poll(Idle) with bit 24 set => - save / restore FP registers. - -Version 2.38 - * Window flags bit 14 (force onto screen once only) moved to bit 21 - * Window flags bit 14 set => drag ignores extent x1 - * Window flags bit 15 set => drag ignores extent y0 - -Version 2.39 - * Use double-width VDU-5 caret if pixel width <= 2 OS units - * Use double-width font caret if caret height > 12 pixel-widths - -Version 2.40 - * Fix bug: don't re-open backdrop and iconbar if same mode - -Version 2.41 - * Fix bug: the following calls should accept window -2: - Wimp_GetWindowState Wimp_GetWindowInfo - Wimp_GetWindowOutline Wimp_ForceRedraw - Wimp_DragBox Wimp_WhichIcon - * Caret made single-width again - * Free pool converted to words, so > 256 pages are allowed - -Version 2.42 - * Default action of f11 is to toggle the iconbar between front and back - -Version 2.43 - * Fix bug: Wimp_ForceRedraw with handle -2 didn't redraw the iconbar - -Version 2.44 - * *WimpMode <n> doesn't do anything if mode is already current. - -Version 2.45 - * Change f11 behaviour to toggle the 'back' bit of the iconbar - * Wimp_GetWindowInfo now accepts R1 bit 0 set => don't return the icon - definitions (ie. just return the window header). R1 bits 0..1 are - cleared before R1 is used as a pointer. - * Wimp_LoadTemplate now accepts R1<=0 => just return R1 = size of buffer - required, R2 = size of indirected data - -Version 2.46 - * Fix bug: Wimp_LoadTemplate mustn't check for R1 >= &8000. - -Version 2.47 - * Make Wimp_OpenWindow prevent windows getting bigger than the screen size - even if they're not being forced onto the screen. - -Version 2.48 - * If ptr_default sprite has its own palette, don't use Wimp palette - on mode change. - -Version 2.49 - * Ignore clicks on greyed-out menu items - * Return Message_MenusDeleted if menus deleted - * Return mouse clicks via messages if message queue non-empty - -Version 2.50 - * Look at ModeFlags HiResMono bit rather than Log2BPP = 0 to decide - whether to use DeskFS:$.Sprites or DeskFS:$.Sprites23 when Wimp starts - up, and whether to look for <name>23 in *IconSprites. - * Wimp_OpenWindow forces the window on screen if it was previously closed. - -Version 2.51 - * Make menu disappear if SELECT clicked on grey item - -Version 2.52 - * Allow interactive help to 'see' greyed-out menu items - * Setting menu flags bit 4 allows you to see submenus of grey items. - -Version 2.53 - * Issue Service_WimpPalette on Wimp_SetPalette - * Return R2 = sender's task handle from Wimp_Poll(Idle) if task knows - about Wimp 2.53. - -Version 2.54 - * Fix bugs: Call int_sendmessage_fromwimp rather than int_sendmessage to - give taskhandle 0 on return from Wimp_Poll. - -Version 2.55 - * Fix bug: *Iconsprites in mode 23 used wrong R2, giving "Bad file name ''". - -Version 2.56 - * Issue Message_MenusDeleted when escape kills menus - -Version 2.57 - * *IconSprites tries <filename>20 if <= 2 OS units per ypix - -Version 2.58 - * *IconSprites tries <filename><x><y><bpp>, then <filename> - It also uses the values cached on startup - * Wimp_ReadSysInfo (2) returns ptr to xeig,yeig,log2bpp - -Version 2.59 - * *WimpTask works from a dead task, by entering the Wimp as an - application, initialising and then doing the SWI Wimp_StartTask. It - then exits via OS_Exit. - -Version 2.60 - * *IconSprites now puts <x><y> or "23" on the end of the filename. - * Wimp_ReadSysInfo (2) returns ptr to suffix - -Version 2.61 - * Implement Wimp$State ("desktop" or "commands") - * Wimp_ReadSysInfo (3) returns state of commandflag - -Version 2.62 - * Wimp_ReadSysInfo (3) returns 0=commands, 1=desktop - * f11 causes iconbar to come to front if covered, and to the back - otherwise. When coming to the front, the backwindow bit is cleared, and - when going to the back,it is set. - -Version 2.63 - * Still send Message_ModeChange even if same mode, and still re-open - windows, but don't force windows onto screen u nless screen size smaller - in x or y. - -Version 2.64 - * Fix FP register saving, and set status=&70000 if not saved - * Fix scrolled menu dotted line redrawing - * Don't send iconbar to back on mode change - * Use OS_CheckModeValid when checking for HiResMono modes initially - * Clear bottom bits of palette entries in Wimp_ReadPalette - -Version 2.65 - * Don't send Message_SlotSize if slot is same size - * Report memory full errors in Wimp_SlotSize correctly - * Make OS_ChangeDynamicArea and findpages work with 16Mb - * Allow pointer to go off bottom-right in size dragging (this in fact - causes the window to expand in the other direction). - * Fix bug: don't zero bottom bytes in Wimp_ReadPalette - * Avoid 16-bit overflow when setting the pointer bounding box. This gets - round a problem with unbounded windows with extent > 2^16, where the - size drag bounds can be too big. - -Version 2.66 - * Fix bug: Wimp_SlotSize corrupted R4 on exit! - -Version 2.67 - * Fix bug: Wimp_LoadTemplate didn't count indirected data properly - * Fix bug: turn double-click ptr off if pending window deleted - * Fix bug: allow validation string pointer = 1 and indirected text size <= - 0 in templates. This allows for indirected sprite icons, where the - 'validation string' pointer is in fact the sprite area CB ptr (0 => - system sprites, 1 => Wimp pool). - -Version 2.68 - * Add "-next" parameter to *WimpSlot command - * Make "-min parameter to *WimpSlot optional - -Version 2.69 - * Altered default Wimp palette so that the bottom two bits of R,G and B - are equal (for all but colour 8). This helps the Wimp and ColourTrans - to agree about the colours in 256-colour modes, and also results in - better matching colours from the Wimp. - -Version 2.70 - * Changed to use ResourceFS - * Included resource files inside module - * Accesses resources via WindowManager$Path - -Version 2.71 - * Implement *WimpWriteDir for changing to Hebrew mode - * Menus with title starting "\" are reversed - * Wimp_ReadSysInfo (4) returns current write direction - -Version 2.72 - * Fix bug: didn't initialise ROM sprites if loaded after ResourceFS - -Version 2.73 - * Added Wimp_CreateIcon window handles -5 to -8 (prioritised) - -Version 2.74 - * Fix bug: iconbar extent should be pixel-aligned - -Version 2.75 - * Fix bug: return click from menu icon if clicked as the mouse enters - -Version 2.76 - * Icons stored separately from windows. This allows window structs to stay still. - * Pass reason code messages <= CloseRequest through the message system - under task ID 'pmiW' ("Wimp"), this enables mode change to send open - messages for all windows. - * Send messages for all windows being opened after a mode change, and stop - using the stack to hold the window stacking order for this operation. - * Implement infinite windows. - * Backwindow bit slightly changed in meaning: now, the frontmost back - window determines where windows opened behind window -2 get opened; if a - specific window handle is given, even if that window is behind a back - window, then the opened window will open behind the window specified. - -Version 2.77 - * Handle rectangle area full redraw screen better. - -Version 2.78 - * Fix bug: address exception when clicking on greyed-out menu item - -Version 2.79 - * Iconize messages implemented. - ---------------------------------------------------------------------------- - -Version: 2.80 Wed 24-Oct-90 Ran Mokady - * Fix bug, address exception when task died while pointer in one of - its windows. - ---------------------------------------------------------------------------- - -Version: 2.84 Sun 28-Oct-90 Ran Mokady - - * 2.81 Changed number of tasks to 128. - - * 2.82 F11 action (Toggle iconbar) moved to F12. - - * 2.83 Fixed bug, drag user sprite called move address first - now calls plot first. - - * Centre error box on screen. - * Fixed bug in 3d writable icons, colour now forced only if icon has a border. - * Fixed bug in 3d icons, wrong colours in 8bpp modes. - * Added r3-> list of messages expected if task knows about version 284 or later. - * Moved task priority and message list code to be conditional on Version >= 284 - and not on Swapping. - * Shift-Full_Size toggle to max size that doesn't hide icon bar. - - ---------------------------------------------------------------------------- - -Version: 2.85 Mon 12-Nov-90 Ran Mokady - -* Added border (B) and pointer (P) commands to validation string of - indirected icons. - ---------------------------------------------------------------------------- - -Version: 2.87 Tue 12-Mar-91 Ran Mokady - - 02-Jan-91 2.86 Read timeouts and distances from CMOS RAM. - Added auto submenu opening. - - - 05-Mar-91 2.87 Fixed bug in messages lists (blocked all messages if - message list was present!). - - Uses OS_ReadSysInfo to read configured mode/Wimpmode. - (Now in same byte). - - ---------------------------------------------------------------------------- - -Version: 2.89 Tue 16-Apr-91 Ran Mokady - - 2.88 Fixed bug: Now Uses OS_ReadSysInfo to read configured - mode in both places where it is read. - - 2.89 Added sysflags_nobounds to enable all windows be opened off screen - in all directions. - * Fixed bug in NewLook stuff that changed graphics clip window - while dragging without instant effects enabled. - * Added UserBars flag to enable the use of sprites for all the window - tools including the scroll bars. - * Removed *Configure wimpmode. - * Changed template loading to use OS_File, and fall back - to OS_GBPB if the OS_File fails. - * Moved toggle icon bar to Shift+F12 - - ---------------------------------------------------------------------------- - -Version: 2.90 Fri 03-May-91 Ran Mokady - - 24-Apr-91 2.90 Cache UserBars sprites on init and mode changes. - * Divided UserBars title sprite into two. - * Read configured mode when first task starts. - * Fixed a number of positioning bugs in UserBars stuff - * Added slowdown code for portable. - * Allow use of 2.00 code if sprites not present for - title and scroll bars. - * Allow aliasing of pressed sprites to no-pressed sprires if - pressed sprite not present. - - - - ---------------------------------------------------------------------------- - -Version: 2.92 Tue 28-May-91 Ran Mokady - - 06-May-91 2.91 Changed delay configuration units to 1/10 sec. - * Added WimpMenuDragDelay - * Fixed bug: horizontal scroll bar vanished in 8bpp modes when - y0 was 0 (R7 was set to 0 on entry to getspriteinfo). - 28-May-91 2.92 Added K command in validation string - * Wimp now looks sprites up in Wimp pool if not found in window's - * - - - ---------------------------------------------------------------------------- - -Version: 2.93 Sat 01-Jun-91 Ran Mokady - - * Bug fixes - ---------------------------------------------------------------------------- - -Version: 2.94 Thu 13-Jun-91 Ran Mokady - - * Bug fixes - - ---------------------------------------------------------------------------- - -Version: 2.95 Mon 22-Jul-91 Ran Mokady - - * Fixed bug, Wimp_ReportError stiffed machine if R1=0 on entry and in text mode. - * Fixed bug, !Madness made icon bar move. - * Added SWI Wimp_AddMessages - * Wimp_Initialise now only reports an error if passed in version is <200 or > 300 - if 200 < version < 300 then 200 is used as the version number. - * Error boxes now only respond to <CR> and <Esc>. - ---------------------------------------------------------------------------- - -Version: 2.96 Wed 07-Aug-91 Ran Mokady - - * Bug fixes - * Revert to old RISC OS 2.00 palette. - - ---------------------------------------------------------------------------- - -Version: 2.97 Wed 28-Aug-91 Ran Mokady - - * Bug fixes - * Added redraw filters. - ---------------------------------------------------------------------------- - -Version: 3.00 Tue 17-Sep-91 Ran Mokady - -Release version ? ---------------------------------------------------------------------------- - -Version: 3.01 Mon 25-Nov-91 Ran Mokady - - * Added Perth power management support. - * Bug fixes - - ---------------------------------------------------------------------------- - -Version: 3.02 Wed 11-Dec-91 David De Vorchik - - 26-Nov-91 Modified to use ColourTrans for colour mapping - 29-Nov-91 Fix bug: WimpSlot now accepts 6 parameters ie: "-min <n>k -max <n>k -next <n>k" - 30-Nov-91 Uses ColourTrans for setting GCOLs. - 30-Nov-91 Wimp_ReadPixTrans now uses dynamic workspace. - 30-Nov-91 Check dither CMOS on mode change and set a suitable workspace location. - 03-Dec-91 Implement Wimp_SetColourMapping. - 05-Dec-91 Optimised for 1:1 mapping on colours - sets needsfactors. - 05-Dec-91 Inversion and greying of sprites re-introduced. - 05-Dec-91 Bug fix: When looking for a sprite tries the wimp pool if all fails. - 05-Dec-91 Bug fix: User gadgets now plot using correct mappings - also optimised for space. - 05-Dec-91 Bug fix: Wimp_ReadPalette reads the mapping palette if applied. - 05-Dec-91 Bug fix: Remapping colours works correctly. - 06-Dec-91 Bug fix: Wimp_ReadPalette now returns the pointer colours if remapping applied. - 06-Dec-91 Bug fix: Screen redraw if Log2BPP >=8 and remapping is *not* applied on setting the palette. - 06-Dec-91 Consistent and improved greying and inversion of sprites. - 09-Dec-91 New caret plotting introduced. - 11-Dec-91 3.02 Bug fix: Caret inversion colours corrected. - Added new sprites. - ---------------------------------------------------------------------------- - -Version: 3.04 Wed 15-Jan-92 David De Vorchik - - 30-Dec-91 Bug fix: Die entry when reporting Wimp cannot die error message. - 10-Jan-92 3.03 In monochrome modes always dither Wimp colours 0-7. - 10-Jan-92 Wimp_ReadPalette works properly; R2 =TRUE means return full 24bit values. - 10-Jan-92 Wimp_SetPalette works properly; R2 =TRUE means user specifing full 24bit values. - 10-Jan-92 Bug fix: recalcpalette no longer forces redraw of the screen unless really needed. - 10-Jan-92 Bug fix: Wimp_ReadPalette returns GCOL in bottom eight bits. - 14-Jan-92 Experiment with new inversion code and ColourTrans functions. - 14-Jan-92 Recoded the despatch of Wimp_ReadSysInfo reason codes. - 15-Jan-92 3.04 Bug fix: When setting palette preserve supremacy bits. - ---------------------------------------------------------------------------- - -Version: 3.05 Thu 23-Jan-92 David De Vorchik - - 15-Jan-92 Bug fix: Screen update in 8BPP modes when palette changed. - 18-Jan-92 Dot dash line rotation speed now based on timer, rather than internal counter. - 23-Jan-92 3.05 Tweeked the rotation speed of the line, tad faster. - ---------------------------------------------------------------------------- - -Version: 3.06 Thu 27-Feb-92 David De Vorchik - - 7-Feb-92 Service_WimpSpritesMoved added - R2,R3 -> ROM, RAM sprite pools. - 7-Feb-92 Added sprite name caching routines. - 7-Feb-92 Intergrated the use of sprite name cache. - 7-Feb-92 Improved sorting performed on the sprite list. - 7-Feb-92 Removed lots of conditional assembly from Wimp01. - 8-Feb-92 Removed more conditional assembly, sorted out internationalised code and service trapping. - 12-Feb-92 Bug fix: Message token lookup for media search boxes. - 12-Feb-92 Bug fix: Wimp_ReportError getting the title bar wrong. - 12-Feb-92 Now uses OS_FindMemMapEntries rather than its own *SLOW* implementation. - 12-Feb-92 Wimp_RemoveMessages added. - 12-Feb-92 Improved seaching of messages list - now stored on a per-task basis. - 12-Feb-92 Bug fix: duplicate removal on sprite list sort is biased towards RAM pool. - 13-Feb-92 More conditional code removed (Wimp06). - 13-Feb-92 Icon borders tidyied and added back in. - 14-Feb-92 Template loading catches resources: objects. - 15-Feb-92 Bug fix: caching sprites gets correct prefix. - 16-Feb-92 Indirected menu titles implemented for long application titles. - 16-Feb-92 Bug fix: indirected title bars and wimp created sub-menus. - 16-Feb-92 Bug fix: Rogers palette problems - not converted properly. - 18-Feb-92 Changed the reseting of filters to a default state, and issuing of Service_RegisterFilters - 18-Feb-92 Re-ordered filter despatch workspace; now called using LDMIA Rx,{WP,PC} - coded to macro. - 18-Feb-92 Wimp_ReadSysInfo (5) get current task + version of task. - 19-Feb-92 Bug fix: all filters passed R2 contain task handle. - 23-Feb-92 Only plot the icon borders if task specified Wimp version >= 306, solves clash of validation strings. - 23-Feb-92 Added *ToolSprites command to allow loading of sprite borders for windows. - 24-Feb-92 Caching of the tool sprites information added. - 24-Feb-92 Bug fix: border sprites not seen by Wimp_PlotIcon / Wimp_SpriteOp - saves confusion. - 25-Feb-92 Finished new tools sprites routines. - 25-Feb-92 Changed syntax of ToolSprites to allow no parameters - meaning default set from WindowManger:Tools. - 25-Feb-92 Bug fix: excessive recaching of sprite border pointers - only does once on a mode change. - 25-Feb-92 Bug fix: does not reprogram the VDU 5 glyphs if the tool sprites are present. - 26-Feb-92 Bug fix: slot size genertes the correct error if not enough memory - not gobbldy gook! - 26-Feb-92 Bug fix: source clipping works properly on window gadgets. - 26-Feb-92 Further optimisation of dofunkytitle, dofunkyhscroll and dofunkyvscroll. - 26-Feb-92 Now keeps SpriteOp paramaters cached to save recalculating them. - 26-Feb-92 Some more conditional code removed. - 26-Feb-92 Bug fix: pre-scroll offset for scroll bars adjusted by borders properly. - 26-Feb-92 3.06 If not sprite tools loaded then falls back to VDU 5 style glyphs, including reprogramming welsh doofers. - - **** BASICLY MADE IT GO LOTS FASTER ***** - ---------------------------------------------------------------------------- - -Version: 3.07 Thu 27-Feb-92 Ran Mokady - - -Removed check for task version on icon plotting. - ---------------------------------------------------------------------------- - -Version: 3.08 Thu 12-Mar-92 Lawrence Rust - - 11-Mar-92 3.08 Fix help message for WimpMenuDragDelay - fixes G-RO-8313 - 12-Mar-92 Messages flag is initialised immediately after claiming ws to ensure - if errors are looked up during init (eg in ValidateMode) no address - exceptions occur (e.g. if invalid configured screen mode). - Fixes RP-0725 and RP-1679 - ---------------------------------------------------------------------------- - -Version: 3.09 Thu 19-Mar-92 Lawrence Rust - - 19-Mar-92 3.09 LRust - Redraw of pressed gadgets fixed to not leave in pressed state - *help text for WimpDragDelay etc. tidied. - Iconsprites now no longer merges the window border tools. - This speeds up *iconsprites and prevents address exceptions - caused by cached toolsprites having moved. - Wimp_SetCaretPosition now pages in task losing caret if icon - has indirected data. - ---------------------------------------------------------------------------- - -Version: 3.10 Thu 02-Apr-92 Lawrence Rust - - * Fixed caret positioning in writable icons by ensuring that - drawicon_system in Wimp04 adjusts for borders before calling - findtextorigin - thus text is correctly aligned in bordered icons. - * Menu titles can be indirected using bit8 of the first menu item - * KA validation string now causes caret to move to the same character - position within the new icon when up or down arrow pressed. - * Fixed bug RP-2025, adjust drag scroll bars without instant vertical effects - erroneously called a user drag routine, and went BANG!! - * Fix RP-1809, Wimp_ReportError now forces VDU output back to the - screen before drawing the error box, and restores re-direction and - other states on exit - * Fixed RP-1913, Wimp_Initialise now accepts any control character to - terminate the task descriptor string. Subr Count0 fixed to do this. - * Fix RP-1537. *WimpPalette now checks that there are exactly 16 palette - entries in the file, thus avoiding problems with the 256 colour variety - * KA validation string cause up/down arrow to move to end of new field, - fixes G-RO-7130, RP-1168 - * Sprite highlighting changed again! fixes RR-1674 and Rp-1402 - * Sprite graying changed again! fixes RP-2094 - * Initptrs now preserves R0, preventing R0 from being corrupted on Service_Reset - * Fix RP-2148 and RP-2150 - F command in validation specifying font colours - now accepts lowercase hex colour numbers. - * Fix RP-2153 - Mode change now uses default colour mappings for the mode to ensure - the physical palette isn't changed by use of Wimp_SetColourMapping to alter - logical colour mapping. In addition Wimp_SetColourMapping also forces - re-caching of tool sprites to ensure the cached palette is correct. - * Fix die entry if tasks are active to restore R12 after (and not before!) - translating the CantKill error. - * Respond to service_InvalidateCache - * Add reason code 7 to ReadSysInfo to return Wimp version - ---------------------------------------------------------------------------- - -Version: 3.11 Tue 07-Apr-92 Lawrence Rust - - * 3D scroll bar routines fixed to only plot icons if clipping rectangle is - non null. Pressed hscroll bars drawn correctly. Fixes RP-1766 and other - 3D tool complaints. - * Service_InvalidateCache disposes of tool_list only, redrawing window with - empty tool_list calls maketoollist to re-cache tool info. - ---------------------------------------------------------------------------- - -Version: 3.12 Thu 16-Apr-92 Lawrence Rust - -* ExitPoll only calls post filter if event in R0 is valid (ie not when - R0 is setup for Wimp_StartTask. -* ExitPoll call to portable module for non null events optimised. -* Recoded scanpollwords to use a packed list of pollword tasks to improve - search time. Fixes G-RO-7574 -* Submenus now displayed immediately to right of arrow (left in hebrew), not - to right of window, in case title wider than item. -* Fixed template loading to correctly preserve file handle if insufficient - RMA to cache the file. Fixes RO-8608 (Acorn DTP not starting on 1 Mb machine). -* Wimp_ReportError correctly returns cancel if escape pressed with highlight on ok - ---------------------------------------------------------------------------- - -Version: 3.13 Thu 23-Apr-92 Ran Mokady - -* Remove input focus from iconized windows. - ---------------------------------------------------------------------------- - -Version: 3.14 Fri 24-Apr-92 Ran Mokady - -* Fixed redraw bug, caret size now takes into account the icon border. - - ---------------------------------------------------------------------------- - -Version: 3.15 Fri 24-Apr-92 Ran Mokady - -* Stop text in non indirected sprite and text icons from being printed if an - error occurs when plotting the sprite. Fixes bug in !PinPoint. - -* Pass correct registers to blockcopy filter. - -* Call rectangle filter when system area of window is being drawn. - - - ---------------------------------------------------------------------------- - -Version: 3.16 Thu 30-Apr-92 Lawrence Rust - -* Fixed address exception during mode change with little RMA - VDU 5 glyphs correctly used for undefined toolsprites - ---------------------------------------------------------------------------- - -Version: 3.20 Tue 23-Mar-93 Neil Kelleher - -* Outline system font implemented: Wimp$font, Wimp$fontsize, Wimp$fontwidth - control appearance of font used in menus and icons in general. - -* Menu width calculated automatically to maximum width of menu items, except - when a writeable field exists when stated width is used as a minimum. - -* Improved background filling for inverted and sprite+text icons. - -* Support Wimp_ReadSysInfo (Reason 8) returning system font handle in R0 and - symbol font handle in R1. - -* 'Kar' bug fixed. - -* Wimp now sends message when system font changes. - -* Added new SWI, Wimp_GetIconInfo. - -* Creating icons on icon bar, automatically widen if text (in current system font) - doesn't fit- NOTE, if fontwidth changes during desktop use, it is not updated. - -* Implemented prototype features for tiling window backdrops and slab in/out - of border 1 sprite icons. - - ---------------------------------------------------------------------------- - -Version: 3.22 Thu 15-Jul-93 Neil Kelleher - -* various improvements to outline system font. See spec - -* new error system allowing severity and extension through service calls - -* Medusa memory management support - -* watchdog to kill off rogue tasks - -* New SWI's: ResizeIcon, SetWatchdogState and Extend (direct calling mechanism) - -* Speedups and bug fixes. - - ---------------------------------------------------------------------------- - -Version: 3.23 Fri 20-Aug-93 Neil Kelleher - -* CMOS configuration for desktop font. - -* GetIconInfo SWI now TextOp - -* Return and escape can be used on error boxes with custom buttons - -* deleted writables with KRANT validation now ignored when using arrow keys - -* various bug fixes - ---------------------------------------------------------------------------- - -Version: 3.24 Fri 27-Aug-93 Neil Kelleher - -* (O Love) Altered error messages - -* Added CMOS control for tiling of window backgrounds. - -* various bug fixes - ---------------------------------------------------------------------------- - -Version: 3.25 Fri 03-Sep-93 Neil Kelleher - -* Added different tile depth support - -* rearranged sources - -* auto menu width no takes sprites into account - ---------------------------------------------------------------------------- - -Version: 3.27 Fri 17-Sep-93 Neil Kelleher - -* altered window furniture code - should be more efficient - -* made DA sprite area on medusa more efficient - -* can *WimpMode outside of desktop - -* fixed a few bugs incl. grey modes - ---------------------------------------------------------------------------- - -Version: 3.28 Thu 30-Sep-93 Neil Kelleher - -* WrCh vector now released on Service_ModeChange - catches 'single tasking' - apps that change screen mode with OS_ScreenMode rather than VDU 22. - ---------------------------------------------------------------------------- - -Version: 3.29 Thu 30-Sep-93 Neil Kelleher - -* updated to cope with increased sprite op reason code. - ---------------------------------------------------------------------------- - -Version: 3.30 Mon 04-Oct-93 Neil Kelleher - -* updated !WIMPSymbol. - ---------------------------------------------------------------------------- - -Version: 3.31 Wed 06-Oct-93 Neil Kelleher - -* tweaked darwin. - -* reorganised sources - can now build with outlinefont off. - -* speeded up mode changes - -* fixed some selected icon problems. - ---------------------------------------------------------------------------- - -Version: 3.32 Fri 08-Oct-93 Neil Kelleher - -* On Medusa memory is returned when exiting desktop. - -* workaround for toolsprites code causing lots of 'can't find sprite' ---------------------------------------------------------------------------- - -Version: 3.33 Mon 11-Oct-93 Neil Kelleher - -* now uses look up table for program errors - -* few memory fixes. - -* caret is red on 16/32 bit modes. ---------------------------------------------------------------------------- - -Version: 3.34 Tue 19-Oct-93 Neil Kelleher - -* yet more memory fixes. - -* error block now copied so message trans overwritting buffers is ok. - ---------------------------------------------------------------------------- - -Version: 3.36 Wed 03-Nov-93 Neil Kelleher - -* and some more memory fixes! - -* fixed line across the screen from an error box bug - -* increased minimum scrollbar height and fixed cannot scroll to end bug. - - ---------------------------------------------------------------------------- - -Version: 3.37 Thu 18-Nov-93 Neil Kelleher - -* more memory fixes. - -* fixed MED-01061 - -* fixed MED-00973 - -* fixed MED-01097 - -* fixed MED-00297 - -* fixed MED-01103 - ---------------------------------------------------------------------------- - -Version: 3.38 Wed 01-Dec-93 Neil Kelleher - -* fixed MED-00967/8 - -* fixed MED-00974 - -* altered icon selection (faster, sprites slightly different colours) - -* fixed MED-00966 - -* ALT-BREAK now used for watchdog - -* fixed MED-01342 - -* fixed MED-01346 - -* fixed MED-01431 - - - ---------------------------------------------------------------------------- - -Version: 3.39 Thu 09-Dec-93 Neil Kelleher - -* fixed MED-01406 - -* fixed MED-00776 - -* Fixed MED-01228 - -* Fixed MED-01588 - -* Fixed MED-00414 - - ---------------------------------------------------------------------------- - -Version: 3.40 Wed 12-Jan-94 Neil Kelleher - -* Stopped acknowledging messages from deleting events : fixes MED-00003 and - MED-00985. - -* fixed MED-00943, better handling for iconbar icons with variable text - -* fixed MED-00946 - -* recoded tiling. - -* fixed MED-01364 - -* fixed MED-01418 - -* fixed MED-01711 - -* fixed MED-01818 - -* fixed MED-01894 - -* fixed MED-02090,1,2122,2146,2202 - -* fixed MED-02095 - - ---------------------------------------------------------------------------- - -Version: 3.41 Thu 20-Jan-94 Neil Kelleher - -* fixed MED-00240 - -* fixed MED-00563 - -* fixed MED-02050 - -* fixed MED-01910 - -* Tweaked memory management and tiling. ---------------------------------------------------------------------------- - -Version: 3.42 Fri 21-Jan-94 Neil Kelleher - -* Improved font manager death recovery - -* fixed (MED-00114) toolsprite probs. - -* Wimp_ClaimFreeMemory works on machines with more than 28 meg. - -* tweaked error box templates ---------------------------------------------------------------------------- - -Version: 3.44 Mon 31-Jan-94 Neil Kelleher - -* W_CFM now returns free pool EEK!!! - -* fixed MED-01852 - -* fixed MED-02443 - -* fixed MED-02497 - -* fixed MED-01910 - ---------------------------------------------------------------------------- - -Version: 3.45 Thu 03-Feb-94 Neil Kelleher - -* improved FM death recovery (now loses fonts so that useage should go down to zero) - -* custom buttons get correct border if they are a default (ie. no ok or cancel) - -* fixed load template giving spurious errors (affected Magpie and Junior Pinpoint) - -* fixed MED-02285 - -* fixed MED-02269 - ---------------------------------------------------------------------------- - -Version: 3.46 Tue 08-Feb-94 Neil Kelleher - -* fixed MED-01796 - -* improved Watchdog to cope with special circumstances such as a running -Print Job or output switched to sprite. - -* improved font preservation (when to do it/ when not to) - -* fixed menu delay offset bug. - - - ---------------------------------------------------------------------------- - -Version: 3.47 Wed 09-Feb-94 Neil Kelleher - -* Thought about font preservation and removed it for now. - ---------------------------------------------------------------------------- - -Version: 3.48 Fri 11-Feb-94 Neil Kelleher - -* Fixed MED-02301, substantially changed unfilled text only icons - -* Fixed MED-02598 - -* Fixed bug that could cause program errors to go wrong themselves - -* fixed tiling bug - only occurred when a window had a custom sprite - -* put in (different) font preservation checking - -* Added 'vertical justification' bit to TestOp, Wimp_RenderText - ---------------------------------------------------------------------------- - -Version: 3.49 Wed 16-Feb-94 Neil Kelleher - -* Fixed W_CFM (asking for lots of memory didn't fail) - -* Added extra FM abuse security (eg. MED-00669) - ---------------------------------------------------------------------------- - -Version: 3.50 Thu 17-Feb-94 Neil Kelleher - -* changed Sprite Op's 'can't do that in this depth' error to User one. - -*************************************************************************** - MEDUSA - RISC OS 3.50 build -*************************************************************************** -* * -* Project: Black * -* * -* Module: Wimp * -* * -* Created: Tue 21-Jun-94 By: Aideen McConville * -* * -* First version: 3.50 * -* * -* Copyright: (C) 1994, Acorn Computers Ltd., Cambridge, England. * -* * -*************************************************************************** - -Purpose: -======== - - - -*************************************************************************** - - -Change Log: -=========== - - ---------------------------------------------------------------------------- - -Version: 3.50 Tue 21-Jun-94 Aideen McConville - -Moved to new source tree. - ---------------------------------------------------------------------------- - -Version: 3.51 Thu 21-Apr-94 Richard Manby - -* added power saving code for Stork - ---------------------------------------------------------------------------- - -Version: 3.52 Tue 02-Aug-94 Aideen McConville - -* Updated hdr.Wimp (from Neil Kelleher) - Contains new reason codes. - ---------------------------------------------------------------------------- - -Version: 3.53 Thu 18-Aug-94 Steve Cormie - -* Fixed MED-03541: BadParameters token (which did not appear in any Messages - file) replaced with BadParm. -* Fixed MED-03390: button texts Quit, Continue and OK (for error dialogue) - were not looked up in Messages file. - ---------------------------------------------------------------------------- - -Version: 3.54 Tue 13-Sep-94 Steve Cormie - -* Fixed MED-03700: various messages now looked up. - ---------------------------------------------------------------------------- - -Version: 3.55 Tue 27-Sep-94 Steve Cormie - -* Fixed MED-03711 and MED-01949: long error messages were being copied over - workspace causing data aborts. -* Fixed MED-03346: convert ROM patch to source fix, prevent Wimp accessing - info on taskhandle 0. -* Fixed MED-03135: convert WimpUtils module patch into source fix, workspace - pointer corrupted before attempting to read from workspace. - ---------------------------------------------------------------------------- - -Version: 3.56 Wed 28-Sep-94 Alan Glover - -* Fixed MED-03674: could make windows disappear because they were being - opened behind an iconised window. (s.wimp03) -* Fixed MED-03233: change name of information sprite (should be information - was info1) (sprites) -* Fixed MED-03145: key names were getting right justified if they appeared - in writable menu icons. (s.wimp05) -* Fixed MED-03087: finally, really, at last fix nager:sprites22 - change the - buffer in which the command to load wimp sprites from away from the error - buffer! (s.wimp01) - ---------------------------------------------------------------------------- - -Version: 3.57 Tue 18-Oct-94 Aideen McConville - -* Fixed MED-03691: Wimp 3.57 onwards will expect its Templates to be in - 'Templates' (s.Iconbar, s.Wimp08, Makefile) - -* Also corrected Makefile which was copying 2D tools to Resources. - ---------------------------------------------------------------------------- - -Version: 3.58 Thu 20-Oct-94 Alan Glover - -* Fixed MED-03800: Avoid an interaction whereby the wimp would obtain a - translation table from ColourTrans, and then discard - it before it got around to using it. (Affected 16/32bpp - sprites in filer windows in 256 (and less) colour modes) - (s.wimp01, s.wimp04) - ---------------------------------------------------------------------------- - -Version: 3.59 Sat 29-Oct-94 Aideen McConville - -* Added sprites from !Draw (DXF) and !Printers to Wimp Sprites. - Also updated Sprites22 and Sprites23 with !Printer sprites. - -* Moved Sprites, Sprites22, Sprites23, Tools and Tools3d to UK directory. - (updated Makefile and s.wimp08 accordingly). - ---------------------------------------------------------------------------- - -Version: 3.60 Mon 31-Oct-94 Steve Cormie - -* Added directed comments to Messages file for message tokenisation. -* Moved command help/syntax from Global.Messages to Messages file. - ---------------------------------------------------------------------------- - -Version: 3.61 Wed 21-Dec-94 Steve Cormie - -* Fixed MED-03323: Don't fill 0 sized icons. -* Fixed MED-03865: Changed "Wimp Sprite Pool" to "Wimp sprite pool". - ---------------------------------------------------------------------------- - -Version: 3.62 Mon 16-Jan-95 Aideen McConville - -* Fixed MED-04107: Added JPEG filetype sprite (c85) to Resources.UK.Sprites[22] - Also added Resource filetype (fae). - ---------------------------------------------------------------------------- - -Version: 3.63 Wed 18-Jan-95 Steve Cormie - -* Implemented correct fix for MED-03674 (also fixes MED-04376 which resulted - from the fix in version 3.56). - ---------------------------------------------------------------------------- - -Version: 3.64 Thu 16-Feb-95 Alan Glover - -* Looks like 28 Sep '94 was a **bad** day for coding. Fix bug MED-04476, - which arose from the previous fix for MED-03145. Symptom was Edit>Create>Text - gave a window without input focus. This was because the caret had got stuck - in the menu structure! - - ---------------------------------------------------------------------------- - -Version: 3.65 Fri 24-Feb-95 Steve Cormie - -* Fix for MED-04690: Added sprites file_be8, small_be8 and file_ff0 (were in - CDFSFiler sprite files). - ---------------------------------------------------------------------------- - -Version: 3.66 Mon 06-Mar-95 Aideen McConville - -* Fixed MED-04771: Shared disc sprites included in Wimp.Sprites[22] - AUNMsgs also updated (0.03) - -*************************************************************************** - Black - RISC OS 3.60 (4.28) build -*************************************************************************** diff --git a/Resources/UK/Sprites,ff9 b/Resources/UK/Sprites,ff9 deleted file mode 100644 index b74ad70c416d0c7f8dafbb1bcc3a2b913814bee6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76088 zcmeHwdyHJydEce@SXyMwU5c`ZIH<WpNlX(ZqIO8p7UXIr&WisC@Jiy4PP>ly+M!vm z#nE!f>jxn*XajEnLk!v=HIYD7<OGG*FSbZ*AZt{zEQ)SCa0@s=0HZ`@w1Fc>*|3&V zDUW*k`+bjd&b@PIxuoQXm2}9t_dCDy`@Zv?bG~!#b7%f-mSuzZ-1$$IWv7;9+5UEW z>d3+UGe?d-oUO1j?6LuTZn4i=?7QWZWqEgY_O;Wqv)pMZu+y(~XHUO&`Zb`y)?MtD zv2~eZv$M0VyDnRk@VeAom(7<kKxK@OVeZ~K_?nqL!`5YIklv;BDy9%XsaG(E5-dOw zi%`H4$gvbMtN<z2`5Zhw_VN8wQx9PjAYX&eYJ8ab_J5YO(c#(*$n0xm)?K751F`O` z$i&y3op+i2LYdr6=nj=dR9QvJ&;CBRts_&D4}IbjpP(-Y6Nwp@JuVn8bYwa9Z`Q}_ zABPXxm*zC`-j_p=i#{)hzy1HQMVuSb2d!2M>Wj{eyed&Cq}fa;+z#-6J0CbTyIQe8 z%CgzlW)%Yo6l_2{-NOUT?STUlt({(NSg=Q$^R!x}m3TsPo_Hs;c3$Ku&3SCZz>ANc zUJY7-_rwA!MbdUiGujJ}!nc8fy%!hEP2rU{olY`0bO08c8$liM4R@GUW8Y@awDVJ^ zMHcuq!`c6*vw*(_|Ae0py!fv(c&c{jqsU%CmYquCVv;5oTQglP?Aa{{Sgeg)HzmP7 zFo>_6<`yZN4cKf~X^0HPx~CcMM6<JwQAc>$+4%$$dw>FF^%8Q7sz}l`ZqJ}!=bGvD zDoY@M>We5Elwg@d5sOg363DR>ax8S530YQ%3l6}N<3f6EmcF;8ztL=!+3neyfaAbp z_-Xcw$RMCu?^0PDRoVT+nwiAKA?jU0Tp$E+@U$pEU5ty<IFj-|ee}3M3;>fLh?w(Y zT#zLHV_e8M%D~0AaO^D<7aV{qj0*_{9e<8Qh>PxQpSbupF)koljKsJ|k0S@KEG}ld z80)St7#0_d6T?CbM9k-{Aj%7IfwKkC?Vf(y#RUgo>2aYmF~)+g7p1sZZR-X4mE$XX z1kNSmB3&;ITtQr9xzAhMqh4UEvs3u5XFjsl_2-d`IAKy<Gi1A9Z+10km*U~Th?6b1 z(BGc$U=ROMeSaP-v0B(%4XgcmTJP#pT615X&qv?iw_;;F_inW~085UG*gx%j77aOd zN{=Z890hP3{(uvFQ@*yRh`V2CPI4UC54W-v_zY4&Dqj=0TG-1m0|$mKmyA#^k0bc^ zT4}u?561^NwD=l=99BJIVZG2bgxK3|z2E>WIWCIl7s+u%4%Bu|!Cv(9i`mOrFVeX9 z0Au0u;-cHl&zzA{M{KB$b&A;E7)Ai+>cj+j=I?L?PDpvgaMm~vXiGj2uxEJnjS!zk zpo=~7{%T?2-C27JR1@rRU@(UO7Tz4v56R2wbzC@>vFlO{RCxEbc^aU9)I|dJ>AzUh zgDr)3ZG}BRiM=qPOu(c}*9#87lH&s1&TDU33%bvAvvFPtq0^p0*ByVvaCF5M_ABr? z$nRZlGMf3dH73LDPn+!iW!Y%5Uc8@;xV*T)n8^7+mp2h)!QilAz2MaY)(cq)xQ+os zfaAaL;`xPKWt7$n$KH191qWcsabYX8j5*g>EV(LkAd>S=KfeHn<13scoL_`{IIY$W z>Rr)2oWJkteI4It7uR8G0<-<!cQtSOZ{DSNdB42GQycM~5tj{O@g9yj4GgCMlKS1l z`6fJAe&_P+n|CeGUa>vz?3C`|+)g8xIXBqXg~WUx?7#`k$yN)SRmvf6Q=ae0vfGZQ z*x-qL3r1s84>r0bn@)7e8=l#c4PxNDUSNlhQynS6wq(aDFxcziNfbm~^-pMSPuszc zLh?E^r`x`muSvcKJzX<7085@5Rw3$Y=WvqUC^E9y@+jx4wnluV_$z$2T={B9<mlJv z^MLK%-gYv|bK_26{76D<BAE1`3BY3Yl*RC=R}g5BPyN<oFLExN`k#+J`#$auK6(}r z$^B<7|4rTh<l+{=f70Eg<%3&g|Jdq{+`saZfmPi9)??pUCi!kx>_A3TXQx>IP8<r- zzGWkp*tc>HiNi+Lh7NBY=J_s_+vwXBc|&l>qoeu23^|aIGM6*NhR8%44bi123H(#& zOzYci$dZ0J=dTiT)boU~Q*6BHkmQMH<KrtGj=ZedG|;h?Tv)KWAVh*LNGnN9vF#5E zuU^E)$H9vjaxtw`d*kPD$I{Zo%9T>@__?otd+xK}>U6-KXgX%3Dhx$IH`dUEhu#i) z=SeW{ci*EhjSCLI662yhkZE6H{M!TLW4p&jn=4h$MpvxZs<OEyxHfs>IQf6TmNp+0 z*>G~)E%@3_;$nntxV*T4B`PIJ?j~bU)g>)(to~rLS(mZoc#H0M{koz1mxR@kO1ffw zJgFmz0Zu5XW1kM~$^86OyWKQwA`Im5@s7s8zUM6luv>L*Lj616s@+n1uGX43cW%{q z)9l@RbFEf8aNy+m<0q|-(MFO&+mc=}EOfjHSzfqr$^lqvT;$nyk9{l<*ALm;Xy<Gh zG925SV=jJE20qzDyCCoD)N0R7p*@gyOIIl0{evGdE+!ALA(s~yQhzo$G&D4fzT(g^ zPWV|8hTf!GlX%1+E>ZW&v7FcXpTkYSr*VD4%O&_xg~>gc60aIVxBmAF7cTte!omXA zeQDe4!MxvnkM<_(g$%$_<6;0kJX{;8AH&%0LN89Xa0XP8KZD+QdhQSBKMg#U&!bg; zx$u+jW583{-C{eFxHyRH6~zVhJW1ch6^WOk5+`^-v;$FtQ;hnK1PiW2%q?X*P{?bz z3>VCvZlHP@GafIjJ?%K(*+pK8<>xy$ly$*#EVu%m=)&(dqQH~+Qozg?OuHm$9qx(k z#pi@1BFfUZ-~cQ&E@+Pldpv)GHCZ1i?`R&^euK<`KS_UzG7jBHTqpfGp4xH$U^j`2 z1FYvV*9*)?Uaji2E-!dd7w2g5M9%JoB~Rq=fGk`Ca~{eqv-rGBu6KF;7M{Nadw{~T zHmjFVz~})KnW8;`<T0Apt1Nr67W{*vKWvLwfczO+!ivxCA}e4i<htJPzArw1o8$m2 zIWA7iLoB@~`r2#KMvn8V=ufz)_s59){W0*_EfNdbhQ*%0rE#&JdY2g&S&rjJnout= zZ@88!w&Pg6x&6WI$BqfT#G^t@u^VtyLV9FcxQ2Cy`0tVFDjvD6YrJFs`+Wfmz9hP- z$2HZ(u`Ep|*ben1Y{i%FFZ^Tt2R6Ixp7;FDPyzeZjlcTzd*^;eu%M-aU<Fr@K^^IO z!2wueT!elXyX@~R){YuRF!UwlfwuLHwmJ1p<nN;`_1{sS-9Pw|tQS{sJ)&*XWvM9_ zAa*{PW!FnD-;XK~qsF_wm9_S@O4zD>tyN{LidSJzmcz8(<iu013s~<y3j)McZI$`5 z?*UV7Hg6(EANSo9qUC_|GL$0iySaG{&Tq9H`wqy$dh^ZsHJf<t!8)qyrD9CN1GSKf z=be+6b3Fo|kLP>olN<}8tgh%WVq98eGSA}nn0#}VZ8~7b5$OrF<IchD7#D|juoaiN zUgY@`o@8;>;{z@Rc)pOmB+Hv&@@g0EbOZDCoX17-fQ5BG3%qz7aeMXTI6^(9Cz9jH z6Fl>+*I#-G`2T;$5gC9bt`}|TcXXx11-fi2x=`fCt`%GTI6~ZyBmWfrf^HGcWgSNj zUCBMe>bSt`MiLomT<{!-=Y_?%(8x&RBJyHfxV^V{TwK;YLrzDJi@e<qaj~MYYn#Uf z@hgmr)#1L@!Eimo2T4qv^ZtI}TF8E89`^k)lz0LgVyCm#S1IhD6)elv<_qE9v!c)* z=){wI$g=KaP<G<8v?jhpgD|Icm{}t@7W}24x&?^XNAc13EL+kMoVQ#%nQ(uy*bnOA zvujz{ew2w4;$E7_=tueiQt%!H10C}J7>4ye;=%WmRkc2I4Hw%aTzS&|F6hf?X;&^1 z4TsA-_3u8WY`uOIByPB-TXEbG3kO~mgg4C;3wp5sG_U77RlKMsQr~)`Ya$7+3X9&V z^y7HHyU;C5&qytN?kNd5ynU=SCzv6@qjf=g3kn}vv2g|B)#na_y6Tw6^JvC29*pyl zp4GE#YyB98#bk<1J9u7%kdzE%iwTS|9>_DYBz}sxb*peh5gQ+msyznC#_*z#74j}7 zg9^h-!;|x_gI98V<#9Yoa_m>k9|Z8dYA}T7&j;}Ca>VrcfV@|2JbymGSDc+^&j)@@ z-m5mAJs*%ap`Ew=K|UXl*RNGKoGOFn_wN1qz-MPqe=FSMx90<-m7Wj0{P^h)modCo zU4A}reBsd#^L9z_8E(e+s_An%0ZXpaWB{sS@D}hGgFziJh35m!teMU7bYx(3ch<;$ z?X^#c%$w!2rv>M!_OHG6VUf>0`|Pu`r^ogAz?!+2|K`K?eBjw<7v8;gf}GTTI3M4C z1@GI-H45BFl3b7Q6qyO{iJ(686KXt*3=(&GZ>oSbTKBFf@kUp)Ry7P$bFg=))iRz~ zlg++WEvo~U7d+WVN-(@|m*KN7YXMbzcu5RtHrv-|H4fdoLi|&`Q>&|ZRD`<lXiGjR z=JoDl)y88LF^O*IcoPcOX*vK)jf-4*(%xO6eCQC`fw4uekG9*Ryg$r*wriBn6ZsBY z`|#mbt~kO8C&q%~jk)%UY-XAqPgyn^&I9&O_I>Zk&jVa7?9pt_Q|^4B^LdMEZWww* z&pQIv-ZDJ2ep*1s+FNStaid#6$MTUHc(u(T4`Vwv3vc8Yv<+|XFkXV?+l;ppB;~bt z?KIxD8R<vdSKhlj@WzhoecQY_7I?dx(wxvv7uZl~ZgFo|MIV%SZpZiN|F__g_)Tw8 zT!S^Jmp<3B@%8@9EgRoFG$Lz1=GWNfp&Fk#a<1LGetqqr%H!K=LnAx&KFHxcSez$Y z%E<;>I2RE)8SDGt$itH}`O)c*NfhyXe$e9Sz1Z`(aHpMfhr^uQ70X7)xASxbso9~$ zT`}Jt*m|;<f3}b(|9ryltnK9I_ww1Iq$W;;^7>vLS~P86z7=`BnKg~ug?OrPzB3V@ zz^@#@0<w#bAw6MAjy59!lPBNX?7YyLlK(GEzyk8}X!XA58=5~ib*RxebO`xF9hOJ+ zj^y1o_b4Bb7eg3Xe$wkvwoXcPE9DoJ5z5PX@W}|}l(UQFycY`@<uMP5e`6U^u{tSD z%v(O3-%$<4J$d4uU@@^T9+dOXP9S)A{dR0}`ots_bq=S;(hZOqOV9iDn|J0pjJ?ae z?ddUfjw7a*I(h8@;=EZ}ub<1aXUF{#b%Hpo?lU|*dr$C_ST}tn;Zd;PIhhZfn`)hy zdf`N8Wfo&^Y$o5^IZwQGe!_19!$ZNX;)$#fi;4eUQwKKrc7-Z5vva|<=1SD%8d(~n z4q~6Bv5Hq#o@LoY^BnLPv%nGZcz>YT$<o+e*&LUtAh>rG_67S%1|Ip;F2-Oo!Z8*T z5Wx}g!qvbMaQ+!?h^~Z>7Y+O2#i~tt-9`Mxab+q-tW$JuAZVBz<UTFvi>Fno3ANJ? z?_(&1(~A4zQ}H?yr%`&}<z40g9p~KY;IkGV8O-~huj>%!`EI-$^WgJ)HPj}MU!LuI z@MJ4T^tW2fV+nuo7}n1h5F~qYdCjBQ%*PI){3NE2#58ysB*=3nVnXQa9e4*)W9;5W zwxV%gBhOzzh)$eqPD!L9@1chLiblg068Nc&^}P3>=VM4n3Bsb#IS4)1DA<W4)W8$~ z8{d%UnwOS`{LiAVTT@5d?N1&$a_pe4W8T;Ag9iJWANIAkt!Ll4PkSZZ-iIkz#6|6# z;aKrJ9cCAwH~ee31i|YdlKwMf#}m^9I|;5L?G)2yuB;=(?l1h4r=PXv^$9*d|IhDl z8vpv{@1o5g-9LRudq(ePRP_z9w92?H;<$aDNnERxzdj#1sSJ%GKQ=V3uBdby#&3H6 z$6GQ{;0MpO{J!n=kU4f|@!^%2{9%D?em+J@_pa>ke)xqSe&Nf1i(t8{fdAp&&RGBz z@vr>w3t!NZBA(j+`Ixe6W6JIdDaPhv(%&yuSWy<t-_`A|4XIO*e;<9(-aj=tGcyUP z_<n2}^E%c;Lwxfp%c}Q{MzhJct1h*lojr4gZ%y^vcRCj?@GYo*`+tRjoj&?;e362V zH18MVPevs1f{x?-VL#vSaP)IbVd+hp2|b@x1T$2U1uy7rLqfEH4h&PZ)44CtpYPxn zPe-x;@WW3LLTuv}k79LT_2c;?_4>b@J^lWA<Q>ENK0-@%H;6U9K`M37-q+{9-FY0= z9Q(nUM>`Yq-+B3^$3ZjR$%XUez5FO?hIQZ`d5;ouOl03k9qA;cEWHqxX3fdgR@>w# zSzLd6&j}?IOXrPmF-+ExPfq$uQ(SBOoY#*PzPMu_uGx7-hHEmWxod;`<Xpr7J5E?+ zV1z|}a!z37%n9s#TBRJ5`1|ltDUeONHZIxU7x7nNxbHYG^)SPawByBjDbqHI*n=m0 zC14x+0A_prJ#_TpnS=YMWnsE3e}^&o)%Jtvg0W>HZ_4v!$MW}hor5P1^DnPt3?A79 z^Cpk6i7IcxO6T&ioU4rDgZu*($}wes3}oiWLA{uUOn>El3+#Dq%~&{v&su!s+PPkr zAyfJDbL6NzcSn#vKgU0r13q^L|Ev7@Ilv~@=K%9>3Ov~~WA<W~^HdA?<vb?i^jl?| ze%i&Oa&^LjA13q^GJ1<rt#B(h%&_-k!+nt1Cf><Iha8g|ddu<f6@A0J;4J5*?>bzp zntAS-7aYYOriq#9hYn4)_8*_ZT|y*AI@9&|++rUdyRkMme;J>raXt0)KU>y(dhR{g zU*G)YBiZije-~r_>*)E>pApSq_vrBhQxZu_w|nI2_cV|E=Jm}Z|6<wh$+`Dr`{u6C zMt^fvHafO4+kk55@4=%Fw~kDIJY&Rd#E0oReAqAi&|h3(UzE?n!d%9WCoa4A=z5xE zdNQ*-(;FcFDErgytKI+m829;~eB}7$>{ZY0`2J7-1eG;mr?lUjE57$5efET*=XQMW z{<{CXH+$sZLz9P&==gEQ_<aCBE^{2$;uEKiNx-&D*YF~pUOj9W8rp(e36(s1+s@xs z6J7~J@MRgWPz}g8JYpDjNUL*TJGg?A=U*RVSWZl6_!^lMLtx9-$)vjE@oQy(g*rf! zua`+N&=&9^ugbs0+5wf2`u2<UKX1jb>nfk4{{#1ba2kU5&Cnw`yH}F;|0DKzlQ=Qy ze_71%*fYiWwiS|NGIj~i>(B@Isv9s52H5ld7bk4<M)m)p>HQiyS8e?Bffyb?Siedi z`r{nKr2qY~PKsgGlgB%$u0Q4h7W$e`5Ba#KfZ1aoVBY^eB=qHt>i_osBM-|0bhY-s z|Cu=2?D3!bpNktN{qKJ^o?>15^YK*I|BM`1=zspzJpY`$fZ>43KPw0J)9nAdxb`qz z1^thvhU9${00`dyWh^XER^V$=na8=4rm8xsFz^3V_jSiVpXm&TqpzNKmXE*wOh+c3 zj1vC%!4I=M*~8Q9(>MpzWfo^IC<ff+6KFnyW^tNlvE)TTi%GR)#hw-IQgM<s<Ic_= zhw;_1{KW;-eJYe@3uhiriU-<Hy!3cdJn-nk0>354(g1Fw<)85!PQ&CoDMH>(ijlVy zWj|rIlVv@|;Cz*WZXwvimn6?(u<RbC?qVgP&0<S(=HwadUHhk2oYcj-6IW1oQkd!c zOEH>wJ>z|eqlcW2e-3+|%i(yQV^NvKIS|4HY2&Z*RT^G9oSNN;F~oVH!y6$>&;uSa z`TMh{H@b{>Uxrk^;gN;UY*hLC3k#2OqJa-L>9lOMx6lqCDr1X688U^DLsD48CBeef z_Y#K>;;tu85|OIbv+zCwZtC#<Pe_>I`FZ?Z;Me9m-+p<av+x~ki1BY8@OiF?@!@6> zW1m)F(|Gx-pnJZ-Te|l=pV~|PphM!zo%Q-H&(*)_4hojzVc7Y+^It3hlk2xU{|xUj zNh0<tosrvHJy;d5gvo1^!6mhacPn4*{#UDl{#m`T3md1F$+)85Ii4YLte1xIK~qr| zMtB)oum_9=3m7A;tou4Ju~n*9Dk#-qUKAc{Rb#51`n=RSY+i?`PUp2>qxrnf=ksr` z<ru*@{?e)T?uD1XBNs6FmMuZPv35_8`R0}LaY2>+HWD4f;5truz&MZtUk1SknFHc- z7dHu9rmY}f3^HNIIgmk4aol-uobMS8hqLrc%xew(xWyIet}JUbb~UgZwCA3ld-_u| zf{iw2_$3JitbwOsqadcdMx%w7%!(M^J8R)Fn(;oRb>O`-ym)39Z>FGLykmwJ&k_th zSitB@F7K1Ia1$ifn@`F`JZ?B7Smg1I`bR}q-#cR^KX~b-m+-z8>pcuxtrp^=4H~`^ zLNHMF9cIk@;H3e>n9K0@4<N!Zu@`$zCA@z|QYQ0BBbeg?gd-bfiDG=j8)v6tynn^J zMyW1HpcXMaH^hIR*;WTQtSZ%|ts+Jz%2*dStOQPUJrw<kq_m)d2fx@_R-$dh7NTI* zU@1|Gk?o*n9VOi*3!3Os)k?%lw`=n{MD?QcnqSq+1RMGI@#fi2&wcq*l*eWoD_tHR z*o#n6d~^U`9AYx{TyA5+=RbH!>~IPHcb|MzWs;ESB<G!Ww{%mG@h#TA(4ocNg=jTz z5{90|f~_*>GJ*Lp7(Iy&Wn@4``{h4mnb+a!Z}E8z$G8%ShZ21vC6Ek{vhwW7CvmeD zHE6%L<(tv?gikz>d!o5~Ga4T&g19bQP0OIM3&=y7oz;0Em7*;I$@wY1>H+f{f8Sfc zHUN|F<&|@C(VgeFpcw`(v9t0mXsXIDO^-YjVzK5Mv5|*&hH?GqSX=B7TOgL$gDNn9 z+P3+>_%wS9XJIm|i9LFpCXAN$QS8$M@;>F5GAd+cS3V&~EP$vck+C@gA_9Y`Va8D= zGHS#K%qYexR4HO=)N4_mVdNq?CK+=k)WMl+^%*9+UQEL?+SA5CS<Je<)OE*%U>lp) zA*vUf*V$-}rxe;|hyzc~$%-+Kr;rH3YqL}M`+{RT@+T3Gr*LlG-h~k3--JWP-<z$W zoblX#9ACf(8KbW_f<a{Bkg-7$XHgd#pdEl&iB3RL4@8vSM=?1ZY+<;}4iOpF$W~d* zxh$Q%j_26JADx_POU2dm`WBS&T12it(hV<3%PGZVc7c#!xO7oF2`1Mvw3A|PH)5_C zc{JuOm;fX?>V@DrE!2_F97|~lrq^1Df2=mByJZ2*X~(<`iEawbVsYa6;IWU#5vYp6 zp8ogB*^?%(W}S{pebNou7lK<Kh>R~)<rl&#AKPACx!-Yc|I|U0GVwXsph&o<k3D_z z`yKoEVogY^GJAIkXQF%=3V)-0^5n_$IX>s7zB)fI`Of*1Cp#e@bVbNo__`i^XAgIH zdkXw={!QS&XJ`n`nhO3D@+E&bDPxj_IA-7a5|^(et?Parv4R*6(ZpK~GF`BLFFuSV z-c;rqW3iN>qdQYy{n#q&+Eq6nsNH<vg{dXy%?DZh5@(hwV!f1fQO<khLFD1%d|HkZ zhcFL#tfudNpJL%x>^fkK&)NPLkMh~Vuh<i5d0DIB*g>@G_Bvm9?F5Wd%&?%V*q<#d z{8DF8Oe+z4&Vw~3saG-cjyrkdwS!`P=N7N1)gA~~e6MU`tX|*QATNCnobTNdOWw2X zG<WmuTs&vh2bYsmt*O>TWBZ+Wn>d@8lA2qca}$$zv$jL*+!VpdsR_J+`vQ&AULm0q zfrVg_!yWP%ma7R%0*c=1(KdoS43{ySpW=Vyh{S-a!gx+zm`_Hk!U`tKZ+5bfeTbdk zr{LptMs?LO$L~|fi?3rmhejGln4RlH`Olsc*@q3|KdP}av3rcN7EExw?e+2|<k55Y zHX1Ly(Bdm%qplmqT7A^(lnU9}nD$@#5-YpK=dMwEcj$xDGOzbf?Z@i{lGqSGzLn>- zGTQj=43;FREsuK=@GQQ7XFdMTX&8SW$1^;nHD~#E%ecXcdy`*72I*`z-`=uWcq7yK zyqp)VIlCsW8?T<v3z67n<BbF?6W$=-7IcGa+B<FpZ`tth$UVmfq>gM&dl&6x<jv$? zW4*X)+D2YR-cGwf%g4sRTb2!iw|lo-R^qQX$h#)nL>~SugPP@J*uoER-7;|Y-7g|< z>Ba2byaXP=9w)*EzWYVF{v(gKFGdZ<;FKj9F9p5ShEPCaxL`FXWa1SsN_hRNyFe4- zWngjPp$VPC)mTym8-r|gPRp1t%va>ArYG6f8+LJpT)-r>i~T}}I7gVkvw0n&da-$p z<1EIAx1zG_t6x8fzkxcuhSw(_``9kXGhby8{X!zQPT+5&Ms`cA-<*$a&PFU&4vT!E z5F^mV@eSXy%ll-KVk_h?V%G8PB;1VvjIOy@l5Kt0mTAX{?0v|LXmTUwV?Xd%%$GDC zY8~9qqN;h#WA<8n${{Unpi+`vKlUVELDZB{gl*jOm=l2_t{ok_mI5%|5D|>GK@4+| zx;?yVdoWV2SL}z4)*G@SToz{b!wweodWOHnrUOtFgFXEZJ#D7$^C!g>X=eW9wKzmP zsq)+$-s#dVDc~tzRLzb%2J9pbPVM~%Keqqyq%as4!^ZXXp2q~9kMf~UAvyM=F5vF1 zQsx*!u*MHlz-qwouZS^M#C{}<qCL%NiP@8Cz2Z=Z_)@e7NBCco^PuNY@UMhn{YQ$r zJQu4I6h+y{`5BJ>ZXO_pMR@gBtj1dRp@`ijHfy!NPBE>hS;Po7%UGS}OFVuZ?LR1n zS3zI73yt=Ad8=`5u7JtyN6gKHhn(={=7KIKuVJt$_6P+GAnFh(VspS0O0c;H4I<W) z!g83DTmth0PCU+3NigCotqTGfXqZ6?Di$CC1xp};#0pSvzEu29w$uYv{g)ge$<}@@ zfQS((NI-^-VQy0*$uR{53cRS1O7cL)b-#!OHs3$}@R5fP3xuUO+oD$F9ypH&FXKvg zgJD;+<4xA8#GCIGiC<|^rGV4+N*th{(HE@s!G&94s2>jM$g+wG=GQ!s@94#W;A?`H z^;B?neh|mJ<vsZP8sgXV7y?c^Wt{n$9D`LdM0}c$N=rDi_wxr8N`{D!<~NjaVQtD8 z1_eWc56T|{6mZStycbfaK=Bhi#Yl0J1y3t5e3G}HQoK-CV#x3j;YZx01N`cs)R5xr zPdXGUP&1o2F2sW&#RK1Q-@AP`<akyWe?kR4;cWooyPQ}(>Mtjo24%Q%+K7oIZNi!X zb|NQNF$EkHu2Pz!n4J9=?DWIMOfVGf^ug0Biqw8T+{}0d!G0gy&Bz60V!t0A%vc3( zzYiYGSOv!KhbLyV0^|3=Q!`qD^84WhGg5)_``|@0Qi1UM;UzPyK=^&|vKdxDem}g& z47lX?!F$c10&x4`6=wcHpnm@JYu6XCDjzy>;>aQWGl%ToBW!KKk-tm&BJ%vK#mD<6 z!*}b;2TO=N?B-*1ez4}rhnEHX;M`X})Rol0Q&D_)S6uFlcYxw^0Xu&1Y*ao?JgMTR zi#3U#Y#xI@-_^fnd1w1h54<@&fIxgFz0(74S`SR&?&@)TG0<)10q<#*udD8}>nc6i z-1^i9H``$cT$P^s-ghtDsG?)H&VA{F7e4YM0Udklj_-kZQ;OX>_xUf8Sj4`E^xco( zt511^mO7py4@6OR4CcW5?pWmAIyVQJ*Q~r-=SZVL{6Lu5`^wxM!u#NbzfLgYNhPYQ z)zaYhz<bK=iPy@T6ZgDg!|rf<thk4#U+fC2bCCyUoJaS*^g;AY!0y_K-*(x9o8o)+ z1l?P4IJAVWF6gooV!g4Bh)Gu!edY);eK%>_SFCLpl0NW075A*(?o(p$!i6Rp<=CyC zS8HfRz`7%7*M*O4C#1Zu%>8Zme-KLJ<trDy^fSNnk>3+m)cx*-FMUspxh~5`K62p# zzY_#W`+(A|fBYvG^s7H2*6rTYynxD59x`_|FMJ7L$`cTk7qRY#nms($B|K1(c($aH zoZE<)FuYVxs`UAUV?r}+!~ERK&2aCSC>zgIRk=Urs@3P>_E03LqMB!&0$!+AD%N^0 zfuWKf-W!6&wuNVHp{r2i8&XGA+md><NBZ<%>?{yGHe8uq@0b$_DaJ>1!W5eEOjTG# zU1dc~3>v6?PbJY8?TCpEyUOa2Vx<C1c^>FR3`To+Y6H9<UyJ7_(?<{EJAee^gS}s} z8gPS0t_l7dt{vV-jCT2XldcQQt+&Q5+^?x<PPk>$dnYrf_1quAl~YV*#YC+~F=|07 zDi+jAiUqZzVo9x_$P8=YeJ}3Q8W%0YTNAh!%>VW;cAQ}S%h;@bdi~4jU(l=Yvu~Le zU@IOM+qX!Wu!En44i#IfT4B@tl>S7|CnG5RNxh1)#l|R&Bo1?8vgbx)90f{bhg482 zDHhcViY2vzVp%Ow>`_Y;d)3~Ch@SyfHGOGiSo<~EaSKNTH|8bS2gn3JoRZ>-PD<2* zqLrm;LD9+zYObhdMKxE{vXYu9N?BRW6s4?3O%++ztEP%9t56fgzGXa0_tSf)thzt1 zrhehrT_Pr`8UYoZN4>!$(}gxGqDfKNmK8<K=VmDkMZwF8imK*iMORfVl%<NM7RpjZ zQ;TJ>(AAPMXUDy^J?2yCipvh&#qS-%yJU8QWf)fZJAh2@!{-+J@SY34$Q~*E$_WC< z4->;Hq4;1gIoU`aZ-ufLRNY}atffX}nG|uO63QtU%?fMG10G%v#l#QfQ9^D2)r#pc z1E+?`<9n;Y96i=#d{=XriuhO-)`fs9|3gNDgE=vToEnv`U>Pem3u+2EHMpMbu}%}a zVvlB`Ut&}@)I$<=w@821OVg}W%7dI(A~EQ*A?zw~Qc#*1!VeXA;uvbq1=aR)mbtce zJ@Rl{brM$E6p_KQdT5b+IwHeKmzcuX4$F`UrXl2w5J;4@!r&ZDxEUqcmZK#JrREdc zh!nS=)P7bl+YHlFDfhOj70)S64S?rW2)v#@`{0NLj`b=-F;oMJvjWD^3A*9|bJhhV zHZAcJ_+Bo1HIxnlE797;4Tz@TdIXe!T`U&8#Bb)S6WWb|qX{!Z0X7wl)r8XM0-z)~ z#JsQ)s)7QjsdAY)W$^GYerltf7^&>wv?Q3ZaAsZ_!MRd4fIKiz%-dM5R8fu~B#%Fo zlVX+7vMozwt1_k7b&|s-@irX=Q3=7~27F&K6JQz*88}OSYlv8hVP=xzk{nG21HzXL zmb91>j{`^@S+4@3g4$xQpmqjraDd*V4K69tnx`OfN%U0VC5xn`QkITx!DU#%@VX@* zK(`zBg&Lf0#Vjk7N43a+2T2P{7G&PAPmEHw<{p;S)Vwq^))`1;D?$lQfL2A&U=P9O zW`ogcpwOq)hF#J3C9fU!v9J;I9<k!+agRf;7z_!wOe-0%V(iigfeG@6)~vvYQ9UT2 zgoQ~-@W2IAW;PMM^b&i~2;IPiL~Vo$kqv_yZ3PWNDOV@~Folq(F~t<Jj6%!+))L$5 zJT^133k+qaMFneIiPGc^OEHzTszk==1#_u>@6;8o5SWo0B{2anQu|U%e^;bfHflz; zLZ=ya2Igwf9&+Z2cU?51k~T&bw1R3OQ&37uP+`zCZ|Dd_?9!z=H6TRmf3u}IWVB4! z6hl=(5JF<j@{Bmvr#t~6)_4%6JM_p3#XB|NE1Tx96_)ryI~-`M*J=qw5v+`|+Sg)f zc0rHM(FfVaz|lHXDc!O%^@J!{;u14SvKk6I$)LfctuLLHXcJgeT5a5B+D6D`Sod1S zDD!0O2zUWGSSYMK1|*rq4re7o<3@{v5fS7h4}~OR6YDZ5%&&r)j5iUmqKdbg;mN`f zoPiPq>3nYhQS|6@Vl7a_Z5Gg!CO7PPjYltYv^bP#Q);5zK~c%1QXH^Lq)W}6z?T*T zA8}Mo`~*pI*1%#(wBV~yb-7sVsnrZeBdp2{==r)hMh|#ps`|QMsa&W`paPN_UQDi1 zO02P1vxrk>EDF^JHLS92xl0R`(q~&$xpjHea2KN07zc>~i2C1q(Je$hM=JLo#D&77 zH4sB>sY!yaD}*qN!BQF@<@i!kY>_Kj6=_YZ$mq^0?n^pYk)<{$Mf+x<peP<oL8-b$ zhSCoWJsPmwQwP@9$b%R&sUHbioV*%%peBqYS45-5uxuF@W{P%=%I5dDtYwMm)ayQM zt4CD>hXPKaLY}SgjPF$?Y*|+vvH+)odM4Y%NivcW<U$P)WDsQF&|obfIZ&w0nq}`B z%LTgigOdtwI_SEkeRMR01A{>p7K{u*{0~Ngpk_Sl`_#Bvj`q_skwuB+6!3Ak!-<yy z>=&6fB#90-$;c}tTP;?DJ=OIC*jg!r39(FXWO<PKrA!IBb@RG{*wD~~7kfo%zHc-; zS^f70$e#M*6U%I#xJ};&1v}SMsu%^OP^<T5P>s6oM6wqaHtcB1Iw;!OXdx>2EasUL z%LB&*!xH~gSBs^Y5&%IjDF(*>^1%WUTNTK?0yJ2cC6r6fS4e@A@)&ZefTF1HXVJo! zn$(O|8mkVH*BWe<0Gvr9q@7N){$V2>FDhXGYC3|%!IA&$3i3@yJhUaHq+Xr%rg^E^ z@vPWWqlBb1I1#u;h&)i4fpZ0nCNx<{Nk*7P_wwRijD*@)W=mB#m{=YKyhxGSW6gpj zOMNt6;6SfXM>$V5V6G!pi3KN^L8)<+#||i1CCO7Ps2+4Pkr+^f`bm2<0=%oEQK=?s zc&+ZF=4CFS`=D+OF^y=a%0%!<X-bL2sBE>ew@}=JTd`<bCx|b>*=RFBQAi5eAC{F$ zidLcud<agMAZiY#BaxU72ApR=q)>{5J{kqv!H5V-;WjY>F&c5cBGGThZEtIrT8XwI zE6k1vd7Uy{LXANPL_q>9L03_OMqqjEit$7hHBw%0SdnYX(104MD|nGqi=Kc^FHQL5 zdGA-4a+_kqGG^Kg24xx&3tr&5x(AO&B0X_Pjt?j-tPSOsG1Rc8D<^55nP=7NrNm@n zz32yXEc8z-<;^20<>5y9C5<(fSl2^}<|!4u(UU>)FPVZ993nHrj#5Qioh74H#A+QZ zR_%@f1vO=tc|EQf8IGtFm22#F_pV2;w4zs(2Pni~3<50+&au*dRS_pq$%&T=gj$%5 z&KuoI#RC?~$1DZSf*=)CEd^jDQCzf73mAR})s2#W1>aDHyashBD6~LO1ie`aB-X_0 zf_2Mz9$DqOH(mf(3sPlT5>pk`SQ+fd+zZNr$NEiD1A4}%kSMs8?^W5h!8Na{0HhhU z6#^+(F|#s_qDyFLsvOu9I85F}Q7E`4=bQzEicIW6{DU7_Y@|?G5R~pipt)qrh9H<K z>oC*8E>9Q*)eyZveXP<}4$Fy~K~^%ieX5fpY*J@R-6zduMOvK*aZ_44STniWPrj(7 zEm2EiKr2nF7R_k9ENP>)hMqDTT;fuPY~;3RQiF@QucKj;m{HHnXS=g2FAGJE^kQgo z#G{0UCoP04oIZSMAyU%b0D&cm3bO79HJO1g)DI<!N-32?N;7!1iFkyNmFua9NHMa4 zqz(pyF2t@%Z+Lqt_JtRzh-(uPMyQAFv0zL{dVr^51jR4Qi%d<Ke;!wfeTu3|4ePFe zDKVNB1{ZWfB&S6IWTjSS^-G>UN{^J>2pp?T^4w_OO4c-$!ENmK5I4~mQvr=wdH|v- z5(&PP2wBi%1HI6-<VsPjAZ4=ODobFvw3Z2y=+Y5ZQ&0yf;n8?f?ERpS6|ffc2Xo%V zY7$7Q>@}w?Qw$ZBlR{Pl3Yq7J2C?@7p@~65oG0Y6(M#uPU2L*CJ7RcUrtQU&O*0`9 zQZRVxb(gF;?7T%5{GJL`w=~EwROnzjgE}jsP&>5XtY%Cl_HuBtLXh^D5!OSB21Dpb zAb_Lo3M*P_X0%)^iD)fMORHqoYD%Fl5eof5i$Dd#UYS~B<(3vpr07|t20Oc;0zQY8 z$Ae%?UByH2f{9|TP-K~sD^-*PqrHMnIe+0j=VD3`ufg;@8x_#c>CpBPBGn{0s(}|> zL59z0WO;}N^nJa^G6i3CdhDhaS*USWK~o|s5+{-hM90<?=xGVYMjQ)<qJl_qj?(q$ ze&D-MC~_kN(IU(04j5yGw-EGPmljZsH^_CpvXD2Ay~1Q4DGv4`TH*_adds1e)-yt_ zej6yEyA>ApNlxig+yjSbii+q3oIF_pE0QAiQE!W@`~X&l)p)GJY`Qm~hcZ{C75IVa zLc~5~AyBCY(RE@>upq#aDQ{G#7-G)h8Mw>o9`+F()_SiLghWi~S0ooIwgz#hvqAm( zhFoaH!I%2=?75&G9f;hBxs<B7Y%Nm5i!=}ZXuWB-7@xM%NRa@x3S{Tg&mCFPK00Ha zBU-X{T9J2JWEKnqE|pXdc2G*$F4KRP15pG$rb*kwk<gf;RM098i*!oST2cuWBO};0 zJ{ny-o^Za%GKSWrbq3ij2oO-3tGK>S=ShKU)%y+(G9vh2X;M25RcNU%szIMZ$cRqS zRX3`8VFp6%31jsD)*r;BBFtPS)FWAGk=QI&!<^abQ`!UfRt*ba2_6b{taVrj7NRcL z4D?>F3?VhpgHWUwte~Y%QyhR3#8`5nF1QyKZ7!PQ_$omw^9rMq^moicigoGQ4jotX zeX*0EV-GcBdC8(5Mgzf3qOx+cJdd%$e@!&!aZ0(@YofGOoNbDREvk<mgo*)qoq?GM za-?P8;H`IolP9>USJcKt^Sc3w6%&Q(KKR~g!A=lRLhq2rM<1f-S*ojWFU0|nd2St4 zI2R3!C`cEl*(j@|j<}y1Ox}E;THwWL-<mq-w9IZBFzf=mR9DZCDp5Qr=x76N%up=v zi>8cJmP!;TRvjirY3!Xv9c{h(>G^=M?<^CrVv`gOl@}sY(Zst{6@|e)C8{ZI@iE<q znQme;kV<AXE5zV^pcM4gI?L>R+z5z5LiUmXncz6*PDlj3pod46EftB1>bjC}5K|uY zO6;MFlB2#?OO;ztP=k(WLKiVqtt4WABw#hT2^3lxstBq9Njt+qIrK4;)NExH2Bd_` zkx{tg6@lzaCd^=XsXD1Z70?nYTAPX<Bo!ojS`D{M((XtM7t40Cq9xQ8cOgWs>a$2B zZXgL)<q|cpsstH`XdH(wPiBP&6PdI0L5sC2Zjr1zf`hSgBanknvQ9~sx*?J3S7xf_ zW+kV~pZ5g0N!z7D(Bu_7TBM2^5vDgTI!014Ii0-$o>-8L9~hCLN6IV4P_!!=p`j7i zx>Pr*H*I1{#u|pi^IdVBMKT85$$#kxcP1DNOCP+H3o5s1ZYj|#4QkbbIV=5PQ^fRb z{-XNC6bHB5J}Fj@tqyp|^~e26YxcuOWKuG1U9`%*ZoNPjEqe9+ty>*J7M*HW#FALi zkQKw&Fy`3iB#?zFc_|l4>WI|{Pen3&+=)?XqWc?~L$oqcP4w0e@i#XP9XZyX+W$%X z6@B&ZwfOI=;VWc|3H<n5W&Gjmj{de-r$AF|qTtCn`3<s(A^hl5zztg#k)feQu%Ji5 z?L}~S{Zg=D{6teP&+S#ULz@}4(hmImd_5p@e<WDQt3a&KE6e~Zed~jM@kkkbhj&^1 zvJGFDJiY(Wk)ucD2gNgfA3VN3O@8yxzc+%vujJpM?A^`5ST;B~ydHbV5}LQ+`#SLh zy&9AE{21~wjj`b|$UgZdA=~k8co*cmHVbL`uOWAL-iXYBy<)TbKy$KnyW00^Q4kYl zDd0YY2W9^%4}6WbGDurQPWi4NHdFhd;@D>o3+8>s48LEF-?ia=79AH)4z~6*`PHJZ zd;DfJ^`32%AKEf}D8G08$SaU%)*r-IQQtmPgS=<xIOM%U!;p6yJ_z|kHwu55{Pgw6 zb+EGx2I=eY`en-o)qbd%Zh3mMx~$9oINF}ED9b{e(J}8c_M5~RK}q;B6A2D(cK_7n z+jfUlN5+r->Ig6HZ_paME*lH}W-i}<9hPpzZ`(5D@@*|JiEkSkI=;c=yKmmVg9e0u z=rCcG@4lU)>zaI>cT<+#_*uxOVqU%noj+Q^#BZfx-*R2`{vF(m42~!b%>UtR@BnRX zz5edo`TgmG2U}`->y6|{;tYX+uU({o9HNaFzo=fz1O}zsr7!<lv~)w8?hAicBK4)Y zUOC$zyot1Idu^o2`LrDe8v-}2N28I}ODU|QF{sbI&|hWKynGRtdAH7ajJw0rM-G3K zKiY~^HCO46_luCSyOUUJKt4UhpGn<41bKFL<4t%U@&U>zjxoXSlMX3Pd1&Z<;XuZz zl;gpUj3GCT3_q>xN#d@ZIJ}s@uEd{>Z{R!ZHSt^OPoI%`_>J|mv!4@x<=g8M9AxoV zaLVx4W%_G!u;b=|uh34CEx)t*Sbk*Y;79dK_*v$0IRKe``*n<6?BCi`7e2^VC8;Lg z;amVW@yn0#?Z62ulkfe-H~QWb!A<(5#vn#*`!3}IF@Bfw_MmLvrOfX>4$8@QBr{Sa z=~q3=cO-|F596n1o0F6Hl4SWs(v<fle7|teO}^*YtYz6I{XS$=n>6Gp{Wj!ggwWcj z=3py<V4_Ce?*&^f(B?0CChlpq_t&?c{6!w&J?Sj=oa_ndcfJK!Az1?gCM<3O5)Qno ztwpYyVnJ1um3IjY6TgS|dN4Sx_Nx2~4dL3UJi0F~YHL+jc|vktC|1;Xin6NUvqIS7 zFfMg`5xe8<0LvQAImGlnd^ne;@bS6iQML^j(%{_+3=Ii@)3CdD0_GY6K+ekUUOu{$ zseU60E}Gjme(+5IwvnaWtFHvClYG7H($_;rb3Z&T>gyo5NHz0egZk9K!cHGIaAn6b z$Sm5x?6O+cP@k9K5V(w<Fu4yp3~<tY6o6F#&_-FCw2kz2YO*y$1`{jn*RRq&JF~m> zh&<HT3AbdC))SG&&TZ^ZF6<&<zjYfV?D@0vJGn>F>glr#EQL~XT-ok!SNb(MTrKKr zmTi-isgHNlMR>bSU4><Fb*JR9MSkbDo$zui<gLL=^~C+Sl*h{BR=-ENodoP+{feQ! z8>77pW4n_sW`kRQ<6VQ)*ohxsf!kYu<IEWX$P!?dfE`OneBJTdP6Bo@Uo{4HZZ;pp zMfhYsj+)Qd!RdE#2ZrvXTP-|aU%a-HfL+X2)XTV&QQf(XPGSpZWh+jzACX5FbFXoY zyd()P=)AsoZ6^V{n6KL`?zWw2NF3791~Bd^>0a}UV>SmNeD?;6^EgYQzZLOnYg8K7 zIyxW5u01pTP(FQRW>O)!)}@H<k@fW!>{sKndv}&S{q(YI_ns^p#TST|Kg6XRJiRY8 zJ$Z2E==3L{y8<6u^TKZio<hg?x{czcBwYI8H;D?V{VJA`$5If#R4prukg?&qrid>% z`K#pTP%9+CO3eP)Y?{>Gl6Bn?^|OB+y}VZ|>L@e<8U2Y0SY1+*I*Lp^s@Snmg2s+B z=1({Vrv7Pgr3mD3a4g|hQ?}SP^(-t{?&ybBY}DW9=5He(Ix>w8;~6sN1(ToG^Y@b( z)Ajmt{x(Qf$AVZthA}bum<HXB9hi2ns%^$@`_&m8#9frVfbwTF%05xT!;rJ`G@&t` zb=Q#(O-yA!TM%BtDdVYfVO}4-O6PTHTFcyg%zK6Vyla^Cy7eYY9xE;t%G*?!bc(fY zWORHmZqW51l^&HfDSvFnhk^SlET5sStyxBvMJ|l73s=v)uA1vrSlaeCM6Oy-`e7k% zt!B>Y^1RN<^BOVzy5}{<6G`Va4n|BeuiNSfLb3hobnm=ITp1e*Y9nsZ7|(b|A|INV z%H{d%{1nFue$ka7%kTG2PEQ}@y2i8;pYlD6wdj~dkJtKZNXz-_09f@Ti7^x92Lt#6 zf=Cfx&R_n;M-?ItD>!4orpPD#{(P4!1U{KqXP23R<6`}h{4jnaS88ya^lV&y3s-6| zT<F=R{5||p0V)_SbX<w@G)8JrT<Q3hY2u=wxY4sslBI$OP9JaKOi2|4clxyd_AGp3 zf<@WipYP>4WXOkKYLMH3#8n~uB105Jzvnj~iof(AoQe(OgRxOc8aBNJ7G@=O2+^`a z5|ycn2W7eHK#%i)YLQ-4Na(3TN>3FE^r%pzM}-pI70Ps1=%K4ZFI^QX=%UaM?`NmH z)={5*#^36G<oM*VnIn2D|LU0QHnGyR!RCuiU7w4Xl!*7+c5l;}80Ki5be?MM{f|9! zeQSRBnq&DYnYwO=^ugn|FPq6%Y7OigtTr|qx8^&RX$^||<ek0=c~MZ@=!5r4wr8$y zx>0Z{h+y>Wxcq*$G};NWpON3su9)kx0=zTVZ4#ubNnu`SCv#hz7Ez%<_o-W^`_!#C zsnHsW)@f5~C|PH=*BK>Ip@RN~&h_8Mk?F|8t)tT)-!IdhbA5xhfHz6xcfWqukL&c6 zpEv1uzx<7_U&X1>M!8QnG{kc;c_o;jCYIDV8?YO4ko%3uD_($SXMc`2*~kxUJQ!3B z!GmpH%?U^OfsWrU7XIu;@&i4V&lYgEf^y<Uqj9wYAk+lYk&@!11iJ98-jtryTc8WB z&6S$ml=wd+hKL7KY5z!p`n>TH{n@AgIgqiF!g!_QOOT1<>xom!rzvH@<2(yl3MdYV zI>rx}2q;jz2(uQ!qirWB?zy;MM`|x!v3__|e|=Iv`~C1j=V;a9zcjAs%HsV~>}DAp z*11Ukr^_g5W?#e}nfL!%{C$=~ll#fwNp$%hA@4o%nuFI+g(N>rj)Ek~kCo$GH~ob$ z$L2FkA(=(6MP2+Z-TWHCXm-G{vujR)C)Gu4p7Su%`-r9sbxzhYc4`*pc`qo~Gal*) z*!-FvdpK>-dJ|o=L;VYww6zM8f>>|TCltjOwlYmw-r>EfV;`6MSuy~ei?%9c>_hf_ z?EhVQuLREI*28VeYvxa_Mx#|eo5<{OT+S*Vcw0GGi6G~~hka-&?!JLPfdkVpZlFIr zGdX<>3?8$}aq&E2hjDR5N#2|rZ#HQ-O)JNn8UAPGf|Wq|vR%0#>PIOXhr`X4FpgJX zRzlM&DAcDf?@7^ky}q(J4$~{4w!Qvf-~)F#3wU_1CK1SLmfjac7DkEBe|zqaX1`@` z5kl*nG^NO&=!1)v+3Bf3dnED0MLCBEu3v^AOAA&QKM2@bBlcvmvw{S-<xC3}#V@9- z84dvOOZeqg^vZDaqp+)3ho!t+V?pUMGX3oIs~7l(^d5GcT~%}5?_nc)FcUO@$1w{r zzA_ibn=4nWSb;6NYP`O(G0H7uAAbghzt=l~f^+j<{G-{<L{nr7Bg!eCgCT>6MqShf zWISkj8_RO&CMN{o5(4;KUyj8tc;nZXMgu*7H<)-pOVftC`C=2El$Q!N4Bg!T+*7~@ zlbRBRQJlaxHZ=IZv0+7qtR~bK`6vr`y}qGw_fTWQ2B>YT?@VzwKNRrz{#2Bx(Wvz# zj63o9Uzq#(*`L$Wd!TfqR9)ov!$r&N^xBttqZ>hDc(ClU(>v?SB_>C)xZl*$=~?75 z2mC`aw~oij#dTrO1`3CEIiGl4$L=?AZVm6;#`m%jhaP#OoLjfyh2*^zb89-k;kNuR zUNrJK7Xr9(Aiv!*v=rw`exuET;@o<GaK#)N*<6W_<hy(_73bD&H(!$$M1P|6&fL<t z?ib_z=0xvoSRCnRr(eCCTj6@?;QO~TZg@~A&#idA?kCi?2RCmpUTSrDOLMZ>l;@cI za_ZWMy}CJR82+rKzOB*3+nkeo_Utj<NTa!@**b9oFL<^l72Da|w)xPW$=2aK2PoLi zW@9(=NGA@rRQJJclda~S#tE=;s0*(#x#zkA&E5IoeD9?5cJ8bV-hcSS;rztCjT0^P zW!Z3j{ieyohg&V!-P;h|Y-nWj`g`!E=~!d3)z~K3;Lym(w#{|Ck=z_>j%`-n;BX!J zW^+$#a?iG!V#|hVJI4sMTH9;u9UC6u%d4$DfE2TC3p?~*yk61)NY9;oZR_cO_B*;A zeP{hxA8WR}U*JAkc7mMdP4}M2TZfNR9$7zgqV>QYk%#KT&9TYt+QyOH&B;ACitLVo z&u8*-9o^bLiEL$D_`5c)7WUxN_cXPUQH+0Tp^qX1*5>25V|-+dD>vf_YgZB5!ce;u zHlF9oqlE#rx1(McEFare-=$c5DhgV|FxsCU%VpQtCAw|N>^5vK9U4&V_;D$k8RPY& zVS8r;+q+G5r4eI#kvq0Lv<-Yu#DtY@fGs}L-zmM49*FPSXi%qfjrXlN&-^;Yhl4RY zpd&OOvc{^)LfWCS#8*E#m)IW={(#7-eQyh|ResuXSnm%^z8}?9&g-7_#+?Np>%?HK z`^@|&2XKFj{{$PZ*NLS(Ks{Iu*el&4ua3h)y*nRXuc5tq9jn_b&peja!6jnzHSuKz z<pJca9v0T?;)_Ta%}uN<#a?;l={uw{UB{)gJAY;lLalaP(1m|z=I#Kvd6{6=jx$e_ zxSs9DN82kH{;ozb?H6G396>Pe58p#KuJ<|sX$&&H*!PA0ZzHkJ!5=;IDD6<bt^Sa# zDU|EAkz>xO*RR>Mv!TZ`c>7EBn)V6!Pux-0Hp0#mbJn)RFTS9n>wRl0%=W~^7lHA! zmW2pX`MgQbblmN*hfDdHGd^`>Fa31pZ+bCB=Dk38lCk$2AO|eG@{nMEwV>%IDfalE z1AP3?9h*b?A%I!HU!I#2d;Kur*Je+$H1Z&4nLq`sidThYz4p*UiM`NqCZLqpSTg<x z4t)UG!u^Z)A<vk6UDsGN`cq2bp3hQ+;%&!!aQZ`}+3e)uU#D}+z2CfZ=DA+{f$h)T z^1w|!_<g&14%^yNwsRle$ghp;-11z>KJfdS)%eg&j?*nm_u)|^PAJ7rpLYI~y7vt? z>vQkzvj15;S9tg+zR}>Ib|vp$*xxgRzc=Fi;@aA0Xq!!*SH^^s_A%yw=iwjnySLYy zyddwvZyIUh&k%d?TJ3=*FW}02AaY&bi{oHf#lI);r95l`-lt*7x+Bl)(tA5^@pZ>% zc4^&FxbcnBdeOO0Z>Ze(jS|1XHLBB(kD?;~?&nFr2ipQZY`1HaPl_ewGt*}T^(mG{ z_SL<8yR0|f&J{SObJgMXDbp%^<opeLUTbj8`J6rT92&~^Ru3@WamhUzihDeiVOji_ z6r-%#9>R`g2{jR|tk)vrTlLa1n-klft0;@}qMsh>?bS=>M_I2hN6KwT<_Z5guwUC* z7O(Prq~iWc%c6z1mvpKA+J@fN>zV`G+4E__^pH8g3!V-5@Yut9sNtB@IzaVB&xQMq zGxe^f)Xz_!hbQO0e7=K=%1-CAv!}lmj}62p@*B=~I<v3MCdUlocjm{8UgUQgcN@Kg z&(C*WruEd$6EB_b{J~#zo>+kO1i$46k3QD{f8lX?%>avrrD>dDgTH_sQr~7>O?|(Z zFK@5en$E2cwAe3ipYuJu52G(I6wbRkC-H}Qy!mxL&J`ZvI`;Q^-7@ZfAy&rw@t1_# z+~O|f_nBRb#q-rv_BNhdhu)%di#KQYNLVHz+qtFw%KRDJvrUd4GKV(T>d!ol8=>DU z&aFG^n@9LZ8Bi$9MSNx6@_noD2U@*&J<B$al<^LjuwNS~+3(z`{?x>u)X@(8{|1mg zGwYpesjGF)#&g0COuj|uR*cC)$e!e}iK#GG7CUY=$M8qRy~n4Ae%x(V;Uf<=TmPqm pe@%AV&PsfI&pn1Gj=tKxW^mZ}u_XoRYC1M8=F8PO2Yy<9{XeQ*>o@=a diff --git a/Resources/UK/Sprites22,ff9 b/Resources/UK/Sprites22,ff9 deleted file mode 100644 index b3ccf18b78a432523b9669790b088fd1ebe40ec4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 272 zcmb7;F$%&!5Jmq8Nv*gBk~4S+k6_^zRw5W-#X>?Pt%V1$@djGNQ~D-pY#n&}XNLWs znMj&KFzJq7+GcmCkNfMnWs(-dJL;0&nL`F8B<S(>IaF|hk3kL<6zrJUCq9=iQwDlq va8{U{AuZ@e=QngsYHND0Fp6gA?+tNdN^jG1Yg!k?c-$Yj$Gx5rBR5fBZb~E9 diff --git a/Resources/UK/Sprites23,ff9 b/Resources/UK/Sprites23,ff9 deleted file mode 100644 index 3736642c489e4fce029ed93b259fc4602b1cb284..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29160 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 diff --git a/Resources/UK/Template3D,fec b/Resources/UK/Template3D,fec deleted file mode 100644 index af6ae5e6c43138585ca1955d64cb45d4bb6a4442..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 937 zcmbu8zl#%55XavpD-p~qJOm+yu5!g83W8{rh!E{m&VX>Go89NRnC!wP=Iktls}F1} z4+~qhyFWk<`~?=Gf*`?0iz{sGjyylJ?**?ov~XaU_rBkm@6MY{thH9{u`%ZrJiz;L za(6Au(_&4lw|np`De`_?Y9O^p;+dMuH)UBkRH+;FKRQV<9L9NC<x9;19>VWZ`;s^} zTCu%@k!sW$VLfP8@brbX(RG*6@rlx#So>x^&c*|iUUbqC*cRRk;e677yXY>9ZqNwA z8qH!qz|;Yyg#VZBF|?NO8NGgX<&}o$K2%Xizd@)Su{^VO>T^2M!&x_*Y3+Hi#a(LJ zz=!Y+{5|>G<V!z6td71W=M65UN5K1@e@g7Yzk~RQ%XAj;33d00+r-u__34C3v$57P zlLsfkcc_~X+n#s7(W(~yEBGDw$LMW({V$xqd3|X04Ezc2ennhBKg}jtYRam9ojj?( zM4$8e?_fWD{eJu}xS8ko`+gm*ra0ej`Tjl-=lX}?T7Th>!!3FKni-AaRTJGVi(z!7 zn#)z)Em)fTp3%Jvr_bqboF`_Wd*?Y{Hlw7>`Y``<+oaiu2d=P$J2Wyk=5HU#vNRhi Z)bc!R*DawOt0nZyBKK2W|F7}O{Tu4a>TUo4 diff --git a/Resources/UK/Templates,fec b/Resources/UK/Templates,fec deleted file mode 100644 index 4e56a2ffd4eeb1e8befe9594adc306f1d50dbc52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 637 zcmZuuu}Z^G6un6!QRwa9A~<DG5Jl(*G#xBXRxO=6Hcc`V(*#1K7DNYk7gq;Ap*r~i zf{TNjYet9S>`?kVH%VzJ-f*~i_ndd`eeWry6fH%9{|=x5J;%Km_Cqfk^5|o!?nZ-w z6M8)G!(<0SO#t4H<0xi7@ZIEKS6}$_-6-riF&~~fBgkkIFiJ#IY<feU2S!otbs|$Y zjgnT*%IULG)>*Ew3!(IqIKq5ZF`%rU01ITtAex~6JjC|_EzPn?2Isys#ktpVMdn-0 z&mfikMsdJ8XMzemYrqd?UG=>q!@#_n!Fj{hOsTZ!ZOfpAZ>o>AUo2&o8nU#Gfid&} z^b^!=hqh*-0c7h7;DK*q@rZ19>HYkKlYV&VbDgg$;H%izMZQMf?$THO2JCxvzP*93 z@Sn*4@%Qi*|2^=9zu9m?*AF=JKhEBhn{1)ME6~Qp%0);70K8R89!$dp=x{-Nqb8>l Me)Yk4gBBn7KSR!v2><{9 diff --git a/Resources/UK/Tools,ff9 b/Resources/UK/Tools,ff9 deleted file mode 100644 index 298d22d65559f3ffbb73029d3c857331a75f0ce2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11500 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 diff --git a/Resources/UK/Tools3d,ff9 b/Resources/UK/Tools3d,ff9 deleted file mode 100644 index 30149ceb56805c5938108f62c4513528d1c6d52d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33932 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 KT5##?;{OFjene9M diff --git a/Test/!Double/!Run,feb b/Test/!Double/!Run,feb deleted file mode 100644 index 144aa95..0000000 --- a/Test/!Double/!Run,feb +++ /dev/null @@ -1,19 +0,0 @@ -| Copyright 1996 Acorn Computers Ltd -| -| Licensed under the Apache License, Version 2.0 (the "License"); -| you may not use this file except in compliance with the License. -| You may obtain a copy of the License at -| -| http://www.apache.org/licenses/LICENSE-2.0 -| -| Unless required by applicable law or agreed to in writing, software -| distributed under the License is distributed on an "AS IS" BASIS, -| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -| See the License for the specific language governing permissions and -| limitations under the License. -| -| > !Run file for !MenuTree - -WimpSlot -min 640k -max 640k - -Run <Obey$Dir>.!RunImage diff --git a/Test/!Double/!RunImage,ffb b/Test/!Double/!RunImage,ffb deleted file mode 100644 index 5b083bd1becba1234c9198eff05812ff5150e376..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1769 zcmZWqO>7%Q6yB8*1XZV^QY#Rk>Sf3lhiu{>N=QRp;n+@U66|0*jmiNuUXSfn*Snk9 zF^(k;6#`B<a6*Cu;=qYRPaJyUKrcPe3ld035QPhsdO!#*9FX{Vv$of6*~5B%-uvG7 zee-5bG%XQA-tz~-Zg(W4FJ4@MoaG4@7rTB>auL9`Y!XeI4e?bBVcWL28}KId+$I+w zI~;O8v+!rMW5QL;vOO0v%PB~x06N;D3oj$cMhFA12VFJ**OSl-IHK4Av}}h1Kd`tj z!FIty0*=jGi$mX*ov6|XXBknJLbx_U@fwn00>c!40A6c46qp>7zYv0YI#T*;$z;FZ zUuF^UWlyw|&QMm6+%Dyd<yvtG$&V9DA?&&i4+0Q;zh?^+-xvV%k)FjGNZMh2@C2~7 z;J7C}MZYg>X}fI`0<R_eOmIZo454WUQrHc2cG|&_E<hKi1JFa}0?pN+RHLw-tCead z!jwbUE7h-5cI&X0t5$R6dZ}20N)_^za-mc&RmwQqfL!?+Y?aCd6FB;ZXT=YEp;RDM zTY1Zy%1BgK<LU_F6NDB<sCnRX%Wl~g3Uu2&*5=Um-sZwZUEp)kwF7m|0g_Z5G9Q9t zcWudJv^eRHsZbmDXfmtn5jb4y*sB-)wP5R%DcBrp%Y@Y;fPm5ta{)^*hS+Rk&z z`=&sjkrP^n;Y2$(L$t)%BajBXxHd11EUo8iTa;*-<eiU!?xD!HN-iD)bL@aqGm}c0 zbJ8$r4g%Y81|V5*9m6jn&c+i*uy4TmG{(SwW;i0+4sN~i_^<Fj{LY2&#M&{@nz-gZ zwP9p$Cg`O~gAe8lwz#}pSl^@zL_5IUcQbMQiqG9TN4J?o2Ih3acsW1{hY3|9&dNJp zz{mS^ZBqNAb4L(Zf=R1mKsuGVU^ba#!y(Z=dp$<j_E<9pFwJq!Fnsu4jPgxd=Ygbf z3rw?x{cD)`v^+dLgJ@qo9Rof{iD+Lw<jPmcd)PNBEt`Tv6q8oSL*c+(DTcQ_3PHhl zCKlxdM|1XUx9RoKqA^uu)WvJv!RB%}a{2bmzA=}|KCt%V#Ij8;hY&SvKxOql=KOLJ zb26*hr8LogdnVSR4kfOq;{KW;`poPfL_akbeIw$?9nW#7nMN?AQ#FYG<mo8j9!|0= za7c7|cKBJr<>#+dYW1syU80+rC~E5U9Xz{%o!0=mcpEvbE>Zw{G)b=zePs%!zPnzG zU|u;9A>1YUtH$4uNMOzMOAGKGM5EP(1-JnTL`$z^Qwv0|qlz~l`$1JAdIu+B_L%7J z;NXK(lNKiWhq&^|BY<*0KOYr%NN#E<ms#o}Bh<|lsOqEnm_j`LACFsz|FtUp4Gz9P z`P1m`5dHYk`_Mwb`&)6vD)&7hi|TGslOEth7yq0`cbLSliHrXoi?=^DUodI(J(}EF h)vpRFq}X=GjSRM2j2X3R!RxyeudDvg?9b%i{{W_RCmsL* diff --git a/Test/!Double/Templates,fec b/Test/!Double/Templates,fec deleted file mode 100644 index 8cbb6d9de168733125a57cea59660f4f9a0f626c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmezW|NnmmB%lLiM*uM+5Qn4|m++QD07!`qQ1A;7JFqY?OaWpT02=XMh=JihI}<x2 kGb0Z~_z%!rRtVD;L@j`r31ZrW=9OfY<fNw9@uq_K0MEr3z5oCK diff --git a/Test/!ManyWinds/!Run,feb b/Test/!ManyWinds/!Run,feb deleted file mode 100644 index 144aa95..0000000 --- a/Test/!ManyWinds/!Run,feb +++ /dev/null @@ -1,19 +0,0 @@ -| Copyright 1996 Acorn Computers Ltd -| -| Licensed under the Apache License, Version 2.0 (the "License"); -| you may not use this file except in compliance with the License. -| You may obtain a copy of the License at -| -| http://www.apache.org/licenses/LICENSE-2.0 -| -| Unless required by applicable law or agreed to in writing, software -| distributed under the License is distributed on an "AS IS" BASIS, -| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -| See the License for the specific language governing permissions and -| limitations under the License. -| -| > !Run file for !MenuTree - -WimpSlot -min 640k -max 640k - -Run <Obey$Dir>.!RunImage diff --git a/Test/!ManyWinds/!RunImage,ffb b/Test/!ManyWinds/!RunImage,ffb deleted file mode 100644 index 2ddd872016970bbe8022afbf55e904fe7cf5983c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5709 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 C-__{= diff --git a/Test/!ManyWinds/Templates,fec b/Test/!ManyWinds/Templates,fec deleted file mode 100644 index ce6826cc27528a49735a38b5778714e36a2b8754..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 331 zcmezW|NnmmB%lLi%QG@C01-o4eqKpQYH<l~c{w{sNdZuB2aw*y%)oE}h+!af)?`Lu z24;44CUyp9Mjo)R&e#9{7qo#)VPLQYlMpjOOyAVJQU$QVys02#q=1+Q=#CJe@&`cL zHj&{t$ex=(900@-KrHg_|NmV;`8PlsB!3$y_6I6I4@k@W{r_KqiGkq*kOs;B1B%H4 z)r0gq=VT^lD`cb=r7D!<D<l`CCYGcs7#bKTlxOCp<d+xo`tYJENlDE~C7>iJzceoy QXkJEUu|i2=aW>El0HmN;%K!iX diff --git a/Test/!MenuTree/!Run,feb b/Test/!MenuTree/!Run,feb deleted file mode 100644 index 144aa95..0000000 --- a/Test/!MenuTree/!Run,feb +++ /dev/null @@ -1,19 +0,0 @@ -| Copyright 1996 Acorn Computers Ltd -| -| Licensed under the Apache License, Version 2.0 (the "License"); -| you may not use this file except in compliance with the License. -| You may obtain a copy of the License at -| -| http://www.apache.org/licenses/LICENSE-2.0 -| -| Unless required by applicable law or agreed to in writing, software -| distributed under the License is distributed on an "AS IS" BASIS, -| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -| See the License for the specific language governing permissions and -| limitations under the License. -| -| > !Run file for !MenuTree - -WimpSlot -min 640k -max 640k - -Run <Obey$Dir>.!RunImage diff --git a/Test/!MenuTree/!RunImage,ffb b/Test/!MenuTree/!RunImage,ffb deleted file mode 100644 index 2668b3bab6452d9818b104e9000902b15f97b7de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4478 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 W>f)ws5qEXmi*9)f9C!jq{`)^?hIP;Y diff --git a/Test/!MenuTree/Templates,fec b/Test/!MenuTree/Templates,fec deleted file mode 100644 index 0bf0d4fd5bde632298531a302fd2c07fc57c68da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 412 zcmYjLu};G<5WO}-B-BhWA%t#Yi5S>BAYefhA(2X~PU;ei)UINiiXY%J5F?*}I<fH^ zEQp1Hg%Ql1n@U)IzUO=Qo*hC6@NebB=RE-0Fg4maX<gRo+<zv%OaNX8>-Dq&un9?; z_ESiDgV@f$LwLOB6o6qoSD8#lQhSWSndF#l!hrr!(D)nGp@3I@=bdmtxFT%*hOi|4 zlPc>U)Z3vu>krI-Lcl)27gg4GNz<Kv)TrtPM<?fFG#Xv4EH0Fum<2k6rgTDaSK^HR zm7QfoHCEAcczim(ELJXwx1v?X+c<~H$(coV`d06gt>_ZawNj$3jc+Dsow!3YmpaGN eyJ*6LJ&V?t{Mve~YK)brrZj+6E%ddtl=ug^ymLVS diff --git a/Test/!Monitor/!Boot,feb b/Test/!Monitor/!Boot,feb deleted file mode 100644 index 55b2a9d..0000000 --- a/Test/!Monitor/!Boot,feb +++ /dev/null @@ -1,15 +0,0 @@ -| Copyright 1996 Acorn Computers Ltd -| -| Licensed under the Apache License, Version 2.0 (the "License"); -| you may not use this file except in compliance with the License. -| You may obtain a copy of the License at -| -| http://www.apache.org/licenses/LICENSE-2.0 -| -| Unless required by applicable law or agreed to in writing, software -| distributed under the License is distributed on an "AS IS" BASIS, -| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -| See the License for the specific language governing permissions and -| limitations under the License. -| -Set Monitor$Dir <Obey$Dir> \ No newline at end of file diff --git a/Test/!Monitor/!Run,feb b/Test/!Monitor/!Run,feb deleted file mode 100644 index c363712..0000000 --- a/Test/!Monitor/!Run,feb +++ /dev/null @@ -1,17 +0,0 @@ -| Copyright 1996 Acorn Computers Ltd -| -| Licensed under the Apache License, Version 2.0 (the "License"); -| you may not use this file except in compliance with the License. -| You may obtain a copy of the License at -| -| http://www.apache.org/licenses/LICENSE-2.0 -| -| Unless required by applicable law or agreed to in writing, software -| distributed under the License is distributed on an "AS IS" BASIS, -| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -| See the License for the specific language governing permissions and -| limitations under the License. -| -Set Monitor$Dir <Obey$Dir> -Wimpslot -min 64K -max 64K -Run <Obey$Dir>.!RunImage diff --git a/Test/!Monitor/!runimage,ff8 b/Test/!Monitor/!runimage,ff8 deleted file mode 100644 index 2abac1bc1e1b845d4f94150a645fe3e4379b5ca9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11108 zcmeH}L1+|b6vzLwJBd+tvy(JI8>!BvAc!!B7K#^FZ4p|9)PSXEX}9c(vAUb4n_59| zl1dveva2907`juvgyyoKmqrCot+Yi_=s~cwJKtpJZWfx*B9*F4|6j6FC>}lZ@CF{= ze(!tleeeC|zc2tEqHULeRu8Z=lLBsRq__RV^y;=Z|5>7|cY?0kS(U=21~3$KFV}wT ztG%I6J6ktsfEU1`*|fA5tjBD_a)#8SDEf}E{&8S&EdN2ia3cS1?&Dm($odu#C2x8D zpZB&k&DvhI4)6F$1J^O=`PbZPXt2(SycZZpKT}58^RF9d@eUuTgkS65Bc9*I-@ssy z!=6|dCOd$OVGs8lZ6G_pPxaXs!z4U^U~@@zGbd?#{#x$i?A3^&WisEeU1i#nq4sys z|Cn*v`EzQu_MUo{_1NoN*T`hpiMMzs=GL%}PR8@{mT6VOfUE9@3>Rlgz>A*%=13)6 z)4tDS{BNvlGG}@AVDorpIIj`2)(QjX?!OFv02y%h=fEBluG$z!>-khk^>JO#^>y}r zhV~2VjkWERwVADqhbf+aL!V~&EmzLtJE(?9=IXoe)Au{=0rP=!80Tz%N6~;j`-3z5 z6-A5t3i;t;VH6b?*v%fvauI3vhjVI+RV9P-&8v*HSy!_MO1*F&H+0O0nnU_#!(`kH z^IWo+9@p<Wwq%gSsUGGy^%ad^upabwmlWRfg7MCEOC7+`I1cEuFZZWPm*IF<4gg=h z1jbn9h3zlwRI&ay)oClUpLg!sN)4C0T?`$`jOMcTZu{8q`=goBlXkvPw2u`s*<2Rq zpLRa{kzE)o+J(b*HdD+&_l>gWzx->&-l<>q1-u<394|hfuJ+#^toEDEYgWSfw3qKZ z*u+`j-aG<(Y5~r~LV~%tHNB9qrWEYy(6A@!(@r&fRrk%=COF%jC|a5A`zV_0bH|ly zR2r@^)#QEtA;#@$GrkwGhuF5}L2@+6G|jUeJTv$nHk<)|qFp1?`3r#lzv}(W=d1e- zUjT9X^j>q<`|K<Q#>aJ6eOjB^_hiK~=M@tMq5;u>Xh1X|8W0VL21Em*foH0LE&MKD z`39c=UZJIF`qAI-cWFP<>NI(TfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF# R2nYcoAOwVf5cq!(_y-{{ioO5< diff --git a/Test/!Monitor/Templates,fec b/Test/!Monitor/Templates,fec deleted file mode 100644 index 6c5d2921983e37eb2c04ff036e1c2d739bba7ca7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmezW|NnmmB%lLi2Qe}*01<<4eqLrtei1KBdLB?Pf{B6Q1~ZTbVi-7TF^y4(fw`TX ziJg&|kq09D2WT!UglP++3?OELm@sow?08ezfP4)g-U4)o8_@hGKw2`9;kX2l4P^f3 z2g+pu*&ul-pxq#OTSf+Ub*MbZHYXs?0gCeh#pVEMkbW(wJjn4N{Utzg8KC|pQ2pjm zc@e076`;5sP%H$h-vKHw0F=)FvNeF>5<vYCQ2hZ=d650Ssl~;K>8ZsE`U<|8dAtS& dygrG=B?`F^VIUs@cti3_5_4d}#a6rqyZ~WjZ{`31 diff --git a/Test/!Monitor/c/Monitor b/Test/!Monitor/c/Monitor deleted file mode 100644 index 6934bf3..0000000 --- a/Test/!Monitor/c/Monitor +++ /dev/null @@ -1,110 +0,0 @@ -/* Copyright 1996 Acorn Computers Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* Monitor messages comming in */ - -#include <string.h> - -#include "wimp.h" -#include "wimpt.h" -#include "event.h" -#include "win.h" -#include "template.h" -#include "dbox.h" -#include "alarm.h" -#include "res.h" -#include "akbd.h" -#include "kernel.h" -#include "swis.h" - - -int start_time =0; -int messages =0; -int my_task; - -BOOL unknown_event(wimp_eventstr *e, void *handle) -{ - dbox d = (dbox) handle; - int av=alarm_timedifference(start_time,alarm_timenow()); - static int ov=0; - - if (ov==0) ov=av-101; - - if ( (e->e==wimp_ENULL) && akbd_pollsh() ) /* Shift pressed on a null event */ - { - _kernel_swi_regs r; - - r.r[0]=my_task; - wimpt_noerror( (os_error *) _kernel_swi(XOS_Bit | 0x816c1 ,&r,&r); /* Get character at pointer */ - } - - if (e->e==wimp_ESEND) - { - - if (e->data.msg.action == 0x816c0) - { - werr(0,"Character found %c (%i)",e->data.msg.data.words[0],e->data.msg.data.words[0]); - wimp_processkey(e->data.msg.data.words[0]); - } - - - char strbuf [100]; - sprintf(strbuf,"%x",e->data.msg.hdr.action); - dbox_setfield(d,3,strbuf); - dbox_setnumeric(d,5,++messages); - } - - if (av-ov >= 100) - { - ov=av; - if (av >= 6000) av = messages / (av / 6000); - else av=messages; - - dbox_setnumeric(d,1,av); - } - - return TRUE; -} - -int main() -{ - dbox d; - - /* Start a wimp task */ - - wimpt_wimpversion(275); - my_task=wimpt_init("Monitor"); - res_init("Monitor"); - template_init(); - dbox_init(); - alarm_init(); - start_time=alarm_timenow(); - - d=dbox_new("Monitor"); - dbox_showstatic(d); - - win_add_unknown_event_processor(unknown_event,d) ; - - event_setmask(0); - - while (1) - { - event_process(); - if (wimpt_last_event()->e==wimp_ECLOSE) exit(0); - } - - return 0; - -} diff --git a/Test/!Open/!Run,feb b/Test/!Open/!Run,feb deleted file mode 100644 index 144aa95..0000000 --- a/Test/!Open/!Run,feb +++ /dev/null @@ -1,19 +0,0 @@ -| Copyright 1996 Acorn Computers Ltd -| -| Licensed under the Apache License, Version 2.0 (the "License"); -| you may not use this file except in compliance with the License. -| You may obtain a copy of the License at -| -| http://www.apache.org/licenses/LICENSE-2.0 -| -| Unless required by applicable law or agreed to in writing, software -| distributed under the License is distributed on an "AS IS" BASIS, -| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -| See the License for the specific language governing permissions and -| limitations under the License. -| -| > !Run file for !MenuTree - -WimpSlot -min 640k -max 640k - -Run <Obey$Dir>.!RunImage diff --git a/Test/!Open/!RunImage,ffb b/Test/!Open/!RunImage,ffb deleted file mode 100644 index 450c8fa46d2c8bb2bf0037c81be7d6e359958bbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1588 zcma)6O^72!6z;%`h}esQi-NMeDW=zism<T6<LtOujG4^Z&X|lz)?qy;mF`MXY^SSJ zT`?2zu!wrvv*1NMd-mYTi<don)?vLUco11y4}$2c{B)ux8`9~jdhe_6``)XvEi0Qq zO-55C`U4H6>(_Uo>PZ#i<S-g*u3|XWzHM2X3BKwH91D+!G528{`don?aHvMi!@tD} zg|{(F$Pmi;B4kYfSuBy<D+qF!z*LT5$fgiV4da+2iin{n0uKDl<B<jtf`<eG!9tJ2 zMCie6rv*+PQLZF#XMrNSnqdONlxPaFw;l>iFUem^z&r!3qy0i*GMVJrjCfwEej%94 ziVMeXt=?$YuORtlqMN|&FyL_vijT%Zq4@3;ScLRE)<x0*n}Afn`ikS4mWKXB2`$1t zg;@6Vgei__w-WG0td;1Zv+E8nbOE}s9)KRQ5J<HRZkxbs)wbKF2-8U5)a|_9yxoD* zYO7UkbliFynk}d`8wYO3Z8mUp2-U_NIC2{Y6gc{awc=-yGAfX&Fy3<C7>VlI+>{`# zAoMW8jN^!Vq9;5Q81~1k&!I2h=PE>95OFmWv8i*6Bu$5GClH9C&`i%JSN*Y8HPb~; zJe|Nz*lLYKcZis_^~_!Zg+gH_um+KmeZ_{xM(ir@E^2-A<VEAXuh3`Ygw|oWZC%>1 zt?b2f&<?z`zpb4L=~UZC#J0+X2cH2sMUn5hA(nv!BIbmai$%Jn9ZISYiy)YSX7ODN zzkxW1&z{4`fy*U~fl+z>Wm_k>^v+Yi!pHE4D<#$bL)-FkE-a@zG$S5%IQq#n?m@|o zW|vR54}`jzUrxuk$ywH*q*=8<#(cR>_E+d1UOI=^Q%rjU2TH~AHR?0X=AX88|E(0^ zSTa8apmdot51+qxX8DwKc&rJ04V3n<Lmi4wPhx!>+xqnR6!71aZ0n2v=>D?sGj@ha zs}$iriYXc7xp3g2R`c^b3qiqOtt_f3j^><-(3camXh{_r4e{U(uzdoKT)w%w;_^Q- zN|^EhYw_L1k+W5-tf0)o_baP!aXsI<jjd@)G{W_tOj3DoEej`qdm$xYs+tlu34d<b znGO71xUlL5JM$dQkjLP6J3}weZkH6`L<Rw&McfQ!GS8d|$Ik2);V;N$7voCl<s5tj ztKnWQ2lpV0)JnURV$ROIiuiAAKD09({CM}t9~NzBX9kb|0zCv&N9m3&9!aI^rcDVY zXZVnvKel%WUV(TpL%fD}zWtnDrDS%rR|mi}hJpHkV11o?Wvp$AIqQi7ISC1Ne&&<S IAML;Y0UkU7LI3~& diff --git a/Test/!Open/Templates,fec b/Test/!Open/Templates,fec deleted file mode 100644 index f97394d10241347c8be71a3d450b5eaf8e9d63b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmezW|NnmmB%lLiM*uM+5Qn4|m+&fpKuJ7Ei49Qj3lKZ7FfdF3Vi*7#@n496@jp8g mJ0mkA4@CG6&|Fps(-uS-K+FU&Z9?-(GD~t&Q|x$CL3{ueiWY$Y diff --git a/Test/!Redraw/!Run,feb b/Test/!Redraw/!Run,feb deleted file mode 100644 index 144aa95..0000000 --- a/Test/!Redraw/!Run,feb +++ /dev/null @@ -1,19 +0,0 @@ -| Copyright 1996 Acorn Computers Ltd -| -| Licensed under the Apache License, Version 2.0 (the "License"); -| you may not use this file except in compliance with the License. -| You may obtain a copy of the License at -| -| http://www.apache.org/licenses/LICENSE-2.0 -| -| Unless required by applicable law or agreed to in writing, software -| distributed under the License is distributed on an "AS IS" BASIS, -| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -| See the License for the specific language governing permissions and -| limitations under the License. -| -| > !Run file for !MenuTree - -WimpSlot -min 640k -max 640k - -Run <Obey$Dir>.!RunImage diff --git a/Test/!Redraw/!RunImage,ffb b/Test/!Redraw/!RunImage,ffb deleted file mode 100644 index 999f13cd88c43fd7cabd70a0eb1e4af2faff89a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1682 zcmZ8hO^6&t6z+!Ipt2PbSW!^I+hRM}WqWsi5`$SY!Etssw!6-(GaZ+BP-?qtW{UK5 z_f*$7JK#YCJ>{SmK@TG0$%7{kIe9Rb96WjOq)S9l5DY<D4}$2c`RSRp5B*d1-uJ%m zd#{=p#!3p6C>}`BYAYyQxpEoGUL-?Y?8H6AWdeK3Cx$Vf;%z&HJ>l^%;Xd?2pG#0} z4&|76_!#fl@G54BD1_oh9#(V!9dFUq=MZEkg+bJV4jVuiDd;5}QA7ew5pdu~9*-4> z5IiIh2o`!A`a-pbmBu(5h_ar-%`r-Js2C<NOo;~&HD^PCsR{W@Dd?-MRJ@tX_51w| zHYC0g$yP2H$x3p2PG!5=*j`8SlSC(l8)3kc1SIeFghcU&17I=I^VlJh4p<)|39KbK z?x{%A?@OUX*s>vsnySwvN3`oH_##nK9HO(c4vuvJx-c7n9<mT<xdBdt!VBew)36by zn!<tOzF52A!a=!SFIQb>y8*R2RBF{N$8~B|{MvzX^(O2()h!!1`iH&ZN3ql@kgCw$ za$g&X>Ka_PAnPDBF+zVQG517McqlMz^;nBTD|(a55OqP!Wk)2s&k2&$6SAB_AUZ-Z zHC&v|$4uAs6g_q}g=?@>?}bhWF^RGGYznztZYZz<v5Z=hb+nB*Ro*Ss`ttq-?Y%G2 zXXJ#|VK_0)%@Jee@ncXHJhQp1tP*w0ja^ENV(#8YKo3yl8%~IAV1Y<DwTt<@y`(Ig zmLU;AFaX7pTNr*7adw_KhOPzY3m604;^>VS`?&SmnFsJL{K2J+<mP>1__!7pvkJAC zhb~7ynZg=2y;?iugXJwDuWd}06D)GHqEWJ}N)RP{vQIas=<l36hQyOhd2I^{`Qjzp zXNrwpiE;at3}G)~eg<IMlblib=)N}0x2ek$Md1$Eb`vMmvhiw0*dL1+A3l`<o}@&K zPyeU;i`=g`89J?$hubKoppi$yfrm<t&hsz?1%EZQs3JL<b09)L>Z3&ys>rB=2e*ym z6L946H5z+wv1={mODER9o7#4rs}W2C$4uMZ#k?ODFy~^iv|b>_FHdKBbYrrbI_@Fj z|9yJeOk&Q>5%csZ_>-7Vo*(`kvgG|J2&kP$d}PTyJ<=92=^6NE@>R+c)5iSEi?GzS zPB1o~$Mu&U1=lKlKuq^6{0xp&Dj*V$7cpPIplfBN>chdFVTy4Q!`dgqP<owv3QuA% z5<U)-r{H&DzO^u{w(cU!_g1kvpFtkmBRYH&=-S;C*UDk-)isKT-HSp$0ZPpGk><zq z_lfyAzI?gx<9Nu4dFPSepovJ|?9Q-^BdNCaA)q!r!i%o`wTyU7;js_#C%<<06Z@h~ nhd++#@j{lihWeJ`^jL2fadI-u;lyo4{gC3hGQXeyiTwK?T+tZv diff --git a/Test/!Redraw/Templates,fec b/Test/!Redraw/Templates,fec deleted file mode 100644 index f97394d10241347c8be71a3d450b5eaf8e9d63b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmezW|NnmmB%lLiM*uM+5Qn4|m+&fpKuJ7Ei49Qj3lKZ7FfdF3Vi*7#@n496@jp8g mJ0mkA4@CG6&|Fps(-uS-K+FU&Z9?-(GD~t&Q|x$CL3{ueiWY$Y diff --git a/Test/!Redraw2/!Run,feb b/Test/!Redraw2/!Run,feb deleted file mode 100644 index a312feb..0000000 --- a/Test/!Redraw2/!Run,feb +++ /dev/null @@ -1,20 +0,0 @@ -| Copyright 1996 Acorn Computers Ltd -| -| Licensed under the Apache License, Version 2.0 (the "License"); -| you may not use this file except in compliance with the License. -| You may obtain a copy of the License at -| -| http://www.apache.org/licenses/LICENSE-2.0 -| -| Unless required by applicable law or agreed to in writing, software -| distributed under the License is distributed on an "AS IS" BASIS, -| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -| See the License for the specific language governing permissions and -| limitations under the License. -| -| > !Run file for !MenuTree - -*IconSprites <Obey$Dir>.sprites -WimpSlot -min 640k -max 640k - -Run <Obey$Dir>.!RunImage diff --git a/Test/!Redraw2/!RunImage,ffb b/Test/!Redraw2/!RunImage,ffb deleted file mode 100644 index 999f13cd88c43fd7cabd70a0eb1e4af2faff89a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1682 zcmZ8hO^6&t6z+!Ipt2PbSW!^I+hRM}WqWsi5`$SY!Etssw!6-(GaZ+BP-?qtW{UK5 z_f*$7JK#YCJ>{SmK@TG0$%7{kIe9Rb96WjOq)S9l5DY<D4}$2c`RSRp5B*d1-uJ%m zd#{=p#!3p6C>}`BYAYyQxpEoGUL-?Y?8H6AWdeK3Cx$Vf;%z&HJ>l^%;Xd?2pG#0} z4&|76_!#fl@G54BD1_oh9#(V!9dFUq=MZEkg+bJV4jVuiDd;5}QA7ew5pdu~9*-4> z5IiIh2o`!A`a-pbmBu(5h_ar-%`r-Js2C<NOo;~&HD^PCsR{W@Dd?-MRJ@tX_51w| zHYC0g$yP2H$x3p2PG!5=*j`8SlSC(l8)3kc1SIeFghcU&17I=I^VlJh4p<)|39KbK z?x{%A?@OUX*s>vsnySwvN3`oH_##nK9HO(c4vuvJx-c7n9<mT<xdBdt!VBew)36by zn!<tOzF52A!a=!SFIQb>y8*R2RBF{N$8~B|{MvzX^(O2()h!!1`iH&ZN3ql@kgCw$ za$g&X>Ka_PAnPDBF+zVQG517McqlMz^;nBTD|(a55OqP!Wk)2s&k2&$6SAB_AUZ-Z zHC&v|$4uAs6g_q}g=?@>?}bhWF^RGGYznztZYZz<v5Z=hb+nB*Ro*Ss`ttq-?Y%G2 zXXJ#|VK_0)%@Jee@ncXHJhQp1tP*w0ja^ENV(#8YKo3yl8%~IAV1Y<DwTt<@y`(Ig zmLU;AFaX7pTNr*7adw_KhOPzY3m604;^>VS`?&SmnFsJL{K2J+<mP>1__!7pvkJAC zhb~7ynZg=2y;?iugXJwDuWd}06D)GHqEWJ}N)RP{vQIas=<l36hQyOhd2I^{`Qjzp zXNrwpiE;at3}G)~eg<IMlblib=)N}0x2ek$Md1$Eb`vMmvhiw0*dL1+A3l`<o}@&K zPyeU;i`=g`89J?$hubKoppi$yfrm<t&hsz?1%EZQs3JL<b09)L>Z3&ys>rB=2e*ym z6L946H5z+wv1={mODER9o7#4rs}W2C$4uMZ#k?ODFy~^iv|b>_FHdKBbYrrbI_@Fj z|9yJeOk&Q>5%csZ_>-7Vo*(`kvgG|J2&kP$d}PTyJ<=92=^6NE@>R+c)5iSEi?GzS zPB1o~$Mu&U1=lKlKuq^6{0xp&Dj*V$7cpPIplfBN>chdFVTy4Q!`dgqP<owv3QuA% z5<U)-r{H&DzO^u{w(cU!_g1kvpFtkmBRYH&=-S;C*UDk-)isKT-HSp$0ZPpGk><zq z_lfyAzI?gx<9Nu4dFPSepovJ|?9Q-^BdNCaA)q!r!i%o`wTyU7;js_#C%<<06Z@h~ nhd++#@j{lihWeJ`^jL2fadI-u;lyo4{gC3hGQXeyiTwK?T+tZv diff --git a/Test/!Redraw2/Sprites,ff9 b/Test/!Redraw2/Sprites,ff9 deleted file mode 100644 index 558f3ee23159c03c1e83afd7ade711c0c266dde2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2584 zcmds%Jx;?w5QQHdU?k{4;t(!rxq^?7f(9W#a!YAZ(Ym8{DCoD~0$jmYu;?k4H?tcE zR%UlW3I!v*SlWDk^S8+kfFtT;A2^^c7wyf}^~LRiXM5BcC2>kUMIFn5_g*!QBSg+Q zRp0jzwQZ|vng*h}u2u4`#(57=(*zY>c}k6Zh^EP@nhp?o7X;^_Qj`Dk!C`7}CaK`i z6@1`?WjjW^tvF&S()$;GNDr|KvDwgj_g;X>g19AFe+auo=PEo7L*zDR<>@nTRW&fQ zMB7d{r<^on+Ns|%ayF%TE0))FyD5s_u?@jGUeIJzz;Iu{iHTs@#K2u4r&xhsAs5o- z{eoRFmz*BIjA?Uo{wbH+Z&*gbI=0hpw!G49L@qbw;!73$vUcGzXS<+J>HK0NxqG$3 zGMoFt(!bzXojwxXtYZno^{jlwoZ@#olbhL@qbcQPX)V9G-CuF@@~pXRo3rl0Jg>Fh TUvgGj%>1mhpZ}17x9mOuFBgF) diff --git a/Test/!Redraw2/Templates,fec b/Test/!Redraw2/Templates,fec deleted file mode 100644 index f218c58d5be606a747d08e6c29645cda2c127eb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206 zcmezW|NnmmB%lLiF9KplAPz|_F5yLzGXb(E0I>x#1A_q&!@$&-iHt%FjQ#9P?2ODz zJP_eOKyz6kOk1czkeMK06Pj0&S(1~QV#k}x1mwE`B^Ler|6d5mxdfzb6Bv$rq~_%0 tD}?74<)rW~0jik?6kh~XcMeF;N@QT40Tct7mjc9jspZ85MVTe3yZ|a3Em8mg diff --git a/Test/!Test/!Boot,feb b/Test/!Test/!Boot,feb deleted file mode 100644 index 2ab441e..0000000 --- a/Test/!Test/!Boot,feb +++ /dev/null @@ -1,18 +0,0 @@ -| Copyright 1996 Acorn Computers Ltd -| -| Licensed under the Apache License, Version 2.0 (the "License"); -| you may not use this file except in compliance with the License. -| You may obtain a copy of the License at -| -| http://www.apache.org/licenses/LICENSE-2.0 -| -| Unless required by applicable law or agreed to in writing, software -| distributed under the License is distributed on an "AS IS" BASIS, -| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -| See the License for the specific language governing permissions and -| limitations under the License. -| -| boot file for wexample application - -Iconsprites <Obey$Dir>.!Sprites - diff --git a/Test/!Test/!RUNIMAGE,ff8 b/Test/!Test/!RUNIMAGE,ff8 deleted file mode 100644 index e6903d07a4bd4f143f9ac605e78a63274059088d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37860 zcmeI5eSBS2neW#=IY~~_L%Y+alBU6Kpw$XR4_LKg#Z#!tD99<KP{xiX&_FZOmt$LA zbl}bjq%DlCq?n>3)E>og97LxopBbmf+#sM1iWbxn8DGvzk4;k<f}k^sn*05&y>_}A z5~!bh|G0m&9}fF%t!F*&&$FJj_Kq>;1;a0G%;Edzn#0Y;JTuT|Ol~@N`Ikx<!+*vU z^uHJX8~w_6tEs&ou1q&~4jFSvb=t_@$6NNkyJGf!xa9FOrdTyTzkpx1SUu5ve#p;U zQu+Pp=%chPGx+eCugzqF1!pY^mgYD1tPRe5^WrzZMk94!-?c8kw)_28ZtU*b-2MLR zde*Pra2@wsjTt>*uvnh?<Qa#OdoQRonZGD63e5dpwpd<KXAXmXm2vC*&%Jj_(l3_( z7x&gQjNPB<h0hK}@Hcj^-q>~Bi{X1Q`0c>Ym@{e%{T-DPOtJh=!2AU;;mvS#?_usO zG`njW|F@%~ZRT_D9UEgqzI%N%LW{#c4nGO}Ey8`xoJ0E?%y5KT&y^e2U%9sD%D;l{ zs9$pouiwly_s`pZVdVtq%w+e}Qf8ng+!i`|8;of)rc`Y=J8HsvEziEnGk8!<o4y)6 zIy8{<#(3Sc{;Cb{@48~cHJjg`-?-uGja}=EX?OUV*tkzJZjy1QO~0)&GDW=IVd<V? zOw&q#Zp{QcYw*7MPmOxEyY}U#@VH{CIV?QBr)$Q}G02}WrsQqR<24W7p%-2vJfe=p zsuvvLNB6be>o>oDP1pL>Yr8knBhrPs7;awzH{<sMYk4(k`s?B8l)oJvZA#edLPFP{ z<hqV)aF|V-S_Zys6wko9)tg&O`-NIuem(1ZHurR`?b+0QL=Jvz%mKzc4PHzK#sZFe zq4TY2bNEvUb9e{m1OA@ceD3E)M~~9aKJMSLbgq?~Y~&&ONQQ|w6sw8(&<;L1aBH1= zTcwTu8Q&aEBDc7Xzl%QLUCsr2YAv++i)M4UgY%?6P%|0eApbLGi2u1Na-ZpJ<4{NU zrp@B|UC1BfG7sNm%sCRq!sXZW@Z{~G{h7VJ#+-be(@5HHr`@_PI`A(wfo?2^7ylfi z6FyEEW&A&kjt-wkpHIEg3@<Z#YOOQckWrx|8jU}Az+|y!v!k*Qo-~-9hc3b&&7)mN z>uobk;SWP<ljgq3J}{J`-Lko6cvpjG)<VNF{MJFn@M$Bu>w;q08-)JS{)5K64?dWt zME3E6f$69=8FP>B)tO>*+7!KnulviZb$;<vX}|a-^spQ~^BFg3-dBciGdXYdf}1L7 zb8&TObaY?Z?6>&E+sZd(V!CmH^f6m3Cq+w6dTEC51z(ffMc)<ZsA=;3EtRC~!tw3D z(N8_A$9@}-X?bQS<D_W9CQffLhwEvd!G<<><0kQtXP({R&VpCZ-}LHW{f5oKRU58Z zzZ#wkr+f^jp;v}D<<XJN!0SyEN~W_|K1ICE?G>$cdF0l>c=Dkd>kqG#Zh~_s@<Nwh z3*N7webQ{PJfMx&Jl9N(`lf<iRtKM<Ujr~U2U{w$puIP7Q_0W3hb1#BJ}_Da`)kPz zZA$~SX_@m%b(!s@mQ0~$+hk@|8fnu?d&L)c^;EJ%+rfcadhk7^bmrz#D{Vc$w~_}p z$?X@!mJXe#{R;eRTFrUV=NDjC{?d|kZnbdk+)@)=(0NGwdG<e##FHZY>BPT5OLYmp zjds-*jtk73S}VsE;y{XfiBzF-K(fj1g-538jmYZSF<JFhB&$KL=ivjt4Iji?XlQ!_ z?bf<>YV$9g3w9Pe|AE>$e+taDCA95wZ5IS{ps`r}ykG{zn#^uXgKVfwzj^*{%LDqI zCR{EV*Kar1es)VGWoa9zrTnaoXRSf8`UN}gZcATkKlEkg(-kK;b{5P1$S%^gvySN6 z+6`T+gR8oF)^@KxJD9)8n5fO`&wdXY*u8$kHCL|*)^)Gju<?WF<HjI*9@w5|oDuY_ zSBT%#9bDJ5F28B*27Hfvd(>{x+2?hwmoh7e23IlA(c`?~?2Eg{P_QEi3w)E4A3mjK zvc<A*V>5b`FQVUDN{ju1r9BDl?{KtBX9$>0>f2b@QcCp~%NO{!jI~=ryByc@Q|h;v z>!gL-SE@6GN?mran&R3szSUdBKG}-&)|gvMUKXA3_a8U`U-JSvg81ABE~~+@1AHR5 zr#QGRPM+xABP;XUDyC4Zo{Ah4dmH<=lzjizG2CXwXgJZ)&>DMw0?*sIj>ec0;hya) zML6Tn@jD^T=+IMn#y6&SLc9a;NrJyu5I@vzW%)^bVuR@@Cp(J|ir=m9#D_M~sW#Z2 z#;@tzceD-AM`N~t4|Y~I9P7;1N}U<3dTR?6*~K*CsN-YPMd<Zz#WQ@0Y+;D=2KqgB z68DgE8d#gLheD#a)PSu&t^3#=9v9j=B#X9p0%Lm&#*cIktd-y<9NO~*<n)e8vcI?F z7Ydd0vpZ_b@;ho5^zW!WTt655<&TtSmg;i!=_u@|okoA(Ji`5AwV7iU9eK_JZs*>z zeArtUbAuaGZT4}V^tW0c@h_aO1aHB-n6}C6mfHDTCruXFgnnwrAITknCHynMTIFDg z2miqNs#lPAnVtN$Vz0fmB@W(OXs_`$2U{z7{NNj6cKpU8b}Yj>5;Jh_k^Q}C0z2Nk zA++A8&8A>tJC2?&J~B?sUraK_rhM0x-NB27kWClPQtbF>EkRsRJQwZq&zuiSw~Sd{ z{x$x;p8RqZeCQ`1xD^?^Kn^9j_Mi)jvsZHze?~q}{@W<N_182XQ5+bF#mQHmWbVK3 zI?4NERyHHVM8&^`Y_Z&sE0QB%i@>`bzly>h_Hv5jAEW*LgZ0EB;`pQ1=F=V3U!mvp zx3MOkJJvHs>-idkd=2@NL$`V9V)bnn*FJksGQVp2MU|hE+eLbRS}1?zbY;ah<A432 zc;KaT)!#9e@(rK)MCK$j?C%J3fOrmnu$?*6Pr|uF5`Aj4d3>%)e%^fcA4lgX|Lt%Y zg&eAQ6Yu{c`akrCFrRHVg&F8ro%(G3!|1TuMl{MMuSZS`m_KQrGRV2tSg5=L{1^DU z4;Vk3hp11+@!q3P0{$BElLh`6wF_q#t1IUAR?e8!Tk)EEiM{v`pE*qoUc&MN8v<TZ ze#_rd%Z%f<;4Z*-$_J_MgASMH;Olr?BK*hq`MT@#iwXKfb2^RTn|F_m^N{QFW696q z6!B8?N=u88@4{F5J1P&m_K!`_K92t*uH8eic9Y@o4cGRov9^=Z_$}A=3$#5}zWlrE zQ~VS9JnH&<bb>w+e?%`aXiVPUc73+S=!mzCWcwZ0?uH54Er#dQ%#K5viz=`4;rU~( zeLmJc;!gs-$;ITfkUk6O^Ig~HO8O*A#WFclWtxBA&@}&x{08`aWXK<<gR+M#G-+(j z%Ugl-JqKsG;GmZ$1i;FDc_@|p)R4*D&aZb2&P25Ccm0<-+~p%4clVYwn_*o);jR~R z9k=DUK7HS{d0mVL@$nkPGhqF|wVVGk?SAOm&6%K`3Hoab0(75aDnRe?!P5W8uK&aJ zO;6A_>GvOyUx;M=BiGh*ZAI^s?%wbH$?5&EYx5lQ>hX3dzKGVRT$^FnMzH_W-Kzmx z*FSOBBNL1z7(aE-e>~AR=+%W&@Nd%#l{4z`-(Hv_#ru7Gl74FQGY9+Y6SaYch({&Y z?yE1;uHxE#aiVtMsxhms&ELn`M7ARRwmOv!eQeFO{e;@0*TjkH^d-gWvy0EGcxT;Q zG0g)9r?)&<o!-i?{lV(euh&r%*j_fxeFqiKT8N3n^nD5JC9<WsPDb<{aN`tWIE}S) zc>lt+xo)C1PTs?=&3f9{ymp+wRvc5FrE!xS6^l|FrMqd4%6D4=>^c+Df7rqMb2nxp zL*6Prz{j8StbsY?CiEtL|De0SZk#@)%o&F!YPWV0dLnxrayYzsf_B~@u@;=t4yS31 zVS>AepX9jIQGV(Aetd$y$-z6B6XQ$$9fu@W`BLe}v#!rc6ZBDgVw`Pv$hDj4+KDI8 zy=k&7@N&GWK1W;eYQZ?3gz-VOE#-su*k%Tcs__gbOUj4er)O>6cZ$_|?w$J3Co30! zYt^S4A6@n7OU$af$>G`(JTrqkpc#3Bn`GOH4BMRypLTd2ntsGjL^Vf^-@+V4xtsEQ z;h>{xm^#*lM{@9z<{r3_IWAvS9R(VJt@*zA_KX|ndv2W9zYyk9`B+Z+!8U3)Irx$- zmOE8bLQbnXIWnizyf4YKTxm~j8qa6JhiQg*Wd4508(dY<oHK0(hSFxs5WJ@DR;Yz- z{*5-DjkWnCZMIU=FIMyD|9#Y}hFUyxfa<yCo{C*lRa<a0j!=WtoEQ3_|B<Q*n7csF zb+l1#u5;zz@8kLiPVw=C)7Bx4r5fM$u7+%=vr+e><_4}oZ|#=ST!-&o@cm*8-+uak zWJoo_y=Jb><-f{Nd3_2Tp~KewqZ~i-3tBsv4?k0)DNwCzM`ar{%TAaRABbW?od2_F z-%8Ck**Q=<OubI^SmprL??aoHD^_PgXNr5!Tm7!+<yy7&DO^A5u6^5Q0Q@d3gIgVK zn?-v(2NrIBoQ<r}n}ycr6wx2~njN*Nz*5b~qh=sI(D+~BT72djJEUIYd8IVEoaWiR zYMU!mgwsEAZlBkC)DO@*+Wv|>KEwDU)V?*h6`y|3xni=;QweI~?!1L_-<`+v2;ut# z_%7mk3(w!K`6}}d<}>KHF&E63OFf|1!dpq3RtIDCDVztl*S`A4qvs8R_iv(~+M4ug zyZQvw3c**pdoS>H?t^!dTCjNV+BP%%txtq=l_(ww&b<~+7<-I&M(qU6|EHn9@C%++ zl9^)pm*)!pK<#(4skd_!Uo_6`q664J=f1{Lm1^^uXV2dhtm)bmY`W&EtGZc23c4tQ zZSGo2HEVPC#`T<ZZ`??=Yr*CZ=DXiIzvndpix$DUYc^35yS`_0(6eq`_v#+Xwrf8K zZ`RD5TMHa-#M8LG-RN-t7B;Rrss}F5gUel)%&oOk8_+#sWAz#CMb~v)A9mNR&5~)c zdNB4}dQgpBH*hWb)L%Sp<rq*akWcxRU#tuKE%g@!dukWJ=Yijk9;RkvZC`fvceBl$ zH*mek?5XVn#(ulzV{2Y*Q{eMij?cpTM$QB3vC{P?k<+*ED?i|u<=pahvZ7(vm79C6 zRfSNCfRj}ljM<wEbuY5>xDK4|bO{-vlGvWpgQiFiGJVRGD$g$q_27DFiR*#y^x!YJ zKc)v~9kU+H-}KTdV7~g>Q2#SAU;oEe=|B3wJorBNr#k(c89%DgXQ0LR`zq&~EtPb@ z`YO+~ezX$#sn1IFIi*l)r_Cz0;rUAVFTbt&{j0d{pslXa3Gd|DVf|ikR|cw^57b6m zt({cwdx`pe$DdHY?<h@Nzuya9QT={E=dOOQTK;FE`aSh9)gwOx&fsg;KV&a)Ie*FV zY^7ujT^(j%*5Ot&$NCEV(NJqRABgw)jO$}-Fz``!U#eIB2aJqjPk8VBtmP3uE!<rV zg2_4daHWj{-~s%n+#1w<r2@5GGraxWkCgoEK+Vf0O9^VD*g+lZNGWe{d&LaiT-%!^ z&l>zF{<Wk09Q7jk8m&3qHyHNEI+*|7Tq`8Dm*jWJWq^~jaL{uuKWg!LUTe<umF`Es z`^cZAGZWdv)sANH(YVeRhBS<b2F9A+WGYeLc+6Z$-`~)uzA0Cw@YBRP^P>sQPvE?c z<5Z5`6r2CFQBxkC!adqFO?AiV9PwGI7fq30P@EO+I?8wHC|zJ|*5Znmp7C;iQw;xy z#_)&FtetwSohFcr<nj9n;>v<p-}}b(H9@iZ+zVmfr(NHXA0Js8nytQ__~9IWH%nfF z|HXfnKPxzS_$L|per4nz-#ew1yh3_x3d+OC&1iQH_N2JoPMuJ)eOUbh)gh=G0_#+s z>%86PxxcjH6$TF~Z)`Et+j%ZKZ==oJ!Z&S<nhKo{DHi&7pa-fUFK4;Xw8=hh1h#5n zmY3Y~H757~E5R7E=4dQi<6qABJ04N(TsSGm&^$&l@ELgVdEg6P&ls;5%h|=}cz!p} zq1WawBQgK=-4o6Ii5zv(EV*CEpK4<#JR)cHg67IAq$lmo73qd@214Pm*SWRQ;P1EV zvE-}w$c9?b<MGc>{C!i+rP^z;FO1`t+I5G9Aj~x%Kaq8T{38cP&?V_kTz@|YUbgm0 z+fnG)4{oCMNA!{IseL|1$6d6Ka_&SYvO=y=PP>4<Zxn6#8gR1tJ{uRX#Y?TuOXhR* z9N8uDWr;VUo39GzB6`*`?wR!O5_tL^cq-aOk8rDJZSZ#R3-i>F#>?oN2jBTUVa^lh z{e~FMi(>d<4~LsHW*$4~WStzmvDY@?@+{9HJT=Z+!DAu!w3d@-@GGx|zJ^k<{3`GY z0`ewkl3ujH!@mJ$BhMP?*U0@w?u#eLxGl)+s3bDqKd3ca`HM3+)>|Gew_|ILMo?~3 zE+c=D37_wKGsil7%d`hSQrga1Z>Dsf)dSg^*5O&}CAVZBM`=A^mFJr#;V_Nok~_3i zmoUd!jBd$~MaKo`6Kg|53($4l&$#Q1yB_ar+QrLkvAmetvS+mB&`0e`ap2;rj}OZd z2RvY8xxbK@DPB$okHko^96rn1XUljdeAP$za%BHW=yNZRd`(R6{`iV;T=|*+8CoCN z319Q9)k`<vm-_c1qg|36Fe4qDZTY*x@?ZDiqvfyKe*;<Jk661P&kgWj!1?;`j>wt& z_1yE&)jG~+ao&u*&y?QYOS^wyzTlxh@=IRs?G@SVUSKugvwutslkCNR@o^-!uKuW_ z$NEKR%1|#6ZtM$a%G&rZ9&V{E3Y2?<x|Jcf5HIUSY(5S@l_!XwTWZT_CmBFnli;9> zUgIA}r?RdCf0tJ|!Uop;c{YbO(slV9@T_8>O`042Z}=kn`d8@s0Ccs}zUzBA*5y{+ z{bz!kXWrhq!}{>~=wicTIo6(5-F+_4fcfYNz<8%U&s8J8Yy1*<hxpr9nGW1M=gJ!r z%#rVAycYDpGaslH>1XW++0A$IyVE__{qyLj@q|kk_Zi<_*Kv*fo4Tgws_*6gT<(8} zn38B;TA2df-m|y$uizfU53@&Vn7Y6)bPwnFUBvG_{4V5o2ETA!HebCFcnz75=hIK4 zM%PxX{?x7SyqPhSpK1O%zReFbcLdJgxbcPe1@bTOWexqr&+f5t!rG>M%-&FTviGMX zD`LRD@v!f8<4czXSN41&urD5im#;z(HHQ%H-f+%BJT^~_hxK<37SGy}g%{JY(>?d| zszHbQD)Pw0*0dP=4CHu-So?a$?t-=i_<o3EV6soNo4y~4&ZS(R#{EC%xB%Tqb>gS` zi`A3qBO4P97LUBk6VL}}Ym&YEy&E4}AZJpHBvum}TLNNr@UdB*|HJ|DX)5j8Gt!?+ zu>H`c1^01qrN&^_B$v`o>y3ZTkzDT4&^D-nSv%cj?UX!~`{)96X&qFynu+<IpU(>S z_&xfY(Zf$dx8~vKQCmH8x(Bp>4|?Q}Qsl%sX0Z3wS8TZc%!${F!)=@abKbQZuD+%_ zpyecs#yRr8Twm>a_?ab-BERxHzc@36@6EC&;Cj_g?0lxL()im@&yZ<T68#e%2f$4} z?tg@{!)pQXGW?eD%ko>oZ!y0#Kl#99P%L*aw?(MTt;l;ap<j*cpvlPwCqoW5KyK8B z-(k-J`#DZFeM2qTWtDbdsa6y4Ea8=^^MogOh%cR=4dZh>r`QI66;tHf^Z52?UXdpz zD8{H}bRBET?;-}P#<!?*PpuhwvR4=XLH_j3<&{DF0QS>n_xkx;*+(@{YY!CLZXc>+ z><=MZ*~*j5v4!_M>~{fk+*R-|<$sAibVYtU`4xsVZ<L-ag2vZrOwQ#am(hMBd_E0+ zF0=Vz-sZBZSGI6}9{1%#!o4cl(gil(ER-%_tXA%8pNC=JRgQDb-Lzlg0?t=sv#U7Q z{p<1Pjo`_3<@Lav4$M{DS3FjmPJ3RcbaJjewu@}ey0p~kj&?mxZ34y!&Mm3032rJu zD{Xghe@AUC^eyH(&v6My$%;K199P)*0dFdw`5$Zn+UvnZ{L)?u9a#e<Che}B4Q|NC z<`wKI9Y!y!w{RS9JHC@`BvW)?3i)GI`qqd{1@kUyh+5xPZr=YtqjNHA=FEQlh0(TX zKkozJ@|fg6p8$Hi6!Qq=@y(R6wK|RI$L#gF7U@$zHWJDa9h$k!^v&|orw9-9vHAO> zqhoX7CBF}Gk7D%2-@B0g)T_!&2CQzr>*p6%mfa4X1>#wry*{$dPU1fLs+jq=C&>15 z?0GUx8>suJ1`O|-*4pzy=FPk9I_a-zmw=~NabN4EKjFF#+ANR#zq34$UaS84H_&|> z&*nLr<*%i)*Q3h|bdT}=Dy2F_N%8%V?#<wyA?BUV81l6NKgC40u@9fbk3Gyb2BOdQ zUOXn^Z^zmY&xh4!6q#yF@_1_316Jqoy>?zjVqtY-Avz)1p?kA3g&niVL2TQ_;G?#( zOZjE#brM}S=CU&T-tE05^i5&Q$g@qkY{Wy2c@A{G9vLrja<smUHt)s<iHB<Q2HGe_ zh<@$C`osh}xWUO#dY8;m^Bm{Xekk37Z!O5{rF@wISNX9o$e&{K^T6vw&gI{tXP<S~ z_{GYV$ZxKdE&FVU)#(0<V$1msw|3>U;MXdj%NQ%^>(iIDGiq_<&@K<T$Kk5EgYLhP z_Z2j@_^+CS{LEy&xYgl*V+_Z$8Rs|fP_WL4;TX54x!~w!i38yHCYzg)7X<igzgYdP z#b<X-b1Cs|kMbSbiiTFs1sA)sbjRnNOmgqn+)?d*``@F7e`w_>I%M0$I@zq|pHU57 zHXiT)yP4+xCy2+A8|`Lm-_BF$N)(G#Z=W~C3@Z*F*`vA1?wSmGHrf4M+JM!~mQ9M& z*Vs*$o7cFgteD)btv+Vg^O{!~qq@5GUTBW=6Jp4CeEtJ`m=~xPRbJrMY!b{<hqT^6 z3==I&=5Ly}tY_mnuVq{2c%StR`isXo@dVvsJ_l_-sBMHk<<cv;KMEY>or>jJCrbu9 zY}*m8zo$J*nccOO+)H5>O^p5TZXHC|9{Z%lEBU~c*oo#8;{6M>k$mQF(#+YI%b{1e z#pClH(FSg!?FNV6zkwe%O>Xb>l_TesM}<c&+yiX)82VdgNR|(#3@)W;*U&o96ZtN# zXXe3YHP_ZJ<cj5o!6!p}w|n<!gTKNJbyVxo?M7tW<z%e6n)v#8T|2lX<g&4Q)295! zNir|H<BrEYo4Z3ru-n5Y+_0xwRugNFl7%sM)Rt%+61o_(4xDj)cho)}$yWOewV%?_ zx-~}YcsXAHFYkkgeei0tbSk%#JuQWyKK#ApQOF`=XuBHN3Fz7mU$^t@SDb6F*oQ5> zn%|i=!B|H-6D%uj$F|k~y<CSl)7R=yD09IVzqWBt@;(5s7PGDu?f3i7=Z=nlS}Qs^ zl6xofcVuG<<hXhG-VZK!-OBvxGMjf#MJ_LBtpi?ZjCX)z#%LW%b*#(EIMucQTEn?X zFFB(bX8nR~`WrR`>$=u|Fj~!cZIk&Wc%|KXWh3=k;g`g>5mT7k<n5f^W54as@$-w+ zj{L82MsLYvd&ka`okz}7InIG0Sm{E+?sK&7Mc}(O2doDT-d;1M+iQwV-dP_3j%vsq zW#S8ZS3*Z`X0FOJ_SL7uJ(c_Jb>n)vPhOTZH-RH?WM73pJn3b!mAbRQiT#<L*`z%i zO{!ySJr^ETf2naZv}f#k!8m1mNjOmZVca5Yq9)FGyqBYWll!c_t3Ppa7jg5uz{{|f zm2&=QNo;-ceD0^+{SNL&Yn9_|`koosG%}UXxuHwzn0GK2Qrzwbr{$LZ6z56KLw%Pl zb5&~HteY3BPic=K*Lvow-b!sLl`YhgIo?;m9=OlDCwo|*HN(G0rk2m-Q;gA;f^O#V zk|{hE-QqE}KO@}xVFJnE;_9=EC4W2KhW;Adh4(#2^m|I0v8C5)8;=ut+7?|qctMI2 z?#)!YcrE)X@dKEuk*v6;Sp9PTot1Te{mzPa?Y4^dfo+xI6?4aOt23cVIaT0}ujClz zRyw|hpXv>-=BIkYe17xzoyzYNekb!&U*%RUjCTb&rFf~BF2AUw>ND6$Q~h_s8Vk8e z+q|6e*%f+zk7`z_+#NOLbxH0M`-gpwp1G!)$d$g2gCcIB<H)Ji<xlAAKFM7AoZ^VP zA8zE>XjWMJ!k?E{I9>s-%?CcY+i*&2PCQFer-*8K!WUbgNv(T!^!|?4UDEUs4!~+Y zm;BoDI|$#S(K<lNzum#QeGHa-hHB=?Bx{zM&!PJ*=#ymMI(BdA*u90ihfPPik#V{I zMJ{K5zS+vM+R-t$hJwKd@OQpMK16w*^7*B6cT_(6>(Rr3r+AdtnoZk0oio3{XEn+H z+Bl1!UHXjnGqN{?dEzwxll%%p^0&LlT{7t1yMB&;We%*mw){sKyVd=?Y(B#p+QY1C zXYXQfh8eCqcT351N|u)@C#K%4bNQ*eYIWeLy#@xKBEICYdoOcyWg0aO>KE1*=$`a9 z9;5$RG&_4<NPM|;I(vks7Ahm!2k7?7&%sac4Bzdue)=am&uzu-i{%aQVKcel1^5Bw z2H#LW>;LQ?Ao7K+l{B#`O{`K4d>(nc)<x#w|Hv<F?715l%6SFvar(;#;OEbpqzuB# zi&sYr*}>+X&Fs3LFciNiSNdyc&Adag>&W~L+n?>jFR!Uk`HIE8kLNbWu(>4951sNW z<#PS(6<{sU?=AIuN7e%)9a7w559^pOP);s5yPL^ha(%O++5obh@^QvVF(>8xMS1<j zF?mQQ3QQc^@%;s_xAfr{eyUr|KrW}p<Z><NX{$#e{_LTt*LXK-Jk2%0hwIrh>334B zAM@rzSM$#7y6*MYOq2mB(bcnH!I`g_gw;mRClc6^zGqF^cf3wE$9UjFPq^1dzC`sP zc;dqoWY&8!ao*M|2Wqc|M$xXCk9aNL<8@|B>0nna5Z{o8e3J4r`6Ox&hZUz(A58oG z)aQGB-dUX$zJD-4EX&!o<UBIMr&JWD6oaXe)vkOkI?OQ@5VwM2HS>x>EzS9OzapLZ znSaE-G_Kw61P=JQ@*p_KhCSXP)3a{*P;e^v588cY6Y0mJf|n)!VzZ(B+nnyH2u8;k zj9v>v<LI8?i}ovG=aM_~u3?*BWWx776MENkaAz%1`p&_`px*mjr8;d>^v))6d>^&e zs@kN@cWQ}2&PzLMCk%d<yksYP!oP!_?W|4D4Av3}Vnv|+oHsH5ryb`loa?#XIn-V= z%|GGWr|?;0Yt&IKMg03nL~m!9ORAQTC7*#F?``a>8TqR@Q>bSX|9atJSTCF@9^@Ij zz?g+?j8~%lwpwGdSUnRPPI2zTcgYw(dXI1Gj;cxaQ)^>gk-U)iu#koB^+M+g?S*_) z^@6m&jkOD6L+~F5P4M7BlCFy2=zS5jt1mqGFN)Ku7kT|#$aQ%?cdC`qzPPN1HSYyS zttq7JnsSJj`lT3Gb-pxs3U{C5YWT;RGq@aiULS<(PHWg}r~4Yq>OcLJUz);$2a%Pn zaY#3%!waD=<quk2l|Jh|ZSn$gi{+AY8@8Z0YHj6z#qK4zS4X>ZV)v5Vv+sEa>O*ZE z8xZW2zrQAUhmeb4@J?})`qelF9IG6q=UST=PQp#FwV(YcIGO#_?JlYQkJ{U3=UTfv zg?p!iYXW`tg2#FPMYcF-;mIy1gauB@gFSTl6pqSAEzHch6}>B~d+0*jQRCA`_|nI= zC8s8*3E|MTX(7+*Io`mLF&&Oa_%NQvm%~jk1XDN)rt+dVj3~E}zw~2u%SWb%J|RFy ztZrKQi!btp5A*v0bmS}_&*3-~_~g@%Djulzb23M+8JlkhKr6aFd;{nBOXL^6Pi24| z*;gLhkT0#{o^nCu8+s<bEBA@o-D-UeHss=5Ja7KE!&&Q?%7-qat&ZQ6-F0dWCRbg? z_#S%zv=<=qb&|!qX`_57<^QxMK51?c`M(y~RSw(7mJ_A`ep_sg@g)aWKEcZi?@Oy` zYL1NQF&~(!`n%RRRX1qi+`d~GWJ^hK`muu<?(I;WY1b_5p7P3;S-Ph+N#5(8<<%Ev z@~)x1m*gI@fR(%8f1%pTeqqsfTZ}$vu=GjZui$=CG#SyP_`Rzh{9);qdiCpd{n%$Q z9PJZ{a*x+M7S^1XiKo!+WsBvze-`rfB5>EdUU5Kc+)@38dZ+fVR<BikBHSO^ruq1Z zNv>sAJi9{Y9F2{s_*U)<7uMNrJW+g7+@EaAVVE<#{w3pnM1y?&Os5mFQ|Y7fv{X)W z$z2DMcK>czzfiqa&pv6_lm=>wW9Ln0Pa3$Xw#at{4yz4$?@{Xt5ubiH?MMu@e1a~? zc{+3{Mhecwg5l0j;{HUj_#ki+xo~feaHh?ar2Le*SZh}QD*u+ZIIbWT_t$&=gLNEP zhwPnc^9gD{<RJCltOx5@KdR?^mN%=Hb-Kc=XuN#P&c7WSFWGsg^=J9mn4H@&FVUFz zSNUh_8##Zry|+4BejWeV!kjlv-0EciMw&Q5zZd19do@;8b~G_vXKM^-*PO%Cd&cPk z^UFdt#rvDh=z5Ah4V$U)`q-azsfA-iQzY|99(Oo-h?kOw_$GOrZ0R8H183>5?tPYf zDO-=Gt`h97{Udu%WrIoRNi&~d&v}iy7{4&zlPo3EX|^A@x_l4b%s7(oX}w{E^1XeL z%!{-azVaiAPbWV^o&+Bo;0M>uijzsdS$khR@xa!3dH2B^0nhrd&N~v5-73)teIB-! z=tO7o)O+EJ-lLPB@X!T#NGN74gm=Vr4b9E3Wv+ZzotXn2-nQpPr_N@sBzhM>tL9T$ zx0Ao3k6kNV#IX^2Ka;0M=x=j5>o#KYHgGIf583sj-K>LZPyM#qBKpFgD#7ot)?;*E z`9>4Cotf6VL)+v(t83wNE9Z(C_=LI<^iF(D2gT~Uc-EfXX5}2vM&BP%-f`oz_?V^4 zw>taSiw8cmO_0z0IeO8|TEYTs7&wPg@M|HzUw)Hlk||aH3A^<;e!<yqJRfAQamYt_ zDE$;4Q-wQg$^JWQi-{%G=LA<iOZD!{!rYZ(#M>0>B+2{^aJ_7dzsnqdUk865eE#M6 zYu}3~pkwe&x;dS_Dzd8teU;OFhVhH=v%k?R4S0<u@mRe7+cDl>X7^Y823(`|17qzC zF~?A&4Ex+T)`xX)SEGw$b}i4W%oy_*f>mG-1Y`GdAKc2yS9j(E_Pk~*Yw4?8_C#{v zso08STi{-cYJT*2p7q3juG?)r!O56CK%e;l^()o{_VZlw)}Bjh=+*CW9U$}8&TX}a z=_h%6$UAu+^6u}e{eXLsynn_T%`Rka<;{AV7D$xC#OrMXCs3Q?UV<^|O4v|<e?te- zyh}AL1MEP#H|z0=gU(;Y`}a-IUph3t|6j)X`!W06On>ogK<`Lk&){=-KeQ}RE}lW3 zpjo;2TcJ^O_~6j~U!&AL(QEM#ACW<aqZ+iXMPoeYd9TLELQ7{jmyzx!rMrfA5aE$> z66K)LcWY#8<UUQ?!9{JPZ_0agpPEJ8wi67goRbwbGSyH`C%G{4EqL0Gz#IUY)c1bi zd&oJ;9pb!u19+w2b0WhS&`FLlA&*awwUa!A&m*z6aeo&$T5YYR6FbTG5f{QWDb+5$ zZ{{l6dqEwtP4D$6$58#Jm3<XqPRX}G0`_B_yz`(rdD}r&Xu@xTL67EoUe~sR+9PI~ zIRdY5`CR(vs&4~c8kr^V%}d~&=6R~o;dj1I9pQ(%zFEBX_wqh+_&iB$(wtPWYpIJ} zx)yIe+T2L|htaG-hxe5Gr#rXQ+WF~y#Uy@zdI`KnWOG|;>>C;uE&66o9edQM$FeSu z&M2;tlXt>5?Zs)Qu8<lWu<zuwWXM;8n@fpcdnpz4VLLl(g<uA2FQ%=Px+Zf0yEe{u zj_~CJ)H``^#S9$E0JAm%J+gnv7rkVo1h1xO4^;S`g7)jFZt`}~O-)sGVy&SHM`91Y zwzpz3kHKT=9L*o&_<@kuosS(%Q)gG~O$A5SUG;uTG@g|)W2z1s?Q7^@@4xt0$5_9$ zIi+2@D_>e~KCgFOJo01oaVGfAR<0%;eYLfLaL;=LlQuTiC^yH)c<GVRsgL|>6mf*K zS{sYm@l9zLAF{>r$FGzvv&KN*)4=2WUx`Qk%#(A~SAnZ|fd8$w=C|58LN|O|3Llk2 z2tVcm@a>M;f3s&r`of+Ea#Hk!Jz%}OYnSSL2fBJhPo5)Z0I{R=L^jvXy2gw3WUJK^ z`At7yzqYx3XcOaq1RPt$4|uMe{d@SE5%Swxs6obk=DDtB{Z8mT-|-Ee)NM_hsY|I* z{{)?t-2NF}D+kj2Vj{o!M*1&~^_NU0YPV2)4X{&mSAOt(=^S|dTD4KW=hE)-q#ynA z==H!Zhv!M^k4z*t)6X%_uTU&^>K!8RTZJvGY9==43YBZEkGtIJj%O~fUIpJ19P`{i z6(5OC;UkIZ925P;>R)pIZ0@sm!F*ZxAwPVF33k*9gVaR4&Jy#eQlme3(4+nPX#YCe zv&aCP-NY`dr~B#y-pM4^NoJ?&yE88b3mV=Htg+?D&0SY-3c9Z1^|kN=Vm<4rn{L|F zb#-^RfdI#*_e~r4w#j1ji?yJpCg{MYYyZ8)JC1J?wG`nub}!gcn&R+#LHjr2&wS{E zk6yk|nGa42r;<T-T^-`Fnf21O8`fXVt99cMYJg_#HxSLg0H)TR{%q~q?yI}j23M}> z+Q@5TmYOSH9exUJ0uW}@tgP0H24K9`d#oltp6Xye4$M`}+N%R@1!U6sAn#(ZcSCy~ zJ6S7-_sV}&zskasf~^e|tE*T~p_YXI3GcrZS*^)xZ8)smuQGe;sWT99Z>c<DVeKu? zoO@dWI_mB-W~#=NfBUqa6^d1@tz8((BK(HdG4Lh_^oy?HvsqUKn>KIQ$eP0%ed32t zZLRKsnd3!kG@rKP<@c8TxffYnc7lsfj&zH;rDVJ{)T_6U-)*bh;P!kP@?}d?o?3FA zz43etN^;e=poVR&Rq=kMcw}`|zD)dzWcES$t36B?_H5cDq}F#|x3*_}chIE|hpiUs zN26)iu(QPDOt`OV8tbWo_crrB^v`{tk2s*UG_4<*LDjofQPaWql^*BZz6*{$UQ&Jr z{B)EZj<pHfa;>&Dezr-sw2m#g>p0$L&zkCdL#Jv-#7%VPt>O>%wVkzSee;i)i;c6N zhIjB91I5;2`P=eoj8Wgo-uj$k-3lA8l}8aT@zs|Sd+(TKV+?RJz{J*-4|$&1HiJ2% zuXrhZ;<@0nP3+qR2ki|yg>^dBM|{n9z+odeI6boae1z}U@wJhjQU@kx01w~Dc-Cjf zVLt`znR73yoG$ttT=+-KD3<q50_T;$={+3!)#>DE%H3M{Zfg_+z5z_xUJ_rLHXp7S zFI;=`7P6<uzq8iPSfluC-5-(P4#FCTe9q^eQ7uQcgm7K<H%+Wp!IN&r^JsT-6E!`) zr=jx#=kXY%yjXeTSbhvV1plHqGrk=;?Mt@7kH6@7-5~M8jh9Au5yOkx*l#KDO%vYP zK9p$nwa2OXF|8$&V<;AW$Lb4ycAU(U**p0b;+?friElB`zn%Ga%OLaX65qvgaP9{V zI$+`Kb8xsmYTtk<;p4zFVM1KtvyGQlW)be-p?7N{p3RTZ5$TEIq*nsYAafzwCXr#( z{wP=huz)As(R1=TyGKVd%D9{;tT_Oy1T5}1nmet$j)DU}rv;%+)tivF8AscQgVO?! z{2YAhgim?qEbvRbit~CSJc7?2N7A5Tonkb53};b?VE@FW%$0S%mGc$kzdGN-c?W9< zI`5O6T7C*Q&H1I{?U_4kix@k@*b5nZ0b|cA+*u3y@2s_gLrW>dgFS8J*Wkup<(3TR z$S)m}A2nl(8%KxR<qo%7!C|Gt?H0~2bGU^#hq#3}QxhJ;nZ4Q}&iLM=Yyv*VbU^hH zJ5RFT1R=-QcR?gGVw3&$<wqyT%N9@*Vjr)~yBlfO?%H6l)NIICnG5Kgm|C6X&NYXc z;m*mYs?#}-<0Y7~0pwdv#m0>E#LKE4#dk&EV=_zaB*$Dcw}bf$zT1SjoXYuc@lo;> z<jD0V_b~4CVOy)bd^j90AL(5ue8{19z(p6T(f9?<J@%s=ba3#g<ZQ${?Y*~0&2Mzw zXZHe$2H(L<Wu4xUw@=5$MNhAT_kG~8$K0-YjJL~Z?3-NMZ)xmtJ|LoBv<vRduI&S~ z6+XNpj;?EuKHpm7$UN2V*XO-(&Ue=Wj_n-h>G>qE1-H+^{RiNN^s+`nKg|mTU-Lr2 zPfq|xej)r;i{6iukEcG)QS05ReJTb?R+{6saMXBP+;|^$bWAjk-a8O|5#CX4Kx0jJ z->cf{;CwK~yQp3K8#Wqqn`^s1);7|!L=HdX=%{nBZ*lFf7~{zi9mqIdzEuBPUH^+; zqJM;IqzixR`q*!5jFVTyXVLOu*X}K%1wKhHB{%U=a+ACyx0jNa;B0qrUh{teM|0wd z<SzI-9Q<bBPo_`f<s8|S<T2`d74fFQ$>bvr-XECL9;=>4GKyl3^hdbe=3otv!FsWL z$K*qwNH6+bzn{=Ave$g%Uvl^tr$<Trlz1asFrC!=Iz!#x>H2?1{qb4Mv)aTP$<PG& zUvMLjuzNJU%nuK0t=VH9b0sx?-idz73m!SB=c-@losNv*39sz;?|^Z;8|TY0Jfn8j zHe&wjqpq#q|BPsg+KOM2uXr}#+U<UscDr1=kH*?Xa*gzOGQH8aYxJEhjdzEG(+iwG zRe#3h;Bfz#gS8%5$ErJV9+-^X_g5vS@e;f<Yv&=zgqY`%_v^aEdsobZF19rQyMIe^ zve)c`H8+>gp&`-rNr#Kx{g4hQFIljEM}pssi2reZMX^dXjz|^}47=t94E!YT9HU3n zEY*G@zv&HXzXh>w5E=%lsR*|K`~%(rrpCv-Da2iEEbf<(ckup#e-raV^w`D!XzV#J zfq%ri2>0=Lrzh#Vb|{S5k=<$y_REdtem|$0c33;a|4xw}k<1ORWIk+j&FnypjV182 zL*Gdy<yY<E$ogJ{kKlb0c#$7Cmv(ypQ*z*)qa^&FqIV%bq<hH9<M|`@d6=Vjt?k;l z?##1Stna#lX*Zv<)yz9sw}DStZ&=@RC42wYbz`6WvvcC7v{sq$3SUVyKll}6mX3Y1 zBfft0A@C7BUMIOpPTw75ewk-}*{|{0*UHi4KL-8b+EMr|+FY4EDEp*m_lWL7_zmGS zxW7Aw`yHGov$yb0<So<)ZvpNt%v&!no5HQLmU(mQO`%Y)xw@rmqRn!UxT$+{V4qL2 z(QdoeRj4<MR`^~=?U_83eQV6!qcw-fM~eUFK<}XXxH=_%j6Ki&wNBH22p?EhJyh!# z2~#X@gtn;e*f3Zu=b6K%M`)Af+Z|sA2DvNt$Q*+CYAM=xPQ9ITk3Hz<NRyr$YQ@s` zUt8U<-ych<PQadR^6Q)V-CoaML12G_U_UU_(HPDvN1SgL-oBI54I3FZ_c46C_Ec#P zpnYGdt)4xw0BN)H{@gZO>p2(vsRda4LjB!Zt7nWQl9}CK%>F-~N3{a#D{UkA^%CFJ zl76SDxr4X#uuki`5ucI0)$xeGk-bE5F6r%|U;hE=;rIEb4ab>*;aCc5xa10zZ<>Z@ zlGN(M{klbJ2k)z%OdIUW&L1L~MKBZKc`voX2<`(8E=7%_;5G!sav9iyNBw<Hd<<lL z$ZyX4S3+}i{EXim{8xq;W0pSlblvjDo^I%R?CB{Vc<gD>g-ulbrNMuhr9b7_PkHuJ zp8fRc47F(AJTRnZYS#)*9<b241G-KL$Jq5Md_?@;B?m(v<418jt37YU>eFt0z_-3M ztd|VcJ3VmUiZS^kc3MY2t(DEB@6TM{M(Q~KSs$)}F`x3Dbmz$2`=L9>UwKcsbJo6Q zs}4ERGw0A_ZmjXLJQ4WcaPV0RuY1V#tuytBL3chVyF+2V=B{Oj{~SC2iaSTPEW;G5 z+Mn`8H(ul$S(hY-RNkT*N*IGRhr0nEV)rnN%QuK4WxKXw?JKM+Xik|9&}W}trdWLg z{S$oO@sF&vrp*KP@2|w?fN7UsD7I-##;>rJTRzkE`-JVs9E!0$2RC~5QTH81&CMlC z&CP|6YDXV}U#d|A_#~u%kL&;)XhOD!QUUd-fUyGfCi?_o!wh#?9odb|vBt;V5$bT* zh2}GU?P_3o*^UZuQ1zUx;|Y#@Z)c<*kuHtXk5<}T7SoO8P7czI_qcQE#=G75h|@i- zue@UteK-l2=Q^0`yCf!C#X`yUO_TJULEqQM`er8RdpdpPGb4V#oj#J`+u(O}k8$Kn z$F2?6yyG%<4PMo!W7qgE?Y*?~|46?T>tsXRxA7PCZA*qSX5EDERK)JrOP_+Gz5k=w zeG{zKda}L$xVvw4-0w!l;eGMr(MiVUz8zbAG`7a+Vr=z!!1c*TvISq|m5I(Hb*ZrK zX5Sr}-Jm);Fm};DPycAI$V>IV$Bmz7{HXtK*ME16e_OcscU-I1@=!ALNz!@!tt|Xx z8NX0{!0wHUa>3Alebu#%Y&?a1$i8G}Tj`_yP|6!ejj2SrXS{9nUZ&diyhK|w7}~pd zZhbH9qk5k1Y0rc83-|>2YWXzkL1XicNGGCLGnePLI(q8S@vX_wr&>9gP{(_rO@4-$ zZS`~O??U~G@YnrlZoQOqkNqVcb)I!vTO9ApCTV-c1Z|Z&ibl;<^es-+_oCds{shKh zjE)KV$wnf4z7fOc&uB~TIrd%B2!Hv+iQ2z)lJ*m|J?mxgcqE30*19LcBZ3=m+dctY zwTo(m=f>bRPtZ1+gPK&a9Psl}1>!cfZFgPAwdzL+bA$GuG}-U?0yCONJQ#zoJP8?C zeU4=Oyw=B^jH7So>l?k&^8!AcyyPAmyRZe{e>eAv)h`K8o+UiH-mLl50h88q{yq=* zWWh}^$M?INeu5p17s*eyHtHMJ&3DvB)7TfVM@`|0Y!W!o7TIAhW8ZGamL2LFo4aSF zG#BLWkZ?>0?yG8Hef71peZYNFG8!ilpjQEPQea9SPryFdH#kOr)UFPlRejvXcG{3@ z+BVAD;oFQla}(PMZmPGr7kkH~<JwE6_Ybs}O#ABfOz}JNJ@SWkE)_r%wy65A;0lK) z1Rr{k-&l=9bt%=UR8Lf$O7)+3ohrgL4pXt<hYlt_d5o^faFCDuciQQ19SM)Uocm4} zChOBgpRdLG+<gpvrqYLffn(#`5$lt8zS--<KV^w?#Ev*k;8oSToT*ObTVbu#&xQE* zabJ9cSM}6|>WK|DAJ0TEfhCx6c+-HVccjzMto?+dn>CNIJ;F!fL;t!7`rn}b^c7C( zulI6<2ep@@@QCKFmNo|~%^FCw=P{0#a-^$(<AYZOyFJgo&;oUy{&1Z0d9FFA^eVp2 z;yF5lPSy*7-%76C($Ct8i(%3?!GDkNc69sXeyTT*ALDgL(X!Rfc{N_N7cNeVT}xuD z_&C!UXVEx1TA`x_I>am9_Zj<EVw{F3o+Uc<_lI6ggYpf*K8gO)SJeq48sa<}RgD%| zXg`VkhWaVDR1A&u{5P&mD6egn#&Ax4vuv6=)y>%6?X^=M+IiHs(pg7uOAs6N?y}xt zPH~i-%a@M77q|T}9n2ib6&HXL?~8`^@9>fR%kEX<l-<kzW%sgwty4^D|1r3tRcq_w z_16S<oIOv3i~8u>4(jtyNAaewKJo`g`J32yv*|0_R^Q?=j@L$?Pt!-bsDAp!bTm%n zcP7Gf4*dpV{q#=6vGi-F-&Xpyxbd!y^^5F1kqd2Id-JV6$7no-{@1#3Td;c{-4ouc zffM<h$UY)CV{5IEeZ=4`0-k(^=oh?p;K@e(LI_vizKr&IjyPWy!A*f*68jjBqvnqn z0yFX-hHI@OMX-hMV!?I#Fqu3v^m_|%)L!4djPxfn4v+EUYp!`lY<%@^r+>zccPxB9 z3m952jc90vFM`tqoQTg6-pWs2KS-P&B$t9t#dAM^kD0KK);=QKqdwzt*8I>oTAw|J z_OGP<^WY+!YO(fy#G9;(H8EK$Ki7I`r0YMTpMMNC8PHGfE=B$R{TTb5LBDUu`rUtw z{cOGz>-U9NzsdM_GGl4qi}>*=+P@sXUq}1Txc0kZ?O%$2@{=EPeQu%8vHHhj(YMzC zy8!G+-$cg-;YIw=99zCuYuol4N*p5{JQmoe0lOy#Ti=e6J!(&?{)VQ;>R_xt1?K6% z?1;e>jPo46;7abXbu0%u791A>FB^jw;V8Ig#BiJL^t+whU2_*cCvI&{fA>Q<vT}OO zLDX-q@NxQ`iR{Ap*75eYgz*E$SH7dZzN1BP@a5KPGk?Mujj=KQ+pbZ#eacq8ldlO! zWB85^<?u_~+<=^lxjH!@en+_TaWkto$AY_m4EBExy!kQw5bQ@C>?qG2-`{|j+DkU_ z`_a7RYm@Yw%%0y!-><nb?f1^c@mRTVG8e`ktr46(Sgd<9>tp)1niqug8s-$`&jUk# zE6US90Ui-A$8-W%W4V5;|C_+!POAqUtPyJMtym{M%SNN`q;35Z;cXiS&*NRU@i0FS zgE=xzZzqeni@`N~NAShC#^btVcscM#96$dQ_$yxm_wi$7-55!ec!s>R%S-p4s{E9{ zVsEblJD*Ol-ca16`#$$2x4q4K?E5<CQPt#l$BVVGVi)(=_vQU1d%-&IXn99B`<~XY zXQ!d*nFeG2Qs?!lORMzx)aBD}`!qG|yV;w4&mwahHJ|<iXP>mRl9;u;@;83h#m3xr z?&-!n(?6|XE@5AC_v+xhU~SJ88@u?Uxcb|+;YZob&WWD$-8TLpyEenF=I@0V`@MsH z<^qG*o5Pncm{rr6V%<n~&#VKvJ+qRTxBL8U<QWaf=atZC3J<I?!S(|tbJKw|ea+xq z2h#p_>YjJi_%=f6YneT@&ES1+r=$7mIL&*@H$gM=<T09gZ)RUhp_lh`K0Z|Nw(~c8 ziserFFQdL9{4@tQi8BttkHa2&W|#3SUC_Afy^qFle0>XjJPPjnjc53qHKss){jQW} z65P|Z{<gQS^|y!kcF<^{VC+5p-TGg$a;Seg*K;$1{Eq*Q^WeA+{C}qd3$Rn!E-ze| ze4jDb^V2`s_yE6;^Sg^*UqN?Y`X76tUi5FxCyu_={$+zl;V%x@FCVgG?f%J!=wEdG zryN6Xb8J1-)=PLt|4Y<0cwVAu3jeRK_eimi|2xis;~Y57f#V!F&Vl0`IL?9N95~K_ S;~Y57f#V!F&Vm0o9QZ%Rno*_z diff --git a/Test/!Test/!Run,feb b/Test/!Test/!Run,feb deleted file mode 100644 index aa3be08..0000000 --- a/Test/!Test/!Run,feb +++ /dev/null @@ -1,21 +0,0 @@ -| Copyright 1996 Acorn Computers Ltd -| -| Licensed under the Apache License, Version 2.0 (the "License"); -| you may not use this file except in compliance with the License. -| You may obtain a copy of the License at -| -| http://www.apache.org/licenses/LICENSE-2.0 -| -| Unless required by applicable law or agreed to in writing, software -| distributed under the License is distributed on an "AS IS" BASIS, -| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -| See the License for the specific language governing permissions and -| limitations under the License. -| -RMEnsure SharedCLibrary 3.50 RMLoad System:Modules.Clib -RMEnsure SharedCLibrary 3.50 Error You need Clib 3.50 or later - -*WimpSlot -min 64k -max 64k -*IconSprites <Obey$Dir>.!Sprites -*Set Test$Dir <Obey$Dir> -*Run <Test$Dir>.!RunImage %*0 diff --git a/Test/!Test/!Sprites,ff9 b/Test/!Test/!Sprites,ff9 deleted file mode 100644 index c0c2582d6642f644b517eb8bedb0a9b6bdf244c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 924 zcmbu7K@NgI3`HxN;KBs2;NEMwG$Dax79_-@cncPI4DY~>cmsVc3?m4M#-9vy{`|I6 z_>qY0S=Y75JrX(Orz~f$*s%0W5wni0%SvR&J9P%4fV5T=fgoDoG}#w1JvtYQ(k&=G zSH)@5mSaveu54S!iPzEggF}a6tfQ-QlX{Fc*MoG19QDxIW;wkw^MK*ISYXuGkH^yx z^lX3Tx&)CfH?d+f+)#JuA+o?FNPImDCpzmf$Mpr@a;eh^|KOO&ZV^6{MGM@G!|WVf zjeTX?r|QMk)9QEiG=IFR3#^0}4FygsiR!w+G|m-j2ivQO47TsW{%Ipp+W)&SvLAiv I%@sy?0gfD<KmY&$ diff --git a/Test/!Test/Templates,fec b/Test/!Test/Templates,fec deleted file mode 100644 index 630178bb2f016eb64e95fdfc08112e37c45d7b61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmezW|NnmmB%lLizXM`MATH0$<3*BUZ~+S5U}j**U}9j<VMWLsHST2;VqpHy&cx2h z%*X?li1_pW{}mR98e6DRkeMLhm#+|9Qk0pO&dZw$QlbLHYk=;!0;KN%Y1@ws>^Fey zn?Ni8#31<`sQetL{C%Jpkog}buLG5jfyzGs%0C2RnEac65c6fA^3Q>CFQD?g-a(Fj LA-udW8o~ttIL1dB diff --git a/Test/!Test/Templates1,fec b/Test/!Test/Templates1,fec deleted file mode 100644 index 886731ada329e5df914e85b877beea45a7ca21d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 288 zcmezW|NnmmB%lLie*t1fATH0$<3*BUZ~+S5U}j**U}9j<VMWN4?(bt1VqpHy&cx2h z%*X?li1_pW{}mR98e6DRkeMLh9pva2!kd$tV#k{bQlbLHYk=;!0;KN%Y1@ws>^Fey zn?Ni8#31<`sQetL{C%L<10aUU>p<mWpz_ava?g?E-~5A^F9Vf-3zT~YmFI;x2rC5u Dx#C5I diff --git a/Test/!Test/sprites,ff9 b/Test/!Test/sprites,ff9 deleted file mode 100644 index 6e800a81adc79ac343518d80954febda8c5bb8cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 736 zcmbu5K?=e!5Ji7Q=tihlaPOsDbf=Kr6olZdTzCzSAh-+OKz}ApVrmMC18Jr&fBt0B z09bR~7QmHjBmJ;Dn0-&S9M8C+<=S$c8eqlUhz7G9=Hla+0kawAi=&C^sgo8SJBE$y z+?u<yCG#4w&IwPVj%_~}bySo(b`_cUakN?wmUGCWho7y={FONmBfX0zioX6lo*G%t v-=A41077l2W)+rvQx9N<b(BOuO(#0-QDdXwTP=Np@DIj`^cMM<G@D^Bh{H_5 diff --git a/Test/!Valid/!Boot,feb b/Test/!Valid/!Boot,feb deleted file mode 100644 index 77bb528..0000000 --- a/Test/!Valid/!Boot,feb +++ /dev/null @@ -1,15 +0,0 @@ -| Copyright 1996 Acorn Computers Ltd -| -| Licensed under the Apache License, Version 2.0 (the "License"); -| you may not use this file except in compliance with the License. -| You may obtain a copy of the License at -| -| http://www.apache.org/licenses/LICENSE-2.0 -| -| Unless required by applicable law or agreed to in writing, software -| distributed under the License is distributed on an "AS IS" BASIS, -| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -| See the License for the specific language governing permissions and -| limitations under the License. -| -Set Valid$Dir <Obey$Dir> \ No newline at end of file diff --git a/Test/!Valid/!Run,feb b/Test/!Valid/!Run,feb deleted file mode 100644 index 2f4534f..0000000 --- a/Test/!Valid/!Run,feb +++ /dev/null @@ -1,17 +0,0 @@ -| Copyright 1996 Acorn Computers Ltd -| -| Licensed under the Apache License, Version 2.0 (the "License"); -| you may not use this file except in compliance with the License. -| You may obtain a copy of the License at -| -| http://www.apache.org/licenses/LICENSE-2.0 -| -| Unless required by applicable law or agreed to in writing, software -| distributed under the License is distributed on an "AS IS" BASIS, -| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -| See the License for the specific language governing permissions and -| limitations under the License. -| -Set Valid$Dir <Obey$Dir> -Wimpslot -min 64K -max 64K -Run <Obey$Dir>.!RunImage diff --git a/Test/!Valid/!RunImage,ffb b/Test/!Valid/!RunImage,ffb deleted file mode 100644 index 60e288dc632fd8f222dc750dd404814af79b0d01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1738 zcmah}O>E;t6m}$5NJ!Haf`tX7)r-|YLfte@(vYUjiZo4I(`>Se-B!B?&?KHDBOKe< z4rwHW5JH@KM&ibqGlxBK-U}DbsNw`yRx%f)6})j0H|?%iALhsNz3=<pd!r$eln$Zp zxKoc0h5@KsTP3LV9M8s|BX=Ay&xdAU5=pud;?M}8$$QN9nF(XtWF7=V1~r%VaGIYe zaDq|Xu_2$$L0SOh`H`I2Mw0yyrp_2fbPBc;z}RQV!hPs-ivc_9F*g8iLk|sDoZ3AG z6CMmBr8!R)S=K{%FlTYP0mT4{A?_5M{xTG3urOZ?L43m?a4Q=dlgT7YBjZ`e8*Es! zwET^xR&TWQ#yXl`1Zp81+ZOYE@YrW#?qTxXDNq;f^=KDOTXX`B2Xx>uJPRCQf8z0g z+XDrBryoqH$B^wH1e5!L$GceB<qFR80<6L^0BcBXkZU?<x(vHDUDFk$X@zjA8Hep- z15Rt5POW8V4ISDYsJB~tnxVB@xZ8(X>j4~Ttvv-8)(?Bd&RkDqfmXSwEi*+SF*}`! z7Q`KdJ|e{4cUh13c@Gn`2V**5FmOI+o{f2d%e)cyMW1~%DQ?JW2o@jlfCkae%lom^ zHF1kxxf$L~cE+|gLPjFJe(M5^6cj6~Mye_sHT_5?(j9UE_jXgD=CBKC-0U_}kl!p3 zDSz_<y4I%{klVuT&Z`%2%Iy{%F+>-Lw0~=Lv9HP})Z!-6-G4iYY}L&Qj>%%R5Y6Q( zaz9iae-H90*5eb+#*Sft&t#>L%PC1CrOX)=j3bg+h_P*#*#^TR(g4wlyb~#{?s4yK zcJbdwVY?QGG#zR#jxa>z5DjaaYJRp*bNPa@t||-v3i><C#RPSap&A~V&SXvik3{mg zKg1ST3_X7R#`W}7v~hkAvpmPf8VVO@7V^1bdA1Vey>8~aQcUw4GZD=-M=DzS;hoDU z%kf!U1S0+TW>VCldM$~c<T&Dh1+zmP@0BREz!T}`6)`9C<?6ahq{nw+ylBjo5)tXw z+s}#!U%$Oj<&P^WfBmn@KR5m+iI?63h^^drEK63@wY0jkqi$ssafKg2Cq)t~X@Ea* zRn5csCH{(a1e3(=wK=Y^jH`<x#yKLe@;gb$D|2WW&PhUfEqdwz-al;X#>w6>Nt94C z`ksJ%#HRRGnydoyHpVBh`(MsxlK3zVHI8>1QRqi61N=e~##=%njkeVfGVsl8RnCya z$8kukHdN<o@C3HyG~B~?N4y`jCmsi=qHv_BmbPWc$Ry##9I@;dGudz7eG2JkR5S1u Oq=jd-RLy0`zyASYlMXci diff --git a/Test/!Valid/Templates,fec b/Test/!Valid/Templates,fec deleted file mode 100644 index cf47b6e7f82e5109310121662a0166818244b859..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1052 zcma)&ze_?<6vwaqz@e^#2qi?kDMA{2uU{4z1P(zKBH~!RN=T@LP>B$7h*}yO+WG@( zkZ@>fDw^AD%E3Vzf}9%4*Z26&<KD3^9M0kUx#!$-uj4q5(3C*^iSQw^_I`d>mNs{e za<&EIqfhfq**VA^mZ&uXHrX#kc|eG7WKS6F1ch<o@ALcmeZ#K(gZl>EGEOP#&ZKg! zaF{O^j^yr=%wd$6!rUv&n83^@<oK8HH{ib^Eaoxhd(7YAqjZRGAgDipIn*EC5-+QX zOnO=F=Wxd<y_Nb6aOw}+;-v`>r4vAw?qRuJFv|25b}?UAlpUN-A-ebtgVtnGS5Wx= z{o3B|8fNdc5;H=G2h8Xow~=S@+Hc%5fP3igh@Ua9GamvQ(Rhk^mH9YWMB`)3lgv%9 zxW?OE_x@4l39yvL>&#oov|ko%TjN#cHRgL@MU5w!SD2rGoojrQ`3mz(uxpLCe%<{- z%x}PMHC|)hM5g`j!5%eUVSdN_8SGW#E6k6XH^5rVO(nUSPAq5ErKRLq(@LH-qvTn$ oO0a0uoDw_pO6<gx*jZ45)7vSk<XLKQ)3em#mS?HOr(H|_0gr4PRsaA1 diff --git a/Test/!WimpBUG/!Run,feb b/Test/!WimpBUG/!Run,feb deleted file mode 100644 index 87a46f4..0000000 --- a/Test/!WimpBUG/!Run,feb +++ /dev/null @@ -1,17 +0,0 @@ -| Copyright 1996 Acorn Computers Ltd -| -| Licensed under the Apache License, Version 2.0 (the "License"); -| you may not use this file except in compliance with the License. -| You may obtain a copy of the License at -| -| http://www.apache.org/licenses/LICENSE-2.0 -| -| Unless required by applicable law or agreed to in writing, software -| distributed under the License is distributed on an "AS IS" BASIS, -| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -| See the License for the specific language governing permissions and -| limitations under the License. -| -Set WimpBUG$Dir <Obey$Dir> -WimpSlot -min 32k -max 32k -Run <WimpBUG$Dir>.!Runimage diff --git a/Test/!WimpBUG/!Runimage,ffb b/Test/!WimpBUG/!Runimage,ffb deleted file mode 100644 index fd84a1ba965a1573fdfbc3e618250d94d55bd12e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1790 zcmZuxO>7%Q6y8ONK&X?7AE`)1^mQ9YPQ7vLGzlam6;9#=LvW(lAu0#Zcs;g9S??^f z<2sQzA;GCaoRHu^5pd$bi9<QS0WO91#DNo_asi10LTKTD#Lt`YdSei4X}vq|z3+YR zd+#l=tZWSHB0QG7-BD0nT3UpXCuD$!-LR*aj9^<eiDiw)cq_-S%{>-GtO>oK$t0)_ zgHlL6{7Wn@Jd06W1TdE`Kvp|AiOHFM96>f?I2JwV(qjmOf?mWBg-6ihJ_B~-u}}dI zz(WE)r-8?y&sE1{N^tUsG84m<1VuCy#Q=&S;W3ETs4Gx4BtIX6zB)>U%d@lnem_qQ z@w|}jS$|MgG`n3{FIQ{j86-apti-S%_$-P*vKM<?V)2b*pdr%pXah<6v=2f8ZA*qW zB{coM<cbGv7b4M8eJUBEZN<>!k&?WD%8n|S)CH)*r~_(918_<;sMH)-E7dAB7h$R~ z98~I0?(Em$ptQGFs@5yz8tm-B`c8GDQm^b(@of`I)hqCHrMlq)L;bK<>?oAF3Z%-l zwyddz#Oi8Hw;=5xw9rGpM<Mfgi+fmL(C*PTgSNQJWPo)+$YhsCy3Y}k)DtopgU`EM zQDqKK=3}I5dW!Cyh~e@9GFaQ+BG!Xr#Cjwb!^Mk8L-j(`4uzvWj|>hlDUnSFQ}|30 zD~s-P5C06W;O||y?*2ZRb0F*FK7TvsOgqF{LHp)e16LUWF_i0>UCcnNT{J&;;X4S0 z?`L4DSSYytM)JUe=HQ7~&Em~B!O<LFI6-mTIdq?zUt72|UtE}XjUBKEOdBBX(VR)U zEoc)bHfV}ID26&y#k4};Nv0nYlV<ZWMqOJ-Q|*K-s3#GQ>pCk&q+WY+gUieLp(Vm} zZ#*z*Dp+*}Xn6F_Qi`J)480Kt3v_jD=9V)x&lFt~@8XPqFr5aj8-@pl`ydc*Bz!Z( z`snP5qc0+srXbd*Sjf#YrhHw*XpLW?>6`n{59kiqBGwNVQmiee1{rHOISkVpS7QBg zE_KnEDXYZ%#~884PPcGcq7G|jR^KD`1RgzfZe*1HH9NZhwu3J2gdU$?jgi=kc=E(x zV9Ei0@62d`FGOepp2Dw2buABNGlo+1aH$!zsP9L(BKY3!K!bXRIJUU=I*i!$@!yF3 zd=((6x&X@%!%BL=9_!*BVLa};ukkRnOAi@@QnV%QLSM+kkpN<MG61O@yEwd#o3s!+ z#ICYHWr!{BL#Nl0SNM|HFJaUdFt?mW{*RFMt5e$P(uvc$Ztj2NwqMU`ui~R_@v-F} z2kUdbxVTz?YxvzB_TXb;zjZgjEn>fa`p=VdVt<Gt-#C-fFc~&PKX8cs+4vn|-$wh_ zr@l>_a_3Yc-F0IBl$p$$p6BMLSIxRpHBilL{U_PNG_hkh1>a+#kjnJSNv6Cwx~ukI N<KL6J?inM0{{ubhJ?H=c diff --git a/Test/!WimpBUG/Templates,fec b/Test/!WimpBUG/Templates,fec deleted file mode 100644 index 6a06201b248c83f9e729e32e9c1b6d07f930465f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmezW|NnmmB%lLi-vnYtATH0$OUW<ih0CS@1tWmCh?#+bg9$Fo5L(~ND8#_n!p_9b z$jrzCmWcTC|Nj*hh#FgvVL$+-7%G5lptb+`p<)t1Is(Z50aWk<NCVX$ZwHE91!6xS z4$sUja0+!-fVw9nU!gcPRUtJkEj77BAwNwasWe?7GY=@8TcD$mUyz!okeFAgkeixU os-uvRS)$-(Xap2VQ7Fj(N&yLlAlH!4AU}od)Ji>G9}@#!0J5<@c>n+a diff --git a/Test/Arrows,aff b/Test/Arrows,aff deleted file mode 100644 index f3214823dc1b60e26d2801a76f7630159ecbdaea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 208 zcmZ=MN-RIg00AyQwgMFVC}d<{*uu<EVaLkAP{smQAOa*=!aaQhf-7^A@^cutf&2)F zR#XzGg%PNof#HKah-3m0XaFP)!Z0}yy8(zhgdyTKKsGivF#P}jALN>SR~Z<-oMm9B T$Oh`%$;{Bu($U$~&A<Qv>(3o@ diff --git a/Test/FontTest,fec b/Test/FontTest,fec deleted file mode 100644 index 4195431b309d5b815c1cd6760f105fa21e3155f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 582 zcmZ`$F-yZh7`;>_2wo8#+$5uegeo1h&_b0KMYImZ+0<NZAeW1m1VrfOQd~MX6mf8H zadZ%&QwIkT2Y*F>gM%2~nR8I^gU5IG-uK>jA!CF5s%6}U;1s<bv;`$(JPW9y7mx#> zI7vvHQ%qJVYK|D^X3jKb@>=*vQ!<t5T?282EK@P3$WWenoTq_XSc<qeCkS!T%LVe- z*rBl(`^>G-&nwKlf^TCEv1!>MW>04<K~wrb>(7}!?EleK?iu`-=v{~8ZlK=-KmLOD zA7*~@LHiexT>;*}t3B`N>x3-qIh>Vf_P#v$Ypp+NeLs<*h%kcptBj7;`&zFiaYx7! zRo|!lYg$+PRsI2!ktc$0f6r=myvPcrIF=6QjMjzZHJ3IS4}B+QR?YQdA?ck}JrXjo zHiZn6$hx3)r$txn)gm2XgTj{JOvWOxH-zunjh647Bn-d!Z;e1GWJ&febG?Mq|L4B| D`7*H# diff --git a/Test/GrabMem,ffb b/Test/GrabMem,ffb deleted file mode 100644 index 517c74a466a30dbbaa6bfc572daf7aa713207792..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1281 zcmZ`&O>7%Q6y8V)Ak+a`1&I^-y0W9BS^ow~YY5WfIIY#-RI%HrT+nzuc1Bt6EVHxN z=7f;AMO=`OxF94X4xBmk#Dz-$ap4RVT<8rIv~WN|@WycxU)aN}=FOY$ec$)qFvnTV zP*?Fp%fW#`<@)uj@B^hI3J&Ac2%TWZ^qAu;WwbOh?8rbwiRdAXdP2h-2>3A%=r=p@ zaF=dL6`@)zW7Q_Ovm<xyWdhmGFi|One1b?Bq=_IDnV>I20Wl6lY#<{9L?Dzr3Is;d z984?CaEgRd$Z&6lqPm9D1x{Du2~>YR72KSXe<6eY4vdLwrP63LD)K4uqSAv>cp@t) z?KJC+R=ZIk@~0P@8SX@(ND^rARw^}#?@qvDq8IQkkq-F?N`nuypfjT^{gIYNMgtFt z>YEYQg3xYc=*h%r*(GP^9h~U`xiFtV9`XpT-$t|T;x)hBY<mRL%CO(;+}yp>!M?w@ z=eIh|MjN|(sPDG6nw{oui+0=aTla9Q+1m0T$Uo|p7{}VGAga=OD|*&QQr8x?1!o;Z zpEB$|iA5m$G9ZD`AmsyrfqGl$h;$(qdMFdy=Y&Yw3CU#$<xm=Kror?1nCqIIq9>O# zyo!!UO!0>1-PgsCIm^`yrBZ3Cv5r`)f#yT&Bn?(@h<)PwW;;}-E#DC~kvY#VGH3PK z2QYcOSj(CGrrYt`w_N5_OUEC>o!)3h)B_&MM7UnHy5U_mdC&Ec$S|D1@Z^xvUm=|B zix1EZRdATcN~KJFzfHk6hQHx`oMG*WSZUMHT4~pF$Mm`Df92L)8ZeR_(U7ly{fW2X zom4*M>f%1Ue!lh){rtOC9G&CULzRdvHHzHY&&=sj!RXRZMtN-F!@|n7vZXP;G~{C& zv8<+%_gExG`Ar*U&e77J%=u{L9P_pcL)R;NGcEVQ1KSHq{q!P^KRDguTjqSR419xf z4G;18YN4`*Bj$XWpFWV;Vhd4eTWZ}BE7$;YzVhdj&g?l8?AbK0P$A(#s<nv7^GJ+o z?bGWZfa9mn0lsI>4;z+9<t49jja)imez|gWv;6;N{rDKZW6rOS|AWt%^Jt0e`+Jcs yEI#uS{^*HrI#}hoHMa27g)28zV(#`*w(#5&zk}!4f_vdgC+&)9%v<_}{revYgOZT| diff --git a/Test/PlotIcon,ffb b/Test/PlotIcon,ffb deleted file mode 100644 index 8189a04de7b4a7dd26f60e39c635d821b98f6bd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 894 zcmYjP%Wl&^6!nIxLbAl78-##Ut467sCUz8+Hee(tO{qncRCP)lHr2!#J0m5wu_vV2 z@)xZ61lH{N2PA%hjaeeNlco?aJaeCO&be3Dv{Hdqk}fh4jV0`(qXW1>lEvhlrZdU2 z9345*HSJzOzjlF+2zZ?H5oYm-XOLqKH)R1Gt4JAdsY)a<Y84A5m0+ww#_kJha#CQC z%rIpO#EHZ#=hQ{y2*reh-vm6B5HSJ*FcB;cIOal*moKgQRH(~-fx)UvGL(!87?q?8 zB;k50n7jjDFQC4$lxd?{ozLeLwgg^DvZy+_rIlAZUaQ^p+xrCmuFxxR5l?uYBjfL9 zA|vv{1z1Y(0yZSj6E;VZfkhdom`oJ>c_yTYqcZX&lyjDG>h`+8NaQjTLsE8K!4)r% z3hN1^A&X(SK0Mz*)Ac>SOl`UaF1`L~@1l=O_x#-L_Pw@`-Z@&m?y=YRdR?+k;C2Ui z<8_bA;G`eTir=J}VnI-a(w2{uki^dCY6Sl#h>$Xrou@nyp$Ldz9L-q75hWjZ785U| zJe!JK%{eEKYD0DkOvF@3CYR3t`>{4PwMF+IpunrMNg}-<iFIvj1K)M+iH;v|P1qLc zUV21E(?rc`>@-csIBj=2J!9`Hg=(NsYnj*BX;I8qdvhIz;cfio27c+<$wOS3&X<yH zA6mPOfw~@9)~>Fdm9g!b&Xw74&F#7~Se}Pu@6p4`XV=KNM|HaPZi@hI+Xv1w>$zoF zwl&nX(NpECSx$3VS*ts(+smP26T0{@zI}pmN%~&jF*M5icG)#`?Pe1{QP;JPoA`~- G`k%k_h7RNa diff --git a/Test/PollWord,ffb b/Test/PollWord,ffb deleted file mode 100644 index 47dd4253ef44ef25ca0298fd5fd57ffc33a02a74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1554 zcmZ8gKWrOS9KMqhgiszW5~!Kzms4Eq<{IbhkP?#s#!0AY>O{8Ns0>uk=V#|B=ey(X zxsD~oz`#@?CM1{`m>8HCy1>E`U}J`=EFdvKbu35-e((GzDIRR!@BO~-ec$){9W#t< zf=Un$BiTJvaMst?P<DgJr(!ScD-p%mRc&S%vk84|C)ky)@MF<N-*1Zu>QJB@a+iL_ zCpK;oN(Md(%PYw025Wp|<z6O|odm<6j~*Yw4;1>bAQl;;BRv6e?21r9`fy2rC%Nwm z45T_tZyNI~6U&tZx5q3&OK}2lf`mf^owKdrY9f9$f&LsS6_)b(!C<h=Q{l@&)XjS% zTXBB3TG_5Owy%)*39y>rrtgV3MkL<p%ZSXkhTtK|b9swIdwhT(0`EqG&Qze~4<f0g z-?b439W~&QAhtIWv}LR!*`j36COGy5O5tn+WypP4<p!z^3$K?O)rL(pwFC#%=C!?> zO&pZ#^>VFQ-ELs7j>=wbtJ<vY)#zyl<=SmruhzC~2+EIUC62>LyCA7jXDiw|NOIQ@ zdIZx6qC*|}ISz#@JJKbCez(uN0^Q)Qh<x&eP((c$>p90HQg6s&0#Ej&;wmkk?#G#_ z=`DKde1cc7A9&tD5E1a%R}<v(`P5$pVH9*D-qR`4Qn^Q|5MK-s5pu=71Nj20c zW;{Q`jO=p{pfY%|w5T$hR<qo=ZZV^fKludK0a?9M^=TN~ld-VuLZN6csElou5lhb- zLh<;B+Bb-2hdn?mgG<f|4S$~sZ(Y#W>RU6|goBL@6bj5}r{xZh>C#EL$PE8NkGM2q zT6U;>OhoTr)MEA;cWwmjzDF|FY};PNec1LO!;E{>^6|MxZPDs?vtK)f95X(n(iiiO zG+P$Mjg3M9b}K{OboSMx?mS-qW^vq~r30s!!xFM7G<S+UA>JS7|EK2aNXAce_Ur6J zX8b{a{=WD#Ms(U$#%_6mOFwBCIcCnV-@#oy>kKoWo?A%kn+`MQcg8-f3imv{E9ngO z)A{K)xxPZ7U9y(GeJ>?mvTW3glhTCVTAxm@Arz&iGg|{niC&Sr!4a)z&=cs<M(fQC zIW42#Wu`s*7c<u!OyT-s%YMwm$ONT7HSpRCn5YKog2(jkxpZj>q;uRwrr&%9Cm&8w z_@0@~8t@&QB1&iQNVj{mtXz$(E{x(^vdAb=W=D?;tGQfh9Nh{t-_ECOS8eB|(r>hh z3(nf+3hteHsdzywwt|6gl^!zl@Cp3D%;?-d6GfZE@$T#|%=}=6nID~}`HeP;FOv38 i=Pq9hVs)$CXXfWm{t3Rw%rECIH~TG-*6tJV-~RxWP~xTl diff --git a/Test/ShowSpr,ffb b/Test/ShowSpr,ffb deleted file mode 100644 index 6cf9d25c17f301aeaac9015d1c3e78c59ae04b88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2106 zcma)7O^6$17|u+#wAFsw+Lo$V<=ttfoivl(B*tai-BhRTu8nOIyV<%{#4<^~WCxO& zac0u&7AYdtgY3bB3VIL^MXCo6>Y)eq;6Zw*A|5=5N<p!p_!CG$gsRUsNwz`oXJ9h( zz2Eab@ALkA6BdbRT{`5rE1p$f3MjpA-y|6o$FpH<x~+hFJ{=3HED~AQ#m{V)j#(9M z`@BjmyUINZmN*%%S;3>fqthesvK*T-<0;YvK<RHO@oA9Eb!o+EQPW%@+X<-UbFf%G z)vN|5zFgsMK$cAv2xwTQUE$QWf~7E0pJyB_$u6DhvpD6zgo6necZHnVFqF(-AU@kA zaV-UbyMJP$-ENPYq406Xt4}m~Y55b!@`q*%rP(CJ4;=GdI%zk!?~})$Y*`+XFRzg4 zLSDrzLv+JzljD(D_c-<fN62q`R$$q6oqVSjv`vqL?ZGZpEkE$AGAcV<!G2zZDhvZq zL(?Y3C{ezo&_Sb=FX^BubZIfaaHM#0ffkMVd84q9pDj^wo(>fYhw}^hVgai;G76{Y zXufb*Cyx4|SA5y^L>7>0iQ4k2C?v8ganXXc4pI#WvG!eFv1(QY3EK6RS?5%D&T!90 zUgUDGY5AhhK17NMiFK)AHLbu5LgUT(80wmsqFc6i=>RQoKNv49Iqj0`vB>rj7P)8h zkCdLG{qzf^vn-;)lsS6&6;g_&)5o1^tHBjLJ*6v)mR)t)$4wi8JcTZiZnv7MZrOgI z>J_KTRo!i?y5FkRRIr^;DVJuE8PLtCf^HGXpFU{%yjVkQE8xB$@tmganN1dX7{JF8 z{kT0q(N*-!eUpiFMi($8Ha_n(4Ud}&i&Xy^YWAS!0BVDId9*|4Ktf@xXJA>~(mAI= z@YwFjY%0zoFAuG=Sie5Bp2GSq_`J8P!ENNF4IHQ9$-!$X9-lz@J_PLY)^Eu4JaZ+c z2|S!XhxMzi-;yDUf~<v^MZQ;v%xcvO84Wd=j_=LJ6E_K2<X0S=K9ixwDR-gH11*~v z3%$Vm``tvHn}BJBG-djPI<3SNCXH+&(S-!sAdPPL3Bj3k#|V>@+dCId*U(K(@o~iQ z4e^vXlk|00nKX(02Uy$j&{WE$nDo%LrX^C|olf;GCM^K-#JcNDT3V0jO!9UTPF|HS zi{ug)wRgj;kqt<niV?mzh=IL+(7xQBhrm3i5?vdhW+;re+I!^sW+uI$4S^0&U*YQD zCD#kWq*piIpf{4p_ySbEeOo8w(R*+vU4rqW|1piymE_vU{^u-8U;G>RZ__AUg@hkO zsk?ajV}!{YwtP*4(!}CS-U{2!F(N-OJv3qM$_)*Myc+;+SBJI<W7!{PjH{eNy?pB| zA4cS~&?T9TQ?kd-<o$?t_)emRXg7{+3(wFG!z>qWC8~(7GWk*9%A1KUzXa$^uB9@$ z0n?csLZ1Z;X$>{eQsWaDCO^GLSj#b3`xC2;X}yRE%~CPtxS0Gr2wvPSpdB-&mt%TE z)dlfuuwUFI?AOQ?Bw$*l&K_mX!PiZJ%3KAocK~~T+Zt>pgfaQ!kdeYngfa|+{MkkU zyTarz`<o(Nv6;Z;cj4wIO#T^!zcGQVsN&Q_WeoVIEV^lgMR#m_mQuP>z&~d#RKcPI z^IqIp+y`(U8AT(-0WILjN9S?+42V}07JVE%*IBd{iiI(e`#`%tM7g6PT%mVLqi63T dx<PMhMhs^?ouTst6wTb5VbSyJb4HB)`4<ViO7H*x diff --git a/Test/TestMsg,ffb b/Test/TestMsg,ffb deleted file mode 100644 index ebed7da7ec6e6191777e1b1ef4040e85229692ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1049 zcmZWn!EVz)6!ZlSNbUuM;DRPr0}i-tQqn@32FYntYBf!&*lkrVXya_sl^ol6H>9~B zgt);Oi5s86C-4<qIae}A1kX*{2Jpf5?!K8fGjDZGGgE9v@i-Cv6NS>++A3^6N<!Kk z#6!gsiH7RxnszOvS3N~T_&k)ni(%O13DgOP9W$Rk(-RAagc4DR<;5b*tiYHa8HEaw zY^NAULk!p$VWcpWoLGcJPXrwN)aS8+2;q}}K(Nr~7zuT9-f7CSNGuB}j;Ab9M==60 zg2ZD)z1dPQbs@f-B707hir1HxMx)UpI~TqfCH<vfVoNSHoXvXEtuK)H3!szYAPl&a zNcgLvNXUF=3>K3-pLIxdz($A?uztenOhuXeQ6iKG`xa!>QzMpeVtbyVE2K(9hmxI5 zaOw+`!fXL$$U+#l3&%B3vt7rvh^Cq1$nkbs2Of^>cH3@xPTfVTjm=hb%ki96lUCcX zo5$F7np+k)<wvvPr*V?GAgLnDmUput$(_ry5nN6XJ*vpoGUmSM37-sx{UPgf^rP22 z3CR~?o(zP{<}68Mc0=Y<1Y#f*Q|Fsk_hV*i*)6&;hxD1prP`ByUAuJ~-{Iv^UZ3~! zRl~F0T|?LI&C%{&Ess)>#$aZvS|g9;l~r9^zKI+iRae&Oohw(VV55j{pJ5!4t(Q(n z!LvX}Zdi|tMJwm!En|;-lYVJfgweI_I}?ig<zmsVUGePSyW+9C-G5LouH&b!bxpcN zm)-WGATX@bBeS%zQCcflnaZzdQ;$%`!=0Av9c~@y+UZ@K!ALlhQMeAH(#}^5`smub z8h*fR=c}bB1-zg9JuOgi#V|4L59Vi)qDqK2)F4+{C3L~S2b}5JN9yAp)avJbK0UxM dnE&w=@D}C-SuGZH?Mv>;L7NX~sDE4i{RivPK7#-N diff --git a/Test/TwoTasks,ffb b/Test/TwoTasks,ffb deleted file mode 100644 index 5dada22523981594707d0ab419df297aaaa03459..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1230 zcmZ`%J&Y4a7+s{h6o`qgfDT3PRyaD)o_|gW1QR1IzB{tw<U?n}i8Rr8J+?=zcQ!M# z?75{rQASEfMUgs1s?<lKG^rz$3R;ks1__aG7u)9|Y%!~udEcA&-uE%b*~rmW$yCeH z*rIX$`c?R$(lH%QlGF-quxAI%aaMC$c5>{=P{c+Ikj4X{VaEb~!bAGaZamzlDyd>@ zRqNO&0PgI{y?ld6c5_TsiV2@0Ru-ud#3BubG7=C+p-3!bjF1FGlE<MyChfR<X~t6} zmdzXwW-O|2ITdg!Nv2T4Whl6vi~lM|@r|ubnzdS%WmR4ZuPQyNMIUXM+FsD!>2!BC zN&LJp$Z;=@gfY<K$5d)E-=BgfBroKB5*_gjN`sHIpgXGy`I(kh#v>0#4Q<A?Ahz2% z2GUq9`;_c*f-_&B6qW&$A&=quT?AbhxBPC<^@ygE<1pxbw|}pPL;v8w@AQJ5F7^-5 z-tTM&y<opXyIuI52e=b-wmk^Sk9sAJ5?#0;sj|pc42mGhT~`z>Sac9WLKJ(Gh)@n? zNCx9k%0~ht^+@QLd?68fB2Cd}Ln4a_xs)T46KT0E4^QV~scXd)on6au6TM9JxOr%p zbH0_MR;!i%+DNn-X+9}Zq@fBQLZ!A8bNd$8wzwe#g+3{2nDfO7b2cu#fUV%`<|SKc zxjnyo$7Rk|?c`^;hh+4JAf{IENE+dKTlKoPZY!Sa!^kL_!jcGre@i^O>;?K2eA%c| z>+i0<WzP5O3zEAkid?Vm5#TrQu<%%6&fwgYu`>42AZ1Q`@r`>RxS_6vY9N|$Z!B;} z=dReaFG}3wwUZ}v2K>RC<F)6gH}MM3HXAr*&QIl-7R%!CB?ruT%H{x4_{-(_W&!?x zrN5q^15XwIz9@d<wpy*5_>}yU)8d7Vzc0)Q-<Qf;pw#}kHa}d*S<?Q=^k1GW%l=}{ z>&@qAT=N>=G+$9K)*Dw_bsV1t(T<c6+bWCQ=D*B&xB4eLv+~*dDm(M}3j6RMb$owJ diff --git a/Test/WimpInit,ffb b/Test/WimpInit,ffb deleted file mode 100644 index b20f8564d2c2339f3f13c9f7ebe8322194fbc931..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 865 zcmYjP%Wl&^6!ii&NM3+og@g{Km5Su%QQAr^4`JE_tX2-PQ>wB-6MN!}>Wt0I7&jaK zgFoRD_zM1^lJ{_@Bqd(hp8Gg+&bilhoUIl|WwlTupBeNI4)zhGrIHk!SGD0v<J4rX z<J@iOHE3}vQZ6;mP|J)fm>EY<v6Mc`jE_&$B}$2%P7hnQz+0xg=PwCl*kV!En6m|B zX;5oUC_-Z@3J!ji^2$I+q(q<)Or{)-FteMRmN*?k*=}*ML@6hRQ3IovYJqaPUJ7Pb z<ab-xXJ$-w*zGn=(_uHnJEh9I#XniPdm0`MqGYg5<X4Shi!)hpt)ckWS|}1fS%6hU zFJ%)VU9bkF0?QSroGC5+MhPQi?n9ST(=f#e?R|?(Xrsi0oLzTtsSD)7dI5RJB)lL& zn0R;>Bw^wcOw{5$9Df*{jd32taS)BeL4r|?qfvAmj>Azzry+vq0w-Z~?1PhkG%J2p zDXW603hOP;tdXQH;dTVK6U3A%>{(Yl6;qLtK$+Jp=g7-%TuIV}imSQMcFvke+6~!g zQHZ%P%-jV3@5kEI>=xa7)Zz`sT$|20@d%}$5k0))I#0acm=u?r*xB3nVK%XgLu}CZ zwKoou6VG+FsA}giQLy(?yobXXU0!he?>et2J$(D?2RsY>#Ucw<2+ckJMZfPqHJiRS ztkcVFS}4!&;U`v5{u0J@J`%>~XSWzJXIZk)p`4bUzegQ$&yV}AlTn#`aE)68*yz>$ MYkXfZihJ&#zYoq6tpET3 diff --git "a/Test/[\210\211\243\212\213]" "b/Test/[\210\211\243\212\213]" deleted file mode 100644 index e69de29..0000000 diff --git a/Test/swap,ffb b/Test/swap,ffb deleted file mode 100644 index 69e3ca171a6cd7ee59e0bb79e65de9b1a8938199..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 808 zcmYjP!EVz)5cLHPh}<}ELa$a+70GoPlT>XXl}ws~Mde6!O4SqEI2&grXV>g*aPukr z37^1MAU?u(m@O%d59{5XnYZt~nU?46HyEmFtwpi0=$@P$A<mVSbh)fnmTQAcJ8OB~ zlZKX2gG-TfY4{8)IpZ33!4X$1r{5+L;4@VTB@u;(*mnv3Cgi_<OCT2w)@p?%TSF>~ zmEnXU4CbQb;CDH%EQCZ(1WLhV&QS}yxPNJb6B5cngWC;?np#E$j7q9C)O<S?%s!Cs zHE`d;+Um5^sp~pq_ryb`i%$7Zmg!t3!%>=z4v73iVbb7QmfRR<{&giZiJz{)Dx#OO zDUmK&4W+>f%_(M;qhD)bg)9OXHMcd>oX|crm<eOGn3A*G4sLXTT-Z(^51E7?XGk(1 z@8c}V0)j~!+$58a<Le1-;;XATog||S<0}lu>3K3q#wndH5U02Jl%(eYIQd7t;&+vH zDu}9Z-tw6<lGJ6~wcvjTF{cc7HWkmsT;wEB7Asb86zUt-l60ZsdMS+SvmughLUtRJ zVks=M_m_|JvDGy<MbBQM!P#zD6N%7rV?$H3s^z_Sj$eq|h{*U?d)SHFgQ$OW8n<_P zgMK%1o8v(@I(D0GG@z{gGyMDx|Av6RB$E7Qr7+wNqT?vo>rMM_dfk36@F(;JGJ3-g j2>u83VW7J$FKRzl4@+hExvHg4p~u>m_wFfvxBmPEKh6Mg diff --git a/Test/test1,feb b/Test/test1,feb deleted file mode 100644 index 11a9ed6..0000000 --- a/Test/test1,feb +++ /dev/null @@ -1,15 +0,0 @@ -| Copyright 1996 Acorn Computers Ltd -| -| Licensed under the Apache License, Version 2.0 (the "License"); -| you may not use this file except in compliance with the License. -| You may obtain a copy of the License at -| -| http://www.apache.org/licenses/LICENSE-2.0 -| -| Unless required by applicable law or agreed to in writing, software -| distributed under the License is distributed on an "AS IS" BASIS, -| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -| See the License for the specific language governing permissions and -| limitations under the License. -| -announce ‰‰‰this is a very long message to appear in an error box, but of course the system ought to be able to cope with something even longer than thisˆˆˆ diff --git a/Test/test2,feb b/Test/test2,feb deleted file mode 100644 index eb7aeab..0000000 --- a/Test/test2,feb +++ /dev/null @@ -1,15 +0,0 @@ -| Copyright 1996 Acorn Computers Ltd -| -| Licensed under the Apache License, Version 2.0 (the "License"); -| you may not use this file except in compliance with the License. -| You may obtain a copy of the License at -| -| http://www.apache.org/licenses/LICENSE-2.0 -| -| Unless required by applicable law or agreed to in writing, software -| distributed under the License is distributed on an "AS IS" BASIS, -| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -| See the License for the specific language governing permissions and -| limitations under the License. -| -announce ‰‰‰thisisaverylongmessagetoappearinanerrorbox,butofcoursethesystemoughttobeabletocopewithsomethingevenlongerthanthisˆˆˆ diff --git a/Test/trans,feb b/Test/trans,feb deleted file mode 100644 index 783ff65..0000000 --- a/Test/trans,feb +++ /dev/null @@ -1,16 +0,0 @@ -| Copyright 1996 Acorn Computers Ltd -| -| Licensed under the Apache License, Version 2.0 (the "License"); -| you may not use this file except in compliance with the License. -| You may obtain a copy of the License at -| -| http://www.apache.org/licenses/LICENSE-2.0 -| -| Unless required by applicable law or agreed to in writing, software -| distributed under the License is distributed on an "AS IS" BASIS, -| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -| See the License for the specific language governing permissions and -| limitations under the License. -| -wimptask taskwindow basic <obey$dir>.trans1 -wimptask taskwindow basic <obey$dir>.trans2 diff --git a/Test/trans1,ffb b/Test/trans1,ffb deleted file mode 100644 index 5771935c98fa418018842cc147443e3518715918..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 865 zcmaJ<&2G~`81w}RAsK|k8BHyMQpwFvDN$SKAx%@TC=QBUs&YXad+n^6?3&#TZXSg< z;SqQWE}S_a`3|2$N^`=8wRZQL*_ru1*KwK^2C7(UkxwnU2M0a$6Qv~`&WnZR+ThHl zuH)RPXc<;G6A71wr&!38YuG7AzhDXd);B)h6G|wF-Bt(9y1-jsdD}0D<g~(4Eih+G zNM*4woLGcGCT1M`I^l(dkVr_tOfZ>nl)_F|FRgi6#IjT2a?PS9mJxsvq*y{_o26j( zM*Lod`kPu?9JbqKS+>|pcuVQLJ^O3Rw9kUUFpP#fB>n~%R5+J2ZVWX4v=ExiPnKW> z$xGOTM9)|WrNMH|>CUQJeyN2OGWTIrW=p0yvAwF03S+gHP_ml|u6==0*esw7nS|Gm z5JVo1`%w`2L=#rH2;$eH^B5QX@wgwx!7##TjKL^83F2TB((V-f@Dgu=@WcnF{HRy_ zy3n-?k}B$Kd0Gca?jl~d;9m!kQANEs1y4jK5;7?B1<N^d^_go)zEE&I7pCsBA(8cj zJgG1fb77fX9p28zM%U^oy0-<(%vIy)X>Tv-bbAN;hhS-{>0m$W?YqvS``=-81KrN< zp6fi``t}9hDEc_&EPbnJWRw(1Eau$9S1{LUKKz0B2wmEBJ00rUE^5RDd0b(lr3qxF zJpVaW*oN!8e0Ez9YbH&`_3=z4SDtShKE3R(^!Y1MK5@Fv>0SIp>^krMD`w(4A0GTd MbF#y>+coa@ANsBr5dZ)H diff --git a/Test/trans2,ffb b/Test/trans2,ffb deleted file mode 100644 index 1d6b34baa816ab3e8cf3343e1320641877d31784..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 717 zcmYjP%Z}496wLxQh|G#LI*O=Nq)cBLkY<2I=(G?~rKssp%?i1RlUhpcV7p|png8HV z_yoR!e?SUL1UIDv^&*z<<K&!kuj@G724hv$TI3sx;raP<1c}m;g4=Ruxi*;D)ODQu z4SgmJW+LIz@Dw|lat*uT2uhaFb;$VmKwUyfjCuof+XC;9@}9mRkZFTj?XYDvq_Wr< zPAI}469osqNqA`?BoZP}2qqJbO4!Z*PY0YHp`13jKA@<zWz@i^rL3W{<5DntNB*oq zdp6dV7yW)!RXw&R-cvg77k_1${wy3%qIhyj<nJ2823NA+#z6B=JE2MZx&|wWUc%Ny zx?mNQ2Fo?4oK-FTN((Dw?!&0eR!nn3d($8l#%i%9XOA5`=mNQLTtFT&2``8d#vWb= zaTxmq6E#?c%eV8ZC04;=5k$*y5@Wu=cphDb%WxjiYl<Mc#=9`O^uftLnian(b*qA? ziq>16wnmb=n71SNH$h}n(Y{T|6OoC81j>BJa*kYm=30_2lw5CxY3FQ+WV<0x8WdtH zEVKLI|NS_cTDwIL?zzsRlkc#)gW+Iw<~oll(#5wg@K!|Z<ASp^u1zR2<@wL>6}IC# fBdU3M@&mWF<KI%N>r5%~{^8FH{KD|n!2SIPmL%ti diff --git a/s/W08_oldway b/s/W08_oldway deleted file mode 100644 index 9422b44..0000000 --- a/s/W08_oldway +++ /dev/null @@ -1,2562 +0,0 @@ -; Copyright 1996 Acorn Computers Ltd -; -; Licensed under the Apache License, Version 2.0 (the "License"); -; you may not use this file except in compliance with the License. -; You may obtain a copy of the License at -; -; http://www.apache.org/licenses/LICENSE-2.0 -; -; Unless required by applicable law or agreed to in writing, software -; distributed under the License is distributed on an "AS IS" BASIS, -; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -; See the License for the specific language governing permissions and -; limitations under the License. -; -; > s.W08_oldway - -;old way of doing things (Wimp does task memory management) -; -;only used if UseAMBControl is false -; - -;;---------------------------------------------------------------------------- -;; Switcher routines -;;---------------------------------------------------------------------------- - -; THIS FILE APPLIES TO WIMP 2.65 ONWARDS - -; Wimp_SlotSize -; Wimp_ClaimFreeMemory -; Wimp_TransferBlock -; -; findpages look for application memory & set up free pool -; testapplication see if the application space is in use -; restorepages put the rest of the pages back after the current slot -; allocateslot transfer pages from free pool to a slot array -; deallocateslot transfer pages from a slot array to free pool -; mapslotin map pages in a slot into application space -; mapslotout map pages in a slot out of the way -; -; initdynamic intercept SWI table entry -; resetdynamic unintercept SWI table entry -; My_ChangeDynamic stack the applications to fill up application space -; servicememory accept/refuse to allow memory to be moved -; servicememorymoved unstack the applications and recover! -;----------------------------------------------------------------------------- - -; Data structures: -; task table -> task block (or task_unused if task dead) -; task block -> slot block for task -; freepool -> slot block for free pool (with room for all pages) -; slot block = { page, addr, protection }* -1 -1 -; (suitable for OS_ReadMemMapEntries and OS_FindMemMapEntries) -; freepoolbase, orig_applicationspacesize delimit the free pool - -;----------------------------------------------------------------------------- - - - [ :LNOT: UseAMBControl - - -; Set/Read current Wimp slot size -; Entry: R0 = new 'current' slot size in bytes (<0 ==> no change) -; R1 = new 'next' slot size in bytes (<0 ==> no change) -; Exit: R0 = actual 'current' slot size -; R1 = actual 'next' slot size -; R2 = total amount of free memory 'owned' by the Wimp -; if R2 < R1, the next slot will not be allocated in full -; when no tasks are running, R2 will be 0 -; if R0>=0 on entry, pages may be remapped and MemoryLimit changed - - -SWIWimp_SlotSize ROUT - MyEntry "SlotSize" -; - MOV R4,R0 ; R4 = new current slot size -; - MOV R2,R1 ; R2 = proposed slot size - SWI XOS_ReadMemMapInfo - CMP R2,#0 ; if -ve, just read current value - LDRLT R3,slotsize - BLT %FT01 - ADD R2,R2,R0 ; R2 = (R2+size-1) DIV size * size - SUB R2,R2,#1 - DivRem R3,R2,R0, R14 -01 - STR R3,slotsize ; [slotsize] = no of pages - LDR R2,orig_applicationspacesize - LDR R14,freepoolbase - SUB R2,R2,R14 ; R2 = total free memory - [ Medusa - MedusaOS - BNE %FT02 - Push "R0-R1" - MOV R0,#6 - SWI XOS_ReadDynamicArea ; memory in free pool - MOV R2,R1 - Pull "R0-r1" -02 - ] - MUL R1,R3,R0 ; R1 = next slot size - - [ false ; MED-00946 - CMP R1,R2 - MOVGT R1,R2 ; can't be more memory in next than freepool - ] - - STMIA sp,{R1,R2} ; ensure calling task gets new values -; -; transfer pages between current slot and free pool -; on exit R0 = actual current slot size (whether or not memory could be moved) -; - CMP R4,#-1 ; R4 = proposed new current slot size - [ Medusa - BLE returnmemsize - MedusaOS -; under Medusa [freepool] has no meaning - BEQ %FT01 - LDR R14,freepool - CMP R14,#0 ; do nothing if R4<0 or no free pool - BLE returnmemsize -01 - | - LDRGT R14,freepool - CMPGT R14,#0 - BLE returnmemsize - ] - -; - MOV R0,#ApplicationSpaceSize - MOV R1,#0 - SWI XOS_ChangeEnvironment - MOV R3,R1 ; R3 --> end of current slot - MOV R0,#MemoryLimit - MOV R1,#0 - SWI XOS_ChangeEnvironment - TEQ R1,R3 - BNE returnmemsize ; fixed - memory cannot be paged -; - LDR R0,pagesize ; R0 = page size - SUB R14,R0,#1 - ADD R4,R4,R14 - BIC R4,R4,R14 ; round up to nearest page boundary - SUB R4,R3,R4 - SUB R4,R4,#ApplicationStart ; R4 = amount to transfer into pool -; - LDR R5,taskhandle ; obtain R5 --> task block - LDR R5,[wsptr,R5] - TST R5,#task_unused - LDRNE R5,pendingtask - TST R5,#task_unused - BNE returnmemsize ; no current task (?) -; - LDR R2,[R5,#task_slotptr] ; R2 --> slot (if any) - CMP R2,#0 - BLLE getnullslot - STRVC R2,[R5,#task_slotptr] - BVS ExitWimp ; exit if unable to claim block -; - LDR R0,pagesize ; R0 = page size - MOV R1,#0 -01 - LDR R14,[R2],#12 - CMP R14,#0 - ADDGE R1,R1,R0 ; R1 = total amount of memory in slot - BGE %BT01 - SUB R2,R2,#12 ; R2 --> terminator of slot block -; - CMP R4,#0 - BEQ returnmemsize ; don't bother with message if same size - - [ Medusa - MedusaOS - BEQ %FT02 - CMP R4,#0 ; flags have been dumped - RSBLT R4,R4,#0 - B %FT04 -02 - Push "R0-R3" -; there may be more memory in the slot than memory limit, app space suggest. - ADD R1,R1,#ApplicationStart - MOV R0,#0 - Push "R1" - SWI XOS_ChangeEnvironment - Pull "R1" - MOV R0,#14 - SWI XOS_ChangeEnvironment - -; if running under Medusa then the CAO needs to be moved to the module area, otherwise -; the CDA call will fail. - MOV R0,#15 - MOV R1,#&08000000 - SWI XOS_ChangeEnvironment - BVS %FT03 ; can't change cao, try and shift memory anyway. - MOV R2,R1 - MOV R0,#6 ; freepool - MOV R1,R4 ; number of bytes to alter free pool by - SWI XOS_ChangeDynamicArea - Push "R1" - MOV R1,R2 - MOV R0,#15 - SWI XOS_ChangeEnvironment ; put cao back where it was. - Pull "R1" - CMP R1,#0 - Pull "R0-R3",EQ - BEQ returnmemsize ; no change - CMP R4,#0 ; sets conditionals for below - MOV R4,R1 - Pull "R0-R3" - B %FT04 -03 - MOV R0,#6 ; freepool - MOV R1,R4 ; number of bytes to alter free pool by - SWI OS_ChangeDynamicArea - CMP R1,#0 - Pull "R0-R3",EQ - BEQ returnmemsize ; no change - CMP R4,#0 ; sets conditionals for below - MOV R4,R1 - Pull "R0-R3" -04 - | - RSBLT R4,R4,#0 -; R4 now positive, flags reflect actual change - ] - BLT growapp -; -; shrink application space by R4 bytes (already a whole number of pages) -; -shrinkapp - CMP R4,R1 ; always move as much as possible - MOVGT R4,R1 -; - MOV R3,R2 ; R3 --> terminator -; - CMP R4,#0 -01 - SUBGT R2,R2,#12 - SUBGT R1,R1,R0 ; used later for OS_ChangeEnvironment - SUBGTS R4,R4,R0 - BGT %BT01 -; - [ Medusa - MedusaOS - BLNE maptofreepool ; R2 --> last part of slot - ] - - MOV R14,#-1 - STR R14,[R2] ; terminator -; - LDR R14,[R5,#task_slotptr] - CMP R2,R14 - BGE %FT01 -; - MOV R2,R14 ; if null block, delete it! - MOV R0,#ModHandReason_Free - BL XROS_Module - MOV R2,#nullptr - B %FT02 -01 - SUB R3,R2,R3 ; R3 = amount to change block by (-ve) - MOV R0,#ModHandReason_ExtendBlock - LDR R2,[R5,#task_slotptr] - BL XROS_Module -02 - STRVC R2,[R5,#task_slotptr] - [ Medusa - MedusaOS - BNE setcurslot - MOV R5,R1 ; used in the switcher message - BEQ sendmemmessage - -; SafeChangeDynamic -; if running under Medusa then the CAO needs to be moved high, otherwise -; the CDA call will fail. -; Entry : R4 number of bytes to move (signed), R0-R3 possibly corrupt -; Exit : R1 number of bytes actually moved (unsigned) -SafeChangeDynamic - Push "lr" - MOV R0,#15 - MOV R1,#&08000000 - SWI XOS_ChangeEnvironment - BVS %FT03 ; can't change cao, try and shift memory anyway. - MOV R2,R1 - MOV R0,#6 ; freepool - MOV R1,R4 ; number of bytes to alter free pool by - SWI XOS_ChangeDynamicArea - Push "R1" - MOV R1,R2 - MOV R0,#15 - SWI XOS_ChangeEnvironment ; put cao back where it was. - Pull "R1,PC" -03 - MOV R0,#6 ; freepool - MOV R1,R4 ; number of bytes to alter free pool by - SWI OS_ChangeDynamicArea -04 - Pull "PC" -; -; grow an app under the medusa kernel -; R4 is byte change, R2 is slot terminator, R0 page size, R5 task pointer, R1 is slot size -; - - -medusagrowapp - TEQ R4,#0 - BEQ returnmemsize ; this takes account of the case where the - ; slot cannot grow due to memory constraints. - Push "R0,R1,R4" - MOV R3,#0 -01 - ADD R3,R3,#12 - SUBS R4,R4,R0 - BNE %BT01 -; need to extend slot ptr by R3 - LDR R2,[R5,#task_slotptr] - MOV R0,#ModHandReason_ExtendBlock - BL XROS_Module - BVC %FT03 -; oh, dear we need to shrink the app by one page size and try again - MOV R0,#6 - LDR R1,[SP] - Push "R0-R4" - MOV R4,R1 - BL SafeChangeDynamic - Pull "R0-R4" -; SWI XOS_ChangeDynamicArea - -; alert alert, something quite awful has happened -; you know, i used to wonder what sort of bozzos put comments in like these, now -; i understand... - ADDVS SP,SP,#12 ; skip rubbish - BVS ExitWimp - Pull "R0,R1,R4" - SUB R4,R4,R0 - B medusagrowapp ; try again with smaller slot. - -03 - STR R2,[R5,#task_slotptr] - Pull "R0,R1,R4" - MOV R3,#ApplicationStart - Push "R4" - MOV R4,R1 - LDR R0,pagesize - MOV R1,#0 -; first R1 bytes (original slot) probably have the correct page number - CMP R4,#0 - BEQ %FT06 -05 - ADD R2,R2,#4 - STR R3,[R2],#8 ; address - ADD R3,R3,R0 - SUBS R4,R4,R0 - BNE %BT05 -06 -; next R4 bytes are new and so we have no idea what page number they are, set them to zero. - Pull "R4" - CMP R4,#0 - BEQ %FT09 -07 - Push "R2" -08 - STR R1,[R2],#4 ; page no. - STR R3,[R2],#4 ; address - STR R1,[R2],#4 ; protection - ADD R3,R3,R0 - SUBS R4,R4,R0 - BNE %BT08 - MOV R0,#-1 - STR R0,[R2] - - Pull "R0" - SWI XOS_FindMemMapEntries ; only find entries for new pages - -09 - - SUB R5,R3,#ApplicationStart ; used in message to switcher - B sendmemmessage - - ] ; Medusa - - -; -; grow application space by R4 bytes (already a whole number of pages) -; -growapp - [ Medusa - MedusaOS - BEQ medusagrowapp ; R4 already contains max moveable - ] ;Medusa - LDR R3,orig_applicationspacesize - LDR R14,freepoolbase - SUB R3,R3,R14 ; R3 = amount of memory available - CMP R4,R3 -; - MOVGT R4,R3 ; max amount moveable -; -; - Push "R1,R2,R4" -; - MOV R3,#0 -01 - SUBS R4,R4,R0 - ADDGE R3,R3,#12 - BGT %BT01 -; - LDR R2,[R5,#task_slotptr] - MOV R1,R2 - MOV R0,#ModHandReason_ExtendBlock - BL XROS_Module - STRVC R2,[R5,#task_slotptr] - SUBVC R14,R2,R1 ; amount block has moved by - MOVVC R6,R2 ; R6 --> new block -; - Pull "R1,R2,R4" - BVS ExitWimp ; nothing updated yet, so just exit -; - ADD R2,R2,R14 ; R2 --> end of block (moved!) -; - LDR R3,orig_applicationspacesize ; DO IT AGAIN!!! - LDR R14,freepoolbase ; - may have changed !!! - SUB R3,R3,R14 ; R3 = amount of memory available - CMP R4,R3 - MOVGT R4,R3 ; max amount moveable -; - LDR R0,pagesize - DivRem R5,R4,R0, R14 ; R5 = number of pages to move - MOV R3,R1 ; R3 = size of slot so far - BL mapfromfreepool ; on exit R1 = memory transferred -; - MOV R0,R6 ; R0 --> new slot block - BL mapin ; map in whole slot (corrupts R2) -; - ADD R1,R1,R3 ; R1 = total memory in new slot - -setcurslot - MOV R5,R1 ; R5 = current slot size (for later) - ADD R1,R1,#ApplicationStart - BL setmemsize ; R1 = end of memory for slot -; -; send round a broadcast, to be picked up by the Switcher -; NB this can only be done if the task is alive (otherwise it has no handle) -; -sendmemmessage - LDR R14,taskhandle - LDR R14,[wsptr,R14] - TST R14,#task_unused -; - ASSERT ms_data=20 - MOVEQ R0,#28 ; 28 byte block - MOVEQ R3,#0 ; your ref - LDREQ R4,=Message_SlotSize - LDREQ R6,[sp,#0*4] ; next slot size (already on stack) - Push "R0-R6" - MOVEQ R0,#User_Message ; don't bother getting reply - MOVEQ R1,sp - MOVEQ R2,#0 ; broadcast - BLEQ int_sendmessage ; fills in sender, myref - ADD sp,sp,#28 - -returnmemsize - MOV R0,#MemoryLimit ; may not actually be full slot size - MOV R1,#0 ; (eg. if Twin is running above) - SWI XOS_ChangeEnvironment - SUBVC R0,R1,#ApplicationStart ; R0 = actual slot size - B ExitWimp - LTORG - -getnullslot - Push "LR" - MOV R3,#4 ; we need 2 terminators - BL claimblock - MOVVC R14,#-1 ; terminator - STRVC R14,[R2] - Pull "PC" - -; -; Claim free memory pages -; Entry: R0 = 0 for release, 1 for claim -; R1 = length required -; Exit: R1 = length available -; R2 = start address -; R2 = 0 means memory could not be claimed (no need to release) -; Can't: if not enough free memory -; if claimed already -; if in the middle of a remapping operation -; - -mem_remapped * 2_0001 -mem_claimed * 2_0010 - -wimparea - DCB "Wimp" - [ :LNOT: FreePoolWCF -wimpareastring - DCB "WDA",0 ; SMC: add WDA:Wimp Dynamic Area to Wimp.Messages file. - ] - ALIGN - -SWIWimp_ClaimFreeMemory ROUT - MyEntry "ClaimFreeMemory" -; - [ Medusa - MedusaOS - BNE %FT02 - [ :LNOT: FreePoolWCF - MOV R5,R1 - LDR R1,wimparea - ] - CMP R0,#0 - BNE %FT01 -; free - [ FreePoolWCF - MOV R0,#0 - ADRL R14,freepoolinuse - STRB R0,[R14] - B ExitWimp - | - MOV R0,#1 - STRB R0,memoryOK - MOV R0,R1 - MOV R1,#-&8000000 ; shrink area - SWI XOS_ChangeDynamicArea - MOV R0,#0 - STRB R0,memoryOK - CLRV - B ExitWimp - ] -01 -; claim - [ FreePoolWCF - ADRL R4,freepoolinuse - LDRB R0,[R4] - TEQ R0,#0 - | - MOV R0,R1 - SWI XOS_ReadDynamicArea - TEQ R1,#0 - ] - MOVNE R0,#0 - STRNE R0,[SP] - STRNE R0,[SP,#4] - BNE ExitWimp ; already 'claimed' - [ FreePoolWCF - MOV R5,R1 ; preserve the amount asked for - MOV R0,#6 - SWI XOS_ReadDynamicArea - MOVVS R0,#0 ; Shouldn't happen - MOVVS R1,#0 - - CMP R5,R1 ; set HI if R5 <0 or R5>R1 - MOVHI R0,#0 - MOVLS R2,#1 - STRLSB R2,[R4] ; mark free pool in use - - STR R0,[SP,#4] ; return values - STR R1,[SP] - B ExitWimp - - [ false - - CMP R5,#0 ; asked for -ve amount - CMPGE R1,R5 ; not enough ? - MOVLT R3,R1 - MOVLT R4,#0 ; no address as claim 'failed' - BLT %FT01 -05 - CLRV - MOV R1,#1 - STRB R1,[R4] ; mark free pool as in use - MOV R0,#6 - SWI XOS_ReadDynamicArea - MOVVS R4,#0 ; shouldn't happen - MOVVC R3,R1 - MOVVC R4,R0 ; start address of free pool - B %FT01 - ] - - | - MOV R1,#1 - STRB R1,memoryOK - MOV R1,R5 - CMP R1,#0 - SETV LT - LDRVC R0,wimparea - SWIVC XOS_ChangeDynamicArea - MOV R4,#0 - STRB R4,memoryOK - MOVVS R0,#6 ; freepool, just size!!! - LDRVC R0,wimparea ; our area - MOV R2,#0 - CLRV - SWI XOS_ReadDynamicArea - TEQ R2,#0 - MOV R3,R1 - MOVNE R4,R0 ; no start if claim failed - CLRV - - B %FT01 - ] -02 - ] - - TEQ R0,#0 - LDRB R5,memoryOK ; always load R5 - BICEQ R5,R5,#mem_claimed - STREQB R5,memoryOK - BEQ ExitWimp -; - MOV R3,#0 ; R3=0 no memory available - MOV R4,#0 ; R4=0 can't claim -; - TEQ R5,#0 - BNE %FT01 ; can't claim (nasty business going on) -; - LDR R14,freepool - CMP R14,#0 - BLE %FT01 ; can't claim (no free pool) -; - LDR R3,orig_applicationspacesize - LDR R4,freepoolbase - SUB R3,R3,R4 ; R3 = length available -; - ADD R14,R3,#1 - CMP R1,R14 ; C=1 ==> too long! - MOVCS R4,#0 ; address = 0 if carry set - ORRCC R5,R5,#mem_claimed - STRCCB R5,memoryOK -01 - STMIA sp,{R3,R4} ; R1,R2 on return = length,addr - B ExitWimp - -wimp_area_handler - TST R0,#1 - MOVNES PC,lr ; not insterested in postshrink/grow - SETV -; must be a pre shrink/grow, allow this if it was caused by the claim above - Push R0 - LDRB R0,memoryOK - TEQ R0,#0 - Pull R0 - CLRV NE - MOVVC PC,lr - CMP R0,#2 - MOVEQ R3,#0 - MOV R0,#0 - SETV - MOV PC,lr -; -; Transfer memory from one application to another -; Entry: R0 = task handle of source -; R1 --> source buffer -; R2 = task handle of destination -; R3 --> destination buffer -; R4 = buffer length -; buffer addresses and length are byte-aligned (not nec. word-aligned) -; the buffer addresses are validated to ensure they are in range -; Errors: "Invalid task handle" -; "Wimp transfer out of range" -; - -SWIWimp_TransferBlock ROUT - MyEntry "TransferBlock" -; - Push "R0-R4" - MOV R0,#MemoryLimit ; force this field to be up-to-date - MOV R1,#0 - SWI XOS_ChangeEnvironment - LDR R14,taskhandle - LDR R14,[wsptr,R14] - CMP R14,#0 - STRGT R1,[R14,#task_environment+12*MemoryLimit] - [ Medusa - MedusaOS - LDMEQIA SP,{R0-R4} ; leave them on the stack - LDMNEIA SP!,{R0-R4} - | - Pull "R0-R4" - ] -; - BL validtask_alive - MOVVC R7,R6 ; R7 --> dest task block - MOVVC R2,R0 - [ Medusa - Push "R5" - ] - BLVC validtask_alive ; R6 --> source task block - BVC %FT05 -medusa_exit_trb - [ Medusa - ADD SP,SP,#4 ; the push above was non-conditional - ] -medusa_exit_trb2 - [ Medusa - MedusaOS - ADDEQ SP,SP,#20 - SETV ; want an error - ] - B ExitWimp -; -05 - SUBS R10,R4,#0 ; length must be >= 0 - BNE %FT07 ; ignore zero length now! - [ Medusa - ADD SP,SP,#4 - MedusaOS - ADDEQ SP,SP,#20 - ; no error so don't set V - ] - B ExitWimp - -07 - SUBGES R8,R1,#ApplicationStart ; buffer start >= &8000 - SUBGES R9,R3,#ApplicationStart ; R8,R9 = offsets into domain - BLT err_badtransfer -; - [ Medusa :LAND: sixteenmeg - MedusaOS - MOVEQ R11,#16*1024*1024 - LDRNE R11,orig_applicationspacesize - | - LDR R11,orig_applicationspacesize - ] -; - CMP R1,R11 ; not in application space? - ADDGE R8,R8,#ApplicationStart ; make absolute again - BGE %FT11 - LDR R14,[R6,#task_environment+12*MemoryLimit] - ADD R0,R1,R4 - CMP R0,R14 - BGT err_badtransfer -11 - CMP R3,R11 ; not in application space? - ADDGE R9,R9,#ApplicationStart ; make absolute again - BGE %FT01 - LDR R14,[R7,#task_environment+12*MemoryLimit] - ADD R2,R3,R4 - CMP R2,R14 - BGT err_badtransfer -01 -; -; map all slots into memory space, copy the data, then unmap them -; NOTE: make sure the slots are mapped out before exitting!!! -; - MOV R0,#ApplicationSpaceSize - MOV R1,#0 - SWI XOS_ChangeEnvironment ; R1 --> end of current slot -; - - [ Medusa - MedusaOS -; orignal calling values are still on the stack - BNE %FT03 - CMP R6,R7 ; are the tasks the same? - BEQ %FT02 - CMP R10,#7*1024*1024 - BLT %FT02 -; ok we're doing a BIG transfer, so split it up - MOV R10,#7*1024*1024 ; 7 meg, leave a bit of breathing space - ADD R0,SP,#4 - LDMIA R0,{R0-R4} - ADD R1,R1,#7*1024*1024 ; we'll carry on but only do 7 megs worth - ADD R3,R3,#7*1024*1024 ; then recall the routine, but starting 7 meg - SUB R4,R4,#7*1024*1024 ; further on. - SWI XWimp_TransferBlock -; this will cycle through as many times as required -02 -; now if the ammount to copy+ R1 > app space, or 2* copy if neither task is the current task -; then part or all of current task must be paged out. - MOV R0,R1 - LDR R1,taskhandle - LDR R2,pagesize - LDR R4,[SP] ; task handle - CMP R1,R4 - BEQ onetask_currentr4 ; one of the tasks is the current task - CMP R1,R5 - BEQ onetask_currentr5 - CMP R8,R11 - ADDLT R0,R0,R10 - ADDLT R0,R0,R2 ; just in case copy is over a page - CMP R9,R11 - ADDLT R0,R0,R10 - ADDLT R0,R0,R10 - [ sixteenmeg - CMP R0,#16*1024*1024 - | - MedusaOS - MOVNE R14,#16*1024*1024 - LDREQ R14,orig_applicationspacesize - CMP R0,R14 - ] - BLT %FT03 - -; since the copy must take place in application space (on ARM 3 its the only place! and on -; ARM 600 a level 2 page table would be required- 24K) we have to make some room by paging -; out part of the current task. For simplicity, we page the whole of the task out on the -; assumption that it is only rare circumstances that will bring us here. It's also -; potentially dangerous paging out bits of the current task, eg. if an exception occurs -; the Environment may point to somewhere that we've paged a different bit of memory to. -; Another complication with selective paging of the current task is that the bit we choose -; to page out may be required in the copy, obviously we need to do more work to make sure -; we don't fall over in these situations. -makespacefromct - Push "R1" ; save task handle - BL mapslotout ; map out CT - MOV R0,#0 - STR R0,taskhandle - ADD R0,SP,#4 - LDMIA R0,{R0-R4} - SWI XWimp_TransferBlock ; do it again, only this time there is no current task - Pull "R1" - STR R1,taskhandle ; return to how it all was - BL mapslotin - ADD SP,SP,#24 - B ExitWimp - -; this is potentially dodgy as the bit we want to map out of the way may actually be in -; the transfer range - -onetask_currentr5 - CMP R5,R4 - BEQ %FT03 - CMP R8,R11 ; we only need to woryy about space if the copy - ; is actually in the tasks app space - BLT onetaskcurrent - B %FT03 - -onetask_currentr4 - CMP R5,R4 - BEQ %FT03 - CMP R9,R11 - -onetaskcurrent - ADDLT R0,R0,R10 - ADDLT R0,R0,R2 ; just in case copy is over a page - [ sixteenmeg - CMP R0,#16*1024*1024 - | - MedusaOS - MOVNE R14,#16*1024*1024 - LDREQ R14,orig_applicationspacesize - CMP R0,R14 - ] - - BLT %FT03 - B makespacefromct - - -03 - MOV R0,#ApplicationSpaceSize - MOV R1,#0 - SWI XOS_ChangeEnvironment ; R1 --> end of current slot - - Pull "R4" - MedusaOS - ADDEQ SP,SP,#20 ; will always be original values on stack - MOV R2,R1 - LDR R3,taskhandle - CMP R8,R11 ; do we need it paged in ? - BGE %FT04 - CMP R3,R5 - ADDEQ R8,R8,#ApplicationStart - BEQ %FT04 - LDR R0,[R6,#task_slotptr] - MOV R1,R8 - MOV R8,R2 - BL mapenoughslot - ADD R8,R8,R0 -04 - CMP R9,R11 - BGE %FT06 - CMP R3,R4 - ADDEQ R9,R9,#ApplicationStart - BEQ %FT06 - LDR R0,[R7,#task_slotptr] - MOV R1,R9 - MOV R9,R2 - BL mapenoughslot ; page in only whats required for the copy - ADD R9,R9,R0 -06 - | - BL rackupslots ; In: R1= bit; Out: trashes R0-R4 -; - CMP R8,R11 - LDRLT R14,[R6,#task_slotptr] ; must be a slot here if address valid - LDRLT R14,[R14,#4] ; get address of first page - ADDLT R8,R8,R14 ; R8 --> source buffer -; - CMP R9,R11 - LDRLT R14,[R7,#task_slotptr] ; must be a slot here if address valid - LDRLT R14,[R14,#4] ; get address of first page - ADDLT R9,R9,R14 ; R9 --> destination buffer - ] -; -; copy data in the correct order, in case source task = destination -; - TST R8,#3 - TSTEQ R9,#3 - TSTEQ R10,#3 - BEQ wordcopy ; word aligned, yipee!!! - - CMP R8,R9 - BGE %FT02 - ADD R8,R8,R10 - ADD R9,R9,R10 -01 - LDRB R14,[R8,#-1]! ; descending copy if source < dest - STRB R14,[R9,#-1]! - SUBS R10,R10,#1 - BNE %BT01 - B %FT03 -02 - LDRB R14,[R8],#1 ; ascending copy if source >= dest - STRB R14,[R9],#1 - SUBS R10,R10,#1 - BNE %BT02 -03 - [ Medusa - LDR R2,taskhandle ; page out the bits we paged in, unless CT - CMP R2,R5 - BEQ %FT05 - LDR R0,[R6,#task_slotptr] - CMP R0,#-1 - BLNE mapout -05 - CMP R2,R4 - BEQ %FT10 - LDR R0,[R7,#task_slotptr] - CMP R0,#-1 - BLNE mapout -10 - | - BL unrackslots - ] - B ExitWimp - -wordcopy - CMP R8,R9 - BGE %FT02 - ADD R8,R8,R10 - ADD R9,R9,R10 -01 - LDR R14,[R8,#-4]! ; descending copy if source < dest - STR R14,[R9,#-4]! - SUBS R10,R10,#4 - BNE %BT01 - B %BT03 -02 - LDR R14,[R8],#4 ; ascending copy if source >= dest - STR R14,[R9],#4 - SUBS R10,R10,#4 - BNE %BT02 - B %BT03 - - [ Medusa -mapenoughslot -; maps only the pages that are required for the copy to address R2, slot R0, length R10 -; domain offset R1 - Push "R0-R1,R3-R5,lr" - LDR R3,pagesize - SUB R3,R3,#1 - BIC R1,R1,R3 - ADD R3,R3,#1 -; find start of block -01 - CMP R1,#0 - BEQ %FT05 -02 - LDR R14,[R0],#12 - CMP R14,#0 - BLT err_badtransfer2 - SUBS R1,R1,R3 - BNE %BT02 -; R0 now points to start of slot that is involved in the copy -05 - MOV R4,R0 - LDR R1,[SP,#4] ; domain offset again - SUB R5,R3,#1 - AND R1,R1,R5 ; offset from page - STR R1,[SP] ; R0 on return - ADD R1,R1,R10 - ADD R1,R1,R5 - BIC R1,R1,R5 ; no. of pages required x pagesize -09 - LDR R14,[R4],#12 - CMP R14,#0 - BLT err_badtransfer2 - SUBS R1,R1,R3 - BNE %BT09 - LDR R5,[R4] ; temporarily shorten the slot block - MOV R14,#-1 ; this way we don't need to make a new block - STR R14,[R4] ; which may require memory we don't have. - BL mapslot - STR R5,[R4] ; put it back as it was - Pull "R0-R1,R3-R5,PC" - -err_badtransfer2 - MyXError WimpBadSlot - B medusa_exit_trb2 ; task handle no longer on stack - MakeErrorBlock WimpBadSlot - - ] - -err_badtransfer - MyXError WimpBadTransfer - B medusa_exit_trb - MakeErrorBlock WimpBadTransfer - - -; -; free pool set up on entry (unless application memory is already in use) -; order of pages in the free pool is unimportant -; -; Read in table of all OS pages -; work out which ones are in application space -; put them into free pool list -; -; Data structures: -; slot table: list of 3-word entries (as passed to OS_ReadMemMapEntries) -; free pool: list of 3-word entries (enough room for all pages in machine) -; pages are used as in a LIFO stack, with lower addresses last -; -; Exit: if application space used, [freepool] = -1 -; else [freepool] --> free pool block -; - DCB "FindPages" - -findpages ROUT - Push "R1-R11,LR" -; - MOV R14,#nullptr - STR R14,freepool ; lock application memory - LDR R14,taskhandle - STR R14,inithandle ; this task slot "owns" the memory -; - SWI XOS_ReadMemMapInfo ; R0 = page size, R1 = no of pages - Pull "R1-R11,PC",VS - STR R0,pagesize - STR R1,npages ; used later -; -; under the Medusa kernel, try and shrink app space by as much as possible - - [ Medusa - MedusaOS - BNE %FT01 - MOV R0,#6 ; free pool - MOV R1,#&10000000 ; try and shrink app space - SWI XOS_ChangeDynamicArea -; this sets up memory limit/ app space size as well - [ :LNOT: sixteenmeg - MOV R0,#-1 - SWI XOS_ReadDynamicArea - ADDVC R5,R0,R2 - STRVC R5,orig_applicationspacesize - [ :LNOT: FreePoolWCF -; create dynamic area for Wimp_ClaimFreeMemory - ADRL R0,wimpareastring ; Look up name for Wimp dynamic area. - ADR R2,errorbuffer ; Use safe place for temporary string (copied by OS_DynamicArea). - MOV R3,#256 - BL LookupToken1 - MOVVC R8,R2 - ADRVSL R8,wimpareastring ; If look up fails then create something anyway. - - MOV R0,#0 - LDR R1,wimparea - MOV R2,#0 - MOV R3,#-1 - MOV R4,#128 ; not dragable - MOV R5,#-1 - ADRL R6,wimp_area_handler - MOV R7,R12 - SWI XOS_DynamicArea -; ignore errors - ] - ] - - CLRV - - Pull "R1-R11,PC" -01 - ] -; -; if application space in use, we can't construct a free pool -; but we must still read orig_memorylimit and orig_applicationspacesize -; - - MOV R0,#ApplicationSpaceSize - MOV R1,#0 - SWI XOS_ChangeEnvironment - MOVVC R3,R1 ; R3 --> real end of memory - STRVC R3,orig_applicationspacesize -; - MOVVC R0,#MemoryLimit - MOVVC R1,#0 - SWIVC XOS_ChangeEnvironment - STRVC R1,orig_memorylimit -; -; - TEQ R1,R3 ; preserves V - Pull "R1-R11,PC",NE ; these must be equal on entry -; - BLVC testapplication ; CC ==> space is in use - Pull "R1-R11,PC",VS - Pull "R1-R11,PC",CC ; we'll get back to this later if used - -; -; allocate a "free pool" block, with 12 bytes per page -; - LDR R3,npages - MOV R3,R3,LSL #2 ; multiply by 12 - ADD R3,R3,R3,LSL #1 - ADD R3,R3,#4 ; leave room for terminator - BL claimblock - STRVC R2,freepool -; -; construct free pool array by calling OS_FindMemMapEntries -; - MOVVC R1,#ApplicationStart - STRVC R1,freepoolbase ; base address of free pages - - LDRVC R1,orig_applicationspacesize - BLVC findfreepool - MOVVC R1,#2 ; protect against USR mode access - BLVC setslotaccess -; -; I don't know what this is doing here! -; - MOVVC R14,#0 - STRVCB R14,memoryOK ; it's had it by now anyway! -; -; now protect all these pages, keeping them just below orig_memlimit -; and set MemoryLimit small -; - MOVVC R1,#ApplicationStart - BLVC setmemsize ; sets ACTUAL handlers (current task) -; - LDRVC R0,freepool - SWIVC XOS_SetMemMapEntries - - Pull "R1-R11,PC" - - -; In R1 = application space size (one after end of free pool) -; R2 -> free pool page table -; [freepoolbase] = start of free pool -; Out free pool table filled in (lowest address last in list) -; [freepoolbase] updated if less than application space size -; [freepoolpages] set up - - DCB "FindFreePool" - -findfreepool ROUT - Push "R1-R5,LR" - - - LDR R3,freepoolbase - CMP R3,R1 - MOVGT R3,R1 - STRGT R3,freepoolbase - - MOV R4,#0 ; R4 = no of pages so far - MOV R0,#0 ; R0 = probable page no (don't know) - LDR R5,pagesize -01 SUB R1,R1,R5 ; R1 = address of next page - CMP R1,R3 - STMGEIA R2!,{R0,R1,R14} ; page no, address, access (undefined) - ADDGE R4,R4,#1 - BGE %BT01 - STR R4,freepoolpages - MOV R14,#-1 - STR R14,[R2] ; terminator - - LDR R0,[sp,#1*4] - SWI XOS_FindMemMapEntries ; find relevent pages - - Pull "R1-R5,PC" - -; In R1 = page protection level required -; R2 -> slot block -; Out page protection level set, array updated -; R0 corrupted - -setslotaccess ROUT - Push "R2,LR" - -01 LDR R14,[R2],#12 ; unless terminator, - CMP R14,#0 - STRGE R1,[R2,#-4] ; fill in access field - BGE %BT01 - - LDR R0,[sp] - SWI XOS_SetMemMapEntries - - Pull "R2,PC" - -; -; testapplication -; works out whether application space is in use -; Entry: [orig_memorylimit] = upper bound of memory used by application -; if &8000, then application space is not in use -; Exit: CC ==> memory in use -; -; Method: -; 1. If CAO pointer < MemoryLimit, then application memory is in use. -; 2. Issue Service_Memory: R0 = large - if anyone objects, memory is in use -; - -ApplicationStart * &8000 -IsAnybodyThere * -64*&100000 ; large negative number - ; NB: this number is checked for by ShellCLI -testapplication ROUT - Push "R1-R3,LR" -; - [ Medusa :LAND: sixteenmeg - MedusaOS - LDRNE R1,orig_applicationspacesize ; watch out for Twin etc! - MOVEQ R1,#16*1024*1024 ; boo hiss - | - LDR R1,orig_applicationspacesize ; watch out for Twin etc! - ] - BL readCAOpointer ; use OS_ChangeEnvironment - CMP R2,R1 ; below memorylimit? - Pull "R1-R3,PC",CC -; - MOV R1,#Service_Memory - MOV R0,#IsAnybodyThere ; 64 megabytes should be enough! - SWI XOS_ServiceCall - CMPVC R1,#1 ; CC ==> service was claimed -; - Pull "R1-R3,PC" - - -; Out R2 = CAO pointer (read using OS_ChangeEnvironment) - -readCAOpointer ROUT - Push "R0-R3,LR" - - MOV R0,#CAOPointer - MOV R1,#0 - SWI XOS_ChangeEnvironment - STR R1,[sp,#2*4] - - Pull "R0-R3,PC",,^ ; assume no errors - -; -; restorepages -; put back the free pool when the last task dies - do not disturb current stuff -; Entry: all tasks dead -; use OS_ChangeEnvironment to set/read end of application memory -; free pool block indicates remaining spare pages -; Exit: all pages replaced in application space -; memorylimit increased if appropriate -; free pool block released -; - -restorepages ROUT - Push "R1-R7,LR" -; - BL deletependingtask ; not interested in this task - - [ Medusa - MedusaOS - MOVEQ R4,#-&10000000 ; shrink freepool as much as we can - BLEQ SafeChangeDynamic - Pull "R1-R7,PC",EQ - ] -; ; just add to the pages present - LDR R6,freepool - CMP R6,#0 - BLE go_restorememlimit ; NB: orig_ values MUST BE CORRECT! -; - MOV R0,#MemoryLimit - MOV R1,#0 - SWI XOS_ChangeEnvironment ; R1 = current memory limit -; -; free pool is already in the right place - just set access bits to 0 -; - LDR R2,freepool - MOV R1,#0 ; 0 => USR mode read/write access - BL setslotaccess ; R2 -> free pool still - - MOV R14,#nullptr2 ; application space NOT in use by Wimp - STR R14,freepool ; NB only applies if not used on entry - MOV R0,#ModHandReason_Free - BL XROS_Module ; ignore errors from here - -go_restorememlimit - BL restorememlimit -; - Pull "R1-R7,PC" - -restorememlimit ROUT - Push "LR" - MOV R0,#MemoryLimit - LDR R1,orig_memorylimit - SWI XOS_ChangeEnvironment - MOV R0,#ApplicationSpaceSize - LDR R1,orig_applicationspacesize - SWI XOS_ChangeEnvironment - Pull "PC",,^ ; must preserve flags - -; -; allocateslot -; take pages from the free pool, and construct a page array block -; Entry: [taskhandle] = current task -; [slotsize] = max no of pages to use in new slot -; Exit: taskhandle->task_slotptr --> block (suitable for OS_SetMemMapEntries) -; pages transferred from the free pool to the slot -; [freepoolbase] updated -; slot size = 0 if no free pool (ie. all used up) -; MemoryLimit updated to reflect the amount of memory available -; - DCB "AllocateSlot" - -allocateslot ROUT - [ Medusa - MedusaOS - BNE %FT99 -01 - Push "R0-R4,lr" - MOV R0,#14 - MOV R1,#ApplicationStart - SWI XOS_ChangeEnvironment - MOV R0,#0 - MOV R1,#ApplicationStart - SWI XOS_ChangeEnvironment - LDR R0,slotsize - LDR R3,pagesize - MUL R1,R3,R0 ; usually R0 < R3 - MOV R0,#6 - RSB R1,R1,#0 ; shrinking free pool - SWI XOS_ChangeDynamicArea - [ false - MOVVS R4,#0 - STRVS R4,slotsize - ] -; ADDVS SP,SP,#4 -; Pull "R1-R4,PC",VS sadly this may 'succeed' but return an error - CLRV - CMP R1,#0 -; SETV EQ -;hmmm no error block... -; Pull "R0-R4,PC",VS ; couldn't allocate any memory - BNE %FT01 -nomemoryinslot - [ false - MOV R0,#0 - MOV R1,#0 - SWI XOS_ChangeEnvironment - MOV R0,#14 - MOV R1,#0 - SWI XOS_ChangeEnvironment ; reset env - ] - BL setdefaulthandlers - Pull "R0-R4,PC" -nomemoryinslot2 - MOV R0,#15 - Pull R1 - SWI XOS_ChangeEnvironment ; reset env - Pull "R0-R4,PC" -01 - Push R1 - MOV R0,#15 - MOV R1,#ApplicationStart - SWI XOS_ChangeEnvironment ; lower the cao so that claiming RMA doesn't lose pages - Pull R14 - Push R1 - MOV R1,R14 - -; R1 is actual allocation - DivRem R4,R1,R3,R14 - ADD R4,R4,R4, LSL #1 ; x3 - MOV R4,R4, LSL #2 ; x4 - ADD R3,R4,#4 -02 - TEQ R3,#0 - BEQ nomemoryinslot2 - MOV R0,#ModHandReason_Claim - BL XROS_Module -; R2 is block or error - BVC %FT03 - [ false - LDR lr,pagesize - MOV R0,#6 - MOV R1,lr - - SWI XOS_ChangeDynamicArea ; grow free pool by a page - | - Push "R0-R4" - LDR R4,pagesize - BL SafeChangeDynamic - Pull "R0-R4" - ] - - SUB R3,R3,#12 - B %BT02 -03 - MOV R0,#15 - Pull R1 - Push "R2-R3" - SWI XOS_ChangeEnvironment ; reset cao - Pull "R2-R3" - - LDR lr,pagesize ; SWI will have corrupted this - ADD R4,R2,R3 ; end of block - SUB R4,R4,#4 - Push "r2" - MOV R3,#ApplicationStart - MOV R0,#0 -04 - STR R0,[R2],#4 - STR R3,[R2],#4 - STR R0,[R2],#4 ; set protection level. - ADD R3,R3,lr - CMP R2,R4 - BLT %BT04 - MOV R0,#-1 - STR R0,[R2] - Pull "R0" - SWI XOS_FindMemMapEntries - LDRVC R1,taskhandle - LDRVC R1,[wsptr,R1] - STRVC R0,[R1,#task_slotptr] - STR R0,[SP] ; just in case anything uses this - - Pull "R0-R4,PC" - -99 - ] - - Push "R1-R7,LR" -; - LDRB R14,memoryOK ; if free space in use, can't allocate - TEQ R14,#0 - MOVNE R7,#0 - LDREQ R7,freepoolpages ; number of pages in free pool -; - LDR R5,slotsize ; max no of pages - CMP R5,R7 - - MOVGT R5,R7 ; now R5 = actual no of pages to use - CMP R5,#0 - MOVLE R1,#ApplicationStart - BLE gosetmemsize ; no pages allocated -; -; allocate a heap block of the correct size -; - ADD R3,R5,R5,LSL #1 ; R3 = 3 * no of pages - MOV R3,R3,LSL #2 ; R3 = 12 * no of pages - ADD R3,R3,#4 ; leave room for terminator - BL claimblock - Pull "R1-R7,PC",VS -; -; NB: pages may have been remapped because of that call - check here! -; - LDR R7,freepoolpages ; R7 = number of free pages - CMP R5,R7 - - MOVGT R5,R7 ; now R5 = actual no of pages to use - -; -; construct block by transferring pages from the free pool -; R2 --> new block, R5 = no of pages, R6-->free pool, R7 = free pool sp -; - LDR R14,taskhandle ; must be a live task! - LDR R1,[wsptr,R14] ; R1 --> task block - STR R2,[R1,#task_slotptr] -; - BL mapfromfreepool ; R5 = number of pages to grab - ADD R1,R1,#ApplicationStart ; R1 --> end of application memory -; - MOV R0,R2 - BL mapin ; map pages in (corrupts R2) - -gosetmemsize - - LDR R14,freepool ;; Wimp 1.89o onwards - CMP R14,#nullptr ;; - LDREQ R0,taskhandle ;; if this is the "owner" slot, - LDREQ R14,inithandle ;; it can have the application memory - CMPEQ R0,R14 ;; - BLEQ restorememlimit ;; (preserves flags) - BLNE setmemsize ;; otherwise it gets none. -; - Pull "R1-R7,PC" - -; -; Entry: R2 --> slot block -; R5 = number of pages required -; Exit: R1 = amount of memory transferred -; slot block, [freepoolbase], free pool sp updated -; pages are not actually mapped in yet, and addresses are un-initialised -; - -mapfromfreepool ROUT - Push "R2-R7,LR" -; - LDR R7,freepoolpages ; R7 = number of pages in free pool - SUB R14,R7,R5 - STR R14,freepoolpages ; update [freepoolpages] - - ADD R7,R7,R7,LSL #1 - LDR R14,freepool - ADD R7,R14,R7,LSL #2 ; R7 -> terminator of free pool - - MOV R4,#0 ; R4 = page protection level (always 0) -01 SUBS R5,R5,#1 - LDRPL R0,[R7,#-12]! ; R0 = page no - STMPLIA R2!,{R0,R3,R4} ; page no, address (uninit), access - BPL %BT01 - - MOV R14,#-1 - STR R14,[R2] ; slot block terminator - STR R14,[R7] ; free pool terminator -; -; update [freepoolbase] and R1 -; - LDR R0,pagesize ; R0 = page size - LDR R5,[sp,#3*4] - MUL R1,R0,R5 ; R1 = amount of memory transferred - LDR R14,freepoolbase - ADD R14,R14,R1 ; update [freepoolbase] - STR R14,freepoolbase -; - Pull "R2-R7,PC" - -; -; setmemsize -; sets up MemoryLimit and ApplicationSpaceSize for (polltaskhandle) task -; NB: these values apply to the CALLING task (so OS_ChangeEnvironment is used) -; Entry: R1 = new memorylimit / applicationspacesize -; Exit: OS_ChangeEnvironment used to change OS versions of these variables -; if task is alive, its copies are also updated -; R1 = old memorylimit -; - -setmemsize ROUT - Push "LR" - MOV R0,#ApplicationSpaceSize - Push "R1" - SWI XOS_ChangeEnvironment - MOVVC R0,#MemoryLimit - Pull "R1" - SWIVC XOS_ChangeEnvironment - Pull "PC" - -; -; deallocateslot -; returns pages from a used slot to the free pool -; Entry: [taskhandle] = current task -; Exit: slot block deallocated (if any) -; taskhandle->task_slotptr = null -; pages put back into free pool (NB block never needs extension) -; - -deallocateslot ROUT - Push "R1-R2,LR" -; - LDR R14,taskhandle - LDR R1,[wsptr,R14] ; R1 --> task block - LDR R2,[R1,#task_slotptr] - CMP R2,#0 - MOVGT R14,#nullptr - STRGT R14,[R1,#task_slotptr] - [ Medusa - BLE %FT03 - MedusaOS - BEQ %FT01 - BL deallocate - B %FT03 -01 -; first find out how much memory is really in the slot - Push "R2-R3" - MOV R0,#0 - LDR R1,pagesize -02 - LDR R14,[R2],#12 - CMP R14,#-1 - ADDNE R0,R0,R1 - BNE %BT02 -; R0 bytes in slot, update environment - ADD R1,R0,#ApplicationStart - MOV R0,#0 - Push "R1" - SWI XOS_ChangeEnvironment - LDR R1,[SP] - MOV R0,#14 - SWI XOS_ChangeEnvironment - Pull "R1" - Push "R4" - SUB R4,R1,#ApplicationStart - BL SafeChangeDynamic - Pull "R4" - Pull "R2-R3" - CLRV - MOV R0,#ModHandReason_Free - BL XROS_Module ; free the slot -03 - | - BLGT deallocate ; R2 --> block to deallocate from - ] -; - Pull "R1-R2,PC",,^ ; preserve flags - -; -; Entry: R2 --> slot block -; Exit: pages mapped into free pool etc. (maptofreepool called) -; slot block deallocated -; - -deallocate ROUT - Push "LR" - [ Medusa - MedusaOS - BNE %FT50 - CMP R2,#0 - Pull "PC",LE ; return if invalid slot pointer - Push "R0-R4" - BL mapslotout ; map current task out of the way - LDR R0,pagesize - MOV R1,#0 - MOV R3,R2 -01 - LDR R14,[R3],#12 - CMP R14,#-1 - ADDNE R1,R1,R0 - BNE %BT01 -; R1 is now size of block in bytes - ADD R1,R1,#ApplicationStart - MOV R0,#0 - Push "R1" - SWI XOS_ChangeEnvironment ; set up suitable environment - MOV R3,R1 - Pull "R1" - MOV R0,#14 - SWI XOS_ChangeEnvironment - MOV R4,R1 - MOV R0,R2 - Push "R2-R4" - BL mapin ; map in area to be free'd - MOV R4,#&10000000 - BL SafeChangeDynamic - Pull "R2-R4" - CLRV - MOV R0,#ModHandReason_Free - BL XROS_Module ; free the slot -45 - MOV R1,R4 - MOV R0,#14 - SWI XOS_ChangeEnvironment ; return environment to how it was - MOV R1,R3 - MOV R0,#0 - SWI XOS_ChangeEnvironment - BL mapslotin ; put current task back - Pull "R0-R4,PC" -50 - ] - BL maptofreepool - CMP R2,#0 - MOVGT R0,#ModHandReason_Free - BLGT XROS_Module - Pull "PC" - -; -; Entry: R2 --> slot block -; Exit: pages mapped to base of free pool -; page numbers put into free pool (lowest page last) -; [freepoolbase] updated -; - -maptofreepool ROUT - Push "R1-R7,LR" -; - CMP R2,#0 - Pull "R1-R7,PC",LE ; no block! -; - - LDR R6,freepool - LDR R7,freepoolpages ; R7 = number of pages in free pool - ADD R6,R6,R7,LSL #2 - ADD R6,R6,R7,LSL #3 ; R6 -> terminators of free pool - MOV R0,R6 ; R0 -> block for OS_SetMemMapEntries - - LDR R1,pagesize - LDR R4,freepoolbase ; R4 -> next address - MOV R5,#2 ; R5 = protection level -01 LDR R3,[R2],#12 ; R3 = page number - CMP R3,#0 - SUBGE R4,R4,R1 - STMGEIA R6!,{R3,R4,R5} ; page number, address, protection level - ADDGE R7,R7,#1 - BGE %BT01 - - - STR R4,freepoolbase - STR R7,freepoolpages - MOV R14,#-1 - STR R14,[R6] ; terminator - - - SWI XOS_SetMemMapEntries - - Pull "R1-R7,PC" ; don't alter memorylimit - -; -; mapslotin -; all pages in a slot are put into the application space (&8000) -; Entry: [taskhandle] = current task -; Exit: pages mapped in -; handlers (eg. MemoryLimit) are also set up from task data -; - -mapslotin ROUT - Push "R1-R4,LR" -; - LDR R14,taskhandle - LDR R1,[wsptr,R14] ; R1 --> task block - CMP R1,#0 - Pull "R1-R4,PC",LE ; task is dead (shouldn't happen) -; - LDR R0,[R1,#task_slotptr] - CMP R0,#0 ; no slot allocated - BLGT mapin ; (corrupts R2) -; - - LDR R14,taskhandle - LDR R4,[wsptr,R14] ; NB task cannot be dead - ADD R4,R4,#task_environment -; - MOV R0,#0 ; handler number -01 - LDMIA R4!,{R1-R3} ; restore task handler data - SWI XOS_ChangeEnvironment - ADD R0,R0,#1 - CMP R0,#MaxEnvNumber - BCC %BT01 -; - Pull "R1-R4,PC" - -; -; Entry: R0 --> block suitable for passing to OS_SetMemMapEntries -; Exit: the pages in the block are mapped into the application area -; - -mapin ROUT - MOV R2,#ApplicationStart - -; Entry: R0 --> page map block -; R2 --> start address of place to map pages to -; Exit: R2 --> after the memory - -mapslot ROUT - Push "R1,R3,LR" -; - LDR R3,pagesize - MOV R1,R0 -01 - LDR R14,[R1],#4 - CMP R14,#0 - STRGE R2,[R1],#8 ; next page - ADDGE R2,R2,R3 - BGE %BT01 -; - SWI XOS_SetMemMapEntries -; - Pull "R1,R3,PC" - -; -; mapslotout -; all pages in a slot are put out of the way -; Entry: [taskhandle] = current task -; Exit: pages mapped out -; - -mapslotout ROUT - Push "R1-R6,LR" -; - LDR R14,taskhandle - LDR R6,[wsptr,R14] ; R6 --> task block - CMP R6,#0 - Pull "R1-R6,PC",LE ; task is dead already -; -; - ADD R5,R6,#task_environment - MOV R0,#0 -01 - TEQ R0,#EscapeHandler ; we must replace these now, - TEQNE R0,#EventHandler ; since they are dangerous! - MOVNE R1,#0 - MOVNE R2,#0 - MOVNE R3,#0 - SWIEQ XOS_ReadDefaultHandler ; replace with 'kosher' handlers - SWI XOS_ChangeEnvironment ; set, and read original settings - STMIA R5!,{R1-R3} ; old data - ADD R0,R0,#1 - CMP R0,#MaxEnvNumber - BCC %BT01 -; - LDR R0,[R6,#task_slotptr] - CMP R0,#0 ; R0 --> slot block - BLGT mapout ; NB do this afterwards! -; - Pull "R1-R6,PC" - -; -; Entry: R0 --> block suitable for passing to OS_SetMemMapEntries -; Exit: all pages referenced in the block are mapped out of the way -; - -mapout ROUT - Push "R1-R3,LR" -; - MOV R2,#-1 ; map out of the way - LDR R3,pagesize - MOV R1,R0 -01 - LDR R14,[R1],#4 - CMP R14,#0 - STRGE R2,[R1],#8 ; next page - BGE %BT01 -; - SWI XOS_SetMemMapEntries -; - Pull "R1-R3,PC" - - -;;---------------------------------------------------------------------------- -;; *WimpSlot command (for changing amount of application space) -;;---------------------------------------------------------------------------- - - ^ 0 -vec_min # 4 ; fields in output vector -vec_max # 4 -vec_next # 4 - -ss_outputvec * &100 - - -Keydef DCB "min,max,next", 0 ; -min no longer compulsory - ALIGN - -WimpSlot_Code ROUT - Push "R11,R12,LR" - LDR wsptr,[R12] - MOV R11,sp ; remember stack for later -; - SUB sp,sp,#ss_outputvec ; local workspace -; -; scan the comand line by calling OS_ReadArgs -; - MOV R1,R0 ; R1 = input string - ADR R0,Keydef ; R0 = key definition string - MOV R2,sp ; R2 = output vector - MOV R3,#ss_outputvec ; R3 = max output vector length - SWI XOS_ReadArgs - BVS %FT99 -; -; scan the resulting vector for known fields -; - MOV R0,#MemoryLimit - MOV R1,#0 - SWI XOS_ChangeEnvironment - SUB R3,R1,#ApplicationStart ; R3 = current amount of memory -; - LDR R1,[sp,#vec_min] - CMP R1,#0 - BLE %FT01 - BL getminmax ; R0 = min memory - BVS %FT99 - CMP R0,R3 - BLE %FT01 -; - Push "R0" ; R0 = new current slot size - MOV R1,#-1 ; leave next slot alone - SWI XWimp_SlotSize - Pull "R1" - BVS %FT99 - CMP R0,R1 ; R0=actual size, R1=required size - BLT err_notenoughmemory - MOV R3,R0 ; R3 = new amount of memory -01 - LDR R1,[sp,#vec_max] - CMP R1,#0 - BLE %FT02 - BL getminmax ; R0 = max memory - BVS %FT99 - CMP R0,R3 - MOVLT R1,#-1 ; leave next slot alone - SWILT XWimp_SlotSize -02 - LDR R1,[sp,#vec_next] - CMP R1,#0 - BLE %FT99 - BL getminmax ; R0 = new next slot size - MOVVC R1,R0 - MOVVC R0,#-1 ; leave current slot alone - SWIVC XWimp_SlotSize -99 - MOV sp,R11 - Pull "R11,R12,PC" - -err_notenoughmemory - MOV R0,R1,ASR #10 ; R0 = size in K -; - SUB SP,SP,#32 ; allocate buffer big enough -; - MOV R1,SP - MOV R2,#20 - SWI XOS_BinaryToDecimal ; convert to a string - ADDVS SP,SP,#32 - BVS %BT99 ; (exit if it errored) -; - MOV R0,#0 - STRB R0,[R1,R2] ; terminate the string -; - Push "R4,R5" -; - MOV R4,R1 ; -> string to use - MOV R5,#0 - - MOV R3,#(?errordynamic)-4 - ADRL R2,errordynamic+4 ; -> buffer to fill in - ADR R0,errmem - BL LookupToken -; - Pull "R4,R5" - ADD SP,SP,#32 ; balance the stack -; - ADRL R0,errordynamic - LDR R1,=ErrorNumber_ChDynamNotAllMoved - STR R1,[R0] -; - SETV - B %BT99 ; exit having setup the error block - -errmem DCB "ErrMem",0 - ALIGN - -; -; Entry: R1 --> string -; Exit: R0 = parameter value (number) -; Errors: "Bad number" -; - -getminmax ROUT - Push "R1-R3,LR" -; - MOV R0,#10 - SWI XOS_ReadUnsigned - Pull "R1-R3,PC",VS -; - LDRB R3,[R1] ; if terminator is "K" or "k", - UpperCase R3, R14 - TEQ R3,#"K" - ADDEQ R1,R1,#1 - MOVEQ R2,R2,LSL #10 ; multiply by 1024 -; - LDRB R14,[R1] ; check terminator - RSBS R14,R14,#" "+1 ; ensure GT set if OK - MyXError BadNumb,LE -; - MOVVC R0,R2 ; R0 = answer - Pull "R1-R3,PC" - MakeInternatErrorBlock BadNumb,,BadParm - - -;;---------------------------------------------------------------------------- -;; Stuff to deal with OS_ChangeDynamicArea -;;---------------------------------------------------------------------------- - -; -; intercept OS_ChangeDynamicArea -; - -initdynamic ROUT - [ :LNOT: FreePoolWCF - [ Medusa - [ true - Push "R0-R2,lr" - MOV R0,#6 - SWI XOS_ReadDynamicArea ; is there a kernel free pool - Pull "R0-R2,lr" - MOVVCS PC,lr - CLRV - | - MedusaOS - MOVEQS PC,lr - ] - ] - ] - Push "R1-R4,LR" -; - ADR R0,RAM_SWIEntry - LDR R1,copyofRAMcode+0 - LDR R2,copyofRAMcode+4 - ADR R3,My_ChangeDynamic - LDR R14,=SvcTable + 4 * OS_ChangeDynamicArea - LDR R4,[R14] ; R4 = old SWI entry - TEQ R4,R0 - Pull "R1-R4,PC",EQ ; if already in, forget it! - - STMIA R0,{R1-R4} - STR R0,[R14] ; R0 = RAM_SWIEntry - [ StrongARM - ;synchronise with respect to modified code at RAM_SWIEntry - MOV R1,R0 ; start address - ADD R2,R1,#4 ; end address (inclusive) for 2 words (other 2 are addresses) - MOV R0,#1 ; means R1,R2 specify range - SWI XOS_SynchroniseCodeAreas ; do the necessary - ] - Pull "R1-R4,PC" - -copyofRAMcode - SUB R12,PC,#:INDEX:RAM_SWIEntry+8 - LDR PC,[PC,#-4] - ASSERT (.-copyofRAMcode = 8) - ASSERT (OScopy_ChangeDynamic-RAM_SWIEntry = 12) - -resetdynamic ROUT - [ :LNOT: FreePoolWCF - [ Medusa - MedusaOS - MOVEQS PC,lr - ] - ] - - Push "R1,LR" -; -; happy note for StrongARM - this is not a code modification (vector address change only) -; - LDR R1,=SvcTable + 4 * OS_ChangeDynamicArea - LDR R14,OScopy_ChangeDynamic - STR R14,[R1] -; - Pull "R1,PC" - LTORG - - -;---------------------------------------------------------------------------- -; OS_ChangeDynamicArea -; Entry: R0 = area to move (0=system heap, 1=RMA, 2=screen) -; R1 = amount to move (+ve ==> take away from application space) -; Exit: R1 = amount actually moved -; Errors: not all bytes moved (0 moved if R1 was +ve) -; -; if freepool < 0 or CAO pointer <> Wimp, -; then just pass it on -; else if not enough free pool memory, grab some from current slot -; map all pages into the application space -; reset ApplicationSpaceSize/MemoryLimit to their original values -; branch to the OS code -;----------------------------------------------------------------------------- - - LTORG - -My_ChangeDynamic ROUT - Push "R0-R5,LR" - [ Medusa :LAND: FreePoolWCF - MedusaOS - BNE %FT05 - ADRL R14,freepoolinuse - LDRB R2,[R14] - TEQ R2,#0 - BEQ goto_osentry -; free pool is in use by WCF, must trap with 'memory cannot be moved' - MOV R1,#0 - ADD SP,SP,#8 - MyXError ChDynamNotAllMoved - - Pull "R2-R5,lr" - ORR lr,lr,#V_bit ; note 26 bit mode only!!!! - LDR PC,=BranchToSWIExit - - MakeInternatErrorBlock ChDynamNotAllMoved,,ErrNoMv - LTORG -05 - ] -; -; if freepool>0, the Wimp MUST be in control -; - LDR R14,freepool - CMP R14,#0 - BLE goto_osentry -; - MOV R14,#IRQsema ; if in IRQ, forget it! - LDR R14,[R14] - TEQ R14,#0 - BNE goto_osentry -; - LDRB R14,memoryOK ; check for re-entrancy - TST R14, #mem_remapped - BNE goto_osentry ; shouldn't ever happen - - TST R14, #mem_claimed ; if free memory claimed - BNE noslot ; then continue, but trap it in Service_Memory -; -; work out if the current free pool is sufficient to meet the demand -; if not, see whether the current application would like to give some up -; - LDR R14,freepoolpages ; R14 = number of free pages - LDR R0,pagesize - MUL R14,R0,R14 ; R14 = free memory - LDR R1,[sp,#4] - SUBS R14,R14,R1 ; R14 = extra needed (if -ve) - BGE noslot - SUB R0,R0,#1 ; round to next lower page boundary - BIC R0,R14,R0 ; assume pagesize = 2^n -; - BL readCAOpointer ; OS_ChangeEnvironment -> R2 - LDR R14,orig_applicationspacesize - CMP R2,R14 - BCC noslot ; can't do it - ADRL R14,Module_BaseAddr - TEQ R2,R14 - BEQ %FT02 ; OK if Wimp active - don't even ask! -; - MOV R1,#Service_Memory ; R0 = amount to change area by - SWI XOS_ServiceCall - CMP R1,#0 ; clear V! - BEQ noslot ; can't do it -02 - Push "R0" ; amount to move (-ve) - MOV R0,#ApplicationSpaceSize - MOV R1,#0 - SWI XOS_ChangeEnvironment ; R1 = size of current slot - Pull "R0" - SUB R1,R1,#ApplicationStart ; convert from end address to SIZE - ADDS R0,R1,R0 ; R0 = new slot size (if -ve, ignore) - MOVGE R1,#-1 - SWIGE XWimp_SlotSize ; I hope this works! -noslot -; -; map all slots into application space -; - MOV R0,#CAOPointer ; Wimp active during OS_ChangeDynamic - ADRL R1,Module_BaseAddr - SWI XOS_ChangeEnvironment - STR R1,oldCAOpointer ;; MUST RESTORE CAOPOINTER !!! -; -; swap total memory limits with local ones -; -; - MOV R0,#MemoryLimit - LDR R1,orig_memorylimit - SWI XOS_ChangeEnvironment - STR R1,orig_memorylimit ; swap these over -; - MOV R0,#ApplicationSpaceSize - LDR R1,orig_applicationspacesize - STR R1,oldapplimit ; used later - SWI XOS_ChangeEnvironment - STR R1,orig_applicationspacesize ; swap these over -; -; map all slots into the area above the current one -; - BL rackupslots ; R1 --> address to start from - ; current task is left alone -; -; free pool is already present at the top end of the memory -; check that we now have a contiguous block of memory -; - - LDRB R14,memoryOK - ORR R14,R14,#mem_remapped ; set flag for Service_Memory - STRB R14,memoryOK - -goto_osentry - Pull "R0-R5,LR" - LDR PC,OScopy_ChangeDynamic - -; -; Entry: R1 --> address to start putting slots at -; Exit: all slots mapped into application space, not overlapping -; R2 --> end address of slots -; R0,R1,R3,R4 trashed -; -rackupslots ROUT - Push "LR" -; - MOV R2,R1 ; start mapping from here - ADRL R1,taskpointers - LDR R3,taskhandle ; this one's been done already - ADD R3,wsptr,R3 - MOV R4,#maxtasks -01 - TEQ R1,R3 ; is this the current task? - LDR R14,[R1],#4 ; NB always increment R1 - TEQNE R14,#task_unused - LDRNE R0,[R14,#task_slotptr] - MOVEQ R0,#nullptr - CMP R0,#0 - BLGT mapslot ; updates [R0..], R2 - SUBS R4,R4,#1 - BNE %BT01 -; - Pull "PC" - -; -; Entry: all slots mapped into application space, consecutively -; Exit: all slots except the current one are mapped out -; R0-R4 trashed -; - -unrackslots ROUT - Push "LR" -; - ADRL R1,taskpointers - LDR R3,taskhandle ; leave this one alone - ADD R3,wsptr,R3 - MOV R4,#maxtasks -01 - TEQ R1,R3 ; is this the current task? - LDR R14,[R1],#4 ; NB always increment R1 - TEQNE R14,#task_unused - LDRNE R0,[R14,#task_slotptr] - MOVEQ R0,#nullptr - CMP R0,#0 - BLGT mapout - SUBS R4,R4,#1 - BNE %BT01 -; - Pull "PC" - - [ Medusa -;----------------------------------------------------------------------------- -; Service_PagesSafe interception -; Entry: R2 No. of pages to move -; R3 page list before move -; R4 page list after move -;----------------------------------------------------------------------------- - DCB "PagesSafe" - -servicepagessafe - Push "R0-r8,lr" -; SWI &107 ; beep when this happens - MOV R0,#0 - ADD R5,R2,#1 - MOV R8,R4 - MOV R4,R3 -01 - SUBS R5,R5,#1 - BEQ %FT09 - LDR R6,[R4],#12 - CMP R6,#-1 - BEQ %FT09 - LDR R7,[R8],#12 ; 3-word entries - MOV R0,#-1 - ADRL R3,taskpointers -03 - ADD R0,R0,#1 - CMP R0,#maxtasks - BEQ %FT11 - LDR R2,[R3,R0, LSL #2] - TEQ R2,#task_unused - BEQ %BT03 - LDR R2,[R2,#task_slotptr] - CMP R2,#-1 - BEQ %BT03 -05 - LDR R1,[R2],#12 - CMP R1,#-1 - BEQ %BT03 - CMP R1,R6 - BNE %BT05 - STR R7,[R2,#-12] - B %BT01 -09 - Pull "R0-R8,PC" -11 -; just in case 1-tasking & task isn't in the list - LDR R0,taskhandle - LDR R2,singletaskhandle - CMP R0,R2 - BNE %BT01 - LDR R0,pendingtask - CMP R0,#1 - BLT %BT01 - LDR R2,[R0,#task_slotptr] - CMP R2,#-1 - BEQ %BT01 -13 - LDR R1,[R2],#12 - CMP R1,#-1 - BEQ %BT01 - CMP R1,R6 - BNE %BT13 - STR R7,[R2,#-12] - B %BT01 - ] - - -;----------------------------------------------------------------------------- -; Service_Memory interception -; Entry: R0 = amount application space would be altered by -; R2 = CAO pointer -;----------------------------------------------------------------------------- - -servicememory ROUT - [ Medusa - [ true - Push "R0-R2,lr" - MOV R0,#6 - SWI XOS_ReadDynamicArea ; is there a kernel free pool - Pull "R0-R2,lr" -; BVC medusaaboutto - MOVVCS PC,lr - CLRV - | - MedusaOS - MOVEQS PC,lr - ] - ] - Push "R0-R3,LR" - -; - Debug dy,"Service_Memory: CAO pointer, amount to move =",R2,R0 -; - LDR R14,freepool ;; Wimp 1.89o onwards - CMP R14,#nullptr ;; - BNE %FT01 ;; only allow paging if - LDR R14,taskhandle ;; the "owner" slot is active - LDR R1,inithandle ;; - TEQ R1, R14 ;; TMD: actually do the comparison! - BNE serviceclaim ;; -01 - - LDRB R14, memoryOK ; if free memory has been claimed - TST R14, #mem_claimed ; then refuse to move memory - BNE serviceclaim - - ADRL R14,Module_BaseAddr - TEQ R2,R14 ; are we in control? - Pull "R0-R3,PC",NE - TEQ R0,#IsAnybodyThere ; if this is the Wimp, allow it - Pull "R0-R3,PC",EQ -; - LDR R14,freepool ; is there a free pool? - CMP R14,#nullptr - Pull "R0-R3,PC",LT ; freepool=-2 ==> OK (not running) - LDRNEB R14,memoryOK ; if not remapped already, stop this! - TSTNE R14,#mem_remapped ; (usually because memory claimed) - BEQ serviceclaim -; - LDR R1,oldapplimit ; orig_applicationspacesize is wrong - LDR R0,[sp] ; (has been swapped with local one) - ADD R0,R1,R0 ; proposed new end-of-memory - LDR R14,freepoolbase - CMP R0,R14 - Pull "R0-R3,PC",CS - -serviceclaim - MOV R14,#0 - STR R14,[sp,#1*4] ; claim service if not enough memory - Pull "R0-R3,PC" - -medusaaboutto - - Push "R0,lr" - - ADRL R0,Module_BaseAddr - TEQ R0,R2 - Pull "R0,PC",NE - LDR R0,inithandle - LDR R14,taskhandle - TEQ R0,R14 - MOVNE R1,#0 - - Pull "R0,PC",,^ - - -medusaservicemem - ; page may have been taken out of application space - ; the slot block must be updated. - Push "R0-R3,lr" - ; first check pending task - - LDR R14,pendingtask - MOVS R0,R14,ASR #31 - LDREQ R0,[R14,#task_slotptr] - CMP R0,#0 - SWIGT XOS_FindMemMapEntries - BGT %FT05 - - LDR R14,taskhandle - CMP R14,#0 - Pull "R0-R3,PC",EQ,^ - - LDR R14,[wsptr,R14] - MOVS R0,R14,ASR #31 - LDREQ R0,[R14,#task_slotptr] - CMP R0,#0 - SWIGT XOS_FindMemMapEntries - -05 - - - - - - Pull "R0-R3,PC",,^ - -;----------------------------------------------------------------------------- -; Service_MemoryMoved interception -; Put pages back into their proper positions -;----------------------------------------------------------------------------- - -servicememorymoved ROUT - [ Medusa - [ true - Push "R0-R2,lr" - MOV R0,#6 - SWI XOS_ReadDynamicArea ; is there a kernel free pool - Pull "R0-R2,lr" - BVC medusaservicemem - - CLRV - | - MedusaOS - MOVEQS PC,lr - ] - ] - Push "R0-R7,R10-R11,LR" - -; - MOV R14,#IRQsema ; if in IRQ, forget it! - LDR R14,[R14] - TEQ R14,#0 - Pull "R0-R7,R10-R11,PC",NE,^ -; - TEQP PC,#SVC_mode ; enable interrupts (bug in MOS) -; - LDR R14,freepool ; no messing about if no free pool - CMP R14,#nullptr - Pull "R0-R7,R10-R11,PC",LT,^ ; Wimp not involved at all - BNE %FT01 ; Wimp has a free pool to maintain -; - LDR R0,taskhandle ;; Wimp 1.89o onwards - LDR R14,inithandle ;; - TEQ R0,R14 ;; update these if "owner" slot - Pull "R0-R7,R10-R11,PC",NE,^ ;; is being altered -; ;; - MOV R0,#ApplicationSpaceSize ;; restorepages uses these later - MOV R1,#0 ;; - SWI XOS_ChangeEnvironment ;; - STRVC R1,orig_applicationspacesize ;; - MOV R0,#MemoryLimit ;; - MOV R1,#0 ;; - SWI XOS_ChangeEnvironment ;; - STRVC R1,orig_memorylimit ;; - ;; - Pull "R0-R7,R10-R11,PC",,^ ;; - -01 - LDRB R14,memoryOK ; if not remapped, forget it - TST R14,#mem_remapped - Pull "R0-R7,R10-R11,PC",EQ,^ -; -; restore correct CAO pointer (forced to be Wimp during OS_ChangeDynamic) -; - MOV R0,#CAOPointer - LDR R1,oldCAOpointer - SWI XOS_ChangeEnvironment ; ignore errors -; -; scan all slots to see if the memory has moved -; - ADRL R5,taskpointers - MOV R4,#maxtasks -01 - LDR R14,[R5],#4 - MOVS R0,R14,ASR #31 ; R0 = 0 (OK) or -1 (no slot) - LDREQ R0,[R14,#task_slotptr] - CMP R0,#0 - SWIGT XOS_FindMemMapEntries ; R10 --> new map, R0 --> slot - SUBS R4,R4,#1 ; clears V - BNE %BT01 -; -; don't forget the 'pending' slot -; - LDR R14,pendingtask ;; this was missing in Risc OS 2.00 - MOVS R0,R14,ASR #31 ;; - LDREQ R0,[R14,#task_slotptr] ;; essential for screen remapping - CMP R0,#0 ;; - SWIGT XOS_FindMemMapEntries ;; -; -; restore the current orig_applicationspacesize/memorylimit for this slot -; - BL restorememlimit - LDR R3,oldapplimit - STR R1,orig_memorylimit ; these must be equal - STR R1,orig_applicationspacesize -; -; reconstruct the free slot by entering the expected addresses -; note that sometimes more than just the free pool will have been removed -; - LDR R2,freepool ; R1 -> end of memory, R2 -> free slot - BL findfreepool ; fills in free pool - - MOV R1,#2 ; no USR mode read/write - BL setslotaccess -; -; map out all applications except the current one -; NB: this is important so that pages cannot coincide later -; - BL unrackslots -; - LDRB R14,memoryOK - BIC R14,R14,#mem_remapped ; should be alright again now! - STRB R14,memoryOK -; - Pull "R0-R7,R10-R11,PC",,^ - - - -;;---------------------------------------------------------------------------- -;; Neil's debugging routines -;;---------------------------------------------------------------------------- - - [ debug - InsertNDRDebugRoutines - ] - -;;---------------------------------------------------------------------------- -;; Resource files -;;---------------------------------------------------------------------------- - -romsprites - DCD 16,0,16,16 ; null area just in case - -resourcefsfiles - [ standalone - ResourceFile Resources.<Locale>.Messages, Resources.Wimp.Messages - [ NewErrorSystem - ResourceFile Resources.<Locale>.Template3D, Resources.Wimp.Templates ; AMcC 18-Oct-94 was Template3D - | - ResourceFile Resources.<Locale>.Templates, Resources.Wimp.Templates - ] - ] - [ false - ResourceFile Resources.<Locale>.Sprites, Resources.Wimp.Sprites - ResourceFile Resources.<Locale>.Tools, Resources.Wimp.Tools - ] - ResourceFile Resources.!WIMPSym.WIMPSymbol.Encoding, Fonts.WIMPSymbol.Encoding - ResourceFile Resources.!WIMPSym.WIMPSymbol.f240x120, Fonts.WIMPSymbol.f240x120 - ResourceFile Resources.!WIMPSym.WIMPSymbol.IntMetrics, Fonts.WIMPSymbol.IntMetrics - ResourceFile Resources.!WIMPSym.WIMPSymbol.Outlines, Fonts.WIMPSymbol.Outlines - [ :LNOT: NoDarwin - [ RealDarwin - ResourceFile Resources.!Darwin.Darwin.f240x120, Fonts.Darwin.Medium.f240x120 - ResourceFile Resources.!Darwin.Darwin.IntMetrics, Fonts.Darwin.Medium.IntMetrics - | - ResourceFile Resources.!Homerton.homerton.IntMetric0, Fonts.Darwin.Medium.IntMetric0 - ResourceFile Resources.!Homerton.homerton.Outlines0, Fonts.Darwin.Medium.Outlines0 - ] - ] - [ standalone :LAND: false - ResourceFile Resources.desktop, Resources.Desktop.Messages - ] - DCD 0 - - - ] ; :LNOT: UseAMBControl - - END -- GitLab