L-Star Plus
David Betz
Posts: 14,516
in Propeller 1
I just finished building jac_goudsmit's cool L-Star Plus kit. It is a 6502 platform that uses a Propeller chip for I/O and memory. The assembly instructions are great and the kit quality is as well. It worked the first time and is running the Apple 1 emulation. I'll have to try the code that uses the SRAM next. Nice job, Jac!
Comments
I'm working on documentation, and The 8-bit Guy on YouTube is going to do a review of it soon.
Https://l-star.org
Https://hackaday.io/project/3620
I'm planning on emulating other computers like the PET-2001 and the Acorn Atom. Also I want to design an expansion board to emulate the KIM-1, SYM-1 and Elektor Junior. And I have some ideas about a version that runs faster and uses a 65C816 instead of a 65C02.
===Jac
Anyway...
@jac
One thing I struggle with using a Propeller with my 65C02 projects is that I can't seem to get above 1 MHz. My ambitious goal would be VGA with a 2-4 MHz 65C02.
So, I'm certainly curious how you would produce a faster design using a 65C816?
I've been thinking about (among other things) other designs where the 6502 could run faster. As you probably know, the WDC 65C02S can run at up to 14MHz, and the SRAM chip that I used in the design can also handle much faster frequencies than 1MHz.
The easiest solution I can think of is to use an external address decoder that generates a signal when addresses are within the range that the Propeller needs to handle. One cog would be dedicated to generating the 6502 clock, and it would generate a fast clock signal as long as the address bus is "uninteresting". Whenever the address is something that the Propeller needs to act upon, the clock cog would slow the clock down to 1MHz or less. As long as the Propeller is not accessed too much, this could result in a nice fast system.
And it's not difficult to imagine a system where the Propeller is not needed most of the time. Most of the time, the 65C02 needs to access memory, and though the current projects lean heavily on letting the Propeller emulate the memory, it's also not too hard to use the SRAM chip, even for ROM data. The Propeller can feed read-modify-write instructions (such as INC Absolute) to the 65C02, and fake the data that the 65C02 reads, and make it store the data into the SRAM. Then reset the 65C02 and prevent writing to it. Voila, ROM cache :-)
I had a glance at the '816 datasheet a while ago and I bought an '816 in DIP-40 package from Mouser too. I want to design a system based on L-Star that can run Fuzix some day. If I remember correctly, I concluded from the datasheet that it should be possible to plug a 65C816 into the current circuit board, and either use the Propeller or external hardware to decode the multiplexed address. Then the system can be booted in the same way as mentioned above, where it uses the SRAM chip as fast ROM cache as well as RAM (and the Propeller probably has enough time to control A16 of the SRAM chip from the multiplexed address, even when the clock runs faster than 1MHz).
You mentioned VGA; I assume you mean you want to use a Propeller-based VGA output in some way. Obviously this isn't possible with the L-Star Plus board, since there aren't enough pins available. I've been thinking of ways to make it possible to connect a second Propeller to the system without using almost all of its pins, and I ran into this thread, where Beau Schwabe describes a high-speed serial transport system. I think that can easily be modified into sort of a "pin extender" where the master Propeller sends the value of the 65C02 address bus, data bus and other pins to the slave Propeller via a 1-pin connection, at high speed. The slave Propeller receives this signal and decodes addresses, stores data in its hub, and sends data from its hub back to the master. A slave Propeller that implements a VGA text screen would certainly belong to the possibilities.
It might be a fun experiment by itself, by the way: a VGA display using a second Propeller that's connected to the master Propeller via a single wire. Or even more fun: use three cogs on the slave Prop, for 24 bit VGA output. No wait, not enough memory. Use three Propellers instead, one for red, one for green, one for blue. All controlled by a single wire with a protocol that could be similar to the TMS99xx chips that I know you've been playing with. 14 megabits may not be fast for a pixel bus, but with a bit of creative programming of the slave Propellers, you can probably generate some nice graphics demos. :-)
===Jac
I just found your l-star last month. This post seems to reference the l-star plus. What is the plus?
Also, I tried to buy one of these on tindie as I think it would be a nice project for me and my son to work on together, but you seem to be out. Any idea when it will be back in stock?
Thanks,
hinv
Fascinating idea. Using one propeller per primary color leaves 21 cogs for doing other things. That's a lot of processing power that could be used for some interesting projects.
The original "L-Star" was the concept of a 65C02 with a Propeller (on a breadboard or on a Parallax USB Protoboard), that could emulate the Apple 1 or OSI Challenger C1P.
The "Plus" is mostly for the added SRAM chip and expansion port, but also a little for the (almost) all-in-one design with the voltage converters, PS2 keyboard socket, RCA video socket and the jumper bed all on one PCB as a kit.
Sorry about that! I expect to get parts again by probably mid-October 2018. It's expensive to order parts for an entire batch of L-Star kits, and let's just say the stars are just a little bit out of alignment for the next few weeks.
===Jac
Also, of course the Propeller2 should be pretty good if they can get it into production. The P2 should make a pretty good computer mostly by itself with some memory chips.
In other news though, I made an L-Star on the add-on board of the Hackaday Supercon 2018 badge (and missed the deadline by a hair because I misinterpreted a schematic). It was featured in a Hackaday post today.
https://hackaday.com/2018/11/13/apple-1-emulator-is-a-perfect-fit-for-supercon-badge/
As for an L-Star with a 65C816, I may have already mentioned here or elsewhere that I think it's possible to do that. I'm thinking of making a version of L-Star with a 65C816, a megabyte of memory or so, and some modified software for the Propeller to allow the '816 to run at 14MHz when the Propeller doesn't to keep up. It should be possible to run Fuzix that way and do some neat stuff.
I'm interested in the Propeller 2 but I don't know yet if and how I'll use that in this project. It's going to be so powerful that it can probably emulate the 6502 at 1MHz or higher, and that just takes all the fun out of it :-)
===Jac
I don't know if you really want the 8-Bit Guy to review the L-Star. Sure, it would be some publicity but if you watch his earlier videos on these SBC's, you can tell he doesn't favor them very much. He goes as far as basically saying they aren't useful because you can't write Tetris on them in BASIC.
I have a theory about this....he's announced a few times on his blog (and a video, IIRC) about teaming up with some people and releasing his own SBC. When his latest game is finished, he mentioned starting on that. I think he's already started on it and has probably gotten a few other people on board.
Thing is, I actually somewhat agree with most of his specs for a SBC. But I just can't help but get the feeling that he's downplaying some other SBC's to better promote his.
He certainly has that right.
Of course, this is all theory (conspiracy??) on my part.
After the unboxing video in March 2018 I got something like 10 orders in two weeks. And I think it was only visible for less than a minute! So for that reason I would like him to review it. But if he decides not to review it, that's fine with me too at this point.
I know David wants to build his own 6502 computer; he mentioned it several times in various places. I think he allowed me to send him a kit so he could see if there were any inspiring ideas that he could use for it. I'm sure I could help but he hasn't asked, and I think he wants to do it himself anyway. That's okay.
At the time of this writing, I'm working on some other projects instead of L-Star. I'm getting little or no feedback on the L-Star project and sales are dwindling, and I'm getting some really great feedback on other projects, so I'm prioritizing those. I'll get back to L-Star when the time is right. If he does a review, that will be the time. Otherwise, it will be a little (probably a month, maybe two) before I'll have them back in stock.
===Jac
If you want, you can follow me at https://hackaday.io/jac and at https://github.com/JacGoudsmit . Not much else going on with the 6502 at this time, but almost all my projects involve a Propeller in some way.
===Jac
My son and I got the L-Star finished, and working today. It was a nice simple project and fun.
After getting it set up, I am glad that it does serial and not just TV as the Apple1 video sucked, just as the 8-Bit Guy found out. I actually like the fact that I can get to it over the serial port instead anyways. It means I don't have to find a composite monitor somewhere, and hopefully I can do 6502 assembly again from the convenience of my desk or any desk in the house, actually.
I could use a little help getting these running:
Integer Basic
Ken Wessen’s “Krusader”
An assembler
AppleSoft BASIC
as well as learning how to get MiniCom to dump stuff into WozMon.
On a another topic, now that I have played with it a little, I had an idea that might simplify things for you. If you want to do memory mapped graphics, why not just have a second prop on the Address and Data buss + r/w pin which leaves the 6 pins you need to do VGA and a single pin to boot the propeller from the other while sharing a pin from VGA? That way the 65C02 could use the existing prop for the 16K of RAM + 8K ROM, and map the upper 32K to the second part where 24K could be 1bit color 512x384 VGA, and the other 8K as character map, character buffer, and command buffer area for the propeller to do complex graphics. Of course, if you can pull off very fast serial between the propellers, you might have enough pins to do a 32MB SDRAM for a huge frame buffer for the graphics prop.
For your information: That L-Star didn't come from me, I never made green PCBs. That's okay, the software and hardware are distributed under MIT license meaning clones (like the one you have) are okay, as long as they mention my name.
On the original Apple 1, the video took up almost the entire board. And the only special character it could handle was the line feed (or was it carriage return? I don't remember).
To be honest, L-Star doesn't even attempt to accurately reproduce the character set and blinking cursor on the video output. It's basically a text display that can scroll, but it can't even blank the screen. I used a font that I believe came from an Atari font ROM; I don't remember where I found it.
The serial connection makes things much easier because you can just use a terminal but it sort of defeats the purpose because you need a PC to use the L-Star, and the original Apple 1 didn't work this way. Oh well, I guess you need it to load and save programs and data anyway since there's no tape interface.
To start Integer basic, enter E000R at the prompt.
To start Krusader, enter F000R .
For more information, download the Replica 1 manual from brielcomputers.com. Ken Wessen also has a manual on his website. Google is your friend .
Krusader has a built-in assembler.
All you need to do is replace the FILE command in the Apple1.spin module to refer to the Applesoft file instead of what it is now. Note: You also have to delete (or comment out) the patch that changes the backspace character in Woz mon, because the Applesoft rom dump has a slightly different Woz mon. I've been meaning to fix that for a while but I've been distracted by other projects...
What Woz Mon spits out, it also eats. So if you enter a command in Woz mon to dump memory and capture the output to a text file, you can later send that text file to Woz Mon again and it will work. There's just one problem: there is no flow control and Woz Mon takes a little bit of time at the end of each line of hexadecimal data to process the input. You will need to configure your terminal program to insert a delay at the end of each line. I think I have my TeraTerm set to 400 microseconds of delay at the end of each line. It also doesn't hurt to insert an extra one or two microsecond delay between characters.
It's not that easy. If I would want to map, say, 24KB of the Propeller hub RAM into the 6502 memory space, I would need 15 address pins and 8 data pins, plus one pin for the clock and one for R/~W. That only leaves 7 pins; not enough for full VGA. And some of those pins are needed to download the program into the Propeller, and if you don't use an EEPROM and Prop plug, the hardware to do that gets complicated fast.
As you know, I'm working on a solution that frees up the address bus pins by sending the address bus via a fast serial connection. I think it's possible (but only barely: timing will be very tight). I'll be sure to report in the forums when I work it out.
===Jac
Sorry, I haven't had time for it for the last two weeks or so...
===Jac
Jim Rybak