 
 ________________________________ TRACE 4.1 __________________________________
			Disassembler, Debugger, Tracer
	  Copyright (c) 1994, August 1995, Daniel Nazarkiewicz, Paris.
			    All rigths reserved


1.WHAT IS THE PURPOSE OF THIS PRODUCT ?

  This software offers to programmers the entire knowledge to program a PC,
  to find out what is it hidden behind interrupt number 10h (video) for
  instance but also to find out the secret of the hardware interrupt, and
  hence, to discover the undocumented DOS and BIOS.

  TRACE 4.1 is the ideal companion of your debuggers TD and CodeView.
  TRACE 4.1 accelerates your Application Development.

2.WHAT CAN I GET FROM TRACE 4.1 ?

  Five types of listing are generated with plus or less precision about the
  code.

  /LF option :

  AX=0C12 BX=00FF CX=0064 DX=0064 SI=0000 DI=0400 ES=E731 DS=E781 FLAGS=7302
  SS=E741 SP=0400 BP=091C STACK=4F42 4A4E 554F 2052 0024 0000 0000 0000 81B8
  000005 E782:002C  B00A            MOV AL,0Ah

  AX=0C0A BX=00FF CX=0064 DX=0064 SI=0000 DI=0400 ES=E731 DS=E781 FLAGS=7302
  SS=E741 SP=0400 BP=091C STACK=4F42 4A4E 554F 2052 0024 0000 0000 0000 81B8
  000006 E782:002E  CD10            INT 10h

  AX=0C0A BX=00FF CX=0064 DX=0064 SI=0000 DI=0400 ES=E731 DS=E781 FLAGS=7302
  SS=E741 SP=03FA BP=091C STACK=0030 E782 7302 4F42 4A4E 554F 2052 0024 0000
  000007 C000:2897  FB              STI
  .
  .
  AX=0C0A BX=00FF CX=0064 DX=0064 SI=0000 DI=0400 ES=E731 DS=E781 FLAGS=7302
  SS=E741 SP=03FA BP=091C STACK=0030 E782 7302 4F42 4A4E 554F 2052 0024 0000
  000076 C000:3C2F  CF              IRET

  /LF and /L option ( without the stack's line )

  AX=0C12 BX=00FF CX=0064 DX=0064 SI=0000 DI=0400 ES=E731 DS=E781 FLAGS=7302
  000005 E782:002C  B00A            MOV AL,0Ah

  AX=0C0A BX=00FF CX=0064 DX=0064 SI=0000 DI=0400 ES=E731 DS=E781 FLAGS=7302
  000006 E782:002E  CD10            INT 10h

  AX=0C0A BX=00FF CX=0064 DX=0064 SI=0000 DI=0400 ES=E731 DS=E781 FLAGS=7302
  000007 C000:2897  FB              STI
  .
  .
  AX=0C0A BX=00FF CX=0064 DX=0064 SI=0000 DI=0400 ES=E731 DS=E781 FLAGS=7302
  000076 C000:3C2F  CF              IRET

  /LN ( without the regiters and the stack's line )

  000005 E782:002C  B00A            MOV AL,0Ah
  000006 E782:002E  CD10            INT 10h
  000007 C000:2897  FB              STI
  .
  .
  000076 C000:3C2F  CF              IRET

  /LS ( contains all the code previously executed, contains CMP, Jxxx, ... )

  MOV AL,0Ah
  INT 10h
  STI
  .
  .
  IRET

  /LW ( does not contain CMP,TEST,Jxxx,CALL,JMP )

  MOV AL,0Ah
  INT 10h
  STI
  .
  .
  IRET

3.HOW CAN I GET THESE LISTINGS ?

  First method :

    You just type a simple program containing two important lines that are :

         int 0AEh (you begin the debugging after this line)
	   Everything here will be traced (i.e: Read file, Set video mode,..)
         int 0AFh (you stop the debugging at this point)

	 For instance, to trace the writing of a point in 12h VGA mode
	   INT 0AEH
		   MOV AH,0Ch
		   MOV BH,00h
		   MOV DX,64h
		   MOV CX,64h
		   MOV AL,0Ah
		   INT 10h        ; TRACE 4.1 will go inside INT 10h
	   INT 0AFh

  Second method :

   If you want to trace a program which does not contain these two lines, you
   give to TRACE 4.1 a scan code which will allow you to start tracing by
   pressing this key, until full memory assigned of step by step.

4.OPTIONS OF TRACE 4.1

   If you trace a long program or if you don't have enough memory, you have
   the posibility to DISCARD a number of FIRST step by step you want.

   You can have also a precise number of step by step, or a combination of
   the two precedents modes (i.e: discard 100 first step by step, then take
   5000 traces after).

   You can disassemble bytes in conventionnal memory, you just specify the
   number of disassembling line you want.

   /Ec   where c is the excutable file with full pathname if so, /Emyprog.com
   /Fc   where c is the 8 first caracters of the data file (without extension)
   /Ij+  to record what's going on inside interrupt number j in hexa on 2 digits
   /Ij-  TRACE 4.1 traces all instructions beeing executed by interrupt, with
	 the intention of avoiding the stop of the debugging by the interrupt
	 routine. So, all software interrupts are traced but if you encounter
	 problems with one software interrupt, you can disable the trace by
	 default by using the /Ij- option (j in hexa on two digits)
   /MXn  to reserve block of 64 ko in XMS (n in decimal)
   /MCn  to reserve memroy in conventionnal memory, block of 64 ko (n in decimal)
   /Sn   to discard the n first step by step (n in decimal)
   /Nn   to take only n step by step (n in decimal)
   /Cj   starting tracing by pressing a key of scan code j (j in hexa on two digits)
	 For french keyboard, the 'A' scan code is in fact the 'Q' scan code: 10h
	 and so on... There is no problem for the US keyboard.
   /Kj:j In combination of the /Cj option, the '/K ascii code : scan code' option
	 lets you to change in the BIOS's keyboard buffer the caracter given by
	 the /Cj by the /Kascii:scan. For instance the return key is 0dh like
	 ascii code and 1ch like scan code. (j are in hexa on two digits)
	 I want to begin trace by pressing the 'Q' (the 'A' in french keyboard),
	 and this key will be replaced by a return key in the BIOS.
	 /C10/K0d:1c

   For instance:

   -To trace int 10h and 13h and to get 3 files called mydata.lf, mydata.ln and
    mydata.ls (myprog.exe contains int 0aeh .... int 0afh)
	 TRACE /Emyprog.com/Fmydata/Mx5/I10/I13/LF/LN/LS

   -To disassemble bytes in memory from C000:2897 and to get 1 file called
    mydata.ln
	 TRACE /Fmydata/Dc000:2897/LN

   -To debug a program which doesn't contain int 0aeh ... int 0afh, to begin
    trace by pressing the 'Q' (US keyboard or the 'A' in french keyboard) key
    which will be replaced by the return key
	 TRACE /Emyprog.exe/Fmydata/MX5/LF/L/I21-/C10/K0d:1c

5.CAPACITIES OF TRACE 4.1

  This product manages XMS memory up to 16 Mo, if you use the /L option
  you can have a total of 2047 steps by block of 64 ko, otherwise, you can
  have only 1169 steps. So, you are capable of debugging more than
  490 000 steps.

  TRACE 4.1 is made exclusively from 8086 code, it makes standard calls
  system as much as possible.

  Some problems may occur if you trace the 21h software interrupt while the
  emm386.exe has been loaded at the boot, unload it from memory (anyway TRACE
  4.1 doesn't use eXpanded memory). However, most of 21h software interrupt
  functions can be debugged and traced while emm386.exe runs. If you have
  decided to debug a program by the /Cj option by keeping emm386.exe
  company, it is preferable you debug with the /I21- option, like this you
  will never go inside 21h interrupt software and you will avoid problems.
  If you want to debug the 21h interrupt software whatever it happens, the
  best solution is to unload emm386.exe from the memory.

6.LIMITED VERSION

  This is a limited version, some functions does not work at all, you are
  limited to trace only 50 assembly instructions and you cannot discard the
  first traces. The assembly file about tracing hardware interrupt is not
  supplied.

  To make an order of a complete version, print the order.txt file, fill out
  and mail it in today.

7.TO CONTACT US

  By Mail:    Daniel Nazarkiewicz
	      72 Boulevard Mortier
	      Paris 75020
	      FRANCE

  By Fax:     (33)(1) 49.88.11.66 
              (33)(1) 43.25.25.48

  By E-Mail:  Available in the mid-september 1995, contact us to know it.
              Until this date, you can contact us at
              -  100530.1620 for Compuserse users
              -  100530.1620@compuserve.com

