and/or IrDA transceiver connecting the calculator to a computer make the process easier and expands other possibilities such as on-board spreadsheet, database, graphics, and word processing programs. The second option is being able to code the programs on board the calculator itself. This option is facilitated by the inclusion of full-screen text editors and other programming tools in the default feature set of the calculator or as optional items. Some calculators have QWERTY keyboards and others can be attached to an external keyboard which can be close to the size of a regular 102-key computer keyboard. Programming is a major use for the software and cables used to connect calculators to computers. The most common programming languages used for calculators are similar to keystroke-macro languages and variants of BASIC. The latter can have a large feature set—approaching that of BASIC as found in computers—including character and string manipulation, advanced conditional and branching statements, sound, graphics, and more including, of course, the huge spectrum of mathematical, string, bit-manipulation, number base, I/O, and graphics functions built into the machine. Languages for programming calculators fall into all of the main groups, i.e. machine code, low-level, mid-level, high-level languages for systems and application programming, scripting, macro, and glue languages, procedural, functional, imperative &. object-oriented programming can be achieved in some cases. Most calculators capable to being connected to a computer can be programmed in assembly language and machine code, although on some calculators this is only possible through using exploits. The most common assembly and machine languages are for TMS9900, SH-3, Zilog Z80, and various Motorola chips (e.g. a modified 68000) which serve as the main processors of the machines although many (not all) are modified to some extent from their use elsewhere. Some manufacturers do not document and even mildly discourage the assembly language programming of their machines because they must be programmed in this way by putting together the program on the PC and then forcing it into the calculator by various improvised methods. Other on-board programming languages include purpose-made languages, variants of Eiffel, Forth, and Lisp, and Command Script facilities which are similar in function to batch/shell programming and other glue languages on computers but generally not as full featured. Ports of other languages like BBC BASIC and development of on-board interpreters for Fortran, REXX, AWK, Perl, Unix shells (e.g., bash, zsh), other shells (DOS/Windows 9x, OS/2, and Windows NT family