TS$="QWERTZ-tek"

- The Software for all these nifty 80c85 laptops -

These portable computers are so easy to understand and the software can be easily hacked to adapt personal preferences, for example a QWERTZ (alike) keyboard layout instead of QWERTY.

Here are my ROM patches, fixes and other modified programs. All values here are hexadecimal.
Special thanks goes to Ken Pettit for *VirtualT* and the *partial M100 disassembly*.

->TRS-80 Model 100 ROM patches, ->Olivetti M10 ROM patches, ->Tandy 200 ROM patches, ->HOTKEY.BA, ->Other programs

- TRS-80 Model 100 ROM patches -

I used the US ROM for maximum compatibility as the majority of software written for this machine were desgined to work on this very ROM version.
My european model has no built-in modem, so I've disabled all modem support to gain space.
More on that at the end.

Correct double-precision calculations: Change 56 to 57 @ 33BF
Y2K fix: Change 31 to 32 @ 5A53 and 39 to 30 @ 5A56

Keyboard key repeat delay and rate: 06 @ 70BC defines delay; 54 @ 711C defines rate
Values similar to PC-AT & PS/2 keyboards at shortest and fastest setting are 03 for delay and 18 for rate.

The infamous calender bug which erroneously increments the year on it own.
For me that usally happened during RS232 transfer, which causes an interrupt for each received byte.
Change 3C to 2C @ 1B8D

Also the first attempt was to disable IRQs a little earlier in the code but that didn't worked out well:
FB212FF935C2AE1B367D2335C2651B36
0C23E52A7AF6237CB5E1C4B11B7EA7CA
651B35C2651B2336FF2133F9E5CD2973

to
212FF935C2AE1B367D2335C2641B360C
23E52A7AF6237CB5E1C4B11B7EA7CA64
1B35C2641B2336FF2133F9E5CD2973FB
@ 1B3C
I don't know if this patch is really necessary to make the bugfix work for real but I never bothered to remove that from my personal ROM.

TEXT/Find bugfix (lifted straight from the T200):
Change 405C to FA7F @ 5C64
000000000000 to 595013C3405C @ 7FFA

Real RTS/CTS handshaking mode for BASIC and TERM:
This required extra space, so the modem support had to go.

Change 9E1A to 4604 @ 02BE
Change string "M7I1E" @ 03C5 to whatever you like for as coldboot default, I've used "98N1E" myself.
Just make sure it's uppercase and doesn't contain invaild chars (which will apply to 'M' for modem).
FE45C0 to C3D651 @ 1847
FEAEC8 to 000000 @ 1B02
4D444DF952414DF8 to 52414DF800000000 @ 510A
A451CDA542C3C751CD294221A4 to AC51CDA542C3C751CD294221AC @ 514A

43414C4C2F5246494E444D524D454E559757FF46696E64A043616C6CA0
to
4D454E559757FF00000000000000000000000000000000000000008080

@ 5191

3E2CE73A2BF60F3E3298E721E751CDB1
27C35B51302070707300DAFE51FE2CCA
0A52CDE90FFE4DC2525123CDE617CDCB
6E2BD7A7CA5B51CF2CCD2E11FE14CA1A
52D60AC252513C322BF6C35B51

to
C35B51FE45CA4A18FE48C03E80CD336F
C3511800000000000000C3FE513A42FF
FE80CA0752B7C8C3526E00CDE617CDCB
6EC35B51CD9F72D8DBBB2FE610CA0752
C9000000000000000000000000

@ 51D3

DBBBE610CAF952CDD052CD9F72D8CDEF
6EC2EE52C9CDC852CDB452000000CDEE
52D83E05CD1653CDD052A7C9
to
37C93A42FFFE80CADB6DB7CADB6DC3CA
6D3A42FFFE80C2216EC3C1523A42FFFE
80C20E6EC3B4520000000000
@ 52E4

A4 to AC @ 5C8B
0B6E to 0053 @ 6D95

79FE11CAD26DFE13C2DB6D3EAF3240FF
3A42FFB7C02186FF7EFE40C8FE28D41E
6E
to
C3E6520079FE11CAD66DFE13C2DB6D3E
AF3240FFC92186FF7EFE40C8FE28D4F5
52
@ 6DC6

4D6E to F051 @ 6E35

Now you can't set 'M' as baud rate, define 10 or 20 pps neither does the MDM statment work nor can the MDM: files be accessed.
But now you're able to set 'H' as flowcontrol setting, this will enable RTS/CTS handshaking and the bytes reserved for XON/XOFF can be now received without losing any bytes.

To avoid potential problems with this hack:

- Olivetti M10 ROM patches -

