diff --git a/libraries/oberon/api.windows.mod b/libraries/oberon/api.windows.mod
index 7ce3d4e..a1e1265 100644
--- a/libraries/oberon/api.windows.mod
+++ b/libraries/oberon/api.windows.mod
@@ -827,6 +827,7 @@ CONST LTGRAY_BRUSH* = 1;
 CONST MARKPARITY* = 3;
 CONST MAXBYTE* = 0FFH;
 CONST MAXDWORD* = UNSIGNED32 (0FFFFFFFFH);
+CONST MAX_PATH* = 260;
 CONST MAXWORD* = 0FFFFH;
 CONST MB_ABORTRETRYIGNORE* = 2H;
 CONST MB_APPLMODAL* = 0H;
@@ -2191,6 +2192,24 @@ TYPE FILETIME* = RECORD-
 	dwHighDateTime*: DWORD;
 END; PFILETIME* = POINTER TO FILETIME; LPFILETIME* = POINTER TO FILETIME;
 
+TYPE WIN32_FIND_DATAA* = RECORD-
+	dwFileAttributes*: DWORD;
+	ftCreationTime*: FILETIME;
+	ftLastAccessTime*: FILETIME;
+	ftLastWriteTime*: FILETIME;
+	nFileSizeHigh*: DWORD;
+	nFileSizeLow*: DWORD;
+	dwReserved0*: DWORD;
+	dwReserved1*: DWORD;
+	cFileName*: ARRAY MAX_PATH OF CHAR;
+	cAlternateFileName*: ARRAY 14 OF CHAR;
+	dwFileType*: DWORD;
+	dwCreatorType*: DWORD;
+	wFinderFlags*: WORD;
+END;
+PWIN32_FIND_DATAA* = POINTER TO WIN32_FIND_DATAA;
+LPWIN32_FIND_DATAA* = POINTER TO WIN32_FIND_DATAA;
+
 TYPE FIXED* = RECORD-
 	fract*: WORD;
 	value*: SHORTINT;
