标签: dos

DOS如何将程序加载到内存中?

MS-DOS将COM或EXE文件加载到内存中的步骤是什么?网上是否还有关于这是如何发生的参考?我能想到的最好的可能是指dosbox源码.

executable dos

14
推荐指数
1
解决办法
8206
查看次数

SQLCMD的返回值

我需要检查通过SQLCMD实用程序运行的查询的退出状态(成功/失败).例如,我连接的服务器没有数据库名称EastWind.然后,下面的命令失败并显示消息...

> "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE" 
     -S ZEPHIR -E -Q "USE WestWind"
Changed database context to 'WestWind'.
> echo %errorlevel%
0
> "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE" 
     -S ZEPHIR -E -Q "USE EastWind"
Database 'EastWind' does not exist. Make sure that the name is entered correctly
> echo %errorlevel%
0
Run Code Online (Sandbox Code Playgroud)

我看到两种情况下的返回值都是相同的.如何检查命令是否失败SQLCMD

sql-server dos sqlcmd

14
推荐指数
1
解决办法
2万
查看次数

在DOS脚本中打印当前日期和时间

我有一个脚本,打印日志和时间,后跟日志中的字符串.

echo %DATE%_%TIME% Processing %%f >> process.log
Run Code Online (Sandbox Code Playgroud)

问题是日期和时间始终是脚本启动的日期和时间.我一直在运行脚本,但仍然有相同的日期和时间.有没有办法更新它们,以便显示字符串打印到日志文件时的当前日期和时间?

time date dos

14
推荐指数
1
解决办法
8万
查看次数

如何在批处理文件中拆分不带for循环的字符串

我想将一个字符串分成两部分,而不使用任何for循环.

例如,我在变量中有字符串:

str=45:abc
Run Code Online (Sandbox Code Playgroud)

我想进入45变量和abc另一个变量.是否可以在批处理文件中?

模式就像某些数字:somestring

dos batch-file

14
推荐指数
1
解决办法
4万
查看次数

将Autodesk Animator Pro移植到跨平台

我以前的相关问题是逆向工程旧油漆程序

我在这里建立了我的运营基地:http://animatorpro.org wiki即将推出.

好的,现在我有300,000行传统的MSDOS代码库.这有点"小心你想要的"情况.我不是一位经验丰富的C程序员.我也不是完全缺乏经验,但出于所有意图和目的,我对语言是一个菜鸟,特别是它的图书馆的复杂性.我特别不了解专门为MSDOS编写的C程序与跨平台程序之间差异的变幻莫测.但是我已经研究了这个代码库超过一年了,这就是我对Animator Pro的了解:

使用的编译器和工具:

  • Watcom C编译器
  • tcmake(来自Turbo C的程序)
  • 386asm,Phar Lap dos扩展器的专用汇编程序
  • 当然还有Phar Lap dos扩展器本身.
  • 一系列晦涩的dos实用程序

