рдореБрдЭреЗ рд╣рдореЗрд╢рд╛ рдЧреБрд╕реНрд╕рд╛ рдерд╛ рдХрд┐ рдореИрдВ MS-DOS рдХреЗ рддрд╣рдд C # рдореЗрдВ 64-рдмрд┐рдЯ рдЧреЗрдо рдирд╣реАрдВ рдЪрд▓рд╛ рд╕рдХрддрд╛ред рдЖрдЬ рдореИрдВрдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ред

Windows рдирд┐рд╖реНрдкрд╛рджрдХ рджреЛ рднрд╛рдЧреЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рдмрдирддрд╛ рд╣реИ:
- рдбреЙрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЬреЛ "рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдбреЙрд╕ рдореЛрдб рдореЗрдВ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛" рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ
- рд╡рд┐рдВрдбреЛрдЬ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╣реЗрдбрд░
рдПрдХ рддрд░рд╣ рд╕реЗ, рд╕рднреА .exe рдлрд╛рдЗрд▓реЗрдВ DOS рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧреА рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдПрдХ рджрд┐рди рдореБрдЭреЗ рдЧрд┐рддреБрдм рдкрд░ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдорд┐рд▓рд╛ рдЬреЛ рдЗрд╕рдХреЗ рдореБрдХрд╛рдмрд▓реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рд┐рддрд╛рд░реЛрдВ рдХрд╛ рд╣рдХрджрд╛рд░ рд╣реИ:
github.com/Baron-von-Riedesel/Dos64-stubDos64-stub рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИ рдЬреЛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╡рд┐рдВрдбреЛрдЬ рдЕрдиреБрднрд╛рдЧ рдХреЛ рд▓реЛрдб рдХрд░рдХреЗ рдФрд░ 21 рд╡реАрдВ рд╢рддрд╛рдмреНрджреА рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЯреЗрд▓реАрдкреЛрд░реНрдЯ рдХрд░рдХреЗ "рдмреЗрдХрд╛рд░ рдХреЗ рд╕рдВрджреЗрд╢" рдХреЛ рдбреЙрд╕ рдХреЗ рддрд╣рдд рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред "рдЯреЗрд▓реАрдкреЛрд░реНрдЯреЗрд╢рди" рд╕реЗ рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдкреГрд╖реНрда рдореЗрдореЛрд░реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ 64-рдмрд┐рдЯ рдореЛрдб ("рд▓реЙрдиреНрдЧ") рдореЗрдВ рдбрд╛рд▓рдирд╛ред
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рддрд╣рдд рдЕрдкрдирд╛ рдЧреЗрдо "рд╕реНрдиреЗрдХ" рд▓рд┐рдпрд╛, рдЬреЛ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрд┐рдирд╛ 8 kb рддрдХ рдмрдврд╝рд╛ рдерд╛:
рдмреЗрд╢рдХ, рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдВрдбреЛрдЬ рдПрдкреАрдЖрдИ рд╡рд┐рдзрд┐рдпрд╛рдБ рдбреЙрд╕ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рдХреЗ рд╕рдВрдЪрд╛рд░ рдХреА рдкрд░рдд рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдкрдбрд╝рд╛ред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдЕрдм
Environment.TickCount
рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
public static unsafe long TickCount64 { [MethodImpl(MethodImplOptions.NoInlining)] get {
рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯрд┐рдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
public static unsafe void Sleep(int delayMs) {
рдФрд░ рдлрд┐рд░
Console.WriteLine
:
public static unsafe void Write(char c) { byte* biosDataArea = (byte*)0x400;
рдареАрдХ рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ: рд╕реА # рд╕рдВрдХрд▓рдХ -> рдХреЛрд░рдЖрд░рдЯреА тАЛтАЛрдПрдУрдЯреА рд╕рдВрдХрд▓рдХ -> рд▓рд┐рдВрдХрд░ред рд╣рдо рд▓рд┐рдВрдХрд░ рдХреЛ рдПрдХ рдмреЗрдХрд╛рд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЗрдбрд░ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп Dos64-рд╕реНрдЯрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВред
рдФрд░ рдпрд╣рд╛рдБ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЗ рд░реВрдк рдореЗрдВ рдкреВрд░реЗ рд╕реНрд░реЛрдд рдХреЛрдб рд╣реИ ред