TLS100 hardware architecture (some info on the TLS410) ------------------------------------------------------ CPU: x86 OS: MS-DOS compatible Adressing: (Expanded Memory, LIM-like) (also TLS410) ---------------------------------------------------- Page Size: 16kB Page Frame (port FED4): E800:0000-E800:4000 (= E800:0000-EC00:0000) Page Frame (port FED6): EC00:0000-EC00:4000 (= EC00:0000-F000:0000) I/O Port FED4/FED6 (R/W): 0 0 0 0 A23-A14 0 0 (or 0 0 0 0 A23-A12) Linear address range are 24 bits (16 MByte) Possibly, the page boundary can be choosen at 4 kB bounds. (As observed the two page frames can be used together to form a continuous view of 32 kB absolute memory.) Port FED6 is used when only one page is needed, like executing code. Port FED4 is used when more than one page is needed, like fonts. (TLS410: Also has ports FED0 and FED2 with the frames starting at segments E000 and E400 respectively, enabling 64kB continous mem.) Banking (also TLS410) --------------------- In addition to the paging there are larger (128 kB)memory banks that can be changed. This is used for mainly for frame buffers (display data). In TLS100 there are two banks and they are set with interrupt E2. AH: 8 set, 9 get AL: bank number DX: bank address to set (... A23-A17) AX: returned bank address (... A23-A17) Bank frame (bank 0): 4000:0000-6000:0000 Bank frame (bank 1): 6000:0000-8000:0000 (As observed the two banks can be used together to form a continuous view of 256 kB absolute memory. In the API, there are functions that sets both banks to do exactly this.) Display ------- There are two HW display layers. The vertical resolution is sometimes halved(non-interlaced), mostly when using the LCD. Most API functions compensate for this so that you always see the full resolution. Background layer (layer 0): Width: 752 pixels Height: 580 pixels Colors: Around 16 million (YUV or YCrCb) Bitmap format: UYVYYY, 6 bytes = 4 pixels (U and V may be swapped) The actual bitmap may be much wider and the firmware offers 4 video slots that can be configured with individual base addresses and widths. Normally, only 2 of them are used. Overlay layer (layer 1): Width: 640 pixels (TLS100) Height: 480 pixels Colors: 16 indexed colors (with alpha) Palette format: 16 bits, not specified but probably has Y, U, V and alpha components Bitmap format: packed nibbles, 1 byte = 2 pixels Exact overlay position on background may be video mode dependent, but it should be almost entirely visible on normal displays. Also here does the firmware offer 4 video slots that can be configured with individual base addresses and widths. TLS100 however only uses one.