The hardware is almost an exact copy of the M100 with the only difference being the keyboard matrix.
I used my M100 ROM with all my patches as the base and hacked all the keyboard decoding routines to work with the German keyboard layout along with the addition of CTRL+GRPH keycombos to make up for the missing CODE modifier found their Tandy relatives.
There's no dedicated ESC key either, they added the CTRL+0 keycombo as an afterthought in case someone needed that for TERM.
Also SHIFT LOCK works the same way as the CAPS LOCK affecting only letters A-Z which was real challenge to realize.
IMPORTANT: The gained space of the removed modem routines are used for this.
The Backspace key was relocated from the lower right to the upper right where it belongs.

6C17DB17A817B017CA173E02 to CD0171CDF06ECD016FC36F70 @ 17D1

00000000000000000000000000000000
00
to
3AA6FFFE10C2A3513E34C9FE34C03E10
C9

@ 5198

97CDB15DE5CDA65ACA5251CDE35AEBE1
CD3F5CD25B51E5D5CDC55DCD8452C492
52CD2242CD7F5CCA5B51FE43
to
C90FD2615279FE30D2137221B17C09F1
7EC3C271531E00CD2C727BFE305A1E00
21217CCAB67179FE0DC30A72
@ 524D

E5D5C5212C6FE5DBBBE610214902010E
1AC2096F21270401070CF3DBD8E60157
CDD66EFA1A6FAA57CDD66EFBF87BB8D0
B9D82B7CB5C2096F

to
C97E0FD0780FD8E3218071E30600500E
08C97E0F0FD0780F0FD8E3218071E306
00507E0F0F0F0E0AD80E09C93E03D83E
13C93AA3FF0F0FC9

@ 6EEF

CC0171 to CAD117 @ 706C
3E03D83E13 to 0F0FC31B6F @ 7114
3AA6FF4F112C to CD98514F1130 @ 7122
33DA337121A7FF703AA3FF to 36DA337121A7FF70CD216F @ 712B

30 to 34 @ 713E
EF to C1 @ 7149
DB to B1 @ 7150
0A722149 to 4E522151 @ 718C

21A17C0FDAB571 to 00000000000000 @ 7195
79FE1A211D7CDAB6 to C213720E1BF1C3C5 @ 720A

2C to 30 @ 7214
30 to 34 @ 7219
2C212F to 30210F @ 7223

1AD01E2CC9 to 19C8C3137D @ 722E
F97C to 017D @ 7237
81 to 84 @ 72AD

Now this part contains the translation table (change this adopt to other layouts).
Unshifted keys first, then shifted, GPRH, shifted GPRH, CTRL+GPRH and contains capslock code at the end (last decimal 32 bytes).
7A786376626E6D6C6173646667686A6B
71776572747975696F705B3B272C2E2F
313233343536373839302D3D5A584356
424E4D4C4153444647484A4B51574552
545955494F505D3A223C3E3F21402324
255E262A28295F2B008384009596819A
858B00820086009B93948F898790918E
988060928C99978A889C9D9E9FB4B0A3
7B7D5C8DE0EFFF000000F6F9EBECEDEE
FDFBF4FAE7E8E9EAFCFEF0F3F2F17EF5
00F8F700E1E2E3E4E5E6000000007C00
CEA1A2BD00CD00CAB6A9BB000000CBC9
C800C60000CCB8C7B7ACB5ADA0BCCFAE
C000C1000000C4C2C3AFC5BE00DFABDE
0000A5DAB1B9D7BF0000DBD9D800D6AA
BADCB3D5B2000000A4DD0000D000D100
0000D4D2D3A6A7A86D306A316B326C33
753469356F3601061402207F091B8B88
8A0D80818283848586871D1C1E1F2008
091B8B88890D80818283848586875152
575A

to
71772B31323334357A3637383930B9A0
23B8B7B62D2E2C6D613C79786376626E
73646667686A6B6C65727475696F7020
51572A2122A924255A262F28293D3F60
C5B3B2B15F3A3B4D413E59584356424E
53444647484A4B4C45525455494F5020
A1C0B6B7B8C8CBCCC6CECFA2CD889394
277DEFFFBAABAAE8CAEBECEDEEE9E7EA
C3BCC4A97C5C9596BBBDC1C9C2C77B20
DFD0B1B2B3D8DBDCD6BFA58B899B9A98
995DACAEAD40A6B4DA8086828584A3B0
D3DDD48E238A8C8DD7DED1D9D2D55B20
83A77EB59C9D9E9F90000000000000A4
E0BEF4F3AFFBFDFEF0E4E3E2E1E5E6FC
F2F6F7F1F5FAF9F88F928791A8978120
010614027F090D8B8081828384858687
1D1C1E1F08090D8B8081828384858687
6D306A316B326C33753469356F365152
575AFE2FD0D602FE06D8D607FE08D8D6
0BFE03D81E30C9000000000000000000
0000

@ 7BF1

82 to 88 @ 7D4F

Optional, the BASIC startup banner:
5452532D3830204D6F64656C20313030
20536F6674776172650D0A436F70722E

to
4F6C697665747469204D313020536F66
74776172650D0A436F70797269676874

@ 7FA4

Stock German keyboard matrix with the keys highlighted that I've swapped:

