/\ /\_ __/__ \_ __ __ _ _ __ ___ / // / ' \ / /\/ '__/ ` | ' \/ __| / __ /| |_) / / | | | (_| | | | \__ \ \/ // | ._/\/ |_| \__,_|_| |_|___/ |_| HP49 file transfer program Copyright (c) 2000 Eric R. Schendel http://sourceforge.net/projects/hptrans http://hptrans.sourceforge.net
Read the INSTALL file!
I have been using and programming the HP48SX, HP48GX, and then the new HP49G calculator for sometime now. Close to the time when I upgraded to the HP49G, I also upgraded from windows to Linux. Oh, what a blessing on both counts! The only disappointment I found was that there were no solid programs in the Linux environment to help with both file transfers and string editing between the calculator and the PC. Most programs I found were either stable with the HP48 and not the HP49, made for windows (wine would not cut it), or just did not work.
I found this to be a great opportunity to make a program which I know I will use quite a bit and to also give me some solid experience for using Linux as a programming environment. By this project I hope to find out which tools help out with developing programs for Linux, along with other Unix environments, and which tools do not. As a warning to most developers this project will seem to be overkill for a program as small and simple as this one, but this project is mainly to help me with development tools, libraries, common classes, and experiences. Also, hopefully, this program might give ideas to others who are starting their first project or just need some pointers as what to do (or not to do).
Mostly all the information from here on down is for developers or curious people who want to know more information about the development of HpTrans.
I am sure one of the first questions to come from an experienced Unix programmer is `why did you reinvent the wheel by writing the xmodem protocol?' The answer is because I can. No, but seriously, it comes from many different reasons. The first is that from extensive searching on the web, I found that there are two popular xmodem programs; one of them is commercial and the other is GPL. They both use the same executables of sx and rx for sending and receiving files. Several times I have used programs which make calls to sx or rx, but do not specify which author's to use and both do not always work interchangeably. Besides I had a difficult time in finding them on the Internet so I figure no one else should have to put up with that. Secondly, I at first tried using the GPL licensed version (of course) but it did not always want to work properly for the way I wanted. I tried debugging the source to find the problem but did not have much luck. It seemed to freeze once and a while for no apparent reason and was stubborn to kill, so I found it easier to write the protocol instead of work-a-rounds.
Later on I found this to be a good thing because it will make it easier for hptrans to interact with the HP49's xmodem server. Also the HP49's xmodem file transferring routine seems to have special quirks which are not part of the xmodem protocol such as the calculator having its own CRC routine for each transferred packet. If hptrans' xmodem routines work well and someone encourages me, I will make them available as a separate library since, as far as I know, there are not any open source xmodem libraries available.
Mostly all requirements and information about the standard xmodem protocol was found on the Internet by search engines. In addition all the information found specific to the way the HP49's xmodem server and file transferring works was find in the comp.sys.hp48 usenet group. Also a little bit of reverse engineering was used on the HP49 to figure out some unanswered questions.
One of the things I did not implement into the standard xmodem protocol was the support for ASCII files. This is required for some character translations and properly recognizing a file's original size without adding padding. The only time I will be dealing with ASCII files is through the direct process of converting HP binary string files to ASCII text, therefore the xmodem protocol does not need to handle this. Also for what I can tell CRC handling routines are not in the standard protocol. The only CRC routines that will be used are ones specially used by the HP49.
The program 'astyle' (Artistic Style) is used to keep source code at a consistent programming style. It is applied to all the source code when the command 'make maintainer-clean' is executed. If this program is not found, then this operation is skipped. The use of this program is highly suggested especially if anything is to be written to CVS.
<<< INCOMPLETE >>>
<<< INCOMPLETE >>>
astyle: Artistic Style (for coding style)
Author Tal Davidson
Site http://astyle.sourceforge.net/ License Artistic or GPL
<<< INCOMPLETE >>>