[comp.sys.handhelds] HP48 improved ten-line stack display

stevev@greylady.uoregon.edu (Steve VanDevender) (03/27/91)

I picked up the ten-line stack display program 'STKV' last night,
and I liked it but for a few small bugs.  One is that since list
concatenation takes precedence over string concatenation, a list
on the stack would appear as:

{ 1 ": " foo bar baz }

instead of

1: { foo bar baz }

The other potential bug was that the program assumed you have a
131 x 64 PICT, so if your PICT was larger, it would write into
the upper left of a larger PICT but display the PICT centered.
It was also not nearly as tightly written as it could be, so here
is my improved version of STKV:

STKV:  checksum #22013d, 172.5 bytes

%%HP: T(3)A(D)F(.);
\<<
  IF DEPTH		@ if anything's on the stack
  THEN PICT RCL		@ recall the current PICT GROB
    PICT PURGE		@ purge the PICT; a new 131x64 PICT will be created
    1 DEPTH 2 - 10 MIN  @ view up to 10 levels or as many as there are if less
    FOR j
      PICT #0d		@ push PICT and x-coordinate of display line
      #60d j #6d * -	@ calculate y coordinate of stack line
      2 \->LIST		@ and put coordinates in list
      j ": " OVER       @ get j and the string it will be added to, copy j
      5 + PICK \->STR   @ get stack object in level j and convert to a string
      + + 		@ concatenate j, ": ", string of level j
      1 \->GROB		@ make into a GROB with smallest font
      REPL		@ place in PICT
    NEXT
    { } PVIEW           @ display PICT in scrolling mode (but it won't scroll)
    PICT STO		@ restore old PICT
  END
\>>
--
Steve VanDevender 	stevev@greylady.uoregon.edu
"Bipedalism--an unrecognized disease affecting over 99% of the population.
Symptoms include lack of traffic sense, slow rate of travel, and the
classic, easily recognized behavior known as walking."

ahernsd@mentor.cc.purdue.edu (Dynastar) (03/28/91)

A possible bug I may have found in this program is when it displays a
program.  The last character before the >> is a solid character.

In other words, it displays

1: << X COS_>>                where _ is a solid character

rather than

1: << X COS >>

I assume this block is a carriage return, but I don't know how
to fix this error.  Any ideas?
-- 
Sean Ahern ----------- Purdue University --------- ahernsd@mentor.cc.purdue.edu
Dan Quayle: "Japan is an important ally of ours.  Japan and the United States
             of the Western industrialized capacity, 60 percent of the GNP,
  :-)        two countries.  That's a statement in and of itself."

stevev@greylady.uoregon.edu (Steve VanDevender) (03/30/91)

I assume that this is because \->STR converts an object to appear
as it would in the editor, so there is a block after each program
open quote and one before each program close quote.

Anyone know a SYSEVAL that converts an object to its compact
stack display?
--
Steve VanDevender 	stevev@greylady.uoregon.edu
"Bipedalism--an unrecognized disease affecting over 99% of the population.
Symptoms include lack of traffic sense, slow rate of travel, and the
classic, easily recognized behavior known as walking."

bson@rice-chex.ai.mit.edu (Jan Brittenson) (03/31/91)

In a posting of [30 Mar 91 01:15:15 GMT]
   stevev@greylady.uoregon.edu (Steve VanDevender) writes:

 > Anyone know a SYSEVAL that converts an object to its compact stack
 > display?

You may find the following addresses useful:

	#1596e	Converts object and index to stack display string

	Expects:
		3: index.sysbin		(stack level index)
		2: object		(any object)
		1: maxlen.sysbin	(maximum string size - 1)


	#15955	Same, but uses maxlen = 19 decimal (i.e. 20 chars)

	Expects:
		2: index.sysbin
		1: object.any


For example:

	:&:5 EVAL			@ Index <5>
	<< 1 2 3 << 4 5 6 >> 7 8 >>	@ Object
	
	#15955h SYSEVAL

	--> "5: << 1 2 3 << 4 5 6 >> 7 "

	The program delimiters and the ellipsis are of course only
	one character each.

						-- Jan Brittenson
						   bson@ai.mit.edu