Intro to selector

Basically the Selector is a CP/M interface for the TRS-80 model 1 and compatibles. Compatible withe LNW CP/M, it has several extra useful options. It assumes the keyboard has 64 kByte installed.

The Selector came with NEWDOS/80 software for RAM disk and printer spooler. Another program loaded the NEWDOS/80 SYSx/SYS overlays in the lower 16 kByte.

The Selector is designed by Rence Roozendaal and marketed by the Amsterdam section (afdeling N.O.) of the TRS-80 Users Society (TRS-80 Gebruikers Vereniging). Later a special version of CP/M was developed, NO-CP/M, which even supported a hardware 80x24 video card (an adaptation of the Elektuur 80x24 VDU Card). NO-CP/M was based on Aster CP/M 1.4. Aster was a dutch manufacturer of an Eurocard based TRS80 clone.

The text below is translated (and slightly modified) from the file SELECTOR/ASC that came with the Selector board. I have the schema of the Selector, but not the PAL program. But this shouldn't be to hard to reverse engineer with some Z80 interface knowledge and the table below :-). The arithmetic to calculate the maximum addressable memory (2, 4 or 8 MByte RAM ?) is a bit unclear to me, my machine still has only 192 kByte RAM.


Layout of the Selector Selector board in a LNW computer
The layout and a photo of the Selector. This board is slightly modified (extra buffering) for operation in a LNW80 computer.

Operation of the Selector is twofold:

Bits 6 & 7 of the Selector port are used for other projects of the N.O. group: bit 7 switches the CPU speed, and bit 6 the 80x24 VDU card. This does not interfere with the bank switching.

The Selector uses the address lines A14 and A15 as they are present on the main board (referred to as MB14 and MB-15) and EI as bank switch signals. The CPU does not control these signals directly, but via the Selector board. So four situations are possible:

MB-15MB-14memory select
00ROM, keyboard, video: 16 kByte max.
01Internal RAM : 64 kByte max.
10External RAM : 4 MByte (extra 8 bits latch)
11External RAM : 4 MByte (extra 8 bits latch)

Compared with 16 kByte, 64 kByte uses two extra address lines. These lines come from the Selector board. Two sets of lines are provided: IR-14 & IR-15 for the internal keyboard RAM, and ER-14 & ER-15 for the extra RAM in the Expansion Interface.

Memory configurations in the keyboard

Three bits (0,1,2) of the Selector port are used to control the memory in the keyboard. The table below lists the configurations 0 to 6. Option 7 is not useful. The RAM in the keyboard is devided into four blocks of 16k: IR-0, IR-1, IR-2 and IR-3. KB stands for keyboard, I/O for memory mapped I/O (disk and printer) and VID for video RAM.

Size in
0 1 2 3 4 5 6
2k - 323000h-IR-0IR-0IR-0IR-0IR-0-

In short the usage of the configurations:

Bank selecting

The bank selecting switches the RAM in the Expansion Interface in banks or 32 kByte. Using bits 4 and 5 of the Selector port, four banks are addressable, so 4 * 32kByte = 128 kByte. Added to the 64 kByte in the keyboard, this makes 192 kByte. If the bits 6 and 7 are also used for bank switching, the total is 16 * 32kByte = 512kByte. For this the Expansion Interface memory must be replaced by 256 kByte chips.

Using bit 3 of the Selector port enables another bank switching mode. In the TRS modes (even configurations), the upper 32 kByte is switched. In the CP/M modes (odd configurations), the lower 32 Byte is switched.

In other words: if bit 0 is 0, bit 3 controls the upper 32kByte and
if bit 0 is 1, bit 3 controls the lower 32 kByte.


For formatting under NO-CP/M, the CPU clock speed must be switchable: 1.7 to 2.5 MHz for single density and 3.5 to 5.3 for double density. The NO-CP/M FORMAT.COM uses port 31 bit 7 to control the clock speed.

NO-CP/M supports a memory mapped 80x24 VDU card (2k) at F800h. This is done via port 31 bit 6. Bits 2 and 3 must be 0.

Extra lower RAM

Between the keyboard and the video RAM, 3 * 256 byte RAM is available in all modes. The presence of this RAM makes RAM disks and printer spoolers possible.

Last update: 2012-04-13