标签: turbo-pascal

终止挂起程序并返回Turbo Pascal 3

我在CP/M 2.2上运行Turbo Pascal 3.01A.假设我使用Turbo Pascal中的R菜单选项运行的Pascal程序有一个错误并进入无限循环.是否有一个特殊的控制字符会中断我的程序并返回到Turbo Pascal菜单?

cpm turbo-pascal

5
推荐指数
2
解决办法
1856
查看次数

turbo pascal 程序的调用图

我正在对一个 18 岁的 pascal 程序进行维护。为了帮助我理解一切是如何组合在一起的,我想绘制一个调用图。但是我找不到任何可以为 pascal 源绘制调用图的软件。我目前正在使用 Turbo Pascal 7 并且不知道其他 pascal 编译器的能力。

pascal call-graph turbo-pascal

5
推荐指数
1
解决办法
689
查看次数

Turbo Pascal"crt"单元的名称代表什么?

"阴极射线管"?"C RunTime"?对我来说都没有多大意义; 完全不同的东西?

turbo-pascal

5
推荐指数
1
解决办法
1312
查看次数

如何解除AssignCrt(输出)?

在TurboPascal程序中,我利用DOS 处理输出并使用Tab 控件字符在输出中形成列:

const Tab = #09;
...
Writeln(X, Tab, F(X));
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试pause通过ReadKey调用和使用Crt模块添加类似功能时,已处理的输出中断,并且上面说明的语句开始编写通用Tab字形,而不是在制表位上形成列.

正如我所知,这种现象的来源是AssignCrt(Output)在模块初始化时调用,它重新定义了Writeln工作原理 - 它不再使用DOS输出,而是使用视频BIOS或直接视频内存访问(取决于DirectVideo值).

我要如何扭转什么AssignCrt呢?据我所知,文档中没有Crt提供恢复正常输出的方法.

delphi pascal crt turbo-pascal

5
推荐指数
1
解决办法
229
查看次数

在turbo pascal 5.5中的旧IBM PS/2上读/写文件

问题:我最近收购了1989年的IBM PS2,我正在尝试通过软盘将大型文件从我新的基于UNIX的机器移到这个IBM.我有一个bash脚本将我的文件分成~2MB块,现在我正在尝试编写一个pascal程序,以便在它们被传输后重建这些文件.

我无法在此计算机上找到正确的读/写文件方法.我已经尝试了各种pascal教程站点,但它们都适用于较新版本(我在Pascal文件处理中遵循的站点).我能够创建一个空文件(如下所述),但我无法写入它.有谁知道这种类型的计算机正确的pascal读写方法?

我知道这是一个晦涩难懂的问题,所以,如果您有任何帮助,请提前感谢您!

细节:

正确创建文件的当前测试代码如下:

program testingFiles;
uses Crt, Win;

const FILE_NAME = 'testFile.txt';
var outFile : File;

begin
writeln('creating file ...');
Assign(outFile, FILE_NAME);
rewrite(outFile);    

end.
Run Code Online (Sandbox Code Playgroud)

这是一些测试代码不工作,方法的append()close()无法找到:

program testingFiles;
uses Crt, Win;

const FILE_NAME = 'testFile.txt';
var outFile : File;

begin
writeln('creating file ...');
Assign(outFile, FILE_NAME);

append(outFile);
writeln('this should be in the file');
close(outFile);

end.
Run Code Online (Sandbox Code Playgroud)

这是另一种也不起作用的writeln()方法,该方法只能打印到终端.但否则这会编译.

program testingFiles;
uses Crt, Win;

const FILE_NAME = 'testFile.txt';
var outFile : File; …
Run Code Online (Sandbox Code Playgroud)

pascal dos turbo-pascal

5
推荐指数
1
解决办法
253
查看次数

如何将Turbo Pascal for Win32的I/O端口访问转换为C#.Net

我有一台硬币计数器(SC350/360),通过RS232C接口连接到计算机.我有描述通信协议的技术文档,还包括一个工作pascal程序来操作机器.我复制了pascal代码,并在Turbo Pascal上使用DosBox对Windows 7 64位进行了测试,代码编译成功.我现在想要实现的是将这些pascal代码转换为C#.Net但是我很难将几行转换为C#,因为我没有太多的串口编程经验.

这是Pascal中用于初始化与机器通信的代码.(将波特率设置为9600,8位,无奇偶校验,1个停止位)

uses crt;
const
{ COM1: RS232 port address }
RXTX = $3F8; { $2F8 if COM2: is used }
ACK = 6;
NAK = 21;
ESC = 27;
var
dummy,
checkSum : integer;
key : char;
protocol : integer;

    var i : integer;
