>PatchAll By The Moog 1995 Matthew Godbolt $;" at line "; "OS_Module",18,"WindowManager" ,,,WimpMod code% &2000 pass%=4 O%=code% [OPT pass% EQUD 0 EQUD init EQUD final EQUD 0 EQUD title EQUD help EQUD 0 EQUD 0 EQUD 0 EQUD 0 EQUD 0 .title EQUS "PatchAll" EQUB 0 .help DEQUS "PatchAll"+ 9+"1.10 (12 Jul 1993) 1995 Matthew Godbolt" EQUB 0 ALIGN .init STMFD R13!,{R0,R1,R14} MOV R1,#8 LDR R0,[R1] STR R0,oldbranch ADR R1,myjump-8 SUB R0,R0,R1,LSR #2 STR R0,myjump ADR R0,myswihand-&10 MOV R0,R0,LSR #2 R R0,R0,#&EA000000 MOV R1,#8 STR R0,[R1] ADR R1,fontname MOV R2,#13*16 MOV R3,#13*16 MOV R4,#0 MOV R5,#0 SWI "XFont_FindFont" MVNVS R0,#0 STR R0,myfonthandle LDMFD R13!,{R0,R1,PC} .zox EQUD 0 72.fontname EQUS"Trinity.Medium"+ 13:ALIGN .myfonthandle EQUD0 .myjump B &1F033C0 .final STMFD R13!,{R0,R1,R14} LDR R0,oldbranch MOV R1,#8 STR R0,[R1] LDR R0,myfonthandle SWI "XFont_LoseFont" B;MOV R0,#7:LDR R2,SpriteAt:MOVS R2,R2:SWINE "XOS_Module" LDMFD R13!,{R0,R1,PC}^ D".oldbranch EQUD &EA6051CD .Mow EQUD &0 .myswihand STMFD R13!,{R10,R14} BIC R14,R14,#&FC000003 LDR R14,[R14,#-4] BIC R14,R14,#&FF000000 STR R14,Mow BIC R14,R14,#&20000 N)LDR R10,ploticon:CMP R14,R10:BEQ Plot O&LDR R10,ospl:CMP R14,R10:BEQ Write P)LDR R10,ClrBack:CMP R14,R10:BEQ Clear LDR R10,CreateM:CMP R14,R10 R!LDMFD R13!,{R10,R14}:B myjump .Swi_cm LDMFD R13!,{R10,R14} STMFD R13!,{R0-R12,R14} BL Jacob LDMFD R13!,{R0-R12,R14} B myjump .Jacob STMFD R13!,{R14} \ TST R1,#3:LDMNEFD R13!,{PC}^ ADD R1,R1,#28 .Flopsy LDR R0,[R1,#8] `+LDRB R2,myfonthandle:BIC R0,R0,#&FF<<24 R R0,R0,R2,LSL #24 R R0,R0,#1<<6 STR R0,[R1,#8] dSLDR R0,[R1,#4]:MOVS R0,R0:CMNNE R0,#1:BEQ NotIndied:CMP R0,#&8000:BLT NotIndied e8STMFD R13!,{R1}:SWI "OS_ValidateAddress":MOVCC R1,R0 BLCC Jacob:LDMFD R13!,{R1} .NotIndied LDR R0,[R1] ADD R1,R1,#24 TST R0,#&80:BEQ Flopsy LDMFD R13!,{PC}^ .ploticon EQUD &400E2 .ClrBack EQUD 256+16 .CreateM EQUD &400D4 .ospl EQUD &45 .Word EQUD &E59AE05C .Wind EQUS "Wind" .Clear LDMFD R13!,{R10,R14} STMFD R13!,{R0-R12,R14} CMP R0,#1:BNE Normal y1LDR R0,[R10]:LDR R1,Wind:CMP R0,R1:BNE Normal z(LDR R0,[R10,#4]:CMN R0,#1:BEQ Normal {(BIC R14,R14,#&FC000003:LDR R14,[R14] |%LDR R0,Word:CMP R0,R14:BNE Normal LDR R0,[R10,#88] ~ORSB R6,R0,#0:.shpondle ADD R14,R6,#512:CMP R14,R2:MOVLT R6,R14:BLT shpondle LDR R0,[R10,#92] MRSB R7,R0,#0:.shpondle SUB R14,R7,#256:CMP R14,R3:MOV R7,R14:BGT shpondle =MVN R0,#0:MOV R1,#9:SWI "XOS_ReadModeVariable":BVS Normal MVN R1,#0 CMP R2,#0:ADREQ R1,Mode0 CMP R2,#2:ADREQ R1,Mode12 CMP R2,#3:ADREQ R1,Mode15 CMN R1,#1:BEQ Normal LDR R14,ModeLoad CMP R14,R2:BEQ DontLoad STMFD R13!,{R0-R7} ;MOV R0,#7:LDR R2,SpriteAt:MOVS R2,R2:SWINE "XOS_Module" MOV R0,#5:LDR R1,[R13,#4] CMOV R2,#0:MOV R3,#0:SWI "XOS_File":ADDVS R13,R13,#32:BVS Normal HADD R3,R4,#4:MOV R0,#6:SWI "XOS_Module":ADDVS R13,R13,#32:BVS Normal "STR R2,SpriteAt:STR R4,[R2],#4 =LDR R1,[R13,#4]:MOV R0,#&FF:MOV R3,#0:MOV R4,#0:MOV R5,#0 %SWI "XOS_File":LDMFD R13!,{R0-R7} STR R2,ModeLoad .DontLoad MOV R8,R4:MOV R9,R5 MOV R0,#&22: R R0,R0,#&100 LDR R1,SpriteAt ADR R2,Backg !MOV R3,R6:MOV R4,R7:MOV R5,#0 .Loop STMFD R13!,{R0-R5} SWI "XOS_SpriteOp" LDMFD R13!,{R0-R5} BVS Normal %ADD R3,R3,#512:CMP R3,R8:BLT Loop /MOV R3,R6:ADD R4,R4,#256:CMP R4,R9:BLT Loop LDMFD R13!,{R0-R12,R14} MOVS PC,R14 .Normal LDMFD R13!,{R0-R12,R14} B myjump %.Backg EQUS "background"+ 0:ALIGN .ModeLoad EQUD -1 .SpriteAt EQUD 0 :.Mode0 EQUS ".WindowDrop.Sprites0"+ 0:ALIGN <.Mode12 EQUS ".WindowDrop.Sprites12"+ 0:ALIGN <.Mode15 EQUS ".WindowDrop.Sprites15"+ 0:ALIGN .Word2 LDR R14,[R12,#84] .Word3 EQUD &0A00000C .Bonga EQUD 0 .WriteMen EQUD &70D0121 .Write LDMFD R13!,{R10,R14} STMFD R13!,{R0-R12,R14} ,BIC R14,R14,#&FC000003:LDR R14,[R14,#16] &LDR R4,Word2:CMP R4,R14:BNE Normal LDR R14,[R13,#64] ,BIC R14,R14,#&FC000003:LDR R14,[R14,#16] &LDR R4,Word3:CMP R4,R14:BNE Normal CMP R0,#4:BNE Normal 7LDR R2,[R13,#60]:LDR R14,[R13,#56]: R9,R14,#&F<<12 CMP R9,#12<<12:BGE Normal )LDR R9,WriteMen:CMP R14,R9:BEQ Normal STMFD R13!,{R0-R2,R14} BMOV R0,#&87:SWI "XOS_Byte":LDMVSFD R13!,{R0-R2,R14}:BVS Normal /LDRB R0,ModeLast:CMP R0,R2:STRB R2,ModeLast BEQ Already STMFD R13!,{R0-R5} -LDRB R0,myfonthandle:SWI "XFont_LoseFont" ADR R1,fontname MOV R2,#13*16 MOV R3,#13*16 MOV R4,#0 MOV R5,#0 SWI "XFont_FindFont" MVNVS R0,#0 STR R0,myfonthandle LDMFD R13!,{R0-R5} .Already LDMFD R13!,{R0-R2,R14} #TST R14,#2: Q R9,#0:MOVNE R9,#8 1CMP R9,#0:BNE h:TST R14,#&200:MOVNE R9,#16:.h F.loop LDRB R0,[R2],#1:CMP R0,#32:ADDCS R1,R1,R9:BCS loop:STR R1,Bo OLDR R1,[R13,#56]:LDR R2,[R13,#60]:LDRB R0,myfonthandle:BIC R1,R1,#&FF000000 R R1,R1,R0,LSL #24 R R1,R1,#&40: bl(&78E8):LDR R1,Bo #CMP R9,#8:SUBEQ R1,R1,R4,LSR #1 CMP R9,#16:SUBEQ R1,R1,R4 STR R1,Bo LDR R1,[R13,#56] (MOV R9,R1,LSR #28:STRB R9,[R12,#124] R14,R1,#&F000000 MOVS R14,R14,LSR #24 CMPEQ R9,#0: Q R14,#7 STRB R14,[R12,#123] bl(&7348) BVS Normal LDMFD R13!,{R0-R12,R14} 0MOV R0,#&D4:LDR R1,Bo:SUB R2,R2,#22:B myjump .Bo &0 .ModeLast EQUD .Wordx LDRB R14,[R4,#40] .Plot LDMFD R13!,{R10,R14} STMFD R13!,{R0-R12,R14} ,BIC R14,R14,#&FC000003:LDR R14,[R14,#16] &LDR R7,Wordx:CMP R7,R14:BNE Normal @LDR R14,[R1,#&18]:LDRB R14,[R14,#1]:CMP R14,# "d":BNE Normal ILDR R0,[R4,#4]:ADR R7,Moglin:.CopLp LDRB R14,[R0],#1:STRB R14,[R7],#1 8CMP R14,#0:BNE CopLp:MOV R14,# ".":STRB R14,[R7,#-1] FLDR R0,[R1,#&14]:.CopLp LDRB R14,[R0],#1:CMP R14,#0:CMPNE R14,#&0D Q R14,#0:STRB R14,[R7],#1 BNE CopLp LDR R0,[R12,#8] .RepLp TEQ R0,#&40000001:BEQ Normal ADR R7,Moglin:LDR R6,[R0,#4] /.SeeIfSame LDRB R5,[R7],#1:LDRB R14,[R6],#1 "TEQ R14,#0:TEQEQ R5,#0:BEQ Yes (CMP R14,R5:BEQ SeeIfSame:BNE NextOne CLDMIA R1,{R0-R7}:ADR R6,open_dir:ADR R14,Brea:STMIA R14,{R0-R7} LDMFD R13!,{R0-R12,R14} ADR R1,Brea:B myjump .NextOne LDR R0,[R0]:B RepLp ).open_dir EQUS "sdirectoryo"+ 0:ALIGN $.Brea ]:P%+=64:O%+=64:[OPT pass% .Moglin ]P%+=256:O%+=256 "OS_File",10,".AllPatch",&FFA,,code%,O% bl(addr) [OPT pass% ADR R14,P%+16 R R14,R14,#3 LDR PC,P%+4 EQUD WimpMod+addr