6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Fri Nov 22, 2024 3:56 pm

All times are UTC




Post new topic Reply to topic  [ 16 posts ]  Go to page 1, 2  Next
Author Message
 Post subject: Eris 2010 SBC
PostPosted: Sun Nov 07, 2021 11:25 am 
Offline

Joined: Sat Oct 16, 2021 9:08 pm
Posts: 3
Location: Hamburg, Germany
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!


Attachments:
IMG_20210302_112543_cut.jpg
IMG_20210302_112543_cut.jpg [ 532.92 KiB | Viewed 898 times ]
Top
 Profile  
Reply with quote  
 Post subject: Re: Eris 2010 SBC
PostPosted: Sun Nov 07, 2021 1:20 pm 
Offline
User avatar

Joined: Thu Dec 11, 2008 1:28 pm
Posts: 10985
Location: England
Welcome - very nice! I'll have a good read of your site.


Top
 Profile  
Reply with quote  
 Post subject: Re: Eris 2010 SBC
PostPosted: Sun Nov 07, 2021 3:35 pm 
Offline
User avatar

Joined: Thu May 28, 2009 9:46 pm
Posts: 8505
Location: Midwestern USA
Looks like a nice, neatly organized unit.

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!


Top
 Profile  
Reply with quote  
 Post subject: Re: Eris 2010 SBC
PostPosted: Sun Nov 07, 2021 4:48 pm 
Offline
User avatar

Joined: Sun Jun 30, 2013 10:26 pm
Posts: 1949
Location: Sacramento, CA, USA
BigDumbDinosaur wrote:
Which filesystem is that?

From a brief glance at the documentation provided we get a clue:
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.

Despite your claim, you're really a big smart dinosaur, so we shouldn't have to define "proprietary" for you. :D

_________________
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)


Top
 Profile  
Reply with quote  
 Post subject: Re: Eris 2010 SBC
PostPosted: Sun Nov 07, 2021 5:03 pm 
Offline
User avatar

Joined: Thu Dec 11, 2008 1:28 pm
Posts: 10985
Location: England
Sounds like a nice simple approach.


Top
 Profile  
Reply with quote  
 Post subject: Re: Eris 2010 SBC
PostPosted: Sun Nov 07, 2021 9:30 pm 
Offline
User avatar

Joined: Tue Mar 05, 2013 4:31 am
Posts: 1385
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!

_________________
Regards, KM
https://github.com/floobydust


Top
 Profile  
Reply with quote  
 Post subject: Re: Eris 2010 SBC
PostPosted: Sun Nov 07, 2021 10:26 pm 
Offline
User avatar

Joined: Thu May 28, 2009 9:46 pm
Posts: 8505
Location: Midwestern USA
barrym95838 wrote:
Quote:
SD cards can store up to 10 programs...

Despite your claim, you're really a big smart dinosaur, so we shouldn't have to define "proprietary" for you. :D

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!


Top
 Profile  
Reply with quote  
 Post subject: Re: Eris 2010 SBC
PostPosted: Mon Nov 08, 2021 8:05 am 
Offline

Joined: Sat Oct 16, 2021 9:08 pm
Posts: 3
Location: Hamburg, Germany
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.


Top
 Profile  
Reply with quote  
 Post subject: Re: Eris 2010 SBC
PostPosted: Mon Nov 08, 2021 8:50 am 
Offline
User avatar

Joined: Wed Feb 14, 2018 2:33 pm
Posts: 1488
Location: Scotland
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.


It's a good, solution - cheap and quick. Partitioning the SD card into "volumes" and looking into something like Acorn DFS or even Apple DOS 3.x might be the next step. Apple's DOS was relatively simple - good enough to store a number of files of varying length with a directory (catalogue/index) of files. Acorns early DFS was even simpler. I opted for using Apple ProDOS as a template for my own filing system on my Ruby projects but thinking of degenerating to MS DOS/FAT in the future just for ease of getting data on/off the SD card.

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/


Top
 Profile  
Reply with quote  
 Post subject: Re: Eris 2010 SBC
PostPosted: Mon Nov 08, 2021 8:52 am 
Offline
User avatar

Joined: Thu Dec 11, 2008 1:28 pm
Posts: 10985
Location: England
Homebrew is a good word too. Thanks for open-source licensing your project, geb!


Top
 Profile  
Reply with quote  
 Post subject: Re: Eris 2010 SBC
PostPosted: Mon Nov 08, 2021 9:13 am 
Offline
User avatar

Joined: Thu May 28, 2009 9:46 pm
Posts: 8505
Location: Midwestern USA
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. :D (Roll-Your-Own)

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!


Top
 Profile  
Reply with quote  
 Post subject: Re: Eris 2010 SBC
PostPosted: Mon Nov 08, 2021 9:20 am 
Offline
User avatar

Joined: Thu May 28, 2009 9:46 pm
Posts: 8505
Location: Midwestern USA
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!


Top
 Profile  
Reply with quote  
 Post subject: Re: Eris 2010 SBC
PostPosted: Mon Nov 08, 2021 4:10 pm 
Offline
User avatar

Joined: Sun Jun 30, 2013 10:26 pm
Posts: 1949
Location: Sacramento, CA, USA
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.

I have been reading, writing and speaking English for over 50 years, and you have just increased my vocabulary by one word this morning. Thank you! "RYO" is a nice choice in this context too, but I've already seen that one ...

_________________
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)


Top
 Profile  
Reply with quote  
 Post subject: Re: Eris 2010 SBC
PostPosted: Mon Nov 08, 2021 8:39 pm 
Offline

Joined: Sat Oct 16, 2021 9:08 pm
Posts: 3
Location: Hamburg, Germany
BigDumbDinosaur wrote:
What kind of directory structure does it use?

The SD card storage area for each program is fixed. The storage area for the first program starts at $00000001, the storage area for the second program starts at $00010001, ... In these storage areas, the first block contains the program header, which itself consists of two parts: The length of the executable to be loaded (number of blocks), followed by the program name as a null-terminated string. The following blocks contain the executable. All blocks not occupied by the executable can be used by the program for data storage. There is no separate directory structure. The launcher simply reads the headers and prints a list of the names.

PS: Thanks to everybody helping to clear up the confusion about the term "proprietary". Yes, it's a bespoken homebrew RYO filesystem. :wink:


Top
 Profile  
Reply with quote  
 Post subject: Re: Eris 2010 SBC
PostPosted: Tue Nov 09, 2021 1:22 am 
Offline
User avatar

Joined: Thu May 28, 2009 9:46 pm
Posts: 8505
Location: Midwestern USA
geb wrote:
BigDumbDinosaur wrote:
What kind of directory structure does it use?

The SD card storage area for each program is fixed. The storage area for the first program starts at $00000001, the storage area for the second program starts at $00010001, ... In these storage areas, the first block contains the program header, which itself consists of two parts: The length of the executable to be loaded (number of blocks), followed by the program name as a null-terminated string. The following blocks contain the executable. All blocks not occupied by the executable can be used by the program for data storage. There is no separate directory structure. The launcher simply reads the headers and prints a list of the names.

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!


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 16 posts ]  Go to page 1, 2  Next

All times are UTC


Who is online

Users browsing this forum: No registered users and 27 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to: