Like to thank the late great Jim Butterfield for getting me into assembly language programming for the 6502/6510 so many years ago. So lucky to be able to have taken a class in person with him and others who wanted to learn. Most of which I have forgotten, except for the techniques. That was a time when Commodore gave out information about their machines. They were open source before open source was ever coined as a term. You could get documentation about the c=64 by the truckload. Think I had most of the Compute books and many of the magazines available at the time. My brother first had me interested in the Vic 20 and eventually the Commodore 64. To be able to use a monitor and a keyboard was awesome compared to the punch cards we had to use on an old IBM 360 model 40 to learn Fortran in college.
Anyway, some things have never changed. Companies want to prevent you from using your equipment to the fullest. A company that is no longer around made a third party modem that exceeded the abilities of the Commodore modem. A modem allows your computer to send and receive electronic data over the phone line. With the internet, no one really uses them anymore. Like many people, we bought that third party modem for it's extra capabilities. Unfortunately, the software that came with the modem was less than useful. When you tried to use the modem software for the Commodore modem, the modem did not respond. Many many people were preturbed by this to say the least. My understanding was that the sales of the modem subsided when the general Commodore computing public found out.
You could not return the modem back to the store as their shrink wrap agreement virtually prevented you from doing that. Thank goodness the courts have since outlawed such agreements. What to do? What to do? Research. Now the tools used in using 6510 assembly language become extremely valuable. You needed to examine the software for the third party modem to see how it worked. You also needed to know how the existing Commodore modems worked so you could examine the differences. The software for the third party modem was in ones and zeros that only the computer could understand. You needed a program called a disassembler to translate back the one's and zeros back to something that was human readable to an assembly language programmer. There were many available at the time. Tricky was the fact that the maker of the third party modem, did not want you to modify that is change their program. Today many companies do not even want you to examine their programs or code, so they make you agree to not look at the code. Some companies like a certain company from Japan gets a bit anal about it. No problem. had no intentions of modifying their code.
Need a little back ground here. Every machine has what is known as internal memory or as it known as ram. You would think you can use all the ram for you own use. That is not exacly true. Some of the memory or mailboxes are for the computer to send and receive data from the many parts of hardware attached to it. That is exactly what the modem does to send and receive data. Generally everyone tries to use the same mailboxes to remain compatible with other hardware. What the third party modem maker did was to use different mailboxes or memory locations in the operation of their modem. Not cool. So now it was time to examine the software to see where the new mailboxes were located. With a little detective work we eventually found them. Now all we had to do to use software for the Commodore modem with that modem was to change the code so it looked at the correct mailboxes.
Back then there was not that much software, so you wrote most of the software you needed for your own special needs. Ironically, if the software for the third party modem had been better than that the software for the Commodore modem, no issues would have ever been raised. People want the best, not just what you allow them to have. Ironically the company that made the third party modem had been more open with their modem, they would have done much better in the marketplace. Something that companies today should take heed of. Again Thanks Mr. Butterfield for allowing me to create better software from the third party software with what you taught us.
Note: you may never really program in assembly for most projects, but it is good to know for the special situations like in this article.
Online 6502 simulator: http://hackaday.com/2013/02/05/learn-a-little-assembly-language-for-the-6502-processor/
Actual code site: http://skilldrick.github.io/easy6502/