I've heard mention many times of screen editing commands on the Apple // for fixing typos in BASIC programs (and patching code in the monitor?). I did not learn these growing up, never having the original manuals available in computer labs in school. What are the commands, and how do they work?

Are these built into the Apple // specifically, or do legal clones (e.g. Laser) have them as well? What about other machines based on Microsoft 6502 BASIC like Commodore?

up vote 19 down vote accepted

The Apple II has an input buffer separate from the screen, with a maximum capacity of 256 characters. Typing a printable character adds it to the buffer and the screen. The left-arrow button removes a character from the input buffer and moves the cursor left. The right arrow adds the character at the cursor position to the input buffer and moves the cursor right.

Hitting the escape key followed by I, J, K, or M will move the cursor up, left, right, or down, respectively, without affecting the input buffer. On the Apple //e, escape followed by arrow keys will do likewise. Press escape again to return to normal typing mode. If one wishes to modify a line of a program, one can use LIST to display it, then use Escape-I and J to move the cursor to the start of the line, hit escape to return to normal typing mode, and then use the right-arrow key to re-enter data from the screen into the input buffer. One can delete data by using escape-K to skip past it without moving it into the buffer, or in many cases one may simply space over it. Because LIST spaces things widely and AppleSoft generally ignores spaces, one can insert a few characters here and there by replacing spaces; larger inserts can be handled by using escape-J to move the cursor left after having imported some text, and then typing the characters to be inserted.

Once upon a time, I write a utility to continuously display the last 40 characters of the input buffer at the top of the screen; I wouldn't be surprised if some such thing exists within the Internet-connected universe.

  • 3
    If you put an Apple //e into 80 column mode using PR#3 then the cursor changes from an inverse space to a inverse plus when you cursor around which makes it a bit easier to use. You can also press ESC followed by 4 or 8 to toggle between 40 & 80 column modes. – PeterI May 19 '16 at 16:45
  • 4
    The Applesoft LIST formatting adds spaces at the edge of the screen, which can screw things up if you're copying over quoted text, like a PRINT statement. Using POKE 33,33 before LIST will get a listing without the spaces at the edge, making it much easier to copy over code. Use POKE 33,40 to restore the window to 40 columns. In 80-column mode, POKE 33,73 instead. – fadden May 19 '16 at 17:42

Though supercat points out the built-in way of editing BASIC programs on the screen (well, machine language as well if you were doing it via the monitor and mini-assembler), there are better tools for this. Specifically, I was a big fan of GPLE from Beagle Bros. back in the day.

The main problem that you run into with the screen editing method is that the listing of a BASIC program has certain indentations and sometimes in inconvenient places (e.g. in a quoted string). Though you can ESC IJKM/arrows to avoid this, it is still a bit of a hassle. As well, there is no insert/delete functions in the middle of the line, which GPLE handles for you.

Another alternative is MD-BASIC from Morgan Davis. I never used it myself, but the idea is that you can write BASIC programs in an improved language from AppleSoft (e.g. labels instead of line numbers) and it will "compile" it down to tight AppleSoft.

  • That's useful information. I was specifically asking about what the editing commands were because I've heard them discussed but not known what they were exactly. But knowing about alternative ways of generating Applesoft programs is useful as well. – Joseph Carter May 24 '16 at 0:15
  • 2
    I want a SE dedicated to Beagle Bros. utils and advertisements. – jdv May 26 '16 at 4:37

Your Answer

 
discard

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.