Source
...
Target
Commits (5)
  • Robert Sprowson's avatar
    Explicitly test shift when Filer_Run-ning something on the Pinboard · 4941a771
    Robert Sprowson authored
    Filer-2_40 and later require explicit opt in, otherwise it's just a normal Filer_Run.
    
    Version 0.99. Tagged as 'Pinboard-0_99'
    4941a771
  • Jeffrey Lee's avatar
    Avoid unnecessary remainder calculations. Fix wonky "snap to grid" logic. · 31b58188
    Jeffrey Lee authored
    Detail:
      s/Drag, s/Messages, s/StartLoop - Avoid unnecessary remainder calculation in DivRem macro
      s/Icons - Fix grid coordinate rounding when tidying to the left
    Admin:
      Tested on Cortex-A15
    
    
    Version 1.00. Tagged as 'Pinboard-1_00'
    31b58188
  • Robert Sprowson's avatar
    Emit boot relative Pin/AddTinyDir commands where possible · 51a0712b
    Robert Sprowson authored
    When saving the desktop settings, use the same substring matching logic that !Configure's boot addapps/lookat/run uses, and replace the base of the name with Boot: or Boot:^.
    This means that if the boot drive is renamed the pinboard still starts up with the same items on it.
    Ditch support for Message_SaveDesktop - the code's been a NOP since Ursula (circa 1998).
    Tested on a Raspberry Pi, renaming the SD card.
    
    Version 1.01. Tagged as 'Pinboard-1_01'
    51a0712b
  • Robert Sprowson's avatar
    Remove use of RESOURCEEXTRA · 00992bc2
    Robert Sprowson authored
    Requires BuildSys-6_91.
    
    Version 1.02. Tagged as 'Pinboard-1_02'
    00992bc2
  • ROOL's avatar
    Fixes for pinboard backdrop sprite changing · f462c775
    ROOL authored
    Detail:
      Fix out-by-1 error in MakeCompactModeWord, the palette checksum read from array index -1 due to the loop construction.
      Consider the x/y size as well as the compact mode word when deciding whether to recache the backdrop sprite.
      Don't assume the screen byte size is equivalent to working out the sprite byte size, due to word rounding at the end of each line. Calculate it properly.
      Allow the Wimp_SlotSize to exactly equal the required memory (previously, had to be larger).
    Admin:
      Submission from Timothy Baldwin, with minor refactoring.
    
    Version 1.03. Tagged as 'Pinboard-1_03'
    f462c775
