|
Post by Jeff Ledger on Mar 24, 2007 19:54:42 GMT -5
Initial test interface is working.. I can send 8 bits of information from the userport to the Propeller. Behold the assimilation of the Propeller by the 64!:
|
|
|
Post by Jeff Ledger on Mar 26, 2007 23:18:48 GMT -5
Finally, I have the propeller drawing in high resolution VGA at the whim of my 64... It's vector graphics for the moment, but it's very cool..
|
|
|
Post by Jeff Ledger on Mar 27, 2007 11:01:34 GMT -5
I'm loosing sleep with this project! Last night I got a Commodore control etch-a-sketch working on my VGA monitor. Time to re-name this thread. Yes, Virginia, there is a Commodore C=VGA adapter now.. Thanks to the Propeller. Time to continue to expand the codebase. I'm starting to really appreciate the problems the designers of the VIC had to overcome, with this project. 1 for the record, Timing on the 64 really sucks.. Jeff
|
|
|
Post by Leif Bloomquist on Mar 28, 2007 15:50:50 GMT -5
That's great! You could do all kinds of things with this. I'm on a mini Vectrex kick at the moment, so vector graphics are cool.
You could expand this to be a real "C=VGA" adaptor by connecting it to the expansion port instead. It would be an immense effort, but in theory you could watch for writes to the VIC-II memory space, and reproduce what the VIC would do with the data. It would be a totally different approach than the composite -> VGA solutions. You could even do this with the 128's 80-column VDC.
I hope you're bring it to C4!
|
|
|
Post by David Murray on Mar 28, 2007 18:50:10 GMT -5
This is a very interesting project.. Seems kind of useless, but interesting none-the-less. Do you have any pictures of the screen? (I know a traditional screen-shot isn't possible) Do you have any specific goal here? After all, it will never be compatible with the installed base of C64 software unless it were designed like Leif suggested.. even then, I'm not sure if it would be possible.
What might be possible would be a "VDC emulator." Where maybe you could deactivate the VDC on a 128 or heck.. even add a VDC to the C64 and have the chip emulate the VDC and output to a VGA monitor. Still seems pointless considering the small number of applications that actually use it.
On a side note.. you said you can send 8 bits of data. I'm confused why you needed 15 I/O lines from the user-port.
|
|
|
Post by Jeff Ledger on Mar 28, 2007 20:14:58 GMT -5
Useless, yes, Interesting, yes! Actually, I'm really working on filling in gaps in my understanding of electronics, as well as a self-study in programmable microprocessors. (I was hacking the PICAXE last year.) I find that I learn best by finding a "project" excuse to learn. Guess I never outgrew the need of justification for learning something new. I wanted to see if I could combine new technology with my favorite microcomputer. One of my goals is to keep the product duplicative by others using off-the-shelf boards, etc. and document it! A lot of neat new projects are produced that others have a hard time replicating. (I'm preaching again..) Some project details:Information is currently passed in 8 bits one direction 64 --> Propeller. I haven't gotten to design of a handshake yet, because of voltage differences. (Thats the next level for me.) Anyway, if the Propeller detects a byte over 127 it knows that this is a data variable. Bytes under 127 are considered commands. This design eliminates the need for complex timing, (major pain) or back-and-forth communication. The disadvantage being that when plotting the screen, I have a limited number of locations I can use, so I solved it with the same solution used for sprites, change locations. I will also overcome this soon with the ability to add+ to existing registers. So POKE 56577,100+127: REM Store 100 in data register POKE 56577,11: REM Move register to variable X POKE 56577,10+127: REM Store 10 in data register POKE 56577,12: REM Move register to variable Y POKE 56577,2:REM plot(x,y)
Results in one dot. Gheesh.. But add some math and some loops and things start to take on new meaning. Here's some of the commands I currently have working. plot (x,y) box(xx,yy,xy,yx) boxfill(xx,yy,xy,yx) shape(xx,yy,xy,yx,shape,deg) 15 existing shapes penon/penoff line(xx,yy,xy,yx) Goals of this project: Do something cool with my propeller and the 64 [check] Learn more about electronics [check] Learn more about programmable micros [check] Learn to appreciate data-bus design [check] I take it back.. Useless.. Nope.... Jeff
|
|
|
Post by Jeff Ledger on Mar 28, 2007 20:49:05 GMT -5
Hey Leif, Look at this.. en.wikipedia.org/wiki/VectrexHas got me thinking I may need to create some vector sprites! I got plenty of RAM on the propeller. Jeff
|
|
|
Post by David Murray on Mar 28, 2007 21:01:06 GMT -5
What I'd like to see done is somebody take a microcontroller and program it in a way that it behaves similar to a Commodore. Not that it neccessarily emulates a Commodore, but that it has the commodore user-interace with good-ole' Commodore BASIC. This way it would be a self-sustained programming environment.
See, they have these "BASIC Stamps" but they aren't really running what I think of as BASIC since it cannot execute the BASIC instructions in run-time or be edited directly from the unit. I would guess the biggest limiting factor on these microcontrollers is probably RAM... but I'd love to see a device that could handle it and somebody actually port C= Basic over.. Just think of the possibilities. Once it was going, you'd be able to choose all kinds of display devices: anything from character LCDs to VGA displays. it would be easy to program and control I/O lines for robotics and stuff like that. It would be way cool.
|
|
|
Post by gmoon on Mar 28, 2007 21:39:53 GMT -5
Is there no way to implement direct memory access? On the cart port. The propeller has 32 GP I/O pins which should be enough. You shouldn't need a full 16 bits for the frame buffer address. 8 bits for the data, of course. It's out of my technical knowledge, and would be fairly complex, with the RAM timing, etc. But it might be possible...
Personally, I think vector graphics are much cooler than simple bitmaps. But far from your goal, clearly.
Also, it looks like you're just one step away from an independent system, which is very cool in itself.
|
|
|
Post by Jeff Ledger on Mar 28, 2007 22:12:53 GMT -5
David, Actually, I'm already close to that.. somewhat.. When I boot the propeller, I boot a copy of FemtroBASIC from the EEPROM on the board, when I switch to the Commodore 64 VGA code, I actually load it with a BINARY loader from my BASIC into memory from my SD/MMC card. Here's some pics from tonight's successes.. I'm still getting some artifacts every so often as the propeller misses a little (gotta slow it down just a bit) , but these were some perfect shots. The fat line you see in a couple of my shots is my overhead light reflecting off the monitor. This is a 10 line program with a FOR/NEXT loop running to create a shape and then move it, stepping by 3.
|
|
|
Post by Jeff Ledger on Mar 28, 2007 22:38:06 GMT -5
Sidenote: FEMTOBASIC
David, The FemtoBASIC I mentioned is just another program written in .spin which has the ability to handle most TINYBASIC commands. It can't handle strings$, but does enough to make it very interesting. One of the interesting things it does do is handle input/out on whatever pins I chose, so the other day I created an Atari joystick interface for Femto. (You can see it peeking from under my C=VGA userport connections in the first pic) I also added some new commands to it, like CLR, LOCATE, HOME, and REBOOT so that I could produce a simple text game for it with animation. (Another project)
The best part about Femto (besides being able to be modified) is that I can load/save files from BASIC onto my SD/MMC card, then transfer then back/forth to my development PC. (Fat format)
I haven't re-programmed the chip itself the entire time I've done this project, I just booted a menu I created in BASIC and selected an option of binary loading my .spin program off the SD.
|
|
|
Post by David Murray on Mar 29, 2007 7:00:12 GMT -5
So what does the propeller use for I/O? I'm guessing a PS/2 keyboard and a VGA monitor?
Those screenshots are pretty cool.. What generates the font? Oh, and if you hadn't said what the thick line was, I would have assumed it was a graphical effect done on purpose, it fits right in!
|
|
|
Post by Jeff Ledger on Mar 29, 2007 8:15:37 GMT -5
The header off the prop supports VGA, PS2 Mouse, PS2 keyboard.
I've added (on the breadboard) composite video out, Right/Left Sound, and joystick support.
The font is a built-in character set.
Jeff
|
|