- dup my-#acellbytes my-#scellbytes + mod 0= if
2dup <> if
cr 0 begin ." " 1+ dup d# 26 >= until drop
26? Why that?
Indentation of non-first line, adapted from .properties.
Ah I see.
Maybe something like this:
: .p-reg ( prop len -- )
r >r my-#scells my-#acells dup r> r> bounds ?DO
2dup = IF cr THEN \ start of line dup 0= IF 2 spaces THEN \ start of "size" part dup 3 and 0= IF space THEN \ make numbers more readable i c@ 2 0.r \ print byte 1- 3dup nip + 0= IF drop dup THEN \ update counter LOOP ;
(untested, mind the bogons).
Leads to:
0 > dev /memory ok 0 > .properties name "memory" device_type "memory" reg 00 00 00 00 40 00 00 00 N?!H -- 5 : 4e 80 04 21 48 available 00 00 40 00 3f bd 40 00 <empty> ok
My patch did:
0 > dev /memory ok 0 > .properties name "memory" device_type "memory" reg 00000000 40000000 available 00004000 3fbd4000 ok
Any hint? My code may have been inefficient but better unstandable for a Forth newbie...
I found it quite the opposite -- I'm not a newbie but I found it very hard to read. Maybe needs a bit more factoring?
I forgot to multiply acells and scells by 4; also, no indent, and I put the newlines at the start of the line, not the end (this is normal in Forth, and has some advantages). This needs changing here of course.
Default for #size-cells is 1, not 2.
Copied from my-#acells. Is it wrong for #address-cells, too?
It is correct for acells.
Segher