大部分编译似乎都是由批处理文件驱动的.虽然我已经获得了所有这些工具的副本,但我还没有成功编译它.(虽然我编译了它的哥哥,autodesk animator original.

它有一个插件系统,可以在DLL可用之前复制DLL,基于REX.插件系统处理:

  • 视频驱动程序(包含大量VESA驱动程序)
  • 输入驱动程序(包括wacom数位板和键盘)
  • 绘图工具
  • 墨水(如photoshop的滤镜或混合模式)
  • 脚本插件(本质上是编译脚本)
  • 文件格式

它有自己的脚本解释器,名为POCO,基于C语言 - 脚本语言有足够的能力来完成插件系统可以做的几乎所有事情 - 只是更慢.

鉴于此信息,这是我的发展计划.请批评这个.源代码可在上面的链接中找到,因此如果您愿意,可以轻松地自己评估情况.

  1. 使用其原始工具进行编译.
  2. 切换到使用DJGPP,并进行必要的更改以使其与原始汇编程序一起编译.
  3. 包括Allegro.cc"游戏"库,并尽可能多地切换到该库的功能 - 也许只需编写使用Allegro API的新视频和输入驱动程序.我正在考虑快速而不是SDL,因为:有一个DOS版本的Allegro,而且令人着迷的是,其核心功能之一是能够播放Animator Pro的原生格式FLIC.
  4. 希望在3之后,我将淘汰项目中的大部分或全部汇编程序.我有希望地说,因为它是一种模糊的方言,没有任何现代的免费汇编程序,无需进行重大修改.我试过了所有这些.如果我可以定义汇编程序的实际函数,那么剩下的东西将转换为在NASM中汇编,或转换为C代码.
  5. 将dos扩展器从Phar Lap切换到HX Dos http://www.japheth.de/HX.html,它承诺尽可能多地复制WIN32 api.然后进行所有必要的代码更改以使其工作.
  6. 切换到Allegro.cc的win32版本,假设win32版本可以在HXDos之上运行.进行进一步必要的更改
  7. 修改插件系统以使用某种标准的跨平台插件库.这会是什么,我不知道.也许你可以提供一些建议?我与最初编写插件系统的开发人员进行了交谈,他说由于分段限制,它在现代操作系统上所做的一些事情是不可能的.我不确定这意味着什么,但我猜这意味着所有的插件都需要从头开始重写.
  8. 奇怪的是,我完成了以上所有工作,我们可以尝试在windows,osx和linux中运行它,同时处理其他跨平台的琐事,比如长文件名,以及我没有想到的东西.

任何人都有问题吗?allegro是个不错的选择吗?如果没有,为什么?你会对这个插件系统做些什么?你会做什么不同的?这整件事是愚蠢的吗?我应该从头开始重写它,使用原始的灵感吗?(显然需要原始开发人员"大约一个月"才能做到这一点)

我上面没有提到的一件事是文本/字体系统.不知道该怎么办,但Animator Pro有自己的自定义字体格式,但也可以使用Postscript Type 1字体和其他一些格式.

c dos paint allegro

13
推荐指数
3
解决办法
4040
查看次数

什么是DOS中字符表的内存地址?

DOS中字符表的地址是什么,我们可以通过操纵每个字符的像素来创建新的字体和符号?

我知道用BIOS中断来改变它,但是我只需要dos中字符表的内存地址来直接访问.

c memory assembly dos vga

13
推荐指数
2
解决办法
939
查看次数

批量复制仅修改过的文件

我有2个文件夹(比如Source和Working)......现在在这些文件夹中有100个其他文件/文件夹..

现在,文件夹Source定期更新(即某些文件/文件夹可能会更改或添加)我试图保持两个文件夹同步.

所以我需要一个批处理命令,只有"源"中新/修改的文件/文件夹才会更新到"工作"文件夹中.

请帮我.谢谢.

dos batch-file

13
推荐指数
2
解决办法
2万
查看次数

逆向工程旧油漆程序

我有几个非常老的基于MSDos的绘画程序.它们适用于调色板索引图像缓冲区.它们具有许多壮观的形状绘制工具,画笔和效果,在任何现代绘画程序中都不存在 - 特别是在保持在低调色板索引图像的"边界"内时.我想在现代程序中重现许多这些奇妙的工具,或许让我们再次更容易访问自己和普通大众,而无需启动像dosbox这样的模拟器.但我有一个问题.

虽然很多这些画笔和工具都有明显的功能,但其实现应该相当简单.但是使用其他工具,他们的操作原则并不那么明显.我将无法确定一个正确或忠实的算法来实现这些.

如果你是我,你会采取什么方法?是否有现成的反编译器/反汇编器可以处理这样的旧程序?或者你会采取一些不同的方法,例如有条不紊地测试不同输入的算法,以推断潜在的功能?不同技术的某种组合?对于这些程序的一行,这些(商业)程序的原作者是已知的,现在是狂热的开源倡导者.我应该尝试直接与他们联系并询问吗?我对逆向工程并不是特别有经验,所以我不知道从哪里开始.

编辑:似乎"问,你们应该接受"真的有效.

编辑2:查看http://animatorpro.org获取我获取源代码的程序的源代码.豪华油漆也不错,但丹席尔瓦似乎已经从地球上消失了.

decompiling reverse-engineering dos paint disassembly

12
推荐指数
2
解决办法
1170
查看次数

for循环中的多个do命令:将字符串回显到文件,然后重定向到命令窗口

我正在尝试编写一个批处理文件来迭代执行fortran编译的可执行文件.通常会进入Windows命令提示符,键入"Model.exe".这将打开一个dos命令窗口,要求用户在dos提示符下直接在命令窗口中键入所需的文件名.

我想写一个批处理文件,它会为我做这一点,并且还迭代这一步,这样我就可以连续运行10次模拟而不必手动完成.这种shell操作在linux中会很简单,但我没有这个.

我的伪代码看起来像这样:

for/L %% run in(1,1,10)do
(set str = Sim %% run
echo.%str%> input.txt
Model.exe <input.txt)

您可以将其分解为以下步骤:

  1. 为变量'run'赋值.(例如1)
  2. 用字符串("Sim")连接它以创建一个新变量"Sim1"
  3. 将此回显到文本文件("input.txt")
  4. 从文件"input.txt"中读取变量"Sim1"
  5. 可执行文件消失并做其事.
  6. 重复步骤1 - > 5,但使用新变量calle"Sim2"等.

如果我使用set str = Sim1然后直接将它回显到"input.txt",我可以得到上面的工作,但我不能让它作为循环工作.我错过了什么吗?

最好的祝福,

redirect for-loop dos batch-file

12
推荐指数
1
解决办法
4万
查看次数

什么是DOS等效于1>/dev/null?

我想抑制在DOS下运行的脚本的输出,类似于*nix环境下的以下内容:

 $ command 1>/dev/null
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

dos dev-null

12
推荐指数
1
解决办法
2万
查看次数