[x64] Cures startup in front of PureBasicStart

Share your advanced PureBasic knowledge/code with the community.
User avatar
oryaaaaa
Enthusiast
Enthusiast
Posts: 791
Joined: Mon Jan 12, 2004 11:40 pm
Location: Okazaki, JAPAN

[x64] Cures startup in front of PureBasicStart

Post by oryaaaaa »

Hello, This is oryaaaaa.
I make Super sound play soulutions softwares. Many users call me "Master piece" "Grand master"
Just this technique code is very storange codes. coz, Jmp Jmp Whay?
But CPU Initialize run. Intel CPU run prepare test before official running code.

Intel admin running code?

Code: Select all

JMP ABCDE
HLT
HLT
ABCDE:
This code add, This thread is CPU admin mode .... hehehe

Intialize register

Code: Select all

;  Rax,Rbx,Rcx,Rdx,Rsp,Rbp,Rsi,Rdi,R8,R9,R10,R11,R12,R13,R14,R15
;  CR0,CR1,CR2,CR3,CR4,CR5,CR6,CR7,CR8,CR9,CR10,CR11,CR12,CR13,CR14,CR15
;  DR0,DR1,DR2,DR3,DR4,DR5,DR6,DR7,DR8,DR9,DR10,DR11,DR12,DR13,DR14,DR15
;  and FPU registers, etc.
What? Are you okay?

Just this code

Code: Select all

JMP ABCDE
XOR Rsp, Rsp
ABCDE:
Image is quality up!!!!!!! Sound is quality up!!!!!!!!!!!!!! Why?
Do act from the Result.


How to make?
Select your sample.pb
output PureBasic.asm
Add intialize code
REASM PureBasic.asm , output to "Sample_XXXX.exe"

Code: Select all

; ReAsm sample code 2016/08/24 5:25
; Copyright (c) Hiroyuki Yokota
;
; Ultra low jitter programming "Startup Intialize Process"
;  Rax,Rbx,Rcx,Rdx,Rsp,Rbp,Rsi,Rdi,R8,R9,R10,R11,R12,R13,R14,R15
;  CR0,CR1,CR2,CR3,CR4,CR5,CR6,CR7,CR8,CR9,CR10,CR11,CR12,CR13,CR14,CR15
;  DR0,DR1,DR2,DR3,DR4,DR5,DR6,DR7,DR8,DR9,DR10,DR11,DR12,DR13,DR14,DR15
;  and FPU registers, etc.
;
; Improved "Image quality"
; Improved "Sound quality"

#Ver = "Ver 1.0 - 2016.8.24 build"
#File = "ReAsmSampleCode.pb"
Global exeFasm.s{1} = "" ; "!"

Macro FASM
exeFasm + 
EndMacro

Global NewMap Register64.s()
Global NewMap Register32.s()
Global NewMap Register16.s()
Global NewMap Register8.s()
;
Register64("Rax") = "Rax"
Register64("Rbx") = "Rbx"
Register64("Rcx") = "Rcx"
Register64("Rdx") = "Rdx"
Register64("Rsp") = "Rsp"
Register64("Rbp") = "Rbp"
Register64("Rsi") = "Rsi"
Register64("Rdi") = "Rdi"
Register64("R8") = "R8"
Register64("R9") = "R9"
Register64("R10") = "R10"
Register64("R11") = "R11"
Register64("R12") = "R12"
Register64("R13") = "R13"
Register64("R14") = "R14"
Register64("R15") = "R15"
;
Register32("Rax") = "Eax"
Register32("Rbx") = "Ebx"
Register32("Rcx") = "Ecx"
Register32("Rdx") = "Edx"
Register32("Rsp") = "Esp"
Register32("Rbp") = "Ebp"
Register32("Rsi") = "Esi"
Register32("Rdi") = "Edi"
Register32("R8") = "R8d"
Register32("R9") = "R9d"
Register32("R10") = "R10d"
Register32("R11") = "R11d"
Register32("R12") = "R12d"
Register32("R13") = "R13d"
Register32("R14") = "R14d"
Register32("R15") = "R15d"
;
Register16("Rax") = "ax"
Register16("Rbx") = "bx"
Register16("Rcx") = "cx"
Register16("Rdx") = "dx"
Register16("Rsp") = "sp"
Register16("Rbp") = "bp"
Register16("Rsi") = "si"
Register16("Rdi") = "di"
Register16("R8") = "R8w"
Register16("R9") = "R9w"
Register16("R10") = "R10w"
Register16("R11") = "R11w"
Register16("R12") = "R12w"
Register16("R13") = "R13w"
Register16("R14") = "R14w"
Register16("R15") = "R15w"
;
Register8("Rax") = "al"
Register8("Rbx") = "bl"
Register8("Rcx") = "cl"
Register8("Rdx") = "dl"
Register8("Rsp") = "spl"
Register8("Rbp") = "bpl"
Register8("Rsi") = "sil"
Register8("Rdi") = "dil"
Register8("R8") = "R8b"
Register8("R9") = "R9b"
Register8("R10") = "R10b"
Register8("R11") = "R11b"
Register8("R12") = "R12b"
Register8("R13") = "R13b"
Register8("R14") = "R14b"
Register8("R15") = "R15b"

