Shop OBEX P1 Docs P2 Docs Learn Events
Not to forget: P2 Assembly for Education — Parallax Forums

Not to forget: P2 Assembly for Education

Spin2 and uPython have the liberal arts covered. And C has general computing covered. But as an "Introduction to Assembly Programming, p101" I don't think you can beat PASM2. PASM2 is sort of RISCplus or CISCminus. So, principles of both RISC and CISC assembly programming can be briefed.

I am absolutely in love with PASM2. The beauty of being able to program without any concern for someone else's syntax has to be experienced to be fully appreciated.

While I have to admit that I'm not exactly a SmartPin wizard, the rest of PASM2 could not be easier, and it is complete. If there is something you want to do to a number... you can do it in about two clock cycles.








Comments

  • evanhevanh Posts: 15,126
    Hear, hear! I haven't wanted to leave, even for maths, just engage the cordic. I've really got used to using ORG for managing sections for cog-only tasks. I guess it's an alternative to spin's objects.

    The only niggle is the workaround, and convention, required for adjusting the sysclock PLL.

  • rjo__rjo__ Posts: 2,114
    I have seen the conversations:) but I haven't run into that yet, still on a P123A9. That would be a subroutine.
  • rjo__ wrote: »
    Spin2 and uPython have the liberal arts covered. And C has general computing covered. But as an "Introduction to Assembly Programming, p101" I don't think you can beat PASM2. PASM2 is sort of RISCplus or CISCminus. So, principles of both RISC and CISC assembly programming can be briefed.

    I am absolutely in love with PASM2. The beauty of being able to program without any concern for someone else's syntax has to be experienced to be fully appreciated.

    While I have to admit that I'm not exactly a SmartPin wizard, the rest of PASM2 could not be easier, and it is complete. If there is something you want to do to a number... you can do it in about two clock cycles.

    Ditto. Ken, even if it is just a big tutorial, it will be so helpful to users. It wasn't until I buckled down and started using ASM, that I really understood the power of the Prop 1.
  • Cluso99Cluso99 Posts: 18,066
    I have programmed many (too many to list) micros, and minis for that matter, in assembler. The mini was the "best" by a country mile - and I must say here that P1 is in many respects quite similar. Then I think would be a race between Motorola 68705 and the Propeller 1 followed by P2. None of the others come close to the simplicity of P1 & P2.

    So, for nowadays, P1 & P2 take the cake for simplicity and regularity of instructions. If you have/need/want to learn assembler, you cannot go wrong with starting on the P1 or P2 :smiley:
  • evanhevanh Posts: 15,126
    For that era, I'd strongly vote for the 68000's. They were a really elegant step up from any of the 6800 derivatives. The fully 32-bit big-endian ISA and generous general register set made it shine in assembly. If IBM had chosen the Motorola path it would have made all the difference to the PC being something decent. And would have produced an entirely different industry POV of what's normal.
  • Cluso99Cluso99 Posts: 18,066
    evanh wrote: »
    ...
    68000 The fully 32-bit big-endian ISA and generous general register set made it shine in assembly. If IBM had chosen the Motorola path it would have made all the difference to the PC being something decent. And would have produced an entirely different industry POV of what's normal.
    Yes, a totally different result. No page switching etc. But IBM couldn’t buy a piece of Motorola and they could buy a piece of Intel. And then they sold it :(

  • evanhevanh Posts: 15,126
    edited 2019-07-09 11:00
    rjo__ wrote: »
    I have seen the conversations:) but I haven't run into that yet, still on a P123A9. That would be a subroutine.
    Not really. The default workaround approach isn't much bigger than without the flaw, a couple more instructions. The hassle is in learning and maintaining the details of the convention needed for compatibility between programs. Namely, a reserved area at the start of hubRAM is assigned for passing the config from one program to the next.
  • evanhevanh Posts: 15,126
    edited 2019-07-09 11:24
    Cluso99 wrote: »
    Yes, a totally different result. No page switching etc. But IBM couldn’t buy a piece of Motorola and they could buy a piece of Intel. And then they sold it :(
    There's all sorts of rumours about what and why, including that it was the 6800 rather than 68000 ... but those rumours all should be taken with a very large bucket of salt. I would imagine component price was the main factor. The 68008 wasn't yet on the market and Intel was offering the 8088 for their cheapest option. Which in turn cheapens other areas of whole board cost.

    PS: Motorola probably never wanted to do the 68008 because the 68000 was already nerf'd to firing in halves as it was.
  • Cluso99Cluso99 Posts: 18,066
    edited 2019-07-09 12:37
    There were lots of rumours, and there were some of us that had inside knowledge ;)

    Things were a lot different back then. We could talk, and did, to the bosses. My business partners had face to face meeting with Jobs and Scully. I used to speak to the design engineers on the MC68705P3S before it’s release. Same with the 88100 RISC CPU. Zilog, Rockwell, etc. Now you cannot get anywhere near people at the top of big companies, and that also means you cannot get decent info about the chips if you need to. That’s what is so refreshing with Parallax.

    BTW Somewhere I have a copy of our first framed colored Apple (Cupertino) cheque ~1983.
  • evanhevanh Posts: 15,126
    But no insider on IBM's decision making.
  • Cluso99Cluso99 Posts: 18,066
    Not directly, no.
    Did you use any NetComm modems?
  • evanhevanh Posts: 15,126
    edited 2019-07-09 16:04
    Ha, I just bought my first NetComm a couple of months back, though using it only as a fibre router with VoIP. Cheapest thing I could find with VoIP. Worked flawlessly once I separated the phones from the still energised fixed copper line. :) Can't yet buy cheap routers without an included DSL modem, I note.

    Historically, I've purchased two dialup modems. Don't remember brand of either to be honest. First one was 300 baud in mid 1980's, second one was 19200 bps in early 1990's but never worked above 14400. Needed a firmware fix I think. I went dark for a number of years after Commodore died. Next was a cable modem+Linksys router around 2000/2001.
  • Cluso99Cluso99 Posts: 18,066
    edited 2019-07-09 16:09
    Pity, I was going to share an Easter egg if you had a particularly old one. There weren’t any in the SimpleModems.
  • evanhevanh Posts: 15,126
    Btw, once I worked out that tech support was available I was impressed with the speed of that support. It caught me off guard that the contact details were completely non-public. But I can understand why and it did work well once I clued in to it. The interface didn't get in the way, the history was all there, the ticket details were listed, no tracking scripts, and the integration between web and email was very neat too. Including attachments.

    Positive experience - New experience for the Joe Average category for sure.
  • rjo__rjo__ Posts: 2,114
    evanh wrote: »
    rjo__ wrote: »
    I have seen the conversations:) but I haven't run into that yet, still on a P123A9. That would be a subroutine.
    Not really. The default workaround approach isn't much bigger than without the flaw, a couple more instructions. The hassle is in learning and maintaining the details of the convention needed for compatibility between programs. Namely, a reserved area at the start of hubRAM is assigned for passing the config from one program to the next.

    I think you meant to say "feature":) As I recall the conversation Chip misplaced a quark, which then found its way into the vortex and if you don't do it just right there is the possibility of butterfly beating its wings in the wrong direction... or something like that.
  • evanhevanh Posts: 15,126
    edited 2019-07-10 04:34
    :)

    I've started trying to make a callable routine for dynamic frequency selection. (My previous work had a version that was part of a big inline loop.)

    The workaround part almost disappears into the baggage of extra reserved variables, prep and recalculation. But ever then, it's not going to suit everyone because I'm only making the multiplier dynamic.

  • can we start a tutorial thread. I will start it. Please look for it. Starting from the basics of high level language to low level and all of the math to explain why we:
    for example

    shift something to the left or right to make something work.
Sign In or Register to comment.