迅维网

查看: 13899|回复: 11
打印 上一主题 下一主题
[显卡维修]

MODS 的使用方法简介 一

  [复制链接]
跳转到指定楼层
1#
发表于 2009-6-15 03:46:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自: 广西南宁 来自 广西南宁

马上注册,获取阅读精华内容及下载权限

您需要 登录 才可以下载或查看,没有帐号?注册

x
首先感谢坛子里发布 MODS,MATS 等程序的朋友,我也是在别的地方发现这里有这样的资料以后赶紧登录上来的。

在这里大家使用的比较多的是 MATS 显存测试。其实,MODS 也是非常有用的程序。MODS 拥有对 N 卡的几乎所有控制权,而且其脚本格式 JS 文件是源代码格式,这是了解 N  卡内部运作的很珍贵的资料。MODS 是 NV 内部的工具,只开放给显卡生产厂商使用,所以我们这些非厂商人员没什么机会能了解到 MODS 的使用方法。我也是在以前一个偶然的机会得到了一份用于 NV44 的 MODS 程序,才能对 MODS 做了一些研究,受用至今。

我看到坛子里还没有针对 MODS 的使用的讨论,我就先谈谈我自己的一些使用经验,希望能起到一个抛砖引玉的作用。

先说说 MODS 的使用环境。我是在 DOS622 下运行 MODS 的。在 DOS 下运行 MODS 有一定的条件,一个就是不能加载 HIMEM.SYS。下面是我的 config.sys 的格式:

rem DEVICE=C:\DOS\SETVER.EXE
rem DEVICE=C:\DOS\HIMEM.SYS
rem DEVICE=C:\SICE280\S-ICE.EXE /EMM
DOS=HIGH
FILES=30
rem DEVICE=D:\WINDOWS\setver.exe

lastdrive = Z

这个简单的环境可以让 MODS 顺利执行。

后面我谈谈如何使用 MODS 脚本,如何独立使用脚本中的各个函数,如何使用 MDOS 提供的基本功能模块,以及如何编制自己的脚本等等。我会慢慢补齐,这得花点时间,请朋友们先不要跟贴,谢谢!

待续.... < 还没有写完,请朋友们先不要跟贴,以免影响阅读的连续性>

购买记录

购买人数85价格购买时间
 会员14776062元2022-12-26 10:28
 会员14776062元2022-12-26 10:27
 会员12130432元2022-11-18 10:43
 会员12130432元2022-11-18 10:32
 会员12130432元2022-11-18 10:31

查看所有购买记录


评分

参与人数 1下载分 +5 收起 理由
显卡修好了 + 5 鼓励新手

查看全部评分

本文由 会员138682 原创或被授权转载制作,其他机构或个人未经许可严禁转载。
推荐
发表于 2009-6-18 01:32:29 | 只看该作者 来自: 辽宁沈阳 来自 辽宁沈阳

这你就不懂了吧。。
MODS还是有很大用处的,如果不信你有条件可以试一下。

回复 支持 2 反对 0

使用道具 举报

推荐
发表于 2010-1-19 22:45:57 | 只看该作者 来自: 河南南阳 来自 河南南阳
本帖最后由 打手枪 于 2010-1-19 22:47 编辑

mats真的不错

回复 支持 1 反对 0

使用道具 举报

推荐
发表于 2010-1-19 22:02:00 | 只看该作者 来自: 广西南宁 来自 广西南宁
就是,这么多的函数,头都大

回复 支持 1 反对 0

使用道具 举报

推荐
发表于 2010-1-17 14:45:39 | 只看该作者 来自: 河南安阳 来自 河南安阳
这么多的函数,看来头痛,看来得好好学一下

回复 支持 1 反对 0

使用道具 举报

推荐
发表于 2010-1-17 14:35:21 | 只看该作者 来自: 湖北黄冈 来自 湖北黄冈
功能很强大,很不多,只是看一次感觉不是很懂。得要了解下才行,MODS发到论坛上来了没有啊。能支持哪些显卡啦。

