If the patch gets too challenging, you could always intercept the key
processing and transpose the 'o' key back into the first 26 characters.



On Sunday, November 26, 2023, Stephen Adolph <[email protected]> wrote:

> Both tests should modify carry flag?
>
> On Sunday, November 26, 2023, runrin <[email protected]> wrote:
>
>> Here's the patch I wrote after applying your base patch. I must be
>> making a silly mistake here, since it doesn't seem to work correcly.
>> Semi-colon is no longer shifted as expected, but it's not catching the
>> `o' for some reason.
>>
>>                 .org    0722CH
>>                 MOV     A,C     ; unchanged
>>                 JMP     extra   ; go to patch   [C3 AB 75]
>> back(7230):     MVI     E,2CH   ; unchanged
>>                 RET             ; unchanged
>>
>>                 .org    075ABH
>> extra:          CPI 1BH         ; check for `o' [FE 1B]
>>                 RZ              ;               [C8]
>>                 CPI 19H         ; > 25 ?        [FE 19]
>>                 RNC             ;               [D0]
>>                 JMP back        ;               [C3 30 72]
>>
>> On Sat, Nov 25, 2023 at 04:48:40PM -0500, Stephen Adolph wrote:
>> >    here is a file "base_patch" that describes 4 changes to the Main ROM
>> to
>> >    create a hole from
>> >    75AB to 7640
>> >    which is free to use.
>> >
>> >    "... Base patch, which provides about 150 free bytes to use for
>> >    modifications to the M100 ROM.  The basis of this patch is the
>> >    observation that the PIO data table could be reduced from 240 bytes
>> to
>> >    80 bytes.  This change forces a rewrite of a short section of a
>> >    routine."
>> >
>> >    Good luck with it; I used it to implement the hardware scroll patch
>> for
>> >    the M100.
>> >    The hardware scroll patch document has a section that details how the
>> >    base patch works.
>> >    cheers
>> >    Steve
>> >
>> >    On Sat, Nov 25, 2023 at 1:05 PM runrin <[email protected]> wrote:
>> >
>> >      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 <[email protected]>
>> 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.
>>
>> > ; patch #1 for M100/T102 rom
>> > ; this patch reduced the amount of space needed in the LCD patterns
>> table, enabling room for future changes
>> >
>> > ; blocks:
>> >
>> > ;             7467 - 746E checked
>> > ;             74BB - 74EA checked
>> > ;             7551 - 75AA checked
>> > ;             75AB - 763F hole created
>> >
>> >
>> >
>> >
>> > ;-----------------------------------------------------------
>> ---------------------------
>> >
>> > ;PATCH2
>> > ; Proposed replacement code 7467 to 746E
>> > ;checked
>> >
>> >       .org    07467H
>> >
>> > p2:   LXI     H,7643H
>> >       CALL    p5
>> >       NOP
>> >       NOP
>> >
>> >
>> > ;-----------------------------------------------------------
>> ---------------------------
>> > ;PATCH3
>> > ; Proposed replacement code 74BB to 74EA
>> > ; checked
>> >
>> >       .org    074BBH
>> >
>> > p3:   RLC
>> >       MOV C,A
>> >       MVI B,00H
>> >       LXI H,7551H
>> >       DAD B
>> >       MOV C,M
>> >       INX H
>> >       MOV A,M
>> >       PUSH PSW
>> >       LDA 0FFF4H
>> >       RAR
>> >       RAR
>> >       RAR
>> >       LXI H,7643H
>> >       CALL p5
>> >       CALL 753BH
>> >       SHLD 0FFF6H
>> >       POP PSW
>> >       ORA B
>> >       MOV B,A
>> >       POP H
>> >       DCR D
>> >       CALL 74F7H
>> >       INR D
>> >       MVI A,06H
>> >       SUB E
>> >       RZ
>> >       MOV E,A
>> >       PUSH H
>> >       LHLD 0FFF6H
>> >
>> >
>> > ;-----------------------------------------------------------
>> ---------------------------
>> > ;PATCH4
>> > ; this is the corrected LCD table  7551 to 75A0  240 bytes
>> > ; 75A1 to 7640 is free to use, 160 bytes total
>> > ; checked
>> >
>> >       .org    07551H  ; 80 bytes
>> > p4:   .db     00H,00H,00H,06H,00H,0CH,00H,1
>> 2H,00H,18H,00H,1EH,00H,24H,00H,2AH
>> >       .db     00H,30H
>> >       .db     02H,04H,02H,0AH,02H,10H,02H,1
>> 6H,02H,1CH,02H,22H,02H,28H,02H,2EH
>> >       .db     04H,02H,04H,08H,04H,0EH,04H,1
>> 4H,04H,1AH,04H,20H,04H,26H,04H,2CH
>> >       .db     06H,00H,06H,06H,06H,0CH,06H,1
>> 2H,06H,18H,06H,1EH,06H,24H,06H,2AH
>> >       .db     06H,30H
>> >       .db     08H,04H,08H,0AH,08H,10H,08H,16H,08H,1CH,08H,22H
>> >
>> >
>> >
>> >
>> > ;-----------------------------------------------------------
>> ---------------------------
>> > ;PATCH5
>> > ; Proposed subroutine at 75A1H to 75AA
>> > ; checked
>> >       .org    075A1H
>> >
>> > p5:   JNC ahead1
>> >       MVI L,4DH
>> > ahead1:       MVI B,00H
>> >       DAD B
>> >       MOV B,A
>> >       RET
>> >
>> >
>> > ; 75A1 to 75AA is used
>> > ; 75AB to 7640 free to use
>> >
>> > ;-----------------------------------------------------------
>> ---------------------------
>> >
>> >       .org    075ABh
>> >       .db     00,00,00,00,00
>> >       .db     00,00,00,00,00,00,00,00
>> >       .db     00,00,00,00,00,00,00,00
>> >       .db     00,00,00,00,00,00,00,00
>> >       .db     00,00,00,00,00,00,00,00
>> >       .db     00,00,00,00,00,00,00,00
>> >       .db     00,00,00,00,00,00,00,00
>> >       .db     00,00,00,00,00,00,00,00
>> >       .db     00,00,00,00,00,00,00,00
>> >       .db     00,00,00,00,00,00,00,00
>> >       .db     00,00,00,00,00,00,00,00
>> >       .db     00,00,00,00,00,00,00,00
>> >       .db     00,00,00,00,00,00,00,00
>> >       .db     00,00,00,00,00,00,00,00
>> >       .db     00,00,00,00,00,00,00,00
>> >       .db     00,00,00,00,00,00,00,00
>> >       .db     00,00,00,00,00,00,00,00
>> >       .db     00,00,00,00,00,00,00,00
>> >       .db     00,00,00,00,00,00,00,00
>> >       .db     00
>> >
>> > .end
>> >
>> >
>> >
>> >
>>
>>
>>

Reply via email to