当我运行使用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系统的行为是一致的; 我是否必须执行某种魔术才能访问额外的内存,例如手动银行切换?
我正在尝试使用 z80 制作一台复古计算机,理想情况下希望让它能够从 SD 卡启动。我 100% 决定使用 z80,并且不想使用具有内部 SPI 硬件接口的微控制器。我想了解计算机的硬件和软件方面,因此 arduino 和微控制器不在考虑之列,因为硬件方面在您购买之前就已完成。无论如何,我的主要问题是是否可以将移位寄存器、一些解码逻辑和软件结合起来通过 SPI 模式从 SD 卡读取数据?我在互联网上搜索了几个小时并阅读了几篇文章,但似乎找不到教程。我了解 SPI 协议,但是,缺乏有关硬件方面的信息,因为微控制器往往内置所有硬件。我计划将 SD 卡的 SOMI 连接到移位寄存器 SIMO 的串行输入引脚将SD卡的串行输出引脚连接到移位寄存器的串行输出引脚,然后将一些数据引脚连接到一些触发器,中间有一些解码逻辑,这样如果我输出到特定端口,它将切换触发器。触发器将充当 SD 卡的时钟和芯片使能线。我还将 z80 的一个引脚连接到移位寄存器的锁存器引脚(同样在中间有解码逻辑),这样如果我输出到特定端口,它将锁存移位寄存器的数据。我不关心速度/效率,只要我能准确地从 SD 卡读取数据即可。另外,我是否可以将移位寄存器时钟输入连接到与 SD 卡连接的同一时钟?任何有关如何实现这一点的建议将不胜感激,谢谢!
我试图了解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也与我有关。似乎有一种更好的方法来处理多种情况,而无需使用此类意大利面条式代码。
由于Gameboy的处理器LR35902是Z80和Intel 8080的混合体,因此请记住,Z80和Intel 8080的设计基本上都是交叉兼容的,拥有Z80处理器的任何产品都可以运行是指LR35902?我想知道不是因为我希望使用TI84在自习室玩口袋妖怪。
编辑:我知道我将不得不重新编程控件,可能还需要重新编程游戏访问RAM的方式,但是我宁愿这样做,也不愿移植整个游戏。
我一直在查看 1950 年代“Pegasus”计算机的模拟,并遇到了“自我修改链接”一词。这是如何运作的?
我已经构建了一个简单的单板计算机,并正在尝试学习 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) 我刚刚将旧的MS-DOS Paradox数据库转换为MS Access 2013.最终用户不喜欢新的Access外观,所以我的老板要求我让它看起来尽可能多地使用旧的DOS应用程序.
有没有办法做到这一点...旧字体配色方案等?