Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!think.com!paperboy!snorkelwacker.mit.edu!ai-lab!wheat-chex!bson From: bson@wheat-chex.ai.mit.edu (Jan Brittenson) Newsgroups: comp.sys.handhelds Subject: Re: Good ways to... Message-ID: <15151@life.ai.mit.edu> Date: 22 Apr 91 06:13:57 GMT References: <21042121491070@vms3.macc.wisc.edu> Sender: news@ai.mit.edu Organization: nil Lines: 71 In a posting of [22 Apr 91 02:49:00 GMT] @vms3.macc.wisc.edu:KAUFMAN@ETHL.DecNet (KAUFMAN) writes: > How about this? > STRUP [4E04] > << DUP SIZE 1 SWAP > FOR i DUP i DUP > SUB NUM DUP DUP 96 > > SWAP 123 < AND > IF > THEN 32 - CHR > SWAP DUP 1 i 1 - SUB > SWAP DUP SIZE i 1 + > SWAP SUB 3 ROLLD > SWAP + SWAP + > ELSE DROP > END > NEXT > >> Doesn't work for the entire ISO 8859-1 character set, unfortunately. The best thing would probably be to use a 256-character translation table. Fortunately, converting HP-48 characters to uppercase is identical to converting ISO 8859-1 to uppercase. Here is such a translation table, used by the STAR assembler, in C. (Notice the German double-S exception, it translates to itself.) It should be trivial to write an Emacs macro (or what tools are being used) to transform this into an HP-48 string, or STAR assembler. (The table version probably *will* run faster than explicitly checking for all odds and ends of ISO 8859-1. It will probably use more memory, though.) /* ISO 8859-1 uppercase conversion table */ unsigned char upper_table[0400] = { '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', '\100', '\101', '\102', '\103', '\104', '\105', '\106', '\107', '\110', '\111', '\112', '\113', '\114', '\115', '\116', '\117', '\120', '\121', '\122', '\123', '\124', '\125', '\126', '\127', '\130', '\131', '\132', '\133', '\134', '\135', '\136', '\137', '\140', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '\173', '\174', '\175', '\176', '\177', '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307', '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317', '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327', '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337', '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307', '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317', '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\367', '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\377' }; -- Jan Brittenson bson@ai.mit.edu