Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!caen!spool.mu.edu!news.cs.indiana.edu!noose.ecn.purdue.edu!en.ecn.purdue.edu!blair From: blair@en.ecn.purdue.edu (Marc E Blair) Newsgroups: comp.sys.handhelds Subject: hidden variable utility for HP48 Summary: a way to easily deal with hidden variables Keywords: hidden variable Message-ID: <1991Jun11.053031.12123@en.ecn.purdue.edu> Date: 11 Jun 91 05:30:31 GMT Article-I.D.: en.1991Jun11.053031.12123 Organization: Purdue University Engineering Computer Network Lines: 227 Hello everyone! This program is designed so users can enjoy the added feature of hidden variables without accidently causing "Try to recover memory?" errors. Here is a description of what each program does: NORMAL - restores a directory to its natural state, i.e. no hidden variables HIDE - takes an argument from level one, a variable name or list, and hides it. ALL - returns a list of all variables, including the '' variable and others hidden behind it. HIDEN - returns a list of only hidden variables. NULL - creates '' on the stack SPACE - creates ' ' on the stack (I use it to create directories with no name - I set up my home menu to have only a no-name directory, and then use my no-name directory as my home diectory. This way I can hide "personalized commands" and other variables (like PRTPAR) since no variables may be hidden in the home directory (due to system use)) DELIT - takes a list from level 2 and an object from level one and deletes that object in the list if it exists. Used by HIDE program KEYS - redefines user keys for PURGE and CLVAR so one does not accidently delete a non-empty directory that looks empty. DISCLAIMER: I am not repsonsible for memory problems that may result from cosmic rays while you are using this program or anything else. enjoy! ----------------------------------------------------------->8 %%HP: T(3)A(D)F(.); DIR NORMAL \<< IF PATH { HOME } \=/ THEN NULL PURGE END \>> HIDE \<< IF DUP TYPE 6 == THEN 1 \->LIST END \-> L \<< VARS L SIZE 1 SWAP FOR A L A GET DELIT NEXT IF PATH { HOME } \=/ THEN 5 NULL STO NULL 1 \->LIST + ORDER ELSE DROP "NOT ALLOWED AT HOME" DOERR END \>> \>> ALL \<< VARS DUP SIZE NULL RCL \-> S A \<< NULL IFERR PURGE THEN DROP ELSE A NULL RCL IF SAME NOT THEN VARS A NULL STO SWAP IFERR ORDER THEN DROP END DUP 1 S SUB SWAP DUP SIZE S 1 + SWAP SUB NULL SWAP + + END END \>> \>> HIDEN \<< ALL DUP DUP NULL POS IF DUP 0 \=/ THEN 1 + SWAP SIZE SUB IFERR NULL RCL DROP THEN DROP { } ELSE IF PATH { HOME } \=/ THEN NULL SWAP + ELSE DROP { } END END ELSE 3 DROPN { } END \>> NULL \<< "" # 5B15h SYSEVAL \>> SPACE \<< " " # 5B15h SYSEVAL \>> DELIT \<< OVER SIZE \-> S \<< DUP2 POS \-> A \<< IF A 0 \=/ THEN IF S 1 == THEN DROP2 { } ELSE IF A 1 == THEN SWAP 2 S SUB SWAP DROP ELSE IF A S == THEN SWAP 1 S 1 - SUB SWAP DROP ELSE SWAP DUP 1 A 1 - SUB SWAP A 1 + S SUB + SWAP DROP END END END ELSE DROP END \>> \>> \>> KEYSTO \<< { S \<< IFERR { } SWAP DUP IF TYPE 5 == THEN DUP SIZE ELSE 1 \->LIST 1 END 1 SWAP FOR A DUP A GET RCL IF TYPE 15 == THEN IF DUP A GET RCL BYTES SWAP DROP 6.5 == THEN 1 ELSE 0 END ELSE 1 END IF THEN DUP A GET PURGE ELSE DUP A GET ROT SWAP + SWAP END NEXT DROP IF DUP { } \=/ THEN \->STR " Non-empty directory" + DOERR ELSE DROP END THEN IF { } == THEN "Too Few Arguements" ELSE DROP2 "Not Purgable" END DOERR END \>> 54.2 \<< IF PATH { HOME } \=/ THEN "" # 5B15h SYSEVAL PURGE END VARS "HIT PURGE" 1 DISP 1 FREEZE \>> 54.3 } STOKEYS \>> END --------------8<---------- Marc Blair blair@en.ecn.purdue.edu "The HP48: But, can it cook?"