Here are some of my HP-28 utility programs, updated for the HP-48SX. You must have Bill Wickes' ASCII decoder program ASC/-> to turn the strings into programs after downloading them into your HP-48. BRIEF DESCRIPTION ad: takes the name of a recallable object from the stack and returns the object's absolute address; you then can use a peek routine to look at it, and a poke routine to modify it. (Strangely enough, I have trouble finding some objects with the built-in memory browser. I am using an 128K expansion card as merged memory. Maybe the machine has not yet fully recovered from a big memory crash that required removal of the batteries. Even port 1, which at that time was used as independent memory, could no longer be read. Unfortunate consequence: to keep your back-ups safe, REMOVE THE CARD! :-() vv: removes the outer angle brackets from a program to save 5 bytes; it expects a program in stack level 1 (so you can see whether the angle brackets are still there). pp: is a version of PUT for programs; it requires a program in stack level 3, a position in level 1, and an object in level 1. Notice that finding the position of a certain instruction in a program can get complicated if branches are involved. It may be necessary to treat certain subprograms first, and then to move the whole subprogram into the final program. The main purpose of this utility is to avothing thid expressions of the form #VWXYZ SYSEVAL in my programs, I prefer to have the code ZYXWV directly there, which saves a lot of space. To obtain this code, usually displayed as some Externals (try to recall pp to the stack -- whoa!), I use the following assembler as: assembles a single binary integer or a list of binary integers into code that can be put into (template) programs by pp. EXAMPLE: to put the code ZYXWV into a position n of a program P, recall a template for P to the stack, enter the position (where you have some dummy instruction in the template for P), enter the hex number #VWXYZh on the stack and execute first as and then pp. Notice, the angle brackest do count when you determine the position. To enter inline machine code, you probably need a list of hex numbers as input for as. Another observation: Have you ever wished to be able to recall the names of back-up objects to the stack, just like you can recall the names of ordinary objects by first pressing the quote key (row 3, column 1) and then the appropriate menu key? Aparently this is not possible, the back-up object is recalled to the stack, whether you press the quote key or not. In particular, if you call your archive file AUG21 as suggested in the Manual, you cannot see the last digit in the menu, and hence you may not remember whether you last backed up your machine on August 21, or 22 or ...?? There is a strange way out though: After pressing the Library command (orange up-arrow), and the menu key to select the port, try this: enter double colons (blue +), move the cursor one step to the right by pressing the right arrow key, and then hit the desired menu key, eg., the one displaying AUG2. Your command line will look like this: :: :n: AUG21 where n is the port number. Now hit ENTER to get the following display: : :n: AUG21 You now can PURGE the back-up object, or RECall it. STO produces an error message "Object In Use". The same error message appears, when you first recall the object to the stack, then get the funny name as described before, and then try to PURGE. The copy on the stack provides a pointer to the object you are about to PURGE, and the machine does not like this. Solution: use NEWOB after recalling the object. If you now create the funny name, you can PURGE successfully. J"urgen Koslowski Department of Mathematics Kansas State University koslowj@math.ksu.edu