Using SERIAL()
to write to stdout
on Linux does not work.
OS: Linux Mint 21.2
function _init() string="test" for i=0,#string do poke(0x4300+i, string[i]) --string as an array of charcodes end serial(0x805,0x4300,#string + 1) printh("test2") end |
The stdout
writing code came from this post about communicating with nodejs using serial.
This cart fails to write test
to stdout using SERIAL()
but succeeds when writing test2
using PRINTH()
.
The code doesn't make any error messages either.
I'm on Manjaro 23.0.2 and also don't get anything to stdout from SERIAL() using this code, FWIW.
This code works: (on manjaro)
str="hello" poke(0x4300,ord(str,1,#str)) serial(0x805,0x4300,#str) |
The issue with your code is poke(0x4300+i, string[i])
-- you want poke(0x4300+i, ord(string,i))
instead.
(If you try to poke a string it seems to set the address to 0 instead: poke(0,12)print(@0) poke(0,'a')print(@0)
prints 12 0
)
Thanks! I just tried it and it seems to work for me too. I guess whatever code was in that original post must be a bit outdated.
> (If you try to poke a string it seems to set the address to 0 instead: poke(0,12)print(@0) poke(0,'a')print(@0) prints 12 0)
I think the issue is that PICO-8 is trying to coerce the second arg to a number, probably using tonum()
, which returns nothing if given an alpha character, meaning you are effectively doing poke(0)
, which infers the second arg, the value parameter, to be 0, similar to how you can clamp to positive numbers with just max(v)
instead of saying max(v,0)
:
[Please log in to post a comment]