Model T DocGarden
These pages are devoted to the Model T:
TRS-80 Model 100, Tandy Model 102, KC-85, NEC 8201A, NEC 8300, Olivetti M10, Tandy Model 200, and the WP-2
Community
The community gathers at Club100.org
Classic Article Repubs
We hope to republish one or more articles from the Golden Era of the Model T every month:
- ROM Addresses: Getting BASIC to do What You Want
- Format Your Words With This TEXT Aid
- TextStar
- A Simple Self-Charger for the Model 100
One-Liners
This is a collection of Microsoft BASIC programs that
- Do something interesting or useful
- With only a single line of code
One-liners are bite-sized computer programs on a human scale. You are encouraged to type them in manually (by hand) and study their operation.
Model 100/102 Compatible One-Liners
File-Transfer and Storage
We still use Model Ts today, so file transfer to/from desktop and modern laptops is an important issue. There are multiple alternatives, from simple text file transfers using TEXT, TELCOM, or BASIC, up to dedicated file transfer protocol client and servers.
Model T Developer Reference
Articles on Model T programming topics
- Gluing Strings in Place
- ROM Hooks
- Running BASIC Code from OptROM
- 8085 Reference
- Low Level Filesystem Access
- CO File Format
- BCR Port Access
- Relocating Loader (RLC) Format
- Error Codes
- Doing Binary In BASIC
- IO map
- Model 100 Serial Interface
- TPDD-2 Sector Access Protocol
- Model T System bus
- TPDD Base Protocol
- TPDD-2 Driver Reverse Engineering
- TPDD Design Notes
- Model 100/102 RAM Pointers
- 8085 RIM Instruction
- Model 100 Port B
- Model 100 RAM Variables
- Tandy 200 RAM
- Tandy 200 Timer
- Model 200 serial interface
- Model 100 System Map Part 0
- Disassembly of RAM and ROM versions of TS-DOS
- Model 100 System Map Part 1 (0000-0CD9)
- Model 100 System Map Part 2 (0DAB-290F)
- Model 100 System Map Part 3 (2943-3D7F)
- Model 100 System Map Part 4 (3FA0-5122)
- Model 100 System Map Part 5 (5146-6CE0)
- Model 100 System Map Part 6 (6D3F-7FD6)
- Model 100 System Map Part 7 (F5F4-FFEC)
- Model T Cross Map 0000-2000
- Model T Cross Map 6000-8000
- Model T Cross Map RAM Variables
- Model T Cross Map 2000-4000
- Model T Cross Map 4000-6000
- Model T Cross Map
- RAM File Handling
- Calling the Main ROM from Option ROM
- BASIC Efficiency Tips
- Model 100 ROM
- RBASIC
- RBASIC on Linux
- OPTROM Switching
- REX Overview
- Extraordinary String Animals
- Covington ROM Maps
- Description of Machine Code File Handling Routines
- Desklink/TS-DOS Directory Access
- Loading a typical CO file
- CRC-16-CCITT
- Model 100 LCD Programming
- BASIC Variable Format
Model T Software
Model T Hardware Hacks and Troubleshooting
- Splitting the Model 100/102/200 case
- Recovering an Unresponsive Laptop
- International Keyboard Support
- Repairing Problem Keys
Model T Hardware Projects
- T200 Disassembly
- NADSBox
- Mikrokolor
- MTHD
- Remem
- REX
- REXclassic
- REXCPM
- NSC800 Conversion
- BCR TTL SERIAL HACK
- PC-8201 BANK2 32kB SRAM card
- M100 26-3801 24kB SRAM card
- 5MHz Upgrade hacks
- T200 2x24kB SRAM card
- 8kB SRAM module
- REXsharp
- 5MHZ upgrade for Model T
Other Topics
M100 LCD direct programming.
(John I have no idea how to add a file to the category, or how to edit a category...)
The LCD has 10 driver chips, which store graphics bits directly. The driver chip is the HD44102. I would recommend reading the datasheet for HD44102. Each driver chip controls a specific reqion of the LCD, as follows-
--------------------- | 0 | 1 | 2 | 3 | 4 | --------------------- | 5 | 6 | 7 | 8 | 9 | ---------------------
Drivers 0-3 and 5-8 all drive 50 x 32 of dots each, while 4 and 9 only drive 40 x 32 dots.
(the unused dots in 4 and 9 represent some 'free ram' for use by programmers).
The dot content is updated by writing data to each of these chips. To select a driver for access, you must write a 1 to a specific bit on port B9 or BA.
LSB MSB | B9 | BA | 0 1 2 3 4 5 6 7 8 9 X X X X X X
You must preserve bits 2-7 of BA at all times. You can select as many drives as you want at any one time.
Note - since the timer uses these ports, you must do your graphics updates with interrupts disabled, or your chip selects get modified. Once selected, you should update that driver within the same disabled interrupts window.
Rather than describe all the different things you can do with these driver chips, the simplest thing to do is describe the standard way to program them. They are pretty flexible parts, and the M100 does not really leverage the capabilities well. Hardware scroll is an example.
Each driver divides it's bit field into 4 banks, each bank representing one line of text on the screen. They run top 00 to bottom 11.
Port FE is the control port for the driver chip, and FF is the data port.
First, write the control byte to the driver, which specifies bank in bits 6 and 7, and then the column number in bits 0-5. Column number ranges from 0 to 49.
Control Port LSB MSB | FE | 0 1 2 3 4 5 6 7 | column | bank |
Then, write the data for the selected column to port FF. I believe that the LSB represents the dot at the bottom of the column, while MSB is the dot at the top.
Those are the basics.