Global NewMap Register64A.s()
Global NewMap Register64B.s()
Global NewMap Register32A.s()
Global NewMap Register32B.s()
Global NewMap Register16A.s()
Global NewMap Register16B.s()
Global NewMap Register8A.s()
Global NewMap Register8B.s()
;
Register64A("R14") = "R14"
Register64A("R12") = "R12"
Register64A("R10") = "R10"
Register64A("R8") = "R8"
Register64A("Rbp") = "Rbp"
Register64A("Rdi") = "Rdi"
Register64A("Rbx") = "Rbx"
Register64A("Rcx") = "Rcx"
;
Register64B("R15") = "R15"
Register64B("R13") = "R13"
Register64B("R11") = "R11"
Register64B("R9") = "R9"
Register64B("Rsp") = "Rsp"
Register64B("Rsi") = "Rsi"
Register64B("Rax") = "Rax"
Register64B("Rdx") = "Rdx"
;
Register32A("R14") = "R14d"
Register32A("R12") = "R12d"
Register32A("R10") = "R10d"
Register32A("R8") = "R8d"
Register32A("Rbp") = "Ebp"
Register32A("Rdi") = "Edi"
Register32A("Rbx") = "Ebx"
Register32A("Rcx") = "Ecx"
;
Register32B("R15") = "R15d"
Register32B("R13") = "R13d"
Register32B("R11") = "R11d"
Register32B("R9") = "R9d"
Register32B("Rsp") = "Esp"
Register32B("Rsi") = "Esi"
Register32B("Rax") = "Eax"
Register32B("Rdx") = "Edx"
;
Register16A("R14") = "R14w"
Register16A("R12") = "R12w"
Register16A("R10") = "R10w"
Register16A("R8") = "R8w"
Register16A("Rbp") = "bp"
Register16A("Rdi") = "di"
Register16A("Rbx") = "bx"
Register16A("Rcx") = "cx"
;
Register16B("R15") = "R15w"
Register16B("R13") = "R13w"
Register16B("R11") = "R11w"
Register16B("R9") = "R9w"
Register16B("Rsp") = "sp"
Register16B("Rsi") = "si"
Register16B("Rax") = "ax"
Register16B("Rdx") = "dx"
;
Register8A("R14") = "R14b"
Register8A("R12") = "R12b"
Register8A("R10") = "R10b"
Register8A("R8") = "R8b"
Register8A("Rbp") = "bpl"
Register8A("Rdi") = "dil"
Register8A("Rbx") = "bl"
Register8A("Rcx") = "cl"
;
Register8B("R15") = "R15b"
Register8B("R13") = "R13b"
Register8B("R11") = "R11b"
Register8B("R9") = "R9b"
Register8B("Rsp") = "spl"
Register8B("Rsi") = "sil"
Register8B("Rax") = "al"
Register8B("Rdx") = "dl"
;;
Global NewMap  FPU_A.s()
;
FPU_A("0") = "ST0"
FPU_A("2") = "ST2"
FPU_A("4") = "ST4"
FPU_A("6") = "ST6"
;
Global NewMap  FPU_B.s()
;
FPU_B("1") = "ST1"
FPU_B("3") = "ST3"
FPU_B("5") = "ST5"
FPU_B("7") = "ST7"
;

Global NewList Buffer.s()
ClearList(Buffer())

