L-Star Software Defined Computer as an Apple I.
Martin_H
Posts: 4,051
in Propeller 1
Comments
L-Star is a single board computer with a 6502 that's controlled by a Propeller. It's not a replica of any specific computer, and it's also not a full emulation because it has a real 6502. It's something in between; I call it a "Software Defined Computer".
The Propeller is connected to the bus and the clock of the 6502. The Propeller monitors the address bus and whenever necessary, it either takes the data from the data bus and does something with it, or it puts data on the data bus when the 6502 asks for it. For example, one of the software modules runs a cog that emulate ROM and RAM by checking the addresses on the address bus and using RDBYTE and WRBYTE instructions to basically give the 6502 access to the hub.
The address bus, data bus and extra lines take up a lot of Propeller's pins so I only had 3 pins left: P25, P26 and P27. The Apple 1 emulator uses P25 for the 1-pin TV output driver to generate monochrome video, and P26 and P27 are in use for the PS/2 keyboard. So just the 6502 and the Propeller circuit are enough to emulate an Apple 1, or an OSI Challenger C1P, also known as Compukit UK101.
32K of hub memory is not going to be enough for more complicated systems, so the kit also has an SRAM chip, which can be jumpered to P27 instead of the keyboard clock. And there is a Spin/PASM module that can control the SRAM chip by monitoring the address bus and matching the addresses against a table in the cog. When the address matches, it pulls the pin low to enable the RAM. Of course if P27 is in use to control the RAM, the project will have to use the 1-pin keyboard driver.
For more information, check out the project blog at https://hackaday.io/project/3620 .
If you would like to buy a kit, the blog page has a link to order it on Tindie. (It's sold out at the time of this writing, but I expect to get parts for more kits by tomorrow, Friday December 9, 2016).
Thanks!
===Jac
That is wonderful.
This idea of using a Prop as a RAM and I/O is something I wanted to do with 8080 or Z80. I kind of imagined using two or three Props so as to provide a full 64K RAM, a green screen text terminal and "floppy disks" on and SD card. Nothing happened with that idea as I got carried away with emulating the 8080/Z80 on the Prop itself.
Well done!
Thanks Heater!
I think I remember you asking about the possibility of making something similar with the Z80 before. In principle it's possible but the Z80 has a slightly more complicated bus because it has separate addresses for I/O and memory, so you may not have any pins left over for I/O, unless you add more hardware to help the Propeller with address decoding.
The clock frequency that was used for the 6502 in many early computers was 1MHz. I'm not as familiar with the Z80 as with the 6502, but I think many early Z80 computers ran the Z80 at 4MHz to get about the same amount of work done. That may also be a problem, because with a Z80 instead of a 6502, the Propeller would have to process each clock cycle 4 times as fast. When running at 80MHz, the budget per 1MHz 6502 clock cycle is 20 instructions (including the JMP to go back to the beginning of the loop). For a 4MHz Z80 clock, there would only be 5 instructions; it's even less if one of those instructions is a hub instruction. Sure, you could overclock the Propeller to e.g. 100MHz but that may still not give you enough time to do anything.
Nevertheless, with some cleverly designed external hardware, it may be possible to work around some of these problems. I ordered an RC2014 kit (http://rc2014.co.uk) and I have some things in my head that I would like to try with it.
===Jac
that is welcome. I have looked at the RC2014 for some time, but I'm not a BASIC person - it would have to be tweaked in some way. For CP/M 2.2 or CP/M Plus, with at least 64K, for example. Or anything that isn't just a 32K RAM system with BASIC in ROM.
Also I would not be adverse to running it a bit slower if need be. I recall there is a HOLD pin (or whatever it was called) to stretch out the memory cycles.
Not so keen on the extra external logic, makes things messy to my mind.
Anyway, this is never going to happen, too many other things to do.
Hey but, a P2 would make a great RAM and peripheral chip for the 68000 chips I have here ! ...
Sorry, but I couldn't let the 6502 forum have all the fun!
Building retro-computers is a lot of fun and this is a good way to ease into the hobby as it is nearly goof proof. It squeezes a lot of functionality out of three chips making it easier to use than something like the Fignition or Micromite which have a similar level of complexity. Because it emulates an Apple 1 there's software you can find online, but it is also a good introduction to assembly programming because of the onboard Krusader editor/assembler for the 6502.
That rc2014 kit looks like a hoot and a cheap way to have a backplane retro-computer. I have Retrobrew boards (formerly N8VEM) that I have almost populated. But they're much more complicated and less approachable to someone who isn't an enthusiast.
It's okay. I was going to post here too but I was going to wait until I had the kits in stock again. Which happened today :-)
https://www.tindie.com/products/jac_goudsmit/l-star-plus-software-defined-6502-computer/
===Jac
http://forum.6502.org/viewtopic.php?f=9&t=4335
tl;dr:
source https://github.com/Martin-H1/TaliForth
Woz Mon: https://github.com/Martin-H1/TaliForth/blob/master/tali-l-star.txt
I don't know, but it wouldn't surprise me to learn it was FIG-Forth which was ported to nearly every eight bit machine around that time. I ported FIG-Forth to my first 6502 retro-computer over a year ago. It is extremely compact and portable with a small kernel of machine dependent code, while the remainder consists of precompiled as dictionary entries.
But the syntax is a little squirrelly compared to modern ANS Forth syntax and I found it hard to use. So I dropped it for more modern dialects that I can use more easily.
Cool! Thanks for posting!
See that thread for my answer :-)
===Jac
Sure! You just need to change the jumpers. The Apple1SRAM project uses one pin to activate ~RAMEN (RAM Enable Not). It maps the RAM areas of the 6502 address bus to the RAM chip but still uses the Propeller for ROM.
Because of the pin needed for controlling the SRAM chip, it uses the 1-pin keyboard driver. Unfortunately that means that if you use a PS/2 keyboard you have to hit the space bar (or was it the return key?) after you reset the Propeller.
===Jac