回复 支持 1 反对 0

使用道具 举报

推荐
发表于 2009-6-18 00:54:37 | 只看该作者 来自: 广西桂林 来自 广西桂林
要是写完这么多函数的话,一天时间=也修不到几个卡啊。

回复 支持 1 反对 0

使用道具 举报

推荐
发表于 2009-6-18 00:25:37 | 只看该作者 来自: 辽宁沈阳 来自 辽宁沈阳
这些对于修卡的实用性还是很强的

回复 支持 1 反对 0

使用道具 举报

推荐
发表于 2009-6-17 10:56:09 | 只看该作者 来自: 湖北襄阳 来自 湖北襄阳
非常不错,支持楼主!!!

回复 支持 1 反对 0

使用道具 举报

推荐
发表于 2009-6-17 03:24:31 | 只看该作者 来自: 广西南宁 来自 广西南宁
用上面的方法来编写自己的函数,只能在交互界面中单独调用。如果想写多几个函数,然后也自动按自己编制的顺序来执行,那该怎么办呢?

很简单,编写自己的 JS 脚本文件。这很容易实现的,大家看看下面的步骤:

建立一个空文本,保存为 myscript.js。然后用 Ultraedit ,这样的文本工具来打开(不要用 World 来打开,这玩意完全不适合用来编程),或者就用记事本打开。然后把下面的代码拷贝进去,保存:

myfunc_1()
{
   Out.Printf(Out.PriNormal, "MY func 1, read  0x1540: 0x%08x.\n", Gpu.RegRd32(0x1540));
   return OK;
}

myfunc_2()
{
   Out.Printf(Out.PriNormal, "MY func 2, read  0x1544: 0x%08x.\n", Gpu.RegRd32(0x1544));
   return OK;
}

myfunc_3()
{
   Out.Printf(Out.PriNormal, "MY func 3, read  0x1548: 0x%08x.\n", Gpu.RegRd32(0x1548));
   return OK;
}

main()
{
    Out.Printf(Out.PriNormal, "This is MY functions: \n");
   myfunc_1();
   myfunc_2();
   myfunc_3();
   return OK;
}

做完上面的步骤以后,这个就是我们自己的脚本文件了。我们可以用常规的脚本调用方法来调用这个脚本:

mods myscript.js

然后 MODS 就会依次执行我们编写的 3 个函数,自动自行各个函数中的代码。我这里写的范例代码很简单,也就是依次读取 3 个连续的寄存器的值并显示出来。这个自由度就很大了,只要搞清楚 MODS 本身提供的内置函数,就可以利用这些基本函数来做任何事情了。

回复 支持 1 反对 0

使用道具 举报

推荐
发表于 2009-6-16 04:42:27 | 只看该作者 来自: 广西南宁 来自 广西南宁
上面讲述的是对脚本中现有函数的独立应用,如果这些函数并不适合我们的要求,那该怎么办?很简单,我们可以自己编写函数,添加到现有的脚本中,然后使用上面的方法来独立调用。

这就是 JAVA 脚本系统的好处,可以按自己的需求来扩展。但是要编制自己的函数(也就是功能模块),就需要对 MODS 的机制进行一些了解。现有的 MODS 程序,分两大部分(我们先不讨论 MATS,MATS 是独立的显存检测工具,完全独立的),一个是 MODS.exe 主程序,一个就是各个脚本文件。MODS 主程序包含有对脚本文件的解析功能,简单的说就是把脚本吃进去,然后吐出执行结果。mods.exe 还包含有内置的基本功能模块,比如寄存器的读取,写入函数,这些函数是编译在 mods.exe 里面的,脚本中只需要标明这些函数的名称就可以调用对应的内置函数(功能模块)。那些是内置的功能模块呢?我们打开 gputest.js 脚本文件(我是用 ULTRAEDIT 打开的),搜索 Gpu.RegRd32 字样,可以搜索到一些类似 Gpu.RegRd32(0x680a14) 这样的东西,这就是脚本调用内置函数的例子。Gpu.RegRd32() 是读取寄存器值的内置函数,括号内放置要读取的寄存器地址,比如,要读取 0x1540 寄存器的值,那调用的方法就是 Gpu.RegRd32(0x1540),就是这样。
大家还可以搜索 Gpu.RegWr32 字样,这也是 mods 基本内置函数,就是写寄存器用的,括号内放置两个参数,第一个是寄存器的地址,第二个是要写入的值。比如,要往寄存器 0x1540 中写入 0x12345678,调用的方法就是 Gpu.RegWr32(0x1540,0x12345678) ,这样 MODS 就会尝试将 0x12345678 写入 0x1540 寄存器中了。

