Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!cs.utexas.edu!uunet!microsoft!brianw From: brianw@microsoft.UUCP (Brian Willoughby) Newsgroups: comp.sys.apple Subject: Re: Lower case keyboard (was - :Re: How do you do DVORAK?) Summary: How the Apple II Plus Video Character ROM is set up Message-ID: <5810@microsoft.UUCP> Date: 25 May 89 03:21:49 GMT References: <8905150650.AA03263@crash.cts.com> <1975@ur-cc.UUCP> <621@greens.UUCP> <5773@microsoft.UUCP> <3770@athertn.Atherton.COM> Reply-To: brianw@microsoft.UUCP (Brian Willoughby) Organization: Microsoft Corp., Redmond WA Lines: 76 >In article <5773@microsoft.UUCP>, brianw@microsoft.UUCP (Brian Willoughby) writes: >> In article <621@greens.UUCP> matthew@sunpix.UUCP ( Sun Visualization Products) writes: >> 3) You probably will want to modify the Monitor ROM so that it doesn't >> convert all lower case characters to upper (this can be >> accomplished by burning a new 2716 with only one byte changed. >> The "AND #$DF" in the GETLIN routine must be changed to >> "AND #$FF" to defeat the up-shift). Any program which directly >> reads the keyboard will work without the custom Monitor ROM. > >A problem with this third point is that 2716s do not fit the Apple ][ >Plus' ROM sockets. (Well, they physically fit, but Apple's pinout is >non-standard.) In order to pull this off, you need to build a special >jig that maps the signals properly. There is the additional problem that >the location of the ROMs makes such a jig interfere with any expansion cards >plugged into slots 0 and 1 (which are usually filled). The old ROM cards >(remember when Applesoft could be bought in ROM on a plug-in card?) could >be configured to work with 2716s, and those who still own them could >duplicate their ROMs with this patch, but Apple might take exception to >that. >-- >Paul Sander (408) 734-9822 | Do YOU get nervous when a >paul@Atherton.COM | sys{op,adm,prg,engr} says >{decwrl,sun,hplabs!hpda}!athertn!paul | "oops..." ? My clone was designed with a 2716, so nothing stopped me from using a customized font editor to make several different character sets and burn them into ROMs. In fact, the friend who I made the keyboard and Video ROM mods for owned a genuine Apple II Plus! and I plugged a standard 2716 into it! No jig, no problems. I had some reservations since the Apple II Reference Manual schematics showed the 2315 Character ROM pinouts were different. But when I checked the wiring on his II Plus, it seems that Apple decided to follow more modern standards when they layed out the Rev. 7 II Plus boards. I have a revision document for the Reference Manual which shows the schematic changes (this was found in the dusty corners of a used book store). My clone board required cutting the grounded traces to A9 and A10 for my EPROM mod (see explaination below), but the Apple II Plus board I looked at actually had option jumpers to allow those two addresses to be sent to the existing ROM socket. I wonder where these Text Video options (and the keyboard lower-case shift-lock options) are documented? For those of you who may have never examined the Video Character ROM circuit, the standard Apple ROM generates 64 characters which make up 256 combinations after INVERSE and FLASH are added. i.e. D0 through D6 of the Video bus are sent to A3 - A8 of the Video ROM, and D7 and D8 activate gates which enable INVERSE (00), FLASH (01) or NORMAL (1x) by inverting ROM outputs. The same character (modulo 64) is always output by the ROM. On the II Plus, you could optionally connect D7,8 to A9,10 to get *different* characters for each of the 256 text screen values. Commonly, $E0-FF are replaced by lower case (NORMAL). The early //e's added inverse lower case at $60-7F, but had two versions (alternate charset) of the Video ROM to support FLASHing numbers for old Apple programs. The //c introduced Mouse Characters at $40-5F, since they didn't need to be compatible when using the alternate character set anyway. Here's where I invented a neat trick - since $80-9F are valid byte values which can be stored in Text Screen memory (but usually aren't since COUT doesn't print control characters), I decided that I would use $80-9F on my II+ for my own custom characters. I have one Video ROM which displays inverse lower case for these character codes, but can only be used from my custom software. Now, get this: would you believe that Wizardry, a popular Pascal-based role-playing game, actually stored $80-9F into text memory instead of $C0-DF? This means that the writers expected that $80 would generate the same upper-case normal character as $C0 (remember the modulo 64). It was so annoying (I played Wizardry a lot), that I decided to make a //e style alternate character set. Now I have a 2732 with AN1 connected to A11 to select which character set I see (AN1 is conveniently preset by the AutoStart ROM to the proper logic level I needed during power-up). BTW, Thanks Matthew for your post, it reminded me of the good old days when I was souping up everybodies II Plus. I'd almost forgotten that I've made these mods on three Apples, and learned a lot in the process. Brian Willoughby ...!uw-beaver!microsoft!brianw or microsoft!brianw@uunet.UU.NET or just brianw@microsoft.UUCP