Index: trunk/src/VBox/ValidationKit/utils/dos/DosSleep.c
===================================================================
--- trunk/src/VBox/ValidationKit/utils/dos/DosSleep.c	(revision 70653)
+++ trunk/src/VBox/ValidationKit/utils/dos/DosSleep.c	(revision 70653)
@@ -0,0 +1,57 @@
+/* $Id$ */
+/** @file
+ * 16-bit DOS sleep program.
+ *
+ * Build: wcl -I%WATCOM%\h\win -l=dos -k4096 -fm -W4 DosSleep.c
+ */
+
+/*
+ * Copyright (C) 2018 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ *
+ * The contents of this file may alternatively be used under the terms
+ * of the Common Development and Distribution License Version 1.0
+ * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
+ * VirtualBox OSE distribution, in which case the provisions of the
+ * CDDL are applicable instead of those of the GPL.
+ *
+ * You may elect to license modified versions of this file under the
+ * terms and conditions of either the GPL or the CDDL or both.
+ */
+
+
+/*********************************************************************************************************************************
+*   Header Files                                                                                                                 *
+*********************************************************************************************************************************/
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+
+
+int main(int argc, char **argv)
+{
+    int iExit;
+
+    if (argc == 2)
+    {
+        int cSeconds = atoi(argv[1]);
+        sleep(cSeconds);
+        iExit = 0;
+    }
+    else
+    {
+        fprintf(stderr, "syntax error: only expected a number of seconds\n");
+        iExit = 4;
+    }
+
+    return iExit;
+}
+
Index: trunk/src/VBox/ValidationKit/utils/dos/DosVmOff.asm
===================================================================
--- trunk/src/VBox/ValidationKit/utils/dos/DosVmOff.asm	(revision 70653)
+++ trunk/src/VBox/ValidationKit/utils/dos/DosVmOff.asm	(revision 70653)
@@ -0,0 +1,69 @@
+; $Id$
+;; @file
+; 16-bit DOS COM program that powers off the VM.
+;
+; Build: yasm -f bin -i../../../../../include/ DosVmOff.asm -o DosVmOff.com
+;
+
+;
+; Copyright (C) 2018 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+; The contents of this file may alternatively be used under the terms
+; of the Common Development and Distribution License Version 1.0
+; (CDDL) only, as it comes in the "COPYING.CDDL" file of the
+; VirtualBox OSE distribution, in which case the provisions of the
+; CDDL are applicable instead of those of the GPL.
+;
+; You may elect to license modified versions of this file under the
+; terms and conditions of either the GPL or the CDDL or both.
+;
+
+
+
+%include "VBox/bios.mac"
+
+        org 100h
+
+segment text
+main:
+%if 0
+        ; Setup stack.
+        mov     ax, stack
+        mov     ss, ax
+        mov     sp, top_of_stack
+%endif
+
+        ; Do the shutdown thing.
+        mov     ax, cs
+        mov     ds, ax
+
+        mov     bl, 64
+        mov     dx, VBOX_BIOS_SHUTDOWN_PORT
+        mov     ax, VBOX_BIOS_OLD_SHUTDOWN_PORT
+.retry:
+        mov     cx, 8
+        mov     si, .s_szShutdown
+        rep outsb
+        xchg    ax, dx                  ; alternate between the new (VBox) and old (Bochs) ports.
+        dec     bl
+        jnz     .retry
+
+
+        ; Probably not a VBox VM, exit the program with errorlevel 1.
+.whatever:
+        mov     ax, 04c01h
+        int     021h
+        hlt
+        jmp     .whatever
+
+.s_szShutdown:
+        db      'Shutdown', 0
+
Index: trunk/src/VBox/ValidationKit/utils/dos/WinExit.asm
===================================================================
--- trunk/src/VBox/ValidationKit/utils/dos/WinExit.asm	(revision 70653)
+++ trunk/src/VBox/ValidationKit/utils/dos/WinExit.asm	(revision 70653)
@@ -0,0 +1,85 @@
+; $Id$
+;; @file
+; 16-bit windows program that exits windows.
+;
+; Build: wcl -I%WATCOM%\h\win -l=windows -k4096 -fm WinExit.asm
+;
+
+;
+; Copyright (C) 2018 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+; The contents of this file may alternatively be used under the terms
+; of the Common Development and Distribution License Version 1.0
+; (CDDL) only, as it comes in the "COPYING.CDDL" file of the
+; VirtualBox OSE distribution, in which case the provisions of the
+; CDDL are applicable instead of those of the GPL.
+;
+; You may elect to license modified versions of this file under the
+; terms and conditions of either the GPL or the CDDL or both.
+;
+
+
+
+;.stack 4096
+STACK   segment para stack 'STACK'
+STACK   ends
+
+
+extrn INITTASK:FAR
+extrn INITAPP:FAR
+extrn EXITWINDOWS:FAR
+extrn WAITEVENT:FAR
+
+_TEXT   segment word public 'CODE'
+start:
+        push    bp
+        mov     bp, sp
+
+        ;
+        ; Initialize the windows app.
+        ;
+        call    INITTASK
+
+        xor     ax, ax
+        push    ax
+        call    WAITEVENT
+
+        push    di                      ; hInstance
+        push    di
+        call    INITAPP
+
+        ;
+        ; Do what we're here for, exitting windows.
+        ;
+        xor     ax, ax
+        xor     cx, cx
+        xor     dx, dx
+        push    ax
+        push    ax
+        push    ax
+        push    ax
+        call    EXITWINDOWS
+
+        ;
+        ; Exit via DOS interrupt.
+        ;
+        xor     al, al
+        mov     ah,04cH
+        int     021h
+
+        mov     sp, bp
+        pop     bp
+        ret
+
+_TEXT   ends
+
+end start
+
