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,12H,00H,18H,00H,1EH,00H,24H, > 00H,2AH > > .db 00H,30H > > .db 02H,04H,02H,0AH,02H,10H,02H,16H,02H,1CH,02H,22H,02H,28H, > 02H,2EH > > .db 04H,02H,04H,08H,04H,0EH,04H,14H,04H,1AH,04H,20H,04H,26H, > 04H,2CH > > .db 06H,00H,06H,06H,06H,0CH,06H,12H,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 > > > > > > > > > > >
