Dn2l-Dos Navigator开源项目的Linux移植

2020-10-29 10:29:08

运行wgetchmod&;&;chmod+xinit.sh&;&;./https://raw.githubusercontent.com/unxed/dn2l/main/linux/init.sh获取所有需要的文件并解压缩它们。Dn2l将在完成时自动运行,您只需关闭它即可。

转到选项-目录,并将{BASEDIR}替换为。在输出目录和EXE输出目录中。

打开dn.pas,编译-构建(它生成.exe,不要惊讶,它里面有Linux二进制代码)。

有些失败的部分暂时被注释掉了。如果需要修复某些禁用的代码路径,您可以按字符串";通过解开";来查找这些禁用的代码路径。

如果您计划尝试使用免费的Pascal编译器构建dn2l,不要忘记使用-sd开关,并将{$asmMode intel}指令添加到所有具有汇编代码的文件中。此外,FPC不支持单元AFAIK的主体在";实现";部分之前的";内联";函数。

Dn2l内部屏幕呈现代码目前仅支持每个字符一个字节的字符集(目前它是硬编码的cp866,请参阅vological slnx.patch)。要切换到UTF-8,我们可能应该从";CHAR";的";数组[0..3]移到vological slnx.pas中定义的TScrCell结构中,更改PScrBuffer/TScrBuffer(和其他屏幕缓冲区数组,您也可以搜索";TAWordArray(";以找到一些)定义,然后重写所有使用此类缓冲区的代码,如单词数组。

不要忘记views.vp和drivers.vp中的汇编代码,因为它也可以使用屏幕缓冲区。我们可能应该考虑用Pascal重写所有这样的装配部件,因为这也简化了向FPC的移植。让我们以这一原则为指导,首先我们要让它完全运转起来,然后我们才能使它迅速运转起来。

避免删除当前未使用的代码。如果Win32/OS2/DPMI支持的代码路径阻止Linux端口工作,则它们可能会被注释掉,但应该保留在代码库中,以便有一天让dn2l跨平台。

许可证:修改了BSD,但例外情况是禁止在其他许可证(包括但不限于GPL)下重新授权。有关全文,请参见LICENSE.txt。

目前,dn2l是使用免费软件Virtual Pascal编译器构建的,这些编译器是从old-dos.ru获得的(非常感谢old-dos.ru团队!)。在许可协议允许的情况下,它以未经修改的原始形式与dn2l一起重新分发。有关虚拟PASCAL分发条款的更多信息,请参见VP_DIST/LICENCE.TXT。

取自DN开源项目(dnosp.com)的源代码的原始版本包含一些来自Virtual Pascal的RTL库的文件。Dn2l的主要开发者是程序员,而不是律师,因此不确定这些文件的修改版本是否可以重新分发(Virtual Pascal许可协议禁止分发Virtual Pascal的修改版本,目前还不清楚这是否适用于以源代码形式提供的RTL)。无论如何,为了避免可能的法律问题,所有这样的文件都从源代码树中删除了。取而代之的是使用对VPRTL的原始源进行了必要更改的补丁,因此没有与dn2l捆绑在一起的修改过的VP部分,正如VP License所说的那样。这些补丁是:

Sysutils.patch,应用于来自VP的sysutils.pas头文件。根据FSF的规定,标题不能受版权保护。

Vological slnx.patch,从VP RTL src应用于vological slnx.pas。只包含最少的需要引用的原文,所以绝对是合理使用的。

Vological slow.patch、vological sd32.patch、vological sos2.patch-dn2l根本不使用,仅出于教育和历史目的提供,仅包含来自原文的最低要求的引文,因此也应被视为合理使用。

DN2的主要开发人员不确定DN OSP团队所做的DN代码更改的确切许可条款(包括列出的补丁程序)。其中一些文件不属于Ritlabs发布的原始DN源代码文件,其中不包含任何许可信息。他假设该代码的分发条款可以被认为与整个项目的分发条款相同,因为该代码是专门为该项目编写的,并且与它一起分发在相同的归档中。

Dn2l还包含英语资源文件和英语资源文件。这些文件应使用rcp.pas从资源文件夹中的配置文件生成,但rcp.pas当前已损坏,因此可以使用的资源文件取自DN二进制分发。这些文件的源脚本在与整个DN相同的条件下获得许可。

原来,一些最初由Ritlabs发布并因此由dn2l继承的源代码文件基于Turbo Vision for Turbo Pascal的源代码,Borland从未在任何许可许可下发布这些源代码。只要我们没有理由怀疑Ritlabs的诚意,我们就可以假设他们有权在他们的开源产品中使用这些代码。我们还可以认为在dn2l中使用该代码是合理使用,因为dn2l不会从dn2l中获利,dn2l不会对Embarcadero Technologies的业务构成任何威胁,dn2l仅使用来自原始Turbo Vision资源的最低必要部件,并且整个dn2l项目具有历史和教育价值。然而,最好只考虑在dn2l中使用此代码作为临时解决方案:我们应该从Free Pascal项目中逐步用Free Vision替换这些代码,这应该是首要任务,因为需要坚实的法律基础来确保dn2l的任何进一步开发。下面是此类文件的完整列表:Collect t.pas、Colorsel.pas、decder.pas、Dialogs.pas、drivers2.pas、drivers.pas、histlist.pas、memory y.pas、menus.pas、twhc.pas、validate.pas和views.pas。

基于RIT研究实验室的Dos Navigator,非常感谢您开放代码。还要感谢DN OSP团队使老式DOS源代码成为32位和多平台友好的。多亏了托管Virtual Pascal发行版的老Dos.ru团队--如果没有找到和下载VP的能力,dn2l可能永远不会诞生。感谢VP开发人员将他们的产品作为免费软件提供-未经许可使用他们的编译器,dn2l可能永远不会构建。同时也感谢habr.com社区的启发!