How to: DIY changing the APPLE ][ title

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

This is a permanent (non-volatile) 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 successfully done on a 64K (48+16) Apple II+ clone, following the instructions below, but might (or might not) work with other models (Apple ][, ][ Europlus, J-Plus, IIe, //c).

 

 

What you need

  • Apple II+ (other Apple II variants might also work, but I've not tried this)
  • 48K RAM on main board (UPDATE: actually works with just 16K or more!)
  • 16K RAM card in slot #0 (UPDATE: not strictly necessary any longer)
  • 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!)
  • A disk with DOS 3.3 on it (optional, in case you want to save the file for later)

 

Overview

Using machine code programming you load the contents of the applicable motherboard ROM (F8) into RAM memory, edit the relevant code there, then save it to disk (optional) for "burning" (programming) the EPROM, or burning the EPROM right away.

Part 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.

 

 

Part 1: Preparations/machine-code programming  (64K setup)

NOTE: these instructions are for computers equipped with 48K RAM on the motherboard and a 16K RAM-card in slot #0.

Instructions for computers with 16K and onwards and without a 16K RAM-card follow after this.

Don't be put off by the title!

The author of this article is not a programmer either, so here's a step-by-step guide.

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) and ALL UPPER-case. 

 

1) Prepare (initialize/format) a pre-formatted DOS disk (for saving the file). This step is optional but very handy if you want to burn an identical EPROM later).

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

 

  • 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 everything in its memory)
  • power ON the computer  to boot with the newly formatted disk (DOS 3.3 in then in memory and we have a blank disk to save our EPROM data on)

 

2) Next we will go into the "monitor" (for machine code programming) and perform the actual programming.

Enter the code (green text), exactly as shown here, one line at a time, followed by pressing the RETURN key. Explanations for each line are shown.

 

NOTE: all instances of  "0" characters are the numerical "zero", not the letter "O" !!!

CALL -151(enter the machine code monitor. The ] or > prompt now changes to *)
C081 C081(enable writing to 16K RAM-card)
F800<F800.FFFFM(move F8 ROM to 16K RAM-card's address $F800)
C083 C083(enable reading from 16K RAM-card)
FB09:C3 CF C3 CF CE D5 D4 A0(enter the new title, in hexidecimal code (look up the characters in the table below). 8 characters in total (add space characters (A0) to use up all 8 character places). COCONUT (space at the end) is used in this example.
FB60G(check new title. If you're not happy with the results, re-enter line above (FB09: etc.) , then check again with FB60G )
1000<F800.FFFFM(move modified F8 ROM contents from 16K RAM card ($F800) to motherboard address $1000)
BSAVE F8-EPROM-COCONUT,A$1000,L$800(save file to disk (optional), from address $1000 and length $800)
FP(optional: return to the Applesoft ] or INTEGER > prompt)

 

 

 

Part 1: Preparations/machine-code programming  (16K-48K setup)

These instructions are for computers with just 16K RAM (or more) on the motherboard and without any 16K RAM-card.

If you have 48K on the motherboard and a 16K RAM-card in slot #0 you can follow these instructions as well, or scroll up for separate instructions.

Don't be put off by the title!

The author of this article is not a programmer either, so here's a step-by-step guide.

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) and ALL UPPER-case.

 

1) Prepare (initialize/format) a pre-formatted DOS disk (for saving the file). This step is optional but very handy if you want to burn an identical EPROM later).

NOTE: you can't use ProDOS (or some of the other DOS replacements) as they demand 48K and a 16K RAM-card, so stick to good old DOS 3.3.

 

  • 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 everything in its memory)
  • power ON the computer  to boot with the newly formatted disk (DOS 3.3 in then in memory and we have a blank disk to save our EPROM data on)

 

2) Next we will go into the "monitor" (for machine code programming) and perform the actual programming.

Enter the code (green text), exactly as shown here, one line at a time, followed by pressing the RETURN key. Explanations for each line are shown.

 

NOTE: all instances of  "0" characters are the numerical "zero", not the letter "O" !!!