Procedure JMPskipRegisterClear(start.i, cycle.i)
  Protected pos.i
  For pos=start To start+(cycle-1)
    AddElement(Buffer()) : Buffer() = FASM "JMP JMPskipRegisterClear"+Str(pos)
    AddElement(Buffer()) : Buffer() = FASM "JMPskipRegisterClear_CLD"+Str(pos)+":"
    AddElement(Buffer()) : Buffer() = FASM "CLC"
    AddElement(Buffer()) : Buffer() = FASM "STC"
    AddElement(Buffer()) : Buffer() = FASM "STC"
    AddElement(Buffer()) : Buffer() = FASM "STC"
    AddElement(Buffer()) : Buffer() = FASM "CLC"
    AddElement(Buffer()) : Buffer() = FASM "CLD"
    AddElement(Buffer()) : Buffer() = FASM "STD"
    AddElement(Buffer()) : Buffer() = FASM "STD"
    AddElement(Buffer()) : Buffer() = FASM "STD"
    AddElement(Buffer()) : Buffer() = FASM "CLD"
    AddElement(Buffer()) : Buffer() = FASM "CLI"
    AddElement(Buffer()) : Buffer() = FASM "STI"
    AddElement(Buffer()) : Buffer() = FASM "STI"
    AddElement(Buffer()) : Buffer() = FASM "STI"
    AddElement(Buffer()) : Buffer() = FASM "CLI"
    AddElement(Buffer()) : Buffer() = FASM "CLAC"
    AddElement(Buffer()) : Buffer() = FASM "STAC"
    AddElement(Buffer()) : Buffer() = FASM "STAC"
    AddElement(Buffer()) : Buffer() = FASM "STAC"
    AddElement(Buffer()) : Buffer() = FASM "CLAC"
    AddElement(Buffer()) : Buffer() = FASM "INT 8"
    AddElement(Buffer()) : Buffer() = FASM "CLTS"
    AddElement(Buffer()) : Buffer() = FASM "JMP JMPskipRegisterClear_CLD"+Str(pos)
    ResetMap(Register64A()) : ResetMap(Register32A()) : ResetMap(Register16A()) : ResetMap(Register8A())
    ForEach Register64A()
      NextMapElement(Register8A())
      AddElement(Buffer()) : Buffer() = FASM "XOR "+Register64A()+", "+Register64A()
      AddElement(Buffer()) : Buffer() = FASM "XOR "+Register8A()+", "+Register8A()
    Next
    ResetMap(Register8A())
    ForEach Register64A()
      NextMapElement(Register8A())
      AddElement(Buffer()) : Buffer() = FASM "XOR "+Register64A()+", "+Register64A()
      AddElement(Buffer()) : Buffer() = FASM "XOR "+Register8A()+", "+Register8A()
    Next
    ResetMap(Register8A())
    ForEach Register64A()
      NextMapElement(Register8A())
      AddElement(Buffer()) : Buffer() = FASM "XCHG "+Register64A()+", "+Register64A()
      AddElement(Buffer()) : Buffer() = FASM "XCHG "+Register8A()+", "+Register8A()
    Next
    ResetMap(Register8A())
    ForEach Register64A()
      NextMapElement(Register8A())
      AddElement(Buffer()) : Buffer() = FASM "AND "+Register64A()+", "+Register64A()
      AddElement(Buffer()) : Buffer() = FASM "AND "+Register8A()+", "+Register8A()
    Next
    ResetMap(Register8A())
    ForEach Register64A()
      NextMapElement(Register8A())
      AddElement(Buffer()) : Buffer() = FASM "OR "+Register64A()+", "+Register64A()
      AddElement(Buffer()) : Buffer() = FASM "OR "+Register8A()+", "+Register8A()
    Next
    ResetMap(Register8A())
    ForEach Register64A()
      NextMapElement(Register8A())
      AddElement(Buffer()) : Buffer() = FASM "OR "+Register64A()+", "+Register64A()
      AddElement(Buffer()) : Buffer() = FASM "OR "+Register8A()+", "+Register8A()
    Next
    ResetMap(Register8A())
    ForEach Register64A()
      NextMapElement(Register8A())
      AddElement(Buffer()) : Buffer() = FASM "XOR "+Register64A()+", "+Register64A()
      AddElement(Buffer()) : Buffer() = FASM "XOR "+Register8A()+", "+Register8A()
    Next
    ResetMap(Register64B()) : ResetMap(Register32B()) : ResetMap(Register16B()) : ResetMap(Register8B())
    ForEach Register64B()
      NextMapElement(Register8B())
      AddElement(Buffer()) : Buffer() = FASM "XOR "+Register64B()+", "+Register64B()
      AddElement(Buffer()) : Buffer() = FASM "XOR "+Register8B()+", "+Register8B()
    Next
    ResetMap(Register8B())
    ForEach Register64B()
      NextMapElement(Register8B())
      AddElement(Buffer()) : Buffer() = FASM "XOR "+Register64B()+", "+Register64B()
      AddElement(Buffer()) : Buffer() = FASM "XOR "+Register8B()+", "+Register8B()
    Next
    ResetMap(Register8B())
    ForEach Register64B()
      NextMapElement(Register8B())
      AddElement(Buffer()) : Buffer() = FASM "XCHG "+Register64B()+", "+Register64B()
      AddElement(Buffer()) : Buffer() = FASM "XCHG "+Register8B()+", "+Register8B()
    Next
    ResetMap(Register8B())
    ForEach Register64B()
      NextMapElement(Register8B())
      AddElement(Buffer()) : Buffer() = FASM "AND "+Register64B()+", "+Register64B()
      AddElement(Buffer()) : Buffer() = FASM "AND "+Register8B()+", "+Register8B()
    Next
    ResetMap(Register8B())
    ForEach Register64B()
      NextMapElement(Register8B())
      AddElement(Buffer()) : Buffer() = FASM "OR "+Register64B()+", "+Register64B()
      AddElement(Buffer()) : Buffer() = FASM "OR "+Register8B()+", "+Register8B()
    Next
    ResetMap(Register8B())
    ForEach Register64B()
      NextMapElement(Register8B())
      AddElement(Buffer()) : Buffer() = FASM "OR "+Register64B()+", "+Register64B()
      AddElement(Buffer()) : Buffer() = FASM "OR "+Register8B()+", "+Register8B()
    Next
    ResetMap(Register8B())
    ForEach Register64B()
      NextMapElement(Register8B())
      AddElement(Buffer()) : Buffer() = FASM "XOR "+Register64B()+", "+Register64B()
      AddElement(Buffer()) : Buffer() = FASM "XOR "+Register8B()+", "+Register8B()
    Next
    AddElement(Buffer()) : Buffer() = FASM "JMPskipRegisterClear"+Str(pos)+":"
  Next
EndProcedure

