Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!sdd.hp.com!ucsd!rutgers!rochester!kodak!uupsi!sunic!news.funet.fi!funic!santra!kampi.hut.fi!alo From: alo@kampi.hut.fi (Antti Louko) Newsgroups: comp.sys.handhelds Subject: RAM (or ROM) card contents (was: Hidden EQ Library features) Message-ID: <1991Jan9.092526.23383@santra.uucp> Date: 9 Jan 91 09:25:26 GMT References: <1991Jan8.131352@ee.ubc.ca> Sender: news@santra.uucp (Cnews - USENET news system) Reply-To: alo@kampi.hut.fi (Antti Louko) Organization: Helsinki University of Technology Lines: 40 In article <1991Jan8.131352@ee.ubc.ca> jmorriso@ee.ubc.ca writes: >Some new SYSEVALS: >These SYSEVALS are for the EQ Lib only, plugged into port 1. I take no >responsibility >for whatever bad things happen to you if you use these! Actually, the addresses below are not correct if you have a RAM card in port 2 and it is MERGEd with the main memory. In such a case, HP48SX swaps the adresses of the cards so that port2 becomes 80000-BFFFF and port1 becomes C0000-FFFFF. >Addres Name Number Size(bytes) >80000: FIN (270) 3184.0 >818E0: EQLIB (273) 7168.0 . . >Evaluating theses sysevals just leaves the library on the stack where >you can play with >it ( STO. ATTACH. it is an ordinary object). . . >Add 40000h to all these values if it is in port 2. Anyway, here is an easier way to get all variables (or pointers to them) of a port to the stack: %%HP: T(3)A(D)F(.); @ input is a port number (real) \<< # 18CEAh SYSEVAL @ convert real to short # 21922h SYSEVAL @ get all variables in the port to the stack # 18DBFh SYSEVAL @ convert the count to a real DUP 2 + ROLL DROP @ remove the port number from the stack \>> @ output is port variables and the number of them (real) As you have probably noticed, you can't get variables (libraries) in a ROM card or in write-protected RAM card by << :portno:libraryno RCL >>. This is probably meant as a primitive copy protection of ROM cards. Antti