----------------------------------------------------------------

TAS INSTRUCTION PROBLEMS:

The Amiga hardware does not allow the CPU two contiguous bus
cycles, so any read/modify/write cycle is dammed to fail. As a
result, the TAS instruction doesn't work and can even mess up
the next instruction fetch, causing privilege violations and
illegal instructions

----------------------------------------------------------------

NO_TAS

If a program fails because it contains TAS instructions, simply
run it through NO_TAS and all your problems will be solved.

This program removes TAS instructions in recognised TURBO'ed and
QLIB'ed tasks, substituting equivalent code. If the code is not
thus recognised, TAS will be replaced by a Line-F instruction
(which is programmed to emulate TAS but is not QL-compatible) or
by extending the code.

FIXES FOR QLIBERATOR

The Q_Liberator runtime libraries contain a single TAS
instruction...TAS $8F(A6) in v3.22 and TAS $8F(A4) in the
library used with the budget compiler. As a result any program
compiled to include libraries will also contain this
instruction.

NO_TAS automatically recognises QLIB'ed tasks, removes the TAS
instruction and substitutes equivalent code. The result is a
task that is compatible with a 'real' QL and runs within
Amiga-QDOS without problems.

FIXES FOR TURBO COMPILER

The TURBO compiler package contains a single TAS $8F(A6) in
PARSER_task and two TAS instructions ( TAS $8F(a6) and
TAS $17(a2) ) in CODEGEN_task. Any program compiled with TURBO
may also contain these instructions.

NO_TAS automatically recognises TURBO'ed tasks, removes the TAS
instructions and substitutes equivalent code. The result is a
task that is compatible with a 'real' QL and runs within
Amiga-QDOS without problems.

FIXES FOR NON QLIB/TURBO CODE

If the code is not recognisable as having been produced by QLIB
or TURBO, NO_TAS will check the code and process it dependent on
its size.

Under these circumstances a disassembly is shown and you will be
asked whether or not to replace the code. Note however that the
program may display TAS instructions where none are present
(i.e. within program DATA). A good rule-of-thumb is that true
CODE will usually be surrounded by other machine code
instructions, whereas DATA will be liberally sprinkled with
DC.Ws

SMALL CODE FIX

If the code is less than 32K in size, NO_TAS will attempt to
replace all TAS instructions by a branch to an equivalent
subroutine. The subroutine is tagged onto the end of the code,
so any file processed in such a way will 'grow'. The result is a
task that is compatible with both Amiga-QDOS and a 'real' QL,
but which might confuse tasks that make assumptions upon their
own length

LARGE CODE FIX

If the code is bigger than 32K in size, TAS instructions will be
replaced by a Line-F instruction (which is programmed to emulate
TAS - *see note). Line-F code is INCOMPATIBLE with a 'real' QL.
Code modified in this way will cause a total system crash if run
on a real QL (unless the appropriate Line $F code is installed
on the host).

----------------------------------------------------------------

RESTORE_TAS

Use this program to 'put-back' TAS instructions into programs
that have been altered by NO_TAS.

----------------------------------------------------------------

NOTE

  On 680X0 machines with co-processors attached, bits 9-11 of
  the line $F instruction correspond to an ID used to select the
  floating point unit, the memory management unit etc. The FPU
  uses an ID of 0, whereas the MMU uses an ID of 1 (bit 9 set).

  In Amiga-QDOS the line $F instruction with co-processor ID 7
  (bits 9-11 set) is programmed to emulate the TAS instruction
  transparently. Since ID 7 is unused at present, the emulation
  code should be compatible with current 68020, 68030 and 68040
  machines.

----------------------------------------------------------------

