Ttk-91 tietokone

Ttk-91 is a very simple educational processor architecture design by Auvo Häkkinen in 1991 for the purposes of this course (Computer Organization I, Tietokoneen toiminta kurssi 1991) [Häkk98]. The design is defined by register architecture, machine language, and symbolic assembly language. The only data type is integer, words are 32 bits, and memory addresses are word addresses. The design is intentionally incomplete, and it does not include (e.g.) privileged machine instructions. The design includes also memory and rudimetary I/O devices for a system utilizing ttk-91 processor. original ttk-91 simulator was written in Pascal.

For the Spring 2011 Computer Organization course (in Finnish) the course assistant Anna Kuosmanen made her own guide on ttk-91 machine instructions with numerous program examples. The guide is available (in Finnish) in http://www.cs.helsinki.fi/group/nodes/kurssit/tito/kuosmanen/.

[Häkk98] Auvo Häkkinen, Tietokoneen toiminta, opetusmoniste D390 (real old course printout, in Finnish), Dept of CS, U of Helsinki, 30.1.1998.

Titokone

Titokone is a software package produced by Koski software development team (in software development project course) in Spring 2004. It iw written in Java. It can be used to translate and execute (by simulation) ttk-91 symbolic assembly language programs. The easiest way to run Titokone is to save the jar-file (v. 1.203) to your own machine and click it. You can also install Titokone to your own system by following Kerola's installation instructions. Titokone user manual is in the Titokone web page. The web page includes team's Titokone installation instructions as well as the machine instruction list

The description of ttk-91 machine instructions is in condenced form in TitoTrainer instructions, as a loadable text file linked to Titokone web page.

There are many ttk-91 examples used in current course and even much older ttk-91 examples in the course pages.

Titokone is used in this course for independent practice of (symbolic) assembly language programming. Titokone can also animate the execution of machine isntructions in ttk-91 processor (system).

TitoTrainer

TitoTrainer is a software built on top of Titokone. It is another programming environment to practice ttk-91 symbolic assembly language programming. It has numerous simple (and not so simple) programming problems, and it automatically checks the correctness of the solutions. TitoTrainer keeps track on all problems solved, and this count is sometimes used in course grading. Current version is TitoTrainer2 and it is available in webpage http://titotrainer2.users.cs.helsinki.fi.

TitoTrainer needs an user id and a passphrase (password). You can create them the 1st time you use TitoTrainer. At the same time, sign up (in TitoTrainer) to current course "Spring 2020" ("Kevät 2020"), so that your record shows up in course roster. Please do not use the same passphrase that you use in any other system.

NOTICE: If you can not log in to TitoTrainer2 (get "Service Temporarily Unavailable", or some other similar response), please send email to atk-apu@cs.helsinki.fi. The situation should then be fixed relatively soon. For some reason, TitoTrainer2 just does not restart automatically after some updates.

Students learn symbolic assembly language programming by implementing a set of ttk-91 programming problems in TitoTrainer. You can also solve TitoTrainer problems by (a) copying given code segments to Titokone, (b) solving the problem in Titokone with it's good debugging environment, and (c) finally copying the correct code back to TitoTrainer.

TitoTrainer problems have rough classification encoded in their names (e.g., a-150 Simple code segment). The 1st letter is the main level:

  1. beginner, simple code, if-then-else, loops
  2. more complex code, 1d-arrays, records, simple data structures
  3. subroutine calls, good understanding of machine code, code optimization
  4. subroutine implementation, multidimentional arrays
  5. whole programs with subroutines, device driver
  6. self modifying code, other challenges

The 3-digit number after the main level gives the difficulty level (within that main level): 100=easy and 900=difficult. You should do the easy problems first. Problems above difficulty level 700 may be challenging. Problems with difficult level above 900 are above the learning objectives for this course.

Programming is fun, but do not get lost in it! Do not use all your precious studying time trying to solve all TitoTrainer problems.