CALL -151(enter the machine code monitor. The ] or > prompt now changes to *)
1000<F800.FFFFM(move F8 ROM to address $1000)
1309:C3 CF C3 CF CE D5 D4 A0(enter the new title, in hexidecimal code (look up the characters in the table below). 8 characters in total (add space characters (A0) to use up all 8 character places). COCONUT (space at the end) is used in this example.
FC58G(clear screen)
40E<1309.1310M(copy new title to screen for checking. If you're not happy with the results enter the title again (1309:C3 ... etc.) followed by  FC58G and 40E<1309.1310M)
BSAVE F8-EPROM-COCONUT,A$1000,L$800(save file to disk (optional), from address $1000 and length $800)
FP(optional: return to the Applesoft ] or INTEGER > prompt)

 

 

 

Hexidecimal character table

Use the table below to look up the ASCII characters you want to use in the title and find their hexidecimal values.

The ASCII characters are shown in green while their equivalent hexidecimal values are in red.

For instance, the letter E is entered as C5 and a space is entered as A0.

HELPFUL TIP: fill in empty spaces (A0) before/after the new title to align it to the middle of the screen, depending on how long the text itself is.

(source: Beagle Bros.)

 

 

Examples of other titles

FB09:A0 CB C9 D7 C9 A0 DD DB(KIWI ][)
FB09:A0 A0 CC C9 CD C5 A0 A0(LIME)
FB09:C5 D5 D2 CF D0 CC D4 D3(EUROPLUS)
FB09:C7 D5 C1 D5 C1 A0 AF AF(GUAVA //)
FB09:C9 C3 C5 C3 D2 C5 C1 CD(ICECREAM)

 

 

 

 

 

Part 2: Programming (burning) the EPROM

Provided your Apple II has an EPROM programmer available you can "burn" the new code into an EPROM right after editing the machine code, or you can load the code from disk and burn the EPROM from that.

 

 

I've used the AP-64e EPROM programmer card (shown above) in the Apple II+ itself (it handles 2716, 2732 and 2764 EPROMs -even 27128 types when modified), but provided you find a way to transfer the edited binary code you worked with earlier over to a PC or Mac equipped with an EPROM programmer you should be able to do it there also.

NOTE: ensure that the programmer can handle 2716 EPROMs as many newer programmers won't output the higher voltage (around 21-25V) these EPROM types need to be programmed!

Continue reading for programing the EPROM using the AP-64e....

 

 

EPROM burning (programming) with the AP64e

1) If you've just completed the machine code we covered earlier, the code is this memory (RAM) so in this case you can jump directly to step 3

2) If the code isn't in memory, but you've previously saved it to disk you need to load the file first:

BLOAD F8-EPROM-COCONUT,A$1000 (loads the file into (Apple II motherboard) RAM address location $1000)

 

3) Access the Ap-64e by entering its slot number (slot #1 in example below):

PR#1 (from the BASIC prompt: ] or >)

or....

1 CTRL-P (from the machine code prompt (*). That is, press 1, then hold CTRL and P at the same time, release, then press RETURN).

The AP-64e welcome screen should appear

4) Press 2 (2716 EPROM type)

5) Insert the 2716 EPROM (which should be blank/erased).

Ensure it's the right way round, in the right place in the socket and with the DIP switches set correctly (refer to the AP-64e manual)

6) Press W (write)

7) Enter 1000 as the start address

8) Press Y when asked BLANK Y/N? (this will check if the EPROM is really blank or not)

9) Turn the AP-64E switch on (the red LED will light up)

10) Double-check that the EPROM is positioned and set up correctly (step 5)

11) Press RETURN which will start the programming. It will take around 1.5 minutes

12) If successful you will get a COMPARE OK !! and everything is fine.

If you get a COMPARE ERR !! something went wrong. Erase the EPROM and try again (check that everything is set up correctly).

 

 

Installing the new EPROM

1) Power off the computer (disconnect the computer's cable too, just to be on the safe side) and locate the F-8 ROM on the Apple II+ motherboard. In the row of EPROMs close to the 6502 processor it should be the leftmost one. Check the markings on the motherboard (see photo below).

2) You may have to remove some/all expansion cards to access the chip. Use a small, flat screwdriver and gently pry it (from both sides) from its socket (take care not to bend the pins)

