标签: retro-computing

SDCC和malloc() - 分配的内存比可用内存少得多

当我运行使用SDCC 3.1.0编译此代码,并在Amstrad CPC 464上运行它(在仿真下,在Wine上运行WinCPC 0.9.26):

void _test_malloc()
{
  long idx = 0;
  while (1)
    {
      if (malloc(5))
    {
      printf("%ld\r\n", ++idx);
    }
      else
    {
      printf("done");
      break;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

......它一直在92 malloc()s上点击.我做了460字节,这引出了几个问题:

  • malloc()在这个系统上做什么?我有点希望即使在64kB系统上也能提供更多的存储空间

  • 64kB系统和128kB系统的行为是一致的; 我是否必须执行某种魔术才能访问额外的内存,例如手动银行切换?

c malloc retro-computing sdcc

5
推荐指数
2
解决办法
743
查看次数

与 z80 的 SPI 硬件接口

我正在尝试使用 z80 制作一台复古计算机,理想情况下希望让它能够从 SD 卡启动。我 100% 决定使用 z80,并且不想使用具有内部 SPI 硬件接口的微控制器。我想了解计算机的硬件和软件方面,因此 arduino 和微控制器不在考虑之列,因为硬件方面在您购买之前就已完成。无论如何,我的主要问题是是否可以将移位寄存器、一些解码逻辑和软件结​​合起来通过 SPI 模式从 SD 卡读取数据?我在互联网上搜索了几个小时并阅读了几篇文章,但似乎找不到教程。我了解 SPI 协议,但是,缺乏有关硬件方面的信息,因为微控制器往往内置所有硬件。我计划将 SD 卡的 SOMI 连接到移位寄存器 SIMO 的串行输入引脚将SD卡的串行输出引脚连接到移位寄存器的串行输出引脚,然后将一些数据引脚连接到一些触发器,中间有一些解码逻辑,这样如果我输出到特定端口,它将切换触发器。触发器将充当 SD 卡的时钟和芯片使能线。我还将 z80 的一个引脚连接到移位寄存器的锁存器引脚(同样在中间有解码逻辑),这样如果我输出到特定端口,它将锁存移位寄存器的数据。我不关心速度/效率,只要我能准确地从 SD 卡读取数据即可。另外,我是否可以将移位寄存器时钟输入连接到与 SD 卡连接的同一时钟?任何有关如何实现这一点的建议将不胜感激,谢谢!

z80 spi sd-card retro-computing shift-register

5
推荐指数
1
解决办法
2616
查看次数

6502中有哪些使用控制流的方法?

我试图了解6502组装中的控制流程。

说我有以下代码:

    ControlFlow:
      lda mem
      cmp #1
      bne .sub_one

      cmp #2
      bne .sub_two

      .sub_one:
        ; sub routine one goes here
        jmp .done ; <-------------- without this jmp, .sub_two will execute

      .sub_two:
       ; sub routine two goes here

      .done:

      rts
Run Code Online (Sandbox Code Playgroud)

就个人而言,我很喜欢switch语句或其他控制流结构。上面的JMP也与我有关。似乎有一种更好的方法来处理多种情况,而无需使用此类意大利面条式代码。

assembly 6502 retro-computing

4
推荐指数
1
解决办法
2186
查看次数

Z80处理器可以运行Gameboy游戏吗?

由于Gameboy的处理器LR35902是Z80和Intel 8080的混合体,因此请记住,Z80和Intel 8080的设计基本上都是交叉兼容的,拥有Z80处理器的任何产品都可以运行是指LR35902?我想知道不是因为我希望使用TI84在自习室玩口袋妖怪。

编辑:我知道我将不得不重新编程控件,可能还需要重新编程游戏访问RAM的方式,但是我宁愿这样做,也不愿移植整个游戏。

z80 intel retro-computing gameboy intel-8080

2
推荐指数
1
解决办法
729
查看次数

“自修改链接”在飞马编程中是如何工作的?

我一直在查看 1950 年代“Pegasus”计算机的模拟,并遇到了“自我修改链接”一词。这是如何运作的?

assembly return calling-convention retro-computing

2
推荐指数
1
解决办法
134
查看次数

发送字符串到串行错误,6809 程序集,初学者

我已经构建了一个简单的单板计算机,并正在尝试学习 6809 汇编语言。我已经运行了一些简单的东西,例如通过 6850 ACIA 进行 Echo。我正在尝试打印一个字符串,但被卡住了。

该字符串位于 ROM 中并以空零结尾。我加载 X 寄存器以指向字符串的开头。后来我将X指向的字符加载到A寄存器中,并且X递增。然后在将字符输出到 ACIA 之前测试空零。我已将一个简单的逻辑分析仪连接到数据总线,并且知道没有任何内容输出到 ACIA,因为它看到零而不是第一个字符,并认为字符串已完成。我在代码中看不到错误,它可能与硬件相关,但需要有经验的眼睛来检查它,以防我犯初学者错误。

这是装配图:


*******************************EQUATES****************************************
    ***ACIA register definitions****
ACIA_control EQU $A000 ;write only
ACIA_status EQU $A000 ;read only
ACIA_data EQU $A001 ;read/write

********************************STRING CONSTANT******************************
    ORG $C000 ; ROM starts here

    ***store string to send out on serial***
    *Pseudo op FCN stores characters in sequential bytes,
    *and automatically adds null zero.
   

start_of_string
    FCN "The quick brown fox jumps over the lazy dog"

**********************************SETUP****************************************
setup

    ***reset_ACIA***
    LDA #%00000011
    STA ACIA_control …
Run Code Online (Sandbox Code Playgroud)

string assembly serial-port retro-computing

1
推荐指数
1
解决办法
112
查看次数

MS Access DOS主题?

我刚刚将旧的MS-DOS Paradox数据库转换为MS Access 2013.最终用户不喜欢新的Access外观,所以我的老板要求我让它看起来尽可能多地使用旧的DOS应用程序.

有没有办法做到这一点...旧字体配色方案等?

ms-access retro-computing

0
推荐指数
1
解决办法
105
查看次数