How to: DIY changing the APPLE ][ title

It's been almost 40 years, so bear me if I don't remember all the details....

 

Here are my old notes on how to change the APPLE ][ title that shows up on the II+ screen when you turn on the power. You can change it to whatever you like (as long as it's 8 characters or less -spaces included).

This is a permanent change as it'll be stored in a ROM chip, replacing the original ROM from Apple (keep the original in case you want to go back). It's been performed on a 64K (48+16) Apple II+ clone, but might (or might not) work with the other models (Apple ][, ][ Europlus, J-Plus, IIe, //c).

 

What you need

  • 48K Apple II+ (other Apple II variants might also work, but I've not tried this)
  • 16K RAM card in slot#0
  • EPROM programmer (I've used an AP-64e card in my Apple II+)
  • A blank (erased/empty) EPROM (2716 in my case, which is a II+ clone. I'm not sure what the original II+ uses -check first!)

 

Overview

Using machine code programming you load the contents of the applicable motherboard ROM (F8) into RAM memory, edit the applicable code there, then save it to disk (optional). Step 2 consists of using that code to "burn" (program) it to a blank EPROM chip which will replace the existing F8 ROM (located next to the 6502 processor) on the Apple II+ motherboard.

 

 

You can change the title to anything as long as it's all UPPER CASE, normal characters and is no longer than 8 characters (spaces included). You enter the characters in hexidecimal code.

When done you burn (program) it into a blank EPROM chip which replaces the existing F8 ROM on the II+ motherboard. I have an AP-64e programmer card in my II+ which I used for this, but I suppose there are ways to do it, with other programmers on other platforms (NOTE: many modern EPROM programmers these days don't support the higher 21V and 25V programming standards for many older EPROM types! Check before buying.

Again, others reading might have info to add here.

 

Part 1: machine-code programming

Don't be put off by the title and go away just yet!

The author of this article is not a programmer either, and it's a matter of following the step-by-step guide below, so just hang in there for a little while.

In this example we'll change the APPLE ][ title to COCONUT, but you can change it to anything you want, just as long as it's no longer than 8 characters (spaces count as characters).

 

1) Prepare a pre-formatted DOS disk (for saving the file). This step is optional.

ProDOS will likely cause problems as it utilizes the 16K RAM-card, so stick to good old DOS 3.3.

To format (initialize) a blank disk on the Apple II, do the following:

  • Insert any disk with DOS 3.3 on it and power up the computer (which will auto-load it)
  • replace the DOS disk with a blank one
  • enter the following commands (press the RETURN key after each line)
    • NEW (erases anything in memory)
    • INIT HELLO (formats the disk)
  • power off the computer (to erase its memory), then on again to boot with the newly formatted disk

 

2)

2) In case of the floppy disk you booted with contained any auto-loading program (i.e. "HELLO") in form of a program selector etc. I'd be on the safe side and clear it completely from memory. At the Applesoft BASIC prompt, write:

NEW (followed by RETURN)

then, to make sure there's really nothing there, write:

LIST (followed by RETURN). You should see nothing listed, indicating memory is cleared.

 

3) enter the following (press RETURN after each line. Don't enter my comments (in red) below though!)

NOTE: ALL "0" characters in the code (i.e. C081 C081) are the numerical "zero", NOT the letter "o" !!!

 

CALL -151 (enter the machine code monitor)

C081 C081
F800<F800.FFFFM
C083 C083
F800L

F800 - 4A
F801 - 0B
F800:00
F800L

F800 - 00
F801 - 08

FB09:C3 CF C3 CF CE D5 D4 A0  (COCONUT space at the end : see more examples below)

FB60G  (show new title, re-enter the above line if incorrect, then check again with this command)

1000<F800.FFFFM (move to RAM address $1000 -I assume into the 16K RAM card)
BSAVE F8-EPROM-COCONUT,A$1000,L$800 (save file to disk, from RAM address $1000 and length $800)
FP (return to the Applesoft BASIC prompt -so you can CATALOG the disk etc.)

 

Now you can use the file to burn (program) a blank EPROM from address $1000.

For posting these instructions I've used the Virtual ][ emulator on a Mac, and I can't remember the exact details on how to burn the new EPROM, but as far as I remember it's a straight-forward task with the AP-64e programmer (refer to its manual), as long as you remember the start address ($1000) from RAM memory.

 

Here are some more examples of new titles (keep in mind that you have to fill up all 8 characters, so use spaces before/after the title to align it in the middle of the screen (or however you like). Everything is entered with hex-values.

After a lot of online searching I finally found an Apple II ASCII to hex table, courtesy of Beagle Bros. I assume the Apple II standard for this is completely different from other standards, as none of the other ASCII-Hex tables/online calculators gave the same values.

 

I've cut out the relevant parts here and coloured the ASCII character column in green and the equivalent hex value in the red column next to it:

 

 

Examples of other titles (using the above ASCII-hex translation table):

 

FB09: A0 CB C9 D7 C9 A0 DD DB (space KIWI space ][ )

FB09: CC C9 CD C5 A0 BA AD A9  (LIME space :-) )

FB09: C5 D5 D2 CF D0 CC D4 D3 (EUROPLUS)

FB09: C7 D5 C1 D5 C1 A0 AF AF (GUAVA space// )

 

PS: double check for correct character input using:  FB60G as shown in the above listing before commiting to EPROM-burning and/or saving the file to disk.

Comments

drakepirate's picture

Thank you.

I personalize my clone with a HEX file editor, looking for position FB09 in a ROM EPROM dump, then change and reprogram it. Now able to use ProDos 

drakepirate wrote:

Thank you.

I personalize my clone with a HEX file editor, looking for position FB09 in a ROM EPROM dump, then change and reprogram it. Now able to use ProDos 

 

You're welcome :-)

Wow! That's very cool and probably a lot less work.

If you don't mind, could you followup with a more detailed step-by-step on how you do that?

TedThompson's picture

Its the right address for the //e but not for the //e Enhanced or Platinum. The ASCII bytes for those models is at $FF0A (I think?, it's definitely not at $FB09)

yuanyasmine's picture

very useful, thanks for sharing.

YuanYasmine: You're welcome :-)

 

TedThompson: So the whole procedure will work for the regular //e too? That's very cool.

If I'm not mistaken, the //e (unlike the II+) can display lower case letters -does this mean the boot-up title can also be edited to include lower case letters?

 

Apart from the II+ and (regular) //e, does anyone know if the procedure can be applied to other machines such as the regular Apple II (I suppose with a base 48K and a 16K RAM card)?

And does anyone know which EPROM types can be used for the various models to replace the current F8 ROM? My II+ clone uses 2716 chips, but IIRC at least some of the original II series used different polarity ROMs which (in case of exchanging with a 2716) needed an adapter socket.

Well, I tried my own procedure but must have missed something as I got a "COMPARE ERR" when writing the EPROM (using an AP-64e programmer card). Maybe someone can help me clarify?

I'll edit the DIY instructions above when I've successfully burnt and replaced an EPROM.

 

So, I've followed my own instructions (CALL-151 and so on...) so far. The title looks good when issuing the FB60G command, and I've saved it to disk. But I didn't exit to Applesoft (FP) as I seem to recall that I have to reside within the monitor when programming the EPROM. I might be wrong though.

Anyway, still within the monitor I entered 3 CTRL-P (that is, the number 3 followed by CTRL-P and pressing RETURN, to access the EPROM programmer in slot #3). This brought up the programmer's menu (it's got its own software in the on-board EPROM).

 

So I chose the correct EPROM (2716), had it pre-erased (and checked) in the correct position and with the DIP switches set correctly, and chose $1000 as the start address. Could this be the problem -that the address is wrong?

 

Since I've already saved it to disk, what would the procedure be to load into memory, then write the EPROM? There's no "Load from disk" option, so it only writes (burns) EPROMs from what's in memory (and you have to tell it which address to start from). There's a "monitor" option in its menu which exits to the monitor where I can do whatever tricks are necessary prior to writing the EPROM.

 

 

 

 

 

Sounds like the chip is not being programmed correctly. What brand of 2716 are you using?

 

If you don't have the manual for the AP-64, you can get it here:  https://www.apple.asimov.net/documentation/hardware/io/AP-64e%20EPROM%20Programmer-User%27s%20Manual.pdf

 

Thanks.

I already have the manual, but don't understand all of the machine code I've posted here (notes from decades ago, and something I haven't been into since then) and wonder if the start address of $1000 is where I should burn from?

Come to think of it, if I can save the (edited) F8-ROM with the following:

BSAVE F8-EPROM-COCONUT,A$1000,L$800

 

....then maybe I can do the reverse and load it with this:

BLOAD F8-EPROM-COCONUT,A$1000,L$800

 

... and then tell the EPROM-programmer to burn from $1000 ?

But how does this work with the RAM which the EPROM programmer uses, and whatever is in the 16K RAM card?

I'm concerned about messing around with memory which is used by something else.

 

As for the EPROM itself: it's a Hitachi 2716D, but actually I think there may be an issue with the programmer instead. When I turn on the switch (which lights the board's LED) I believe a high voltage (around 21V or 25V) should be found at pin 18 of the EPROM (programming voltage), but that isn't the case here (I checked with my multimeter when programming and with just the programming switch turned on).

 

If I trace that pin it goes through one of the DIN switches (which I've set to 2716 mode) and further on to pin 6 of a 7406, which according to datasheets I've found online is a hex inverter buffer/driver. Could this chip be generating the 21-25V for programming?

 

That makes sense. The 7406 does not GENERATE  the programming voltage, but can hold it low. You should follow the output of pin 6 to see where it goes aside from pin 21 of the EPROM. There should be a circuit that generates the 21-25 volts that goes through the PROGRAM switch. If the LED is driven off this voltage as lights up when ON, then I'd assume it's OK.  Then go back to pin 5 of the 7406. While programming, you should see activity on pin 5 (0-5V) and corresponding activity on pin 6 (0-21V). Do this with no EPROM inserted just in case it is the EPROM that is defective.

 

If you haven't already, you should try a different EPROM. Otherwise it looks like the 7406 may be defective.

 

As for the memory issue you are concerned with, the board has it's own program in EPROM and probably uses very little RAM except for it's screen holes and stack. So it really doesn't matter where your image resides. Whatever memory it uses to program the EPROM it will also use to verify it. Therefore if you get a VERIFY error it's because the chip did not get programmed or it is defective.

It turns out I made a silly mistake, and now it works!

I had built an extension box for this EPROM programmer as I found it cumbersome to fiddle with EPROMs. DIP-switch settings and so on inside the computer, but apparently I had plugged in the DIP-switch connector the other way round, and I also measured the wrong pin for the 25V (21V?) programming voltage (it's VPP pin 21, not pin 18 PGM).

Furthermore I worked out how to load the machine code (at the top of this thread) from disk and successfully burn it into a blank EPROM!

I had it almost right in my previous posting, except without the length. This is what worked for me:

BLOAD F8-EPROM-COCONUT,A$1000

 

Following that I burnt the EPROM from address $1000 with my AP-64e. I'll add that info to the blog posting soon.

I could still use some help though... I've made some explanations alongside the machine code, but I'm not sure what all the lines do (and would like to have all the relevant info for others to see). Maybe someone else knows what those lines do? Here's the machine code again (with my comments and estimated guesses):

 

CALL -151 (enter machine code monitor)

C081 C081         (????)
F800<F800.FFFFM   (move from/to somewhere?)
C083 C083         (????)
F800L             (list from $800? To inspect some values?)

F800 - 4A         (replace $800 address value with "4A"?)
F801 - 0B                     (replace $801 address value with "0B"?)
F800:00          (????)
F800L            (list from $800 again? why?)

F800 - 00        (replace $800 address value with "00"? But why replace again?)
F801 - 08                   (replace $801 address value with "08"? But why replace again?)

FB09:C3 CF C3 CF CE D5 D4 A0  ("COCONUT " title (space at end). Enter each character as hex values. Mandatory 8 characters)

FB60G  (display new title -if wrong, go back and re-enter previous line (FB09: etc) and enter this command again)

1000<F800.FFFFM  (move from/to somewhere again, why?)
BSAVE F8-EPROM-COCONUT,A$1000,L$800    (save to disk as a binary file, from address $1000, file length $800)
FP          (exit machine code, return to the Applesoft BASIC prompt)

 

cjs's picture

You normally load saved binary files (type B) into memory with BLOAD MY FILE NAME,A$1234, where "1234" is the address at which you want to load the data.

Are there any specific addresses I should use/not use when loading binary files into memory?