[Coco] Feralcore: An Internet Protocol Based on the 6809

Adam Young ay235 at yahoo.com
Fri Jun 25 21:43:44 EDT 2010


All,

The source code zip file is password encrypted. Existing members
of this community are welcome to it, I'll e-mail it out upon
request.

A feralcore node can send packets to a SIP server like there
is no tomorrow. All it takes is a program that sends itself
all around the feralcore network all the time. We need to
safely assess network bandwidth issues before open release.

regards,

Adam


--- On Fri, 6/25/10, Brett Gordon <beretta42 at gmail.com> wrote:


> From: Brett Gordon <beretta42 at gmail.com>

> Subject: Re: [Coco] Feralcore: An Internet Protocol Based on the 6809

> To: "CoCoList for Color Computer Enthusiasts" <coco at maltedmedia.com>

> Date: Friday, June 25, 2010, 10:07 AM

> Same thing happened here.  I'm

> running linux, and using mplayer, which

> rarely cannot open/play a AV file....

>

> On Fri, Jun 25, 2010 at 12:38 PM, Wayne Campbell <asa.rand at gmail.com>

> wrote:

>

> > Adam,

> >

> > I downloaded the MPEG-4 version of the video.

> Quicktime Player opened it,

> > but only in audio mode (no video screen). WMP could

> not play the video. Real

> > Player stated it needs a MPEG-2 decoder installed to

> play the video.

> >

> > I downloaded the Microsoft ASF version. WMP plays it

> without a problem.

> >

> > I downloaded the Feralcore.zip file. Upon trying to

> extract the archive, I

> > am asked for a password. I have no password to

> provide, and WinZip won't

> > extract the files, or even show me what's in the

> archive.

> >

> > Is there something I need to know?

> >

> > I am running Windows XP Professional (all service

> packs and updates

> > installed) on a HP/Compaq nx9020 notebook (Intel

> Celeron M 1.5 GHz), 2 GB

> > RAM, 80 GB HD (28% free).

> >

> > Wayne

> >

> > ----- Original Message ----- From: "Adam Young" <ay235 at yahoo.com>

> > To: <coco at maltedmedia.com>

> > Sent: Thursday, June 24, 2010 6:19 PM

> > Subject: [Coco] Feralcore: An Internet Protocol Based

> on the 6809

> >

> >

> >

> >  All,

> >>

> >> Based on the responses of Brett, Aaron, Sean, and

> >> Andrew regarding Darwin, Corewar, and Network

> Tierra,

> >> it seems like there might be some interest in

> >> Feralcore (thanks for your feedback guys). Moti

> and I

> >> (along with other contributors) are actively

> researching

> >> Feralcore and welcome experimentation and

> feedback. It

> >> is written in C++ and is POSIX compatible for the

> most

> >> part. Below is a blurb on what it is.

> >>

> >> A Feralcore network is a network consisting of n

> nodes.

> >> Each node in the network has a unique personal

> identity

> >> (R. Pandya. Emerging mobile and personal

> communication systems.

> >> IEEE Communications Magazine, vol. 33, pages

> 44-52,

> >> June 1995). Every node can send a message to every

> other

> >> node. So, the network forms the complete graph on

> n vertices.

> >>

> >> Feralcore was inspired in part by the computer

> game Darwin

> >> (Aleph-Null. Computer Recreations. Software:

> Practice and

> >> Experience, vol. 2, pages 93-96, 1972). Core war

> was also

> >> inspired by Darwin. Each player submits a set of

> programs,

> >> called a species, to the game. An umpire program

> >> oversees the execution of the programs in memory.

> Programs

> >> can clobber one another since they run in the same

> address

> >> space. The last species standing wins. We adopt

> the term

> >> feralcore kernel to describe the program that

> >> oversees program execution.

> >>

> >> In feralcore each node has 256 memory cores.

> >> Each memory core consists of 65536 bytes. The

> kernel can

> >> run up to 256 processes at once spread out across

> the 256

> >> cores. Each process has a set of private registers

> that

> >> includes the program counter. Each process also

