I see, that I am getting older, because the 8 bit (6502, 8088) and 16 bit (68000) era was perfect for me and I am stumbling around with 32 bit (see code below), but 64 bit is to much for me
I tried to convert my routine to 64 bit by replacing all eax to rax, which I was able to do after a while... but how to deal with the error in the !And rax,$FF000000 line?
Code: Select all
Procedure CustomShadowHeavyDarken(Source,Destination)
EnableASM
CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
!mov eax,[p.v_Source]
!And eax,$FF
!shl eax,24
!CMP eax,[p.v_Destination]
!ja done.l_customshadowheavydarken
!mov eax,[p.v_Destination]
!and eax,$FF000000
!done.l_customshadowheavydarken:
!or eax,[v_ColorIconShadow]
CompilerElse
!mov rax,[p.v_Source]
!And rax,$FF
!shl rax,24
!CMP rax,[p.v_Destination]
!ja done.l_customshadowheavydarken
!mov rax,[p.v_Destination]
!and rax,$FF000000
!done.l_customshadowheavydarken:
!or rax,[v_ColorIconShadow]
CompilerEndIf
DisableASM
ProcedureReturn
EndProcedure