CONVERTING TDS9092 TO TDS2020F
TDS9092 has almost the same pin connections as TDS2020F but fewer features and less processing power. The language is Fig-Forth, not ANS Forth and compilation is to RAM, not Flash-EEPROM. This section is mainly for users changing from TDS9092 to TDS2020F, but will also be useful if you are changing from TDS2020F to TDS9092 to gain the benefit of lower cost for large production. These notes are for guidance only. Conversion of a TDS9092 application to TDS2020F should be straightforward but some will be easier than others. Advanced features of TDS2020F are not covered here except when they impact conversion of TDS9092 applications.
TDS2020F & TDS9092 PIN CONNECTIONS
The size of TDS2020F is larger at 100 x 80mm (against 100 x 72mm). The four mounting hole and reset button positions are unchanged. As far as possible TDS2020F pins correspond to equivalent ones on TDS9092. There is an extra row of 32 pins named z1 to z32 and no internal connectors, except for ports A and B.
The address lines of TDS2020F simulate those of TDS9092. The only difference is that the bottom part of the TDS9092 memory map 0000 to 7FFF corresponds to the top half of the first 64k (Page 0) of the TDS2020F and vice-versa. The address bus on TDS2020F can be connected to any TDS9092 peripheral, but you need to change the address to access it. For example if you used addresses 01AC to 01AF with TDS9092 computers then change to 081AC to 081AF with TDS2020F. Note that addresses on TDS2020F need 5 hex digits. If only 4 are shown it is implicit that the address is in Page 0.
This high degree of compatibility has been achieved by a change to pin c1. On TDS2020F this is P0A15*, 'Page 0 address line 15 inverted'. It is address line 15 inverted and also gated so that it can only be active (logic 0) when the requested address is in the first 64k (Page 0) of TDS2020F memory. If you need the 'real' A15 of the TDS2020F it can be found on pin z15. Other address lines A0 to A14 remain unchanged in function and position. Address maps are available to explain the use of memory on TDS2020F.
READ & WRITE CONTROL SIGNALS RD* WR* R/W*
There are no changes in pin connections or functions.
DECODED CHIP SELECTS
The 5 spare chip selects remain on the same pins but on TDS2020F are asserted in the upper half of the first 64k bytes of memory. For example the chip select CS01C0 used for alphanumeric LCD displays on TDS9092 becomes CS81C0 on TDS2020F. No hardware change is needed, use the same peripheral card but alter the software address.
There are no changes in pin connections or functions. Speeds are higher however and the data bus should not be taken too far from the TDS2020F. A maximum distance of 300mm is recommended unless external buffers are fitted. See EXTENDING THE BUS, page 303.
CLOCK SIGNALS E AND E*
The E clocks are on the same pins and the function and frequency are unchanged.
TDS2020F instructions operate faster than those on TDS9092 and are not synchronised with the E clocks. There are special assembler and Forth instructions that you must use when addressing peripherals that use the E clocks. For example:
PC@ \ get byte from addr
$81A0 to stack
B $81A0 )) R3
MOVFPE, \ move From Peripheral with E
RS232 SERIAL PORTS
Serial Ports 1 and 2 remain on the same pins. Serial Port 2 is a software UART supported by a library program #SERIAL2.TDS.
The non-masked (NMI pin a26) and two masked interrupt line pins are unchanged. The masked interrupts are called IRQ0* and IRQ1* (IRQ1* and IRQ2* on TDS9092) but are still on pins c26 and c27 respectively.
SWITCHED +5V SUPPLY
The RS232 serial port chip driver can be switched on and off by software and the switched power supply is available on the same pin.
There is no change in pin connections or function.
There is no change in pin connections or function, except that the serial transfers on TDS2020F are over 3 times faster.
The pins are unchanged. One difference with TDS2020F is that the power supply can rise and fall as slowly as you wish. An internal signal holds the microprocessor in reset if the applied voltage is below 5.8V. The specification is unchanged at +6 to +16V single power supply operation. Typical current on TDS2020F is 32mA plus any external loads. A built in low-power mode enables operation at down to 155�A.
q Ports A and B are unchanged on a 16-pin connector located in the same place in the middle of the computer board. The addresses change to those in the table.
q Port 7 replaces Port 6 and pin connections are unchanged. Addresses are in the table.
q Port 1 replaces Port 5. Although most are in the same area of the connector the individual bits are in different places so that the location of interrupt lines and I2C bus can remain unchanged. See the pin connection diagram for details.
q Port 9 replaces Port 2. On TDS2020F most pins are used for functions other than I/O just as before. However P97 is available to replace P22 on the same pin.
q The 8 pins designated as analog inputs and 3 as analog outputs can be used as parallel ports if the analog functions are not needed. They can be found on the z connector.
CONVERTING TDS9092 PROGRAMS
This is a summary of the principal points to note:
q Change any absolute addresses to meet the needs of TDS2020F. For example Port 6 on TDS9092 with DDR and data registers at $15 and $20 becomes Port 7 on TDS2020F with DDR and data registers at $FF8C and $FF8E.
q Any external peripherals which used the I/O area 0000 to 07FF move to the area 8000 to 87FF. No hardware change is needed, just alter the address in the software.
q The TDS2020F language is ANS Forth. See the next section on conversion from the Fig-Forth on TDS9092.
q User variables should be converted to ordinary variables. For example: change 88 USER FRED to VARIABLE FRED .
q In addressing peripherals which use the E clock (or E*) change C! and C@ to read PC! and PC@ . This also applies to Ports A and B as well as the external watchdog in the TDS9 gate array.
you cannot read or write a 16-bit word from or to an odd address. For
example if you used $FFFF $01DF ! to write ones to both Port A and Port B
(01DF and 01E0) you will need to change the code to single bytes. In this case
the correct code would be
q Any assembler code has to be rewritten for TDS2020F.