noclrex()
/*

       NOCLREX - Do not clear externals.

       11/15/82 - David A. Gewirtz

       This function is used to hack up version 1.5 of Leor's

BDS C compiler. The C.CCC runtime package automatically clears

the external data area before executing the compiled program.

For most programs, this is fine, but for a program like CHDIR,

which writes itself back out and counts on preinitialized

externals, it is no good at all. So the noclrex() hack is used to

cause C.CCC to bypass the 'clear externals' phase of the run-time

initialization.  As C.CCC may be different for each version this

routine should be checked.  The following code is part of the

'init' subroutine of the C.CCC runtime package:

0447 2A1B01            LHLD    FRERAM  ;CLEAR EXTERNALS
044A EB                XCHG
044B 2A1501            LHLD    EXTRNS
044E CDFA02            CALL    CMH
0451 19                DAD     D       ;HL NOW HOLDS SIZE OF EXTERNAL DATA AREA
0452 7C        CLREX:  MOV     A,H     ;CLEAR ENTIRE EXTERNAL AREA
0453 B5                ORA     L
0454 CA5E04            JZ      CLREX2
0457 1B                DCX     D
0458 2B                DCX     H
0459 AF                XRA     A
045A 12                STAX    D
045B C35204            JMP     CLREX

045E AF        CLREX2: XRA     A

       This function puts a JMP CLREX2 at location 0x447,
       thereby effectively bypassing the clearing mechanisms
       for programs based on this image.

       For those who believe in the sanctity of the original
program, as well as thos who really don't wish to see awful
and unglamorous hacks, I have not put this in the original programs.

       If you have a need for it, simply compile this function
and make a call of the form:

       noclrex();

and all will be well.

       Finally, please realize this this in no way affects the
currently running program, only the program created from the
current image.

*/
{
       poke(0x447,0xc3);       /* The JMP instruction */
       poke(0x448,0x5e);       /* low order address */
       poke(0x449,0x04);       /* high order */

       /* That's it ... just remember to change this whenever
          C.CCC is changed or a new version is used */
}