Eris 2010 SBC
Eris 2010 SBC
Spending way too much time at home during the Covid 19 pandemic, I built a little SBC based on the 65C02 CPU running at 4 MHz with 8 KB ROM and 32 KB RAM. Once I got the system running on a breadboard, I created a PCB and a case for it. (Well, the case is just two layer of acrylic sheets and four spacers.)
Besides the required components (CPU, RAM, ROM), it contains an ACAI 6551 for serial communication and a 6522 VIA for GPIO. The 6551 connects to a USB2Serial converter, and the 6522 connects to an SD card reader. Glue logic is provided by an ATF16V8 EEPLD.
Software can be uploaded via the serial interface or read from an SD card. The SD cards are written in a very primitive, proprietary file system. Besides ports of Tali Forth 2 and Tiny-BASIC, I also wrote configuration files and I/O libraries for CC65 such that the system can be programmed in C.
Reset logic is implemented with an NE555. The NMI line connects to a button. Triggering a NMI either dumps memory or jumps into Wozmon.
The main communication interface is via the serial line. Additionally, a user port allows connecting to the VIA. Buses and other internal lines are accessible via an expansion port.
The whole system was designed and programmed using free software. For the PCB I used KiCad and FreeRouting (part of LayoutEditor). I programmed the ATF16V8 with GALasm.
A detailed description of the system, including pictures, a video, all hardware design documents and ported software, is available here: https://frombelow.net/eris2010/
I hope you like it!
Besides the required components (CPU, RAM, ROM), it contains an ACAI 6551 for serial communication and a 6522 VIA for GPIO. The 6551 connects to a USB2Serial converter, and the 6522 connects to an SD card reader. Glue logic is provided by an ATF16V8 EEPLD.
Software can be uploaded via the serial interface or read from an SD card. The SD cards are written in a very primitive, proprietary file system. Besides ports of Tali Forth 2 and Tiny-BASIC, I also wrote configuration files and I/O libraries for CC65 such that the system can be programmed in C.
Reset logic is implemented with an NE555. The NMI line connects to a button. Triggering a NMI either dumps memory or jumps into Wozmon.
The main communication interface is via the serial line. Additionally, a user port allows connecting to the VIA. Buses and other internal lines are accessible via an expansion port.
The whole system was designed and programmed using free software. For the PCB I used KiCad and FreeRouting (part of LayoutEditor). I programmed the ATF16V8 with GALasm.
A detailed description of the system, including pictures, a video, all hardware design documents and ported software, is available here: https://frombelow.net/eris2010/
I hope you like it!
Re: Eris 2010 SBC
Welcome - very nice! I'll have a good read of your site.
- BigDumbDinosaur
- Posts: 9426
- Joined: 28 May 2009
- Location: Midwestern USA (JB Pritzker’s dystopia)
- Contact:
Re: Eris 2010 SBC
Looks like a nice, neatly organized unit.
Which filesystem is that?
geb wrote:
The SD cards are written in a very primitive, proprietary file system.
Which filesystem is that?
x86? We ain't got no x86. We don't NEED no stinking x86!
- barrym95838
- Posts: 2056
- Joined: 30 Jun 2013
- Location: Sacramento, CA, USA
Re: Eris 2010 SBC
BigDumbDinosaur wrote:
Which filesystem is that?
Quote:
SD cards can store up to 10 programs. The file system format is as follows:
Block $00000000 is loaded on initialization. The first two bytes should be $E215. This indicates the file system type. The third byte should be $00. This is the version of the file system. The fourth byte is the number of the program to start automatically, or $ff. In case of $ff, a menu of the programs on the card is presented for the user to choose.
The storage space for the first program starts at $00000001. The storage space for the second program starts at $00010001, for the third program at $00020001, … Thus, each program has a total of $ffff blocks of 512 bytes each available. The first block of each program is the program header. It contains the number of blocks to be loaded, and the app name, a null-terminated string. The actual program code starts with the next block. The program is loaded to address $0200 and executed.
On the PC, use tools/kfs.py to write the SD card.
Block $00000000 is loaded on initialization. The first two bytes should be $E215. This indicates the file system type. The third byte should be $00. This is the version of the file system. The fourth byte is the number of the program to start automatically, or $ff. In case of $ff, a menu of the programs on the card is presented for the user to choose.
The storage space for the first program starts at $00000001. The storage space for the second program starts at $00010001, for the third program at $00020001, … Thus, each program has a total of $ffff blocks of 512 bytes each available. The first block of each program is the program header. It contains the number of blocks to be loaded, and the app name, a null-terminated string. The actual program code starts with the next block. The program is loaded to address $0200 and executed.
On the PC, use tools/kfs.py to write the SD card.
Got a kilobyte lying fallow in your 65xx's memory map? Sprinkle some VTL02C on it and see how it grows on you!
Mike B. (about me) (learning how to github)
Mike B. (about me) (learning how to github)
Re: Eris 2010 SBC
Sounds like a nice simple approach.
- floobydust
- Posts: 1394
- Joined: 05 Mar 2013
Re: Eris 2010 SBC
It is a simple approach, albeit with limitations as a result, but I'm thinking it's not much coding to implement.
Another option would be write a BIOS/SIM interface and use Richard Leary's DOS/65. This would yield a CP/M-like environment and likely be more useful. My current CMOS version (of DOS/65) is ROM based and only uses 6.5KB. Richard had sent me code earlier in the year that was being used with Daryl's SBC2.5 with a SD card interfaced to one of the 6522 ports.
In any case, a nice project... as I looked over some of the materials... thumbs up!
Another option would be write a BIOS/SIM interface and use Richard Leary's DOS/65. This would yield a CP/M-like environment and likely be more useful. My current CMOS version (of DOS/65) is ROM based and only uses 6.5KB. Richard had sent me code earlier in the year that was being used with Daryl's SBC2.5 with a SD card interfaced to one of the 6522 ports.
In any case, a nice project... as I looked over some of the materials... thumbs up!
Regards, KM
https://github.com/floobydust
https://github.com/floobydust
- BigDumbDinosaur
- Posts: 9426
- Joined: 28 May 2009
- Location: Midwestern USA (JB Pritzker’s dystopia)
- Contact:
Re: Eris 2010 SBC
barrym95838 wrote:
Quote:
SD cards can store up to 10 programs...
I read all that. It doesn't explain a whole lot about the filesystem, e.g., does it have hierarchical directories, what is the maximum file size that can be handled, what makes it “proprietary,” etc. Incidentally, when I see “proprietary” in the description of a homebrew computer project I have to wonder what it is that we are not seeing.
x86? We ain't got no x86. We don't NEED no stinking x86!
Re: Eris 2010 SBC
Thanks for the warm welcome.
There is actually not (much) more to the filesystem than quoted by barrym95838: It can store up to 254 applications, and it does not allow for subdirectories. Each application has a total of $ffff blocks of 512 bytes each at its disposal. The first blocks of these $ffff blocks contain the executable itself. Since the number of blocks occupied by the executable is stored as a byte, the maximal size of an executable is $ff * 512 bytes, which should be plenty for a 32K RAM machine.
Once the program is loaded, the ABI in the ROM just provides an interface to read and write blocks.
The filesystem is proprietary just in the sense that it is not based on an existing design; it is completely open and free.
It took quite some time to get the communication with the SD card right. A standard filesystem would be nice, obviously, but for now I am just happy that everything is working. Thanks to floobydust for the suggestion regarding DOS/65! I will look into that.
The filesystem is proprietary just in the sense that it is not based on an existing design; it is completely open and free.
It took quite some time to get the communication with the SD card right. A standard filesystem would be nice, obviously, but for now I am just happy that everything is working. Thanks to floobydust for the suggestion regarding DOS/65! I will look into that.
Re: Eris 2010 SBC
geb wrote:
Thanks for the warm welcome.
There is actually not (much) more to the filesystem than quoted by barrym95838: It can store up to 254 applications, and it does not allow for subdirectories. Each application has a total of $ffff blocks of 512 bytes each at its disposal. The first blocks of these $ffff blocks contain the executable itself. Since the number of blocks occupied by the executable is stored as a byte, the maximal size of an executable is $ff * 512 bytes, which should be plenty for a 32K RAM machine.
Once the program is loaded, the ABI in the ROM just provides an interface to read and write blocks.
The filesystem is proprietary just in the sense that it is not based on an existing design; it is completely open and free.
The filesystem is proprietary just in the sense that it is not based on an existing design; it is completely open and free.
My guess is that english isn't your first language and "proprietary" is simply something that's not worked well in translation. "Bespoke" may be better here.
Cheers,
-Gordon
--
Gordon Henderson.
See my Ruby 6502 and 65816 SBC projects here: https://projects.drogon.net/ruby/
Gordon Henderson.
See my Ruby 6502 and 65816 SBC projects here: https://projects.drogon.net/ruby/
Re: Eris 2010 SBC
Homebrew is a good word too. Thanks for open-source licensing your project, geb!
- BigDumbDinosaur
- Posts: 9426
- Joined: 28 May 2009
- Location: Midwestern USA (JB Pritzker’s dystopia)
- Contact:
Re: Eris 2010 SBC
geb wrote:
There is actually not (much) more to the filesystem than quoted by barrym95838...
What kind of directory structure does it use?
Quote:
The filesystem is proprietary just in the sense that it is not based on an existing design; it is completely open and free.
Ah-so. In other words, an RYO filesystem.
Quote:
It took quite some time to get the communication with the SD card right. A standard filesystem would be nice, obviously, but for now I am just happy that everything is working.
Working with mass storage communication can be quite the challenge. I've been writing a new SCSI driver for my POC V1.3 unit that can read/write anywhere in the 65C816's address space, and support both block and stream devices. It's not a simple thing to implement. Plus SCSI has a huge variety of features to add to the fun.
x86? We ain't got no x86. We don't NEED no stinking x86!
- BigDumbDinosaur
- Posts: 9426
- Joined: 28 May 2009
- Location: Midwestern USA (JB Pritzker’s dystopia)
- Contact:
Re: Eris 2010 SBC
BigEd wrote:
Homebrew is a good word too.
Plus “homebrew” is traditional with roll-your-own computers.
x86? We ain't got no x86. We don't NEED no stinking x86!
- barrym95838
- Posts: 2056
- Joined: 30 Jun 2013
- Location: Sacramento, CA, USA
Re: Eris 2010 SBC
drogon wrote:
My guess is that english isn't your first language and "proprietary" is simply something that's not worked well in translation. "Bespoke" may be better here.
Got a kilobyte lying fallow in your 65xx's memory map? Sprinkle some VTL02C on it and see how it grows on you!
Mike B. (about me) (learning how to github)
Mike B. (about me) (learning how to github)
Re: Eris 2010 SBC
BigDumbDinosaur wrote:
What kind of directory structure does it use?
PS: Thanks to everybody helping to clear up the confusion about the term "proprietary". Yes, it's a bespoken homebrew RYO filesystem.
- BigDumbDinosaur
- Posts: 9426
- Joined: 28 May 2009
- Location: Midwestern USA (JB Pritzker’s dystopia)
- Contact:
Re: Eris 2010 SBC
geb wrote:
BigDumbDinosaur wrote:
What kind of directory structure does it use?
So, it would appear to be somewhat of a “linear” directory a la the UNIX S51K filesystem, but not stored block-random.
x86? We ain't got no x86. We don't NEED no stinking x86!