5 % M N L Space Paste F8 Break Pause
4 $ ß ? , ; B K P Enter F7 Shift Lock
3 § 0 = . : V J O Tab F6 NUM
2 " 9 ) - _ C H I BS Del F5 GPRH
1 ! 8 ( Ä X G U Right F4 Ctrl
+ * 7 / Ö Y F T Left F3 Shift
W 6 & Ü < > D R Up F2 Print
Q Z # ^ A S E Down F1 Label

- Tandy 200 ROM patches -

My US model has a modem, so I only disabled the autologon stuff to get additional space.
The modem seems to work all right, there was one dial-up BBS that had zero transmission errors on my VoIP line but the lag was a total different story.

I also rewrote some error messages of the filecopy routines to be shorter to gain extra space.
The first 32KB are in M15 and the last 8KB are in M13, MSPLAN is in M14.

Y2K fix: Change 31 to 32 @ 6DF1 and 39 to 30 @ 6DF4

Keyboard key repeat delay and rate: 06 @ 894B defines delay; 54 @ 89D2 defines rate

Keyboard matrix @ 9763

Shorter error messages:
7A6991699D69AC694E6F207461726765
742062616E6B00546172676574206E6F
7420696E697469616C697A6564004669
6C652065786973747300446972656374
6F72792066756C6C004D656D6F727920
66756C6C0043616E6E6F7420636F7079
204E4F54452E444F00

to
746983698F69996942616E6B204E2F41
0042616E6B206E6F7420696E69742E00
46696C6520657869737473004469722E
2066756C6C004D656D6F72792066756C
6C0043616E6E6F7420636F7079204E4F
54452E444F0000D5CD0E4321CF3F3ACB
F6A7CC123FD1C32847
@ 696B

B8 to A5 @ 68F5

CD0E43 to C3BA69 @ 4725

This gains space for the PRINT USING bugfix.
The new messages are:
"Bank N/A" instead of weirdly worded "No target bank"
"Bank not init." is much clearer than "Target not initialized"
"Dir. full" is much shorter than "Directory full"

Real RTS/CTS handshaking mode for BASIC and TERM:
What made this easier was the fact that the 82c51 UART refuses to transmit on a low CTS level.

Change CD to C3 @ 62D1

D8CDFC65CD1863C8FE3EC8FE3DCAF962
FE5ECA0F63FE3FCAFF62FE21CC1863C8
CD4386AF3CCC0E62C3D562CD1863C8CD
1985D8E7BEC20363C3D562CD1863C8E6
1FC3F462237EA7

to
FE48C2E662C1F1F5C5D03E80CD9F87C3
9E19FE45CA9719C93AF2FCFE80CA7685
B7CA7685C364853AF2FCFE80C21A863A
FEFCE6DFC3CB873AF2FCFE80C20B863A
FEFCF620C3CB87

@ 62D4

0886 to 0B63 @ 8530

79FE11CA6D85FE13C276853EAF32F0FC
3AF2FCB7C0

to
C3EC6279FE11CA6D85FE13C276853EAF
32F0FCC9FF

@ 8561

1786 to FB62 @ 85A5

3AFEFCE6D832FEFCD3CFDBBAE6BFD3BA
AF32F3FC

to
DBBAE6BFD3BAAF32F3FC3AFEFCE6D832
FEFCD3CF

@ 87BC

This hack works exactly same as the M100 counterpart.

- HOTKEY.BA -

MJ Nugent, Jr. wrote a great enhancement for the M100 back in 1987, but one thing annoyed me.
And that was the kludgetastic datebug fix, this always overwrote the year in memory with a specific value, which is not needed anymore since I fixed that bug myself the correct way.
Now I went through the effort of disassembling this (tiny) program, not only to remove that obsolete function but to easily customize it to my taste as well as porting it to the other laptops.

Also whoever was behind the undocumented 80c85 "RDEL" opcode, thank you very much for this fine addition. This opcode greatly simplified the multiplication by decimal 40 for the T200 port.

New M100 version with the "datebug fix" removed
T200 version (XOS users should replace MENU in basic lines 370,2000 with CALL40961)
NEC PC8201 version (planned)
Source code of my versions (coming soon)

The display current date/time on top function is also quite handy to prevent the automatic return to MENU on powerup if idling in TEXT or BASIC.

- Other programs -

CALXOS.CO
The week now starts with Monday and the labels are in German.
If you're looking for an plain Y2K fix on this then change the last byte from 13 to 14 (which is 20 in decimal) in the original (which you can find in M100SIG/Lib-10-TANDY200).

MEMO.CO, MEMO.ASM
I've tweaked it a litte to make it work with my HOTKEY.BA and optimized CRLF VARPTR to save 2 bytes.

Return to main index
--EOF--

model-t-soft.html © T. Sosnow.
Last updated: March 8, 2025 16:36

Web1.0 Hosting Like counter WTFPL Made with Dreamweaver 4