Commit 25c8889b authored by Ben Avison's avatar Ben Avison
Browse files

Bugfixes.

Detail:
  * Message list pointers passed into Wimp_Initialises that didn't follow
    Wimp_StartTask used to be corrupted
  * Stack imbalance in ExitPoll if SWI Portable_Speed didn't preserve flags
  * 32-bit mode test speedups
  * Builds without RO4 option set
Admin:
  Tested on Tungsten and Risc PC.

Version 4.79. Tagged as 'Wimp-4_79'
parent 3b1e336c
......@@ -11,13 +11,13 @@
GBLS Module_HelpVersion
GBLS Module_ComponentName
GBLS Module_ComponentPath
Module_MajorVersion SETS "4.78"
Module_Version SETA 478
Module_MajorVersion SETS "4.79"
Module_Version SETA 479
Module_MinorVersion SETS ""
Module_Date SETS "30 Oct 2002"
Module_ApplicationDate SETS "30-Oct-02"
Module_Date SETS "31 Oct 2002"
Module_ApplicationDate SETS "31-Oct-02"
Module_ComponentName SETS "Wimp"
Module_ComponentPath SETS "RiscOS/Sources/Desktop/Wimp"
Module_FullVersion SETS "4.78"
Module_HelpVersion SETS "4.78 (30 Oct 2002)"
Module_FullVersion SETS "4.79"
Module_HelpVersion SETS "4.79 (31 Oct 2002)"
END
/* (4.78)
/* (4.79)
*
* This file is automatically maintained by srccommit, do not edit manually.
* Last processed by srccommit version: 1.68.
*
*/
#define Module_MajorVersion_CMHG 4.78
#define Module_MajorVersion_CMHG 4.79
#define Module_MinorVersion_CMHG
#define Module_Date_CMHG 30 Oct 2002
#define Module_Date_CMHG 31 Oct 2002
#define Module_MajorVersion "4.78"
#define Module_Version 478
#define Module_MajorVersion "4.79"
#define Module_Version 479
#define Module_MinorVersion ""
#define Module_Date "30 Oct 2002"
#define Module_Date "31 Oct 2002"
#define Module_ApplicationDate "30-Oct-02"
#define Module_ApplicationDate "31-Oct-02"
#define Module_ComponentName "Wimp"
#define Module_ComponentPath "RiscOS/Sources/Desktop/Wimp"
#define Module_FullVersion "4.78"
#define Module_HelpVersion "4.78 (30 Oct 2002)"
#define Module_LibraryVersionInfo "4:78"
#define Module_FullVersion "4.79"
#define Module_HelpVersion "4.79 (31 Oct 2002)"
#define Module_LibraryVersionInfo "4:79"
......@@ -38,8 +38,10 @@ markinitialised
STRPL R14,pendingtask
BPL %FT02
;
Push "R3"
MOV R3,#task_datasize
BL claimblock
Pull "R3"
BVS %FT99
;
MOV R14,#nullptr ; null slot if new task
......
......@@ -349,7 +349,7 @@ SWIWimp_Poll
LDREQ R14,=masknewcodes
ORREQ R0,R0,R14 ; disallow new reason codes
; set up R3 -> poll word, with top bit set => urgent
; set up R3 -> poll word, with bottom bit set => urgent
; also validate R0,R3 (but only if task knows about Wimp 2.23)
LDR R14,[R4,#task_wimpver]
......
......@@ -5202,7 +5202,7 @@ int_set_icon_state
TST R14,#if_text
BEQ uiclp
[ BlendedFonts
[ BlendedFonts :LAND: RO4
; any selectable text+sprite icons must be fully redrawn
LDR r0,ThreeDFlags
TST r0,#ThreeDFlags_NoFontBlending
......
......@@ -3681,7 +3681,7 @@ crmenuiconlp
Debug menuparam,"menu flags, ptr",R4,R5
MOV x0,#0
[ RO4
[ ThreeDPatch
LDRB x1,arrowIconWidth
|
MOV x1,#24
......@@ -3689,7 +3689,7 @@ crmenuiconlp
LDR R1,reversedmenu ; Is it a reversed menu?
CMP R1,#"\\"
LDREQ x0,menuiconwidth ; Put it where the arrow is
[ RO4
[ ThreeDPatch
LDREQB R1,arrowIconWidth
ADDEQ x0,x0,R1 ; supposed to be.
ADDEQ x1,x0,R1
......@@ -3803,7 +3803,7 @@ crmenuiconlp
; BIC R1,R1,#if_buttontype
; ORR R1,R1,#13:SHL:ib_esg ; set esg 13
[ RO4
[ ThreeDPatch
LDRB x0,arrowIconWidth
|
MOV x0,#24
......@@ -3818,7 +3818,7 @@ crmenuiconlp
; arrow
MOV x0,x1
[ RO4
[ ThreeDPatch
LDRB R1,arrowIconWidth
ADD x1,x0,R1 ; width of arrow icon
|
......@@ -3827,7 +3827,7 @@ crmenuiconlp
LDR R1,reversedmenu ; Is it a reversed menu?
CMP R1,#"\\"
MOVEQ x0,#0 ; Put it where tick is supposed to be
[ RO4
[ ThreeDPatch
LDREQB x1,arrowIconWidth
|
MOVEQ x1,#24
......@@ -3853,7 +3853,7 @@ crmenuiconlp
BL createmenuicon ; #### check for errors!
LDR x0,menuiconwidth
[ RO4
[ ThreeDPatch
LDRB R14,arrowIconWidth
ADD x0,x0,R14
ADD x1,x0,R14
......
......@@ -1056,12 +1056,13 @@ returnerror
LDRNE R14,WimpPortableFlag
TEQNE R14,#0 ; And the portable module present?
]
Push "R0-R1",NE
MOVNE R0,#0
MOVNE R1,#0
SWINE XPortable_Speed ; if not a null event then make it go fast
Pull "R0-R1",NE
BEQ %FT01
Push "R0-R1"
MOV R0,#0
MOV R1,#0
SWI XPortable_Speed ; if not a null event then make it go fast
Pull "R0-R1"
01
[ debugtask3
LDR R14,singletaskhandle
CMP R14,#nullptr ; if single-tasking,
......@@ -1215,18 +1216,17 @@ returnerror
[ No32bitCode
LDR R0,[R5,#task_registers+4*15]
|
MRS R0,CPSR
TST R0,#2_11100 ; 32-bit system?
LDREQ R0,[R5,#task_registers+4*15] ; 26-bit: modify R15
LDRNE R0,[R5,#task_registers+4*16] ; 32-bit: modify CPSR
TEQ PC,PC ; 32-bit system?
LDRNE R0,[R5,#task_registers+4*15] ; 26-bit: modify R15
LDREQ R0,[R5,#task_registers+4*16] ; 32-bit: modify CPSR
]
BICVC R0,R0,#V_bit ; set up correct V bit
ORRVS R0,R0,#V_bit
[ No32bitCode
STR R0,[R5,#task_registers+4*15] ; save for new task
|
STREQ R0,[R5,#task_registers+4*15]
STRNE R0,[R5,#task_registers+4*16]
STRNE R0,[R5,#task_registers+4*15]
STREQ R0,[R5,#task_registers+4*16]
]
;
; set up callback handler
......@@ -1291,13 +1291,10 @@ callbackpoll
;
; exit to caller
;
MOV R0,#0
MRS R0,CPSR
TST R0,#2_11100 ; are we 26 or 32-bit?
TEQ PC,PC ; are we 26 or 32-bit?
ADD lr_svc,R4,#task_registers ; lr_svc --> register block
LDRNE R0,[lr_svc,#16*4]
MSRNE SPSR_cxsf,R0
LDREQ R0,[lr_svc,#16*4]
MSREQ SPSR_cxsf,R0
LDMIA lr_svc,{R0-R14}^ ; restore USR regs
NOP
LDR lr_svc,[lr_svc,#15*4]
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment