No announcement yet.

Picaso 4DGL Documentation Cleanup Thread

  • Filter
  • Time
  • Show
Clear All
new posts

  • Picaso 4DGL Documentation Cleanup Thread

    This thread is here for users to report incomplete / missing / incorrect documentation for the Picaso 4DGL products.
    Posting information should include the code / documentation source (ie PICASO-GFX2-4DGL-Internal-Functions-rev2.PDF), as well as hardware platform / PMMC revision if applicable.
    "How Do I....." posts should be deleted by the moderator, as these types of questions should be posted in a dedicated thread.
    Example code for correct usage is welcome, but please verify correctness to the best of your ability. Any example code posted may be freely used by 4D systems for inclusion in documentation or code examples, and may be modified / improved upon by 4D at their discretion.
    Thank you in advance!
    Best Regards,

  • #2
    Best Regards,


    • #3

      Documentation Source: PICASO-GFX2-4DGL-Internal-Functions-rev2.PDFPlatform: uVGA-IIPMMC: uVGA-II-GFX-R25.PmmC
      Internal Function: mem_AllocVsection 2.19.2page 278
      Function spelled wrong at top of page and in example.
      Should be: mem_AllocV(size)
      Should be clarified: Size is in bytes, so does function return a byte pointer (str_Ptr)? If not, is the allocated memory word aligned? Is the size rounded up to an even number of bytes?
      Best Regards,


      • #4
        Documentation Source: PICASO-GFX2-4DGL-Internal-Functions-rev2.PDFPlatform: uVGA-IIPMMC: uVGA-II-GFX-R25.PmmCInternal Function: mem_Setsection 2.19.2page 283
        Arguments: Size: Specifies the size of the block in bytes

        Code Example:
        var mybuf[5];var i;func main() mem_Set(mybuf,0x55,5); //Only fills half of mybuf[] for(i:=0;i<sizeof(mybuf);i++) //Let's show what is in the buffer print(" 0x",[HEX]mybuf[i]); next mem_Set(mybuf,0xAA,sizeof(mybuf)*2); //Fill entire buffer print("\n"); //New line for(i:=0;i<sizeof(mybuf);i++) print(" 0x",[HEX]mybuf[i]); next repeat forever
        Best Regards,


        • #5

          In the Picaso Internal functions manual, page 188, the example for the sys_SetTimerEvent is incorrect.

          the incorrect example is:

          sys_SetTimer(TIMER5, myfunc);

          The correct example should probably be:

          sys_SetTimerEvent(TIMER5, myfunc);


          • #6

            In the Programmers reference manual, page 20, the example for shift right is wrong. The used command is shift left. Also the overflow result should be 24576.


            • #7

              Thanks gents. The next revision of docs will be released soon with the the fixes.


              • #8

                A little off topic but in 1 month since I got started with 4DGL I see all docs got new revision numbers.

                1st, whenever this happens it would be nice to have a place in open sight (maybe mail notifications) where one can easily see this so that we don't have to poll the site and dig in for updates

                2nd, although all files have revision marking it would be more useful to include a page with changes from one revision to another (as datasheets do). This way one can easily see if more info was added, what mistakes were corrected and so on. It's a drag to compare each file "by hand" and see what's new



                • #9

                  There is an error in the Internal functions manual, rev 3.0 on page 287. The description of the return value for the mem_Compare function is wrong (conditions are identical)

                  Returns 0 if we have a match, -1 if ptr1 < ptr2, and +1 if ptr2 > ptr1.


                  • #10

                    thanks for notifying this typo. It will be fixed in the next revision.
                    Here is the return value with correct description.
                    +1 if ptr1 > ptr2, -1 if ptr1 < ptr2 and 0 if equal.



                    • #11

                      PICASO-GFX2-4DGL-Internal-Functions-rev4.PDFRevision 4 page 197 sys_EventPostpone() should be sys_EventsPostpone()


                      • #12

                        img_SetWord should show more potential constants
                        only shows 7
                        I think there should be 14 as follows
                        When an image control is loaded, an array is built in ram.
                        It consists of a 6 word header with the following entries as defined by the constants:-

                        IMG_COUNT 0
                        IMG_ENTRYLEN 1
                        IMG_MODE 2
                        IMG_GCI_FILENAME 3
                        IMG_DAT_FILENAME 4
                        IMG_GCIFILE_HANDLE 5

                        Then, for each image in the dat file, a further 14 words each is used as defined by the constants:-

                        IMAGE_LOWORD 0 // WORD image address LO
                        IMAGE_HIWORD 1 // WORD image address HI
                        IMAGE_XPOS 2 // WORD image location X
                        IMAGE_YPOS 3 // WORD image location Y
                        IMAGE_WIDTH 4 // WORD image width
                        IMAGE_HEIGHT 5 // WORD image height
                        IMAGE_FLAGS 6 // WORD image flags
                        _DELAY 7 // WORD inter frame delay
                        _FRAMES 8 // WORD number of frames
                        9 // WORD current frame
                        _CLUSTER 10 // WORD image
                        start cluster pos (for FAT16 only)
                        _SECTOR 11 // WORD image
                        start sector in cluster pos (for FAT16 only)
                        _TAG 12 // WORD user variable #1
                        _TAG2 13 // WORD user variable #2

                        No image
                        s are stored in FLASH or RAM, the image
                        control holds the index
                        values for the absolute storage positions on the uSD card for RAW mode, or the cluster/sector position for formatted FAT16 mode.

                        When an image
                        control is no longle required, the memory can be released with


                        Thank you,


                        • #13

                          Referencing post #2, documentation still has error in the rev5 PDF....
                          Best Regards,


                          • #14

                            Somehow the above recommendations were missed in previous revisions of the PICASO 4DGL Internal Functions Reference Manual....

                            These have now been reviewed and added to revision 6.3 of the PICASO 4DGL Internal Functions Reference Manual.

                            Sorry this has taken so long, somehow these were completely missed unintentionally

                            Thank you for the recommendations and feedback, it is appreciated.

                            Please refer to the new version, available from the Workshop 4 Product Page, else available from HERE



                            • #15

                              Page 248 of "PICASO-4DGL-Internal-Functions-REV6.3.pdf" mention a str_String(char, count) functions that is not defined (or does not exist).