P2 (2015) Assembly Instruction Set document - plus bugs section

Peter JakackiPeter Jakacki Posts: 8,799
edited 2015-10-08 - 08:03:16 in Propeller 2
Since we really only have a list of instructions without any descriptions we have to scour the myriad of P2 posts for information and then we have to filter out what is current as well. I've been adding a few bits of information to a document which has the instruction set and any other information such as memory maps etc that are necessary for writing assembly code for the P2.

Anyone can edit this P2 2015 Assembly Instruction Set document, please.

edit: here is a link for the published (view only) document version

So even just comments will help and any pearls of wisdom gleaned from the forum. Later on this can all be reformatted nice and neatly but otherwise it would be a good repository and reference.

Tachyon Forth - compact, fast, forthwright and interactive
useforthlogo-s.png
P2 --- The LOT --- TAQOZ INTRO & LINKS --- P2 SHORTFORM DATASHEET --- TAQOZ RELOADED - 64kB binary with room to spare
P1 --- Latest Tachyon with EASYFILE --- Tachyon Forth News Blog --- More
paypal.png PayPal me
Brisbane, Australia
phone.png

Comments

  • Also, don't forget the one that Chip started (and will hopefully continue) working on:

    https://docs.google.com/document/d/10qQn_-B7avY2ce0N1MDDdzOF1lACPNWUJkjHFyzITiY/edit

    Or maybe he'll abandon that one and work on the same one we are. :)
  • Yeah, I haven't seen any updates for some time and there is hardly anything there about the instructions, not even a list. Since I had to paste these little pearls somewhere then why not make it open. If we already have the information and all we have to do is gather together in one place then this means Chip can concentrate on the design. Any information we can't find I'm sure Chip will answer. So this way it's a win-win.

    Tachyon Forth - compact, fast, forthwright and interactive
    useforthlogo-s.png
    P2 --- The LOT --- TAQOZ INTRO & LINKS --- P2 SHORTFORM DATASHEET --- TAQOZ RELOADED - 64kB binary with room to spare
    P1 --- Latest Tachyon with EASYFILE --- Tachyon Forth News Blog --- More
    paypal.png PayPal me
    Brisbane, Australia
    phone.png
  • I've added an extra section at the end of the document covering possible bugs as I had trouble with the subx instruction. Also where possible I will include links to more information such as forum discussions etc.

    Please everyone, don't be shy about contributing. There's a wealth of knowledge out there and I'm still scratching my head about some of these instructions which might only take you 5 minutes to comment on in the document. You don't have to worry about formatting or anything fancy, just pure raw information and links.

    Tachyon Forth - compact, fast, forthwright and interactive
    useforthlogo-s.png
    P2 --- The LOT --- TAQOZ INTRO & LINKS --- P2 SHORTFORM DATASHEET --- TAQOZ RELOADED - 64kB binary with room to spare
    P1 --- Latest Tachyon with EASYFILE --- Tachyon Forth News Blog --- More
    paypal.png PayPal me
    Brisbane, Australia
    phone.png
  • Excellent work Peter.
    Updated the cog registers and hub addresses and the internal stack info as per my understanding.
    My Prop boards: P8XBlade2 , RamBlade , CpuBlade , TriBlade
    P1 Prop OS (also see Sphinx, PropDos, PropCmd, Spinix)
    Website: www.clusos.com
    P1: Tools (Index) , Emulators (Index) , ZiCog (Z80)
    P2: Tools & Code , Tricks & Traps
  • MJBMJB Posts: 1,135
    I merged Chip's document in -
    maybe an incentive to keep all in one document.
  • Seairth wrote: »
    Also, don't forget the one that Chip started (and will hopefully continue) working on:

    https://docs.google.com/document/d/10qQn_-B7avY2ce0N1MDDdzOF1lACPNWUJkjHFyzITiY/edit

    Or maybe he'll abandon that one and work on the same one we are. :)
    I haven't forgotten, at all. I've been tied up making Verilog changes, still.

  • We'll have a limb each before it's done. ;)
    We have the vastness of the internet and yet billions of people decided to spend most of their time within a horribly designed, fake-news emporium of a website that sucks every possible piece of personal information out of you so it can sell it to others. And they see nothing wrong with that.
  • Ha! Anytime we want Chip at a gathering, we all just bring our piece! (morbid, I know, but it's been a long few weeks for me. Play time!)

    Do not taunt Happy Fun Ball! @opengeekorg ---> Be Excellent To One Another SKYPE = acuity_doug
  • Nice work, Peter!

    Have you found any bugs in any of the math operators? I remember you saying something about SUBX not working correctly.
  • cgracey wrote: »
    Nice work, Peter!

    Have you found any bugs in any of the math operators? I remember you saying something about SUBX not working correctly.
    Thanks Chip, I didn't want to duplicate anything you might be doing, just trying to get a handle on the instruction set etc. But it's like a construction site, bits and pieces all over the place at the moment, waiting to be moved and assembled.

    Now that Tachyon is starting to work again I will finish off that part of it and implement the inline assembler so then it will be easy to test out sections of assembly code. Then get back to confirming operation of these instruction but definitely the subx didn't like the source and dest being the same perhaps or whatever. Either way it doesn't work like P1 but of course I should check again with all the new updates, shouldn't I.


    Tachyon Forth - compact, fast, forthwright and interactive
    useforthlogo-s.png
    P2 --- The LOT --- TAQOZ INTRO & LINKS --- P2 SHORTFORM DATASHEET --- TAQOZ RELOADED - 64kB binary with room to spare
    P1 --- Latest Tachyon with EASYFILE --- Tachyon Forth News Blog --- More
    paypal.png PayPal me
    Brisbane, Australia
    phone.png
  • cgracey wrote: »
    Nice work, Peter!

    Have you found any bugs in any of the math operators? I remember you saying something about SUBX not working correctly.
    Thanks Chip, I didn't want to duplicate anything you might be doing, just trying to get a handle on the instruction set etc. But it's like a construction site, bits and pieces all over the place at the moment, waiting to be moved and assembled.

    Now that Tachyon is starting to work again I will finish off that part of it and implement the inline assembler so then it will be easy to test out sections of assembly code. Then get back to confirming operation of these instruction but definitely the subx didn't like the source and dest being the same perhaps or whatever. Either way it doesn't work like P1 but of course I should check again with all the new updates, shouldn't I.

    That's great that Tachyon is usable as a test bed for everything else.

    I'll look into SUBX tonight.

    Thank you, and thanks to the others for all their help.
  • Taking note of the many lengthy discussions in the P2 forum I can't help but wonder what can be achieved if that same time and energy were applied to documentation itself. Imagine all those threads that you may have been part of in the past and all that knowledge you have on an instruction and even why it was devised. Opinions are one thing and this is a forum after all, but aren't we more than just a forum of opinions?

    I'd like to think that we have a bond, a common interest in the Propeller development, but for that to flourish we need to balance our time and energy between discussions and between doing. At the moment there is a great need for us to have better documentation so we can get to doing more with the P2 but the documentation is a big "doing" that needs to be done first. Who's "gunna" do it? Somebody else? To paraphrase a quote:

    Documenting the P2 is an important job and everybody is confident that somebody will do it.
    Of course, anybody can do it, but nobody does it. Somebody might get upset that nobody does it because it is a job everybody can do.
    Everybody thinks that anybody can do it, but nobody realizes that everybody is busy instead discussing what to do.
    Will it end up that everybody finds somebody to blame when nobody does what anybody could do?

    While Chip is busy doing what he can and what we can't we are not "nobodies", we are somebody that knows something and can do something and if we all accept that and pitch in then we will achieve amazing things and everybody will benefit.


    Tachyon Forth - compact, fast, forthwright and interactive
    useforthlogo-s.png
    P2 --- The LOT --- TAQOZ INTRO & LINKS --- P2 SHORTFORM DATASHEET --- TAQOZ RELOADED - 64kB binary with room to spare
    P1 --- Latest Tachyon with EASYFILE --- Tachyon Forth News Blog --- More
    paypal.png PayPal me
    Brisbane, Australia
    phone.png
  • that's a bump


    We need rising threads around here... if we can sink threads we should be able to raise them:)
  • Peter JakackiPeter Jakacki Posts: 8,799
    edited 2015-10-23 - 05:37:44
    This document has been updated, here is the pubdoc version. I have added a link to a new opcode testing document to which I am adding my observations while testing opcodes and examining the results. This is being done interactively with my new inline assembler written in Tachyon Forth on the P2. A sample is shown below:

    INCMOD
    Increment the destination and wrap after source is passed
    dest = (dest+1)//(source+1)
    If a modulus 10 is required then set the source to 9
    TF2# asm
     02.0000 F783.1D8F   incmod 1st , 2nd
     02.0004 FD60.002D   ret
     02.0008             end ok
    TF2# 9 -1 12 execs
     0002 [ 0000.0000  0000.01A5  0000.0009  FFFF.FFFF ]TOP
     0002 [ 0000.0000  0000.01A5  0000.0009  0000.0000 ]TOP
     0002 [ 0000.0000  0000.01A5  0000.0009  0000.0001 ]TOP
     0002 [ 0000.0000  0000.01A5  0000.0009  0000.0002 ]TOP
     0002 [ 0000.0000  0000.01A5  0000.0009  0000.0003 ]TOP
     0002 [ 0000.0000  0000.01A5  0000.0009  0000.0004 ]TOP
     0002 [ 0000.0000  0000.01A5  0000.0009  0000.0005 ]TOP
     0002 [ 0000.0000  0000.01A5  0000.0009  0000.0006 ]TOP
     0002 [ 0000.0000  0000.01A5  0000.0009  0000.0007 ]TOP
     0002 [ 0000.0000  0000.01A5  0000.0009  0000.0008 ]TOP
     0002 [ 0000.0000  0000.01A5  0000.0009  0000.0009 ]TOP
     0002 [ 0000.0000  0000.01A5  0000.0009  0000.0000 ]TOP
     0002 [ 0000.0000  0000.01A5  0000.0009  0000.0001 ]TOP  ok
    TF2#
    
    edit: replaced with newer stack list to one corresponding with stack notation where the top item is the rightmost

    The assembler is invoked from the serial terminal and I enter two instructions in raw format (haven't added a preprocessor yet) which is assembled and listing. I can then enter two parameters 8 and -1 which are the 2nd and 1st parameters respectively and run that code 10 times with the stack listing each time plus the initial stack.

    Tachyon Forth - compact, fast, forthwright and interactive
    useforthlogo-s.png
    P2 --- The LOT --- TAQOZ INTRO & LINKS --- P2 SHORTFORM DATASHEET --- TAQOZ RELOADED - 64kB binary with room to spare
    P1 --- Latest Tachyon with EASYFILE --- Tachyon Forth News Blog --- More
    paypal.png PayPal me
    Brisbane, Australia
    phone.png
  • ozpropdevozpropdev Posts: 2,605
    edited 2015-10-22 - 09:08:39
    @Peter
    Be aware that if the dest. value is greater than the source value, INCMOD does not rollover to zero.

    Edit: See more discussion here including Chip's comments.
    http://forums.parallax.com/discussion/comment/1249697/#Comment_1249697
    Melbourne, Australia
  • Peter JakackiPeter Jakacki Posts: 8,799
    edited 2015-10-22 - 11:00:48
    ozpropdev wrote: »
    @Peter
    Be aware that if the dest. value is greater than the source value, INCMOD does not rollover to zero.

    Confirmed, but the document stands as "my observations", not as a final answer, but to gain some insight and help document the the operations. A bit like a playground in a way.
    TF2# asm
     02.0000 F783.2191   incmod 1st , 2nd
     02.0004 FD60.002D   ret
     02.0008             end ok
    TF2# 9 7 exec  0002 [0000.0008 0000.0009 0000.01A5 0000.01A5 ]  ok
    TF2# exec  0002 [0000.0009 0000.0009 0000.01A5 0000.01A5 ]  ok
    TF2# exec  0002 [0000.0000 0000.0009 0000.01A5 0000.01A5 ]  ok
    TF2# DROP 11 exec  0002 [0000.000C 0000.0009 0000.01A5 0000.01A5 ]  ok
    TF2# exec  0002 [0000.000D 0000.0009 0000.01A5 0000.01A5 ]  ok
    TF2# exec  0002 [0000.000E 0000.0009 0000.01A5 0000.01A5 ]  ok
    

    Tachyon Forth - compact, fast, forthwright and interactive
    useforthlogo-s.png
    P2 --- The LOT --- TAQOZ INTRO & LINKS --- P2 SHORTFORM DATASHEET --- TAQOZ RELOADED - 64kB binary with room to spare
    P1 --- Latest Tachyon with EASYFILE --- Tachyon Forth News Blog --- More
    paypal.png PayPal me
    Brisbane, Australia
    phone.png
  • evanhevanh Posts: 8,400
    edited 2015-10-22 - 11:34:36
    [deleted]
    We have the vastness of the internet and yet billions of people decided to spend most of their time within a horribly designed, fake-news emporium of a website that sucks every possible piece of personal information out of you so it can sell it to others. And they see nothing wrong with that.
  • Peter JakackiPeter Jakacki Posts: 8,799
    edited 2015-10-28 - 05:58:50
    We could still use some basic instruction descriptions but I am starting to give each instruction it's own color coded bit-field table a bit like the old P2 document. We shall see how that goes.


    Tachyon Forth - compact, fast, forthwright and interactive
    useforthlogo-s.png
    P2 --- The LOT --- TAQOZ INTRO & LINKS --- P2 SHORTFORM DATASHEET --- TAQOZ RELOADED - 64kB binary with room to spare
    P1 --- Latest Tachyon with EASYFILE --- Tachyon Forth News Blog --- More
    paypal.png PayPal me
    Brisbane, Australia
    phone.png
  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2015-10-28 - 14:25:41
    Thanks again, Peter J. Tachyon on P2 rocks at getting this stuff available early, and allowing users verify it all is what it is.

    Your desire to document the P2 is very generous.
    Hwang Xian Shen, Puddleby-on-the-Marsh.
    All things considered, I can live and thrive without Microsoft products. LINUX is just fine.
  • Thanks again, Peter J. Tachyon on P2 rocks at getting this stuff available early, and allowing users verify it all is what it is.

    Your desire to document the P2 is very generous.

    Thanks Loopy, but now I feel like I'm "flundering" with all that I've taken on! A week ago I was all set to tack on SD FAT32 and then move on to the network servers, and now look, my "desire" to document the P2 is a rod for my own back but "somebody" has got to do it.

    As for Tachyon I realize now that I have made it incompatible with the DE0 as the DE0 doesn't have Cordic and the job would so much easier if PNut had some IFDEFs etc to make it easier to build different versions. But I will dig out my DE0 and make sure I get the latest version of Tachyon to run on it.

    If I can get on with actually writing code rather then documenting I will have a fully self-hosting system up soon and even have VGA even if it has to be bit-bashed.

    Tachyon Forth - compact, fast, forthwright and interactive
    useforthlogo-s.png
    P2 --- The LOT --- TAQOZ INTRO & LINKS --- P2 SHORTFORM DATASHEET --- TAQOZ RELOADED - 64kB binary with room to spare
    P1 --- Latest Tachyon with EASYFILE --- Tachyon Forth News Blog --- More
    paypal.png PayPal me
    Brisbane, Australia
    phone.png
  • As for Tachyon I realize now that I have made it incompatible with the DE0 as the DE0 doesn't have Cordic and the job would so much easier if PNut had some IFDEFs etc to make it easier to build different versions. But I will dig out my DE0 and make sure I get the latest version of Tachyon to run on it.

    Can't you do the IFDEFs in Tachyon? Include non-CORDIC versions of everything, and then at boot test if the CORDIC works, and if it doesn't then change any words that use the CORDIC to point to the non-CORDIC versions of the functions.

  • I use your documentation all the time. And this seemed like a good time to bump the thread.

    While I'm at it... there is a section in the cordic documentation that is missing ... regarding rotating a point. I haven't been able to figure it out:)
  • Yeah, when I need a brain break from software I format up a few more instructions until my head goes numb then I switch back and Forth (pun). Bit by bit it gets done. Mostly it's a lonely job.

    Here is a pdf of the latest version.

    Tachyon Forth - compact, fast, forthwright and interactive
    useforthlogo-s.png
    P2 --- The LOT --- TAQOZ INTRO & LINKS --- P2 SHORTFORM DATASHEET --- TAQOZ RELOADED - 64kB binary with room to spare
    P1 --- Latest Tachyon with EASYFILE --- Tachyon Forth News Blog --- More
    paypal.png PayPal me
    Brisbane, Australia
    phone.png
  • Thanks Peter
  • Okay, I've gone through Chip's latest changes and updated the document accordingly but I still can't find information on a lot of the newer instructions and I still need to go through and check all opcodes. I might reorder them in the same way Chip has it in his document to help with making changes but somehow tag them or create an extra field for the instruction class so that we can sort them back into their groups later on.

    Tachyon Forth - compact, fast, forthwright and interactive
    useforthlogo-s.png
    P2 --- The LOT --- TAQOZ INTRO & LINKS --- P2 SHORTFORM DATASHEET --- TAQOZ RELOADED - 64kB binary with room to spare
    P1 --- Latest Tachyon with EASYFILE --- Tachyon Forth News Blog --- More
    paypal.png PayPal me
    Brisbane, Australia
    phone.png
Sign In or Register to comment.