> has an

> >> associated integer corresponding to which core the

> process

> >> is in. The program counter points to the next

> instruction

> >> to be executed in this core. The privacy of the

> registers

> >> is not ensured, since one process can indirectly

> read

> >> or write the registers of another.

> >>

> >> At any given time, m processes are running in a

> node.

> >> The kernel implements a time sharing strategy to

> >> execute them. They are not executed in parallel

> (at least

> >> when viewed at the C++ source code level). For the

> purposes

> >> of illustration, suppose the processes are labeled

> from

> >> 1 to m. Let c be an m-sided coin having sides

> labeled from

> >> 1 to m. The kernel flips c to get a result r. The

> kernel lets

> >> process r execute a single instruction. The kernel

> flips

> >> c to get a result r. The kernel lets process r

> execute

> >> a single instruction, and so on. If one process

> dies

> >> then a coin having m - 1 sides is used, etc.

> >>

> >> This randomized strategy is clearly fair,

> especially when

> >> you consider the issue of which process gets to

> execute

> >> first. This design was chosen over a

> deterministic

> >> round-robin scheduler since it simplifies the

> >> implementation of break-points in the feralcore

> >> debugger.

> >>

> >> The kernel implements a virtual machine based on

> the

> >> feralcore instruction set. This instruction set

> is

> >> similar to the Motorola 6809 instruction set.

> >> So, processes execute 6809 instructions.

> >> However, 6809 instructions relating to hardware

> interrupts

> >> are not part of the feralcore instruction set.

> Also,

> >> an instruction using opcode 0x02 is included in

> >> the feralcore instruction set. The opcode 0x02 is

> >> not a valid instruction for the 6809. The 0x02

> >> instruction implements the feralcore API call.

> >> It is 0x02 followed by a 16-bit API vector.

> >>

> >> The API calls supplement the 6809 instructions by

> >> providing some very powerful functionality. There

> >> is an API call that lets a process spawn another

> >> feralcore process. There is an API call that

> >> lets a feralcore process move itself to another

> >> core within the same node. There is also an API

> >> call that lets a process move itself to another

> >> feralcore node in the network instantly.

> >>

> >> The kernel terminates a process when that process

> >> executes an invalid instruction. Executing an

> >> invalid instruction is the normal way for a

> process

> >> to terminate itself. Process A can clobber process

> B

> >> by writing an invalid instruction at the memory

> >> location pointed to by the program counter in

> >> process B.

> >>

> >> There are other situations that can cause a

> process

> >> to be terminated. When the 256th process is

> created,

> >> a random process is terminated. A node that is

> >> spammed with incoming feralcore programs may drop

> >> some incoming programs.

> >>

> >> Feralcore is an experiment. The documentation is

> >> currently available at:

> >>

> >> http://www.feralcore.com/download/tfcdocuments/feralcore.pdf

> >>

> >> A video of the 6809 program slowhopper is

> available

> >> at: www.feralcore.com

> >>

> >> slowhopper hops randomly around the feralcore

> network.

> >>

> >> Please let us know if you are interested in

> learning

> >> more or experimenting with it. It is not ready

> for

> >> general distribution due to unresolved bandwidth

> issues.

> >>

> >> I view feralcore in many different ways. The CoCo

> nut

> >> in me likes it since it is a new way to bring the

> 6809

> >> to life. I am wondering if any of you will feel

> the

> >> same way.

> >>

> >> regards,

> >>

> >> Adam

> >>

> >>

> >>

> >>

> >>

> >> --

> >> Coco mailing list

> >> Coco at maltedmedia.com

> >> http://five.pairlist.net/mailman/listinfo/coco

> >>

> >

> >

> > --

> > Coco mailing list

> > Coco at maltedmedia.com

> > http://five.pairlist.net/mailman/listinfo/coco

> >

>

>

>

> --

> Brett M. Gordon,

> beretta42 at gmail.com

>

> --

> Coco mailing list

> Coco at maltedmedia.com

> http://five.pairlist.net/mailman/listinfo/coco

>







More information about the Coco mailing list