summaryrefslogtreecommitdiff
path: root/nuttx/configs/xtrs/README.txt
blob: f8b3d0e73dce253b85c274f602106259e6f7f380 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
xtrs README
^^^^^^^^^^^^^

Current status
^^^^^^^^^^^^^^

The xtrs port is not operational yet; some work still needs to be done.

Contents
^^^^^^^^

  o Getting a TRS80 emulator and DOS disks
  o Loading an executable into xtrs
  o Configuring NuttX
  o Reconfiguring NuttX
  o Reconfiguring for Linux, OSX, or Cygwin
  o SDCC
  o Building the SDCC toolchain

Getting a TRS80 emulator and DOS disks
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

This port uses a vintage computer based on the Z80, the TRS80.
There's a main page describing the different models of TRS80.
See: http://www.trs-80.com

An emulator for this computer is available to run TRS80 programs on a 
linux platform (http://www.tim-mann.org/xtrs.html).

Other emulators are available for other platforms. 
See http://www.trs-80.com, click on the link Emulators.

TRSDOS, LDOS and other softwares are available at:
http://discover-net.net/~dmkeil/trs80/software/trs-dos.htm

Or you can get TRSDOS 1.3 and 6.1 from this site; it's included with the emulator.
http://discover-net.net/~dmkeil/trs80/model4.htm

The SDCC toolchain is available from http://sdcc.sourceforge.net/.  All
testing has been performed using version 2.7.0 of the SDCC toolchain.

Loading an executable into xtrs
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

At http://www.trs-80.com click on the link: Getting a Software Onto an Emulator.

Configuring NuttX
^^^^^^^^^^^^^^^^^

  ostest

    This configuration performs a simple, minimal OS test using
    examples/ostest.  This can be configurated as follows:

    1) From a POSIX window:
       cd tools
       ./configure.sh xtrs/ostest
    2) From a CMD.exe window
       setenv.bat
       make

    If this is a Windows native build, then configure.bat should be used
    in step 1) instead of configure.sh:

      configure.bat xtrs\ostest

    The setenv.bat will need to be updated to include the PATH to the XTRS
    hex2cmd program.

    NOTES:

    1. This configuration uses the mconf-based configuration tool.  See the
       "Reconfiguring" section below for information about changing this
       configuration.

    2. The default setup for this configuration uses a windows native build.
       See the section entitled "Reconfiguring for Linux, OSX, or Cygwin"
       which will give you the steps you would need to do to convert this
       configuration to build in other, Unix-like environments.

    3. The current build requires ca. 3.2.1 SDCC.

  nsh

    This configuration file builds NSH (examples/nsh).  This
    configuration is not functional due to issues with use of the
    simulated serial driver (see the TODO list).

    This configuration can be selected by:

    1) From a POSIX window:
       cd tools
       ./configure.sh xtrs/nsh
    2) From a CMD.exe window
       setenv.bat
       make

    If this is a Windows native build, then configure.bat should be used
    in step 1) instead of configure.sh:

      configure.bat xtrs\nsh

    The setenv.bat will need to be updated to include the PATH to the XTRS
    hex2cmd program.

    NOTES:

    1. This configuration uses the mconf-based configuration tool.  See the
       "Reconfiguring" section below for information about changing this
       configuration.

    2. The default setup for this configuration uses a windows native build.
       See the section entitled "Reconfiguring for Linux, OSX, or Cygwin"
       which will give you the steps you would need to do to convert this
       configuration to build in other, Unix-like environments.

    3. The current build requires ca. 3.2.1 SDCC.

    4. This configuration depends on configs/xtrs/src/xtrs_serial.c which
       is incomplete.  At compile time, the following symbols are undefined:

       ctrl, baud, rs232_xmtisr, rs232_recvisr, ch

  pashello

    Configures to use examples/pashello for execution from FLASH
    See examples/README.txt for information about pashello.

    This configuration is not usable because the resulting binary
    is too large for the z80 address space.

    This configuration can be selected by:

    1) From a POSIX window:
       cd tools
       ./configure.sh xtrs/pashello
    2) From a CMD.exe window
       setenv.bat
       make

    If this is a Windows native build, then configure.bat should be used
    in step 1) instead of configure.sh:

      configure.bat xtrs\pashello

    The setenv.bat will need to be updated to include the PATH to the XTRS
    hex2cmd program.

    NOTES:

    1. This configuration uses the mconf-based configuration tool.  See the
       "Reconfiguring" section below for information about changing this
       configuration.

    2. The default setup for this configuration uses a windows native build.
       See the section entitled "Reconfiguring for Linux, OSX, or Cygwin"
       which will give you the steps you would need to do to convert this
       configuration to build in other, Unix-like environments.

    3. The current build requires ca. 3.2.1 SDCC.

