Цитата:
Лучше именно установочный, - он пропишет переменные окружения.
Да, .msi уменьшает ручную работу
Наиболее полезные файлы находятся здесь:
https://modula3.elegosoft.com/cm3/uploaded-archives/cm3-min-x86-d5.9.0-VC110-20130908.msi
cm3-all-x86-d5.9.0-VC110-20130908.zip
cm3-min-AMD64_NT-d5.9.0-VC110-20131012.msi
cm3-all-AMD64_NT-d5.9.0-VC110-20131012.zip
Точно обновляются до Jan 3 2016:
[url]
https://github.com/modula3/cm3/tree/5a8 ... 1841a45f23[/url]
Но x64 требует доработок, как минимум:
Код:
--- RTOS.m3 000 Sun Jan 03 11:17:00 2016
+++ RTOS.m3 Fri Jan 04 13:15:50 2019
@@ -19,18 +19,20 @@
PROCEDURE Crash () =
CONST Magic = 1 * ADRSIZE (INTEGER); (* == offset of "fp" in this frame *)
VAR fp: ADDRESS := ADR (fp) + Magic; (* == my frame pointer *)
BEGIN
IF WinBase.IsDebuggerPresent () # 0 THEN
WinBase.DebugBreak ();
END;
- RTThread.SuspendOthers ();
- RTMachInfo.DumpStack (LOOPHOLE (Crash, ADDRESS), fp);
+ (* RTThread.SuspendOthers ();
+ RTMachInfo.DumpStack (LOOPHOLE (Crash, ADDRESS), fp); *)
+ (** RTThread.ResumeOthers ();
RTSignal.RestoreHandlers (); (* so we really do crash... *)
- Exit (-1);
+ ***)
+ Exit (4000);
END Crash;
Цитата:
Запусти командную строку ВмзуалСтудии, перейди в каталог с исходниками cm3, папка scripts
Основы рабочего метода
https://mail.elegosoft.com/pipermail/m3devel/2012-September/010131.htmlКод:
--- cm3CommandShell.CMD-000 Sun Jan 03 11:17:00 2016
+++ cm3CommandShell.CMD Wed Jan 02 15:24:30 2019
@@ -96,2 +96,3 @@
echo %_cm3_ThisOS_Long% | (find /I "Windows 7" >NUL:) && ((set _cm3_ThisOS=Win7) & goto ver_7)
+echo %_cm3_ThisOS_Long% | (find /I "Windows 10" >NUL:) && ((set _cm3_ThisOS=Win7) & goto ver_7)
echo %_cm3_ThisOS_Long% | (find /I "Windows Server 2008" >NUL:) && ((set _cm3_ThisOS=2008) & goto ver_2008)
Код:
--- do-cm3.cmd 000 Sun Jan 03 11:17:00 2016
+++ do-cm3.cmd Sat Dec 29 11:46:06 2018
@@ -85,6 +85,7 @@
if NOT exist %SystemRoot%\system32\systeminfo.exe goto ver_NoSysInfo
FOR /F "usebackq tokens=3* delims=: " %%i IN (`systeminfo ^| find /I "OS Name"`) DO set _cm3_ThisOS_Long=%%i %%j
echo %_cm3_ThisOS_Long% | (find /I "Windows Vista" >NUL:) && ((set _cm3_ThisOS=Vista) & goto ver_Vista)
+echo %_cm3_ThisOS_Long% | (find /I "Windows 10" >NUL:) && ((set _cm3_ThisOS=Win7) & goto ver_7)
echo %_cm3_ThisOS_Long% | (find /I "Windows 7" >NUL:) && ((set _cm3_ThisOS=Win7) & goto ver_7)
echo %_cm3_ThisOS_Long% | (find /I "Windows Server 2008" >NUL:) && ((set _cm3_ThisOS=2008) & goto ver_2008)
Здесь метод переключения 32bit/64bit , C:/D: и между минимальной и полной сборкой:
Код:
--- RCC_upgradeCM3.cmd 000 Sun Jan 03 11:17:00 2016
+++ RCC_upgradeCM3.cmd Wed Jan 02 16:45:50 2019
@@ -48,7 +48,7 @@
set _cm3_Repeat=1
set _cm3_DO=
set _z_ctrlArgs=
-set _z_Stage3=min
+set _z_Stage3=all
@@ -113,7 +113,7 @@
if exist "bin\cm3.exe" if exist "pkg" set CM3_ROOT=%CD%& popd & goto FoundRoot
cd ..
if exist "bin\cm3.exe" if exist "pkg" set CM3_ROOT=%CD%& popd & goto FoundRoot
-if exist "C:\cm3\bin\cm3.exe" if exist "C:\cm3\pkg" set CM3_ROOT=C:\cm3& popd & goto FoundRoot
+if exist "D:\cm3\bin\cm3.exe" if exist "D:\cm3\pkg" set CM3_ROOT=D:\cm3& popd & goto FoundRoot
popd
rem otherwise, search the existing PATH environment variable to try and find the root of the cm3 installation
for %%F in (cm3.exe) do set CM3_ROOT=%%~dp$PATH:F..
@@ -138,7 +138,7 @@
if /I "%_cm3_CommandReady%"=="TRUE" goto FindPkgInfo
echo Setting up environment variables for CM3 ...
echo.
-call c:\cm3\bin\cm3CommandShell.CMD SameWindow
+call d:\cm3\bin\cm3CommandShell.CMD SameWindow
@echo off
if /I not "%_cm3_CommandReady%"=="TRUE" goto FatalSetupCM3
@@ -237,7 +237,7 @@
echo Creating "%CM3_ROOT%\bin\cm3.cfg" ...
if exist "%CM3_ROOT%\bin\cm3.cfg" del /f %CM3_ROOT%\bin\cm3.cfg
REM OLD: echo INSTALL_ROOT = path() ^& "/..">%CM3_ROOT%\bin\cm3.cfg
-REM OLD: echo include(path() ^& "/config/NT386")>>%CM3_ROOT%\bin\cm3.cfg
+REM OLD: echo include(path() ^& "/config/AMD64_NT")>>%CM3_ROOT%\bin\cm3.cfg
copy /y %_cm3_PkgTree%m3-sys\cminstall\src\config-no-install\cm3.cfg %CM3_ROOT%\bin\cm3.cfg
if errorlevel 1 echo ERROR: Problem copying files. & (set _cm3_ExitCode=5) & goto END
if not exist "%CM3_ROOT%\bin\cm3.cfg" echo ERROR: Problem copying files. & (set _cm3_ExitCode=5) & goto END
@@ -287,12 +287,12 @@
:FN_FinishStage
:--------------
if "%_cm3_CM3Failure%"=="TRUE" echo ...skipping installation of cm3.exe due to errors... & goto :EOF
-if not exist "%_cm3_PkgTree%m3-sys\cm3\NT386\cm3.exe" goto StageFailure
+if not exist "%_cm3_PkgTree%m3-sys\cm3\AMD64_NT\cm3.exe" goto StageFailure
echo ...installing new cm3.exe as "%CM3_ROOT%\bin\cm3.exe" ...
if exist "%CM3_ROOT%\bin\cm3.exe" del /f "%CM3_ROOT%\bin\cm3.exe"
if exist "%CM3_ROOT%\bin\cm3.pdb" del /f "%CM3_ROOT%\bin\cm3.pdb"
-copy "%_cm3_PkgTree%m3-sys\cm3\NT386\cm3.exe" "%CM3_ROOT%\bin\cm3.exe"
-if exist "%_cm3_PkgTree%m3-sys\cm3\NT386\cm3.pdb" copy "%_cm3_PkgTree%m3-sys\cm3\NT386\cm3.pdb" "%CM3_ROOT%\bin\cm3.pdb"
+copy "%_cm3_PkgTree%m3-sys\cm3\AMD64_NT\cm3.exe" "%CM3_ROOT%\bin\cm3.exe"
+if exist "%_cm3_PkgTree%m3-sys\cm3\AMD64_NT\cm3.pdb" copy "%_cm3_PkgTree%m3-sys\cm3\AMD64_NT\cm3.pdb" "%CM3_ROOT%\bin\cm3.pdb"
if not exist "%CM3_ROOT%\bin\cm3.exe" goto StageFailure
goto :EOF
Переход на "32-bits Unicode" довольно хитроумен -- постараюсь выложить комплект