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