...@@ -21,8 +21,8 @@ ...@@ -21,8 +21,8 @@
# ---- ---- ----------- # ---- ---- -----------
# 14-Mar-01 SNB Recreated # 14-Mar-01 SNB Recreated
COMPONENT = Pinboard COMPONENT = Pinboard
RESOURCEEXTRA = resources_templates INSTRES_FILES = Templates
include StdTools include StdTools
include AAsmModule include AAsmModule
......
...@@ -11,13 +11,13 @@ ...@@ -11,13 +11,13 @@
GBLS Module_HelpVersion GBLS Module_HelpVersion
GBLS Module_ComponentName GBLS Module_ComponentName
GBLS Module_ComponentPath GBLS Module_ComponentPath
Module_MajorVersion SETS "0.98" Module_MajorVersion SETS "1.03"
Module_Version SETA 98 Module_Version SETA 103
Module_MinorVersion SETS "" Module_MinorVersion SETS ""
Module_Date SETS "09 Mar 2014" Module_Date SETS "06 May 2017"
Module_ApplicationDate SETS "09-Mar-14" Module_ApplicationDate SETS "06-May-17"
Module_ComponentName SETS "Pinboard" Module_ComponentName SETS "Pinboard"
Module_ComponentPath SETS "castle/RiscOS/Sources/Desktop/Pinboard" Module_ComponentPath SETS "castle/RiscOS/Sources/Desktop/Pinboard"
Module_FullVersion SETS "0.98" Module_FullVersion SETS "1.03"
Module_HelpVersion SETS "0.98 (09 Mar 2014)" Module_HelpVersion SETS "1.03 (06 May 2017)"
END END
/* (0.98) /* (1.03)
* *
* This file is automatically maintained by srccommit, do not edit manually. * This file is automatically maintained by srccommit, do not edit manually.
* Last processed by srccommit version: 1.1. * Last processed by srccommit version: 1.1.
* *
*/ */
#define Module_MajorVersion_CMHG 0.98 #define Module_MajorVersion_CMHG 1.03
#define Module_MinorVersion_CMHG #define Module_MinorVersion_CMHG
#define Module_Date_CMHG 09 Mar 2014 #define Module_Date_CMHG 06 May 2017
#define Module_MajorVersion "0.98" #define Module_MajorVersion "1.03"
#define Module_Version 98 #define Module_Version 103
#define Module_MinorVersion "" #define Module_MinorVersion ""
#define Module_Date "09 Mar 2014" #define Module_Date "06 May 2017"
#define Module_ApplicationDate "09-Mar-14" #define Module_ApplicationDate "06-May-17"
#define Module_ComponentName "Pinboard" #define Module_ComponentName "Pinboard"
#define Module_ComponentPath "castle/RiscOS/Sources/Desktop/Pinboard" #define Module_ComponentPath "castle/RiscOS/Sources/Desktop/Pinboard"
#define Module_FullVersion "0.98" #define Module_FullVersion "1.03"
#define Module_HelpVersion "0.98 (09 Mar 2014)" #define Module_HelpVersion "1.03 (06 May 2017)"
#define Module_LibraryVersionInfo "0:98" #define Module_LibraryVersionInfo "1:3"
...@@ -90,7 +90,7 @@ MakeCompactModeWord ...@@ -90,7 +90,7 @@ MakeCompactModeWord
SUBS r14, r14, #1 SUBS r14, r14, #1
LDRB r1, [sp, r14, LSL #2] LDRB r1, [sp, r14, LSL #2]
ADD r0, r0, r1 ADD r0, r0, r1
BPL %BT10 BNE %BT10
ADD sp, sp, #20*4 ADD sp, sp, #20*4
...@@ -193,8 +193,16 @@ ModeChange ...@@ -193,8 +193,16 @@ ModeChange
LDR r14, CachedBackdropMode LDR r14, CachedBackdropMode
TEQ r0, r14 TEQ r0, r14
DebugIf NE, bd,"BackdropMode changed, recacheing sprite",r0,r14 DebugIf NE, bd,"BackdropMode changed",r0,r14
LDREQ r0, CachedBackdrop_x1
LDREQ r14, Screen_x1
TEQEQ r0, r14
LDREQ r0, CachedBackdrop_y1
LDREQ r14, Screen_y1
TEQEQ r0, r14
DebugIf NE, bd,"Backdrop mode changed, recacheing sprite"
03 03
BLNE CacheBackdropSprite BLNE CacheBackdropSprite
Pull "PC" Pull "PC"
...@@ -395,7 +403,7 @@ Int_CacheBackdropSprite ROUT ...@@ -395,7 +403,7 @@ Int_CacheBackdropSprite ROUT
TST r0,#bd_OptionScaled ; Scaled ? TST r0,#bd_OptionScaled ; Scaled ?
BEQ %FT01 BEQ %FT01
; Sprite is scaled, get screen size (r4 = width, r5 = height, r2 = memory req.) ; Sprite is scaled, get screen size (r4 = width, r5 = height)
MOV r0,#-1 ; Use current mode MOV r0,#-1 ; Use current mode
...@@ -407,8 +415,6 @@ Int_CacheBackdropSprite ROUT ...@@ -407,8 +415,6 @@ Int_CacheBackdropSprite ROUT
SWIVC XOS_ReadModeVariable SWIVC XOS_ReadModeVariable
ADDVC r5,r2,#1 ADDVC r5,r2,#1
STRVC r5,scale_y1 STRVC r5,scale_y1
MOVVC r1,#VduExt_ScreenSize
SWIVC XOS_ReadModeVariable ; R2= screen size in bytes
Pull "PC",VS Pull "PC",VS
B %FT10 ; Go allocate memory etc. B %FT10 ; Go allocate memory etc.
...@@ -501,6 +507,7 @@ Int_CacheBackdropSprite ROUT ...@@ -501,6 +507,7 @@ Int_CacheBackdropSprite ROUT
STR r2,scale_x1 STR r2,scale_x1
Debug bd,"Width in OS units is ",r4 Debug bd,"Width in OS units is ",r4
10
MOV r0,#-1 MOV r0,#-1
MOV r1,#VduExt_Log2BPP MOV r1,#VduExt_Log2BPP
SWI XOS_ReadModeVariable ; Get Log2BPP for current mode SWI XOS_ReadModeVariable ; Get Log2BPP for current mode
...@@ -513,7 +520,6 @@ Int_CacheBackdropSprite ROUT ...@@ -513,7 +520,6 @@ Int_CacheBackdropSprite ROUT
MUL r2,r3,r5 ; r2 = size in bytes MUL r2,r3,r5 ; r2 = size in bytes
10
Debug bd,"Destination sprite width = ",r4 Debug bd,"Destination sprite width = ",r4
Debug bd,"Destination sprite height = ",r5 Debug bd,"Destination sprite height = ",r5
Debug bd,"Sprite size would be ",r2 Debug bd,"Sprite size would be ",r2
...@@ -538,7 +544,7 @@ Int_CacheBackdropSprite ROUT ...@@ -538,7 +544,7 @@ Int_CacheBackdropSprite ROUT
Debug bd,"actual Slot size is ",r0 Debug bd,"actual Slot size is ",r0
CMP r3,r0 CMP r3,r0
BLT got_memory BLS got_memory
LDR r0,backdrop_handle LDR r0,backdrop_handle
MOV r1,#0 MOV r1,#0
...@@ -623,6 +629,11 @@ LoadedOK ...@@ -623,6 +629,11 @@ LoadedOK
Debug bd,"BackdropMode is brought to you by the number ",r0 Debug bd,"BackdropMode is brought to you by the number ",r0
LDR r0,Screen_x1
LDR r1,Screen_y1
STR r0,CachedBackdrop_x1
STR r1,CachedBackdrop_y1
LDR r0,=&100 + SpriteReason_CreateSprite LDR r0,=&100 + SpriteReason_CreateSprite
MOV r1,#&8000 MOV r1,#&8000
ADRL r2,BackdropSpriteName ; Create new sprite in current mode ADRL r2,BackdropSpriteName ; Create new sprite in current mode
......
...@@ -359,7 +359,7 @@ lock_movement_to_grid Entry "r0-r7, r10-r11" ...@@ -359,7 +359,7 @@ lock_movement_to_grid Entry "r0-r7, r10-r11"
BNE %FT02 BNE %FT02
; If tidy to left ; If tidy to left
MOV r10, #grid_x_spacing MOV r10, #grid_x_spacing
DivRem r1, r5, r10, r2 DivRem r1, r5, r10, r2, norem
MUL r8, r1, r10 ; x = (mouse_x DIV x_spacing) * x_spacing MUL r8, r1, r10 ; x = (mouse_x DIV x_spacing) * x_spacing
B %FT04 B %FT04
02 ; If tidy to right 02 ; If tidy to right
...@@ -367,7 +367,7 @@ lock_movement_to_grid Entry "r0-r7, r10-r11" ...@@ -367,7 +367,7 @@ lock_movement_to_grid Entry "r0-r7, r10-r11"
LDR r11, Screen_x1 LDR r11, Screen_x1
ADD r1, r11, #grid_x_spacing ADD r1, r11, #grid_x_spacing
SUB r2, r1, r5 SUB r2, r1, r5
DivRem r1, r2, r10, r0 DivRem r1, r2, r10, r0, norem
MUL r2, r1, r10 MUL r2, r1, r10
SUB r8, r11, r2 SUB r8, r11, r2
...@@ -379,7 +379,7 @@ lock_movement_to_grid Entry "r0-r7, r10-r11" ...@@ -379,7 +379,7 @@ lock_movement_to_grid Entry "r0-r7, r10-r11"
LDR r11, Screen_y1 LDR r11, Screen_y1
ADD r1, r11, #grid_y_spacing ADD r1, r11, #grid_y_spacing
SUB r2, r1, r6 SUB r2, r1, r6
DivRem r1, r2, r10, r0 DivRem r1, r2, r10, r0, norem
MUL r2, r1, r10 MUL r2, r1, r10
SUB r9, r11, r2 SUB r9, r11, r2
B %FT08 B %FT08
...@@ -389,7 +389,7 @@ lock_movement_to_grid Entry "r0-r7, r10-r11" ...@@ -389,7 +389,7 @@ lock_movement_to_grid Entry "r0-r7, r10-r11"
CMP r6, #0 ; it's height. CMP r6, #0 ; it's height.
MOVLT r6, #0 MOVLT r6, #0
MOV r10, #grid_y_spacing MOV r10, #grid_y_spacing
DivRem r1, r6, r10, r2 DivRem r1, r6, r10, r2, norem
MLA r9, r1, r10, r0 ; y = (mouse_y DIV y_spacing) * y_spacing) + icon_bar_height MLA r9, r1, r10, r0 ; y = (mouse_y DIV y_spacing) * y_spacing) + icon_bar_height
08 ; Get the state of the icon where the drag was started 08 ; Get the state of the icon where the drag was started
...@@ -465,23 +465,23 @@ DragIconsToApp ...@@ -465,23 +465,23 @@ DragIconsToApp
STR r0,[r14],#4 ; Display mode is always 0 (large icons sort by name) STR r0,[r14],#4 ; Display mode is always 0 (large icons sort by name)
; Left column = bbox_left / grid_x_spacing ; Left column = bbox_left / grid_x_spacing
DivRem r10,r6,r4,r0 DivRem r10,r6,r4,r0,norem
STR r10,[r14],#4 STR r10,[r14],#4
; Top row = (screen_y - bbox_top) / grid_y_spacing ; Top row = (screen_y - bbox_top) / grid_y_spacing
LDR r10,Screen_y1 LDR r10,Screen_y1
SUB r9,r10,r9 SUB r9,r10,r9
DivRem r10,r9,r5,r0 DivRem r10,r9,r5,r0,norem
STR r10,[r14],#4 STR r10,[r14],#4
; Right column = bbox_right / grid_x_spacing ; Right column = bbox_right / grid_x_spacing
DivRem r10,r8,r4,r0 DivRem r10,r8,r4,r0,norem
STR r10,[r14],#4 STR r10,[r14],#4
; Bottom row = (screen_y - bbox_bottom) / grid_y_spacing ; Bottom row = (screen_y - bbox_bottom) / grid_y_spacing
LDR r10,Screen_y1 LDR r10,Screen_y1
SUB r7,r10,r7 SUB r7,r10,r7
DivRem r10,r7,r5,r0 DivRem r10,r7,r5,r0,norem
STR r10,[r14],#4 STR r10,[r14],#4
MOV r0,#0 MOV r0,#0
......
...@@ -781,7 +781,7 @@ FindNearestGridXY Entry "r0-r4, r7-r11" ...@@ -781,7 +781,7 @@ FindNearestGridXY Entry "r0-r4, r7-r11"
; If tidy to left ; If tidy to left
MOV r10, #grid_x_spacing MOV r10, #grid_x_spacing
DivRem r1, r5, r10, r2 DivRem r1, r5, r10, r2
CMP r5, r10, LSR #2 CMP r5, r10, LSR #1
ADDGT r1, r1, #1 ADDGT r1, r1, #1
MUL r5, r1, r10 ; x = (mouse_x DIV x_spacing) * x_spacing MUL r5, r1, r10 ; x = (mouse_x DIV x_spacing) * x_spacing
B %FT04 B %FT04
......
...@@ -512,7 +512,7 @@ OpenFiles Entry ...@@ -512,7 +512,7 @@ OpenFiles Entry
LDR r7, [r7, #ic_next] LDR r7, [r7, #ic_next]
B %BT02 B %BT02
FilerRunCom DCB "Filer_Run ",0 FilerRunCom DCB "Filer_Run -Shift ",0
ALIGN ALIGN
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
......
...@@ -87,9 +87,6 @@ message_received ...@@ -87,9 +87,6 @@ message_received
TEQ r0, r14 TEQ r0, r14
BEQ close_task BEQ close_task
TEQ r0, #Message_SaveDesktop
BEQ DesktopSave
LDR r14, =Message_HelpRequest LDR r14, =Message_HelpRequest
TEQ r0, r14 TEQ r0, r14
BEQ HelpRequest BEQ HelpRequest
...@@ -266,7 +263,7 @@ FilerSelection ROUT ...@@ -266,7 +263,7 @@ FilerSelection ROUT
; icon) appears underneath the pointer on the pinboard. ; icon) appears underneath the pointer on the pinboard.
LDR r7, [r14, #44] ; r7 = mouse x LDR r7, [r14, #44] ; r7 = mouse x
SUB r8, r7, r0 ; r8 = mouse x - x1 SUB r8, r7, r0 ; r8 = mouse x - x1
DivRem r9, r8, r4, r10 ; r9 = column number of initiating icon DivRem r9, r8, r4, r10, norem ; r9 = column number of initiating icon
MOV r4, #grid_x_spacing ; new item width MOV r4, #grid_x_spacing ; new item width
MUL r8, r9, r4 MUL r8, r9, r4
SUB r0, r7, r8 ; new x1 (nearly!) SUB r0, r7, r8 ; new x1 (nearly!)
......
...@@ -238,6 +238,8 @@ Screen_y1 # 4 ...@@ -238,6 +238,8 @@ Screen_y1 # 4
XEig # 4 ; X and Y Eig factors for XEig # 4 ; X and Y Eig factors for
YEig # 4 ; current mode. YEig # 4 ; current mode.
CachedBackdropMode # 4 ; Mode for which the backdrop sprite was cached. CachedBackdropMode # 4 ; Mode for which the backdrop sprite was cached.
CachedBackdrop_x1 # 4 ;
CachedBackdrop_y1 # 4 ;
Buffered_list # 4 ; Buffered list of icons. Buffered_list # 4 ; Buffered list of icons.
Icon_list # 4 ; List of active icons. Icon_list # 4 ; List of active icons.
MonotonicID # 4 ; Monotonic ID for icons. MonotonicID # 4 ; Monotonic ID for icons.
...@@ -279,6 +281,8 @@ drag_start # 8 ; x,y of iconized drag start ...@@ -279,6 +281,8 @@ drag_start # 8 ; x,y of iconized drag start
drag_window # 4 drag_window # 4
drag_icon # 4 drag_icon # 4
save_filename_address # 4 save_filename_address # 4
save_boot_length # 4
save_boothat_length # 4
icon_bar_height # 4 icon_bar_height # 4
;EventV_Claimed # 4 ; non-zero when we have EventV claimed ;EventV_Claimed # 4 ; non-zero when we have EventV claimed
CaretPos # 4*6 ; stored caret position (e.g. who we took it from) CaretPos # 4*6 ; stored caret position (e.g. who we took it from)
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
; ;
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; s.Save ; s.Save
; Save and Desktop save handling. ; Save pinboard menu handling.
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
...@@ -218,17 +218,8 @@ Save_DataSaveAck ROUT ...@@ -218,17 +218,8 @@ Save_DataSaveAck ROUT
DebugS sa,"Filename is ",r14 DebugS sa,"Filename is ",r14
;MOV r0,#&8F
ADD r1,r1,#44 ADD r1,r1,#44
;DebugS sa,"Filename is ",r1
;SWI XOS_Find
;Pull "PC",VS
;Push "r0" ; SMC: save file handle for CloseFile
BL DoSave BL DoSave
;BL CloseFile
;ADD sp, sp, #4 ; SMC: don't need file handle now
;Pull "PC",VS ; SMC: return error from DoSave or CloseFile
ADR r1,dataarea ADR r1,dataarea
LDR r0,[r1,#8] LDR r0,[r1,#8]
...@@ -253,12 +244,6 @@ Save_DataSaveAck ROUT ...@@ -253,12 +244,6 @@ Save_DataSaveAck ROUT
Pull "PC" Pull "PC"
DesktopSave
;LDR r0, [r1, #msSaveDesktop_handle]
;BL DoSave
Pull "PC"
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; DoSave ; DoSave
; ;
...@@ -272,6 +257,36 @@ DoSave ROUT ...@@ -272,6 +257,36 @@ DoSave ROUT
MOV r8, r1 ; r8 -> filename MOV r8, r1 ; r8 -> filename
; Get substrings of Boot:
ADR r0, BootPathVar
ADR r1, dest_directory
MOV r2, #?dest_directory
MOV r3, #0
MOV r4, #VarType_Expanded
SWI XOS_ReadVarVal
MOV r0, #0
STRVCB r0, [r1, r2] ; FSName::Drive.$.![Arm]Boot.[,OtherStuff]...
BVS %FT20
10
LDRB lr, [r1, r0]
CMP lr, #','
BEQ %FT20
CMP lr, #' '
ADDHI r0, r0, #1
BHI %BT10
20
STR r0, save_boot_length ; FSName::Drive.$.![Arm]Boot.
STR r0, save_boothat_length
SUBS r0, r0, #2
BMI %FT40
30
LDRB lr, [r1, r0]
CMP lr, #'.'
BEQ %FT40
STR r0, save_boothat_length ; FSName::Drive.$.
SUBS r0, r0, #1
BPL %BT30
40
; Open file to write ; Open file to write
MOV r0, #open_write :OR: open_pathbits :OR: open_mustopen :OR: open_nodir MOV r0, #open_write :OR: open_pathbits :OR: open_mustopen :OR: open_nodir
MOV r1, r8 MOV r1, r8
...@@ -304,9 +319,57 @@ DoSave ROUT ...@@ -304,9 +319,57 @@ DoSave ROUT
PinboardCommand DCB "Pinboard",0 PinboardCommand DCB "Pinboard",0
TinyDirsCommand DCB "X AddTinyDir ", 0 ; ignore errors so that entering the desktop TinyDirsCommand DCB "X AddTinyDir ", 0 ; ignore errors so that entering the desktop
PinCommand DCB "X Pin ", 0 ; doesn't result in scores of error boxes PinCommand DCB "X Pin ", 0 ; doesn't result in scores of error boxes
BootPathVar DCB "Boot$$Path", 0
BootSubst DCB "Boot:", 0
BootHatSubst DCB "Boot:^.", 0
Space DCB " ", 0 Space DCB " ", 0
NL DCB 10, 0 NL DCB 10, 0
ALIGN
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; TryMatchBoot[Hat]
;
; Look for a match in the first <n> characters of a pin or addtinydir name
;
; In: r0 = filehandle of output
; r1 = null terminated string to try for a match
;
; Out: r1 = adjusted if match made, and prefix string written to filehandle
; all other regs preserved
TryMatchBoot Entry "r2-r5"
LDR r3, save_boot_length
ADR r4, BootSubst
B %FT10
TryMatchBootHat ALTENTRY
LDR r3, save_boothat_length
ADR r4, BootHatSubst
10
TEQ r3, #0
EXIT EQ ; Boot$Path unset, no match
ADR r2, dest_directory
LDRB r5, [r1, r3]
LDRB lr, [r2, r3]
Push "r0, r3, r5, lr"
MOV r5, #0
STRB r5, [r1, r3] ; Trim string for compare
STRB r5, [r2, r3] ; Trim Boot$Path for compare
MOV r0, #-1
MOV r3, #Collate_IgnoreCase
SWI XTerritory_Collate
CMP r0, #0
Pull "r0, r3, r5, lr"
STRB r5, [r1, r3] ; Restore
STRB lr, [r2, r3] ; Restore
EXIT NE ; No match (or error)
MOV r2, r1
MOV r1, r4
BL PutString
ADD r1, r2, r3 ; Adjust to string remainder
EXIT
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; write_pin_commands ; write_pin_commands
...@@ -325,20 +388,23 @@ write_pin_commands Entry "r1-r3" ...@@ -325,20 +388,23 @@ write_pin_commands Entry "r1-r3"
CMP r2,#0 CMP r2,#0
EXIT EQ EXIT EQ
LDR r3,[r2,#ic_window] LDR r3,[r2,#ic_window]
CMP r3,#-2 CMP r3,#iconbar_whandle
ADREQ r1,TinyDirsCommand ADREQ r1,TinyDirsCommand
ADRNE r1,PinCommand ADRNE r1,PinCommand
BL PutString BL PutString
EXIT VS EXIT VS
ADD r1,r2,#ic_path ADD r1,r2,#ic_path
BL TryMatchBoot
ADD lr,r2,#ic_path
TEQ lr,r1 ; Was there a substitution?
BLEQ TryMatchBootHat ; No, so try the smaller substring
BL PutString BL PutString
EXIT VS EXIT VS
ADREQ r1,NL CMP r3,#iconbar_whandle
BLEQ PutString BEQ %FT03 ; AddTinyDir has no x,y
EXIT VS
BEQ %BT02
ADR r1,Space ADR r1,Space
BL PutString BL PutString
EXIT VS EXIT VS
...@@ -346,9 +412,6 @@ write_pin_commands Entry "r1-r3" ...@@ -346,9 +412,6 @@ write_pin_commands Entry "r1-r3"
Push "r0-r2" Push "r0-r2"
ADR r1,ConversionSpace ADR r1,ConversionSpace
LDR r0,[r2,#ic_x] LDR r0,[r2,#ic_x]
CMP r0,#0
MOVLT r2,#"0"
STRLTB r2,[r1],#1
MOV r2,#256 MOV r2,#256
SWI XOS_ConvertInteger4 SWI XOS_ConvertInteger4
STRVS r0,[sp] STRVS r0,[sp]
...@@ -357,6 +420,7 @@ write_pin_commands Entry "r1-r3" ...@@ -357,6 +420,7 @@ write_pin_commands Entry "r1-r3"
ADR r1,ConversionSpace ADR r1,ConversionSpace
BL PutString BL PutString
EXIT VS EXIT VS
ADRL r1,Space ADRL r1,Space
BL PutString BL PutString
EXIT VS EXIT VS
...@@ -372,6 +436,7 @@ write_pin_commands Entry "r1-r3" ...@@ -372,6 +436,7 @@ write_pin_commands Entry "r1-r3"
ADR r1,ConversionSpace ADR r1,ConversionSpace
BL PutString BL PutString
EXIT VS EXIT VS
03
ADRL r1,NL ADRL r1,NL
BL PutString BL PutString
EXIT VS EXIT VS
......
...@@ -73,7 +73,6 @@ MessagesList ...@@ -73,7 +73,6 @@ MessagesList
[ :LNOT: ursulawimp [ :LNOT: ursulawimp
DCD Message_PaletteChange DCD Message_PaletteChange
] ]
DCD Message_SaveDesktop
DCD Message_MenusDeleted DCD Message_MenusDeleted
DCD Message_HelpRequest DCD Message_HelpRequest
DCD Message_Iconize DCD Message_Iconize
...@@ -153,6 +152,8 @@ Start ...@@ -153,6 +152,8 @@ Start
STR r0,Windows_Selected STR r0,Windows_Selected
STR r0,Iconbar_Icons STR r0,Iconbar_Icons
STR r0,soft_selection_window STR r0,soft_selection_window
STR r0,CachedBackdrop_x1
STR r0,CachedBackdrop_y1
SUB r0,r0,#1 SUB r0,r0,#1
STR r0,CachedBackdropMode STR r0,CachedBackdropMode
...@@ -542,7 +543,7 @@ PlotImageTiled ...@@ -542,7 +543,7 @@ PlotImageTiled
LDR r14,[r1,#28] ; X0 of current rectangle. LDR r14,[r1,#28] ; X0 of current rectangle.
LDR r0,scale_x1 ; width of image in OS units LDR r0,scale_x1 ; width of image in OS units
DivRem r3,r14,r0,r2 ; DivRem r3,r14,r0,r2,norem ;
MUL r6,r0,r3 ; MinX of leftmost tile to plot MUL r6,r0,r3 ; MinX of leftmost tile to plot
Debug bd,"First x ",r6 Debug bd,"First x ",r6
...@@ -558,7 +559,7 @@ PlotImageTiled ...@@ -558,7 +559,7 @@ PlotImageTiled
LDR r4,[r1,#32] ; Y0 of current rectangle. LDR r4,[r1,#32] ; Y0 of current rectangle.
SUB r2,r0,r4 ; r2 = ScrY1 - Y0 SUB r2,r0,r4 ; r2 = ScrY1 - Y0
ADD r2,r2,r3 ; r2 = (ScrY1-Y0)+YSize-1 ADD r2,r2,r3 ; r2 = (ScrY1-Y0)+YSize-1
DivRem r3,r2,r14,r5 ; r3 = (ScrY1-Y0+YSize-1) / YSize DivRem r3,r2,r14,r5,norem ; r3 = (ScrY1-Y0+YSize-1) / YSize
LDR r14,scale_y1 ; LDR r14,scale_y1 ;
MUL r5,r3,r14 ; r5 = INT ( (ScrY1-Y0+YSize-1) / YSize ) * YSize MUL r5,r3,r14 ; r5 = INT ( (ScrY1-Y0+YSize-1) / YSize ) * YSize
SUB r8,r0,r5 ; r3 = ScrY1 - r5 (Base Y) SUB r8,r0,r5 ; r3 = ScrY1 - r5 (Base Y)
......