summaryrefslogtreecommitdiffstats
path: root/public/tools
diff options
context:
space:
mode:
authorAdam <you@example.com>2020-05-17 05:51:50 +0200
committerAdam <you@example.com>2020-05-17 05:51:50 +0200
commite611b132f9b8abe35b362e5870b74bce94a1e58e (patch)
treea5781d2ec0e085eeca33cf350cf878f2efea6fe5 /public/tools
downloadNT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip
Diffstat (limited to 'public/tools')
-rw-r--r--public/tools/alphased.cmd6
-rw-r--r--public/tools/bldtools.reb8
-rw-r--r--public/tools/chkquota.cmd9
-rw-r--r--public/tools/csrss.reb9
-rw-r--r--public/tools/doctor.rtf99
-rw-r--r--public/tools/findadd.cmd2
-rw-r--r--public/tools/fixdoc.cmd19
-rw-r--r--public/tools/inout.cmd2
-rw-r--r--public/tools/kbd.reb33
-rw-r--r--public/tools/known.reb33
-rw-r--r--public/tools/mpntstat.cmd68
-rw-r--r--public/tools/myenlist.cmd45
-rw-r--r--public/tools/net.reb19
-rw-r--r--public/tools/never.reb5
-rw-r--r--public/tools/ntadd.cmd13
-rw-r--r--public/tools/ntclnsr1.txt84
-rw-r--r--public/tools/ntdefect.cmd16
-rw-r--r--public/tools/ntdel.cmd15
-rw-r--r--public/tools/ntenv.cmd50
-rw-r--r--public/tools/ntlock.cmd8
-rw-r--r--public/tools/ntlocked.cmd6
-rw-r--r--public/tools/ntlog.cmd27
-rw-r--r--public/tools/ntnewver.cmd12
-rw-r--r--public/tools/ntoskrnl.reb3
-rw-r--r--public/tools/ntprojs.cmd26
-rw-r--r--public/tools/ntrebase.cmd225
-rw-r--r--public/tools/ntrelenv.cmd3
-rw-r--r--public/tools/ntrest.cmd48
-rw-r--r--public/tools/ntruser.cmd5
-rw-r--r--public/tools/ntsave.cmd94
-rw-r--r--public/tools/ntslmck.cmd26
-rw-r--r--public/tools/ntslmmov.cmd30
-rw-r--r--public/tools/ntslmop.cmd105
-rw-r--r--public/tools/ntstat.cmd38
-rw-r--r--public/tools/ntstatxx.cmd39
-rw-r--r--public/tools/ntsync.cmd47
-rw-r--r--public/tools/ntunlock.cmd6
-rw-r--r--public/tools/ntuser.cmd60
-rw-r--r--public/tools/ntvdm.reb5
-rw-r--r--public/tools/printer.reb6
-rw-r--r--public/tools/projlist.cmd5
-rw-r--r--public/tools/razzle.cmd37
-rw-r--r--public/tools/razzle.icobin0 -> 1056 bytes
-rw-r--r--public/tools/razzle0.cmd3
-rw-r--r--public/tools/razzle0.icobin0 -> 1056 bytes
-rw-r--r--public/tools/razzle1.cmd3
-rw-r--r--public/tools/razzle1.icobin0 -> 1056 bytes
-rw-r--r--public/tools/razzle2.cmd3
-rw-r--r--public/tools/razzle2.icobin0 -> 1056 bytes
-rw-r--r--public/tools/razzleb.cmd10
-rw-r--r--public/tools/slmtouch.cmd3
-rw-r--r--public/tools/spltenls.cmd46
-rw-r--r--public/tools/spltstat.cmd82
-rw-r--r--public/tools/statkill.txt10
-rw-r--r--public/tools/version.cmd39
-rw-r--r--public/tools/video.reb11
-rw-r--r--public/tools/wx86.reb2
-rw-r--r--public/tools/wx86thnk.reb39
58 files changed, 1647 insertions, 0 deletions
diff --git a/public/tools/alphased.cmd b/public/tools/alphased.cmd
new file mode 100644
index 000000000..a48930373
--- /dev/null
+++ b/public/tools/alphased.cmd
@@ -0,0 +1,6 @@
+@if "%3" == "FULLSED" goto fullsed
+@sed -e "s/builtin_alignof/builtin_isfloat/;/extern int __builtin_va_start/d" %1 >%2
+@goto done
+:fullsed
+@sed -e "s/builtin_alignof/builtin_isfloat/;/extern int __builtin_va_start/d" -e "s/typedef unsigned int size_t ;/& void * memset(void *, int, size_t); void * memcpy(void *, const void *, size_t); int memcmp(const void *, const void *, size_t);/" %1 >%2
+:done
diff --git a/public/tools/bldtools.reb b/public/tools/bldtools.reb
new file mode 100644
index 000000000..ce206dd62
--- /dev/null
+++ b/public/tools/bldtools.reb
@@ -0,0 +1,8 @@
+C1.EXE
+C2.EXE
+C1XX.EXE
+CL.EXE
+ML.EXE
+ASAXP.EXE
+CLAXP.EXE
+PAS.EXE
diff --git a/public/tools/chkquota.cmd b/public/tools/chkquota.cmd
new file mode 100644
index 000000000..555e1670e
--- /dev/null
+++ b/public/tools/chkquota.cmd
@@ -0,0 +1,9 @@
+@setlocal
+@if "%1" == "" goto usage
+@set _quota=10
+@if NOT "%2" == "" set _quota=%2
+diruse /v /m /q:%_quota% /d /l /* %1
+@goto done
+:usage
+@echo Usage: CHKQUOTA RootPath [#MegaBytes]
+:done
diff --git a/public/tools/csrss.reb b/public/tools/csrss.reb
new file mode 100644
index 000000000..31cc64344
--- /dev/null
+++ b/public/tools/csrss.reb
@@ -0,0 +1,9 @@
+csrss.exe
+winsrv.dll
+basesrv.dll
+csrsrv.dll
+mmsndsrv.dll
+glsrv.dll
+vga.dll
+kbdus.dll
+ \ No newline at end of file
diff --git a/public/tools/doctor.rtf b/public/tools/doctor.rtf
new file mode 100644
index 000000000..82c955d33
--- /dev/null
+++ b/public/tools/doctor.rtf
@@ -0,0 +1,99 @@
+{\rtf1\pc {\info{\title %N}{\author %A}{\version %V}{\revtim\mo%M\dy%D\yr%Y}
+{\creatim\mo%M\dy%D\yr%Y}}\deff16{\fonttbl{\f0\fmodern pica;}
+{\f1\fmodern Courier;}{\f2\fmodern elite;}{\f3\fmodern prestige;}
+{\f4\fmodern lettergothic;}{\f5\fmodern gothicPS;}
+{\f6\fmodern cubicPS;}{\f7\fmodern lineprinter;}
+{\f8\fswiss Helvetica;}{\f9\fmodern avantegarde;}
+{\f10\fmodern spartan;}{\f11\fmodern metro;}
+{\f12\fmodern presentation;}{\f13\fmodern APL;}{\f14\fmodern OCRA;}
+{\f15\fmodern OCRB;}{\f16\froman boldPS;}{\f17\froman emperorPS;}
+{\f18\froman madaleine;}{\f19\froman zapf humanist;}
+{\f20\froman classic;}{\f21\froman roman f;}{\f22\froman roman g;}
+{\f23\froman roman h;}{\f24\froman timesroman;}{\f25\froman century;}
+{\f26\froman palantino;}{\f27\froman souvenir;}{\f28\froman garamond;}
+{\f29\froman caledonia;}{\f30\froman bodini;}{\f31\froman university;}
+{\f32\fscript script;}{\f33\fscript scriptPS;}{\f34\fscript script c;}
+{\f35\fscript script d;}{\f36\fscript commercial script;}
+{\f37\fscript park avenue;}{\f38\fscript coronet;}
+{\f39\fscript script h;}{\f40\fscript greek;}{\f41\froman kana;}
+{\f42\froman hebrew;}{\f43\froman roman s;}{\f44\froman russian;}
+{\f45\froman roman u;}{\f46\froman roman v;}{\f47\froman roman w;}
+{\f48\fdecor narrator;}{\f49\fdecor emphasis;}
+{\f50\fdecor zapf chancery;}{\f51\fdecor decor d;}
+{\f52\fdecor old english;}{\f53\fdecor decor f;}{\f54\fdecor decor g;}
+{\f55\fdecor cooper black;}{\f56\ftech Symbol;}{\f57\ftech linedraw;}
+{\f58\ftech math7;}{\f59\ftech math8;}{\f60\ftech bar3of9;}
+{\f61\ftech EAN;}{\f62\ftech pcline;}{\f63\ftech tech h;}}
+{\stylesheet {\*\cs1\b\f16 CT;}{\*\cs2\b\f16 CP;}{\*\cs3\b\f16 CD;}
+{\*\cs4\i\f16 CI;}{\*\cs5\f16\ul CR;}{\*\cs6\f16\fs16\up12 FR;}{\*\s30
+\sl-240\sa240 \f16 Normal;}{\*\s31
+\li720\fi-720\sl-240\sa240\tqr\tx432\tx720 \f16 L1;}{\*\s32
+\li1152\fi-1152\sl-240\sa240\tqr\tx864\tx1152 \f16 L2;}{\*\s33
+\li1152\sl-240\sa240 \b\f16\ul P3;}{\*\s34\li1728\fi-576\sl-240\sa240
+\f16 P4;}{\*\s35\li432\sl-240\sa240 \f16 S1;}{\*\s36
+\li1152\sl-240\sa240 \f16 S2;}{\*\s37\li1728\sl-240\sa240 \b\f16\ul
+P5;}{\*\s38\li2304\fi-576\sl-240\sa240 \f16 P6;}{\*\s40
+\li2304\sl-240\sa240 \b\f16\ul P7;}{\*\s41\li2880\fi-576\sl-240\sa240
+\f16 P8;}{\*\s42\ri576\li576\sl-240\sa240 \i\f16 N1;}{\*\s43
+\ri576\li1296\sl-240\sa240 \i\f16 N2;}{\*\s44\li1152\fi-576\sl-240
+\f16 NL;}{\*\s45\li1584\fi-1584\sl-240\sa240\tqr\tx1296\tx1584 \f16
+L3;}{\*\s46\li2016\fi-2016\sl-240\sa240\tqr\tx1728\tx2016 \f16 L4;}
+{\*\s47\li1440\fi-288\sl-240\tldot\tx8064\tqr\tx8640 \f16 T5;}{\*\s48
+\keepn\sl-240\sa240 \f16 PK;}{\*\s49\keepn\sl-240\sa240 \f16\ul PU;}
+{\*\s50\sl0 \v\f16 PH;}{\*\s51\fi720\sl-240 \f16\fs16 FN;}{\*\s52
+\keep\keepn\sl-240\tx576\tx1152\tx1728 \f16 PP;}{\*\s53
+\li1152\fi-576\sl-240\sa240 \f16 PL;}{\*\s54\li1152\sl-240\sa240 \f16
+P2;}{\*\s55\li576\sl-240\sa240 \f16 PV;}{\*\s59
+\li1728\fi-288\sl-240\tldot\tx8064\tqr\tx8640 \f16 T6;}{\*\s62
+\sl-240\tqr\tx9936 \b\f16 RH;}{\*\s63\qc\sl-240 \b\f16 RF;}{\*\s64
+\sl-240\sa240 \b\f16 TN;}{\*\s65\sl-240\sa240 \i\f16 TA;}{\*\s66
+\sl-240 \i\f16 TR;}{\*\s72\li576\fi-576\sl-240\sa240 \f16 PT;}{\*\s73
+\keepn\li576\sl-240\tx1152\tx1728\tx2304\tx2880\tx3456\tx4032\tx4608\tx5184\tx5760\tx6336\tx6912
+\f7\fs17 PC;}{\*\s74\keep\keepn\sl-240 \f1 PD;}{\*\s88
+\keepn\sl-240\sa240 \b\f16 heading 1;}{\*\s89\keepn\sl-240\sa240
+\b\f16 heading 2;}{\*\s90\keepn\sl-240\sa240 \b\f16 heading 3;}{\*\s91
+\keepn\sl-240\sa240 \b\f16 heading 4;}{\*\s92\keepn\sl-240\sa240
+\b\f16 heading 5;}{\*\s93\keepn\sl-240\sa240 \b\f16 heading 6;}{\*\s99
+\li288\fi-288\sl-240\sb240\tldot\tx8064\tqr\tx8640 \f16 toc 1;}
+{\*\s100\li576\fi-288\sl-240\tldot\tx8064\tqr\tx8640 \f16 toc 2;}
+{\*\s101\li864\fi-288\sl-240\tldot\tx8064\tqr\tx8640 \f16 toc 3;}
+{\*\s102\li1152\fi-288\sl-240\tldot\tx8064\tqr\tx8640 \f16 toc 4;}
+{\*\ds105\linex576\endnhere\pgnrestart standard division;}{\*\ds106
+\pgnlcrm\linex576\endnhere\pgnrestart DT;}}
+\margl1152\margr1152\margt1728\margb1728\ftnbj\ftnrestart\widowctrl\pgnstart1
+\sectd \ds105\linex576\endnhere\pgnrestart {\footer \pard
+\s63\qc\sl-240 \plain \b\f16 Microsoft Corporation Company Confidential\par
+}\pard \sl0\pvmrg\phcol\dxfrtext240\posxl\posyc\absw0 \plain \par
+\plain \b\f16 Portable Systems Group\plain \line \line
+\plain \b\f16 %N\plain \line \line
+\plain \b\f16 Author:\plain \i\f16 %A\plain \line \line
+\plain \i\f16 Revision %R\plain \line
+\plain \i\f16 Original Draft %C\plain \par
+\pard \plain \f16 \sect \sectd
+\ds106\pgnlcrm\linex576\endnhere\pgnrestart {\header \pard
+\s62\sl-240\tqr\tx9936 \plain \b\f16 %N\tab \chpgn \par
+}{\footer \pard \s63\qc\sl-240 \plain \b\f16 Microsoft Corporation Company Confidential\par
+}\pard \s30\sl-240\sa240 \plain \v\f16 .B\plain \v\f16 egin Table C\plain \v\f16 .\plain \v\f16 \par
+\pard \s99\li288\fi-288\sl-240\sb240\tldot\tx8064\tqr\tx8640
+\plain \f16 1. Lists\tab \tab 1\par
+\pard \s100\li576\fi-288\sl-240\tldot\tx8064\tqr\tx8640 \plain \f16
+1.1 Bulleted Lists\tab \tab 1\par
+1.2 Simple Lists\tab \tab 1\par
+1.3 Terms List\tab \tab 1\par
+1.4 Routines List\tab \tab 2\par
+\pard \s99\li288\fi-288\sl-240\sb240\tldot\tx8064\tqr\tx8640
+\plain \f16 2. Notes\tab \tab 2\par
+3. Code Examples\tab \tab 2\par
+4. Function Prototypes\tab \tab 2\par
+\pard \s100\li576\fi-288\sl-240\tldot\tx8064\tqr\tx8640 \plain
+\f16 4.1 Typedefs Treated as Prototypes\tab \tab 3\par
+4.2 Parameters With Special Values\tab \tab 3\par
+\pard \s99\li288\fi-288\sl-240\sb240\tldot\tx8064\tqr\tx8640
+\plain \f16 5. Diagrams\tab \tab 6\par
+6. Character Formatting\tab \tab 6\par
+\pard \s30\sl-240\sa240 \plain \v\f16 \plain \v\f16 .E\plain
+\v\f16 nd Table C\plain \v\f16 .\plain \v\f16 \par
+\plain \f16 \sect \sectd \ds105\linex576\endnhere\pgnrestart
+{\header \pard \s62\sl-240\tqr\tx9936 \plain \b\f16 %N\tab \chpgn \par
+}{\footer \pard \s63\qc\sl-240 \plain \b\f16 Microsoft Corporation Company Confidential\par
+}%T}
diff --git a/public/tools/findadd.cmd b/public/tools/findadd.cmd
new file mode 100644
index 000000000..2adf0cde5
--- /dev/null
+++ b/public/tools/findadd.cmd
@@ -0,0 +1,2 @@
+rem findadd - find files which are not marked read only, in children of current dir
+(walk /d . ls -lq %%s) | qgrep -yv "build. .obj .lib .dll .exe .map" | qgrep -vB -e "d--" | qgrep -v -e "--r"
diff --git a/public/tools/fixdoc.cmd b/public/tools/fixdoc.cmd
new file mode 100644
index 000000000..3dfc1e4a8
--- /dev/null
+++ b/public/tools/fixdoc.cmd
@@ -0,0 +1,19 @@
+@rem
+@rem If no drive has been specified for the NT development tree, assume
+@rem C:. To override this, place a SET _NTDRIVE=X: in your CONFIG.SYS
+@rem
+@if "%_NTDRIVE%" == "" set _NTDRIVE=C:
+@if NOT "%1" == "" goto doit
+@echo Usage FIXDOC docname
+goto done
+:doit
+@if EXIST %_NTDRIVE%\nt\public\tools\doctor.gly goto prtxt
+ech PUBLIC\TOOLS directory out of sync.
+@goto done
+:prtxt
+@if EXIST .\normal.gly mv normal.gly normal.sav
+@copy %_NTDRIVE%\nt\public\tools\doctor.gly normal.gly
+@word %1.doc
+@del normal.gly
+@if EXIST .\normal.sav mv normal.sav normal.gly
+:done
diff --git a/public/tools/inout.cmd b/public/tools/inout.cmd
new file mode 100644
index 000000000..bb8a6a223
--- /dev/null
+++ b/public/tools/inout.cmd
@@ -0,0 +1,2 @@
+@if "%_echo%"=="" echo off
+in -u %1 %2 %3 %4 %5 %6 %7 %8 %9
diff --git a/public/tools/kbd.reb b/public/tools/kbd.reb
new file mode 100644
index 000000000..2da5334bb
--- /dev/null
+++ b/public/tools/kbd.reb
@@ -0,0 +1,33 @@
+KBDBE.DLL
+KBDBR.DLL
+KBDCA.DLL
+KBDCZ.DLL
+KBDDA.DLL
+KBDDV.DLL
+KBDES.DLL
+KBDFC.DLL
+KBDFI.DLL
+KBDFR.DLL
+KBDGR.DLL
+KBDHE.DLL
+KBDHU.DLL
+KBDIC.DLL
+KBDIT.DLL
+KBDLA.DLL
+KBDNE.DLL
+KBDNO.DLL
+KBDPL1.DLL
+KBDPO.DLL
+KBDRU.DLL
+KBDSF.DLL
+KBDSG.DLL
+KBDSL.DLL
+KBDSP.DLL
+KBDSW.DLL
+KBDTUF.DLL
+KBDTUQ.DLL
+KBDUK.DLL
+KBDUSL.DLL
+KBDUSR.DLL
+KBDUSX.DLL
+ \ No newline at end of file
diff --git a/public/tools/known.reb b/public/tools/known.reb
new file mode 100644
index 000000000..45bd546a9
--- /dev/null
+++ b/public/tools/known.reb
@@ -0,0 +1,33 @@
+winmm.dll
+mmdrv.dll
+ntdll.dll
+kernel32.dll
+gdi32.dll
+user32.dll
+rpcrt4.dll
+rpcltc1.dll
+rpclts1.dll
+advapi32.dll
+comdlg32.dll
+shell32.dll
+comctl32.dll
+winspool.drv
+ole32.dll
+oleaut32.dll
+version.dll
+security.dll
+printui.dll
+ntshrui.dll
+msvcrt.dll
+msvcrt40.dll
+lz32.dll
+linkinfo.dll
+olethk32.dll
+olecli32.dll
+olecnv32.dll
+oledlg.dll
+olesvr32.dll
+syncui.dll
+shcompui.dll
+url.dll
+shareui.dll
diff --git a/public/tools/mpntstat.cmd b/public/tools/mpntstat.cmd
new file mode 100644
index 000000000..481868632
--- /dev/null
+++ b/public/tools/mpntstat.cmd
@@ -0,0 +1,68 @@
+@echo off
+setlocal ENABLEEXTENSIONS
+if "%1" == "_DOPROJECT" goto doproject
+if "%1" == "_DOWAIT" goto dowait
+cd /d %_NTDRIVE%\nt
+set _NTSTATCMD1=
+erase ntstat.log
+erase ntstatsr.cmd
+if NOT "%1" == "_Y" goto notlocal
+erase ntstatsr1.cmd
+set _NTSTATCMD1=\nt\ntstat1sr.cmd
+:notlocal
+echo Launching separate STATUS command for each project
+echo Use 'CMDEVENT TerminateSLM' to abort the run.
+start /B /MIN cmdevent -w TerminateSLM
+start /B /MIN cmd /c %0 _DOWAIT %1
+sleep 5
+for %%i in (%NTPROJECTS%) do start "MP:%%i" /MIN cmd /c %0 _DOPROJECT %%i
+cmdevent -a MPNTSTAT TerminateSLM
+if ERRORLEVEL 2 goto slmstopped
+echo Collecting output files
+for %%i in (%NTPROJECTS%) do call :collectproject %%i
+if NOT "%_NTSTATCMD1%" == "" (
+ cd \nt
+ erase ntstatsr1.tmp 2>nul
+ ren ntstatsr1.cmd ntstatsr1.tmp
+ qgrep -v -y -L -f \nt\public\tools\ntclnsr1.txt \nt\ntstatsr1.tmp >\nt\ntstatsr1.cmd
+)
+copy \nt\ntstat.log \nt\pickup.cmd
+if "%1" == "" pause
+qgrep -e "*update" -e "*conflict" -e "*verify" -e "*merge" \nt\pickup.cmd | more
+if EXIST \nt\private\timeit.dat timeit -f \nt\private\timeit.dat -k NTSTAT_ALL_PARALLEL%1 -t -d
+cmdevent TerminateSLM >nul 2>nul
+goto done
+:slmstopped
+echo SLM Aborted. Output files left as is.
+goto done
+:dowait
+if EXIST \nt\private\timeit.dat timeit -f \nt\private\timeit.dat -k NTSTAT_ALL_PARALLEL%2 cmdevent -w -v %NTPROJECTS%
+if NOT EXIST \nt\private\timeit.dat cmdevent -w -v %NTPROJECTS%
+@echo off
+cmdevent MPNTSTAT >nul 2>nul
+goto done
+:collectproject
+if EXIST \nt\%1.log (
+ type \nt\%1.log >>\nt\ntstat.log
+ erase \nt\%1.log
+)
+if EXIST \nt\%1sr.cmd (
+ type \nt\%1sr.cmd >>\nt\ntstatsr.cmd
+ erase \nt\%1sr.cmd
+)
+if EXIST \nt\%1sr1.cmd (
+ type \nt\%1sr1.cmd >>\nt\ntstatsr1.cmd
+ erase \nt\%1sr1.cmd
+)
+goto :EOF
+:doproject
+set _NTSTATLOG=\nt\%2.log
+set _NTSTATCMD=\nt\%2sr.cmd
+if NOT "%_NTSTATCMD1%" == "" set _NTSTATCMD1=\nt\%2sr1.cmd
+erase %_NTSTATLOG% 2>nul
+erase %_NTSTATCMD% 2>nul
+if NOT "%_NTSTATCMD1%" == "" erase %_NTSTATCMD1% 2>nul
+call ntslmop.cmd status %2
+cmdevent %2
+:done
+endlocal
diff --git a/public/tools/myenlist.cmd b/public/tools/myenlist.cmd
new file mode 100644
index 000000000..67e284a45
--- /dev/null
+++ b/public/tools/myenlist.cmd
@@ -0,0 +1,45 @@
+@rem Script to enlist in all projects contained in %NTPROJECTS%.
+@rem Assumes tc.exe is in %Path%
+@rem __________________________________________________________________________
+
+@if "%_echo%"=="" echo off
+if not "%Verbose%"=="" echo on
+
+setlocal
+
+if "%1" == "" goto SetProjects
+for %%a in (./ .- .) do if ".%1." == "%%a?." goto Usage
+
+%_ntdrive%
+path=%path%;%_ntdrive%\nt\public\tools
+
+:TopOfProjectLoop
+ if "%1" == "" goto BreakOutOfProjectLoop
+ call projects %1 2>nul
+ if "%project%" == "" echo Don't know %1 project & goto BottomOfProjectLoop
+ tc junk %proj_path%
+ cd %proj_path%
+ if exist slm.ini echo Already enlisted in %1 project & goto BottomOfProjectLoop
+ enlist -fgs %slm_root% -p %project%
+ ssync -rfu
+
+:BottomOfProjectLoop
+ echo.
+ shift
+ goto TopOfProjectLoop
+
+:BreakOutOfProjectLoop
+
+goto End
+:SetProjects
+
+if not "%NTPROJECTS%" == "" call %0 %NTPROJECTS%
+
+goto End
+:Usage
+
+echo Usage: %0
+
+:End
+
+endlocal
diff --git a/public/tools/net.reb b/public/tools/net.reb
new file mode 100644
index 000000000..b8d184a67
--- /dev/null
+++ b/public/tools/net.reb
@@ -0,0 +1,19 @@
+netui0.dll
+netui1.dll
+netrap.dll
+netapi32.dll
+ntlanman.dll
+samlib.dll
+netui2.dll
+acledit.dll
+netmsg.dll
+mpr.dll
+mprui.dll
+ntlanui.dll
+wsock32.dll
+ws2_32.dll
+ws2help.dll
+wshtcpip.dll
+mswsock.dll
+msafd.dll
+crtdll.dll
diff --git a/public/tools/never.reb b/public/tools/never.reb
new file mode 100644
index 000000000..119911b10
--- /dev/null
+++ b/public/tools/never.reb
@@ -0,0 +1,5 @@
+odbcjt32.dll
+rsabase.dll
+msjt3032.dll
+msvcirt.dll
+msvcrtp.dll
diff --git a/public/tools/ntadd.cmd b/public/tools/ntadd.cmd
new file mode 100644
index 000000000..b9586fab1
--- /dev/null
+++ b/public/tools/ntadd.cmd
@@ -0,0 +1,13 @@
+@if "%_echo%"=="" echo off
+setlocal
+set _NTADDDEL=%_NTDRIVE%\nt\ntadddel.cmd
+:loop
+if "%1" == "" goto done
+echo Placing ADDFILE %1 command in %_NTADDDEL%
+ech "cd " >>%_NTADDDEL%
+cd >>%_NTADDDEL%
+ech "addfile -c CommentHere %1" ; >>%_NTADDDEL%
+shift
+goto loop
+:done
+endlocal
diff --git a/public/tools/ntclnsr1.txt b/public/tools/ntclnsr1.txt
new file mode 100644
index 000000000..5bde950c9
--- /dev/null
+++ b/public/tools/ntclnsr1.txt
@@ -0,0 +1,84 @@
+\private\dcomidl
+\private\exchange
+\private\eventlog
+\private\newsam
+\private\mvdm
+\private\rpc
+\private\types
+\private\types2
+\private\utils\ntlib
+\private\windbg
+\net\inc
+\net\routing
+\net\sockets
+\net\svcdlls
+\net\ui
+\oak\inc
+\os2\public
+\ole32
+\programs\bin
+\rltools\common
+\sdk\inc
+\sdk\lib\i386
+\sdk\lib\cairo\i386
+\tapi
+\vctools
+\windows\inc
+\windows\media
+\windows\netdde\src
+\windows\setup\bom
+\windows\setup\inf
+\windows\setup\legacy
+\windows\shell\accesory\hypertrm
+\windows\shell\games\sol
+nlstxt.mc
+gdi32p.def
+gdii386.inc
+winerrp.h
+winerrp.mc
+pnp.h
+svcctl.h
+saclmsg.rc
+dispcb.c
+callcf.c
+callback.h
+user32p.def
+wowasm.asm
+wowrtl.asm
+winspl.h
+wintools.h
+msg.h
+msg.mc
+rtmsg.
+.pp
+.cod
+rpc.h
+svc.h
+_c.c
+_c.h
+_s.c
+_s.h
+_cli.c
+_cli.h
+_srv.c
+_srv.h
+.out
+.old
+.new
+.hiv
+.bin
+.log
+.inf
+.lib
+.exp
+.res
+.obj
+.exe
+.dll
+.sys
+.cpl
+.drv
+.tsp
+.xtr
+.gid
+.hlp
diff --git a/public/tools/ntdefect.cmd b/public/tools/ntdefect.cmd
new file mode 100644
index 000000000..bac2767e8
--- /dev/null
+++ b/public/tools/ntdefect.cmd
@@ -0,0 +1,16 @@
+@if "%_echo%"=="" echo off
+setlocal
+if NOT "%1" == "" goto doprojects
+call %0 %NTPROJECTS% %NTPROJECTS_EXTRA%
+goto done
+:doprojects
+set _ntgetargs_=
+:loop
+if "%1" == "" goto loopexit
+set _ntgetargs_=%_ntgetargs_% %1
+shift
+goto loop
+:loopexit
+call ntslmop defect %_ntgetargs_%
+:done
+endlocal
diff --git a/public/tools/ntdel.cmd b/public/tools/ntdel.cmd
new file mode 100644
index 000000000..c62a8ed3c
--- /dev/null
+++ b/public/tools/ntdel.cmd
@@ -0,0 +1,15 @@
+@if "%_echo%"=="" echo off
+setlocal
+set _NTADDDEL=%_NTDRIVE%\nt\ntadddel.cmd
+:loop
+if "%1" == "" goto done
+echo Placing DELFILE %1 command in %_NTADDDEL%
+ech "cd " >>%_NTADDDEL%
+cd >>%_NTADDDEL%
+ech "delfile -c CommentHere %1" ; >>%_NTADDDEL%
+chmode -r %1
+del %1
+shift
+goto loop
+:done
+endlocal
diff --git a/public/tools/ntenv.cmd b/public/tools/ntenv.cmd
new file mode 100644
index 000000000..362b55ecf
--- /dev/null
+++ b/public/tools/ntenv.cmd
@@ -0,0 +1,50 @@
+@rem
+@rem If no drive has been specified for the NT development tree, assume
+@rem C:. To override this, place a SET _NTDRIVE=X: in your CONFIG.SYS
+@rem
+if "%_NTDRIVE%" == "" set _NTDRIVE=W:
+@rem
+@rem If no directory has been specified for the NT development tree, assume
+@rem \nt. To override this, place a SET _NTROOT=\xt in your CONFIG.SYS
+@rem
+if "%_NTROOT%" == "" set _NTROOT=\NT
+set _NTBINDIR=%_NTDRIVE%%_NTROOT%
+@rem
+@rem This command file assumes that the developer has already defined
+@rem the USERNAME environment variable to match their email name (e.g.
+@rem stevewo).
+@rem
+@rem We want to remember some environment variables so we can restore later
+@rem if necessary (see NTUSER.CMD)
+@rem
+set _NTUSER=%USERNAME%
+@rem
+@rem Assume that the developer has already included \NT\PUBLIC\TOOLS
+@rem in their path. If not, then it is doubtful they got this far.
+@rem
+path %PATH%;%_NTBINDIR%\PUBLIC\OAK\BIN
+@rem
+@rem No hidden semantics of where to get libraries and include files. All
+@rem information is included in the command lines that invoke the compilers
+@rem and linkers.
+@rem
+set LIB=
+set INCLUDE=
+@rem
+@rem Setup default build parameters.
+@rem
+set BUILD_DEFAULT=ntoskrnl ntkrnlmp daytona -e -i -nmake -i
+set BUILD_DEFAULT_TARGETS=-386
+set BUILD_MAKE_PROGRAM=nmake.exe
+@rem
+@rem Setup default nmake parameters.
+@rem
+if "%NTMAKEENV%" == "" set NTMAKEENV=%_NTBINDIR%\PUBLIC\OAK\BIN
+@rem
+@rem Setup the user specific environment information
+@rem
+call %_NTBINDIR%\PUBLIC\TOOLS\ntuser.cmd
+@rem
+@rem Optional parameters to this script are command line to execute
+@rem
+%1 %2 %3 %4 %5 %6 %7 %8 %9
diff --git a/public/tools/ntlock.cmd b/public/tools/ntlock.cmd
new file mode 100644
index 000000000..54e1dcac4
--- /dev/null
+++ b/public/tools/ntlock.cmd
@@ -0,0 +1,8 @@
+@if "%_echo%"=="" echo off
+setlocal
+set _comment=%1
+if '%_comment%' == '' set _comment="NTLOCK command script"
+%_NTDRIVE%
+cd \nt\public
+cookie -w -c %_comment%
+endlocal
diff --git a/public/tools/ntlocked.cmd b/public/tools/ntlocked.cmd
new file mode 100644
index 000000000..06995dc92
--- /dev/null
+++ b/public/tools/ntlocked.cmd
@@ -0,0 +1,6 @@
+@if "%_echo%"=="" echo off
+setlocal
+%_NTDRIVE%
+cd \nt\public
+cookie
+endlocal
diff --git a/public/tools/ntlog.cmd b/public/tools/ntlog.cmd
new file mode 100644
index 000000000..dcbe27ab4
--- /dev/null
+++ b/public/tools/ntlog.cmd
@@ -0,0 +1,27 @@
+@if "%_echo%"=="" echo off
+setlocal
+if "%_NTLOGLOG%" == "" set _NTLOGLOG=\nt\ntlog.log
+if "%1" == "all" goto logall
+if NOT "%1" == "" goto doprojects
+if "%NTPROJECTS%" == "" goto noprojs
+erase %_NTLOGLOG% 2>nul
+call %0 %NTPROJECTS%
+goto done
+:logall
+erase %_NTLOGLOG% 2>nul
+call %0 %NTPROJECTS% %NTPROJECTS_EXTRA%
+goto done
+:noprojs
+echo Must define NTPROJECTS environment variable to use this command without arguments
+goto done
+:doprojects
+set _ntgetargs_=
+:loop
+if "%1" == "" goto loopexit
+set _ntgetargs_=%_ntgetargs_% %1
+shift
+goto loop
+:loopexit
+call ntslmop log %_ntgetargs_%
+:done
+endlocal
diff --git a/public/tools/ntnewver.cmd b/public/tools/ntnewver.cmd
new file mode 100644
index 000000000..4e94442ec
--- /dev/null
+++ b/public/tools/ntnewver.cmd
@@ -0,0 +1,12 @@
+cd \nt\private\ntos\init
+build -zM 2
+cd \nt\private\sdktools\imagehlp
+build -zM 4
+cd \nt\private\sdktools\kdexts
+build -zM 4
+cd \nt\private\sdktools\ntsd
+build -zM 4
+
+rem --- Rebuild userkdx.dll every build (ianja)
+cd \nt\private\ntos\w32\ntuser\kdexts\kd
+build -zM 3
diff --git a/public/tools/ntoskrnl.reb b/public/tools/ntoskrnl.reb
new file mode 100644
index 000000000..cf373768f
--- /dev/null
+++ b/public/tools/ntoskrnl.reb
@@ -0,0 +1,3 @@
+ntoskrnl.exe
+ntkrnlmp.exe
+ \ No newline at end of file
diff --git a/public/tools/ntprojs.cmd b/public/tools/ntprojs.cmd
new file mode 100644
index 000000000..b395c3704
--- /dev/null
+++ b/public/tools/ntprojs.cmd
@@ -0,0 +1,26 @@
+@if "%_echo%"=="" echo off
+setlocal
+if NOT "%1" == "" goto testproj
+if "%NTPROJECTS%" == "" goto noprojs
+call ntprojs %NTPROJECTS% %NTPROJECTS_EXTRA%
+goto done
+:noprojs
+echo Must define NTPROJECTS environment variable to use this command without arguments
+goto done
+:testproj
+if "%1" == "" goto done
+Ech "Testing %1 project name -"
+call projects.cmd %1
+shift
+if "%proj_path%"=="" goto badproject
+if NOT EXIST %proj_path%\slm.ini goto notenlisted
+ech (enlisted) ;
+goto testproj
+:notenlisted
+ech (not enlisted) ;
+goto testproj
+:badproject
+ech (bad project name) ;
+goto testproj
+:done
+endlocal
diff --git a/public/tools/ntrebase.cmd b/public/tools/ntrebase.cmd
new file mode 100644
index 000000000..7da3fa33a
--- /dev/null
+++ b/public/tools/ntrebase.cmd
@@ -0,0 +1,225 @@
+setlocal
+
+if "%1" == "NoTools" set NOTOOLS=1& shift
+set _REBASE_FLAGS=%_NTREBASE_FLAGS%
+if not "%_REBASE_FLAGS%" == "" echo Using flags from _NTREBASE_FLAGS == "%_NTREBASE_FLAGS%"
+if not "%1" == "" set _REBASE_FLAGS=%1 %2 %3 %4 %5 %6 %7 %8 %9
+set _REBASE_FLAGS=-v %_REBASE_FLAGS%
+
+set _QFE_BUILD=1
+set REBASELANG=usa
+
+@if not "%_QFE_BUILD%"=="1" goto CHK1
+@if not "%REBASELANG%"=="" goto CHK1
+@echo REBASELANG not defined.
+@goto EXIT
+
+:CHK1
+@if "%PROCESSOR_ARCHITECTURE%"=="x86" goto X86
+@if "%PROCESSOR_ARCHITECTURE%"=="MIPS" goto MIPS
+@if "%PROCESSOR_ARCHITECTURE%"=="ALPHA" goto ALPHA
+@if "%PROCESSOR_ARCHITECTURE%"=="PPC" goto PPC
+@echo PROCESSOR_ARCHITECTURE not defined.
+@goto EXIT
+
+
+:X86
+@set _TREE=%_NT386TREE%
+@set _ADDRESS_FILE=%_ntdrive%\nt\public\sdk\lib\i386\%REBASELANG%\baseaddr.txt
+@goto OK
+
+:MIPS
+@set _TREE=%_NTMIPSTREE%
+@set _ADDRESS_FILE=%_ntdrive%\nt\public\sdk\lib\mips\%REBASELANG%\baseaddr.txt
+@goto OK
+
+:ALPHA
+@set _TREE=%_NTALPHATREE%
+@set _ADDRESS_FILE=%_ntdrive%\nt\public\sdk\lib\alpha\%REBASELANG%\baseaddr.txt
+@goto OK
+
+:PPC
+@set _TREE=%_NTPPCTREE%
+@set _ADDRESS_FILE=%_ntdrive%\nt\public\sdk\lib\ppc\%REBASELANG%\baseaddr.txt
+@goto OK
+
+
+:OK
+imagecfg /r %_TREE%\smss.exe %_TREE%\csrss.exe %_TREE%\lsass.exe %_TREE%\services.exe %_TREE%\winlogon.exe %_TREE%\spoolss.exe %_TREE%\rpcss.exe %_TREE%\explorer.exe %_TREE%\ntvdm.exe
+@if not "%_QFE_BUILD%"=="1" goto OK1
+@if exist %_ADDRESS_FILE% goto OK1
+@echo Could Not Find %_ADDRESS_FILE%
+@goto EXIT
+
+:OK1
+
+@echo Rebasing images in %_TREE%
+@set _REBASE_SYMS=
+@set _REBASE_LOG=%_TREE%\rebase.log
+@if NOT EXIST %_TREE%\Symbols\nul goto nodbgfiles
+
+@set _REBASE_SYMS=-x %_TREE%\Symbols
+@set _REBASE_LOG=%_TREE%\Symbols\rebase.log
+@echo ... updating .DBG files in %_TREE%\Symbols
+
+:nodbgfiles
+erase %_REBASE_LOG%
+
+@set _REBASE_FLAGS=%_REBASE_FLAGS% -l %_REBASE_LOG%
+@set _REBDIR=%_NTDRIVE%\nt\public\tools
+
+
+@REM *************************************
+@REM *** Skip ahead for the QFE build. ***
+@REM *************************************
+
+@if "%_QFE_BUILD%"=="1" goto QFE
+
+@set _REBPATHS=
+@set _REBPATHS=%_REBPATHS% %_TREE%\*.acm %_TREE%\*.dll %_TREE%\*.cpl %_TREE%\*.drv
+@set _REBPATHS=%_REBPATHS% %_TREE%\system32\*.dll
+@if "%NOTOOLS%" == "1" goto NoTools
+@set _REBPATHS=%_REBPATHS% %_TREE%\mstools\*.dll %_TREE%\idw\*.dll
+:NoTools
+@set _REBPATHS=%_REBPATHS% %_TREE%\dump\*.dll
+
+if exist %_TREE%\Wx86Shl set WX86_TREE=%_TREE%\Wx86Shl
+if not exist %_TREE%\Wx86Shl set WX86_NTTREE=%_TREE%
+if exist %_TREE%\Wx86Shl\Symbols set WX86_REBASE_SYMS=-x %_TREE%\Wx86Shl\Symbols
+
+@REM *********************************
+@REM *** Rebase for regular build. ***
+@REM *********************************
+
+@rem
+@rem rebase the dlls. do not touch the csr, wow, or mail dlls.
+@rem
+
+@set _REBASE_EXCLUDES=
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\csrss.reb
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\kbd.reb
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\video.reb
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\ntvdm.reb
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\wx86.reb
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\wx86thnk.reb
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\never.reb
+
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -G %_REBDIR%\known.reb -G %_REBDIR%\net.reb -G %_REBDIR%\printer.reb
+rebase %_REBASE_SYMS% %_REBASE_FLAGS% -d -b 0x78000000 -R %_TREE% %_REBASE_EXCLUDES% %_REBPATHS%
+
+
+rem
+rem rebase wx86shl dlls
+rem
+if not exist %_TREE%\Wx86Shl goto SkipWx86
+@set REBFLAGS=
+@set REBFLAGS=%REBFLAGS% -N %_REBDIR%\Wx86.reb
+@set REBFLAGS=%REBFLAGS% -N %_REBDIR%\Wx86thnk.reb
+@set REBFLAGS=%REBFLAGS% %WX86_TREE%\*.dll
+@set REBFLAGS=%REBFLAGS% %WX86_TREE%\system32\*.dll
+
+rebase %WX86_REBASE_SYMS% %_REBASE_FLAGS% -b 0x70000000 -R %WX86_TREE% %REBFLAGS%
+:SkipWx86
+
+
+@rem
+@rem rebase all exes. do not touch csr, wow, or mail
+@rem
+
+@set _REBASE_EXCLUDES=
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\csrss.reb
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\kbd.reb
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\video.reb
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\ntvdm.reb
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\ntoskrnl.reb
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\bldtools.reb
+
+@set _REBPATHS=
+@set _REBPATHS=%_REBPATHS% %_TREE%\*.exe %_TREE%\system32\*.exe
+@if NOT "%NOTOOLS%" == "1" @set _REBPATHS=%_REBPATHS% %_TREE%\mstools\*.exe %_TREE%\idw\*.exe
+@set _REBPATHS=%_REBPATHS% %_TREE%\dump\*.exe
+
+rebase %_REBASE_SYMS% %_REBASE_FLAGS% -b 0x01000000 -R %_TREE% %_REBASE_EXCLUDES% %_REBPATHS%
+
+
+@rem
+@rem rebase csrss as a group
+@rem
+
+rebase %_REBASE_SYMS% %_REBASE_FLAGS% -d -b 0x60000000 -R %_TREE% -G %_REBDIR%\csrss.reb -O %_REBDIR%\kbd.reb -O %_REBDIR%\video.reb
+
+
+@rem
+@rem rebase wow as a group
+@rem
+
+rebase %_REBASE_SYMS% %_REBASE_FLAGS% -d -b 0x10000000 -R %_TREE% -G %_REBDIR%\ntvdm.reb
+
+
+@rem
+@rem rebase wx86 as two groups, one starting at 0x60000000 and going up (cpu),
+@rem and one ending at 0x60000000 and going down (thunks).
+
+@rem
+rebase %WX86_REBASE_SYMS% %_REBASE_FLAGS% -b 0x60000000 -R %WX86_TREE% -G %_REBDIR%\wx86.reb
+rebase %WX86_REBASE_SYMS% %_REBASE_FLAGS% -d -b 0x60000000 -R %WX86_TREE% -G %_REBDIR%\wx86thnk.reb
+
+
+@goto EXIT
+
+:QFE
+
+REM *****************************
+REM *** Rebase for QFE build. ***
+REM *****************************
+
+rem
+rem rebase DLLs
+rem
+
+set _DLL_FLAGS=-R %_TREE%
+set _DLL_FLAGS=%_DLL_FLAGS% -N %_REBDIR%\never.reb
+
+goto SKIP1
+set _DLL_FLAGS=%_DLL_FLAGS% -G %_REBDIR%\known.reb
+set _DLL_FLAGS=%_DLL_FLAGS% -O %_REBDIR%\kbd.reb
+set _DLL_FLAGS=%_DLL_FLAGS% -O %_REBDIR%\video.reb
+set _DLL_FLAGS=%_DLL_FLAGS% -G %_REBDIR%\printer.reb
+:SKIP1
+
+set _REBPATHS=
+set _REBPATHS=%_REBPATHS% %_TREE%\*.acm
+set _REBPATHS=%_REBPATHS% %_TREE%\*.dll
+set _REBPATHS=%_REBPATHS% %_TREE%\*.cpl
+set _REBPATHS=%_REBPATHS% %_TREE%\*.drv
+set _REBPATHS=%_REBPATHS% %_TREE%\system32\*.dll
+set _REBPATHS=%_REBPATHS% %_TREE%\mstools\*.dll
+set _REBPATHS=%_REBPATHS% %_TREE%\idw\*.dll
+set _REBPATHS=%_REBPATHS% %_TREE%\dump\*.dll
+set _REBPATHS=%_REBPATHS% %_TREE%\noexport\*.dll
+
+rebase %_REBASE_SYMS% %_REBASE_FLAGS% -i %_ADDRESS_FILE% %_DLL_FLAGS% %_REBPATHS%
+
+rem
+rem rebase EXEs
+rem
+
+set _EXE_FLAGS=-R %_TREE%
+set _EXE_FLAGS=%_EXE_FLAGS% -N %_REBDIR%\csrss.reb
+set _EXE_FLAGS=%_EXE_FLAGS% -N %_REBDIR%\ntvdm.reb
+set _EXE_FLAGS=%_EXE_FLAGS% -N %_REBDIR%\ntoskrnl.reb
+set _EXE_FLAGS=%_EXE_FLAGS% -N %_REBDIR%\bldtools.reb
+
+set _REBPATHS=
+set _REBPATHS=%_REBPATHS% %_TREE%\*.exe
+set _REBPATHS=%_REBPATHS% %_TREE%\system32\*.exe
+set _REBPATHS=%_REBPATHS% %_TREE%\mstools\*.exe
+set _REBPATHS=%_REBPATHS% %_TREE%\idw\*.exe
+set _REBPATHS=%_REBPATHS% %_TREE%\dump\*.exe
+set _REBPATHS=%_REBPATHS% %_TREE%\noexport\*.exe
+
+rebase %_REBASE_SYMS% %_REBASE_FLAGS% -i %_ADDRESS_FILE% %_EXE_FLAGS% %_REBPATHS%
+
+:EXIT
+
+endlocal
diff --git a/public/tools/ntrelenv.cmd b/public/tools/ntrelenv.cmd
new file mode 100644
index 000000000..7d4fd1ad2
--- /dev/null
+++ b/public/tools/ntrelenv.cmd
@@ -0,0 +1,3 @@
+@if "%_echo%"=="" echo off
+set _NTROOT=\NTREL
+%_NTDRIVE%\NT\PUBLIC\TOOLS\ntenv.cmd %1 %2 %3 %4 %5 %6 %7 %8 %9
diff --git a/public/tools/ntrest.cmd b/public/tools/ntrest.cmd
new file mode 100644
index 000000000..6301e814c
--- /dev/null
+++ b/public/tools/ntrest.cmd
@@ -0,0 +1,48 @@
+@if "%_echo%" == "" echo off
+setlocal
+set _NTSTATXX=ReSt
+if "%_NTSLMBACKUP%" == "" goto nobackup
+if NOT EXIST %_NTSLMBACKUP%\ntstatsr.cmd goto nosavedone
+if "%1" == "/?" goto dohelp
+if "%1" == "-?" goto dohelp
+if "%1" == "/h" goto dohelp
+if "%1" == "/H" goto dohelp
+if "%1" == "-h" goto dohelp
+if "%1" == "-H" goto dohelp
+if "%1" == "/help" goto dohelp
+if "%1" == "/HELP" goto dohelp
+ech ;
+echo Currently you have backed up on %_NTSLMBACKUP%
+du %_NTSLMBACKUP%
+ech ;
+echo Restoring checked out files from %_NTSLMBACKUP%
+ech ;
+call %_NTSLMBACKUP%\ntstatsr.cmd
+goto done
+:dohelp
+echo usage: NTREST
+ech ;
+echo This command script restores all the files you currently have
+echo checked out from the directory tree pointed to by the _NTSLMBACKUP
+echo environment variable. The list of files to restore is located in
+echo the file %_NTSLMBACKUP%\ntstatsr.cmd, which is produced by the NTSAVE
+echo command.
+ech ;
+echo This command can only be run if the NTSAVE command script has been
+echo run at least once.
+ech ;
+goto done
+:nosavedone
+echo In order to use the NTREST command you must first have done an
+echo NTSAVE command to save something to restore.
+echo ;
+goto done
+:nobackup
+echo In order to use the NTSAVE and NTREST commands you must first
+echo set the _NTSLMBACKUP environment variable prior to running the
+echo NTSTAT command. The value of this variable should be a network
+echo directory path that will be where the NTSAVE script will save
+echo copies of all files you currently have checked out.
+echo ;
+:done
+endlocal
diff --git a/public/tools/ntruser.cmd b/public/tools/ntruser.cmd
new file mode 100644
index 000000000..f5811dc57
--- /dev/null
+++ b/public/tools/ntruser.cmd
@@ -0,0 +1,5 @@
+@if "%_echo%"=="" echo off
+echo
+echo This command script is obsolete. NTUSER now does the correct thing.
+echo
+ntuser.cmd
diff --git a/public/tools/ntsave.cmd b/public/tools/ntsave.cmd
new file mode 100644
index 000000000..494562fc4
--- /dev/null
+++ b/public/tools/ntsave.cmd
@@ -0,0 +1,94 @@
+@if "%_echo%" == "" echo off
+setlocal
+set _NTSTATXX=SaVe
+set _NTSAVEDEL=
+set _NTSTATSRCMD=\nt\ntstatsr.cmd
+set _NTSTATSR1CMD=\nt\ntstatsr1.cmd
+set _NTSTATXXLOCAL=
+if "%_NTSLMBACKUP%" == "" goto nobackup
+if NOT EXIST \nt\ntstatsr.cmd goto noscript
+if NOT EXIST %_NTSLMBACKUP%\*. goto firsttime
+if "%1" == "/?" goto dohelp
+if "%1" == "-?" goto dohelp
+if "%1" == "/h" goto dohelp
+if "%1" == "/H" goto dohelp
+if "%1" == "-h" goto dohelp
+if "%1" == "-H" goto dohelp
+if "%1" == "/help" goto dohelp
+if "%1" == "/HELP" goto dohelp
+if "%1" == "keep" goto dokeep
+if "%1" == "KEEP" goto dokeep
+if "%1" == "Keep" goto dokeep
+if "%1" == "" goto doit
+goto dokeep
+:doit
+ech ;
+echo Saving previous tree while we create a new one.
+mv %_NTSLMBACKUP% %_NTSLMBACKUP%\..\ntsave.old
+if ERRORLEVEL 1 goto cantsave
+set _NTSAVEDEL=%_NTSLMBACKUP%\..\ntsave.old
+:firsttime
+mkdir %_NTSLMBACKUP%
+:dokeep
+ech ;
+echo Saving checked out files to %_NTSLMBACKUP%
+ech ;
+copy %_NTSTATSRCMD% %_NTSLMBACKUP%
+call %_NTSTATSRCMD%
+if EXIST %_NTSTATSR1CMD% (
+set _NTSTATXXLOCAL=yes
+copy %_NTSTATSR1CMD% %_NTSLMBACKUP%
+call %_NTSTATSR1CMD%
+)
+if "%_NTSAVEDEL%" == "" goto nodelete
+ech ;
+echo Deleting previous tree now that we have successfully created a new one.
+delnode /q %_NTSAVEDEL%
+:nodelete
+ech ;
+echo Currently you have backed up on %_NTSLMBACKUP%
+du %_NTSLMBACKUP%
+goto done
+:cantsave
+echo The KEEP option was not specified and the attempt to rename
+echo the previous save tree failed. Will assume KEEP specified.
+ync /c yn "Do you want to proceed?"
+if ERRORLEVEL 1 goto done
+goto dokeep
+:noscript
+echo The \nt\ntstatsr.cmd script file does not exist. This file
+echo is created by the NTSTAT command if the _NTSLMBACKUP environment
+echo variable is defined prior to invoking the NTSTAT command. You
+echo have the variable defined, so either you have not run the NTSTAT
+echo command since defining it, or you don't have any file checked
+echo out, in which case you might as well go home now.
+echo ;
+goto done
+:dohelp
+echo usage: NTSAVE [keep]
+ech ;
+echo This command script saves all the files you currently have
+echo checked out to the directory tree pointed to by the _NTSLMBACKUP
+echo environment variable. The list of files to save is located in
+echo the file \nt\ntstatsr.cmd, which is produced by the NTSTAT command.
+echo To avoid name conflicts, the files are kept in a flat directory,
+echo one for each project, under the directory pointed to by _NTSLMBACKUP.
+echo The files names are numeric, with the \nt\ntstatsr.cmd file defining
+echo the mapping. Use the NTREST command to restore from the saved
+echo tree.
+ech ;
+echo The keep option tells the command script to copy the files on top
+echo of any existing files in the destination directory. The default
+echo behavior is to rename the current destination directory to .old
+echo do the copies and then if successful, delnode the old copy.
+ech ;
+goto done
+:nobackup
+echo In order to use the NTSAVE and NTREST commands you must first
+echo set the _NTSLMBACKUP environment variable prior to running the
+echo NTSTAT command. The value of this variable should be a network
+echo directory path that will be where the NTSAVE script will save
+echo copies of all files you currently have checked out.
+echo ;
+:done
+endlocal
diff --git a/public/tools/ntslmck.cmd b/public/tools/ntslmck.cmd
new file mode 100644
index 000000000..e9b36b368
--- /dev/null
+++ b/public/tools/ntslmck.cmd
@@ -0,0 +1,26 @@
+@if "%_echo%"=="" echo off
+setlocal
+if "%_NTSLMCKLOG%" == "" set _NTSLMCKLOG=\nt\ntslmck.log
+if "%1" == "all" goto slmckall
+if NOT "%1" == "" goto doprojects
+if "%NTPROJECTS%" == "" goto noprojs
+call %0 %NTPROJECTS%
+goto done
+:slmckall
+call %0 %NTPROJECTS% %NTPROJECTS_EXTRA%
+goto done
+:noprojs
+echo Must define NTPROJECTS environment variable to use this command without arguments
+goto done
+:doprojects
+set _ntgetargs_=
+:loop
+if "%1" == "" goto loopexit
+set _ntgetargs_=%_ntgetargs_% %1
+shift
+goto loop
+:loopexit
+if NOT "%_NTSLMCKLOG%" == "" erase %_NTSLMCKLOG% 2>nul
+call ntslmop slmck %_ntgetargs_%
+:done
+endlocal
diff --git a/public/tools/ntslmmov.cmd b/public/tools/ntslmmov.cmd
new file mode 100644
index 000000000..2f9239408
--- /dev/null
+++ b/public/tools/ntslmmov.cmd
@@ -0,0 +1,30 @@
+@if "%_echo%"=="" echo off
+setlocal
+if "%_NTDRIVE%" == "" set _NTDRIVE=C:
+cd /d %_NTDRIVE%\
+:doenlist
+if "%1" == "" goto done
+call projects.cmd %1
+shift
+if "%proj_path%"=="" goto badproject
+if EXIST %proj_path%\nul goto gotdir
+mkdir %proj_path%
+if ERRORLEVEL 1 goto badpath
+:gotdir
+cd /d %proj_path% 2>nul
+if ERRORLEVEL 1 goto badpath
+if NOT EXIST %proj_path%\slm.ini goto noslmini
+echo Deleting top level SLM.INI and running SLMCK for %project% project in %proj_path%
+chmode -rhs slm.ini
+del slm.ini
+:noslmini
+slmck -vfia -s %slm_root% -p %project%
+goto doenlist
+:badproject
+echo Invalid project name - %1
+goto doenlist
+:badpath
+echo Unable to create or change to %proj_path% for %project% project
+goto doenlist
+:done
+endlocal
diff --git a/public/tools/ntslmop.cmd b/public/tools/ntslmop.cmd
new file mode 100644
index 000000000..a0411b70c
--- /dev/null
+++ b/public/tools/ntslmop.cmd
@@ -0,0 +1,105 @@
+:loop
+set _ntlogname_=
+set _ntslmop_=%1
+if "%_NTSLMOP_SLM_%" == "" set _NTSLMOP_SLM_=slm.exe
+if "%1" == "" goto done
+if "%1" == "status" goto dostatus
+if "%1" == "ssync" goto dossync
+if "%1" == "slmck" goto doslmck
+if "%1" == "log" goto dolog
+if "%1" == "defect" goto dodefect
+echo NTSLMOP: Invalid command option - %1
+goto done
+:dostatus
+set _ntlogname_=%_NTSTATLOG%
+set _ntlogfd_=1
+set _ntslmcmd_=%_NTSLMOP_SLM_% status -ao%_STATOPTIONS%
+if NOT "%_NTSTATCMD%" == "" set _ntslmcmd_=%_ntslmcmd_% -z %_NTSTATCMD%
+if NOT "%_NTSTATCMD1%" == "" set _ntslmcmd_=%_ntslmcmd_% -y %_NTSTATCMD1%
+set _ntslmtitle_=Status of
+goto docommand
+:dossync
+set _ntlogname_=%_NTSYNCLOG%
+set _ntlogfd_=1
+set _ntslmcmd_=%_NTSLMOP_SLM_% ssync -a%_SYNCOPTIONS%
+if NOT "%_NTSTATCMD%" == "" set _ntslmcmd_=%_ntslmcmd_% -l %_NTSTATCMD%
+if NOT "%_NTMULTISYNC%" == "" set _ntslmcmd_=start %_ntslmcmd_%
+set _ntslmtitle_=Syncing
+goto docommand
+:doslmck
+set _ntlogname_=%_NTSLMCKLOG%
+set _ntlogfd_=2
+set _ntslmcmd_=slmck
+set _ntslmtitle_=Slmck of
+goto docommand
+:dolog
+if NOT "%_LOGOPTIONS%" == "" goto dolog1
+echo Set your _LOGOPTIONS environment variable first, to specify
+echo restrictions by time and/or user name. For example:
+echo set _LOGOPTIONS=-t9-1-94@1:00
+echo would display all log entries after 1am 9/1/94
+goto done
+:dolog1
+set _ntlogname_=%_NTLOGLOG%
+set _ntlogfd_=1
+set _ntslmcmd_=%_NTSLMOP_SLM_% log -a -zi %_LOGOPTIONS%
+set _ntslmtitle_=Log (%_LOGOPTIONS%) of
+goto docommand
+:dodefect
+set _ntslmcmd_=%_NTSLMOP_SLM_% defect %_DEFECTOPTIONS%
+set _ntslmtitle_=Defecting from
+goto docommand
+:docommand
+shift
+if "%1" == "" goto done
+call projects.cmd %1
+if "%proj_path%"=="" goto badproject
+if NOT "%_ntslmop_%" == "slmck" goto notslmck
+if EXIST %proj_path%\nul goto gotdir
+echo Creating %proj_path%
+mkdir %proj_path%
+:gotdir
+cd /d %proj_path% 2>nul
+if ERRORLEVEL 1 goto badpath
+if NOT EXIST %proj_path%\slm.ini goto slminimissing
+echo Deleting %proj_path%\slm.ini to force rebuild
+chmode -hrs %proj_path%\slm.ini
+erase %proj_path%\slm.ini >nul 2>nul
+:slminimissing
+cd /d %proj_path% 2>nul
+if ERRORLEVEL 1 goto badpath
+set _ntslmcmd_=slmck -auif %_slmckoptions% -s %slm_root% -p %project%
+goto executecommand
+:notslmck
+cd /d %proj_path% 2>nul
+if ERRORLEVEL 1 goto badpath
+:executecommand
+echo %_ntslmtitle_% %project% project in %proj_path%
+if "%_ntlogname_%"=="" goto noredirection
+%_ntslmcmd_% %_ntlogfd_%>>%_ntlogname_%
+if "%_ntslmevent%"=="" goto docommand
+%_ntslmevent% %project%
+goto docommand
+:noredirection
+%_ntslmcmd_%
+goto docommand
+:badproject
+if NOT "%_ntslmop_%" == "log" goto badproj1
+call deadproj.cmd %1
+if "%proj_path%"=="" goto badproj1
+cd /d %proj_path%
+set _ntslmcmd_=%_ntslmcmd_% -s %slm_root% -p %project%
+set _ntslmtitle_=Log (%_LOGOPTIONS%) of dead project
+goto executecommand
+:badproj1
+echo Invalid project name - %1
+goto docommand
+:badpath
+if NOT "%_ntslmop_%" == "log" goto badpath1
+cd /d %_ntroot%
+set _ntslmcmd_=%_ntslmcmd_% -s %slm_root% -p %project%
+goto executecommand
+:badpath1
+echo You are not enlisted in %project% project in %slm_path%
+goto docommand
+:done
diff --git a/public/tools/ntstat.cmd b/public/tools/ntstat.cmd
new file mode 100644
index 000000000..fbe844712
--- /dev/null
+++ b/public/tools/ntstat.cmd
@@ -0,0 +1,38 @@
+@if "%_echo%"=="" echo off
+setlocal
+if "%_NTSTATLOG%" == "" set _NTSTATLOG=\nt\ntstat.log
+if "%_NTSLMBACKUP%" == "" goto nobackup
+if "%_NTSTATCMD%" == "" set _NTSTATCMD=\nt\ntstatsr.cmd
+goto dostatus1
+:nobackup
+set _NTSTATCMD=nul
+set _NTSTATCMD1=
+:dostatus1
+if "%1" == "all" goto statall
+if NOT "%1" == "" goto doprojects
+if "%NTPROJECTS%" == "" goto noprojs
+if NOT "%_NTSTATCMD%" == "" erase %_NTSTATCMD% 2>nul
+if NOT "%_NTSTATCMD1%" == "" erase %_NTSTATCMD1% 2>nul
+erase %_NTSTATLOG% 2>nul
+call %0 %NTPROJECTS%
+goto done
+:statall
+if NOT "%_NTSTATCMD%" == "" erase %_NTSTATCMD% 2>nul
+if NOT "%_NTSTATCMD1%" == "" erase %_NTSTATCMD1% 2>nul
+erase %_NTSTATLOG% 2>nul
+call %0 %NTPROJECTS% %NTPROJECTS_EXTRA%
+goto done
+:noprojs
+echo Must define NTPROJECTS environment variable to use this command without arguments
+goto done
+:doprojects
+set _ntgetargs_=
+:loop
+if "%1" == "" goto loopexit
+set _ntgetargs_=%_ntgetargs_% %1
+shift
+goto loop
+:loopexit
+call ntslmop status %_ntgetargs_%
+:done
+endlocal
diff --git a/public/tools/ntstatxx.cmd b/public/tools/ntstatxx.cmd
new file mode 100644
index 000000000..5d6935807
--- /dev/null
+++ b/public/tools/ntstatxx.cmd
@@ -0,0 +1,39 @@
+if "%_NTSTATXX%" == "CoMp" goto docomp
+if "%_NTSTATXX%" == "SaVe" goto dosave
+if "%_NTSTATXX%" == "ReSt" goto dorestore
+echo This command script is not for general use unless you know
+echo what you are doing, in which case you would not being reading
+echo this message right now.
+goto done
+rem ntstatxx sdktools D:\NT\PRIVATE\SDKTOOLS dirs 000
+:dosave
+if NOT EXIST %_NTSLMBACKUP%\%1\*. mkdir %_NTSLMBACKUP%\%1
+if NOT "%5" == "" goto dolocalsave
+echo Saving %2\%3 to %_NTSLMBACKUP%\%1\%4
+copy %2\%3 %_NTSLMBACKUP%\%1\%4 >nul
+goto done
+:dolocalsave
+if NOT "%_NTSTATXXLOCAL%" == "yes" goto done
+echo Saving %2\%3 to %_NTSLMBACKUP%\%1\%4
+if "%5" == "localfile" copy %2\%3 %_NTSLMBACKUP%\%1\%4 >nul
+if "%5" == "localdir" xcopy /csehrkid %2\%3 %_NTSLMBACKUP%\%1\%4 >nul
+goto done
+:dorestore
+if NOT "%5" == "" goto dolocalrestore
+echo Restoring %2\%3 from %_NTSLMBACKUP%\%1\%4
+copy %_NTSLMBACKUP%\%1\%4 %2\%3
+goto done
+:dolocalrestore
+goto done
+:docomp
+if NOT "%5" == "" goto dolocalcomp
+if NOT EXIST %_NTDIFFDIR%\%1\*. mkdir %_NTDIFFDIR%\%1
+echo SComping %2\%3 to %_NTDIFFDIR%\%1\%4
+echo %_NTDIFFDIR%\%1\%4 contains scomp for %2\%3 >>%_NTDIFFDIR%\diff.log
+pushd %2
+scomp %3 >%_NTDIFFDIR%\%1\%4 2>&1
+popd
+goto done
+:dolocalcomp
+goto done
+:done
diff --git a/public/tools/ntsync.cmd b/public/tools/ntsync.cmd
new file mode 100644
index 000000000..60b9858bc
--- /dev/null
+++ b/public/tools/ntsync.cmd
@@ -0,0 +1,47 @@
+@if "%_echo%"=="" echo off
+setlocal
+if "%_NTSLMBACKUP%" == "" goto nobackup
+if "%_NTSTATCMD%" == "" set _NTSTATCMD=\nt\ntstatsr.cmd
+goto dossync1
+:nobackup
+set _NTSTATCMD=nul
+:dossync1
+if "%_NTSYNCLOG%" == "" set _NTSYNCLOG=\nt\ntsync.log
+if "%1" == "nocheckpublic" goto goit0
+if NOT EXIST %_NTDRIVE%\nt\public\tools\ntsync.cmd goto goit1
+cd /d %_NTDRIVE%\nt\public\tools
+REM
+REM Explicitly ssync all the command scripts this script uses and do a goto
+REM on the same line so that we dont end up getting hosed by self-modifying
+REM command scripts
+REM
+slm ssync -f ntsync.cmd ntslmop.cmd projects.cmd deadproj.cmd & goto goit1
+:goit0
+shift
+:goit1
+if "%1" == "all" goto syncall
+if NOT "%1" == "" goto doprojects
+if "%NTPROJECTS%" == "" goto noprojs
+if NOT "%_NTSTATCMD%" == "" erase %_NTSTATCMD% 2>nul
+erase %_NTSYNCLOG% 2>nul
+call %0 nocheckpublic %NTPROJECTS%
+goto done
+:syncall
+if NOT "%_NTSTATCMD%" == "" erase %_NTSTATCMD% 2>nul
+erase %_NTSYNCLOG% 2>nul
+call %0 nocheckpublic %NTPROJECTS% %NTPROJECTS_EXTRA%
+goto done
+:noprojs
+echo Must define NTPROJECTS environment variable to use this command without arguments
+goto done
+:doprojects
+set _ntgetargs_=
+:loop
+if "%1" == "" goto loopexit
+set _ntgetargs_=%_ntgetargs_% %1
+shift
+goto loop
+:loopexit
+call ntslmop ssync %_ntgetargs_%
+:done
+endlocal
diff --git a/public/tools/ntunlock.cmd b/public/tools/ntunlock.cmd
new file mode 100644
index 000000000..184545f34
--- /dev/null
+++ b/public/tools/ntunlock.cmd
@@ -0,0 +1,6 @@
+@if "%_echo%"=="" echo off
+setlocal
+%_NTDRIVE%
+cd \nt\public
+cookie -f
+endlocal
diff --git a/public/tools/ntuser.cmd b/public/tools/ntuser.cmd
new file mode 100644
index 000000000..87d2dd68e
--- /dev/null
+++ b/public/tools/ntuser.cmd
@@ -0,0 +1,60 @@
+@rem
+@rem If no drive has been specified for the NT development tree, assume
+@rem W:. To override this, place a SET _NTDRIVE=X: in your CONFIG.SYS
+@rem
+if "%_NTDRIVE%" == "" set _NTDRIVE=W:
+if NOT "%USERNAME%" == "" goto skip1
+echo !!! Error - USERNAME environment varialbe not set in CONFIG.SYS
+goto done
+:skip1
+@rem
+@rem This command file is either invoked by NTENV.CMD during the startup of
+@rem a Razzle screen group. Or it is invoked directly by a developer to
+@rem switch developer environment variables on the fly. If invoked with
+@rem no argument, then restores the original developer's environment (as
+@rem remembered by the NTENV.CMD command file). Otherwise the argument is
+@rem a developer's email name and that developer's environment is established.
+@rem
+if NOT "%1" == "" set USERNAME=%1
+if "%_NTUSER%" == "" goto skip2
+if "%1" == "" if "%USERNAME%" == "%_NTUSER%" alias src /d
+if "%1" == "" set USERNAME=%_NTUSER%
+:skip2
+@rem
+@rem Most tools look for .INI files in the INIT environment variable, so set
+@rem it. MS WORD looks in MSWNET of all places.
+@rem
+set INIT=%_NTBINDIR%\private\developr\%USERNAME%
+set MSWNET=%INIT%
+@rem
+@rem Load CUE with the standard public aliases and the developer's private ones
+@rem
+if "%_NTUSER%" == "" goto skip3
+@rem
+@rem Initialize user settable NT nmake environment variables
+@rem
+set NTPROJECTS=public
+set NT386FLAGS=
+set NTMIPSFLAGS=
+set NTCPPFLAGS=
+set NTDEBUG=cvp
+set BUILD_OPTIONS=
+set 386_OPTIMIZATION=
+set 386_WARNING_LEVEL=
+alias src > nul
+if NOT errorlevel 1 goto skip4
+alias -p remote.exe -f %_NTBINDIR%\private\developr\cue.pub -f %_NTBINDIR%\private\developr\ntcue.pub -f %INIT%\cue.pri
+alias -f %_NTBINDIR%\private\developr\cue.pub -f %_NTBINDIR%\private\developr\ntcue.pub -f %INIT%\cue.pri
+goto skip4
+:skip3
+alias src > nul
+if errorlevel 1 goto skip4
+alias -f %_NTBINDIR%\private\developr\cue.pub -f %INIT%\cue.pri
+:skip4
+@rem
+@rem Load the developer's private environment initialization (keyboard rate,
+@rem screen size, colors, environment variables, etc).
+@rem
+call %INIT%\setenv.cmd
+echo Current user is now %USERNAME%
+:done
diff --git a/public/tools/ntvdm.reb b/public/tools/ntvdm.reb
new file mode 100644
index 000000000..2eec18a24
--- /dev/null
+++ b/public/tools/ntvdm.reb
@@ -0,0 +1,5 @@
+wow32.dll
+vcdex.dll
+vdmredir.dll
+ntvdm.exe
+ \ No newline at end of file
diff --git a/public/tools/printer.reb b/public/tools/printer.reb
new file mode 100644
index 000000000..0afbf5d00
--- /dev/null
+++ b/public/tools/printer.reb
@@ -0,0 +1,6 @@
+hppcl.dll
+rasdd.dll
+rasddui.dll
+pscript.dll
+pscrptui.dll
+ \ No newline at end of file
diff --git a/public/tools/projlist.cmd b/public/tools/projlist.cmd
new file mode 100644
index 000000000..4a6e20226
--- /dev/null
+++ b/public/tools/projlist.cmd
@@ -0,0 +1,5 @@
+@if "%_echo%"=="" echo off
+cd %_NtDrive%%_NtRoot%\Public\Tools
+out -f Projects
+qgrep -v -e : -e "goto" -e "echo" Projects.cmd | sed "s/ set project=/project = /" | sed "s/ set slm_root=/slm root = /" | sed "s/set proj_path=/ /" | sed "s/&//" | sed "s/&//" | qgrep -v -e "set " > Projects
+in -fc "Latest List of Projects" Projects
diff --git a/public/tools/razzle.cmd b/public/tools/razzle.cmd
new file mode 100644
index 000000000..46b892b14
--- /dev/null
+++ b/public/tools/razzle.cmd
@@ -0,0 +1,37 @@
+
+:START
+goto SET_BINARIES_DIR
+
+ if "%PROCESSOR_ARCHITECTURE%" == "ALPHA" set USERNAME=alphafre
+ if "%PROCESSOR_ARCHITECTURE%" == "MIPS" set USERNAME=mipsfre
+ if "%PROCESSOR_ARCHITECTURE%" == "PPC" set USERNAME=ppcfre
+ if "%PROCESSOR_ARCHITECTURE%" == "x86" set USERNAME=x86fre
+
+ if "%PROCESSOR_ARCHITECTURE%" == "ALPHA" set LOGNAME=HALPHAFIX
+ if "%PROCESSOR_ARCHITECTURE%" == "MIPS" set LOGNAME=HMIPSFIX
+ if "%PROCESSOR_ARCHITECTURE%" == "PPC" set LOGNAME=HPPCFIX
+ if "%PROCESSOR_ARCHITECTURE%" == "x86" set LOGNAME=HX86FIX
+
+ set PATH=%PATH%;W:\mstools.nt40;W:\idw.nt40
+
+ set _NTDRIVE=
+ if "%1" == "main" set _NTDRIVE=W:
+ if "%1" == "hotfix_free" set _NTDRIVE=U:
+ if "%1" == "hotfix_checked" set _NTDRIVE=V:
+ if not "%_NTDRIVE%" == "" goto SET_BINARIES_DIR
+ echo !!! missing parameter 'main', 'hotfix_free' or 'hotfix_checked'
+ pause
+ goto END
+
+:SET_BINARIES_DIR
+
+ rem shift
+
+ if "%PROCESSOR_ARCHITECTURE%" == "ALPHA" set _ntALPHAboot=%_ntdrive%\binaries
+ if "%PROCESSOR_ARCHITECTURE%" == "MIPS" set _ntMIPSboot=%_ntdrive%\binaries
+ if "%PROCESSOR_ARCHITECTURE%" == "PPC" set _ntPPCboot=%_ntdrive%\binaries
+ if "%PROCESSOR_ARCHITECTURE%" == "x86" set _nt386boot=%_ntdrive%\binaries
+
+ cmd /K %_NTDRIVE%\NT\PUBLIC\TOOLS\ntenv.cmd %1 %2 %3 %4 %5 %6 %7 %8 %9
+
+:END
diff --git a/public/tools/razzle.ico b/public/tools/razzle.ico
new file mode 100644
index 000000000..f66b1234a
--- /dev/null
+++ b/public/tools/razzle.ico
Binary files differ
diff --git a/public/tools/razzle0.cmd b/public/tools/razzle0.cmd
new file mode 100644
index 000000000..b65ceb8e5
--- /dev/null
+++ b/public/tools/razzle0.cmd
@@ -0,0 +1,3 @@
+@if "%_echo%"=="" echo off
+prompt=0_%prompt%
+%_NTDRIVE%\NT\public\TOOLS\razzle.cmd
diff --git a/public/tools/razzle0.ico b/public/tools/razzle0.ico
new file mode 100644
index 000000000..f66b1234a
--- /dev/null
+++ b/public/tools/razzle0.ico
Binary files differ
diff --git a/public/tools/razzle1.cmd b/public/tools/razzle1.cmd
new file mode 100644
index 000000000..c7b92d0b8
--- /dev/null
+++ b/public/tools/razzle1.cmd
@@ -0,0 +1,3 @@
+@if "%_echo%"=="" echo off
+prompt=1_%prompt%
+%_NTDRIVE%\NT\public\TOOLS\razzle.cmd
diff --git a/public/tools/razzle1.ico b/public/tools/razzle1.ico
new file mode 100644
index 000000000..f66b1234a
--- /dev/null
+++ b/public/tools/razzle1.ico
Binary files differ
diff --git a/public/tools/razzle2.cmd b/public/tools/razzle2.cmd
new file mode 100644
index 000000000..f3626fd7f
--- /dev/null
+++ b/public/tools/razzle2.cmd
@@ -0,0 +1,3 @@
+@if "%_echo%"=="" echo off
+prompt=2_%prompt%
+%_NTDRIVE%\NT\public\TOOLS\razzle.cmd
diff --git a/public/tools/razzle2.ico b/public/tools/razzle2.ico
new file mode 100644
index 000000000..f66b1234a
--- /dev/null
+++ b/public/tools/razzle2.ico
Binary files differ
diff --git a/public/tools/razzleb.cmd b/public/tools/razzleb.cmd
new file mode 100644
index 000000000..2c7bc9d00
--- /dev/null
+++ b/public/tools/razzleb.cmd
@@ -0,0 +1,10 @@
+@echo off
+@rem
+@rem Whoever is putting the PROMPT commands in this file, should put them
+@rem in their CONFIG.SYS file instead.
+@rem
+set _ntdrive=e:
+set tmp=e:\tmp
+md e:\tmp 2>nul
+path=%_ntdrive%\tools\idw;%_ntdrive%\tools\mstools;%_ntdrive%\tools\system32;%_ntdrive%\bldtools;%path%
+cmd /K %_NTDRIVE%\NT\PUBLIC\TOOLS\ntenv.cmd %1 %2 %3 %4 %5 %6 %7 %8 %9
diff --git a/public/tools/slmtouch.cmd b/public/tools/slmtouch.cmd
new file mode 100644
index 000000000..b006a202e
--- /dev/null
+++ b/public/tools/slmtouch.cmd
@@ -0,0 +1,3 @@
+@if "%_echo%"=="" echo off
+out %1 %2 %3 %4 %5 %6 %7 %8 %9
+in -fc "SLMTOUCHed to force recompile" %1 %2 %3 %4 %5 %6 %7 %8 %9
diff --git a/public/tools/spltenls.cmd b/public/tools/spltenls.cmd
new file mode 100644
index 000000000..232a42d5e
--- /dev/null
+++ b/public/tools/spltenls.cmd
@@ -0,0 +1,46 @@
+@rem SpltEnls will split %NTPROJECTS% by server and start four MyEnlist in parallel
+@rem
+
+@if "%_echo%"=="" echo off
+if not "%Verbose%"=="" echo on
+
+for %%a in (./ .- .) do if ".%1." == "%%a?." goto Usage
+for %%a in (1 2 3 4) do if "%1" == "%%a" goto SubSet
+
+set SAVEPROJECTS=%NTPROJECTS%
+
+call spltproj %NTPROJECTS%
+
+set NTPROJECTS=%list1%
+start call %0 1
+set NTPROJECTS=%list2%
+start call %0 2
+set NTPROJECTS=%list3%
+start call %0 3
+set NTPROJECTS=%list4%
+start call %0 4
+
+set NTPROJECTS=%SAVEPROJECTS%
+set SAVEPROJECTS=
+set list1=
+set list2=
+set list3=
+set list4=
+
+goto end
+
+REM This part is called by the main procedure. It calls MyEnlist for each subset of NTPROJECTS
+
+:SubSet
+ call MyEnlist
+ @if "_echo"=="" echo off
+
+goto end
+
+:usage
+
+echo %0 will split NTPROJECTS by server and start four MyEnlists in parallel
+echo.
+echo usage: %0
+
+:end
diff --git a/public/tools/spltstat.cmd b/public/tools/spltstat.cmd
new file mode 100644
index 000000000..49b1c3eaa
--- /dev/null
+++ b/public/tools/spltstat.cmd
@@ -0,0 +1,82 @@
+@rem Spltstat will split %NTPROJECTS% by server and start four ntstats in parallel
+@rem
+
+@if "%_echo%"=="" echo off
+if not "%Verbose%"=="" echo on
+if not "%Verbose2%"=="" echo on
+
+set ScriptName=%0
+%_NtDrive%
+
+for %%a in (./ .- .) do if ".%1." == "%%a?." goto Usage
+for %%a in (1 2 3 4) do if "%1" == "%%a" goto SubSet
+
+:ArgLoop
+echo %1 | findstr -i Exit
+if NOT ErrorLevel 1 set Exit=1
+echo %1 | findstr -i SsyncNow
+if NOT ErrorLevel 1 set SsyncNow=1
+shift
+if not "%1"=="" goto ArgLoop
+
+set SAVEPROJECTS=%NTPROJECTS%
+
+del %tmp%\done* 2>nul
+
+call spltproj %NTPROJECTS%
+
+set NTPROJECTS=%list1%
+start call %ScriptName% 1
+set NTPROJECTS=%list2%
+start call %ScriptName% 2
+set NTPROJECTS=%list3%
+start call %ScriptName% 3
+set NTPROJECTS=%list4%
+start call %ScriptName% 4
+
+:TopOfLoop
+sleep 5
+if not exist %tmp%\done1 goto TopOfLoop
+if not exist %tmp%\done2 goto TopOfLoop
+if not exist %tmp%\done3 goto TopOfLoop
+if not exist %tmp%\done4 goto TopOfLoop
+
+copy %_ntdrive%%_ntroot%\ntstat1.log + %_ntdrive%%_ntroot%\ntstat2.log + %_ntdrive%%_ntroot%\ntstat3.log + %_ntdrive%%_ntroot%\ntstat4.log %_ntdrive%%_ntroot%\ntstat.log > nul
+for %%i in (1 2 3 4) do del %_ntdrive%%_ntroot%\ntstat%%i.log
+if "%SsyncNow%"=="1" for %%i in (1 2 3 4) do del %_ntdrive%%_ntroot%\ntstat%%i.cmd
+del %tmp%\done?
+set NTPROJECTS=%SAVEPROJECTS%
+set _NTSTATLOG=
+set _NTSTATCMD=
+set SAVEPROJECTS=
+set list1=
+set list2=
+set list3=
+set list4=
+set Exit=
+set SsyncNow=
+
+goto end
+
+REM This part is called by the main procedure. It calls NTSTAT and puts a done file in %tmp% when NTSTAT finishes.
+
+:SubSet
+ set _NTSTATLOG=%_ntdrive%%_ntroot%\ntstat%1.log
+ set _NTSTATCMD=%_ntdrive%%_ntroot%\ntstat%1.cmd
+ call ntstat
+ if "%SsyncNow%"=="1" copy %_NTSTATLOG% %_NTSTATCMD% && start cmd/c %_NTSTATCMD%
+ echo done> %tmp%\done%1
+ @if "_echo"=="" echo off
+ if "%Exit%" == "" pause
+ exit
+
+:usage
+
+echo %ScriptName% will split NTPROJECTS by server and start four ntstats in parallel
+echo.
+echo usage: %0 [SsyncNow]
+echo.
+echo SsyncNow Runs the 4 intermediate ssync scripts in parallel
+echo as soon as each is ready
+
+:end
diff --git a/public/tools/statkill.txt b/public/tools/statkill.txt
new file mode 100644
index 000000000..44469d75b
--- /dev/null
+++ b/public/tools/statkill.txt
@@ -0,0 +1,10 @@
+#
+# Directories listed in this file will be removed from the spltstat
+# results sent to the dev leads.
+#
+D:\NT\PRIVATE\NET\UI\mpr\test2
+D:\NT\PRIVATE\OLEUTEST\balls
+D:\NT\PRIVATE\SYSMGMT\sched\test\jt
+D:\NT\PRIVATE\WINDOWS\OPENGL\test
+D:\NT\PRIVATE\WINDOWS\pnp\test
+D:\NT\PRIVATE\WINDOWS\WINNLS\test\nlstest
diff --git a/public/tools/version.cmd b/public/tools/version.cmd
new file mode 100644
index 000000000..684ff6caa
--- /dev/null
+++ b/public/tools/version.cmd
@@ -0,0 +1,39 @@
+if "%1" == "" set _disk=c
+if not "%1" == "" set _disk=%1
+if "%2" == "" set _root=\nt
+if not "%2" == "" set _root=%2
+%_disk%:
+cd %_root%
+for %%i in (*.*) do filever %%i
+cd %_root%\mstools
+for %%i in (*.*) do filever %%i
+cd %_root%\system
+for %%i in (*.*) do filever %%i
+cd %_root%\system\config
+for %%i in (*.*) do filever %%i
+cd %_root%\system\drivers
+for %%i in (*.*) do filever %%i
+cd %_root%\system\drivers\etc
+for %%i in (*.*) do filever %%i
+cd %_root%\system\os2
+for %%i in (*.*) do filever %%i
+cd %_root%\system\os2\dll
+for %%i in (*.*) do filever %%i
+cd %_root%\system\spool
+for %%i in (*.*) do filever %%i
+cd %_root%\system\spool\drivers
+for %%i in (*.*) do filever %%i
+cd %_root%\system\spool\drivers\w32x86
+for %%i in (*.*) do filever %%i
+cd %_root%\system\spool\printers
+for %%i in (*.*) do filever %%i
+cd %_root%\system\spool\printers\0
+for %%i in (*.*) do filever %%i
+cd %_root%\system\spool\prtprocs
+for %%i in (*.*) do filever %%i
+cd %_root%\system\spool\prtprocs\w32x86
+for %%i in (*.*) do filever %%i
+cd %_root%\system\spool\prtprocs\w32x86\winprint
+for %%i in (*.*) do filever %%i
+set _root=
+set _disk=
diff --git a/public/tools/video.reb b/public/tools/video.reb
new file mode 100644
index 000000000..d44f76c45
--- /dev/null
+++ b/public/tools/video.reb
@@ -0,0 +1,11 @@
+ati.dll
+s3.dll
+vga64k.dll
+vga256.dll
+xga.dll
+weitekp9.dll
+8514a.dll
+framebuf.dll
+qv.dll
+jzvxl484.dll
+ \ No newline at end of file
diff --git a/public/tools/wx86.reb b/public/tools/wx86.reb
new file mode 100644
index 000000000..131b713e2
--- /dev/null
+++ b/public/tools/wx86.reb
@@ -0,0 +1,2 @@
+wx86.dll
+wx86cpu.dll
diff --git a/public/tools/wx86thnk.reb b/public/tools/wx86thnk.reb
new file mode 100644
index 000000000..320800026
--- /dev/null
+++ b/public/tools/wx86thnk.reb
@@ -0,0 +1,39 @@
+wigdi32.dll
+whgdi32.dll
+wiuser32.dll
+whuser32.dll
+wikrnl32.dll
+whkrnl32.dll
+wishll32.dll
+whshll32.dll
+wicrtdll.dll
+wivcrt.dll
+wivcrt40.dll
+wintdll.dll
+whntdll.dll
+wiadv32.dll
+whadv32.dll
+wimpr.dll
+whmpr.dll
+wiversn.dll
+whversn.dll
+wilz32.dll
+whlz32.dll
+wiwspool.dll
+whwspool.dll
+wiwinmm.dll
+whwinmm.dll
+wisock32.dll
+whsock32.dll
+wiole32.dll
+whole32.dll
+wiopengl.dll
+whopengl.dll
+wicdlg32.dll
+whcdlg32.dll
+wicctl32.dll
+whcctl32.dll
+wioleaut.dll
+wioledlg.dll
+wholedlg.dll
+system32\wx86e.dll