Reconfiguring NuttX
^^^^^^^^^^^^^^^^^^^

These configurations all use the kconfig-frontends, mconf-based configuration
tool.  To change this configuration using that tool, you should:

  a. Build and install the kconfig-mconf tool.  See nuttx/README.txt and
     misc/tools/README.txt

  b. Execute 'make menuconfig' in nuttx/ in order to start the reconfiguration
     process.

Reconfiguring for Linux, OSX, or Cygwin
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

All of the z80 configurations in this this directory are set up to build in a
Windows CMD.exe shell.  This configuration requires the MinGW host compiler
and severl GNUWin32 tools (see discussion in the top-level NuttX/README.txt
file).

These configurations can be converted to run under Linux (or Cygwin or OSX),
by modifying the configuration file as follows:

  -CONFIG_HOST_WINDOWS=y
  -CONFIG_WINDOWS_NATIVE=y
  +CONFIG_HOST_LINUX=y
 
  -CONFIG_Z80_TOOLCHAIN_SDCCW=y
  +CONFIG_Z80_TOOLCHAIN_SDCCL=y

You may need to first manually change the CONFIG_APPS_DIR="..\apps" definition
in the .config file because the backslash may upset some Unix-based tools.

This configuration will require a recent version of SDCC (ca. 3.2.1) for Linux
or custom built for Cygwin (see below).

You cannot use the default setenv.bat in these Unix-like enviroments because
that is a Windows batch file.  Use configs/z80sim/script/setenv.sh instead.
setenv.sh must include the path to the installation location of SDCC (probably
/usr/local/bin).

SDCC
^^^^

These z80 configurations all use the SDCC toolchain (http://sdcc.sourceforge.net/).
Source and pre-built SDCC binaries can be downloaded from the SDCC SourceForge
site: http://sourceforge.net/projects/sdcc/files/ .  Pre-built binaries are
available for Linux, MAC OSX, and for Win32.  Various SDCC options can be
selected with:

  CONFIG_Z80_TOOLCHAIN_SDCCL=y : SDCC for Linux, MAC OSX or Cygwin (see below)
  CONFIG_Z80_TOOLCHAIN_SDCCW=y : SDCC for Win32

SDCC versions 3.2.0 or higher are recommended.

Building the SDCC toolchain
^^^^^^^^^^^^^^^^^^^^^^^^^^^

You may also want to build your own SDCC toolchain.  You might want to do this,
for example, if you are running under Cygwin and want a Cygwin compatible
SDCC toolchain.

The SDCC toolchain is built with the standard configure/make/make install
sequence.  However, some special actions are required to generate libraries
compatible with this build.  First start with the usual steps

  download
  unpack
  cd sdcc
  ./configure

But before making, we need to apply a patch to the SDCC 2.6.0 source
so that the z80 assembler can handle long symbol names

  Apply sdcc-2.6.0-asz80-symlen.patch
  cd sdcc/device/lib

Then make the SDCC binaries

  cd sdcc
  make

and install SDCC:

  sudo make install