Procedure CDRegisterClear(start.i, cycle.i)
  Protected pos.i, pos2.i
  For pos=start To start+(cycle-1)
    AddElement(Buffer()) : Buffer() = FASM "JMP CDRegisterClear_2nd"+Str(pos)
    AddElement(Buffer()) : Buffer() = FASM "CDRegisterClear_CLD"+Str(pos)+":"
    AddElement(Buffer()) : Buffer() = FASM "CLC"
    AddElement(Buffer()) : Buffer() = FASM "STC"
    AddElement(Buffer()) : Buffer() = FASM "STC"
    AddElement(Buffer()) : Buffer() = FASM "STC"
    AddElement(Buffer()) : Buffer() = FASM "CLC"
    AddElement(Buffer()) : Buffer() = FASM "CLD"
    AddElement(Buffer()) : Buffer() = FASM "STD"
    AddElement(Buffer()) : Buffer() = FASM "STD"
    AddElement(Buffer()) : Buffer() = FASM "STD"
    AddElement(Buffer()) : Buffer() = FASM "CLD"
    AddElement(Buffer()) : Buffer() = FASM "CLI"
    AddElement(Buffer()) : Buffer() = FASM "STI"
    AddElement(Buffer()) : Buffer() = FASM "STI"
    AddElement(Buffer()) : Buffer() = FASM "STI"
    AddElement(Buffer()) : Buffer() = FASM "CLI"
    AddElement(Buffer()) : Buffer() = FASM "CLAC"
    AddElement(Buffer()) : Buffer() = FASM "STAC"
    AddElement(Buffer()) : Buffer() = FASM "STAC"
    AddElement(Buffer()) : Buffer() = FASM "STAC"
    AddElement(Buffer()) : Buffer() = FASM "CLAC"
    AddElement(Buffer()) : Buffer() = FASM "INT 8"
    AddElement(Buffer()) : Buffer() = FASM "CLTS"
    AddElement(Buffer()) : Buffer() = FASM "JMP CDRegisterClear_CLD"+Str(pos)
    ForEach Register64A()
      AddElement(Buffer()) : Buffer() = FASM "XOR "+Register64A()+", "+Register64A()
      AddElement(Buffer()) : Buffer() = FASM "XOR "+Register64A()+", "+Register64A()
      AddElement(Buffer()) : Buffer() = FASM "AND "+Register64A()+", "+Register64A()
      AddElement(Buffer()) : Buffer() = FASM "AND "+Register64A()+", "+Register64A()
      AddElement(Buffer()) : Buffer() = FASM "OR "+Register64A()+", "+Register64A()
      AddElement(Buffer()) : Buffer() = FASM "OR "+Register64A()+", "+Register64A()
      AddElement(Buffer()) : Buffer() = FASM "XOR "+Register64A()+", "+Register64A()
      AddElement(Buffer()) : Buffer() = FASM "XOR "+Register64A()+", "+Register64A()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64A()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64A()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64A()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64A()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64A()
      For pos2 = 1 To 5
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR0, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR1, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR2, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR3, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR4, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR5, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR6, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR7, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR8, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR9, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR10, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR11, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR12, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR13, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR14, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR15, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR0, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR1, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR2, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR3, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR4, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR5, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR6, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR7, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR8, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR9, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR10, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR11, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR12, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR13, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR14, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR15, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR0, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR1, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR2, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR3, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR4, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR5, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR6, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR7, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR8, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR9, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR10, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR11, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR12, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR13, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR14, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR15, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR0, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR1, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR2, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR3, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR4, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR5, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR6, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR7, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR8, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR9, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR10, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR11, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR12, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR13, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR14, "+Register64A()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR15, "+Register64A()
      Next
    Next
    ForEach Register64B()
      AddElement(Buffer()) : Buffer() = FASM "XOR "+Register64B()+", "+Register64B()
      AddElement(Buffer()) : Buffer() = FASM "XOR "+Register64B()+", "+Register64B()
      AddElement(Buffer()) : Buffer() = FASM "AND "+Register64B()+", "+Register64B()
      AddElement(Buffer()) : Buffer() = FASM "AND "+Register64B()+", "+Register64B()
      AddElement(Buffer()) : Buffer() = FASM "OR "+Register64B()+", "+Register64B()
      AddElement(Buffer()) : Buffer() = FASM "OR "+Register64B()+", "+Register64B()
      AddElement(Buffer()) : Buffer() = FASM "XOR "+Register64B()+", "+Register64B()
      AddElement(Buffer()) : Buffer() = FASM "XOR "+Register64B()+", "+Register64B()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64B()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64B()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64B()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64B()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64B()
      For pos2 = 1 To 5
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR0, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR1, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR2, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR3, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR4, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR5, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR6, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR7, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR8, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR9, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR10, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR11, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR12, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR13, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR14, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR15, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR0, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR1, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR2, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR3, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR4, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR5, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR6, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR7, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR8, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR9, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR10, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR11, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR12, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR13, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR14, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR15, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR0, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR1, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR2, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR3, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR4, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR5, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR6, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR7, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR8, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR9, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR10, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR11, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR12, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR13, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR14, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  CR15, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR0, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR1, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR2, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR3, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR4, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR5, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR6, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR7, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR8, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR9, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR10, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR11, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR12, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR13, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR14, "+Register64B()
        AddElement(Buffer()) : Buffer() = FASM "MOV  DR15, "+Register64B()
      Next
    Next
    AddElement(Buffer()) : Buffer() = FASM "CDRegisterClear_2nd"+Str(pos)+":"
    AddElement(Buffer()) : Buffer() = FASM "JMP CDRegisterClear"+Str(pos)
    ForEach Register16A()
      AddElement(Buffer()) : Buffer() = FASM "HLT"
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "MOV  ES, "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "MOV  ES, "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "MOV  SS, "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "MOV  SS, "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "MOV  DS, "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "MOV  DS, "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "MOV  FS, "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "MOV  FS, "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "MOV  GS, "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "MOV  GS, "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "LLDT "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "LLDT "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "HLT"
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "MOV  ES, "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "MOV  ES, "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "MOV  SS, "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "MOV  SS, "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "MOV  DS, "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "MOV  DS, "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "MOV  FS, "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "MOV  FS, "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "MOV  GS, "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "MOV  GS, "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "LLDT "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "LLDT "+Register16A()
    Next
    ForEach Register16B()
      AddElement(Buffer()) : Buffer() = FASM "HLT"
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "MOV  ES, "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "MOV  ES, "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "MOV  SS, "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "MOV  SS, "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "MOV  DS, "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "MOV  DS, "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "MOV  FS, "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "MOV  FS, "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "MOV  GS, "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "MOV  GS, "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "LLDT "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "LLDT "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "HLT"
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "MOV  ES, "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "MOV  ES, "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "MOV  SS, "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "MOV  SS, "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "MOV  DS, "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "MOV  DS, "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "MOV  FS, "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "MOV  FS, "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "MOV  GS, "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "MOV  GS, "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "LLDT "+Register16B()      
      AddElement(Buffer()) : Buffer() = FASM "LLDT "+Register16B()      
    Next    
    AddElement(Buffer()) : Buffer() = FASM "NOT AH"
    AddElement(Buffer()) : Buffer() = FASM "NOT AH"
    AddElement(Buffer()) : Buffer() = FASM "NOT AH"
    AddElement(Buffer()) : Buffer() = FASM "XCHG AH, AH"
    AddElement(Buffer()) : Buffer() = FASM "SAHF"
    AddElement(Buffer()) : Buffer() = FASM "SAHF"
    AddElement(Buffer()) : Buffer() = FASM "NOT AH"
    AddElement(Buffer()) : Buffer() = FASM "NOT AH"
    AddElement(Buffer()) : Buffer() = FASM "NOT AH"
    AddElement(Buffer()) : Buffer() = FASM "XCHG AH, AH"
    AddElement(Buffer()) : Buffer() = FASM "SAHF"
    AddElement(Buffer()) : Buffer() = FASM "SAHF"
    AddElement(Buffer()) : Buffer() = FASM "NOT AH"
    AddElement(Buffer()) : Buffer() = FASM "NOT AH"
    AddElement(Buffer()) : Buffer() = FASM "NOT AH"
    AddElement(Buffer()) : Buffer() = FASM "XCHG AH, AH"
    AddElement(Buffer()) : Buffer() = FASM "SAHF"
    AddElement(Buffer()) : Buffer() = FASM "SAHF"
    AddElement(Buffer()) : Buffer() = FASM "NOT AH"
    AddElement(Buffer()) : Buffer() = FASM "NOT AH"
    AddElement(Buffer()) : Buffer() = FASM "NOT AH"
    AddElement(Buffer()) : Buffer() = FASM "XCHG AH, AH"
    AddElement(Buffer()) : Buffer() = FASM "SAHF"
    AddElement(Buffer()) : Buffer() = FASM "SAHF"
    AddElement(Buffer()) : Buffer() = FASM "CDRegisterClear"+Str(pos)+":"
  Next
