我知道这是一个漫长的征求有关开放固件和旧硬件的建议。
我设法在PowerBook G4上安装和引导Mac OS 9(不受支持)。由于OS9无法管理不受支持的硬件上的冷却,因此机器在使用约1小时后变得很热。
我已经使用Open Firmware和以下代码从启动中打开了风扇:
" fan" open-dev constant fan-ih
" fans-on" fan-ih $call-method
这将使风扇全速运行,但我只希望它们以50%的速度运行,或者更改它们启动时的硬件温度限制。
但是,我不知道如何使用任何例程。看起来有很多选项可以修改,但是要弄清楚覆盖默认值的正确语法是一个问题。例如,当使用“ see”方法时,“ set-speed”和“ .set-speed”给出的输出非常不同,并且对于可编辑的内容没有给出太多指示:
> see .speed
1 read-speed cr " TACH1 = " type .d 2 read-speed cr " TACH2 = " type .d 3 read-speed cr " TACH3 = " type .d 4 read-speed cr " TACH4 = type .d ; ok
> see set-speed
>r 40 dup read-reg 8 andc write-reg case
1 of
5c dup read-reg e0 or write-reg 30 r> write-reg
endof
2 of
5d dup read-reg e0 or write-reg 31 r> write-reg
endof
3 of
5e dup read-reg e0 or write-reg 32 r> write-reg
endof
dup of
5e dup read-reg e0 or write-reg 32 r> write-reg
endof
endcase
; ok
> see set-speeds
1 over set-speed 2 over set-speed 3 swap set-speed
任何帮助将不胜感激!
答案 0 :(得分:2)
在Forth and Open Firmware中,单词的名称以句号开头(发音的点)表明该单词将打印某些内容。 例如,要打印(放下)参数堆栈中的前一个数字,我们称之为。 (是的,这是一个时期,它是第四个字)。
因此.speed表示“打印速度信息。 1读取速度读取tach1的速度,并将该值放在参数堆栈中。
cr“ TACH1 =”类型打印回车符,字符串TACH1 =
.d 打印读取速度放在堆栈上的值。 d表示以十进制显示值。
设置速度看起来需要3个参数(在调用set-speed之前在命令行中输入它们)。 (速度转速数字地址?)因此,看起来您键入的最后一个参数(当您调用set-speed时将位于参数堆栈的顶部)是某种地址,但我不清楚确切地这是什么。 因此,调用set-speed可能类似于: 1设定速度 2设定速度
我从您展示的反编译中推断出这一点。
我认为这不是足够的信息,(我对这件事很不了解),但它可能会使您走得更远。
也许您可以显示以下内容的输出:
请参阅阅读记录
和 请参阅write-reg
这可能会有所帮助。
答案 1 :(得分:2)
我在很大程度上同意兰迪的观点,但是在我看来,设定速度有两个论点。堆栈的顶部是与所需速度相关的某个值,在其下方是风扇编号(1、2或3)。
在Forth堆栈图符号中,这些词将被描述为:
.speed ( -- ) \ Display the speeds of all the fans
set-speed ( fan# speed -- ) \ Set the speed of one fan
set-speeds ( speed -- ) \ Set the speeds of all the fans
这是一个合理的猜测,.speed显示的数字与可用作设置速度和设置速度的速度参数的数字相同。如果正确,那么可以使用以下咒语将速度减半:
" fan" open-dev constant fan-ih
" fans-on" fan-ih $call-method
TACH1 = <some number>
TACH2 = <some number>
TACH3 = <some number>
为了论证,假设
decimal 46 2 / "set-speeds" fan-ih $call-method
很有可能使所有粉丝的速度减半。
使用诸如 select-dev 之类的词有更多简化的方法,具体取决于Apple OFW实现的便利性,但是上面仅使用标准要求的词,因此在不同的实现中都是可靠的。
如果要查找与风扇控制有关的所有单词,可以编写:
dev fan
words
,然后用请参见进行反编译。
通过将命令放在nvramrc中,您也许可以自动设置风扇速度。
答案 2 :(得分:2)
这看起来不错。 dev fan 和随后的 device-end 行是不必要的,但无害,因为 open-dev 和 $ call-method 无需在设备节点上下文中即可工作。第一个 dev / cpus / PowerPC,G4 @ 0 及其结束的 device-end 是必需的,因为属性必须从内部完成设备节点。 享受吧!
答案 3 :(得分:0)
非常感谢Mitch和Randy!我无法在评论中正确设置其格式,因此已将其发布为答案。 我设法使用以下脚本使其工作:
\ comment
cr
dev /cpus/PowerPC,G4@0
80010201 encode-int " cpu-version" property
device-end
dev fan
" fan" open-dev constant fan-ih
1 3B6 " set-speed" fan-ih $call-method
2 3B6 " set-speed" fan-ih $call-method
device-end
boot hd:,\\:tbxi
然后我将引导设备更改为以下内容,以便在引导时自动加载:
setenv boot-device hd:\bootscript
非常感谢,我真的很感激!我很高兴拥有运行Mac OS 9的PowerBook,速度非常快!将继续努力。