[comp.sys.handhelds] H.P. Query & info

cloos@acsu.buffalo.edu (james cloos) (09/05/90)

Hello all.  First the query:

As I have been off the net for the past few weeks (since ~1 June), I 
was wondering what ne w7 interesting stuff was posted during that time.

I checked out calvin.stanford already, & got a few files from there, but
it always seems that the most interesting stuff never makes it to the
ftp servers.

Has any more info been posted on libraries on the 48SX?

Have any of the guys at HP posted any interesting stuff (I do have Bill`s
\->ASC & ASC\-> programs)?

Thanks for any replies.

------------------------------

Now for the info:

Checking out objects with \->ASC, I found some interesting stuff.

Address <0312Bh> is the end_of_object pointer.  This shows the end of lists,
programs, algebraics (incl. w/in unit obj's), etc.

You will find that <02D9Dh> and <0312Bh> delimit the THEN, ELSE, DO, and
REPEAT clauses w/in the branching structures.  (NB. that if you look at
the hex-code output by \->ASC, or in memory for that matter, the addresses
I`ve quoted will show up as "D9D20" and "B2130" because Saturn stores the
fields in reverse-nybble order.)  The delimiting of the clauses is logical,
if you think of how the 28/48's run programs.  (See the many previously
posted articles on the 48SX and 28S internals/ml programming.)

Unit objects seem to have there units stored as a string, rather than an
algebraic.  At least when the unit is simple.  An example:

1_s comes out as: 
ADA20	Unit obj header
9C2A2	The pointer address for the real 1.0
C2A20	String header
70000	length of string (in hex, incl these 5 nybbles)
37	$73h = 115d = "s"
68B01	address <10B86h> I don't yet know what is does
B2130	End_of_object pointer (BTW, the name is mine)
EE9A	BYTES checksum of '1_s' in reverse order

(As an aside, in order to use ASC\-> to compile objects on the 48, we need
to have a program that can take a list of hex chars and spit out the same
4 hex chars that BYTES would on the binary of that dump.  HP: can a pseudo-
code version of the algorithm BYTES uses be made public (or an eqiv
algorythm if you don't want to make the actual one public--we wont care if
it is less efficient than the real one ;-)? )

A more complex unit object:  5_cm/s
ADA20	Unit obj header
D13A2	The pointer address for the real 5.0
FB920	Character header (TYPE 24)
36	$63h = 99d = "c"
C2A20	String header
70000	Lenght of string, incl these 5 nybbles
D6	#6Dh = 019d = "m"
C7B01	?????? (must be "/" in a unit obj)
C2A20	String header
70000	length in nybbles
37	$73h = 115d = "s"
86B01	?????? (maybe <10B7Ch> is start of denom. & <10B68h> is end of denom.
68B01	?????? (End of units?)
B2130	End of Object
DAAC	BYTES checksum (reverse order)

---

From Bill Wickes' PCOEF program (Takes an polynomial algebraic & returns 
a list of the coeficients) I got the following SYSEVAL.  Should work on
all production 48SX's, but ARCHIVE to :IO:... before trying it out!
And set your word size to 64!

#18CEAh SYSEVAL takes a real and returns an ADDRESS_OBJECT of the same
magnitude.  Call it R\->A for real \-> Address.  (BTW, addresses are 
displayed in the same base as Binary_Integers are currently dispayed in.)

Just to be sure it came thru OK, the crc for the integer #18CEAh is #EDCBh,
and \->ASC gives the string:  "E4A2051000AEC8100000000000BCDE"

Enjoy all!

-JimC
--
James H. Cloos, Jr.		cloos@acsu.buffalo.edu
		+1 716 673-1250	    Snail to:  PersonalZip: 14048-0772