[comp.sys.handhelds] LBROWSE

bson@rice-chex.ai.mit.edu (Jan Brittenson) (11/08/90)

   This posting will contain the uuencoded directory only, as the
source codes are divided into ~15 files, most of which have to be
assembled with ASAP. Uudecode, and transfer using kermit binary mode.

			* * *


   This is LBROWSE 1.01. It is a browser partially written in ML,
partially in interpreter threads, and partially in user code. 

   LBROWSE always resides in the directory { HOME LBRW }. Don't try
and run arbitrary programs in the directory, as they're likely to
crash your calculator if given improper arguments, or none at all.

   LBROWSE is meant to be called from within a program. It displays a
list of data, and lets you move around and perform various externally
defined operations (using the menu keys) on the data.


* Calling LBROWSE

When calling LBROWSE, pass the following parameters:

	Stack level	parameter

		3	  List of data
		2	  List menu key bindings
		1	  Current path

   Enter { HOME LBRW LBROWSE } on the stack and EVAL. The path on
level one is used to restore the path upon completion, and to
temporarily restore the path when a menu key is pressed. The menu key
binding list must always have 6 entries - a null string ("") is
interpreted as "unbound." The first entry corresponds to the leftmost
menu key, and the last to the rightmost. Shifts are ignored.


* Using LBROWSE

LBROWSE redefines the keyboard to work as follows:


	Menu keys	Evaluate the key binding
	[ENTER]		Put the index of the menu entry on the stack
	[EVAL]		Put the index of the menu entry on the stack
			and exit
	[Backspace]	Exit
	[ON]		Exit
	[Arrow up]	One line up
	[Arrow down]	One line down
	[Blue] [Up]	Move to first line
	[Blue] [Down]	Move to last line

	All other keys	Ignored


* Menu key bindings

   When the user presses a menu key the corresponding binding is
evaluated with the path temporarily restored. The following parameters
are passed on the stack (a Short is a 5-nibble integer, type 20):

	Stack level	Datum

		4+n	Item[n-1]
			...
		6	Item[1]
		5	Item[0]
		4	n		(Number of items, Short)
		3	Window		(Window line, Short)
		2	Point		(Current line, Short)
		1	Path		(Always {HOME LBRW})


   SYSEVAL #18DBFh converts a short to a real, and #18CEAh converts a
real to a short. Upon return, LBROWSE expects a similar arrangement:

	Stack level	Datum

		5+n	Item[n-1]
			...
		7	Item[1]
		6	Item[0]
		5	n
		4	New window
		3	New point
		2	Path		(The same as passed)
		1	Redraw flag	(If 1, the display is redrawn; Real)

In addition, if flag 11 (the user flag) is set, LBROWSE will exit.


* Notes

   LBROWSE is about 1700 bytes. Version 1.01 is a prototype; the aim
is to write one entirely without user code for speed. It is, however,
fast enough to be useful, although the response isn't as instantaneous
as one might wish it were. Also, I have not discovered any way of
producing key repeat.


* Disclaimer

I will use Andreas' disclaimer:

     The program makes use of undocumented low-level features of
     the HP48SX calculator, and may or may not cause loss of data,
     excessive battery drainage, and/or damage to the calculator
     hardware.  The Author takes no responsibility whatsoever for 
     any damage caused by the use of this program.

     This software is provided "as is" and WITHOUT ANY EXPRESS OR
     IMPLIED WARRANTIES, including, but not limited to, THE IMPLIED
     WARRANTIES OF MERCHANTABILITY and FITNESS FOR A PARTICULAR PURPOSE.

						-- Jan Brittenson
						   bson@ai.mit.edu

O  /
 \/
 /\~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
O  \

