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.

Reply via email to