EndProcedure

Procedure Startup_Magic_Ace(start.i, cycle.i)
  Protected pos.i
  For pos=start To start+(cycle-1)
    AddElement(Buffer()) : Buffer() = FASM "JMP Startup_Magic_Ace"+Str(pos)
    ResetMap(Register64A()) : ResetMap(Register32A()) : ResetMap(Register16A()) : ResetMap(Register8A())
    ForEach Register64A()
      Debug Register64A()
      NextMapElement(Register32A()) : NextMapElement(Register16A()) : NextMapElement(Register8A())
      AddElement(Buffer()) : Buffer() = FASM "MOV "+Register16A()+", "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64A()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64A()
      AddElement(Buffer()) : Buffer() = FASM "AND "+Register64A()+", "+Register64A()
      AddElement(Buffer()) : Buffer() = FASM "OR "+Register64A()+", "+Register64A()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register32A()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register32A()
      AddElement(Buffer()) : Buffer() = FASM "AND "+Register32A()+", "+Register32A()
      AddElement(Buffer()) : Buffer() = FASM "OR "+Register32A()+", "+Register32A()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "ADD "+Register16A()+", 0"
      AddElement(Buffer()) : Buffer() = FASM "SUB "+Register16A()+", 0"
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "AND "+Register16A()+", "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "OR "+Register16A()+", "+Register16A()
      AddElement(Buffer()) : Buffer() = FASM "XCHG "+Register16A()+", "+Register16A()
    Next
    ResetMap(Register64B()) : ResetMap(Register32B()) : ResetMap(Register16B()) : ResetMap(Register8B())
    ForEach Register64B()
      NextMapElement(Register32B()) : NextMapElement(Register16B()) : NextMapElement(Register8B())
      AddElement(Buffer()) : Buffer() = FASM "MOV "+Register16B()+", "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64B()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register64B()
      AddElement(Buffer()) : Buffer() = FASM "AND "+Register64B()+", "+Register64B()
      AddElement(Buffer()) : Buffer() = FASM "OR "+Register64B()+", "+Register64B()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register32B()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register32B()
      AddElement(Buffer()) : Buffer() = FASM "AND "+Register32B()+", "+Register32B()
      AddElement(Buffer()) : Buffer() = FASM "OR "+Register32B()+", "+Register32B()
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "ADD "+Register16B()+", 0"
      AddElement(Buffer()) : Buffer() = FASM "SUB "+Register16B()+", 0"
      AddElement(Buffer()) : Buffer() = FASM "NOT "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "AND "+Register16B()+", "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "OR "+Register16B()+", "+Register16B()
      AddElement(Buffer()) : Buffer() = FASM "XCHG "+Register16B()+", "+Register16B()
    Next
    AddElement(Buffer()) : Buffer() = FASM "Startup_Magic_Ace"+Str(pos)+":"
  Next
EndProcedure

