The Teesside TS2, while similar, is a simpler design using static rather than dynamic RAM, and lacks some features like the parallel port and timer (PIT) and cassette tape interfaces. The TS2 was designed to be compatible with the ECB in terms of the memory map for ROM and RAM and serial ports. This allows it to run the TUTOR monitor program.
I was able to find source and binary code for TUTOR here. I ported it to the GNU assembler so that I could modify it if desired.
It is 16KB in size (unlike the TS2 monitor which is about 3Kb) and will fit in the first two 8K EPROMs of the TS2.
I wasn't sure if TUTOR would run as is on my design. The Clements book implied that it should, but did not say so explicitly. After programming the two EEPROMs and inserting them in the board I was pleased to see that it came up and accepted commands.
The Motorola ECB included a parallel printer port and cassette tape interface using the 68230 parallel Interface/Timer (PIT) chip. That chip is not included in the TS2. However, other than commands specific to the printer port and cassette tape, everything else works.
There is a copy of the review of the Motorola ECB from Byte magazine in 1983 here. At US$495 it would be equivalent to about US$1200 today. I believe one of the reasons that the University of Teesside designed their own educational board rather than the ECB was that they could significantly reduce the cost.
The TUTOR monitor is well documented in chapter 3 of the M68000 Educational Computer Board User's Manual. It is quite sophisticated, even including a disassembler and assembler. I'll just cover a few highlights and examples of what it offers.
It provides the following features:
- Display and modification of memory as byte, word, longwords, strings, characters, or disassembled instructions.
- Display and modification of registers.
- Memory fill, move, search, and test functions.
- Number conversion between decimal and hexadecimal.
- The ability to set and clear breakpoints.
- Ability to run programs with breakpoints or line by line tracing.
- Output to either of two serial ports, parallel printer port, or cassette tape.
- Loading and saving of memory in S record format.
- An assembler which allows entering assembly language mnemonics.
Here is a example of displaying memory, first as hex and ASCII data, then as a disassembly:
TUTOR 1.3 > MD 8008 80
008008 60 00 0C B0 41 F8 04 4C 20 3C 00 00 02 0E 42 81 `..0Ax.L <....B.
008018 10 C1 53 80 66 FA 48 7A 00 10 21 DF 00 08 48 7A .AS.fzHz..!_..Hz
008028 00 12 21 DF 00 0C 4E 75 21 FC 42 55 53 20 00 30 ..!_..Nu!|BUS .0
008038 60 08 21 FC 41 44 44 52 00 30 21 DF 04 CA 21 DF `.!|ADDR.0!_.J!_
008048 04 CE 21 CF 04 44 4F FA 00 0A 21 CF 04 D6 60 00 .N!O.DOz..!O.V`.
008058 0C 34 61 00 1C 3A 3C FC 0D 0A 30 38 04 CA 61 00 .4a..:<|..08.Ja.
008068 19 48 1C FC 00 20 20 38 04 CC 61 00 19 2E 1C FC .H.|. 8.La....|
008078 00 20 30 38 04 D0 61 00 19 30 61 00 1B 86 60 00 . 08.Pa..0a...`.
TUTOR 1.3 > MD 8008 80 ;DI
008008 60000CB0 BRA.L $008CBA
00800C 41F8044C LEA.L $0000044C,A0
008010 203C0000020E MOVE.L #526,D0
008016 4281 CLR.L D1
008018 10C1 MOVE.B D1,(A0)+
00801A 5380 SUBQ.L #1,D0
00801C 66FA BNE.S $008018
00801E 487A0010 PEA.L $00008030(PC)
008022 21DF0008 MOVE.L (A7)+,$00000008
008026 487A0012 PEA.L $0000803A(PC)
00802A 21DF000C MOVE.L (A7)+,$0000000C
00802E 4E75 RTS
008030 21FC425553200030 MOVE.L #1112888096,$00000030
008038 6008 BRA.S $008042
00803A 21FC414444520030 MOVE.L #1094992978,$00000030
008042 21DF04CA MOVE.L (A7)+,$000004CA
008046 21DF04CE MOVE.L (A7)+,$000004CE
00804A 21CF0444 MOVE.L A7,$00000444
00804E 4FFA000A LEA.L $0000805A(PC),A7
008052 21CF04D6 MOVE.L A7,$000004D6
008056 60000C34 BRA.L $008C8C
00805A 61001C3A BSR.L $009C96
00805E 3CFC0D0A MOVE.W #3338,(A6)+
008062 303804CA MOVE.W $000004CA,D0
008066 61001948 BSR.L $0099B0
00806A 1CFC0020 MOVE.B #32,(A6)+
00806E 203804CC MOVE.L $000004CC,D0
008072 6100192E BSR.L $0099A2
008076 1CFC0020 MOVE.B #32,(A6)+
00807A 303804D0 MOVE.W $000004D0,D0
00807E 61001930 BSR.L $0099B0
008082 61001B86 BSR.L $009C0A
008086 600018F6 BRA.L $00997E
TUTOR 1.3 >
The assembler is quite powerful, mostly compatible with Motorola's cross-assembler but lacking support for editing, line numbers, and labels. In pinch, if you could not afford a development system with a cross-compiler, you could use TUTOR's assembler for development and upload the disassembled source and assembled S record file.
Using TUTOR I can easily cross-compile code on a Linux laptop, generate a Motorola hex file, and then transfer it to the TS2 over the serial port.
I'm shortly going to wire up the second 16K of RAM on the board. I can use the memory test command to verify that the new memory is working.
One quirk of TUTOR is that you need to enter all commands in upper case.
Also, some commands can be interrupted by typing BREAK. This is a special serial port sequence and not a character. From minicom it can be sent using
Overall I see little reason to use the TS2 monitor as TUTOR is much more powerful. The features like breakpoints, tracing, and disassembler make it much easier to debug test programs.
This brings back memories. I build an analog data acquisition system around the 68000 when I was in college at UCSB around 1989 and used TUTOR as the operating system. It worked great and made the project much easier. Since I didn't need to write an OS, I could just focus on the hardware features.
ReplyDelete