without having to scroll to the next/previous display line). Originally, calculator programming had to be done in the calculator's own command language, but as calculator hackers discovered ways to bypass the main interface of the calculators and write assembly language programs, calculator companies (particularly Texas Instruments) began to support native-mode programming on their calculator hardware, first revealing the hooks used to enable such code to operate, and later explicitly building in facilities to handle such programs directly from the user interface. Many programs written for calculators can be found on the internet. Users can download the programs to a personal computer, and then upload them to the calculator using a specialized link cable, infrared wireless link, or through a memory card. Sometimes these programs can also be run through emulators on the PC. Programming these machines can be done on the machine, on the PC side and uploaded as source code, or compiled on the PC side and uploaded as with Flash and some C/C++ implementations. In addition to computer-side language packages such as tigcc, hpgcc, and others, the PC link software available for TI, HP, Casio, and Sharp calculators contain program editors; there are also SDKs, emulators, and other tools for use on the computer side, and other manufacturer and third-party tools like the TI++ editor. Programs, data, and so forth can also be exchanged among similar machines via the same ports on the calculator used for PC connectivity. On-board programming tools which use non-native language implementations include the On-Board C Compiler for fx series Casio calculators and the TI-83 BBC Basic port. One possibility arising from the above is writing interpreters, compilers, and translator programs for additional languages for programming the machines; BBC Basic has already been ported to the TI-83 and -84 series and other onboard languages and programming tools discussed by many include Fortran, awk, Pascal, Rexx, Perl, Common Lisp, Python, tcl, and various Unix shells. Commonly available programs for calculators include everything from math/science related problem solvers to video games, as well as so-called demos. Much of this code is user-created freeware or even open source, though commercial software, particularly for educational and science/engineering markets, is also available. Programmable calculators have major websites with information, documentation, message boards, tools for download, and other things useful for this pursuit; the main sites for each manufacturer's calculators are run by third parties with varying degrees of collaboration