3) Insert the new EPROM in its place. Take care to place it the right way (there's a notch at one end) and beware not to bend the pins and that they're all aligned with the socket

4) Re-insert all the expansion cards

5) Re-insert the power connector and turn on the computer.

Your new title should pop up along with the familiar Apple II "beep". If not, turn off immediately and recheck the placement of the EPROM.

 

What if it doesn't work?

Does the screen stay black when you turn on the computer? Strange sounds? Strange smells? Smoke????... Here's a checklist in case you have problems:

  • correct EPROM orientation: the notch at one end should match the notch on the F8 socket inside the computer
  • EPROM pins aligned with the IC-socket
  • check that none of the pins are bent outside of the IC-socket or bent to touch a nearby pin (causing a short-circuit)
  • double check your machine code editing is correct
  • make sure you've saved the file to disk from the correct address and length
  • make sure you've loaded the file from disk at the correct address
  • ensure you've programmed from the correct address
  • ensure correct orientation and position in the EPROM-programmer
  • ensure that the DIP switch settings in the programmer are correct for the IC you're using
  • make sure you're using the correct EPROM type for your computer
  • make sure the EPROM is blank before attempting to burn it

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.

Cjs: are there any specific addresses/address ranges I should use/not use when loading binary files into memory?

I know you (jeffmazur) said it doesn't matter in regards to the AP-64e programmer, but I really have no clue if I can use $1000, $1 or $10000000.

But since I'm a "if it works, don't fix it" type of person I'll stick with $1000 for now.

 

I've just re-written the whole article (first post in this thread) which now includes more details including the actual EPROM burning procedure.

I think it should be more or less complete now, but if someone can explain what goes on with the machine code programming lines I can add those explanations as well.

Toolkitman's picture

Thank you for your instructions, Do you think this can works also in Linapple? Should be great to change from //e to iic : )

Fuji wrote:

Cjs: are there any specific addresses/address ranges I should use/not use when loading binary files into memory?

I know you (jeffmazur) said it doesn't matter in regards to the AP-64e programmer, but I really have no clue if I can use $1000, $1 or $10000000.

 Ignoring the AUX memory (which you ARE using for your ROM modification), under normal circumstatnces you will want your code to start somewhere above $800 (after the zero page, stack, text screen buffer, etc). You could go up to $9600 if DOS is loaded or even up to $BFFF if not. So $1000 is a very good place to start. Not $1 as previously explained or $10000000 which does not extist in the 6502 memory space.

Fuji wrote

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         ENABLES WRITING TO LANGUAGE CARD RAMF800<F800.FFFFM   MOVES F8 ROM IMAGE TO LANGUAGE CARD RAMC083 C083         ENABLES READING FROM LANGUAGE CARD RAMF800L             (list from $800? To inspect some values?) LISTS $F800 JUST TO CHECK

F800 - 4A         THIS IS NOT A COMMAND; JUST TYPE F800 <return> TO SEE ITS VALUEF801 - 0B                    NOT NECESSARY (SEE ABOVE)F800:00          THIS IS ACTUALLY HOW YOU REPLACE MEMORY CONTENTS; SET $F800 TO 00F800L            LIST AGAIN TO SEE CHANGE

F800 - 00        NOT NECESSARY (SEE ABOVE)F801 - 08                   NOT NECESSARY (SEE ABOVE)

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 THE MODIFIED F8 IMAGE FROM AUX MEMORY TO $1000BSAVE 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)

 

HOPE THIS HELPS

 

HOPE THIS HELPS

 

Yes, it sure helps! Thanks, Jeff, for taking the time to explain. Also the suitable address range. I assume it's correct what I wrote about ProDOS not being suitable for booting into prior to editing (since it needs 64K RAM)?

 

So I can just remove the following lines in grey then?

 

CALL -151 (enter machine code monitor)

C081 C081         ENABLES WRITING TO LANGUAGE CARD RAMF800<F800.FFFFM   MOVES F8 ROM IMAGE TO LANGUAGE CARD RAMC083 C083         ENABLES READING FROM LANGUAGE CARD RAMF800L             (list from $800? To inspect some values?) LISTS $F800 JUST TO CHECK