Procedure CuresFPU_BasicClear(start.i, cycle.i)
  Protected pos.i
  For pos=start To start+(cycle-1)
    AddElement(Buffer()) : Buffer() = FASM "JMP CuresFPU_BasicClear1_"+Str(pos)
    AddElement(Buffer()) : Buffer() = FASM "HLT"
    AddElement(Buffer()) : Buffer() = FASM "RET"
    ForEach FPU_A()
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_A()
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_A()      
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_A()      
      AddElement(Buffer()) : Buffer() = FASM "FXCH "+FPU_A()      
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_A()
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_A()      
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_A()      
    Next
    ForEach FPU_B()
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_B()
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_B()
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_B()
      AddElement(Buffer()) : Buffer() = FASM "FXCH "+FPU_B()      
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_B()
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_B()
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_B()
    Next
    AddElement(Buffer()) : Buffer() = FASM "FNCLEX"
    AddElement(Buffer()) : Buffer() = FASM "FNCLEX"
    AddElement(Buffer()) : Buffer() = FASM "FNCLEX"
    AddElement(Buffer()) : Buffer() = FASM "FNINIT"
    AddElement(Buffer()) : Buffer() = FASM "FNINIT"
    AddElement(Buffer()) : Buffer() = FASM "FNINIT"
    AddElement(Buffer()) : Buffer() = FASM "CuresFPU_BasicClear1_"+Str(pos)+":"
    AddElement(Buffer()) : Buffer() = FASM "JMP CuresFPU_BasicClear2_"+Str(pos)
    AddElement(Buffer()) : Buffer() = FASM "HLT"
    AddElement(Buffer()) : Buffer() = FASM "RET"
    ForEach FPU_A()
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_A()
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_A()      
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_A()      
      AddElement(Buffer()) : Buffer() = FASM "FXCH "+FPU_A()      
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_A()
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_A()      
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_A()      
    Next
    ForEach FPU_B()
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_B()
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_B()
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_B()
      AddElement(Buffer()) : Buffer() = FASM "FXCH "+FPU_B()      
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_B()
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_B()
      AddElement(Buffer()) : Buffer() = FASM "FFREE "+FPU_B()
    Next
    AddElement(Buffer()) : Buffer() = FASM "FCLEX"
    AddElement(Buffer()) : Buffer() = FASM "FCLEX"
    AddElement(Buffer()) : Buffer() = FASM "FCLEX"
    AddElement(Buffer()) : Buffer() = FASM "FINIT"
    AddElement(Buffer()) : Buffer() = FASM "FINIT"
    AddElement(Buffer()) : Buffer() = FASM "FINIT"
    AddElement(Buffer()) : Buffer() = FASM "CuresFPU_BasicClear2_"+Str(pos)+":"
  Next
EndProcedure

Global dir$, Compiler.i, file$
file$=OpenFileRequester("PB", "*.pb", "*.pb", 0)
dir$ = GetPathPart(file$)

DeleteFile(dir$+"PureBasic.asm")