@@ -2773,6 +2792,7 @@ PROCEDURE ^ CreateDCW* ["CreateDCW"] (pwszDriver: LPCWSTR; pwszDevice: LPCWSTR;
 PROCEDURE ^ CreateDIBitmap* ["CreateDIBitmap"] (hdc: HDC; pbmih: PBITMAPINFOHEADER; flInit: DWORD; pjBits: PVOID; pbmi: PBITMAPINFO; iUsage: UINT): HBITMAP;
 PROCEDURE ^ CreateDIBPatternBrushPt* ["CreateDIBPatternBrushPt"] (lpPackedDIB: PVOID; iUsage: UINT): HBRUSH;
 PROCEDURE ^ CreateDIBSection* ["CreateDIBSection"] (hdc: HDC; pbmi: PBITMAPINFO; usage: UINT; ppvBits: PVOID; hSection: HANDLE; offset: DWORD): HBITMAP;
+PROCEDURE ^ CreateDirectoryA* ["CreateDirectoryA"] (lpPathName: LPCSTR; lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL;
 PROCEDURE ^ CreateEllipticRgn* ["CreateEllipticRgn"] (nLeftRect: INTEGER; nTopRect: INTEGER; nRightRect: INTEGER; nBottomRect: INTEGER): HRGN;
 PROCEDURE ^ CreateEllipticRgnIndirect* ["CreateEllipticRgnIndirect"] (lprc: LPRECT): HRGN;
 PROCEDURE ^ CreateEventA* ["CreateEventA"] (lpEventAttributes: LPSECURITY_ATTRIBUTES; bManualReset: BOOL; bInitialState: BOOL; lpName: LPCSTR): HANDLE;
@@ -2801,11 +2821,11 @@ PROCEDURE ^ CreatePalette* ["CreatePalette"] (plpal: PLOGPALETTE): HPALETTE;
 PROCEDURE ^ CreatePatternBrush* ["CreatePatternBrush"] (hbm: HBITMAP): HBRUSH;
 PROCEDURE ^ CreatePen* ["CreatePen"] (fnPenStyle: INTEGER; nWidth: INTEGER; crColor: COLORREF): HPEN;
 PROCEDURE ^ CreatePenIndirect* ["CreatePenIndirect"] (plpen: PLOGPEN): HPEN;
-PROCEDURE ^ CreatePipe* ["CreatePipe"] (hReadPipe: HANDLE; hWritePipe: PHANDLE; lpPipeAttributes: LPSECURITY_ATTRIBUTES; nSize: DWORD): BOOL;
+PROCEDURE ^ CreatePipe* ["CreatePipe"] (hReadPipe: PHANDLE; hWritePipe: PHANDLE; lpPipeAttributes: LPSECURITY_ATTRIBUTES; nSize: DWORD): BOOL;
 PROCEDURE ^ CreatePolygonRgn* ["CreatePolygonRgn"] (lppt: LPPOINT; cPoints: INTEGER; fnPolyFillMode: INTEGER): HRGN;
 PROCEDURE ^ CreatePolyPolygonRgn* ["CreatePolyPolygonRgn"] (lppt: LPPOINT; lpPolyCounts: LPINT; nCount: INTEGER; fnPolyFillMode: INTEGER): HRGN;
-PROCEDURE ^ CreateProcessA* ["CreateProcessA"] (lpApplicationName: LPCSTR; lpCommandLine: LPSTR; lpProcessAttributes: LPSECURITY_ATTRIBUTES; lpThreadAttributes: LPSECURITY_ATTRIBUTES; bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: LPVOID; lpCurrentDirectory: LPCSTR; lpStartupInfo: LPSTARTUPINFO; lpProcessInformation: LPPROCESS_INFORMATION);
-PROCEDURE ^ CreateProcessW* ["CreateProcessW"] (lpApplicationName: LPCWSTR; lpCommandLine: LPWSTR; lpProcessAttributes: LPSECURITY_ATTRIBUTES; lpThreadAttributes: LPSECURITY_ATTRIBUTES; bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: LPVOID; lpCurrentDirectory: LPCWSTR; lpStartupInfo: LPSTARTUPINFO; lpProcessInformation: LPPROCESS_INFORMATION);
+PROCEDURE ^ CreateProcessA* ["CreateProcessA"] (lpApplicationName: LPCSTR; lpCommandLine: LPSTR; lpProcessAttributes: LPSECURITY_ATTRIBUTES; lpThreadAttributes: LPSECURITY_ATTRIBUTES; bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: LPVOID; lpCurrentDirectory: LPCSTR; lpStartupInfo: LPSTARTUPINFO; lpProcessInformation: LPPROCESS_INFORMATION): BOOLEAN;
+PROCEDURE ^ CreateProcessW* ["CreateProcessW"] (lpApplicationName: LPCWSTR; lpCommandLine: LPWSTR; lpProcessAttributes: LPSECURITY_ATTRIBUTES; lpThreadAttributes: LPSECURITY_ATTRIBUTES; bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: LPVOID; lpCurrentDirectory: LPCWSTR; lpStartupInfo: LPSTARTUPINFO; lpProcessInformation: LPPROCESS_INFORMATION): BOOLEAN;
 PROCEDURE ^ CreateRectRgn* ["CreateRectRgn"] (nLeftRect: INTEGER; nTopRect: INTEGER; nRightRect: INTEGER; nBottomRect: INTEGER): HRGN;
 PROCEDURE ^ CreateRectRgnIndirect* ["CreateRectRgnIndirect"] (lprc: LPRECT): HRGN;
 PROCEDURE ^ CreateRoundRectRgn* ["CreateRoundRectRgn"] (nLeftRect: INTEGER; nTopRect: INTEGER; nRightRect: INTEGER; nBottomRect: INTEGER; nWidthEllipse: INTEGER; nHeightEllipse: INTEGER): HRGN;
@@ -2888,8 +2908,12 @@ PROCEDURE ^ FillRect* ["FillRect"] (hDC: HDC; VAR lprc-: RECT; hbr: HBRUSH): INT
 PROCEDURE ^ FillRgn* ["FillRgn"] (hdc: HDC; hrgn: HRGN; hbr: HBRUSH): BOOL;
 PROCEDURE ^ FindAtomA* ["FindAtomA"] (lpString: LPCSTR): ATOM;
 PROCEDURE ^ FindAtomW* ["FindAtomW"] (lpString: LPCWSTR): ATOM;
+PROCEDURE ^ FindClose* ["FindClose"] (hFindFile: HANDLE): BOOL;
+PROCEDURE ^ FindFirstFileA* ["FindFirstFileA"] (lpString: LPCSTR; VAR lpFindFileData: WIN32_FIND_DATAA): HANDLE;
+PROCEDURE ^ FindNextFileA* ["FindNextFileA"] (hFindFile: HANDLE; VAR lpFindFileData: WIN32_FIND_DATAA): BOOL;
 PROCEDURE ^ FlattenPath* ["FlattenPath"] (hdc: HDC): BOOL;
 PROCEDURE ^ FlushConsoleInputBuffer* ["FlushConsoleInputBuffer"] (hConsoleInput: HANDLE): BOOL;
+PROCEDURE ^ FlushFileBuffers* ["FlushFileBuffers"] (hConsoleInput: HANDLE): BOOL;
 PROCEDURE ^ FrameRect* ["FrameRect"] (hDC: HDC; lprc: LPRECT; hbr: HBRUSH): INTEGER;
 PROCEDURE ^ FrameRgn* ["FrameRgn"] (hdc: HDC; hrgn: HRGN; hbr: HBRUSH; nWidth: INTEGER; nHeight: INTEGER): BOOL;
 PROCEDURE ^ freeaddrinfo* ["freeaddrinfo"] (pAddrInfo: PADDRINFOA);
@@ -2998,7 +3022,7 @@ PROCEDURE ^ GetEnvironmentVariableA* ["GetEnvironmentVariableA"] (lpName: LPCSTR
 PROCEDURE ^ GetEnvironmentVariableW* ["GetEnvironmentVariableW"] (lpName: LPCWSTR; lpBuffer: LPWSTR; nSize: DWORD): DWORD;
 PROCEDURE ^ GetExitCodeProcess* ["GetExitCodeProcess"] (hProcess: HANDLE; lpExitCode: LPDWORD): BOOL;
 PROCEDURE ^ GetExitCodeThread* ["GetExitCodeThread"] (hThread: HANDLE; lpExitCode: LPDWORD): BOOL;
-PROCEDURE ^ GetFileAttributes* ["GetFileAttributes"] (lpFileName: LPCTSTR): DWORD;
+PROCEDURE ^ GetFileAttributesA* ["GetFileAttributesA"] (lpFileName: LPCTSTR): DWORD;
 PROCEDURE ^ GetFileSize* ["GetFileSize"] (hFile: HANDLE; lpFileSizeHigh: LPDWORD): DWORD;
 PROCEDURE ^ GetFileTime* ["GetFileTime"] (hFile: HANDLE; lpCreationTime: LPFILETIME; lpLastAccessTime: LPFILETIME; lpLastWriteTime: LPFILETIME): BOOL;
 PROCEDURE ^ GetFontData* ["GetFontData"] (hdc: HDC; dwTable: DWORD; dwOffset: DWORD; pvBuffer: PVOID; cjBuffer: DWORD): DWORD;
@@ -3255,6 +3279,7 @@ PROCEDURE ^ ReleaseCapture* ["ReleaseCapture"] (): BOOL;
 PROCEDURE ^ ReleaseDC* ["ReleaseDC"] (hWnd: HWND; hDC: HDC): INTEGER;
 PROCEDURE ^ ReleaseMutex* ["ReleaseMutex"] (hMutex: HANDLE): BOOL;
 PROCEDURE ^ ReleaseSemaphore* ["ReleaseSemaphore"] (hSemaphore: HANDLE; lReleaseCount: LONG; lpPreviousCount: LPLONG): BOOL;
+PROCEDURE ^ RemoveDirectoryA* ["RemoveDirectoryA"] (lpPathName: LPCSTR): BOOL;
 PROCEDURE ^ RemoveFontMemResourceEx* ["RemoveFontMemResourceEx"] (h: HANDLE): BOOL;
 PROCEDURE ^ RemoveFontResourceA* ["RemoveFontResourceA"] (lpFileName: LPCSTR): BOOL;
 PROCEDURE ^ RemoveFontResourceExA* ["RemoveFontResourceExA"] (name: LPCSTR; fl: DWORD; pdv: PVOID): BOOL;
@@ -3302,8 +3327,10 @@ PROCEDURE ^ SetCommState* ["SetCommState"] (hFile: HANDLE; lpDCB: LPDCB): BOOL;
 PROCEDURE ^ SetCommTimeouts* ["SetCommTimeouts"] (hFile: HANDLE; lpCommTimeouts: LPCOMMTIMEOUTS): BOOL;
 PROCEDURE ^ SetConsoleCP* ["SetConsoleCP"] (wCodePageID: UINT): BOOL;
 PROCEDURE ^ SetConsoleMode* ["SetConsoleMode"] (hConsoleHandle: HANDLE; dwMode: DWORD): BOOL;
+PROCEDURE ^ SetConsoleOutputCP* ["SetConsoleOutputCP"] (wCodePageID: UINT): BOOL;
 PROCEDURE ^ SetConsoleTextAttribute* ["SetConsoleTextAttribute"] (hConsoleOutput: HANDLE; wAttributes: WORD): BOOL;
 PROCEDURE ^ SetCriticalSectionSpinCount* ["SetCriticalSectionSpinCount"] (lpCriticalSection: LPCRITICAL_SECTION; dwSpinCount: DWORD): DWORD;
+PROCEDURE ^ SetCurrentDirectoryA* ["SetCurrentDirectoryA"] (lpPathName: LPCTSTR): BOOL;
 PROCEDURE ^ SetDCBrushColor* ["SetDCBrushColor"] (hdc: HDC; color: COLORREF): COLORREF;
 PROCEDURE ^ SetDCPenColor* ["SetDCPenColor"] (hdc: HDC; color: COLORREF): COLORREF;
 PROCEDURE ^ SetDefaultCommConfigA* ["SetDefaultCommConfigA"] (lpszName: LPCSTR; lpCC: LPCOMMCONFIG; dwSize: DWORD): BOOL;
@@ -3315,11 +3342,13 @@ PROCEDURE ^ SetDisplayAutoRotationPreferences* ["SetDisplayAutoRotationPreferenc
 PROCEDURE ^ SetDynamicTimeZoneInformation* ["SetDynamicTimeZoneInformation"] (VAR lpTimeZoneInformation-: DYNAMIC_TIME_ZONE_INFORMATION): BOOL;
 PROCEDURE ^ SetEnvironmentVariableA* ["SetEnvironmentVariableA"] (lpName: LPCSTR; lpValue: LPCSTR): BOOL;
 PROCEDURE ^ SetEnvironmentVariableW* ["SetEnvironmentVariableW"] (lpName: LPCWSTR; lpValue: LPCWSTR): BOOL;
+PROCEDURE ^ SetEndOfFile* ["SetEndOfFile"] (hFile: HANDLE): BOOL;
 PROCEDURE ^ SetEvent* ["SetEvent"] (hEvent: HANDLE): BOOL;
 PROCEDURE ^ SetFileAttributes* ["SetFileAttributes"] (lpFileName: LPCTSTR; dwFileAttributes: DWORD): BOOL;
 PROCEDURE ^ SetFilePointer* ["SetFilePointer"] (hFile: HANDLE; lDistanceToMove: LONG; lpDistanceToMoveHigh: PLONG; dwMoveMethod: DWORD): DWORD;
 PROCEDURE ^ SetFileTime* ["SetFileTime"] (hFile: HANDLE; lpCreationTime: LPFILETIME; lpLastAccessTime: LPFILETIME; lpLastWriteTime: LPFILETIME): BOOL;
 PROCEDURE ^ SetGraphicsMode* ["SetGraphicsMode"] (hdc: HDC; iMode: INTEGER): INTEGER;
+PROCEDURE ^ SetHandleInformation* ["SetHandleInformation"] (hObject: HANDLE; dwMask: DWORD; dwFlags: DWORD): BOOL;
 PROCEDURE ^ SetLayout* ["SetLayout"] (hdc: HDC; l: DWORD): DWORD;
 PROCEDURE ^ SetLocalTime* ["SetLocalTime"] (VAR lpSystemTime-: SYSTEMTIME): BOOL;
 PROCEDURE ^ SetMailslotInfo* ["SetMailslotInfo"] (hMailslot: HANDLE; lReadTimeout: DWORD): BOOL;
