j***@public.gmane.org
2014-02-14 23:45:35 UTC
Hi all,
Since I'm waiting on the chance to build my own SBC v2, I've been playing
around with the simh emulator. I'm interested in some bare metal / OS
programming in C with sdcc.
I originally intended to write my own ROM and boot loader, but I have since
discovered RomWBW. It very elegantly handles all the disk and terminal IO
for the N8VEM Z80 machines and it seems silly not to take advantage of it,
especially since that way compatibility with CP/M is retained.
I've read most of the documentation on the Wiki, including the RomWBW
Architecture manual, and I've also skimmed the source code
(RomWBW/Source/loader.asm in particular), but Z80 asm is not my strongest
point. I have a few questions:
How does booting from a disk work?
How are bootable disks / disk images laid out? I got far enough to
understand that it checks for a checksum (0xa55a) but beyond that I'm lost.
I saw a reference to a writeimg utility by Douglas Goodall that creates
bootable images (?) but I can't find it anywhere.
Is the boot process process specific to loading CP/M or can RomWBW load and
run any binary/OS? Is there a size limit to the binary it will load?
What I'm hoping to do is write a small script or program to create a
bootable disk image with my binary and then be able to pop it into the SBC
(either emulated or eventually real with an SD card) and have it boot that
and run my program. Is this plausible with RomWBW?
I apologize if these questions have already been answered somewhere;
there's so much good work and development that I bet it'll take me a long
time to get up to speed!
Thanks in advance,
Joel
Since I'm waiting on the chance to build my own SBC v2, I've been playing
around with the simh emulator. I'm interested in some bare metal / OS
programming in C with sdcc.
I originally intended to write my own ROM and boot loader, but I have since
discovered RomWBW. It very elegantly handles all the disk and terminal IO
for the N8VEM Z80 machines and it seems silly not to take advantage of it,
especially since that way compatibility with CP/M is retained.
I've read most of the documentation on the Wiki, including the RomWBW
Architecture manual, and I've also skimmed the source code
(RomWBW/Source/loader.asm in particular), but Z80 asm is not my strongest
point. I have a few questions:
How does booting from a disk work?
How are bootable disks / disk images laid out? I got far enough to
understand that it checks for a checksum (0xa55a) but beyond that I'm lost.
I saw a reference to a writeimg utility by Douglas Goodall that creates
bootable images (?) but I can't find it anywhere.
Is the boot process process specific to loading CP/M or can RomWBW load and
run any binary/OS? Is there a size limit to the binary it will load?
What I'm hoping to do is write a small script or program to create a
bootable disk image with my binary and then be able to pop it into the SBC
(either emulated or eventually real with an SD card) and have it boot that
and run my program. Is this plausible with RomWBW?
I apologize if these questions have already been answered somewhere;
there's so much good work and development that I bet it'll take me a long
time to get up to speed!
Thanks in advance,
Joel
--
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To post to this group, send email to n8vem-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/groups/opt_out.
You received this message because you are subscribed to the Google Groups "N8VEM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to n8vem+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To post to this group, send email to n8vem-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
Visit this group at http://groups.google.com/group/n8vem.
For more options, visit https://groups.google.com/groups/opt_out.