If FileSize(file$)>0
  Compiler = RunProgram(#PB_Compiler_Home+"\Compilers\pbcompiler", Chr(34)+file$+Chr(34)+" /MMX /commented", dir$, #PB_Program_Open | #PB_Program_Read)
  dir$+"PureBasic.asm"
  
  Output$ = ""
  If Compiler
    While ProgramRunning(Compiler)
      If AvailableProgramOutput(Compiler)
        Output$ + ReadProgramString(Compiler) + Chr(13)
      EndIf
    Wend
    Output$ + Chr(13) + Chr(13)
    Output$ + "Exitcode: " + Str(ProgramExitCode(Compiler))
    
    CloseProgram(Compiler)
    If IsProgram(Compiler)
      KillProgram(Compiler)
    EndIf    
  EndIf
Else
  MessageRequester("Error!", "There was an error creating the assembly code file.")
EndIf

MessageRequester("REASM", "Add Initialize code in front of PureBasicStart:")

ClearList(Buffer())
exeFasm = ""
Global callpb.i

If ReadFile(2, dir$)
  While Eof(2)=0
    AddElement(Buffer())
    Buffer() = ReadString(2)
  Wend
  CloseFile(2)
EndIf

ForEach Buffer()
  If FindString(Buffer(), "PureBasicStart:")
    Break
  EndIf  
Next
AddElement(Buffer())
Buffer() = "StartDashPointer0000_0000_00:"
AddElement(Buffer())
Buffer() = "JMP StartDashPointer0000"
AddElement(Buffer())
Buffer() = "NOP"      
AddElement(Buffer())
Buffer() = "HLT"      
AddElement(Buffer())
Buffer() = "HLT"      
AddElement(Buffer())
Buffer() = "HLT"      
AddElement(Buffer())
Buffer() = "WAIT"      
AddElement(Buffer())
Buffer() = "JMP StartDashPointer0000_0000_00"
AddElement(Buffer())
Buffer() = "StartDashPointer0000:"
AddElement(Buffer())
Buffer() = "JMP StartDashPointer0000_002"
AddElement(Buffer())
Buffer() = "HLT"      
AddElement(Buffer())
Buffer() = "HLT"      
AddElement(Buffer())
Buffer() = "HLT"      
AddElement(Buffer())
Buffer() = "RET"      
AddElement(Buffer())
Buffer() = "StartDashPointer0000_002:"
For nn=1 To 4
  AddElement(Buffer())
  Buffer() = "JMP StartDashPointer"+Str(nn)
  AddElement(Buffer())
  Buffer() = "NOP"      
  AddElement(Buffer())
  Buffer() = "NOP"      
  AddElement(Buffer())
  Buffer() = "StartDashPointer"+Str(nn)+":"
Next
JMPskipRegisterClear(10, 2)
CDRegisterClear(20, 2)
CuresFPU_BasicClear(30, 2)
Startup_Magic_Ace(40, 4)
JMPskipRegisterClear(50, 4)
AddElement(Buffer())
Buffer() = "JMP StartDashPointer_XOR_AND_Rsp_40_"
For nn=1 To 40
  AddElement(Buffer())
  Buffer() = "XOR Rsp, Rsp"          
  AddElement(Buffer())
  Buffer() = "XOR Rsp, Rsp"          
  AddElement(Buffer())
  Buffer() = "AND Rsp, Rsp"          
  AddElement(Buffer())
  Buffer() = "AND Rsp, Rsp"          
Next
AddElement(Buffer())
Buffer() = "XOR Rsp, Rsp"          
AddElement(Buffer())
Buffer() = "XOR Rsp, Rsp"          
AddElement(Buffer())
Buffer() = "StartDashPointer_XOR_AND_Rsp_40_:"
For nn=1 To 42
  AddElement(Buffer())
  Buffer() = "FNOP"      
Next

CreateFile(2, dir$)
ForEach Buffer()
  WriteStringN(2, Buffer())
Next
CloseFile(2)
file$ = dir$
dir$ = GetPathPart(file$)

Compiler = RunProgram(#PB_Compiler_Home+"\Compilers\pbcompiler", Chr(34)+file$+Chr(34)+" /MMX /UNICODE /REASM /EXE "+Chr(34)+"Sample_"+Str(Random(999999))+".exe"+Chr(34), dir$, #PB_Program_Open | #PB_Program_Read)
If Compiler
  While ProgramRunning(Compiler)
    If AvailableProgramOutput(Compiler)
      Output$ + ReadProgramString(Compiler) + Chr(13)
    EndIf
  Wend
  Output$ + Chr(13) + Chr(13)
  Output$ + "Exitcode: " + Str(ProgramExitCode(Compiler))
  
  CloseProgram(Compiler)
EndIf

MessageRequester("Output", Output$)
End
firace
Addict
Addict
Posts: 899
Joined: Wed Nov 09, 2011 8:58 am

Re: [x64] Cures startup in front of PureBasicStart

Post by firace »

Hi,

It may be a masterpiece, but I must admit I do not understand any of it and am puzzled!
Please can you try to clarify? Perhaps post an example (screenshot, sound recording)?
User avatar
electrochrisso
Addict
Addict
Posts: 980
Joined: Mon May 14, 2007 2:13 am
Location: Darling River

Re: [x64] Cures startup in front of PureBasicStart

Post by electrochrisso »

Interesting stuff oryaaaaa, cant say I am much of a ASM programmer but I am going to study your code though. :)
PureBasic! Purely one of the best 8)
Ramihyn_
Enthusiast
Enthusiast
Posts: 314
Joined: Fri Feb 24, 2006 9:40 am

Re: [x64] Cures startup in front of PureBasicStart

Post by Ramihyn_ »

IMHO your "timing" code is totally hardware specific and i keep wondering if you are aware of that. Have you ever verified these codes on a completely different CPU which uses different timings?

It's the kind of assembler code we used at '386 times in demos and the real problem has always been to make it portable, not to make it great on one specific system.
User avatar
djes
Addict
Addict
Posts: 1806
Joined: Sat Feb 19, 2005 2:46 pm
Location: Pas-de-Calais, France

Re: [x64] Cures startup in front of PureBasicStart

Post by djes »

Could you give a proof that image or sound quality is "up" / higher ? I don't see how a few useless asm operations could lead to such a result.
DontTalkToMe
Enthusiast
Enthusiast
Posts: 334
Joined: Mon Feb 04, 2013 5:28 pm

Re: [x64] Cures startup in front of PureBasicStart

Post by DontTalkToMe »

djes wrote:Could you give a proof that image or sound quality is "up" / higher ? I don't see how a few useless asm operations could lead to such a result.
I asked the same last time.
For a technical in depth and exhaustive explanation which leaves no doubts please see here:
http://www.purebasic.fr/english/viewtop ... 93#p483093

Even more incredible image quality too is higher now.
Image is quality up!!!!!!! Sound is quality up!!!!!!!!!!!!!!
More colorful perhaps ?

