fseipel@hpuxa.ircc.ohio-state.edu (Frank Seipel) (03/01/91)
Chemical Formula Display Utility (CFD) by Frank Seipel The following is a short RPL subroutine, to be called CFD, and a short example program, Call, which demonstrates its use. The purpose of CFD is to provide a means of displaying subscripted chemical formulae in user programs. CFD takes three arguments, an x-coordinate (binary integer), a y-coordinate (binary integer), and a text string (formula to display). The formula will be superimposed on PICT, beginning at the location specified by your coordinates. Any numerals in the formula will be subscripted, so as to appear like a chemical formula you would write on paper. Optionally you may include an '@' character in the string. This is interpreted as: go to column #50d and add the rest of the string to PICT at once, without subscripts -- this may be useful in right-justifying the names of compounds next to their names (see example program). See page 324 of the manual for a diagram showing the binary coordinate system; the upper left corner is { #0d #0d }, the bottom right corner is { #130 #63 }. To type '@' on the HP-48SX, key in: alpha, followed by blue shift, and then ENTER. I realize this program is rather straightforward, but it seems as if it would be something which will be written over and over by many people so I decided to post it to the net. I am working on a program to let you scroll through subscripted formulas of common compounds. Once I have this working I will write a program to compute specific enthalpy at a given temperature, and to display other physical properties such as boiling points, heats of formation, vaporization, and combustion. If you didn't guess, YES, I am studying Chemical Engineering... --------------------- STO this program as 'CFD' -------------------- %%HP: T(3)A(R)F(.); \<< 0 \-> px py str cn \<< 1 str SIZE FOR j str j j SUB DUP NUM 'cn' STO IF '57\>=cn AND cn\>=48' THEN 1 \->GROB PICT SWAP px py 4 + 2 \->LIST SWAP REPL px 4 + 'px' STO ELSE DUP IF "@" SAME THEN DROP str DUP SIZE j 1 + SWAP SUB 2 \->GROB PICT SWAP # 50d py 2 \->LIST SWAP REPL ' j=80' DEFINE ELSE 2 \->GROB PICT SWAP px py 2 \->LIST SWAP REPL px 6 + 'px' STO END END NEXT \>> \>> <END OF CDF> ---------------- STO this program as 'Call' ------------------------ %%HP: T(3)A(R)F(.); \<< # 0d # 22d "H2SO4@Sulfuric Acid" CFD { } PVIEW \>> ---------------- Second example ------------------------------------ Example calling sequence: 4: #0d 3: #0d 2: "CH3CH2CH3@Propane" 1: CFD Then hit orange-shift-graph to display PICT to see the subscripted formula in the upper right hand corner of screen. See also 'Call', above. Note: You may wish to adjust how far '@' goes over horizontally, depending on the length of your formula.