Shop OBEX P1 Docs P2 Docs Learn Events
GUI a universal approach to create a focal point — Parallax Forums

GUI a universal approach to create a focal point

ErNaErNa Posts: 1,800
edited 2025-03-14 07:26 in PASM2/Spin2 (P2)

I'm coming up with the refreshment of an old idea: have an universal GUI with text, buttons, graphics output and keyboard, mouse, touchscreen input. My P1 solution needed most of the memory available, took immense time to compile, load and program the flash, but this has changed with the P2. I used Ariba's PropTerminal software to have a simple text/graphic display in VGA-style running on the PC.
Times have changed, using the debug feature could create the complex outputs I want, but I aim towards a self-contained system. 8 COGs will not allow to run all the task I need for my current project, interrupt for sure will introduce some problems, and, in the end: I imagine a distributed system that can do, what I can not imagine, so I have to have a net of linked P1/P2's anyway.
This is what I have today:

Sorry, my bad, this was in 1987, using my own hardware graphics system and CP/M, 6MHz Z80

This is a screenshot of the P1 solution:

And this is the first output generated by the P2. Objects are missing, I do not know why, have to dig into it now.

The complete screen is defined using a linked list of objects, that can mirror variables in hub ram and will take care of continuous refreshing. I'm limited to draw about 20 graphical objects per second using 112kBd, what is the limit for the PropTerminal.

As the terminal occupies the only serial connection, the debug features can not be used. So debugging currently is a burden. I have different LDC's with touchscreen available, so my goal is to have a driver, that is fully configurable from external, so the code can be stored in the flash and loaded from there without being compiled every time.

To do this I all processes have a unified interface that is optimized not to save resources, but to save me from always follow up with optimizations. One point is: the processes instantiated return their version, so crashes can be omitted.
That's for now, let me see, how progress evolves. I hope this will be a great deal, greater than anybody can imagine and I promise you a golden future and will not hesitate to replace the Statue of Liberty with a personalized glorious golden P2!

After a little fight with SIGNX and some sanding:

Now diving into the "real" work.

Found this project, very interesting https://forums.parallax.com/discussion/175121/p2gui-framework

Comments

  • RossHRossH Posts: 5,564

    This is interesting. Is there an updated version of Ariba's PropTerminal somewhere that I missed?

    The last version I have was 0.4, and I still support it on the P1, but not on the P2 because the baud rate of that version was limited to 115200. It would be great to have a version more suitable for the P2.

    Ross.

  • ErNaErNa Posts: 1,800

    That's exactly the weak point. I also use 0.4, Ariba once send me the source code, it's Basic but this special compiler is outdated. Unfortunately I didn't find the time to work with the code. Over the last weeks I was searching for a replacement, but failed. No terminal software support simple graphic, it seems. With all the libraries supported by the modern tool it should be a simple exercise to create a better solution, but we live in a different world today. Problem will be solved within 24 hours, but which 24 hours is up to you to find out ;-)

  • Hi, with Teraterm there is TEK4014 graphics in an extra window available.
    Cheers Christof

  • ErNaErNa Posts: 1,800

    Didn't realize this, is it Term VT TEK?

  • ErNaErNa Posts: 1,800

    Started to play around with the Cluso's lcd graphics driver to create a set of functions that allow me to transparently select Ariba's PropTerminal or the LCD Screen for output. Looks rather complicated to install my ProcessControlBlock mechanism.... We'll see.

  • ErNaErNa Posts: 1,800

    is there a reason, why if_e and if_z exists, and not just one? Maybe: if_e obviously means "if equal", while if_z may be confusing, because Z is one when zero?

  • @ErNa said:
    is there a reason, why if_e and if_z exists, and not just one? Maybe: if_e obviously means "if equal", while if_z may be confusing, because Z is one when zero?

    It's just creature comfort in the assembler, if_z, if_e and if_x1 all assemble to the same condition code. See also: https://p2docs.github.io/asm_syntax.html#condition-codes

  • ErNaErNa Posts: 1,800
    edited 2025-03-06 15:44

    @Wuerfel_21 said:

    @ErNa said:
    is there a reason, why if_e and if_z exists, and not just one? Maybe: if_e obviously means "if equal", while if_z may be confusing, because Z is one when zero?

    It's just creature comfort in the assembler, if_z, if_e and if_x1 all assemble to the same condition code. See also: https://p2docs.github.io/asm_syntax.html#condition-codes

    Could be a remark in the documentation to clarify this

  • JonnyMacJonnyMac Posts: 9,243

    Could be a remark in the documentation to clarify this

    There is in the instruction table. What would be really nice to have, though, is a PASM2 book with details on each instruction and lots of examples from clever PASM programmers like Ada and others.

    1920 x 1030 - 217K
Sign In or Register to comment.