新足迹

 找回密码
 注册

精华好帖回顾

· 今天一次性通过了交规考试和HPT,趁热打铁,交作业!补上路考经验! (2006-11-10) doulaimi · 我们家的小小动物园------1308楼更新视频----当大黑遇到愤怒的小鸟!!! (2012-1-2) vtis
· Lanshan: 简单易做又好味的手工饼干- Choc Chip 核桃杏仁饼干 (2011-5-30) lanshan · $2 Shop的库存 (2010-6-14) shanyilin
Advertisement
Advertisement
查看: 1711|回复: 10

用Javascript写的,在transistor level模拟6502 processor的网页 [复制链接]

发表于 2010-9-19 17:22 |显示全部楼层
此文章由 bulaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bulaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
首先向大家介绍一下bunnie:

http://www.bunniestudios.com

bunnie是个美籍华人,是电子方面的专家。他经常在深圳出没。他是著名的动手杂志<Make Magaine>的顾问和撰稿人。他的blog
侧重于电子方面,质量很高,推荐大家订阅。

然后是这个网站,是我刚刚从bunnie的blog上看到的

http://www.visual6502.org/JSSim/index.html

有人用Javascript写了这么一个模拟器,从三极管层模拟了一个早期的8位的CPU - 6502的全部内部电路,而且可以动态显示指令执行的情况。我还没完全看懂,但是已经觉得这个很酷很酷了,一定要分享一下。

[ 本帖最后由 bulaohu 于 2010-9-20 10:16 编辑 ]
Advertisement
Advertisement

发表于 2010-9-19 17:36 |显示全部楼层
此文章由 sh-boy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 sh-boy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
又见坛内IT牛人~~~

发表于 2010-9-19 18:24 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
估计是canvas 或SVG,
Javascript已经能做CAD系统了,

发表于 2010-9-19 20:14 |显示全部楼层
此文章由 yuba 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 yuba 所有!转贴必须注明作者、出处和本声明,并保持内容完整
有人说过,凡能用javascript写的,将来都会用javascipt实现

发表于 2010-9-19 23:21 |显示全部楼层
此文章由 bulaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bulaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 yuba 于 2010-9-19 20:14 发表
有人说过,凡能用javascript写的,将来都会用javascipt实现


Javascript就是编程语言中的小强

想当年生下来就是个杂种,为了吸引人,名字里还特地加上Java字样来蒙骗群众

最初的好几年连个debugger都没有,用JS的人都是要手动debug的苦哈哈

现在不少的开发工具都自动生成Javascript给你了

特殊贡献奖章

发表于 2010-9-20 09:18 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这个程序太大了,玩了两下,电脑被弄的很慢(paopaobing(81))
Advertisement
Advertisement

发表于 2010-9-20 09:46 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 bulaohu 于 2010-9-19 23:21 发表


Javascript就是编程语言中的小强

想当年生下来就是个杂种,为了吸引人,名字里还特地加上Java字样来蒙骗群众

最初的好几年连个debugger都没有,用JS的人都是要手动debug的苦哈哈

现在不少的开发工具都自动生成Javascr ...


javascript的开始祖先是c++,很多syntex都是从那边借过来的,

javascript从设计阶段就有不少的问题,比如global variable makes linkage...

一直到现有的应用存在相当多的 bad practice,现在甚至市面上连本像样的教科书都没有。他被title成"The World's Most Misunderstood Programming Language",也不奇怪。

yahoo! yui在commuinity的推广方面做得不错,领军人物Douglas Crockford近年来也致力于javascript的基础教育,原来我帖过他有关基础javascipt的4个clip,还有2个系列是advanced,和dom(虽然现在不怎么用了,都用jquery),相信不难找到,对javascript framework这个级别感兴趣的人应该能得益不少,如果只是简单的dom event handler的编程,会些基础的基本上就差不多了。

最近几个大的browser都在重写他的javascript engine,如果原来一直被人诟病的performance issue得到比较好的解决,相信他的春天也不会太远了。

远离Javascript的web developer不能算是好的developer.

评分

参与人数 1积分 +8 收起 理由
bulaohu + 8 谢谢奉献

查看全部评分

发表于 2010-9-20 09:55 |显示全部楼层
此文章由 rogerk 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 rogerk 所有!转贴必须注明作者、出处和本声明,并保持内容完整
看了一眼javascript的source, 看起来也不是那么复杂,不过几个文件里有大量hard-coded的数据,估计是从die photo上面vectorize下来的。

可以改写成一个native的程序,应该能快很多。

回头找本6502的书复习复习汇编,可以写点程序跑跑看。