我们开始尝试编制自己的一个简单的函数,放在 已有的脚本中,然后尝试调用。

打开 gputest.js 文件,把下面的这段代码拷贝到文件的最后:

RegisterReadTest()
{
     Out.Printf(Out.PriNormal, "Try to read 0x1540: 0x%08x.\n", Gpu.RegRd32(0x1540));
     return OK;
}

这段代码的意思就是,读取 0x1540 寄存器的值并显示出来,这里调用了两个 MODS 的内置函数:Out.Printf  和 Gpu.RegRd32。

保存好 gputest.js 文件,然后执行 mods -s -i gputest.js ,在出现的互交界面中输入我们新添加的函数名 RegisterReadTest() ,注意大小写,以及括号也要加上,回车后,MODS 就会读取 0x1540 寄存器的值并显示出来了。

这就是编制自己的函数的方法。至于什么是内置函数,就需要朋友们自己研究下脚本文件了,当然也需要一点编程知识,可以看懂源代码。

评分

参与人数 1下载分 +10 收起 理由
新诚达 + 10

查看全部评分

回复 支持 1 反对 0

使用道具 举报

2#
发表于 2009-6-15 14:18:22 | 只看该作者 来自: 广西南宁 来自 广西南宁
MODS 脚本的使用格式在MDOS 目录中的 MODS.pdf 文档中有描述,每个完整功能的脚本都有自己的执行参数,MODS.PDF 文档中列出了 gputest.js 的各个执行参数,有很多,列出的各个参数还有自己的功能描述,大家可以参照这些功能参数来使用这些执行参数。

对于显卡的测试,比较常用的参数是 -mfg,也就是执行工厂模式的检测:

mods gputest.js -mfg

执行这样个命令后, MODS 会加载并运行 gputest.js 脚本,然后给出测试的结果,PASS 或者是 FAILD(如果失败的话会给出失败原因的描述,描述字段的含义在 MODS.PDF 中也有说明)。

但,MDOS 的用途以及意义不只是这些。由于其使用的 JAVA 脚本是源代码级别的,我们就可以利用这个脚本来做自己想做的事情了。

如果执行上面列出的执行命令,MODS 会按序执行 gputest.js 中的相关函数,一个不拉。但这个脚本中的函数有些是我们不想让其执行的,那该怎么办呢?我们可以使用 MODS 提供的互交式的脚本执行命令,还是执行 gputest.js 脚本,可以使用下面的格式:

mods -s -i gputest.js

执行这个命令后,MODS 会显示一个互交界面,等待用户输入下一个命令。在这里,我们就可以独立执行 gputest.js 脚本中的各个函数了(当然,前提条件是该函数是可以独立执行的)。
比如,执行上面的命令后,在出现的互交界面输入 gputest.js 中的一个函数名:

CheckRomVersion()

注意大小写要匹配,要与脚本中的对应函数的名称完全一致。这样 MODS 就会独立加载、执行这个函数,如果这个函数有返回值以及执行结果输出的话,还会显示执行的结果。
脚本中的各个函数的功能作用,就需要朋友们自己去查阅脚本了。因为是源代码级的,所以有一点编程知识的话,并不难看懂。

评分

参与人数 1下载分 +10 收起 理由
新诚达 + 10 精品文章

查看全部评分

回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图 AI维修
助手



芯片搜索

快速回复