Three programs are used to emulate the FX-502P's 2 programs. The FX-502P split was between the main program and a subroutine to calculate the random numbers between 3 and 12 which was called twice for each question. For the HP48 the problem of the lack of PAUSE which also allows data entry, results in a different break-down. For the HP48 there is essentially a question generation program 'Q', and answer program 'A' and a program that sets up alarms 'Auto' to keep the programs running until a mistake is made.
The Auto program runs the tables tester in automatic mode with alarms being used to mark your inputted answers. The 'Q' program just asks a question and the 'A' program just marks the answer and if right asks another question. If the answer is wrong the 'A' option will delete the next alarm to mark the answer and so stop the iteration. Note that although Q and A will work independently of Auto, A will crash if you get the answer wrong because it will attempt to delete a non-existent alarm
I failed to get the archive to load into a friend's HP49 but simply retyping it in did work... except that I couldn't find the '?' symbol! Unlike the HP48 manual the HP49 manual is useless, but if you've got a HP49 you probably either know that or have never discovered the power of your calculator, like my friend!
Unlike the FX-502P version of this program you do have to enter the number before it can be marked. I never found a way to get the HP48 to take the value off the input line (Any suggestions? Contact me.)
| Data Input Operation | Read-out | Remark |
|---|---|---|
| Auto | "What is 3x7 ?" | Start tester and you've got 3.5s to type in the answer to 3×7. (Obviously this is randomly generated so your first numbers will, in general, be different). |
| 21 ENTER | "What is 8x7 ?" | You put in the correct answer to the previous question and get the next question, which is 8×7. |
| 48 ENTER | Ans: 56 Counter: 2 %: 50 |
You put in the wrong answer 48 and the program returns the correct answer, the number of questions asked, and the percentage correct and halts. |
To enter the following programs enter the contents of the 'Program' column in the following table as a continuous flow. Treat <<, >> and -> as the equivalent single HP48 characters rather than as 2 separate characters. ENTER always refers to the calculator's Enter key. The result will be the 3 programs Auto, Q and A. When run the the variables Alarm, Ans and C are generated
If you don't like typing try the downloads below.
| Program for Tables Tester | |
|---|---|
| Program | Remark |
| << 3.5 -> delay | Specify delay of 3.5 seconds. |
| << 0 'C' STO Q | Set counter C of correct answers to zero and call the question asking program Q. |
| DATE TIME HMS-> delay 3600 / + ->HMS | To enable the setting of the alarm to answer the question, determine current absolute date & time (in hours) and add to it the delay and convert back to hours minutes and seconds. The reason I did it this way is because the HMS+ function can't be used in programs! |
| << DROP A>> | The program to be run when the alarm goes off. This program drops the stack and calls the answer program A |
| delay 8192 * | Convert delay from 3.5s into units of 1/8192s for use in setting repeat alarm period. |
| 4 ->LIST STOALARM | Take the 4 items on the stack (date, first alarm time in h.ms, the program to run, the repeat time) convert into a list and store as an alarm. |
| 'Alarm' STO >> ENTER | Store the returned number of the just created alarm so that it can be deleted later and put the Auto program on the stack. |
| 'AUTO' STO | Store the above program. |
| << RAND 10 * IP 3 + | Generate a number between 3 and 12 inclusive. |
| RAND 10 * IP 3 + | Generate another number between 3 and 12 inclusive. |
| DUP2 * 'Ans' STO | Duplicate the 2 numbers just generated, find the product and store in 'Ans'. |
| "What is " SWAP + "x" + SWAP + " ?" + | Generate the question text from the remaining copies of the numbers. |
| 1 'C' STO+ >> ENTER | Add 1 to the counter of questions asked and enter the Q program onto the stack. |
| 'Q' STO | Store the above program. |
| << Ans IF == | Test the answer given on the stack with the correct stored answer 'Ans'. |
| THEN DROP Q | If the correct answer was given then drop the previous question from the stack and call the program to ask the next question. |
| ELSE Alarm DELALARM | If the wrong answer was given delete the repeating alarm. |
| Ans "Ans" ->TAG | Produce a tagged version of the answer to report to the user. |
| C "Counter" ->TAG | Produce a tagged version of the counter of the number of questiosn asked to report to the user. |
| C 1 - C / 100 * "%" ->TAG | Produce the percentage of correct answers for the user. |
| END >> ENTER | End the A program and enter it onto the stack. |
| 'A' STO | Store the above program. |
The the first download below is an archive of a directory that contains the program. The subsequent downloads are the same programs in text format as dragged across using the HP48's Link48 program.
When loaded into the HP48 or the emulator Emu48 the first download should be stored as a variable which will become a directory. Going into this directory you'll find another directory called 'Tables'. Enter this directory and press the CST key. The options on the CST menu are Auto, Q, and A. The actual programs are in the newly-created directory above. This prevents accidental deletion of a program. This happened to me before I'd had chance to backup the program when I first gave a friend a chance to play!
| File | Contents |
|---|---|
| HP48_tables (550 bytes) | Archive of HP48 tables tester program |
| AUTO (183 bytes) | Direct copied text version of scheduling program AUTO |
| Q (136 bytes) | Direct copied text version of question program Q |
| A (156 bytes) | Direct copied text version of answer program A |