发表于 2010-9-20 10:18 |显示全部楼层
此文章由 bulaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bulaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2010-9-20 09:46 发表


javascript的开始祖先是c++,很多syntex都是从那边借过来的,

javascript从设计阶段就有不少的问题,比如global variable makes linkage...

一直到现有的应用存在相当多的 bad practice,现在甚至市面上连本像样的教 ...


嗯,Javascript是从有DOM开始才多少像个编程语言了,在那以前真是恐怖

发表于 2010-9-20 10:19 |显示全部楼层
此文章由 bulaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bulaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 rogerk 于 2010-9-20 09:55 发表
看了一眼javascript的source, 看起来也不是那么复杂,不过几个文件里有大量hard-coded的数据,估计是从die photo上面vectorize下来的。

可以改写成一个native的程序,应该能快很多。

回头找本6502的书复习复习汇编,可以写 ...


我就知道你会喜欢这个

他们用JS来写肯定是为了让最大数量的人能直接launch,速度就顾不得了

发表于 2010-9-20 17:28 |显示全部楼层
此文章由 rogerk 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 rogerk 所有!转贴必须注明作者、出处和本声明,并保持内容完整
快下班了,花了半个小时网上找了找6502的汇编指令,当年可是写过好多,现在都忘光了。看了看资料,写了两个小程序来试试看这个东西到底是不是真的能不能工作,结果果然不错。运行结果很正确。就是实在是太慢了。

写了个打印菱形的程序,还有一个简单的内存填数。没有编译器,只好手工汇编成机器码,手工算变量地址,跳转偏移量,又有了十几年前感觉。汇编好了把那几十个字节的数据在那个网页上手工输入进去,一点reset,程序就开始跑了。

我把汇编程序和汇编好的机器码都贴在这里,有谁愿意手工输入60几个数,可以自己运行下看看CPU到底怎么工作。
  1. ;DEMO PRINT DIAMOND

  2.                 LOOPY:
  3. 00                        lda YCOUNT                A5 3A
  4. 02                        asl                        0A
  5. 03                        asl                        0A
  6. 04                        asl                        0A
  7. 05                        asl                        0A
  8. 06                        sta Y16                        85 3B
  9. 08                        sec                        38
  10. 09                        lda #$0F                A9 0F
  11. 0B                        sbc YCOUNT                E5 3A
  12. 0D                        sta XCOUNT                85 39
  13.                 LOOPX:
  14. 0F                        lda #$80                A9 80
  15. 11                        clc                        18
  16. 12                        adc XCOUNT                65 39
  17. 14                        tay                        A8
  18.                        
  19. 15                        clc                        18
  20. 16                        adc Y16                        65 3B
  21. 18                        tax                        AA
  22. 19                        lda #$FF                A9 FF
  23. 1B                        sta $80, x                9D 80 00
  24.                
  25. 1E                        tya                        98
  26. 1F                        sec                        38
  27. 20                        sbc Y16                        E5 3B
  28. 22                        tax                        AA
  29. 23                        lda #$FF                A9 FF
  30. 25                        sta $80, x                9D 80 00
  31.                
  32. 28                        dec XCOUNT                C6 39
  33. 2A                        lda XCOUNT                A5 39
  34. 2C                        clc                        18
  35. 2D                        cmp YCOUNT                C5 3A
  36. 2F                        bpl LOOPX                10 DE
  37.                        
  38. 31                        inc YCOUNT                E6 3A
  39. 33                        lda YCOUNT                A5 3A
  40. 35                        cmp #$8                        C9 08
  41. 37                        bmi LOOPY                30 C7
  42.                
  43. 39                db        XCOUNT        0                00
  44. 3A                        YCOUNT        0                00
  45. 3B                        Y16        0                00


  46. ;DEMO FILL MEMORY

  47. 00                        LDX #$00                A2 00
  48. 02                        LDY #$00                A0 00
  49.                 LOOP:
  50. 04                        STX $10,Y                96 10
  51. 06                        INX                        E8
  52. 07                        INY                        C8
  53. 08                        CPY #$20                C0 20
  54. 0A                        BMI LOOP                30 F8
  55.                 HALT:
  56. 0C                        JMP HALT                4C 0C 00
复制代码
还有运算了半个小时才算出来的菱形的截图。

[ 本帖最后由 rogerk 于 2010-9-20 17:30 编辑 ]

本帖子中包含更多资源

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

x

评分

参与人数 2积分 +24 收起 理由
乱码 + 4 你太有才了!!!
bulaohu + 20 你太有才了

查看全部评分

Advertisement
Advertisement

发表回复

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

本版积分规则

Advertisement
Advertisement
返回顶部