F800 - 4A         THIS IS NOT A COMMAND; JUST TYPE F800 <return> TO SEE ITS VALUEF801 - 0B                    NOT NECESSARY (SEE ABOVE)F800:00          THIS IS ACTUALLY HOW YOU REPLACE MEMORY CONTENTS; SET $F800 TO 00F800L            LIST AGAIN TO SEE CHANGE

F800 - 00        NOT NECESSARY (SEE ABOVE)F801 - 08                   NOT NECESSARY (SEE ABOVE)

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 THE MODIFIED F8 IMAGE FROM AUX MEMORY TO $1000BSAVE F8-EPROM-COCONUT,A$1000,L$800    (save to disk as a binary file, from address $1000, file length $800)FP         

 

So with the command F800<F800.FFFFM  you move the F8 ROM contents (F800) into the 16K-RAM card. Does that start at address $800 in the RAM card?

 

You explain that I need only need be concerned with listing $F800 (as that's what we're changing with F800:00).

But why is $F801 also having its value changed (from 0B to 08)?

I suppose that's why my notes (given to me by someone else) tell me to use F800L and the 4 other lines (greyed out above).

 

Are nearby address locations changed automatically whenever one address (F800:00 in this case) is changed?

 

Finally, when moving the modified F8 ROM contents back to RAM (1000<F800.FFFFM) does this move it into the Apple II motherboard RAM, or $1000 in the same 16K-RAM card?

 

 

 

 

 

Fuji wrote:

So I can just remove the following lines in grey then?  YES

 

So with the command F800<F800.FFFFM  you move the F8 ROM contents (F800) into the 16K-RAM card. Does that start at address $800 in the RAM card?  NO, THE RAM CARD ONLY USES ADDRESS $D000-$FFFF; SO THE MOTHERBOARD ROM IS MOVED TO $F800 ON THE RAM CARD.

 

You explain that I need only need be concerned with listing $F800 (as that's what we're changing with F800:00).

But why is $F801 also having its value changed (from 0B to 08)?

I suppose that's why my notes (given to me by someone else) tell me to use F800L and the 4 other lines (greyed out above).   ACTUALLY, I'M NOT SURE WHY YOU WOULD CHANGE $F800 (THAT WOULD BREAK THE PLOT ROUTINE IN THE ROM). POSSIBLY JUST TO VERIFY THAT YOU ARE ABLE TO MODIFY THE IMAGE, BUT THEN IT WOULD HAVE TO BE CHANGED BACK TO 4A. $F801 SHOULD BE 08; THE 0B COULD HAVE BEEN A TYPO. YOU SHOULD PROBABLY JUST ELIMINATE ALL SIX OF THESE LINES.

 

Are nearby address locations changed automatically whenever one address (F800:00 in this case) is changed?  NO

 

Finally, when moving the modified F8 ROM contents back to RAM (1000<F800.FFFFM) does this move it into the Apple II motherboard RAM, or $1000 in the same 16K-RAM card?  AGAIN, SINCE THE RAM CARD DOES NOT USE $1000, THIS WOULD BE IN MAIN MOTHERBOARD RAM. DON'T CONFUSE THE APPLE II LANGUAGE CARD WITH THE //E 128K RAM CARD (WHICH DOES REPLICATE THE ENTIRE 64K MOTHERBOARD RAM WITH AN ADDITIONAL 64K AUX RAM).

 

 

 

 

 

jeffmazur wrote:
Fuji wrote:

So I can just remove the following lines in grey then?  YES

 

So with the command F800<F800.FFFFM  you move the F8 ROM contents (F800) into the 16K-RAM card. Does that start at address $800 in the RAM card?  NO, THE RAM CARD ONLY USES ADDRESS $D000-$FFFF; SO THE MOTHERBOARD ROM IS MOVED TO $F800 ON THE RAM CARD.

 

Oops! Thanks for catching that small detail I skipped there (the "F"): I wrote $800, but meant $F800.

