What do you guys think of the pico calc?

My purpose for porting the programs was to force myself to dig into MMBasic and learn about it.

I plan to share the programs at some point, but they need more polish. And I need more time to do that. It will probably be on a GitHub repo since that’s the simplest thing for me.

2 Likes

The version of PicoMite for PicoCalc that is “official” has been shown to be out of date. So it’s possible this was a feature added later, after that old build. I’m not sure if the current build includes the most recent PicoMite or not. Likely it will need to be something sone by the community (like adding WEB, etc.)

Here’s the thread about PicoMite versions:

If your PicoCalc shows version 6.00.xx then it’s running the latest. But I’m not sure that’s even been made available yet. The thread also includes a build for the Pico2 (a bit further down the thread), since it requires different firmware than the Pico.

There’s also some relevant information at the end regarding which USB connector to use when programming, powering, and potential issues using the keyboard when one of the USB cables is still plugged in. Probably worth reading the entire thread. :wink:

What version of MMBasic are you running? I’m running 6.00.02.

1 Like

Yup, really need to know exact PicoMite version for any bug reports.

If you are using the version that Clockwork Pi initially distributed then it is just possible it was forked from the period when the old limitation of 127 (128?) internal commands had just been fixed and there was a little resulting instability thereafter.

IF A=E THEN 100

should certainly work with PicoMite 6.00.02, though it is always wise to include an entire minimal program that should work rather than just a snippet.

Best wishes,

Tom

1 Like
  1. MMBasic doesn’t allow “THEN ”. So I have to change everything to use “THEN GOTO ”. Not bad, but annoying since “THEN ” is standard BASIC.

Should work, see my earlier comment.

  1. Variables like X and X$ cannot exist at the same time. Again, not bad, but annoying. But old BASIC allowed for it.

That’s life, personally I think it is an improvement.

  1. There is no new line after an INPUT statement. So I need to add a PRINT after every INPUT.

Really, can we have a full minimal example ?

  1. The COLOR command is different and has some issues.

Different to what ? I wasn’t aware there was a standard.

Changing color on the same line doesn’t seem to work correctly. So if you “COLOR RGB(RED): PRINT “HELLO”;:COLOR RGB(WHITE):PRINT” it doesn’t display just “HELLO” in red. The “COLOR RGB(WHITE)” doesn’t seem to take. More testing is needed.

Works on my PicoMite VGA USB running v6.00.02b17. Perhaps you are running older firmware, or perhaps we need a full minimal example ?

  1. There are other minor incompatibilities from older BASIC. LOCATE is pixel based, not character based. I figured out how to fix that, though, by using MM.FONTWIDTH and MM.FONTHEIGHT.

Does MMBasic even have a LOCATE command ? or are you comparing apples with oranges ?

Best wishes,

Tom

1 Like

Regarding vintage computers it resembles, I am reminded of the HP-71B, which I looked at in 1984. I chose an HP-41CX instead, because it was more like a regular calculator, this was before it was common to use computers for everything.

[quote=“thwill, post:68, topic:16030, full:true”]

  1. MMBasic doesn’t allow “THEN ”. So I have to change everything to use “THEN GOTO ”. Not bad, but annoying since “THEN ” is standard BASIC.

Should work, see my earlier comment.

I just did a minimalist test and it does work. Weird that it didn’t work when I used the old tyme BASIC programs. Something else must be at play here.

  1. Variables like X and X$ cannot exist at the same time. Again, not bad, but annoying. But old BASIC allowed for it.

That’s life, personally I think it is an improvement.

I agree. It was just when porting the old programs that it was a “problem”.

  1. There is no new line after an INPUT statement. So I need to add a PRINT after every INPUT.

Really, can we have a full minimal example ?

10 input “What is your name”;N$
20 print "Hello ";N$

When run I displayed is “What is you name? fredHelloFred”.

  1. The COLOR command is different and has some issues.
    Different to what ? I wasn’t aware there was a standard.

Works on my PicoMite VGA USB running v6.00.02b17. Perhaps you are running older firmware, or perhaps we need a full minimal example ?

Mine is reporting version 5.09.

Like I said, more testing needed. This looks like it was bad documentation.
The documentation I am working from says this for the COLOR command:
“The background is optional and if not specified will default to black.”
But it doesn’t default to black. It works if I specify it.

  1. There are other minor incompatibilities from older BASIC. LOCATE is pixel based, not character based. I figured out how to fix that, though, by using MM.FONTWIDTH and MM.FONTHEIGHT.

Does MMBasic even have a LOCATE command ? or are you comparing apples with oranges ?

No. I misspoke. I used the PRINT @(x,y) for the LOCATE stuff I was converting.

The the x,y used are pixel values, not character values. So if I want to locate something at 5 lines down, 5 characters over, PRINT @(5,5) “Hello” won’t do what I expect.

So if I want to print something 5 lines down and 2 characters over, I have to do:
PRINT @(5 * MM.FONTWIDTH,5 * MM.FONTHEIGHT) “Hello”

Mine is reporting 5.09

It is like a modern 2016 Pocket Chip.also pricewise. But more capable in most ways and less in other (WLAN). I am excited what the community will do with it, and how they expand the possibilities of this device.

  1. There is no new line after an INPUT statement. So I need to add a PRINT after every INPUT.

Really, can we have a full minimal example ?

10 input “What is your name”;N$
20 print "Hello ";N$

I think that might be a PicoCalc specific bug. Looking at their patch file I’m wondering about the change on line 865 from ‘\r’ to ‘\n’.

  1. There are other minor incompatibilities from older BASIC. LOCATE is pixel based, not character based. I figured out how to fix that, though, by using MM.FONTWIDTH and MM.FONTHEIGHT.

Does MMBasic even have a LOCATE command ? or are you comparing apples with oranges ?

No. I misspoke. I used the PRINT @(x,y) for the LOCATE stuff I was converting.

The the x,y used are pixel values, not character values. So if I want to locate something at 5 lines down, 5 characters over, PRINT @(5,5) “Hello” won’t do what I expect.

So if I want to print something 5 lines down and 2 characters over, I have to do:
PRINT @(5 * MM.FONTWIDTH,5 * MM.FONTHEIGHT) “Hello”

Right, yes I agree that sometimes it would be nice to be able to use character coordinates rather than pixels in PRINT statements … unfortunately that’s not the way it is.

Tom

Then again, pixel coordinates give you much finer control over placement of the text than character coordinates.

Then again, pixel coordinates give you much finer control over placement of the text than character coordinates.

But we have the TEXT command using pixel coordinates so PRINT could have used character coordinates.

What storage space issues are you having? I mostly just use the B: drive which is the SD card and there is plenty of space for anything I can think of and a lot more than 16MB/8MB of the Pimoroni. I like Pimoroni stuff and own some as well, but the Pico 1 is working out well for me at the moment and I plan on upgrading to a Pico 2 once I solder some headers on one of mine.

1 Like

If you hit F1 it should list the files on the SD-Card but mine does nothing when I hit F1.
Anyone know if the SD-card is formatted wrongly or if my F1 key is not working! (hopefully the former!)
Just wondered…

My F1 does nothing either. I use the FILES command to list the files on the SD card.

2 Likes

Thanks for the reply and for confirming your experience of this.
“Files” works for me also.
Weird that F1 doesn’t do anything though as that is the default for the Files command.

I think its amazing and a good tool.

A “solution” :

Option escape
input “What is your name”;N$
print "\r\nHello ";N$

Better than nothing… :wink:

For me, I just did:

input “What is your name”;N$:print
print "Hello ";N$

to fix things.

1 Like