begin 644 lbrw
M2%!(4#0X+426*O!_6@P    %05!!5$@%,RD          # "  5-2T594P4S
M*0          , ( !%)%1%($G2W@82,I_'&X'\FB<C0JH#'2Y@(!3$@N4'"4
M1%74U.8" 4R$I8'D @5.251%34PR,K\?.3:R$@-\ % 01$0T!570V0(>-A),
M(VTN$.#D82/)HM+F @%. S'"H@('  #2NQ]GJ]'F @%.M?S!)"-M+A#@Y%\C
M.3:R$@-_ '# )"3U=#55=-#9 AXV,I," 0      $ '5PA$>(<$TTN8" 4T>
M-@(4&D@N0, D)'5%92-(+E 0!!5$A91G(\T,<K@?5#:"Y (%34M%65-Y-M+,
M(%T1LO<<2"Y0$$1$- 6%Y (&0E-%5%505#:"Y ("0T=Y-M+,(%0V@N0" DU'
M>3;2S"!(+D @540D-0PC2"Y00,24Y%2$Y ("34=(+D#0%"2UA.0" T9.4T@N
M8'!41+54E-4.([DV@N0"!4%0051(OJ/1Y@(!3981XE\C.3:R$@.E 6 @-%5$
M505ET-D"ZHSQ_@/O/_ 3%K\I8.@N!0 =025E !W!H@(I , F)G<7XP(3 R(V
M]^8&$I.3 P/X$34F\?X#[S^09Q$"#\0?.BLQH D  D5$ ITMX&$CV/N!Y (%
M1$Q)3D5(+B P=(3D @1-05)+V/N1PA].*E !  X^        +J6!Y ('1D%$
M2E=)3KZC02LJ.3:R$@.4 "! 1230V0(>-H*]'T@N4$#$E.14A.0" D-'2"Y 
MT!0DM82]'TXJ4 $ [S\        NI8'D @=&041*5TE.OJ-!*RHY-K(2 X\ 
M,%#D1#70V0)$,H 8 ^\]\-L8'!*F5V*>,T K*BLQP ,  TY)3 .=+>!A(]C[
M02LJ.3:R$@,H #!09,4TT-D"'C:"Y (#14Y42"Y $%651)5C(RLQH , !%%5
M250$G2W@82/8^S&_'TXJ4 $ OXT!       NI4'&'\FBDF,C*S$P!0 #345.
M YTMX&$C3BI0 0"_C0$      "ZEP34J3;Z!Y (%34M%65.]^V%\'8?[P:("
M!0#0J1Z<--+9 AXV4A(:O?N!Y (%05!!5$B]^W&V&KZCT;L?OJ-!92-(+D @
M540DE6<CS:0QDP(!       0 :'$D2PJM*+B/QHY-K(2 YPTTMD"'C:"O1^T
MHI)C(RLQX#\:.3:R$@,R 5 @190T!570V0(>-H+D @5$3$E.12G\@>0"!4=)
M5$5-O?N!O1^]^T%8&CDVLA(#70!0 )5$5=14T-D"#CZP$@,= %#@E$15U%30
MV0+O/; 2 QT 4'"41%745-#9 H@QX"5A#CXPV .3&?9=!8@QH%EBXC*P$@-%
M "!0!270V0(>-H*]'T@N4$#$E.14A.0" D-'2"Y T!0DM83D @50251%34@N
M<& 41*1TE>3D.QJTHI)C(RLQP <  D1. ITMX&$CV/N!Y (%1$Q)3D5(+B P
M=(3D @1-05)+2"Y0X)1$5=2$Y ('1D%$2E=)3KZC02LJ.3:R$@-\ " P="0P
MDP(          !T (-!T)#"3 @          '0!00,24Y%14T-D"K#$P(@/@
M/?#> [^-L1(#,0! T!0DM430V0(C,J#.& X^0&=B-2;Q_@.5,I!G$2LQX , 
M!T9!1$I724X'S"T &0 ' ' !BA]D!@&!'V0& 8"_>0;X0680,!'AA(H4$8NK
M$>P!B>H'+0$9@1$1NU5PKF35@H$OANL&Q@@8^&BH:&"1$&0Q%>=Q%#,Q,001
M *PQ, )F^ QG$(%NJ!_CA,I503)$> "L,3$"$:XQ, )F^+EF$)$!&"%#=@' 
M$J"H?A4A0UT!P!*@J#X4$1CX8!'K6@H-&/@@0P8 @&ON$>E2!"T!&"%#9P' 
M$J#X*640(=C);M#9 BLQ@.0"!%)%1%)(+E @190T!74:  9'151+15D&G2U0
M]D%T)D9G8G0FQML#(S(@+ /,+? '  < ^$%F@+]Y!G"Q0P 0(ZPQTA-E$R9^
M.7J08^\-NJNKV-*-L2 1 B$2$B ",B $4B &DB$=\B MLF 1!@#?W]'9 EO;
M<4D'G"NV$@/1;X#V(BLQD X  T9.4P-T*H#D @)54$@N($#DA.0" TY)3$@N
M,."4Q(3D @--14Y(+C#05.2$Y (#345.2"XPT%3DA.0" TU%3D@N,-!4Y(3D
M @-%3E1(+D 0595$A>0" T563$@N0!!5E42%Y ("5$1(+B!01(3D @-.24PK
",0!%
 
end

a634@mindlink.UUCP (Rob Prior) (11/20/90)

Could the person who posted the UUENCODED version of LBROWSE
(the part RPL, part ML version) please mail me a copy?  Our site
seems to garble UUENCODED stuff.

Thanks in advance,
--
 _______________________________________________________________
|Rob Prior - President, Still Animation Logo Design, Burnaby, BC|
|---------------------------------------------------------------|
|            Mail to: a634@mindlink.uucp                        |
|   ___  _        or: !uunet!van-bc!rsoft!mindlink!a634         |
|  /__  /_\    "You must find us.... a shrubbery!!!!!!"         |
|____/ /   \____________________________________________________|