新的开源文曲星 nc2000/nc1020 硬件模拟器

5 天前
 wangyucn

出于怀旧,做了文曲星 nc2000 和 nc1020 的模拟器。模拟器参考了泄漏的芯片资料,可以运行真机 rom ,效果和兼容性都堪比真机。

给没用过的人也说下:文曲星是以前没电脑时候的神器,不但可以玩游戏,还可以写汇编、BASIC 、C 语言(lava)。OP 的汇编和 C 语言就是以前在文曲星上学的。

截图

模拟

支持以下 feature:

  • 运行从真机 dump 的 rom
  • 兼容真机软件,和各种自制内核
  • 下载, 上传文件, 保存状态
  • 发音,蜂鸣器
  • 4 灰度
  • 液晶格栅效果, 液晶残影, 液晶抖灰度, 液晶屏侧面的小图标
  • 热键唤醒, 闹铃唤醒

基本上真机有的都支持。 不过串口和红外暂时没有模拟(因为也没什么大用)。

附 NC2000 电路图:

兼容性

经测试支持的 rom:

  • nc2000c 官方 3.5
  • nc2600c 官方 3.2, 3.5 内核 by Sun,4.1 内核 by qiqi, 4.1 内核保留剑桥版 by qiqi, 非常 4.2 内核 by 41824984, 5.0 内核 by epc
  • 哈电族 nc2000 官方 3.6B (注:nc2600 本质上跟 nc2000 本质上是同一型号,可以互刷)
  • nc1020 官方 3.6 4.9 ( wqx 编程俱乐部)
  • 哈电族 nc1020 官方 5.2

软件兼容性(在 nc2600 上测试):

  • bin 兼容性:测试了 nc2600 能找到的几十个 bin 软件,只有一个 sun 加密的 hgp 浏览器 2.5 不能用(用了 CPU 指令的未定义行为)
  • lava 兼容性: 几乎 100%
  • basic 兼容性:几乎 100%

跟其他模拟器对比

之前有其它前辈也做过模拟器,不过都有些遗憾:

  • cc800 模拟器(曾半仙),pc1000emux(lee): 型号较老,软件资源不丰富,没有 lava
  • nc3000emux(lee): 因为缺乏芯片资料,发音部分无法模拟。游戏和单词都没有声音。
  • nc1020 模拟器(android 版,js 版):芯片 io 模拟不全,一些功能靠 hack 内存实现,兼容性不好。容易死机,甚至查单词会乱码。使用的是从 GGV 模拟器里提取的 rom 而不是真机 rom 。

新的模拟器在前人工作基础上,实现了 NC2000 的支持(也顺便支持 NC1020),参考了泄漏的芯片资料做完善,兼容性堪比真机(至少 NC2000 可以这么说)。弥补了上述遗憾。

源码和程序

源码: https://github.com/wangyu-/NC2000

下载: https://github.com/wangyu-/NC2000/releases

交流

项目主页 wiki 里可以找到一个文曲星群。很多 wqxnet/wqxsky/emsky 论坛上的大佬都在,比如曾半仙、lee 、诗诺比、SAILOR-HB 、_dragon 、eastsun 、isword 、红色激情、epc 、电脑蛙蛙...等等等等

2279 次点击
所在节点    分享创造
31 条回复
zenfsharp
5 天前
我滴妈,太牛逼了 OP !
lyric
4 天前
想打赏点币
wtks1
4 天前
厉害了
01802
4 天前
前段时间买的这个 [闲鱼] https://m.tb.cn/h.hEHV2Id?tk=XVhd4mdEwPF CZ057 「快来捡漏 [赠品一份,崭新的掌声学习小电脑,准全新没有包装盒但是都带膜还] 」
点击链接直接打开

现在没货了

给娃开眼界,挺好用的。
levelworm
4 天前
多谢,准备下载下来研究一下大佬的源代码。粗粗看了下似乎是 65c02 的 CPU ,请问模拟这玩意主要的难点是什么?是不是资料不太齐全?还是说它的软件可能依赖于比较诡异的 timing ?(类似 atari 2600 )
wangyucn
4 天前
@lyric 不用了 之前 github 空投领的$200 币 因为一直懒得搞提现,都快跌没了也没领
ETiV
4 天前
牛逼 66666
想到了在我 cc800 上写 basic 的时光…,以及当时班上有个女同学,有个 nc1020 ,她也借给我玩,我至今都喜欢那种按键的手感…
vivisidea
4 天前
牛逼,我的计算机启蒙就是文曲星上的 basic ,有简单的指令可以绘制图形,当时觉得发现了新大陆上课都在写代码
billzhuang
4 天前
硬件还能模拟硬件,有点牛逼
billzhuang
4 天前
能去模拟去好玩点的计算器不
Ti 的之类的,hp 的也行
wangyucn
4 天前
@levelworm 细节特别多,缺乏资料。 没有遇到诡异的 timing 。

PCB 图上面的 CPU(严格来说 spdc1024 是 SoC ,内含 CPU)、DSP 、nor flash 、nand flash 全都要模拟。

cpu 本身不难模拟,6502 cpu 模拟器网上有现成的。麻烦的是 SoC 上面各种特殊寄存器。0x00~0x3f 每一个都有不同的功能,比如切内存(实际上有好几段内存都可以切页,方式还不同)、timer0/1/A/B 、中断控制、驱动 lcd 、电压比较(测电池电量)、RTC 时钟、RTC 定时器、IO port(各种方向控制,锁存不锁存等细节)。0x00~0x3f 的寄存器几乎每一个单独拉出来细节都可以写一页纸。

资料极度缺乏,当年文曲星流行的时候基本上就没有。SoC spdc1024 、DSP spds104a 厂家 sun plus 根本就没公开公布过任何资料。 后来 GGV 网站被攻击才泄露出来一些,但是很多细节资料里并没有解释,要猜和慢慢 debug 。

nor 和 nand 擦除、修改等等操作,各有 10 来种指令序列,也要模拟。

我也不是从头开始写的,我是从曾半仙的 cc800(另一型号文曲星,不过硬件差别挺大的)模拟器 fork 的。DSP 部分是 fork 的 lee 的 pc1000emux 里的代码,然后 debug 和看资料改进。
zhujinliang
4 天前
太厉害了,是大佬
zhujinliang
4 天前
原来是 UDPspeeder 和 udp2raw 的作者,太强大了
wangyucn
4 天前
@zhujinliang 现在在的公司就是做网络的 怕有利益纠纷不太敢搞网络相关的开源 所以做做别的东西
Tink
4 天前
牛的大佬
icyalala
4 天前
太厉害了!
当年忘了哪个型号了,在上面能写 BASIC ,我还写了几个小游戏,好多关的打砖块,还有简单的类似英雄坛那样的小游戏。当年拿着纸写代码,也算是计算机入门了。。。可惜后来让母亲送人了,代码也找不回来了。。。
levelworm
4 天前
@wangyucn #11
多谢,这的确需要很强的耐心了,有些逆向的味道了。
cooper
4 天前
可惜我的 1020 ,没买一个月就被偷了。攒了很久的才买的,一想到这个想到就心痛不已。
xi4oh4o
4 天前
牛!以前主要玩 eebbk ,伏魔记,魔塔,侠客行
marsgh
4 天前
我以前用的就是 nc2600c

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1154855

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX