Spectrum-48针对一包香烟,斧头煮粥或STM32F103C8T6 +视频可以做什么(更新)

一切始于另一种戒烟的尝试。 唤醒了我内部的“蟾蜍”以寻求支持后,我对她说:“看,今天, 我的一包香烟的价格就像一台带屏幕的怀旧复古电脑,大约是10美元,而且从前,对于Sinclair-48K克隆机,我们花了全部月薪并且花了一个多月的时间进行组装和调试。” 她:“你们都是山羊和撒谎者,证明这一点!” 我必须工作。

因此,原始资料:

  1. 蓝色药丸:STM32F103C8T6-20K内存64K闪存$ 2.06
  2. Arduino的显示:ILI9341 2.8“ 320x240带触摸屏和$ 7.72卡槽
  3. 高音喇叭$ 0.18
  4. 几个按钮(7个)$ 0.2
  5. 一些电线$ 0.1
  6. 64兆闪存卡(来自旧相机),不包括在计算中
  7. ST-LINK编程器不消耗,也不包含在计算中,但是,它也要花费几美元。
  8. 一包香烟-每天消耗得太快-$ 8.37



在中国制造的奇妙的“蓝色药丸”对每个人都有好处,除了RAM量只有20K(尽管常量也很少,只有64K)。 Spectrum-48K需要48K(巧合?我不认为)的RAM和16K的常数。 我们将从屏幕上获取RAM,因为spessi的分辨率为256x192 +边框,而ILI9341的分辨率为320x240,每点18位。 也就是说,您可以使用屏幕的中间位置进行渲染,其他所有内容都可以用于实际的“交换区域”(交换区域?)。 此外,处理器仿真器Z80存储器最常使用的(LRU算法)高速缓存在RAM STM32中,其余的存储在屏幕存储器ILI9341中,且访问速度较慢(SPI)。

大约25年前,我在80286平台上编写了Z80仿真器,它们与Z80的关系并不遥远,它们都来自8080,这使我可以使用出色的Borland TACM和C ++获得非常快速的代码,但是随后就不需要如此详细的仿真了(该代码是为双方编写的:带有字典的笔记本及其在Windows 3.1下用于调试的仿真器)。

懒得从头开始写东西太懒了,所以我问Google:“告诉我Google,今天Z80模拟的效果如何?” Google给了我成千上万个合适的项目: 基于STM32F4的Gorien的作者,也是最先进且经过调试的Fuse仿真器 。 在Gorien的代码的第一次汇编中,结果证明大约有100K的可执行代码,显然在该主题上更多可用。 我不得不费力地把大象塞进冰箱 。 例如,对局部变量的调用被编译成比全局代码更紧凑的代码,寄存器IX和IY的所有扩展命令都是相同的,对于变量的替换是准确的,字符生成器表可以用到Spectrum字符生成器的链接替换,等等。 它还需要将处理器超频至112 MHz( 这要归功于xedas )。

结果:一个工作正常(我在每个人都在工作的情况下尝试了大约12个游戏)的ZX Spectrum-48仿真器,其屏幕具有一包香烟的大小(它已经塞进了口袋,但电线伸出了),读取了转储(图标+内存图像+寄存器〜50K)闪存卡格式FAT32(更多千字节代码)且总消耗量约为50mA(即,从18650电池的2500mAh容量中大约需要50小时!),开启时间不到一秒钟,总成本不到10美元。

缺点:

  1. 仍然比原始速度慢一点。
  2. 屏幕以彩色显示已下载程序的代码。
  3. 您需要操纵杆或更柔和的按钮。 和费用。 还有一个盒子。 和直臂。 还有...


在大概的计划中:减少消耗(从板上撕下LED),增加屏幕亮度的调制,关闭屏幕时的时钟模式,用操纵杆焊接普通键盘,调整延迟以获取正确的声音和从录音机读取声音(以及什么?),PC文件格式转换器转储,压缩更多代码以承载用户界面。 尝试使用2.4英寸屏幕降低平台成本。 是的,很好,很小,但是只有5个……很明显,这里的兴趣纯粹是体育活动,尽管如果您考虑到孙辈将电子产品分解成不可用的零件的速度,价格仍然很重要。

实际上是目前在Github上的工作代码

还有更多给粉丝的图片,R型游戏,主屏幕边缘周围的交换区域:



另一面:



Atic-Atac游戏:



PS:我没有达到一包香烟的价格,所以我的“蟾蜍”必须忍受我的坏习惯,但是我已经55岁了,所以我已经用尽了大部分……继续。
视频,无声音,对不起:

Source: https://habr.com/ru/post/zh-CN412325/


All Articles