begin
i := 1843200 div 9600 div 16;
port[RXTX + 3] := $80;
port[RXTX + 1] := hi(i);
port[RXTX]:= lo(i);
port[RXTX + 3] := 3;
port[RXTX + 4] := $A;
while odd(port[RXTX …
Run Code Online (Sandbox Code Playgroud)

.net c# turbo-pascal

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

将 Turbo Pascal 内联代码转换为 Object Pascal

在将旧的 Turbo Pascal 单位转换为现代 Object Pascal 时,我遇到了以下问题:

function Less (var a, b; Relation : POINTER) : boolean;
    inline($5B/$59/$0E/$E8/$00/$00/$58/$05/$08/$00/$50/$51/$53/$CB);
Run Code Online (Sandbox Code Playgroud)

代码应该调用 an external function {$F+} function VariableLess(var a, b : Index) : boolean; {$F-},收集结果并将其传递给调用函数。该函数用于为无类型数据提供二叉树的单元中

procedure InsVarBBTree(var B: BBTree; var E; S: word; A: pointer; var ok: boolean);
{ puts variable E of size S into tree B. The order relation address is A. }
Run Code Online (Sandbox Code Playgroud)

因此,单元本身不能提供比较功能,即定义有效载荷的单元的工作。

使用在线反汇编器,我发现这对应于:

{$ASMMODE intel}
function Less (var a, b; Relation : POINTER) : boolean; assembler; …
Run Code Online (Sandbox Code Playgroud)

assembly pascal inline turbo-pascal x86-16

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

Turbo Pascal中数组的内存布局

我们在Turbo Pascal中有一个旧的应用程序可以将其内部状态保存到文件中,我们需要能够在C#应用程序中读/写该文件.

旧应用程序通过转储各种内存数据结构来生成文件.在一个地方,应用程序只转储一系列内存,而这个内存范围包含一些数组.我试图找出实际数组元素之前的字节的目的.特别是,块中的前两项可以表示为:

type
  string2 = string[2];
  stringarr2 = array[0..64] of string2;
  string4 = string[4];
  stringarr4 = array[0..64] of string4;
Run Code Online (Sandbox Code Playgroud)

在数据文件中,我看到以下字节序列:

25 00 02 02 41 42 02 43 44 ...
Run Code Online (Sandbox Code Playgroud)

25是数组中元素的数量.这02 41 42是第一个字符串元素"AB"; 这02 43 44是第二个字符串元素,"CD",依此类推.我不知道00 02数组元素计数和第一个数组元素之间的含义是什么.数组元素的数量可能是25 00元素大小02,但每个数组元素的大小实际上是3个字节.

在文件中4字符字符串数组开始的位置,我看到以下内容:

25 00 04 00 00 04 41 42 43 44 04 45 46 47 48
Run Code Online (Sandbox Code Playgroud)

同样,25这是数组中元素的数量; 04 41 42 43 44是数组中的第一个元素,"ABCD",依此类推.在两者之间有字节00 04 00 00 …

delphi freepascal turbo-pascal

3
推荐指数
1
解决办法
846
查看次数

Turbo Pascal 3.0 中的键盘快捷键?

我有Turbo Pascal 3.02的免费下载版本( http://edn.embarcadero.com/article/20792 ),它非常适合在Turbo Pascal 2.0中编译我的旧代码。试图弄清楚如何使用内置编辑器。有人记得任何键盘快捷键或知道在线文档吗?

只需保存并退出编辑器可能就足够了,但我什至不知道那么多。

更新:@Glassfrog 提供的链接非常有帮助。以下是该文件中的密钥,在 MS-DOS Turbo Pascal 3.02 中也对我有用:

Character left: (arrow)
Character right: (arrow)
Word left: CTRL-A
Word right: CTRL-F
Line up: CTRL-E (or arrow)
Line down: CTRL-X (or arrow)
Scroll up: CTRL-W
Scroll down: CTRL-Z
Page up: CTRL-R
Page down: CTRL-C
To left on line: CTRL-Q CTRL-S
To right of line: CTRL-Q CTRL-D
To top of page: CTRL-Q CTRL-E
To bottom of page: CTRL-Q CTRL-X
To top of file: …
Run Code Online (Sandbox Code Playgroud)

dos turbo-pascal

3
推荐指数
1
解决办法
3790
查看次数

Delphi中的MD5/Pascal/FreePascal用于短字符串

我试图为短字符串(短于64字节)实现简单的MD5.我正在使用维基百科的算法..一切都编译,但我的结果是字符串:

"hello world" 
Run Code Online (Sandbox Code Playgroud)

是:

BB3BB65ED0EE1EE0BB22CB93C3CD5A8F
Run Code Online (Sandbox Code Playgroud)

虽然它应该是:

5EB63BBBE01EEED093CB22BB8F5ACDC3
Run Code Online (Sandbox Code Playgroud)

完整代码在这里:

program Prog;

uses Classes, SysUtils;

function leftrotate(x, c: Cardinal): Cardinal;
begin
  leftrotate := (x shl c) or (x shr (32-c));
end;

const s: array[0..63] of Cardinal = (
    7, 12, 17, 22,  7, 12, 17, 22,  7, 12, 17, 22,  7, 12, 17, 22,
    5,  9, 14, 20,  5,  9, 14, 20,  5,  9, 14, 20,  5,  9, 14, 20,
    4, 11, 16, 23,  4, 11, 16, 23, …
Run Code Online (Sandbox Code Playgroud)

delphi pascal md5 freepascal turbo-pascal

3
推荐指数
1
解决办法
1657
查看次数

标签 统计

turbo-pascal ×10

pascal ×5

delphi ×3

dos ×2

freepascal ×2

.net ×1

assembly ×1

c# ×1

call-graph ×1

cpm ×1

crt ×1

inline ×1

md5 ×1

x86-16 ×1