Wow, Stephen! Of course you know exactly where it is! Thanks so much! If you could share your character printing patch I'd appreciate it.
Looks like the simplest way to get `o' to work with caps lock would be to just accept that `;' and `[' will also be shifted, and change the 27 to a 29. It'll be fun to rewrite the routine though. It looks like there are 5 or 6 bytes free at the end of the ROM, so being able to squeeze the patch in there would be pretty nice. On Sat, Nov 25, 2023 at 08:34:30AM -0500, Stephen Adolph wrote: > Since you are modifying the ROM, you may find to get what you want you > need more space. > > I have a patch that rewrites some routines for character printing that > frees up about 180 bytes if I recall correctly. I've used this to fix > things I don't like in the Main ROM. > > I'm happy to share that patch, should your hacking require some bytes. > > to your question. > > 722CH (79H) MOV A,C Handle CAPS LOCK key during key decoding > 722DH (FEH) CPI 1AH > 722FH (D0H) RNC > 7230H (1EH) MVI E,2CH > 7232H (C9H) RET > > if the "regular key" is > 26 the key is not modified. > because the key # for o is 27, no upper case. > > So you need a more complicated routine at 722Ch > > On Sat, Nov 25, 2023 at 1:08 AM runrin <run....@rin.run> wrote: > > Hey all! > > I just finished building my FlexROM and patching the system rom for > my > keyboard layout of choice (colemak). I'm super excited about it > because > it will make my m100 much more usable for me. > > Here are the relevant lines of the rom that were patched if anyone > is > interested: > > 00007BF0 AA 7A 78 63 76 62 6B 6D 69 61 72 73 74 64 68 6E > .zxcvbkmiarstdhn > 00007C00 65 71 77 66 70 67 6A 6C 75 79 3B 5B 6F 27 2C 2E > eqwfpgjluy;[o',. > 00007C10 2F 31 32 33 34 35 36 37 38 39 30 2D 3D 5A 58 43 > /1234567890-=ZXC > 00007C20 56 42 4B 4D 49 41 52 53 54 44 48 4E 45 51 57 46 > VBKMIARSTDHNEQWF > 00007C30 50 47 4A 4C 55 59 3A 5D 4F 22 3C 3E 3F 21 40 23 > PGJLUY:]O"<>?!@# > ... > 00007CF0 00 00 00 D4 D2 D3 A6 A7 A8 6D 30 6E 31 65 32 69 > .........m0n1e2i > 00007D00 33 6C 34 75 35 79 36 01 06 14 02 20 7F 09 1B 8B > 3l4u5y6.... .... > > The last two lines makes the number pad work correctly (an extremely > easy fix!) > > There is just one small bug with my patch, and that is caps lock not > working correctly. When caps lock is enabled, `o' remains lowercase > and > `;' types a `:'. I presume this is due to the way caps lock works > with > the keyboard matrix. The letter `o' has been moved out of the letter > rows of the keyboard matrix, and is now in one of the symbol > rows. The opposite is true of the semi-colon, now being part of the > letter matrix replacing `p'. > > Does anyone know if caps lock is done in software, or if it's > modifying > which characters are being selected by pulling a bit high or > something? > > This is a really small issue, but I would like to get it working > correctly. I'll dive into the schematic when I have some time and > see if > I can find a hint about how caps lock works. If not I'll start > messing > around with Virtual-T and see what I can find there. > > If I dig anything interesting up, I'll update this thread with what > I > learn.