Shop OBEX P1 Docs P2 Docs Learn Events
Zog - A ZPU processor core for the Prop + GNU C, C++ and FORTRAN.Now replaces S - Page 29 — Parallax Forums

Zog - A ZPU processor core for the Prop + GNU C, C++ and FORTRAN.Now replaces S

1262729313238

Comments

  • David BetzDavid Betz Posts: 14,511
    edited 2010-12-17 10:33
    Heater: Do you have a version of ZOG that works with Cluso99's RamBlade board? It's the only other Propeller board that I own that has external memory. I believe it has 512k of SRAM. I'd like to try to get my modifications to ZOG to work with more than just the C3 and the RamBlade seems like it might be a good place to start since I already own one. :-)
  • David BetzDavid Betz Posts: 14,511
    edited 2010-12-21 05:30
    I finally finished fixing the problem that Heater pointed out where I was failing to relocate the ZOG dispatch table to high hub RAM to prevent it from interfering with ZOG taking over all of the low hub RAM after overwriting all of the Spin code. I now have ZOG taking over the C3 and have the dynamically loaded FdSerial and TvText drivers working under ZOG. They were quite easy since Heater already had them ported from Spin and working well in ZOG's hub memory mode. I also have Linux-style file I/O working using the dosfs.c code. Has anyone worked on porting a PS2 driver to ZOG? I need that to enable writing Basic programs directly on the C3 using only a PS2 keyboard and TV.
  • David BetzDavid Betz Posts: 14,511
    edited 2010-12-21 06:01
    David Betz wrote: »
    They were quite easy since Heater already had them ported from Spin and working well in ZOG's hub memory mode.
    Hmmm... I think I may have my attribution wrong or at least incomplete. Since there were calls to huballoc and hubfree in both SdSerial and TvText, I guess jazzed did some work on them in addition to possibly Heater. Sorry. I didn't mean to leave anyone out. I just wanted to point out that *I* built on others work. Thanks!
  • Heater.Heater. Posts: 21,230
    edited 2010-12-21 07:33
    David,

    That's excellent. Can't wait to have a play with it. Looks like I should order a C3.

    I think your attribution should be to Jazzed. Anything with a HUB memory allocator sounds like his work. I only had a FullDuplexSerial and VMCog objects in C and they only worked from Zog in HUB.

    Hopefully I will have a little time after Christmas but just now I'm off to a Christmas party:)

    P.S. Sorry I missed your question re: the RamBlade. Shamefully the answer is no. Yet another ting that needs looking at.
  • David BetzDavid Betz Posts: 14,511
    edited 2010-12-21 09:12
    Heater. wrote: »
    That's excellent. Can't wait to have a play with it. Looks like I should order a C3.
    You're certainly welcome to order a C3. It is a very nice board. However, aren't there other Propeller boards that support multiple SPI SRAM and/or flash chips? My port of ZOG could run on any board that can support one or two 32k SRAM chips and a flash chip. Even just two SRAM chips would be good enough for small programs. What boards support multiple SPI memory chips?
  • jazzedjazzed Posts: 11,803
    edited 2010-12-21 09:41
    Hi. I'm porting a 2x TvText driver (Tv2Text) similar to the one posted before so that we can make something like a GUI "OK" button - that is a small box containing text. The Tv2Text driver is based on Baggers TV_Half_Height.spin enhancements to TV.spin and can display 44x27 full chars or 44x54 half size chars.

    Things are going ok, but when it comes to scrolling, ZOG is cold and slow. Some block copy routines in zog.spin would help a bunch, but I'm not sure if there's any room for that.

    Any block copy speedup suggestions?
  • David BetzDavid Betz Posts: 14,511
    edited 2010-12-21 09:45
    I'm afraid I don't have any speedup suggestions but I will confirm that I don't have even one long free in my version of ZOG. COGs really need more memory! I guess that will have to wait for Propeller 3 though. :-(
  • jazzedjazzed Posts: 11,803
    edited 2010-12-21 10:13
    David Betz wrote: »
    I'm afraid I don't have any speedup suggestions but I will confirm that I don't have even one long free in my version of ZOG. COGs really need more memory! I guess that will have to wait for Propeller 3 though. :-(
    If you don't mind swapping "call #zpu_cache" for the corresponding in-line optimizations, you'll get 18 extra longs. Sadly I've already done this once so I only have 12 or so available.

    I'm thinking an "internal syscall" like cognew could be used to copy a block of bytes from one hub location to another.

    I decided to use longmove instead of wordmove for scrolling and that helps a bunch. Guess I'll stick with that for now while I try to finish a demo.

    A TWI keyboard driver will probably be next. A TWI mouse driver may follow. The regular keyboard/mouse drivers would be easy to port after that. At some point I want to port the full color driver code Potatohead and Baggers wrote and build a nice GUI demo around that.

    HUB memory will surely become an issue though (when does it and COG RAM not become an issue!? blinky LEDs? :D) - that's of course why I have this new SDRAM VGA design going in the background.
  • David BetzDavid Betz Posts: 14,511
    edited 2010-12-21 10:18
    jazzed wrote: »
    If you don't mind swapping "call #zpu_cache" for the corresponding in-line optimizations, you'll get 18 extra longs.
    I wonder how much it would slow things down to fetch opcodes by calling read_byte instead of using the inline code? That would have the added benefit that you could execute code out of external RAM, external flash (in my case) or hub memory.
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-12-21 10:54
    David Betz wrote: »
    What boards support multiple SPI memory chips?

    Hi David & everyone!

    I have two boards that are available for sale right now that support SPI ram, flash and fram's:

    Morpheus:

    Supports two SPI 8 pin devices on the PCB

    Product page: http://mikronauts.com/products/morpheus/

    Forum thread: http://forums.parallax.com/showthread.php?113929-Morpheus-256-colors-high-rez-bitmap-VGA-0.5-7.5MB-XMM-**NEW**-VGA-320x240-sprites-UPEW-see-p11

    I have stock of the pcb rev.2 production boards, but I have not yet updated the build manual or developer's guide.

    PropCade:

    Supports SIX SPI 8 pin devices on the PCB

    Product page: http://mikronauts.com/products/propcade/

    Forum thread: http://forums.parallax.com/showthread.php?126123-PropCade-Propeller-Development-Retro-Gaming-and-Computing-platform-Available-NOW!

    I have stock of the production boards, however I only have the BOM and schematics so far, I need to write the build manual and developers guide.

    Near future: (Q1 2011)

    I also have more products coming that support SPI memory devices, however they are not available for sale at this time:

    FlexMem:

    Supports 4 devices per board, with up to 3 boards on P0-P7. The four SPI devices are accessed in parallel for MUCH higher throughput.

    I have to resolve a driver issue and get production boards made after issue is resolved

    Morpheus+:

    Supports 4 devices on the PCB.

    I am working on getting it into production

    Codename "PLC-G":

    Supports (to be announced) devices on the PCB.

    I should have the rev.2 prototypes in early January, I will announce the board when I have working production boards


    p.s.

    (Sapieha was kind enough to point out this post to me)
  • David BetzDavid Betz Posts: 14,511
    edited 2010-12-21 11:00
    Morpheus and PropCade are the boards I was thinking about when I made that post. Thanks for the links to them! I'd be happy to help someone who has one of those boards get ZOG running on it. How do the SPI chip selects work on these boards?
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-12-21 11:02
    I'd love to see a benchmark suite for Zog... perhaps the old Byte benchmarks?
  • David BetzDavid Betz Posts: 14,511
    edited 2010-12-21 11:05
    If you use the old Sun SPEC benchmark you'll end up having to port an ancient version of my old XLISP interpreter. It was one of the SPEC benchmarks back in the early days.

    Also, after thinking a bit about Morpheus and PropCade, it seems PropCade would be a good candidate for my C3 version of ZOG but Morpheus would be better off using its big SRAM chip rather than the SPI memories, right? Also, I'm sure both of these boards already runs ZOG using VMCOG.
  • jazzedjazzed Posts: 11,803
    edited 2010-12-21 11:11
    Bill, how exactly does one buy a board from you?
    Unfortunately, the web pages do not make that very clear.
    Maybe you need a shopping cart or big flashy graphics.
  • SapiehaSapieha Posts: 2,964
    edited 2010-12-21 11:12
    Hi David Betz.

    ON Morpheus board ---> It is more for You to think on AS BIG RAM area is on Propeller nr.2 and 2 SPI SRAM's separately addressed are on Propeler nr.1.
    That give You possibility to run both Propellers on board with ZOG on external memory.



    David Betz wrote: »
    If you use the old Sun SPEC benchmark you'll end up having to port an ancient version of my old XLISP interpreter. It was one of the SPEC benchmarks back in the early days.

    Also, after thinking a bit about Morpheus and PropCade, it seems PropCade would be a good candidate for my C3 version of ZOG but Morpheus would be better off using its big SRAM chip rather than the SPI memories, right? Also, I'm sure both of these boards already runs ZOG using VMCOG.
  • David BetzDavid Betz Posts: 14,511
    edited 2010-12-21 11:22
    Sapieha wrote: »
    Hi David Betz.

    ON Morpheus board ---> It is more for You to think on AS BIG RAM area is on Propeller nr.2 and 2 SPI SRAM's separately addressed are on Propeler nr.1.
    That give You possibility to run both Propellers on board with ZOG on external memory.
    Nice! Now I just need to save my pennies to buy a Morpheus board! Actually, I imagine you can really go to town if you buy MEM+ as well!
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-12-21 11:35
    (Sapieha noticed I made a mistake, so I had to fix the Morpheus SPI pins!)

    Morpheus SPI ram interface:

    23K256 socket

    P8 = /CS
    P9 = SCK
    P10 = MOSI
    P11 = MISO

    W25Z80/23K256 socket

    P12 = /CS
    P13 = SCK
    P14 = MOSI
    P15 = MISO

    PropCade:

    P11 = A2
    P10 = A1
    P9 = A0

    P11-P9 define the SPI device address

    - SPI addresses 0-5 correspond to the SPI ram/flash/fram sockets/pads
    - SPI address 6 is the on-board MCP23S17 IO expander
    - SPI address 7 is the on-board uSD controller

    SPI device pins are:

    P0 = /CS, selects SPI device addressed by A2-A0
    P1 = SCK
    P2 = MOSI
    P3 = MISO

    There is sample code for talking to the Morpheus and PropCade SPI ram's in the VMCOG thread at

    http://forums.parallax.com/showthread.php?119725-VMCOG-Virtual-Memory-for-ZiCog-Zog-more-(VMCOG-0.976-PropCade-TriBlade_2-HYDRA-HX512-XEDODRAM)
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-12-21 11:40
    I'd love to see XLisp on my boards!

    Yes, PropCade would be an excellent candidate for a port of the C3 version of Zog.

    As Sapieha already posted, the SPI ram's are on CPU1 on Morpheus, so they would be very useful for running large graphics apps on CPU1 that controlled the fancy graphics of CPU2.

    Writing a VMCOG interface to the fast parallel memory on CPU2 is right after "Get BIG VMCOG running!" on my TODO list :)

    p.s.

    PM or email your snail mail address to me :)
  • David BetzDavid Betz Posts: 14,511
    edited 2010-12-21 11:43
    Morpheus SPI ram interface:

    ...

    PropCade:

    ...
    Thanks for the SPI interface details! Sounds like either could be hooked up to my SPI cache code to allow them to run ZOG. However, I guess they can already run ZOG using VMCOG. My only (temporary) advantage is that I can handle more memory. I think you have plans to extend VMCOG for that as well though.
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-12-21 11:49
    I have not had time to make or integrate a shopping cart :-(

    It's on my looong TODO list.

    For now, people should PM or email me with what they want, their paypal-linked email address, and their snail mail address, and I quote the total including s/h.
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-12-21 11:50
    Thanks for responding in while I was eating :)
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-12-21 11:54
    LOL... :)

    Morpheus supports:

    - 1 Mem+ for a total of 2.5MB on CPU2 @ 20MB/sec
    - 2 Mem+'s for a total of 4.5MB on CPU2 @ 10MB/sec
    - 3 & 4 Mem+'s are theoretically possible for a maximum of 8MB, but those configurations have not been tested yet.

    I suspect 6.5MB/sec is possible with 6.5MB, but 8MB might require dropping to 5MB/sec due to bus loading and capacitance.

    You can also add up to 3 FlexMem's in additional to the two SPI sockets, however I have to get the driver running first... and test that configuration. This would allow 12 SPI memory devices on P0-P7 in addition to the 2 on P8-P15

    (thanks Sapieha!)

    Theoretically the two SPI ram's on P8-P15 could be replaced by a second set of 3 FlexMem's, but they would run significantly slower than the three on P0-P7.
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-12-21 11:57
    You are most welcome!

    Getting the FlexMem driver and BIG VMCOG running are the highest item on my TODO list after finishing the boards I am working on (that I talked about at UPEW).
  • jazzedjazzed Posts: 11,803
    edited 2010-12-21 12:06
    When will you finish Largos? ... Largos was the only reason I bought a Morpheus PCB from you ....
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-12-21 12:13
    Largos is on the list, but unfortunately it is lower priority than now products.

    Mikronauts is my day job, I have to get product sales up before I can work a lot on software like Largos.

    VMCOG is one component of Largos, and the big VM version is coming soom after all the UPEW-announced products are shipping. That's why I have not been on the forums much lately - I am trying to get all those PCB's fully debugged and into production. My former PCB manufacturer caused me a lot of grief on those boards... they were 2-4 months late, and there were issues too.

    (mostly bad via's that are a PAIN to find, with a couple of small missing traces adding to the fun .. either their e-test did not catch the faults, or they did not bother to e-test)
  • jazzedjazzed Posts: 11,803
    edited 2010-12-21 12:18
    I thought a day job was one that pays bills like your consulting work.

    Anyway. Good luck with all that.
    Meanwhile my Morpheus PCB will remain barren.
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-12-21 12:20
    Mikronauts = consulting + products

    Sorry, my last post was not sufficiently clear.

    Check your PM's.
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-12-21 13:00
    Sapieha noticed I made a mistake with the Morpheus SPI pin group, so I fixed it in the message on p.43

    Thanks Sapieha!
  • David BetzDavid Betz Posts: 14,511
    edited 2010-12-21 19:54
    jazzed: it was pretty easy to port your C keyboard driver to the C3. Looks like I have all of the drivers I need at the moment. Now to spend some time to simplify the build process...
  • jazzedjazzed Posts: 11,803
    edited 2010-12-21 21:32
    David Betz wrote: »
    jazzed: it was pretty easy to port your C keyboard driver to the C3. Looks like I have all of the drivers I need at the moment. Now to spend some time to simplify the build process...
    Great. So you won't need the other TV driver? I'm still working on some details, but the basics are functional.

    The driver that really needs to be incorporated is the full color driver which can allow mouse cursors and really nice GUI graphics. That will take time and lots of HUB space though. How much HUB do you have free in your system for a program at startup right now?

    Funny you mention the build process .... I spent some time yesterday on Makefile dependencies :) Still have some work to do for auto-generating header dependecies. One can use a 2 step make depend with gcc -M or a single step sed script in Makefile. The sed scripting will take a little more time because I've forgotten what to do in the Makefile. I would really like to see a recursive build system invoked only as issuing a single and simple "make all" command.
Sign In or Register to comment.