By the way, why is it moved (I assume the "M" in "FFFFM" stands for "move") and not copied? Is that just a simplified term they used back in the 70s/80s when in reality it meant to copy (duplicate) the contents to another location?

 

 

You explain that I need only need be concerned with listing $F800 (as that's what we're changing with F800:00).

But why is $F801 also having its value changed (from 0B to 08)?

I suppose that's why my notes (given to me by someone else) tell me to use F800L and the 4 other lines (greyed out above).   ACTUALLY, I'M NOT SURE WHY YOU WOULD CHANGE $F800 (THAT WOULD BREAK THE PLOT ROUTINE IN THE ROM). POSSIBLY JUST TO VERIFY THAT YOU ARE ABLE TO MODIFY THE IMAGE, BUT THEN IT WOULD HAVE TO BE CHANGED BACK TO 4A. $F801 SHOULD BE 08; THE 0B COULD HAVE BEEN A TYPO. YOU SHOULD PROBABLY JUST ELIMINATE ALL SIX OF THESE LINES.

 

Yes, it could very well be a typo or misunderstanding. I have no way to verify this.

But I definitely don't want to mess around with anything else in the ROM except the boot title, so I'm hoping the following will be a better alternative. Does the following look OK?

CALL -151   (enter the machine code monitor. The ] or > prompt now changes to *)

C081 C081   (enable writing to 16K RAM-card)

F800<F800.FFFFM   (move F8 ROM to 16K RAM-card's address $F800)

C083 C083   (enable reading from 16K RAM-card)

FB09:C3 CF C3 CF CE D5 D4 A0  (enter the new title, in hexidecimal code (look up the characters in the table below).

                                                                        8 characters in total (add space characters (A0) to use up all 8

                                                                        character places).

                                                                        COCONUT (space at the end) is used in this example.

FB60G  (display new title. If you're not happy with the results, re-enter above line (FB09: etc.) , then check again with FB60G )

1000<F800.FFFFM   (move modified F8 ROM contents from 16K RAM card ($F800) to motherboard address $1000 )

BSAVE F8-EPROM-COCONUT,A$1000,L$800 (optional: save file to disk, from address $1000 and length $800)

FP (optional: return to the Applesoft ] or INTEGER > prompt)

 

 

 

Are nearby address locations changed automatically whenever one address (F800:00 in this case) is changed?  NO

 

Good to know. I'm glad I asked about the code here as it's mostly greek to me ;-)

 

 

Finally, when moving the modified F8 ROM contents back to RAM (1000<F800.FFFFM) does this move it into the Apple II motherboard RAM, or $1000 in the same 16K-RAM card?  AGAIN, SINCE THE RAM CARD DOES NOT USE $1000, THIS WOULD BE IN MAIN MOTHERBOARD RAM. DON'T CONFUSE THE APPLE II LANGUAGE CARD WITH THE //E 128K RAM CARD (WHICH DOES REPLICATE THE ENTIRE 64K MOTHERBOARD RAM WITH AN ADDITIONAL 64K AUX RAM).

 

Cool. I didn't know that, but always felt that the //e was the "ultimate Apple II", retaining all the cool features of the ][+ while improving on its shortcomings and adding some cool new features.

So is the $F800 contents (16K RAM card) moved to $1000 (Apple II motherboard) for a specific reason? Would it cause problems to burn the EPROM from address $F800, or save it to disk from $F800 instead of $1000?

 

Questions, questions..... ;-)

Fuji wrote:

So is the $F800 contents (16K RAM card) moved to $1000 (Apple II motherboard) for a specific reason? Would it cause problems to burn the EPROM from address $F800, or save it to disk from $F800 instead of $1000?

 

