红白机大时代
字体: 16 + -

第二十五章 曲线救国的典型案例

    对于任天堂来说,生产出连接两台fc主机的数据线,这再容易不过了。但连接起来不代表它们能够运行,因此需要切实的汇编来测试。

    而王秋阳提供了能够测试两枚八位元cpu同时运行的运算依据,并转换成veriloghdl语言。横井俊平现在正用心的将它记在脑子里。

    module memory

    (

    input [15:0] addr,

    inout [15:0] data,

    input rw

    );

    reg [15:0] data_ram[0:16'b1111_1111_1111_1111];

    integer i;

    initial begin

    for (i = 0; i <= 16'b1111_1111_1111_1111; i = i + 1)

    data_ram[i]=$random();

    data_ram[0]=16'b1000000100000000;//mov [addr],r0;r0 = 0

    data_ram[1]= 16'b1100000000000000;//addr

    data_ram[2]= 16'b1000000010001000;//mov r1,100

    data_ram[3]= 100;//100

    //data_ram[2]= 16'b1110011001000000;

    data_ram[4]= 16'b0010000100010001;//lop:add r2,r1

    data_ram[5]= 16'b1110000011001000;//sub r1,1

    data_ram[6]= 16'b0000000000000001;//1

    data_ram[7]= 16'b1110000000001000;//cmp r1,0

    data_ram[8]= 16'b0000000000000000;//0

    data_ram[9]= 16'b1110011010000000;//jz ext

    data_ram[10]= 16'b0000000000000011;//+3 offset(ext)

    data_ram[11]= 16'b1000000010100000;//mov r4,4

    data_ram[12]= 16'b0000000000000100;

    data_ram[13]= 16'b0110011001100000;//jmp r4(lop)

    data_ram[14]= 16'b1000000100000010;//ext:mov [addr],r2

    data_ram[15]= 16'b1100000000000000;//addr

    data_ram[16]= 16'b1110011001000000;//jmp $

    data_ram[17]= 16'b1111111111111110;//-2 offset($)

    /*data_ram[0]= 16'b1000000010000000;//mov r0,imm

    data_ram[1]= 16'b0011111111111111;//imm

    data_ram[2]= 16'b0000000001111000;//mov r7,r0

    data_ram[3]= 16'b1000000010011000;//mov r3,0

    data_ram[4]= 16'b0000000000000000;

    data_ram[5]= 16'b1000000010100000;//mov r4,code of jmp r5

    data_ram[6]= 16'b0110011001101000;//jmp r5

    data_ram[7]= 16'b0000000101011100;//mov [r3],r4

    data_ram[8]= 16'b1000000011110000;//mov r6,[0]

    data_ram[9]= 16'b0000000000000000;//[0]

    data_ram[10]= 16'b1000000100000110;//mov [255],r6

    data_ram[11]= 16'b0000000011111111;

    data_ram[12]= 16'b0110011001011000;//jmp r3

    */

    end

    always @(addr or rw or data)

    if (rw)

    data_ram[addr]= data;

    assign data = rw ? 16'hzzzz : data_ram[addr];

    endmodule

    测试结果,应该是r2从0变化到5050,即1+2+3+……+100=5050。

    add dst,src 将src和dst相加并且送到dst寄存器。

    mov [addr],src 将src的值送到以addr位地址的内存单元。

    sub dst,src 将dst减去src并且送到dst中。

    cmp dst,src 将dst减去src 然后不送到dst,只改变标志位。

    jz dst 当zf=1时,即上次的算术操作结果为0,则跳转到dst中。

    这是一段手输仿真程序,可以完全测试到两个cpu运行,甚至可以测试十六位元cpu。横井俊平惊讶的发现,这套汇编为研发十六位芯片,竟然提供了切实可行的理论依据。

    这个时候,天已经快要黑了。

    最后,横井俊平对王秋阳说道:“任天堂fc的主机,磁碟机设计都相当成熟。王君提供了测试代码,以现有技术研发出这款配件,并不需要太长时间!我的意思是,研发出来之后直接申请新机型,并且申请专利。”

    “申请专利?”王秋阳倒是没有想到这么多。

    横井俊平说道:“当然,王君提供的代码和新机型,可是宝贵的财富,我们为任天堂工作可是需要维持生活的!只是你现在是作为美纪的助理,在科乐美工作,所以这项荣誉暂时只能以美纪的名义领受了。当然,以我和美纪的人品,待遇方便你不用担心!”

    王秋阳笑道:“这没问题。”

    这款新机型根本就是拣来的,王秋阳原本也没有想拿来赚钱。研发双核fc的大神更没有想过用它赚钱,王秋阳穿越到这个年代,也完全是出于偶然。

    至于这套汇编,是二十一世纪电脑达人李倩发表于《电子说》网站的共享资源。那时候十六位元的cpu早成为了地摊货,作者同样没有营利目的。

    在汉化组待久了,王秋阳的思维也和他的团队一样云淡风清。汉化组习惯于无偿服务,看到玩家得到快乐就是他们的快乐,没有人关心钱的事。

    哪怕王秋阳现在真的需要用钱,横井俊平也帮他搬进了这么大的公寓,一年之后任天堂的上村雅志还要支付一百万円的入替金。王秋阳已经很知足了。

    至于荣誉,王秋阳更不放在心上。真正hack一款游戏出来,玩家追捧,点赞,这就是最大的荣誉。冬野美纪原本就是天才,王秋阳不介意再给她增加一点光环。

    “这对冬野小姐的事业,一定会有大的帮助吧?”

    不知道为什么,冬野美纪高兴的时候,在王秋阳看来很受用,比自己高兴还要舒心。

    更何况,fc迟早会被中国盗版。他们现在把机型设计得越完美,中国人盗版起来就越方便。王秋阳这也算是曲线救国的典型案例了。

    怎么看,王秋阳都不吃亏。

    横井俊平看着王秋阳的样子,当真不是装出来的。不由得感慨道:“贵国的从业者,都是这样无私的吗?”

    王秋阳笑道:“为国民服务嘛!”

    因为王秋阳和横井俊平这一交流,就到了晚上,横井俊平干脆请这些年轻人又吃了一顿晚饭。自从遇上了王秋阳,他这些日子当真是破费了许多。

    最后,王秋阳把日志本交给了横井俊平,与他告别。和冬野美纪,胖子,夏雨诗一同逛回了公寓花园,胖子都不太相信今天发生的事情。

    “老王,真有你的!我们真的住进大公寓了,这不是在做梦吧?”

    说着,胖子忍不住对夏雨诗道:“雨诗,既然咱们自己有地儿住了,就别麻烦人家了。你搬过来吧?”

    夏雨诗一口拒绝:“去!我一个女孩,怎么能和两个大男人住一起?再者说了,美纪还能教我学日语呢。”

    胖子听了,一脸的生无可恋。

    王秋阳和冬野美纪走在另一边,并没有像胖子和夏雨诗一样拌嘴。最后要上楼的时候,冬野美纪只说道:“王君,做汇编不要熬得太晚,注意身体。”

    “谢谢你,我会的!”