A sound is just some data in memory. It's the digital representation of an analog sound (most of the times) sampled at a certain speed with a certain resolution (8, 16, 24 bits...)
This memory content is transferred one piece at the time, using DMA or other means, to some specialized hw called audio card.
Different audio cards have different hardware, different DACs, more or less high quality signal path, etc.. and the sound output you get from the original data buffer depends on that.
The CPU has no relevant part in this picture (more important is the chipset used in the motherboard or the motherboard architecture in general, but as long as it works as it should, it's irrelevant too), and it has nothing to do with the original data buffer unless you believe some random instruction not operating on the data buffer can alter it for the better.

I'm ready to change my mind in the remote possibility some valid explanation will be provided, obviously. :)

To anyone interested, I have some oxygen-free copper to sell you for your cables (not everyone will get this, but I'm throwing it in anyway).
User avatar
djes
Addict
Addict
Posts: 1806
Joined: Sat Feb 19, 2005 2:46 pm
Location: Pas-de-Calais, France

Re: [x64] Cures startup in front of PureBasicStart

Post by djes »

I'm not against special code with, for example, undocumented opcodes or known processor bugs, cycle based effects, or electronic biases like noise, electromagnetic side effects, and so on.

But at a moment, you have to give proof of what you say. It should be possible to compare two samples, normal vs "enhanced"...
User avatar
netmaestro
PureBasic Bullfrog
PureBasic Bullfrog
Posts: 8425
Joined: Wed Jul 06, 2005 5:42 am
Location: Fort Nelson, BC, Canada

Re: [x64] Cures startup in front of PureBasicStart

Post by netmaestro »

Many users call me "Master piece" "Grand master"
Users of what? fentanyl? :?
BERESHEIT
DontTalkToMe
Enthusiast
Enthusiast
Posts: 334
Joined: Mon Feb 04, 2013 5:28 pm

Re: [x64] Cures startup in front of PureBasicStart

Post by DontTalkToMe »

walbus, what's happening with the elephants ?
The first one was just flying.
The second one was also pink.
Both flown away after a while !
Believe in your posts man :shock:
walbus
Addict
Addict
Posts: 929
Joined: Sat Mar 02, 2013 9:17 am

Re: [x64] Cures startup in front of PureBasicStart

Post by walbus »

Dont talk to me, man ! :shock:
Ramihyn_
Enthusiast
Enthusiast
Posts: 314
Joined: Fri Feb 24, 2006 9:40 am

Re: [x64] Cures startup in front of PureBasicStart

Post by Ramihyn_ »

djes wrote:Could you give a proof that image or sound quality is "up" / higher ? I don't see how a few useless asm operations could lead to such a result.
i keep thinking he talks about stuff like this https://www.youtube.com/watch?v=9Me9_seb4ss

Different assembler and instruction timings have very different effects on that. It was quite funny to create two or three channel tunes doing that 30 years ago on 8bit boards ;) I'm just not sure what use it would have nowadays, beside for the NSA obviously (see Van Eck phreaking)
sys64802
Enthusiast
Enthusiast
Posts: 105
Joined: Sat Sep 12, 2015 6:55 pm

Re: [x64] Cures startup in front of PureBasicStart

Post by sys64802 »

Ramihyn_ wrote: i keep thinking he talks about stuff like this https://www.youtube.com/watch?v=9Me9_seb4ss
I don't see a possible connection at all. On the other end, those things were at least interesting and clever.
Thorium
Addict
Addict
Posts: 1271
Joined: Sat Aug 15, 2009 6:59 pm

Re: [x64] Cures startup in front of PureBasicStart

Post by Thorium »

Ramihyn_ wrote: i keep thinking he talks about stuff like this https://www.youtube.com/watch?v=9Me9_seb4ss

Different assembler and instruction timings have very different effects on that. It was quite funny to create two or three channel tunes doing that 30 years ago on 8bit boards ;) I'm just not sure what use it would have nowadays, beside for the NSA obviously (see Van Eck phreaking)
That does not apply to modern CPU's.
There is no interference between instructions, no undocumented instructions, etc. There is much work done to prevent all of this for secure code execution.

I think what oryaaaaa is showing is just nothing.
Ramihyn_
Enthusiast
Enthusiast
Posts: 314
Joined: Fri Feb 24, 2006 9:40 am

Re: [x64] Cures startup in front of PureBasicStart

Post by Ramihyn_ »

I wasn't talking about instruction interference, but interference by emitted electromagnetic waves. Its certainly an esoteric topic, but it does exist and has uses even nowadays. This is not the place to talk about it, but its not just a wacko idea. If you seriously want to dig into this, you needed laboratory equipment 20 years ago already, not sure if that's still "enough" nowadays due to the frequencies.

Look closely through the leaked snowden papers and you will find devices to intercept them, afaik part of that technology even arrived at police forces in the usa by now.

About undocumented opcodes, feel free to read up here http://www.rcollins.org/secrets/

Obviously the undocumented "features" nowadays can be obstructed and hidden better. Historically they where basically side effects of discreet logic circuits nobody documented. Nothing to do with intentionally hiding anything.

ps: instruction interference is awesome fun on some MIPS/SPARC cpu's where the internal wiring was still easy to follow. Sadly they didnt reach a big enough market share (imho). Oh and those JMPs in the OP might just be used to clear the pipeline and thereby set a specific state of the cpu. that totally depends on the cpu internals though (same for prefetching HLT opcodes, so its useless without knowing the exact hardware environment, but the opcodes have those effects on some CPUs.... and dont forget opcode sizes and aligning to specific adresses, so this might have a very specific use, or none - depending on the actual hardware used).
sys64802
Enthusiast
Enthusiast
Posts: 105
Joined: Sat Sep 12, 2015 6:55 pm

Re: [x64] Cures startup in front of PureBasicStart

Post by sys64802 »

Ramihyn_ wrote:I wasn't talking about instruction interference, but interference by emitted electromagnetic waves
That's why I said I don't see a possible connection here, even if probably nothing else may apply here either :)
btw some older PC motherboards had specific BIOS options to limit (or not) EM emissions, weird options.

The CPU just waveform data from place A to B, the actual audio is generated elsewhere where the CPU has nothing to say as already mentioned in this thread.

In older threads Grand master cited jitter. There the CPU can have some part in, but jitter is everywhere. It can be in the original recording and from there it CANNOT be removed, and it can happen in the CPU-AUDIO CARD path but the path can get different forms depending on the communication channel: pci, fireware, usb, and every time the way to counter the jitter depend on the underlying protocol so one "solution" doesn't fit all.

Random registers exercises, in this context, are just that.

I don't even want to go near the "image is quality up" claim which is just coming from a different universe.
Post Reply