Your new instructions look good, although you should add the step of burning the EPROM (otherwise, what's the point!)

 

In this case, you COULD burn the EPROM or save to disk from the Language Card RAM (since that's where we left reads to $F8xx after step #4). So the move to $1000 is not technically needed. It's good practice in general however, since if you don't burn it right away and inadvertantly restore reading from the motherboard ROM, then you would just burn the unmodified image. I don't remember exactly what FP does depending upon whether INT BASIC or APPLESOFT ROMs are on the motherboard, but that might be something that restores reading from ROM. So best to move the image to someplace in main RAM that is compatible with the EPROM programming software.

jeffmazur wrote:
 
Your new instructions look good, although you should add the step of burning the EPROM (otherwise, what's the point!)

 

I agree completely, so I've added that info in a separate section of the article. It should be complete now, with some additional photos as well.

 

 

In this case, you COULD burn the EPROM or save to disk from the Language Card RAM (since that's where we left reads to $F8xx after step #4). So the move to $1000 is not technically needed. It's good practice in general however, since if you don't burn it right away and inadvertantly restore reading from the motherboard ROM, then you would just burn the unmodified image. I don't remember exactly what FP does depending upon whether INT BASIC or APPLESOFT ROMs are on the motherboard, but that might be something that restores reading from ROM. So best to move the image to someplace in main RAM that is compatible with the EPROM programming software.

 

I'll stick to $1000 in the instructions just to be on the safe side.

 

UPDATE: I just followed my own instructions and burnt a new EPROM, but for some reason the computer wouldn't boot up (just a blank screen and no beep). The new title looked fine with FB60G, I burnt it from $1000 and the EPROM programmer reported OK.

My old F8 EPROM works fine (so the computer's OK).

Could that code we removed be needed after all?

Fuji wrote:

Could that code we removed be needed after all?

 Really don't thik so. Can you verify the contents of the EPROM against the motherboard ROM? The only difference should be the title characters.

I'm not sure how to do that, but I can try to go through the process and burn it again.

Possibly also with another 2716 in case it fails again.

 

I just looked up my notes again (1st posting) and see that I didn't put in a space after FB09:

In other words I input the line like this (you can also see it in the photo of the screen):

 

FB09:C3 CF C3 CF CE D5 D4 A0

 

I see that in my examples for other titles I've put a space between that and the first character. Maybe that makes a difference (even though the FB60G testing showed it to be OK). I'll give it a go.

Ignore the above.

I made yet another silly mistake: I overlooked the "move to $1000 on motherboard" part, yet tried to burn it from $1000.

I've probably edited the article a million times now, but decided to put the code in a table to make it more legible -and a lesser chance of skipping important stuff ;-)

Glad you figured it out.

 

BTW, if someone did not have a Language Card or did not need to test their new title string, they could shorten the procedure to just 3 steps:

 

1000<F800.FFFFM   (move F8 ROM to address $1000)

1309:C3 CF C3 CF CE D5 D4 A0 (change string in RAM copy)

Burn EPROM

Cool! Very useful if this can be done without a 16K RAM card.

Will the computer still need 48K RAM?

 

So "1309:" does the same thing as "FB09:", only using the RAM on the motherboard instead?

I suppose an equivalent to the original guide will  be:

 

 

CALL -151

1000<F800.FFFFM   (move F8 ROM to address $1000)

1309:C3 CF C3 CF CE D5 D4 A0 (change string in RAM copy)

FB60G (test new title)

BSAVE F8-EPROM-COCONUT,A$1000,L$800 (save file to disk from address $1000, length $800)

then burn the EPROM from address $1000

 

or.....

if you want to burn it from the previously saved file later:

BLOAD F8-EPROM-COCONUT,A$1000 (load file from disk into address $1000)

then burn the EPROM from address $1000

 

sounds right?

This will work on any Apple II(+) with at least 16K RAM. However, the FB60G test will not work in this case (it will just print the standard string in the ROM). If you really wanted to test out your modified string, the simplest way would be to enter:

 

FC58G (clear screen)

40E<1309.1310M (copy title to screen)

 

 

Yes, I can confirm this works.

I've tried it with my 48K II+ (without a 16K RAM card) using the instructions you provided without any issues. I've added the 16K-48K instructions to the rest of the instructions. Should be quite complete now.

For those interested, I've just posted a part 2 of this project here. It contains some additional tricks and info not covered in the first blog article.

There's a new product for the Apple II that allows changes like this to be done without even opening up the computer.

 

It's called ROMX and is described here . It emulates multiple ROM images which are software selectable but most importantly, it can be re-programmed in circuit. No need for an EPROM eraser and programmer. Just modify the ROM images to your heart's content!