Manx Aztec C86 v5.2a
This commit is contained in:
parent
7addaf4bad
commit
1a1aaf034e
13708
Manx Aztec C86 v52a/Aztec_C86_User_Manual_Rel_1.05i_Jun83.pdf
Normal file
13708
Manx Aztec C86 v52a/Aztec_C86_User_Manual_Rel_1.05i_Jun83.pdf
Normal file
File diff suppressed because one or more lines are too long
108279
Manx Aztec C86 v52a/Aztec_C_MSDOS_4.10C_Commercial_Apr88.pdf
Normal file
108279
Manx Aztec C86 v52a/Aztec_C_MSDOS_4.10C_Commercial_Apr88.pdf
Normal file
File diff suppressed because one or more lines are too long
BIN
Manx Aztec C86 v52a/BIN/AHEX.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/AHEX.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/AI.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/AI.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/ALN.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/ALN.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/ALOC.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/ALOC.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/AS.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/AS.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/AZ2OMF.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/AZ2OMF.EXE
Normal file
Binary file not shown.
4
Manx Aztec C86 v52a/BIN/AZ86.BAT
Normal file
4
Manx Aztec C86 v52a/BIN/AZ86.BAT
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
path %PATH%;c:\ntvdm\az86\bin
|
||||||
|
set CLIB=c:\ntvdm\az86\lib\libs\
|
||||||
|
set INCLUDE=c:\ntvdm\az86\include
|
||||||
|
set AZTEC=c:\ntvdm\az86\bin
|
BIN
Manx Aztec C86 v52a/BIN/C.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/C.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/CC.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/CC.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/CGEN.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/CGEN.EXE
Normal file
Binary file not shown.
58
Manx Aztec C86 v52a/BIN/CHANGES.AHX
Normal file
58
Manx Aztec C86 v52a/BIN/CHANGES.AHX
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
Changes to AHEX:
|
||||||
|
|
||||||
|
1/16/92
|
||||||
|
- ahex was using wrong memory model for stricmp()
|
||||||
|
|
||||||
|
- when path was specified on file to be hexed, ahex generated an invalid
|
||||||
|
name for a temporary file.
|
||||||
|
|
||||||
|
- cleaned up log of ahex messages.
|
||||||
|
|
||||||
|
1/23/92
|
||||||
|
- added support to ahex for separation of binary output to odd and even
|
||||||
|
bytes.
|
||||||
|
|
||||||
|
1/27/92
|
||||||
|
- added support for splitting binary files into ROM-sized chunks.
|
||||||
|
|
||||||
|
- Got rid of the fluff reporting stuff - it got in the way too much! It
|
||||||
|
can be re-enabled by #define'ing MSDOS, if need be.
|
||||||
|
|
||||||
|
- Added warning:
|
||||||
|
|
||||||
|
WARNING: Segment '%s' in the input file not specified in order list.
|
||||||
|
|
||||||
|
for when the -a or -s options are used and a segment is found which
|
||||||
|
isn't on the list. It does not warn about 0-length segments or the
|
||||||
|
_bss segment, which should cut down on spurious warnings (however,
|
||||||
|
spurious warnings of this type can still occur on occasion).
|
||||||
|
|
||||||
|
3/5/92
|
||||||
|
I was angrered by ahex's poor design, and so sent devastating rains for 40
|
||||||
|
days and 40 nights to deluge the source code and render it unusable.
|
||||||
|
After the waters resided, a new ahex rose from the destruction, and lo!, it
|
||||||
|
was good.
|
||||||
|
|
||||||
|
- When in non-ICE mode, ahex acts like a mini-locator, locating
|
||||||
|
segments and classes with ROM.
|
||||||
|
|
||||||
|
- Option syntax based on aloc syntax.
|
||||||
|
|
||||||
|
4/9/92 ---------------------- Released v5.2a beta 1 ------------------
|
||||||
|
|
||||||
|
8/14/92 conv_to_hex() *jd
|
||||||
|
ahex was outputting screwy data after putting out extended address record,
|
||||||
|
because counter not being reset.
|
||||||
|
|
||||||
|
8/27/92 add_extension() *jd
|
||||||
|
ahex was not generating correct extension when input file specified a
|
||||||
|
path using dots (e.g. ..)
|
||||||
|
|
||||||
|
8/27/92 conv_to_hex() *jd
|
||||||
|
ahex output extended addr record after each 65535 bytes, not 65536.
|
||||||
|
|
||||||
|
8/27/92 conv_to_hex() *jd
|
||||||
|
ahex was not deleting its temporary file
|
||||||
|
|
||||||
|
8/31/92 layout.c *jd
|
||||||
|
ahex did not properly handle segments whose memory address was 0
|
85
Manx Aztec C86 v52a/BIN/CHANGES.ALN
Normal file
85
Manx Aztec C86 v52a/BIN/CHANGES.ALN
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
Changes to ALN:
|
||||||
|
|
||||||
|
10/12/91
|
||||||
|
1) LNR would put out a bad .lnk file when it encountered static data
|
||||||
|
(i.e., data declared with the 'static' keyword in C). When the bad
|
||||||
|
.lnk file was given to aloc, aloc would abort with a fatal error.
|
||||||
|
|
||||||
|
2) LNR would abort if it was given more than ~17 files to link.
|
||||||
|
|
||||||
|
3) In some situations LNR would put out a bad .lnk file if RDB debugging
|
||||||
|
information was desired, which aloc would subsequently reject.
|
||||||
|
|
||||||
|
10/22/91
|
||||||
|
4) LNR would exit w/ an error if it encountered control characters in
|
||||||
|
a -f file (including ^Z, which some editors put out at the end of a
|
||||||
|
file).
|
||||||
|
|
||||||
|
11/19/91 mapfile.c *jd
|
||||||
|
lnr was only outputting \n to map file, not \r\n.
|
||||||
|
added code to pm_putchar to add the \r when passed \n.
|
||||||
|
|
||||||
|
11/20/91 debug.c *mks
|
||||||
|
lnr was putting out bad index fields in the debugging records
|
||||||
|
|
||||||
|
1/10/92 MWS
|
||||||
|
Changed name from lnr to aln to be consistent with the rest of the
|
||||||
|
ROM tools. So, we've now got aln, aloc, and ahex.
|
||||||
|
|
||||||
|
1/16/92 azpass2.c MWS
|
||||||
|
Modified expression fixup code so that SUB expressions with
|
||||||
|
two symbols will work. i.e.:
|
||||||
|
|
||||||
|
Expr SUB
|
||||||
|
GBLSYM 0, endtbl
|
||||||
|
GBLSYM 1, ledxref
|
||||||
|
|
||||||
|
The only reason this works is because SUBS of this type always turn
|
||||||
|
out to be constants. In other words, the #$%!@ assembler should be
|
||||||
|
doing this itself.
|
||||||
|
|
||||||
|
2/10/92 pass1.h MWS
|
||||||
|
Modified 'Data_seg' segment definition to reserve 2 bytes at the beginning
|
||||||
|
of the Data group. This makes it easier to catch NULL-pointer write
|
||||||
|
bugs, and also matches what ln does.
|
||||||
|
|
||||||
|
4/9/92 ------------------ Released v5.2a beta 1 ---------------------
|
||||||
|
|
||||||
|
8/26/92 omffile.c jd
|
||||||
|
changed omfinit() to compute acbp field in segdef records, so that
|
||||||
|
segment alignment codes work
|
||||||
|
|
||||||
|
8/28/92 alnmain.c jd
|
||||||
|
When generating output file name from first input name that includes
|
||||||
|
a path having dots (e.g. ../foo.o), aln didn't generate correct output
|
||||||
|
name.
|
||||||
|
|
||||||
|
9/3/92 pass1.h *jd
|
||||||
|
aln leaves 2 unused bytes at beginning of _data (aka dataseg) segment,
|
||||||
|
but wasn't adjusting size of segment for those bytes
|
||||||
|
|
||||||
|
10/4/92 ------------------ Released v5.2a beta 2 ---------------------
|
||||||
|
|
||||||
|
|
||||||
|
10/12/92 jd: link.h
|
||||||
|
aln was creating invalid fixup records, because it was creating LEDATA
|
||||||
|
records that were longer than the maximum 1024 byte length.
|
||||||
|
|
||||||
|
10/12/92 jd: seglook()
|
||||||
|
aln was not gathering together segments in the same class, but this
|
||||||
|
is required by rdb (it expects all code symbols to be grouped together
|
||||||
|
in the .dbg file, followed by the data symbols). aloc could handle
|
||||||
|
this separation of segments, but not rdb.
|
||||||
|
|
||||||
|
|
||||||
|
10/19/92 jd: getval()
|
||||||
|
aln was not correctly processing the DATAREF, CODEREF, and BSSREF
|
||||||
|
loader items, which are generated when sqz optimizes the object module
|
||||||
|
libraries.
|
||||||
|
|
||||||
|
10/28/92 jd: omf_fixup()
|
||||||
|
aln was not generating the correct offset for a fixup record that
|
||||||
|
referenced the first data bytes of the previous LEDATA record
|
||||||
|
|
||||||
|
11/10/92 jd: outrecord(), omf_fixup(), outbyte(), RecordAlmostFull()
|
||||||
|
Added code to flush omf record buffer when it's almost full
|
23
Manx Aztec C86 v52a/BIN/CHANGES.AS
Normal file
23
Manx Aztec C86 v52a/BIN/CHANGES.AS
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
Changes to AS:
|
||||||
|
|
||||||
|
4/9/92 ------------- Released v5.2a beta 1 --------------------
|
||||||
|
|
||||||
|
6/4/92 jd
|
||||||
|
changed EVEN directive to output NOP opcode instead of 0.
|
||||||
|
|
||||||
|
8/3/92 jd
|
||||||
|
definition of record instance could not specify a number
|
||||||
|
as a field override.
|
||||||
|
|
||||||
|
9/10/92 jd: maktrm()
|
||||||
|
assembler was counting two fixups for the expr "seg myseg", where myseg
|
||||||
|
is a segment or group. Also for statement "dd myseg".
|
||||||
|
|
||||||
|
9/23/92 jd: options
|
||||||
|
-o option didn't work when using -f option to generate OMF
|
||||||
|
|
||||||
|
10/4/92 ---------------- Released v5.2a beta 2 ----------------------------
|
||||||
|
|
||||||
|
10/5/92 jd: execvp()
|
||||||
|
Relinked 'as' to use fixed execvp() - previous execvp() didn't always
|
||||||
|
correctly search all directories specified in PATH.
|
111
Manx Aztec C86 v52a/BIN/CHANGES.CC
Normal file
111
Manx Aztec C86 v52a/BIN/CHANGES.CC
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
Changes to CC:
|
||||||
|
|
||||||
|
1/9/92 MWS
|
||||||
|
Added -x option to generate function prototypes in the compiler.
|
||||||
|
Look for references to the OutProtos flag to see the relevant code.
|
||||||
|
|
||||||
|
1/12/92 MWS
|
||||||
|
Added -w option to generate preprocessed source file (i.e., it just
|
||||||
|
preprocesses the input file and writes out the result). Look for
|
||||||
|
references to the OutPrep flag to see the relevant code.
|
||||||
|
|
||||||
|
1/16/92 MWS
|
||||||
|
Added -f option to compiler to generate prototypes for static functions.
|
||||||
|
The -x option now generates prototypes only for non-statics.
|
||||||
|
|
||||||
|
1/16/92 MWS
|
||||||
|
Kludged autoprototyping code to distinguish between INT and SHORT
|
||||||
|
types. Look for OutProtos being OR'd with 4 in the code to see
|
||||||
|
what's going on.
|
||||||
|
|
||||||
|
4/9/92 -------------- Released v5.2a beta --------------------------
|
||||||
|
|
||||||
|
4/21/92 jd: print_asm_line()
|
||||||
|
%% in inline assembler was trashing chrcls table.
|
||||||
|
|
||||||
|
4/21/92 jd: makquest() and doif()
|
||||||
|
added checks for condition of type void for if() statement
|
||||||
|
and ?: operator.
|
||||||
|
|
||||||
|
9/8/92 jd:
|
||||||
|
cc was not generating correct prototype for a function's union argument.
|
||||||
|
|
||||||
|
9/9/92 jd: ptype() & declsym()
|
||||||
|
cc was not generating correct prototype for a function that returned
|
||||||
|
a long or ulong.
|
||||||
|
|
||||||
|
cc didn't generate correct prototypes when program was compiled to use
|
||||||
|
large data memory model.
|
||||||
|
|
||||||
|
9/11/92 jd: cinit()
|
||||||
|
cc didn't allow static initializations like
|
||||||
|
long a = (long)"b";
|
||||||
|
|
||||||
|
9/11/92 jd: multidef() refs&def
|
||||||
|
cc put out screwy msg for multi-defined symbols
|
||||||
|
|
||||||
|
9/14/92 jd: pbstring()
|
||||||
|
__FILE__ macro was wrong if input filename had backslashes.
|
||||||
|
|
||||||
|
9/14/92 jd: decllist()
|
||||||
|
cc didn't report error if struct or union had multidefined symbol.
|
||||||
|
|
||||||
|
9/14/92 jd: options(), makcall()
|
||||||
|
Added -m option to issue warning if a function is called without a
|
||||||
|
prototype for it being in scope.
|
||||||
|
|
||||||
|
9/15/92 jd: peek(), pushback(), token()
|
||||||
|
cc didn't accept "struct mystr far" but did accept "far struct mystr".
|
||||||
|
|
||||||
|
9/15/92 cm: fixed earlier
|
||||||
|
cc didn't report error but generated bad code for:
|
||||||
|
void f(void);
|
||||||
|
...
|
||||||
|
if (f())
|
||||||
|
...
|
||||||
|
|
||||||
|
9/15/92 jd: addfunc()
|
||||||
|
cc didn't report error for declaration of huge function, but generated
|
||||||
|
near calls to it. Now treating such decls as an error.
|
||||||
|
|
||||||
|
9/15/92 jd: verror.c
|
||||||
|
error msg 157 applies to data as well as functions.
|
||||||
|
|
||||||
|
9/16/92 jd: cinit()
|
||||||
|
Don't allow initialization of static ptr to auto:
|
||||||
|
m(){int i; static int *ip=&i;}
|
||||||
|
|
||||||
|
9/16/92 cm: fixed earlier
|
||||||
|
cc gave error 86 "null dimension in array" for
|
||||||
|
typedef int arr[];
|
||||||
|
|
||||||
|
9/17/92 jd: newfunc()
|
||||||
|
cc generated bad debug record for:
|
||||||
|
f(long){}
|
||||||
|
|
||||||
|
9/23/92 jd: options(), etc
|
||||||
|
-o option didn't work when using +j option to generate OMF
|
||||||
|
|
||||||
|
9/23/92 jd: bmain.c, cstat.c
|
||||||
|
Changed cc so that both -x and -f can be specified at once, to get
|
||||||
|
prototypes for both static and global functions.
|
||||||
|
|
||||||
|
|
||||||
|
10/4/92 ---------------- Released v5.2a beta 2 ----------------------------
|
||||||
|
|
||||||
|
|
||||||
|
10/5/92 jd: execvp()
|
||||||
|
Relinked 'cc' to use fixed execvp() - previous execvp() didn't always
|
||||||
|
correctly search all directories specified in PATH.
|
||||||
|
|
||||||
|
10/6/92 jd: cinit()
|
||||||
|
cc v4.10d allowed aggregate initializers to have nothing between the braces,
|
||||||
|
which allowed cc to do the correct thing for:
|
||||||
|
struct str { char a[5], b[5], c[5]} mystr = { {}, {}, "abc" };
|
||||||
|
The v5.2a cc did not allow this, in conformance with ANSI. The compiler
|
||||||
|
has been changed so that this is disallowed when in strict ANSI mode
|
||||||
|
(i.e. compiler with -ansi), and allowed otherwise.
|
||||||
|
|
||||||
|
10/26/92 jd: newfunc()
|
||||||
|
when generating prototypes, cc did not correctly handle functions defined
|
||||||
|
using the new syntax (e.g. void f(int a){} instead of void f(a)int a;{} )
|
53
Manx Aztec C86 v52a/BIN/CHANGES.CG
Normal file
53
Manx Aztec C86 v52a/BIN/CHANGES.CG
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
Changes to CGEN:
|
||||||
|
|
||||||
|
4/9/92 ---------- Released v5.2a beta 1 ---------------------
|
||||||
|
|
||||||
|
9/2/92 trailer() *jd
|
||||||
|
Added +t option to force $$var's (used for far data items) into codeseg
|
||||||
|
instead of dataseg.
|
||||||
|
|
||||||
|
9/11/92 starregs() *jd
|
||||||
|
Bad code generated for:
|
||||||
|
int a; huge struct mystr {int i,k,j;} *mp;
|
||||||
|
m() { a = mp->j; a = mp->i; }
|
||||||
|
|
||||||
|
9/14/92 gencast() *jd
|
||||||
|
When a null ptr was cast from near to far, result was not null (it was ds:0)
|
||||||
|
|
||||||
|
9/15/92 jd: outoper()
|
||||||
|
For the following:
|
||||||
|
(*(far void(*)())0x12345678L)()
|
||||||
|
cgen generated far call to 5678h, not 0x12345678.
|
||||||
|
|
||||||
|
9/16/92 jd: genstr()
|
||||||
|
For some structure copying, cgen generated bad code, because it
|
||||||
|
always prepared right side first, even if left was more complex.
|
||||||
|
Changed cgen to do hardest side first.
|
||||||
|
|
||||||
|
9/16/92 jd: templ.inp
|
||||||
|
For addition of constant to a huge pointer, compiler wasn't generating
|
||||||
|
extrn references to $hadd. For inc of huge ptr, it wasn't generating
|
||||||
|
extrn ref to $hinx.
|
||||||
|
|
||||||
|
|
||||||
|
10/4/92 ---------------- Released v5.2a beta 2 ----------------------------
|
||||||
|
|
||||||
|
|
||||||
|
10/5/92 jd: execvp()
|
||||||
|
Relinked 'cgen' to use fixed execvp() - previous execvp() didn't always
|
||||||
|
correctly search all directories specified in PATH.
|
||||||
|
|
||||||
|
10/22/92 jd: EvalRightFirst()
|
||||||
|
For some expressions, cgen was dereferencing a null pointer, causing
|
||||||
|
random areas of memory to be modified
|
||||||
|
|
||||||
|
10/22/92 jd: gencast()
|
||||||
|
The check for a null pointer in a cast of a near pointer to far
|
||||||
|
does not always have to be done. cgen was modified so that if the
|
||||||
|
near pointer is guarenteed not to be null, the check is not done,
|
||||||
|
thus saving space.
|
||||||
|
|
||||||
|
10/23/92 jd: outstatic()
|
||||||
|
cgen was putting near static uninitialized variables in the data
|
||||||
|
segment, not the bss segment, thus increasing the size of the data
|
||||||
|
seg.
|
8
Manx Aztec C86 v52a/BIN/CHANGES.HEX
Normal file
8
Manx Aztec C86 v52a/BIN/CHANGES.HEX
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
Changes to hex86:
|
||||||
|
|
||||||
|
4/9/92 ------------- Released v5.2a beta 1 ------------------------
|
||||||
|
|
||||||
|
5/10/92 jd
|
||||||
|
When generating a jump instruction at reset vector for system in which
|
||||||
|
odd bytes are in one set of ROMs and even bytes in another, HEX86
|
||||||
|
put the jump instruction at the wrong address
|
10
Manx Aztec C86 v52a/BIN/CHANGES.LN
Normal file
10
Manx Aztec C86 v52a/BIN/CHANGES.LN
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
Changes to LN:
|
||||||
|
|
||||||
|
11/25/91
|
||||||
|
Linker was mixing calls to sbrk and malloc, resulting in linker incorrectly
|
||||||
|
reporting 'out of memory' error messages
|
||||||
|
|
||||||
|
4/9/92 ---------- Release v5.2a beta 1 -----------------------
|
||||||
|
|
||||||
|
10/2/92
|
||||||
|
One minor bug fixed related to parsing of command line arguments.
|
28
Manx Aztec C86 v52a/BIN/CHANGES.LOC
Normal file
28
Manx Aztec C86 v52a/BIN/CHANGES.LOC
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
Changes to ALOC:
|
||||||
|
|
||||||
|
10/22/91
|
||||||
|
ALOC would exit w/ an error if it encountered control characters in
|
||||||
|
a -f file (including ^Z, which some editors put out at the end of a
|
||||||
|
file).
|
||||||
|
|
||||||
|
11/19/91 mapfile.c *jd
|
||||||
|
aloc was only outputting \n to map file, not \r\n.
|
||||||
|
added code to pm_putchar to add the \r when passed \n.
|
||||||
|
|
||||||
|
4/9/92 -------------------- Released v5.2a beta 1 ---------------------
|
||||||
|
|
||||||
|
8/14/92 getinfo.c *jd
|
||||||
|
aloc was incorrectly computing the address of _Uend.
|
||||||
|
|
||||||
|
8/28/92 locmain.c jd
|
||||||
|
When generating output file name from first input name that includes
|
||||||
|
a path having dots (e.g. ../foo.lnk), aloc didn't generate correct output
|
||||||
|
name.
|
||||||
|
|
||||||
|
|
||||||
|
10/4/92 -------------------- Released v5.2a beta 2 ---------------------
|
||||||
|
|
||||||
|
10/9/92 jd: getinfo.c
|
||||||
|
+JUMP created reset code in segment named _RESET_CODE, but ahex was
|
||||||
|
looking for it in segment named RESET_CODE, so ahex was not correctly
|
||||||
|
positioning it in ROM.
|
27
Manx Aztec C86 v52a/BIN/CHANGES.MAK
Normal file
27
Manx Aztec C86 v52a/BIN/CHANGES.MAK
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
Changes to MAKE:
|
||||||
|
|
||||||
|
1/5/89
|
||||||
|
changed stksiz.c:
|
||||||
|
increased stack size from 4kb to 6kb,
|
||||||
|
and decreased stack red zone size from 2kb to 1kb.
|
||||||
|
(customer was getting STACK OVERFLOW message)
|
||||||
|
|
||||||
|
11/26/90 *jd
|
||||||
|
relinked make to use croot that treats quoted strings as a single arg.
|
||||||
|
|
||||||
|
6/3/91 make.c *jd
|
||||||
|
allow rules that consist of just dependencies, no commands. e.g. a makefile
|
||||||
|
that is just
|
||||||
|
clib: hello.o
|
||||||
|
|
||||||
|
4/9/92 --------------- Released v5.2a beta 1 ---------------------
|
||||||
|
|
||||||
|
8/28/92 jd
|
||||||
|
make didn't correctly handle makefiles that ended in ctrl-z. Fixed bug
|
||||||
|
in c.lib and rebuilt make.
|
||||||
|
|
||||||
|
9/9/92 jd
|
||||||
|
make wasn't testing for malloc failure.
|
||||||
|
|
||||||
|
10/4/92 --------------- Released v5.2a beta 2 ---------------------
|
||||||
|
|
102
Manx Aztec C86 v52a/BIN/CHANGES.SDB
Normal file
102
Manx Aztec C86 v52a/BIN/CHANGES.SDB
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
8/19/90
|
||||||
|
token() wasn't handling macro expansion correctly. body must be
|
||||||
|
unget()-ed from last to first, not first to last.
|
||||||
|
|
||||||
|
bpchk() wasn't recognizing conditional breakpoints - setting Mptr
|
||||||
|
to condition doesnt cause gch() to get the condition's chars.
|
||||||
|
|
||||||
|
?/?/91
|
||||||
|
added -a option to rwdb's 'lp' command, for loading absolute symbols
|
||||||
|
|
||||||
|
7/16/91
|
||||||
|
added +i command to wdb and rwdb to allow stepping into int handler
|
||||||
|
|
||||||
|
1/27/92 MWS
|
||||||
|
Changed default absolute Intel OMF file extension from ".omf" to
|
||||||
|
".loc", to match how other Aztec tools work.
|
||||||
|
|
||||||
|
2/10/92 MWS \windpro\hype\src\dispnode.c
|
||||||
|
Changed hypertext system to look for an environment variable named
|
||||||
|
'AZTEC' to find help files. It does this _last_, after all its other
|
||||||
|
gyrations.
|
||||||
|
|
||||||
|
4/9/92 --------------- Released v5.2a beta 1 ----------------------------
|
||||||
|
|
||||||
|
9/21/92 jd: woption.c
|
||||||
|
On some systems, mouse wouldn't go below line 25 when in 50-line mode.
|
||||||
|
|
||||||
|
9/22/92 jd: reg_mod()
|
||||||
|
sdb didn't allow 'r' command to take parameter; e.g. "r ip=.4"
|
||||||
|
|
||||||
|
|
||||||
|
9/22/92 jd: parse()
|
||||||
|
If typed-in command contained invalid expression, sdb displayed error
|
||||||
|
msg on user screen, not on sdb's screen.
|
||||||
|
|
||||||
|
9/22/92 jd: draw_thumbs()
|
||||||
|
If mouse was in source or message window when command was typed, mouse
|
||||||
|
disappeared and didn't reappear until it was moved.
|
||||||
|
|
||||||
|
9/25/92 jd: remote/monomf.c
|
||||||
|
When downloading omf file, rdb sent too many bytes.
|
||||||
|
|
||||||
|
9/28/92 jd: wbpexpr.c
|
||||||
|
Counldn't set an Expression True breakpoint from dialog box.
|
||||||
|
|
||||||
|
9/28/92 jd: wmemops.c
|
||||||
|
With multiple memory dump windows open, each one's 'set options' dialog
|
||||||
|
box showed same values, which were those set last.
|
||||||
|
|
||||||
|
9/28/92 jd: getch()
|
||||||
|
Couldn't read in a program's macro (.mac) file or redirect command input
|
||||||
|
to a disk file.
|
||||||
|
|
||||||
|
9/28/92 jd: remote/monexec.c
|
||||||
|
When rdb was loading a program's symbols in response to an 'ls' command,
|
||||||
|
it didn't load the program's macros; and when quitting it didn't save
|
||||||
|
the program's macros to a .mac file.
|
||||||
|
|
||||||
|
9/28/92 jd: IsEGA()
|
||||||
|
To see if host system has EGA attached, rdb used peek() instead of
|
||||||
|
hostpeek().
|
||||||
|
|
||||||
|
9/29/92 jd: text(), int.asm, localint.asm, setjmp.asm, setjmp.h
|
||||||
|
Ctrl-Break handler wasn't supported.
|
||||||
|
|
||||||
|
9/29/92 jd: fixup()
|
||||||
|
Changed debugger so that ctrl-break justs interrupts executing program,
|
||||||
|
without terminating it.
|
||||||
|
|
||||||
|
9/30/92 jd: dbgcall()
|
||||||
|
sdb locked up when evaluating a function call: eg "e myfunc()"
|
||||||
|
|
||||||
|
10/1/92 jd: ShowStats(), main(), cmdtab.c, etc
|
||||||
|
Added 'di' command to display info about sdb's heap usage.
|
||||||
|
|
||||||
|
10/4/92 --------------- Released v5.2a beta 2 ----------------------------
|
||||||
|
|
||||||
|
10/20/92 jd: OMFload(), loadexe()
|
||||||
|
Changed rdb so that when .loc or abs .exe program is downloaded to ROM
|
||||||
|
system, initial stack is set to area at top of monitor data. Previously,
|
||||||
|
.loc's initial stack was random and abs .exe's was 64k above _Dorg; when
|
||||||
|
monitor transfered control to user program by pushing info on this random
|
||||||
|
stack, random areas of memory were overwritten.
|
||||||
|
|
||||||
|
|
||||||
|
11/3/92 jd: whelp.c wdbpro.c
|
||||||
|
sdb and rdb couldn't find the help files sdb.hyp and sdb.idx, even when
|
||||||
|
the AZTEC environment variable pointed at the directory that held them.
|
||||||
|
|
||||||
|
11/4/92 jd: wconfig.c
|
||||||
|
Changed name of default config file to sdb.set, to avoid conflict with
|
||||||
|
4.10d sdb, which used sdb.ini.
|
||||||
|
|
||||||
|
Changed order in which sdb searches for config file. It's now
|
||||||
|
current dir,
|
||||||
|
AZTEC dir, if AZTEC env exists
|
||||||
|
if config file not found and AZTEC doesn't exist, sdb.set is created
|
||||||
|
in current directory
|
||||||
|
|
||||||
|
Added sdb.set file, with default settings, to sdb.lzh, so that install
|
||||||
|
program will put this in bin directory, where it can be found during
|
||||||
|
standard usage of sdb and rdb
|
7
Manx Aztec C86 v52a/BIN/CHANGES.UNI
Normal file
7
Manx Aztec C86 v52a/BIN/CHANGES.UNI
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Changes to unitools GREP, DIFF, LS:
|
||||||
|
|
||||||
|
4/9/92 ------------- Released v5.2a beta 1 -------------------------
|
||||||
|
|
||||||
|
9/21/92 jd: grep
|
||||||
|
changed grep to ignore directories.
|
||||||
|
|
18
Manx Aztec C86 v52a/BIN/CHANGES.UTL
Normal file
18
Manx Aztec C86 v52a/BIN/CHANGES.UTL
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
Changes to utilities:
|
||||||
|
|
||||||
|
4/9/92 ----------------- Released v5.2a beta 1 ---------------------
|
||||||
|
|
||||||
|
9/10/92 jd: cnm
|
||||||
|
cnm wasn't printing segment, class, group info correctly when in long mode.
|
||||||
|
|
||||||
|
9/21/92 jd: lb
|
||||||
|
changed lb to make file & module searches case insensitive.
|
||||||
|
|
||||||
|
10/4/92 ----------------- Released v5.2a beta 2 ---------------------
|
||||||
|
|
||||||
|
10/27/92 jd: cnm
|
||||||
|
Added -U option to cnm, to display info about unnamed symbols
|
||||||
|
|
||||||
|
11/17/92 jd: ai
|
||||||
|
Added ai program to util.lzh
|
||||||
|
|
12
Manx Aztec C86 v52a/BIN/CHANGES.Z
Normal file
12
Manx Aztec C86 v52a/BIN/CHANGES.Z
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
Changes to Z:
|
||||||
|
|
||||||
|
4/9/92 ---------------- Released v5.2a beta 1 ------------------------
|
||||||
|
9/17/92 jd: termpc.c, colon.c
|
||||||
|
Added support for vga 50-line mode.
|
||||||
|
New command- :se 50={1|0}
|
||||||
|
|
||||||
|
10/4/92 ---------------- Released v5.2a beta 2 ------------------------
|
||||||
|
|
||||||
|
10/14/92 jd: dobang()
|
||||||
|
Before executing an external program for the :! command, z now clears
|
||||||
|
the screen and homes the cursor.
|
BIN
Manx Aztec C86 v52a/BIN/CNM.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/CNM.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/CRC.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/CRC.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/CTAGS.COM
Normal file
BIN
Manx Aztec C86 v52a/BIN/CTAGS.COM
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/DIFF.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/DIFF.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/GREP.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/GREP.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/HD.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/HD.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/HEX86.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/HEX86.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/INITSDB.COM
Normal file
BIN
Manx Aztec C86 v52a/BIN/INITSDB.COM
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/LB.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/LB.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/LHA.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/LHA.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/LN.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/LN.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/LS.COM
Normal file
BIN
Manx Aztec C86 v52a/BIN/LS.COM
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/MAKE.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/MAKE.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/MON86MS.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/MON86MS.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/OBD.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/OBD.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/OBJI.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/OBJI.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/OBJMS.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/OBJMS.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/OMFDMP.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/OMFDMP.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/ORD.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/ORD.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/PROF.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/PROF.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/RDB.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/RDB.EXE
Normal file
Binary file not shown.
22
Manx Aztec C86 v52a/BIN/READ.ME
Normal file
22
Manx Aztec C86 v52a/BIN/READ.ME
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
ALN, ALOC, & AHEX, beta v5.2a
|
||||||
|
Release Notes
|
||||||
|
8/28/92
|
||||||
|
|
||||||
|
In addition to the executable files for ALN, ALOC, and AHEX, this archive
|
||||||
|
contains information about what's changed about each program, in the following
|
||||||
|
files:
|
||||||
|
File What's changed in...
|
||||||
|
------------ --------------------
|
||||||
|
CHANGES.ALN ALN
|
||||||
|
CHANGES.ALOC ALOC
|
||||||
|
CHANGES.AHX AHEX
|
||||||
|
|
||||||
|
Please report any problems to me:
|
||||||
|
* By voice: 908-542-1795, between 2:30 and 5pm, Eastern time;
|
||||||
|
* By modem: 908-542-2793, any time. Modem parameters: up to 2400 baud,
|
||||||
|
8 data bits, 1 stop, no parity;
|
||||||
|
* By fax: 908-542-8386, any time.
|
||||||
|
|
||||||
|
Thanks for your help.
|
||||||
|
|
||||||
|
- Jeff Davis
|
BIN
Manx Aztec C86 v52a/BIN/SDB.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/SDB.EXE
Normal file
Binary file not shown.
505
Manx Aztec C86 v52a/BIN/SDB.HYP
Normal file
505
Manx Aztec C86 v52a/BIN/SDB.HYP
Normal file
@ -0,0 +1,505 @@
|
|||||||
|
^9999
|
||||||
|
!Breakpoint commands
|
||||||
|
1000
|
||||||
|
!Display commands
|
||||||
|
2000
|
||||||
|
!Frame commands
|
||||||
|
3000
|
||||||
|
!I/O commands
|
||||||
|
6000
|
||||||
|
!Memory commands
|
||||||
|
4000
|
||||||
|
!Formatted output
|
||||||
|
8000
|
||||||
|
!Register command
|
||||||
|
9000
|
||||||
|
!Unassemble commands
|
||||||
|
10000
|
||||||
|
!Macro commands
|
||||||
|
28000
|
||||||
|
!Display value
|
||||||
|
29000
|
||||||
|
!Change sdb console
|
||||||
|
27000
|
||||||
|
!Copy ouput to a file
|
||||||
|
14000
|
||||||
|
!Shell to dos
|
||||||
|
15000
|
||||||
|
!Display current context
|
||||||
|
16000
|
||||||
|
!Evaluate a C expression
|
||||||
|
17000
|
||||||
|
!Execute program
|
||||||
|
18000
|
||||||
|
!(re)load program file
|
||||||
|
19000
|
||||||
|
!Quit
|
||||||
|
20000
|
||||||
|
!Single step
|
||||||
|
5000
|
||||||
|
!Toggle screen swapping
|
||||||
|
21000
|
||||||
|
!Toggle source/assembly mode
|
||||||
|
22000
|
||||||
|
!Find string in current file
|
||||||
|
23000
|
||||||
|
!Redirect input
|
||||||
|
24000
|
||||||
|
!Log commands only to a file
|
||||||
|
25000
|
||||||
|
General SDB commands
|
||||||
|
Breakpoint commands Display current context
|
||||||
|
Display commands Evaluate a C expression
|
||||||
|
Frame commands Execute program
|
||||||
|
I/O commands (re)load program file
|
||||||
|
Memory commands
|
||||||
|
Formatted output Quit
|
||||||
|
Register command Single step
|
||||||
|
Unassemble commands Toggle screen swapping
|
||||||
|
Macro commands Toggle source/assembly mode
|
||||||
|
Display value Find string in current file
|
||||||
|
Change sdb console Redirect input
|
||||||
|
Copy ouput to a file Log commands only to a file
|
||||||
|
Shell to dos
|
||||||
|
#
|
||||||
|
^11000
|
||||||
|
Using the Help system
|
||||||
|
|
||||||
|
Use TAB key to move cursor, and Spacebar or ENTER key to
|
||||||
|
select an option. Your options are:
|
||||||
|
|
||||||
|
CONTINUE: Return back to screen prior to last F1.
|
||||||
|
PREVIOUS: Return back to the previous screen.
|
||||||
|
TOPICS: Review index of topics.
|
||||||
|
KEYS: Review Keystrokes & their functions.
|
||||||
|
|
||||||
|
Use TAB key to move cursor past the 4 buttons to select
|
||||||
|
highlighted keywords and then press Spacebar/ENTER key to
|
||||||
|
obtain further information on related topics.
|
||||||
|
#
|
||||||
|
^12000
|
||||||
|
Using the Help system
|
||||||
|
|
||||||
|
Use TAB key to move cursor, and Spacebar or ENTER key to
|
||||||
|
select an option. Your options are:
|
||||||
|
|
||||||
|
CONTINUE: Return back to screen prior to last F1.
|
||||||
|
PREVIOUS: Return back to the previous screen.
|
||||||
|
TOPICS: Review index of topics.
|
||||||
|
KEYS: Review Keystrokes & their functions.
|
||||||
|
|
||||||
|
Use TAB key to move cursor past the 4 buttons to select
|
||||||
|
highlighted keywords and then press Spacebar/ENTER key to
|
||||||
|
obtain further information on related topics.
|
||||||
|
#
|
||||||
|
^1000
|
||||||
|
!bc
|
||||||
|
30000
|
||||||
|
!bC
|
||||||
|
30000
|
||||||
|
!bd
|
||||||
|
31000
|
||||||
|
!br
|
||||||
|
32000
|
||||||
|
!bs
|
||||||
|
33000
|
||||||
|
!bt
|
||||||
|
34000
|
||||||
|
!bT
|
||||||
|
34000
|
||||||
|
!bm
|
||||||
|
35000
|
||||||
|
!be
|
||||||
|
36000
|
||||||
|
!ADDR
|
||||||
|
7000
|
||||||
|
!CMDLIST
|
||||||
|
26000
|
||||||
|
Breakpoint commands
|
||||||
|
bc ADDR Clear breakpoint
|
||||||
|
bC Clear all breakpoints
|
||||||
|
bd Display breakpoints
|
||||||
|
br [ADDR] Reset breakpoint counters
|
||||||
|
#bs ADDR [;COND][;CMDLIST] Set or modify a breakpoint
|
||||||
|
bt Toggle call trace
|
||||||
|
bT Toggle source line trace
|
||||||
|
bm Set memory change breakpoint
|
||||||
|
be Set expression breakpoint
|
||||||
|
#
|
||||||
|
^2000
|
||||||
|
!RANGE
|
||||||
|
13000
|
||||||
|
Display commands
|
||||||
|
da Display local addresses
|
||||||
|
dc Display code addresses
|
||||||
|
db RANGE Display memory as bytes
|
||||||
|
dd Display data addresses
|
||||||
|
df [FILENAME,]RANGE Display file
|
||||||
|
dg Display globals' values
|
||||||
|
dm Display DOS RAM map
|
||||||
|
dn Display 8087
|
||||||
|
#ds Display stack backtrace
|
||||||
|
#dS Display stack with autos
|
||||||
|
dw RANGE Display memory as words
|
||||||
|
#
|
||||||
|
^3000
|
||||||
|
Frame commands
|
||||||
|
#fu Frame up
|
||||||
|
#fd Frame down
|
||||||
|
#
|
||||||
|
^4000
|
||||||
|
!ADDR
|
||||||
|
7000
|
||||||
|
!RANGE
|
||||||
|
13000
|
||||||
|
Memory commands
|
||||||
|
mb ADDR VAL1 VAL2 ... Modify memory as bytes
|
||||||
|
mc RANGE = ADDR Compare memory
|
||||||
|
mf RANGE = VAL Fill memory with value
|
||||||
|
mm RANGE = ADDR Move memory
|
||||||
|
ms RANGE = VAL1 VAL2 ... Search memory for value
|
||||||
|
mw ADDR VAL1 VAL2 ... Modify memory as words
|
||||||
|
#
|
||||||
|
^5000
|
||||||
|
!CMDLIST
|
||||||
|
26000
|
||||||
|
Single step commands (step into called functions)
|
||||||
|
#s [;CMDLIST] Single step the program # times
|
||||||
|
#S [;CMDLIST] Single step without display
|
||||||
|
|
||||||
|
Single step commands (step over called functions)
|
||||||
|
#t [;CMDLIST] Single step # times
|
||||||
|
#T [;CMDLIST] Same as 't'
|
||||||
|
but don't display until last
|
||||||
|
#
|
||||||
|
^6000
|
||||||
|
Outport commands
|
||||||
|
ob PORT,VAL Output byte to port
|
||||||
|
ow PORT,VAL Output word to port
|
||||||
|
|
||||||
|
Inport commands
|
||||||
|
ib PORT Input byte from port
|
||||||
|
iw PORT Input word from port
|
||||||
|
#
|
||||||
|
^7000
|
||||||
|
The Definition of ADDR
|
||||||
|
|
||||||
|
An ADDR is the name of a C variable,
|
||||||
|
an address constant, or a C expression that yields an address.
|
||||||
|
|
||||||
|
Examples of an ADDR are as follows:
|
||||||
|
linkmain.c.19 Address of the code corresponding
|
||||||
|
to line 19 of linkmain.c
|
||||||
|
.19 Same as above if current file is linkmain.c
|
||||||
|
main Address of main
|
||||||
|
cs:0x1532 Address formed by using the current
|
||||||
|
code and an offset of 0x1532
|
||||||
|
token[j] Address of jth element of array token
|
||||||
|
#
|
||||||
|
^8000
|
||||||
|
!RANGE
|
||||||
|
13000
|
||||||
|
Print command
|
||||||
|
p [@FORMAT] [RANGE][,NEXT] - formatted output
|
||||||
|
where
|
||||||
|
FORMAT is sequence of [COUNT][INDIR][COUNT]DESC
|
||||||
|
COUNT is a decimal number (defaults to 1)
|
||||||
|
INDIR is '*' - short indirect pointer
|
||||||
|
or '#' - long indirect pointer
|
||||||
|
DESC is:
|
||||||
|
d (D) - 2-byte (4-byte) decimal
|
||||||
|
o (O) - 2-byte (4-byte) octal
|
||||||
|
u (U) - 2-byte (4-byte) unsigned decimal
|
||||||
|
x (X) - 2-byte (4-byte) hexadecimal
|
||||||
|
f (F) - single (double) floating point
|
||||||
|
b[xdo] - byte in hex or (hex, decimal, or octal)
|
||||||
|
c (C) - character with (without) translation
|
||||||
|
s (S) - string with (without) translation
|
||||||
|
p (P) - short (long) pointer
|
||||||
|
n (N) - output a newline
|
||||||
|
r (R) - print a name
|
||||||
|
t (T) - output a tab
|
||||||
|
\"STRING\" - output STRING
|
||||||
|
. - display floats to COUNT significance
|
||||||
|
+ (-) - advance (reduce) address COUNT bytes
|
||||||
|
^ - reduce address by size of last item
|
||||||
|
a (A) - set print address to follow short (long)
|
||||||
|
pointer chain
|
||||||
|
#
|
||||||
|
^9000
|
||||||
|
Register command
|
||||||
|
r [REG = VAL]
|
||||||
|
#
|
||||||
|
^10000
|
||||||
|
!RANGE
|
||||||
|
13000
|
||||||
|
Unassemble commands
|
||||||
|
u RANGE - unassemble the program
|
||||||
|
U RANGE - unassemble without symbols
|
||||||
|
#
|
||||||
|
^13000
|
||||||
|
!ADDR
|
||||||
|
7000
|
||||||
|
The Definition of RANGE
|
||||||
|
|
||||||
|
A RANGE defines a block of memory.
|
||||||
|
It has one of the following forms:
|
||||||
|
|
||||||
|
ADDR,CNT
|
||||||
|
ADDR to ADDR (the word `to' must be included)
|
||||||
|
ADDR
|
||||||
|
,CNT
|
||||||
|
|
||||||
|
The form ADDR,CNT specifies the starting address, ADDR, and
|
||||||
|
a number, CNT. CNT is interpreted differently by different
|
||||||
|
commands. For example, the `disassemble code' command, u, will
|
||||||
|
display CNT lines, while the `display bytes' command, db, will
|
||||||
|
display CNT bytes.
|
||||||
|
|
||||||
|
The form ADDR to ADDR specifies the starting and ending
|
||||||
|
addresses of the range.
|
||||||
|
|
||||||
|
A full range need not be explicitly specified, because db
|
||||||
|
remembers the last-used range and will set unspecified RANGE
|
||||||
|
parameters from the remembered values:
|
||||||
|
|
||||||
|
* When a RANGE is specified which consists of a single
|
||||||
|
ADDR, the last used CNT is used.
|
||||||
|
* When a RANGE is specified which consists of `,CNT', the
|
||||||
|
next consecutive address is used, and the remembered
|
||||||
|
count is changed to the new value.
|
||||||
|
* When nothing is specified as the RANGE, the next
|
||||||
|
consecutive address is used as the starting ADDR, and
|
||||||
|
the CNT is set to the remembered value.
|
||||||
|
#
|
||||||
|
^14000
|
||||||
|
Copy ouput to a file
|
||||||
|
#
|
||||||
|
^15000
|
||||||
|
Shell to dos
|
||||||
|
#
|
||||||
|
^16000
|
||||||
|
Display current context
|
||||||
|
#
|
||||||
|
^17000
|
||||||
|
Evaluate a C expression
|
||||||
|
#
|
||||||
|
^18000
|
||||||
|
Execute program
|
||||||
|
#
|
||||||
|
^19000
|
||||||
|
(re)load program file
|
||||||
|
#
|
||||||
|
^20000
|
||||||
|
Quit
|
||||||
|
#
|
||||||
|
^21000
|
||||||
|
Toggle screen swapping
|
||||||
|
#
|
||||||
|
^22000
|
||||||
|
Toggle source/assembly mode
|
||||||
|
#
|
||||||
|
^23000
|
||||||
|
Find string in current file
|
||||||
|
#
|
||||||
|
^24000
|
||||||
|
Redirect input
|
||||||
|
#
|
||||||
|
^25000
|
||||||
|
Log commands only to a file
|
||||||
|
#
|
||||||
|
^26000
|
||||||
|
The Definition of CMDLIST
|
||||||
|
|
||||||
|
A CMDLIST is a list of commands.
|
||||||
|
It consists of a sequence of commands or macros separated by semicolons:
|
||||||
|
|
||||||
|
COMMAND [;COMMAND ...]
|
||||||
|
|
||||||
|
If a macro is in a CMDLIST, it must be the last
|
||||||
|
command in the list.
|
||||||
|
#
|
||||||
|
^27000
|
||||||
|
Change sdb console
|
||||||
|
#
|
||||||
|
^28000
|
||||||
|
Macro commands
|
||||||
|
x NAME MACRO - create a macro
|
||||||
|
X NAME - display a macro
|
||||||
|
#
|
||||||
|
^29000
|
||||||
|
!EXPR
|
||||||
|
37000
|
||||||
|
Display value
|
||||||
|
= EXPR - display the value of EXPR
|
||||||
|
#
|
||||||
|
^30000
|
||||||
|
!ADDR
|
||||||
|
7000
|
||||||
|
bc - Clear a single breakpoint
|
||||||
|
bC - Clear all breakpoints
|
||||||
|
|
||||||
|
Syntax:
|
||||||
|
bc ADDR
|
||||||
|
bC
|
||||||
|
|
||||||
|
These commands delete breakpoints from the breakpoint table.
|
||||||
|
|
||||||
|
bc deletes the single breakpoint specified by the address
|
||||||
|
ADDR, and bC deletes all breakpoints from the table.
|
||||||
|
#
|
||||||
|
^31000
|
||||||
|
bd - Display breakpoints
|
||||||
|
|
||||||
|
Syntax:
|
||||||
|
bd
|
||||||
|
|
||||||
|
bd displays all entries in the breakpoint table.
|
||||||
|
|
||||||
|
For each breakpoint, the following information is displayed:
|
||||||
|
* Its address, using a symbolic name, if possible.
|
||||||
|
* The number of times it's been `hit' without a
|
||||||
|
breakpoint being taken.
|
||||||
|
* The skip count for it.
|
||||||
|
* The command list for it, if any.
|
||||||
|
|
||||||
|
For example, a bd display might be:
|
||||||
|
address hits skip command
|
||||||
|
cs:printf_ 1 2
|
||||||
|
cs:putc_ 0 0 db ds:_Cbuffs
|
||||||
|
|
||||||
|
In this example, two breakpoints are in the table.
|
||||||
|
The first is at the beginning of the function printf_;
|
||||||
|
a breakpoint will be taken for it every third time it is reached,
|
||||||
|
and no command will be executed.
|
||||||
|
Given its current hit count, a breakpoint will be
|
||||||
|
taken the next time printf_ is reached.
|
||||||
|
|
||||||
|
The second breakpoint is at the function putc_; a breakpoint
|
||||||
|
will be taken each time the function is reached, and will display
|
||||||
|
memory, in bytes, starting at ds:_Cbuffs.
|
||||||
|
#
|
||||||
|
^32000
|
||||||
|
!ADDR
|
||||||
|
7000
|
||||||
|
br - Reset breakpoint counters
|
||||||
|
.sP
|
||||||
|
Syntax:
|
||||||
|
br [ADDR]
|
||||||
|
|
||||||
|
br resets the `hit' counter for the specified breakpoint
|
||||||
|
which is at the address, ADDR.
|
||||||
|
If ADDR isn't given, the `hit'
|
||||||
|
counters for all breakpoints in the breakpoint table are reset.
|
||||||
|
#
|
||||||
|
^33000
|
||||||
|
!ADDR
|
||||||
|
7000
|
||||||
|
!CMDLIST
|
||||||
|
26000
|
||||||
|
bs - Set or modify a breakpoint
|
||||||
|
.sP
|
||||||
|
Syntax:
|
||||||
|
[#] bs ADDR [;CMDLIST]
|
||||||
|
|
||||||
|
bs enters a breakpoint into the breakpoint table, or
|
||||||
|
modifies an existing entry.
|
||||||
|
|
||||||
|
The optional parameter # is the skip count for the
|
||||||
|
breakpoint.
|
||||||
|
If not specified, the skip count is set to 0, meaning
|
||||||
|
that each time the breakpoint is reached it will be taken.
|
||||||
|
|
||||||
|
The optional parameter CMDLIST is a list of debugger
|
||||||
|
commands to be executed when the breakpoint is taken.
|
||||||
|
#
|
||||||
|
^34000
|
||||||
|
bt - Toggle the call trace mode flag
|
||||||
|
bT - Toggle the source line trace mode flag
|
||||||
|
|
||||||
|
Syntax:
|
||||||
|
bt
|
||||||
|
bT
|
||||||
|
|
||||||
|
bt and bT toggle the call trace mode and source line
|
||||||
|
trace mode flags, respectively.
|
||||||
|
The state of the trace mode flag determines whether trace
|
||||||
|
mode is enabled or disabled.
|
||||||
|
|
||||||
|
In call trace mode, the debugger will print the names and
|
||||||
|
arguments of each call within the program as it executes.
|
||||||
|
On return, the value of the function's return will be printed.
|
||||||
|
|
||||||
|
In source line trace mode, each statement of the program will
|
||||||
|
be displayed just before it is executed.
|
||||||
|
#
|
||||||
|
^35000
|
||||||
|
!RANGE
|
||||||
|
13000
|
||||||
|
bm - Set memory change breakpoint
|
||||||
|
|
||||||
|
Syntax:
|
||||||
|
bm [RANGE]
|
||||||
|
|
||||||
|
bm sets and clears a memory change breakpoint. Only one such
|
||||||
|
breakpoint can be active at a time.
|
||||||
|
|
||||||
|
A memory change breakpoint is set by specifying the optional
|
||||||
|
RANGE parameter; in this case, a breakpoint will be taken
|
||||||
|
whenever the specified RANGE changes.
|
||||||
|
|
||||||
|
A memory change breakpoint is cleared when the bm command
|
||||||
|
is specified with no parameter.
|
||||||
|
|
||||||
|
When a memory change breakpoint is set, the debugger will
|
||||||
|
check the specified RANGE at the following times:
|
||||||
|
* on function entry and exit, when call trace mode is active
|
||||||
|
(see the bt command);
|
||||||
|
* after each instruction execution, when source line trace
|
||||||
|
mode is active (see the bT command), or when single-stepping
|
||||||
|
(see the s and t commands).
|
||||||
|
#
|
||||||
|
^36000
|
||||||
|
!EXPR
|
||||||
|
37000
|
||||||
|
be - Set expression change breakpoint
|
||||||
|
|
||||||
|
Syntax:
|
||||||
|
be [EXPR]
|
||||||
|
|
||||||
|
be sets and clears the expression breakpoint.
|
||||||
|
Only one such breakpoint can be active at a time.
|
||||||
|
|
||||||
|
An expression breakpoint is set by specifying the optional
|
||||||
|
EXPR parameter; in this case, a breakpoint will be taken
|
||||||
|
whenever the specified EXPR is true.
|
||||||
|
|
||||||
|
An expression breakpoint is cleared when the be command
|
||||||
|
is specified with no parameter.
|
||||||
|
|
||||||
|
When an expression breakpoint is set, the debugger will check the
|
||||||
|
specified RANGE at the following times:
|
||||||
|
* on function entry and exit, when call trace mode is active
|
||||||
|
(see the bt command);
|
||||||
|
* after each instruction execution, when source line trace
|
||||||
|
mode is active (see the bT command), or when single-stepping
|
||||||
|
(see the s and t commands).
|
||||||
|
#
|
||||||
|
^37000
|
||||||
|
The Definition of EXPR
|
||||||
|
|
||||||
|
An EXPR is any valid C expression.
|
||||||
|
|
||||||
|
For example, an EXPR can consist of a single term, a series of
|
||||||
|
terms separated by operators, the use of registers by their
|
||||||
|
standard names, or 16 bit values representing memory locations
|
||||||
|
of the form segment:offset.
|
||||||
|
|
||||||
|
Here are some examples of EXPR:
|
||||||
|
si
|
||||||
|
x + 2.0
|
||||||
|
(i == j) ? 2 : 3
|
||||||
|
ds:0x4127
|
||||||
|
sin(y)
|
||||||
|
array[j]
|
||||||
|
#
|
40
Manx Aztec C86 v52a/BIN/SDB.IDX
Normal file
40
Manx Aztec C86 v52a/BIN/SDB.IDX
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
9999,0
|
||||||
|
11000,1302
|
||||||
|
12000,1828
|
||||||
|
1000,2357
|
||||||
|
2000,3012
|
||||||
|
3000,3625
|
||||||
|
4000,3731
|
||||||
|
5000,4086
|
||||||
|
6000,4465
|
||||||
|
7000,4714
|
||||||
|
8000,5261
|
||||||
|
9000,6520
|
||||||
|
10000,6565
|
||||||
|
13000,6712
|
||||||
|
14000,7870
|
||||||
|
15000,7903
|
||||||
|
16000,7929
|
||||||
|
17000,7966
|
||||||
|
18000,8002
|
||||||
|
19000,8030
|
||||||
|
20000,8064
|
||||||
|
21000,8081
|
||||||
|
22000,8116
|
||||||
|
23000,8156
|
||||||
|
24000,8196
|
||||||
|
25000,8224
|
||||||
|
26000,8264
|
||||||
|
27000,8514
|
||||||
|
28000,8545
|
||||||
|
29000,8653
|
||||||
|
30000,8744
|
||||||
|
31000,9048
|
||||||
|
32000,10062
|
||||||
|
33000,10342
|
||||||
|
34000,10844
|
||||||
|
35000,11447
|
||||||
|
36000,12268
|
||||||
|
37000,13079
|
||||||
|
37000,13482
|
||||||
|
#
|
BIN
Manx Aztec C86 v52a/BIN/SDB.SET
Normal file
BIN
Manx Aztec C86 v52a/BIN/SDB.SET
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/SDB41D.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/SDB41D.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/SQZ.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/SQZ.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/XREF.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/XREF.EXE
Normal file
Binary file not shown.
BIN
Manx Aztec C86 v52a/BIN/Z.EXE
Normal file
BIN
Manx Aztec C86 v52a/BIN/Z.EXE
Normal file
Binary file not shown.
858
Manx Aztec C86 v52a/DOC/README.TXT
Normal file
858
Manx Aztec C86 v52a/DOC/README.TXT
Normal file
@ -0,0 +1,858 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Aztec C86
|
||||||
|
Release notes
|
||||||
|
Beta version 5.2a
|
||||||
|
17 Nov 1992
|
||||||
|
|
||||||
|
This release document describes version 5.2a of Aztec C86.
|
||||||
|
It's organized into the following sections:
|
||||||
|
|
||||||
|
1. Installation instructions, which describes how to install
|
||||||
|
the Aztec C files from the distribution disks onto your
|
||||||
|
disks;
|
||||||
|
2. Disk contents, which describes what's on the distribution
|
||||||
|
disks;
|
||||||
|
3. New features, which describes what's changed in going
|
||||||
|
from version 4.2b to the current release;
|
||||||
|
4. New features, which describe what's changed in going from
|
||||||
|
the 9 April beta release to the current release.
|
||||||
|
5. New features, which describe what's changed in going from
|
||||||
|
the 4 Oct beta release to the current release.
|
||||||
|
|
||||||
|
After installation, additional documentation is also
|
||||||
|
available in file README2.TXT in the DOC subdirectory that's
|
||||||
|
within your root Aztec directory.
|
||||||
|
|
||||||
|
To report problems with this beta release, please call Manx
|
||||||
|
Tech Support at 908-542-1795, between 2:30pm and 5pm Eastern
|
||||||
|
time.
|
||||||
|
|
||||||
|
|
||||||
|
1. Installation
|
||||||
|
|
||||||
|
To install Aztec C86, put the first distribution disk in a
|
||||||
|
floppy drive, make that drive the current drive, and type
|
||||||
|
|
||||||
|
install
|
||||||
|
|
||||||
|
The install program will display a dialog box containing
|
||||||
|
text fields, check box fields, and button fields that you can
|
||||||
|
adjust to customize the installation. To move around within
|
||||||
|
this dialog box, you can use a mouse, or the tab key. You can
|
||||||
|
get help by pressing the F1 key.
|
||||||
|
|
||||||
|
Once you've made your selections, press the "Proceed" button
|
||||||
|
to continue with the installation, or press the "Abort" button
|
||||||
|
to terminate the installation. After you press the "Proceed"
|
||||||
|
button, insert the distribution disks in the source drive as
|
||||||
|
prompted by the program.
|
||||||
|
|
||||||
|
When the files are all installed to the hard disk, the
|
||||||
|
program will return to DOS.
|
||||||
|
|
||||||
|
After the installation program is complete, the bin
|
||||||
|
subdirectory of your main Aztec directory will contain a batch
|
||||||
|
file named AZ86.BAT. The commands in this file will initialize
|
||||||
|
your system for use with Aztec C86. You may wish to place the
|
||||||
|
contents of this file directly in your AUTOEXEC.BAT file.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Release notes page 1
|
||||||
|
|
||||||
|
|
||||||
|
Aztec C86, beta v5.2a 11/17/92
|
||||||
|
|
||||||
|
The following paragraphs describe the fields in the
|
||||||
|
installation program's dialog box.
|
||||||
|
|
||||||
|
1.1 The 'Source drive' text field
|
||||||
|
|
||||||
|
In the 'source drive' text field, type the name of the
|
||||||
|
floppy drive in which you will place the distribution disks.
|
||||||
|
This field defaults to the A: drive.
|
||||||
|
|
||||||
|
1.2 The 'Destination directory' text field
|
||||||
|
|
||||||
|
In the 'destination directory' text field, type the name of
|
||||||
|
the drive and directory into which you want the installation
|
||||||
|
program to place the Aztec C86 files. This field defaults to
|
||||||
|
C:\AZ86.
|
||||||
|
|
||||||
|
The installation program will place files in the following
|
||||||
|
subdirectories of the destination directory:
|
||||||
|
|
||||||
|
BIN The executable programs;
|
||||||
|
INCLUDE Include files;
|
||||||
|
LIB Library source, object modules, and libraries;
|
||||||
|
MON86 Code for RDB monitor program.
|
||||||
|
|
||||||
|
1.3 The 'Install programs, includes, and source' check boxes
|
||||||
|
|
||||||
|
Check these boxes depending on what you want installed.
|
||||||
|
|
||||||
|
You toggle the setting of a box by pressing the space bar,
|
||||||
|
or by clicking the mouse in the box.
|
||||||
|
|
||||||
|
1.4 The 'Object libraries' check boxes
|
||||||
|
|
||||||
|
The Aztec C86 distribution disks contain the following
|
||||||
|
categories of object module libraries:
|
||||||
|
|
||||||
|
C libraries Non-floating point functions;
|
||||||
|
IEEE math libraries Floating point functions, which
|
||||||
|
perform calculations using software;
|
||||||
|
8087 math libraries Floating point functions, which
|
||||||
|
perform calculations using an 8087;
|
||||||
|
Sensing math libraries Floating point functions, which
|
||||||
|
perform calculations using an 8087 if
|
||||||
|
present or using software if not;
|
||||||
|
Screen libraries Functions for accessing the screen
|
||||||
|
and keyboard via the ROM BIOS;
|
||||||
|
Graphics libraries Graphics functions.
|
||||||
|
|
||||||
|
Check the boxes that define the libraries you want
|
||||||
|
installed.
|
||||||
|
|
||||||
|
1.5 The 'Memory models' check boxes
|
||||||
|
|
||||||
|
Check on the 'library memory models' boxes to define the
|
||||||
|
memory models of the libraries that you want installed.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Release notes page 2
|
||||||
|
|
||||||
|
|
||||||
|
Aztec C86, beta v5.2a 11/17/92
|
||||||
|
|
||||||
|
For example, if you want the C libraries installed that use
|
||||||
|
the small code and small data memory model, you would check
|
||||||
|
the 'C libraries' and the 'small code, small data' boxes.
|
||||||
|
|
||||||
|
1.6 The 'Optional components' check boxes
|
||||||
|
|
||||||
|
If you've purchased the optional Level 2 or Level 3
|
||||||
|
Extensions to Aztec C86, check the appropriate boxes to
|
||||||
|
specify which of the Extension components you want installed.
|
||||||
|
|
||||||
|
Don't check these boxes if you don't have the extensions.
|
||||||
|
|
||||||
|
1.7 Bypassing the installation program
|
||||||
|
|
||||||
|
Most of the files on the distribution disks are in standard
|
||||||
|
LHARC format. So if you want, you can bypass the installation
|
||||||
|
program altogether and dearchive the archive files that are on
|
||||||
|
the distribution disks using the LHARC program that is
|
||||||
|
provided with Aztec C. This archive program is installed in
|
||||||
|
the Aztec root directory's BIN subdirectory; this program, and
|
||||||
|
documentation on how to use it, is also on distribution disk
|
||||||
|
1. The LHARC program is in file LHA.EXE, and documentation is
|
||||||
|
in file LHA.DOC.
|
||||||
|
|
||||||
|
1.8 Re-entering the installation program
|
||||||
|
|
||||||
|
The installation program can be run more than once. For
|
||||||
|
example, during one execution you could install the programs,
|
||||||
|
include files, and object libraries; and during a second
|
||||||
|
execution you could install the library source files.
|
||||||
|
|
||||||
|
|
||||||
|
2. Contents of distribution disks
|
||||||
|
|
||||||
|
v5.2a of Aztec C86 is packaged into a base package and two
|
||||||
|
levels of optional extensions. The components of these
|
||||||
|
packages are:
|
||||||
|
* Base package:
|
||||||
|
+ Compiler, assembler, DOS linker
|
||||||
|
+ Include files
|
||||||
|
+ Object module utilities
|
||||||
|
+ Object libraries
|
||||||
|
+ SDB source level debugger.
|
||||||
|
* Level 2 extensions:
|
||||||
|
+ Library source;
|
||||||
|
+ HEX86, startup routines, and heap-management
|
||||||
|
routines, for ROMming programs that have non-complex
|
||||||
|
segmentation requirements.
|
||||||
|
* Level 3 extensions:
|
||||||
|
+ RDB debugger and MON86 monitor, for remote source-
|
||||||
|
level debugging of ROM- and DOS-based programs;
|
||||||
|
+ ALN linker, ALOC locator, AHEX hexer, and startup
|
||||||
|
routines, for ROMming programs that have complex
|
||||||
|
segmentation requirements
|
||||||
|
|
||||||
|
The following paragraphs describe the files that are on the
|
||||||
|
Aztec distribution disks.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Release notes page 3
|
||||||
|
|
||||||
|
|
||||||
|
Aztec C86, beta v5.2a 11/17/92
|
||||||
|
|
||||||
|
2.1 Disk 1 contents
|
||||||
|
File Contents
|
||||||
|
INSTALL.EXE Installation program
|
||||||
|
LHA.EXE LHARC program (this replaces the ARCV
|
||||||
|
and MKARCV programs that are described
|
||||||
|
in the manual)
|
||||||
|
LHA.HLP LHARC help
|
||||||
|
LHA.DOC LHARC documentation
|
||||||
|
|
||||||
|
2.2 Disk 2 contents
|
||||||
|
File Contents
|
||||||
|
CC.LZH Compiler
|
||||||
|
AS.LZH Assembler
|
||||||
|
LN.LZH Linker
|
||||||
|
INCLUDE.LZH include files
|
||||||
|
UTIL.LZH Object module utilities, HEX86, and
|
||||||
|
miscellaneous utilities
|
||||||
|
UNITOOLS.LZH Unix-compatible programs
|
||||||
|
|
||||||
|
2.3 Disk 3 contents
|
||||||
|
File Contents
|
||||||
|
SDB.LZH SDB source level debuger
|
||||||
|
|
||||||
|
2.4 Disk 4 contents
|
||||||
|
File Contents
|
||||||
|
C.LZH Small code, small data c & m libraries
|
||||||
|
CL.LZH Large code, large data c & m libraries
|
||||||
|
CLC.LZH Large code, small data c & m libraries
|
||||||
|
CLD.LZH Small code, large data c & m libraries
|
||||||
|
M87.LZH 8087 math libraries (all memory models)
|
||||||
|
MS.LZH Sensing math libraries (all models);
|
||||||
|
G.LZH Graphics libraries
|
||||||
|
S.LZH Screen libraries
|
||||||
|
|
||||||
|
2.5 Disk 5 contents
|
||||||
|
|
||||||
|
Disk 5 contains the optional Level 2 extensions.
|
||||||
|
File Contents
|
||||||
|
86SUP.LZH LIB\86SUP source files
|
||||||
|
DOS.LZH LIB\DOS source
|
||||||
|
GRAPHICS.LZH LIB\GRAPHICS source
|
||||||
|
INP.LZH LIB\INP files
|
||||||
|
LIB.LZH LIB files
|
||||||
|
MISC.LZH LIB\MISC source
|
||||||
|
MATH.LZH LIB\MATH source
|
||||||
|
ROM86.LZH LIB\ROM86 source
|
||||||
|
SCREEN.LZH LIB\SCREEN source
|
||||||
|
STDIO.LZH LIB\STDIO source
|
||||||
|
STDLIB.LZH LIB\STDLIB source
|
||||||
|
STRING.LZH LIB\STRING source
|
||||||
|
SYSIO.LZH LIB\SYSIO source
|
||||||
|
TIME.LZH LIB\TIME source
|
||||||
|
UTIL2.LZH Programs for level 2 extensions
|
||||||
|
|
||||||
|
2.6 Disk 6 contents
|
||||||
|
|
||||||
|
Disk 6 contains the optional Level 3 extensions.
|
||||||
|
File Contents
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Release notes page 4
|
||||||
|
|
||||||
|
|
||||||
|
Aztec C86, beta v5.2a 11/17/92
|
||||||
|
|
||||||
|
LNKLOC.LZH Advanced linker, locator, and hexer
|
||||||
|
programs
|
||||||
|
RDB.LZH Remote source level debugger
|
||||||
|
|
||||||
|
|
||||||
|
3. New Features since v4.2a
|
||||||
|
|
||||||
|
This section describes functional changes that have been
|
||||||
|
made in going from the v4.2b release to the 9 April v5.2a beta
|
||||||
|
release.
|
||||||
|
|
||||||
|
3.1 Compiler changes
|
||||||
|
|
||||||
|
The following paragraphs describe the changes that have been
|
||||||
|
made to the compiler in going from version 4.2b to 5.2a.
|
||||||
|
|
||||||
|
3.1.1 New compiler options
|
||||||
|
-J Enable trigraph support.
|
||||||
|
-F Generate prototypes for static functions, without
|
||||||
|
generating executable code. Send prototypes by default to
|
||||||
|
a file whose name is derived from input file, by changing
|
||||||
|
the extension to .PRO. The -O option can be used to
|
||||||
|
select the output file name. This option replaces the
|
||||||
|
PROTO program.
|
||||||
|
-X Generate prototypes for non-static functions, without
|
||||||
|
generating executable code. Send prototypes by default to
|
||||||
|
a file whose name is derived from input file, by changing
|
||||||
|
the extension to .PRO. The -O option can be used to
|
||||||
|
select the output file name.
|
||||||
|
-W Preprocess source. Send preprocessed C source by default
|
||||||
|
to a file whose name is derived from input file, by
|
||||||
|
changing the extension to .PRE. The -O option can be used
|
||||||
|
to select the output file name. This option replaces the
|
||||||
|
CPP program.
|
||||||
|
|
||||||
|
3.1.2 New predefined symbols
|
||||||
|
__VERSION Predefined with the version of the compiler. It
|
||||||
|
has the value 520;
|
||||||
|
_LARGE_CODE Predefined with value 1 if program is compiled
|
||||||
|
to use the large code memory model;
|
||||||
|
_LARGE_DATA Predefined with value 1 if program is compiled
|
||||||
|
to use the large data memory model;
|
||||||
|
|
||||||
|
3.1.3 New language features
|
||||||
|
|
||||||
|
Support for the following language features has been added
|
||||||
|
to the v5.2 compiler:
|
||||||
|
* Initialization of auto aggregate variables;
|
||||||
|
* Trigraphs.
|
||||||
|
|
||||||
|
3.1.4 New support for 8086 segmentation
|
||||||
|
|
||||||
|
The compiler now allows you to define, using the new
|
||||||
|
"#pragma segment" directive, the segments into which variables
|
||||||
|
are placed. This directive has the following form:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Release notes page 5
|
||||||
|
|
||||||
|
|
||||||
|
Aztec C86, beta v5.2a 11/17/92
|
||||||
|
|
||||||
|
#pragma segment [segname]
|
||||||
|
[class classname] [at addr] [near | far]
|
||||||
|
sym1, sym2 ...
|
||||||
|
|
||||||
|
where the parameters have the following meanings:
|
||||||
|
sym1, sym2, ...
|
||||||
|
Symbols that are to be placed in a
|
||||||
|
specified segment;
|
||||||
|
segname
|
||||||
|
'segname' is the segment that's to hold
|
||||||
|
the symbols.
|
||||||
|
class classname
|
||||||
|
'classname' is the class in which the
|
||||||
|
segment is located. If not specified, the
|
||||||
|
class defaults to 'DATA'.
|
||||||
|
at addr 'addr' is the segment's starting address;
|
||||||
|
near | far A NEAR segment is always accessible via
|
||||||
|
the DS segment register, and a FAR segment
|
||||||
|
is not. To access a FAR segment, the ES
|
||||||
|
register must first be loaded with the
|
||||||
|
segment's paragraph address. Defaults to
|
||||||
|
FAR.
|
||||||
|
|
||||||
|
Previous versions of the compiler allowed you to specify
|
||||||
|
that variables were to go into their own segments, but the
|
||||||
|
compiler itself chose the names of these segments. With the
|
||||||
|
ability to choose segment names yourself, and with the new ALN
|
||||||
|
linker and ALOC locator, you can now easily position variables
|
||||||
|
in special areas of memory. For example, if your system has
|
||||||
|
memory-mapped I/O, you can create structure that matches the
|
||||||
|
memory-mapped I/O section of memory, place that structure in
|
||||||
|
its own segment, and position the segment at the memory-mapped
|
||||||
|
I/O's section of memory.
|
||||||
|
|
||||||
|
Previous versions of the compiler did not allow you to put
|
||||||
|
near data items into special segments. With this capability,
|
||||||
|
and with the new ALN linker and ALOC locator, you can now
|
||||||
|
easily take advantage of battery-backed-up RAM. For example,
|
||||||
|
you can place variables that should not be initialized on
|
||||||
|
system startup in a DS-accessible near segment, and position
|
||||||
|
that segment at the beginning of RAM. The other standard
|
||||||
|
Aztec-created, DS-accessible, near segments can be placed
|
||||||
|
after the special segment in RAM, where they can safely be
|
||||||
|
initialized on system startup.
|
||||||
|
|
||||||
|
3.2 Assembler changes
|
||||||
|
* ORG directive now fully supported;
|
||||||
|
* The "AT addr" clause of the SEGMENT directive is now
|
||||||
|
supported.
|
||||||
|
|
||||||
|
3.3 DOS linker changes
|
||||||
|
* None.
|
||||||
|
|
||||||
|
3.4 Library changes
|
||||||
|
* Libraries are now ANSI compatible (previously they were
|
||||||
|
K&R compatible). Probably the main change you will have
|
||||||
|
to make to your programs is to change your calls to
|
||||||
|
fopen(), to support fopen's TEXT and BINARY modes.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Release notes page 6
|
||||||
|
|
||||||
|
|
||||||
|
Aztec C86, beta v5.2a 11/17/92
|
||||||
|
|
||||||
|
* The time() function now returns the current time as the
|
||||||
|
number of seconds that have elapsed since Jan 1, 1970.
|
||||||
|
Previously it returned the current time in the format
|
||||||
|
used for file directory time fields.
|
||||||
|
|
||||||
|
3.5 Include file changes
|
||||||
|
* Include files are now completely ANSI compatible
|
||||||
|
(previously they were K&R compatible).
|
||||||
|
|
||||||
|
3.6 Level 2 extensions for creating ROMable code
|
||||||
|
|
||||||
|
The optional Level 2 extensions contain components for
|
||||||
|
creating ROMable code of systems whose segmentation
|
||||||
|
requirements are not too demanding. For example, a typical
|
||||||
|
system might have its code in one set of ROM chips and its
|
||||||
|
data in one set of RAM chips.
|
||||||
|
|
||||||
|
These components are:
|
||||||
|
* The HEX86 utility that was in v4.2b, for converting a
|
||||||
|
program into Intel hex code;
|
||||||
|
* BEGIN-SD.ASM and HEAP-SD.ASM, the startup and heap
|
||||||
|
management routines for programs that use the small data
|
||||||
|
memory model;
|
||||||
|
* BEGIN-LD.ASM and HEAP-LD.ASM, the startup and heap
|
||||||
|
management routines for programs that use the large data
|
||||||
|
memory model;
|
||||||
|
|
||||||
|
The heap management routines are new; the routines in 4.2b
|
||||||
|
and earlier releases were for DOS-based systems.
|
||||||
|
|
||||||
|
BEGIN-SD.ASM and BEGIN-LD.ASM have replaced the ROM86.ASM
|
||||||
|
startup routine that was in 4.2b. They were changed so that
|
||||||
|
they now initialize the heap as required by the new heap
|
||||||
|
management routines.
|
||||||
|
|
||||||
|
3.7 Level 3 extensions for creating ROMable code
|
||||||
|
|
||||||
|
The new, optional, Level 3 extensions to Aztec C86 contain
|
||||||
|
the following utility programs and startup code for creating
|
||||||
|
multi-segmented romable code:
|
||||||
|
* The ALN linker. This program links object modules
|
||||||
|
together, and outputs a relocatable object module. The
|
||||||
|
input modules can be in Aztec object format, Microsoft
|
||||||
|
OMF format, or Intel OMF format. The output module is in
|
||||||
|
Intel OMF format.
|
||||||
|
* The ALOC locator. This program 'locates' an object module
|
||||||
|
that is in relocatable Intel OMF format; that is, defines
|
||||||
|
the starting memory addresses of the module's segments
|
||||||
|
and converts relocatable items to absolute.
|
||||||
|
* The AHEX hexer. This program converts an object module
|
||||||
|
that is in absolute Intel OMF format into Intel hex code
|
||||||
|
or binary code.
|
||||||
|
* The ABEGINSD and ABEGINLD startup routines, which gain
|
||||||
|
control when a program created with ALN, ALOC, and AHEX
|
||||||
|
is activated.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Release notes page 7
|
||||||
|
|
||||||
|
|
||||||
|
Aztec C86, beta v5.2a 11/17/92
|
||||||
|
|
||||||
|
For heap management, programs that use the Level 3
|
||||||
|
extensions should use the heap management routines that are in
|
||||||
|
the Level 2 extensions.
|
||||||
|
|
||||||
|
ALN, ALOC, and AHEX are described at the end of this
|
||||||
|
document. ABEGIN is described in the following section.
|
||||||
|
|
||||||
|
3.8 The ABEGIN startup routine.
|
||||||
|
|
||||||
|
ABEGIN is the startup routine that's used by programs that
|
||||||
|
have been generated using the ALN, ALOC, and AHEX programs.
|
||||||
|
|
||||||
|
3.8.1 ABEGIN files
|
||||||
|
|
||||||
|
To support different memory models, ABEGIN is provided in
|
||||||
|
two source files and four object module files, in directory
|
||||||
|
LIB\ROM86. Source files:
|
||||||
|
ABEGINSD.ASM Source for programs that use small data
|
||||||
|
memory model;
|
||||||
|
ABEGINLD.ASM Source for programs that use large data
|
||||||
|
memory model;
|
||||||
|
|
||||||
|
Object files:
|
||||||
|
ABEGINSD.O Object module for programs that use small
|
||||||
|
code, small data memory model. Generated
|
||||||
|
from ABEGINSD.ASM;
|
||||||
|
ABEGINSD.OLC Object module for programs that use large
|
||||||
|
code, small data memory model; Generated
|
||||||
|
from ABEGINSD.ASM;
|
||||||
|
ABEGINLD.OLD Object module for programs that use small
|
||||||
|
code, large data memory model; Generated
|
||||||
|
from ABEGINLD.ASM;
|
||||||
|
ABEGINLD.OL Object module for programs that use large
|
||||||
|
code, large data memory model. Generated
|
||||||
|
from ABEGINLD.ASM;
|
||||||
|
|
||||||
|
3.8.2 Notes about ABEGIN
|
||||||
|
* By default, ABEGIN initializes a program's DATA class in
|
||||||
|
RAM from a copy in ROM. The copy must immediately follow
|
||||||
|
the program's CODE class in ROM.
|
||||||
|
* ABEGIN can optionally initialize a program's FAR_DATA
|
||||||
|
class in RAM from a copy in ROM. This is the class in
|
||||||
|
which the compiler by default places a program's far
|
||||||
|
data. This class must immediately follow the program's
|
||||||
|
DATA class in ROM.
|
||||||
|
* ABEGIN contains the target system's reset code, in the
|
||||||
|
RESET_CODE segment. By default, AHEX will position this
|
||||||
|
segment so that it resides at the system's reset vector
|
||||||
|
location.
|
||||||
|
* ABEGIN contains code that will initialize an 80186. To
|
||||||
|
enable generation of this code, assemble ABEGINxx.ASM
|
||||||
|
with the symbol CPU_186 defined.
|
||||||
|
* The small data version of ABEGIN (ABEGINSD.ASM) puts a
|
||||||
|
program's stack within the program's uninitialized data
|
||||||
|
area, beginning at the location defined by symbol
|
||||||
|
'cstack'. The number of paragraphs in the stack area is
|
||||||
|
defined by the symbol 'stacksize', which defaults to 80h
|
||||||
|
paragraphs.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Release notes page 8
|
||||||
|
|
||||||
|
|
||||||
|
Aztec C86, beta v5.2a 11/17/92
|
||||||
|
|
||||||
|
* The small data version of ABEGIN puts a program's heap
|
||||||
|
right after the program's uninitialized data area. The
|
||||||
|
number of paragraphs in the heap is defined by the symbol
|
||||||
|
'heapsize', which defaults to 80h paragraphs.
|
||||||
|
* The large data version of ABEGIN (ABEGINLD.ASM) puts a
|
||||||
|
program's stack right after the program's uninitialized
|
||||||
|
data area. The symbol 'stacksize' defines the number of
|
||||||
|
paragraphs in this area, and defaults to 80h paragraphs.
|
||||||
|
* The large data version of ABEGIN puts a program's heap
|
||||||
|
right after the program's stack area. The symbol
|
||||||
|
'heapsize' defines the number of paragraphs in this area,
|
||||||
|
and defaults to 80h paragraphs.
|
||||||
|
|
||||||
|
3.9 SDB changes
|
||||||
|
* There are now two versions of SDB: the regular SDB; and
|
||||||
|
RDB, which allows remote source level debugging of a
|
||||||
|
program that resides in another MSDOS/PCDOS- or ROM-based
|
||||||
|
system.
|
||||||
|
* Both SDB and RDB have a new windowed interface, and
|
||||||
|
hypertext help.
|
||||||
|
* INITSDB is no longer needed for configuring SDB.
|
||||||
|
* RDB and SDB occupy significantly more RAM memory than
|
||||||
|
v4.10d SDB. This is not a problem for RDB, since the
|
||||||
|
program being debugged resides in a separate machine. But
|
||||||
|
it is a problem with SDB since it and the program being
|
||||||
|
debugged must reside in the same system. Until we resolve
|
||||||
|
this problem with SDB, which we will probably do by
|
||||||
|
moving SDB up into extended memory, we are providing the
|
||||||
|
v4.10d SDB, in file SDB410D.EXE, and INITSDB (for
|
||||||
|
configuring the SDB410D).
|
||||||
|
|
||||||
|
3.10 Z changes
|
||||||
|
* The command :se 50=1 can be used on VGA screens to
|
||||||
|
display 50 lines.
|
||||||
|
|
||||||
|
3.11 Other program changes
|
||||||
|
|
||||||
|
Other new programs in v5.2 are these:
|
||||||
|
* XREF, which generates a cross-reference listing of symbol
|
||||||
|
references and definitions in object modules.
|
||||||
|
|
||||||
|
Programs that are no longer provided:
|
||||||
|
* PROTO, which has been replaced with the new compiler
|
||||||
|
options -F and -X;
|
||||||
|
* CPP, which has been replaced with the new compiler option
|
||||||
|
-W;
|
||||||
|
* ENGTOC;
|
||||||
|
* CTOENG;
|
||||||
|
* ARCV.
|
||||||
|
|
||||||
|
3.12 Building libraries
|
||||||
|
|
||||||
|
Library source is in the optional Level 1 extensions to
|
||||||
|
Aztec C86. The INSTALL program will create a LIB subdirectory
|
||||||
|
of the root Aztec directory and several subdirectories of LIB,
|
||||||
|
and then install the source in these subdirectories.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Release notes page 9
|
||||||
|
|
||||||
|
|
||||||
|
Aztec C86, beta v5.2a 11/17/92
|
||||||
|
|
||||||
|
You can build one or more libraries by CD'ing into the LIB
|
||||||
|
directory and then invoking MAKE with codes that identify the
|
||||||
|
libraries you want made. The codes and their associated
|
||||||
|
libraries are:
|
||||||
|
|
||||||
|
ALL All libraries
|
||||||
|
C_ALL All C libraries
|
||||||
|
C C.LIB
|
||||||
|
CL CL.LIB
|
||||||
|
CLC CLC.LIB
|
||||||
|
CLD CLD.LIB
|
||||||
|
M_ALL All M libraries
|
||||||
|
M M.LIB
|
||||||
|
ML ML.LIB
|
||||||
|
MLC MLC.LIB
|
||||||
|
MLD MLD.LIB
|
||||||
|
M87_ALL All M87 libraries
|
||||||
|
M87 M87.LIB
|
||||||
|
M87L M87L.LIB
|
||||||
|
M87LC M87LC.LIB
|
||||||
|
M87LD M87LD.LIB
|
||||||
|
MS_ALL All MS (8087-sensing) math libraries
|
||||||
|
MS MS.LIB
|
||||||
|
MSL MSL.LIB
|
||||||
|
MSLC MSLC.LIB
|
||||||
|
MSLD MSLD.LIB
|
||||||
|
S_ALL All S (screen) libraries
|
||||||
|
S S.LIB
|
||||||
|
SL SL.LIB
|
||||||
|
SLC SLC.LIB
|
||||||
|
SLD SLD.LIB
|
||||||
|
G_ALL All G (graphics) libraries
|
||||||
|
G G.LIB
|
||||||
|
GL GL.LIB
|
||||||
|
GLC GLC.LIB
|
||||||
|
GLD GLD.LIB
|
||||||
|
|
||||||
|
To build libraries, MAKE will invoke a second copy of MAKE,
|
||||||
|
passing to it parameters that define what's to be made.
|
||||||
|
|
||||||
|
For each library that it's to make, this second MAKE will do
|
||||||
|
the following:
|
||||||
|
|
||||||
|
* CD into each required subdirectory of the LIB
|
||||||
|
subdirectory and invoke a third copy of MAKE. This third
|
||||||
|
MAKE will generate object modules for the library, from
|
||||||
|
the source that's in the subdirectory.
|
||||||
|
* CD into the INP subdirectory and sort the names of the
|
||||||
|
object modules that will go into the library, using the
|
||||||
|
ORD utility;
|
||||||
|
* Build the library into the LIBS subdirectory of the LIB
|
||||||
|
directory, using the LB utility.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Release notes page 10
|
||||||
|
|
||||||
|
|
||||||
|
Aztec C86, beta v5.2a 11/17/92
|
||||||
|
|
||||||
|
4. New Features since the 4/9/92 beta
|
||||||
|
|
||||||
|
This section describes changes that have been made since the
|
||||||
|
9 April 92 beta release. It first describes functional changes
|
||||||
|
that have been made, and then bug fixes.
|
||||||
|
|
||||||
|
4.1 Compiler changes
|
||||||
|
* The new -M option causes the compiler to issue a warning
|
||||||
|
if a function is called without a prototype being in
|
||||||
|
scope.
|
||||||
|
* The new +T option causes $$var statements (used to access
|
||||||
|
far data) to be put into the code segment instead of the
|
||||||
|
data segment.
|
||||||
|
|
||||||
|
4.2 Z changes
|
||||||
|
* On a VGA display, the command :se 50=1 can be used to
|
||||||
|
display 50 lines.
|
||||||
|
|
||||||
|
4.3 Library changes
|
||||||
|
* The new TimeFile2TM() function converts a time value
|
||||||
|
that's in the format used for file directory time fields
|
||||||
|
to the format that's used by the time() function.
|
||||||
|
* The new TimeTM2File() function converts a time value
|
||||||
|
that's in the format used by the time() function to file
|
||||||
|
system format.
|
||||||
|
* The graphics functions now support VGA modes 0x10, 0x11,
|
||||||
|
0x12, and 0x13.
|
||||||
|
* The movblock() function has been changed. A length
|
||||||
|
argument of 0 now means don't copy anything; used to mean
|
||||||
|
copy 64kbytes.
|
||||||
|
* The scdir() function has been changed. When passed a
|
||||||
|
NULL, it resets itself so that the next call can specify
|
||||||
|
a new pattern.
|
||||||
|
|
||||||
|
4.4 SDB/RDB changes
|
||||||
|
* The DI command causes sdb/rdb to display information
|
||||||
|
about the debugger's heap usage.
|
||||||
|
|
||||||
|
|
||||||
|
5. New features since the 10/4/92 beta
|
||||||
|
|
||||||
|
5.1 SDB/RDB changes
|
||||||
|
* The name of the default configuration file for SDB and
|
||||||
|
RDB has been changed to SDB.SET, from SDB.INI.
|
||||||
|
* The sequence in which SDB/RDB search for SDB.SET has been
|
||||||
|
changed. On startup they look in the following places:
|
||||||
|
1. The current directory;
|
||||||
|
2. The directory whose name is assigned to the AZTEC
|
||||||
|
environment variable;
|
||||||
|
3. If SDB.SET is not found and AZTEC environment
|
||||||
|
variable doesn't exist, SDB.SET is created in the
|
||||||
|
current directory.
|
||||||
|
|
||||||
|
5.2 CNM changes
|
||||||
|
* The -U option has been added, to display information
|
||||||
|
about a module's unnamed symbols.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Release notes page 11
|
||||||
|
|
||||||
|
|
||||||
|
Aztec C86, beta v5.2a 11/17/92
|
||||||
|
|
||||||
|
5.3 Library changes
|
||||||
|
* The following functions have been added:
|
||||||
|
+ fnsplit(), which breaks a file name up into drive,
|
||||||
|
path, filename, and extension components; Calling
|
||||||
|
sequence:
|
||||||
|
int fnsplit(char *name, char *drive, char *dir,
|
||||||
|
char *fname, char *ext);
|
||||||
|
where
|
||||||
|
- name points at the name to be broken down;
|
||||||
|
- drive points at the area where the name's drive
|
||||||
|
component is placed;
|
||||||
|
- dir points at the area where the name's
|
||||||
|
directory component is placed;
|
||||||
|
- fname points at the area where the name's
|
||||||
|
filename component is placed;
|
||||||
|
- ext points at the area where the name's
|
||||||
|
extension is placed.
|
||||||
|
+ fnmerge(), which creates a file name from drive,
|
||||||
|
path, filename, and extension components. It has the
|
||||||
|
same arguments as fnsplit(); a complete file name is
|
||||||
|
built up from the drive, dir, fname, and ext args,
|
||||||
|
and stored in the area pointed at by name.
|
||||||
|
+ strdup(), which makes a copy of a string in the
|
||||||
|
heap. Calling sequence:
|
||||||
|
char *strdup(char *str);
|
||||||
|
+ lfind(), which performs a linear search of an array
|
||||||
|
for a specified item. Calling sequence:
|
||||||
|
void *lfind(void *key, void *base, size_t *num,
|
||||||
|
size_t width, int (*fcmp)(void *, void *));
|
||||||
|
where:
|
||||||
|
- key points at the value to be located;
|
||||||
|
- base points at the array to be searched;
|
||||||
|
- num points at the number of array elements;
|
||||||
|
- width is the width in bytes of each array
|
||||||
|
element;
|
||||||
|
- fcmp points at a function that compares two
|
||||||
|
keys. The function returns 0 if the items are
|
||||||
|
identical, and non-zero if different.
|
||||||
|
lfind() returns a pointer to the matching array
|
||||||
|
element, or NULL if not found.
|
||||||
|
+ lsearch(), same as lfind(), except it appends the
|
||||||
|
item if not found. The calling sequence is the same
|
||||||
|
as for lfind().
|
||||||
|
+ min(), returns the lesser of two ints. Calling
|
||||||
|
sequence:
|
||||||
|
int min(int a, int b);
|
||||||
|
where a and b are the items to be compared.
|
||||||
|
+ max(), returns the greater of two ints. Calling
|
||||||
|
sequence:
|
||||||
|
int max(int a, int b);
|
||||||
|
where a and b are the items to be compared.
|
||||||
|
* The following symbols were added to the ABEGINSD.ASM and
|
||||||
|
ABEGINLD.ASM startup routines:
|
||||||
|
+ NEAR_DATA_INIT. If 1, the initialized near data
|
||||||
|
segment (dataseg) is initialized from a copy in ROM.
|
||||||
|
If 0, this initialization is not done. Default
|
||||||
|
value: 1.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Release notes page 12
|
||||||
|
|
||||||
|
|
||||||
|
Aztec C86, beta v5.2a 11/17/92
|
||||||
|
|
||||||
|
+ FAR_DATA_INIT. If 1, the initialized far data class
|
||||||
|
FAR_DATA is initialized from a copy in ROM. If 0,
|
||||||
|
this initialization is not done. Default value: 0.
|
||||||
|
+ FAR_BSS_INIT. If 1, the uninitialized fat data class
|
||||||
|
FAR_BSS is cleared. If 0, FAR_BSS is not cleared.
|
||||||
|
Default value: 0.
|
||||||
|
+ CPU_186. Set to 1 if processor is an 80186/80188, or
|
||||||
|
0 if not. Default value: 0.
|
||||||
|
|
||||||
|
5.4 The AI program
|
||||||
|
|
||||||
|
AI is a new program that displays information about Aztec
|
||||||
|
C86 programs. For information, type AI.
|
||||||
|
|
||||||
|
5.5 Bug fixes
|
||||||
|
|
||||||
|
Numerous bugs have been fixed, in programs, library
|
||||||
|
functions, and include files. These fixes are described
|
||||||
|
in the CHANGES.* files that are stored in the BIN,
|
||||||
|
INCLUDE, and LIB subdirectories of the main Aztec
|
||||||
|
directory. Once you've finished examining these files,
|
||||||
|
you can delete them.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Release notes page 13
|
||||||
|
|
18
Manx Aztec C86 v52a/INCLUDE/ALLOC.H
Normal file
18
Manx Aztec C86 v52a/INCLUDE/ALLOC.H
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
/* Copyright 1992 Manx Software Systems, Inc. All rights reserved */
|
||||||
|
|
||||||
|
#ifndef __ALLOC_H
|
||||||
|
#define __ALLOC_H
|
||||||
|
|
||||||
|
int brk(void *ptr);
|
||||||
|
void * sbrk(int _size);
|
||||||
|
|
||||||
|
huge void * lcalloc(long _nelem, long _size);
|
||||||
|
huge void * lfree(huge void *_ptr);
|
||||||
|
huge void * lmalloc(long _size);
|
||||||
|
huge void * lrealloc(huge void *_ptr, long _size);
|
||||||
|
|
||||||
|
unsigned int rsvstk(int _size);
|
||||||
|
|
||||||
|
#endif /* __ALLOC_H */
|
||||||
|
|
||||||
|
|
13
Manx Aztec C86 v52a/INCLUDE/ASSERT.H
Normal file
13
Manx Aztec C86 v52a/INCLUDE/ASSERT.H
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
/* Copyright Manx Software Systems, Inc. 1990. All rights reserved */
|
||||||
|
|
||||||
|
#ifndef __ASSERT_H
|
||||||
|
#define __ASSERT_H
|
||||||
|
|
||||||
|
#ifndef NDEBUG
|
||||||
|
void _assert(char *, char *, unsigned int);
|
||||||
|
#define assert(x) (x == 0 ? _assert(#x, __FILE__, __LINE__):(void)0)
|
||||||
|
#else
|
||||||
|
#define assert(x) ((void)0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
19
Manx Aztec C86 v52a/INCLUDE/CHANGES.INC
Normal file
19
Manx Aztec C86 v52a/INCLUDE/CHANGES.INC
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
Changes to include files:
|
||||||
|
|
||||||
|
4/9/92 ------------- Released v5.2a beta 1 -------------------
|
||||||
|
|
||||||
|
9/18/92 jd: time.h
|
||||||
|
LocalFileTime() replaced by TimeFile2TM(), so replaced prototype in time.h.
|
||||||
|
|
||||||
|
Added prototype to time.h for new function TimeTM2File()
|
||||||
|
|
||||||
|
10/4/92 ------------- Released v5.2a beta 2 -------------------
|
||||||
|
|
||||||
|
11/17/92 jd:
|
||||||
|
stdlib.h:
|
||||||
|
Added prototypes for non-ANSI functions lsearch(), lfind(), lfree(),
|
||||||
|
min(), max()
|
||||||
|
fcntl.h:
|
||||||
|
Added prototypes for non-ANSI functions fnsplit(), fnmerge()
|
||||||
|
string.h:
|
||||||
|
Added prototype for non-ANSI function strdup()
|
13
Manx Aztec C86 v52a/INCLUDE/COLOR.H
Normal file
13
Manx Aztec C86 v52a/INCLUDE/COLOR.H
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#define BLACK 0
|
||||||
|
#define BLUE 1
|
||||||
|
#define GREEN 2
|
||||||
|
#define CYAN 3
|
||||||
|
#define RED 4
|
||||||
|
#define MAGENTA 5
|
||||||
|
#define YELLOW 6
|
||||||
|
#define WHITE 7
|
||||||
|
|
||||||
|
#define BLINK 1
|
||||||
|
#define NO_BLINK 0
|
||||||
|
#define HIGH 1
|
||||||
|
#define LOW 0
|
51
Manx Aztec C86 v52a/INCLUDE/CTYPE.H
Normal file
51
Manx Aztec C86 v52a/INCLUDE/CTYPE.H
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
/* Copyright 1990 Manx Software Systems, Inc. */
|
||||||
|
/* All rights reserved. */
|
||||||
|
|
||||||
|
#ifndef __CTYPE_H
|
||||||
|
#define __CTYPE_H
|
||||||
|
|
||||||
|
extern char _ctype[];
|
||||||
|
|
||||||
|
#define _U 0x01 /* Upper-case */
|
||||||
|
#define _L 0x02 /* Lower-case */
|
||||||
|
#define _D 0x04 /* Decimal-digit */
|
||||||
|
#define _H 0x08 /* Hex-digit */
|
||||||
|
#define _W 0x10 /* White-space */
|
||||||
|
#define _C 0x20 /* Control char */
|
||||||
|
#define _P 0x40 /* Punctuation */
|
||||||
|
#define _B 0x80 /* Blank */
|
||||||
|
|
||||||
|
int isalpha(int _c);
|
||||||
|
int isupper(int _c);
|
||||||
|
int islower(int _c);
|
||||||
|
int isdigit(int _c);
|
||||||
|
int isxdigit(int _c);
|
||||||
|
int isalnum(int _c);
|
||||||
|
int isspace(int _c);
|
||||||
|
int ispunct(int _c);
|
||||||
|
int iscntrl(int _c);
|
||||||
|
int isprint(int _c);
|
||||||
|
int isgraph(int _c);
|
||||||
|
int isascii(int _c);
|
||||||
|
int tolower(int _c);
|
||||||
|
int toupper(int _c);
|
||||||
|
|
||||||
|
#define isalpha(x) ((_ctype+1)[(unsigned char)(x)]&(_L|_U))
|
||||||
|
#define isupper(x) ((_ctype+1)[(unsigned char)(x)]&(_U))
|
||||||
|
#define islower(x) ((_ctype+1)[(unsigned char)(x)]&(_L))
|
||||||
|
#define isdigit(x) ((_ctype+1)[(unsigned char)(x)]&(_D))
|
||||||
|
#define isxdigit(x) ((_ctype+1)[(unsigned char)(x)]&(_H))
|
||||||
|
#define isalnum(x) ((_ctype+1)[(unsigned char)(x)]&(_L|_U|_D))
|
||||||
|
#define isspace(x) ((_ctype+1)[(unsigned char)(x)]&(_W))
|
||||||
|
#define ispunct(x) ((_ctype+1)[(unsigned char)(x)]&(_P))
|
||||||
|
#define iscntrl(x) ((_ctype+1)[(unsigned char)(x)]&(_C))
|
||||||
|
#define isprint(x) ((_ctype+1)[(unsigned char)(x)]&(_P|_L|_U|_D|_B))
|
||||||
|
#define isgraph(x) ((_ctype+1)[(unsigned char)(x)]&(_P|_L|_U|_D))
|
||||||
|
#define isascii(x) (((x)&0x80)==0)
|
||||||
|
|
||||||
|
#define toascii(x) ((x)&0x7f)
|
||||||
|
#define _tolower(x) ((x)|0x20)
|
||||||
|
#define _toupper(x) ((x)&0x5f)
|
||||||
|
|
||||||
|
#endif /* _CTYPE_H */
|
||||||
|
|
114
Manx Aztec C86 v52a/INCLUDE/DBG.H
Normal file
114
Manx Aztec C86 v52a/INCLUDE/DBG.H
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
/* Copyright (C) 1985 by Manx Software Systems, Inc. */
|
||||||
|
|
||||||
|
#define RECORDSIZE 64
|
||||||
|
|
||||||
|
#define DBG_MAGIC 0x356e /* Magic # for relative .dbg files */
|
||||||
|
#define DBG_MAGICROM 0x4d53 /* Magic # for absolute .dbg files */
|
||||||
|
#define LINE_MAGIC 0x3039 /* Magic # for line number records */
|
||||||
|
#define BLOCK_MAGIC 0x3c48 /* Magic # for block records */
|
||||||
|
#define LOCAL_MAGIC 0x3c47 /* Magic # for symbol records */
|
||||||
|
|
||||||
|
#define LOCSIZE 6 /* # of local symbols per record */
|
||||||
|
#define BLKSIZE 6 /* # of blocks per record */
|
||||||
|
#define STRSIZE (RECORDSIZE/sizeof(struct structab)) /* # of structs/record */
|
||||||
|
|
||||||
|
struct dbgheader {
|
||||||
|
short h_stsize; /* 02 */ /* # of struct table entries */
|
||||||
|
short h_stpos; /* 04 */ /* record # for start of structs */
|
||||||
|
short h_stgsize; /* 06 */ /* # of string table entries */
|
||||||
|
unsigned short h_stgbytes; /* 08 */ /* total length of strings */
|
||||||
|
short h_stgpos; /* 0a */ /* record # for start of strings */
|
||||||
|
short h_linerec; /* 0c */ /* # of line # records */
|
||||||
|
short h_blkrec; /* 0e */ /* # of block records */
|
||||||
|
short h_symrec; /* 10 */ /* # of symbol table records */
|
||||||
|
unsigned short h_abssym; /* 12 */ /* symbol # of first absolute global */
|
||||||
|
unsigned short h_codesym; /* 14 */ /* symbol # of first code global */
|
||||||
|
unsigned short h_datasym; /* 16 */ /* symbol # of first data global */
|
||||||
|
};
|
||||||
|
|
||||||
|
struct structab {
|
||||||
|
unsigned short st_tag;
|
||||||
|
unsigned short st_size;
|
||||||
|
unsigned short st_first; /* first member contained in this struct */
|
||||||
|
unsigned short st_last; /* last member "" */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* macros for bit field stuff in localsym records for struct members */
|
||||||
|
#define FIELDPACK(pos, wid) ((pos)&0x7f | ((wid)&0x7f)<<8)
|
||||||
|
#define GETPOS(x) ((x)&0x7f)
|
||||||
|
#define GETWID(x) ((x)>>8 & 0x7f)
|
||||||
|
|
||||||
|
/* special flag values for ls_seg */
|
||||||
|
#define AUTOFLG -2 /* auto-variable on the stack */
|
||||||
|
#define REGFLG -3 /* Register variable */
|
||||||
|
#define ARGFLG -4 /* function-parameter on the stack */
|
||||||
|
#define AREGFLG -5 /* Register fucntion-parameter */
|
||||||
|
#define TDEFFLG -6 /* Typedef */
|
||||||
|
|
||||||
|
struct localsym {
|
||||||
|
unsigned short ls_name;
|
||||||
|
unsigned short ls_type;
|
||||||
|
short ls_struct; /* for bit fields, pos and wid */
|
||||||
|
short ls_offset;
|
||||||
|
short ls_seg; /* see special flag values above */
|
||||||
|
/* for struct members: 0 for standard members, !0 for bit fields */
|
||||||
|
};
|
||||||
|
|
||||||
|
struct block {
|
||||||
|
short b_function; /* function containing this block */
|
||||||
|
unsigned short b_start; /* start of block (relative to function start) */
|
||||||
|
unsigned short b_end; /* end of block */
|
||||||
|
unsigned short b_first; /* first local contained in this block */
|
||||||
|
unsigned short b_last; /* last local "" */
|
||||||
|
};
|
||||||
|
|
||||||
|
#define LINEENTRY (RECORDSIZE-5*sizeof(short))
|
||||||
|
|
||||||
|
struct lineinfo {
|
||||||
|
unsigned short l_offset, l_seg;
|
||||||
|
unsigned short l_file;
|
||||||
|
unsigned short l_lnum;
|
||||||
|
unsigned char l_data[LINEENTRY];
|
||||||
|
};
|
||||||
|
|
||||||
|
/* codes in LINE info blocks */
|
||||||
|
#define NEXTREC 0xff /* line info continues in the next line record */
|
||||||
|
#define EXTADDR 0x80 /* if bit on then 15 bit address increment */
|
||||||
|
#define EXTMAX 0x7f00 /* largest possible displacement + 1 */
|
||||||
|
|
||||||
|
#define db_blk db_u.u_block
|
||||||
|
#define db_syms db_u.u_syms
|
||||||
|
#define db_line db_u.u_line
|
||||||
|
#define db_head db_u.u_head
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
short db_magic;
|
||||||
|
union {
|
||||||
|
struct block u_block[BLKSIZE];
|
||||||
|
struct localsym u_syms[LOCSIZE];
|
||||||
|
struct lineinfo u_line;
|
||||||
|
struct dbgheader u_head;
|
||||||
|
char u_buffer[RECORDSIZE-sizeof(short)];
|
||||||
|
} db_u;
|
||||||
|
} dbgrec;
|
||||||
|
|
||||||
|
/* type modifiers */
|
||||||
|
#define D_PTR '*'
|
||||||
|
#define D_LPTR '#'
|
||||||
|
#define D_ARRAY '['
|
||||||
|
#define D_FUNC '('
|
||||||
|
#define D_FFUNC '{'
|
||||||
|
|
||||||
|
/* base type values (always last char of type string) */
|
||||||
|
#define D_CHAR 'c'
|
||||||
|
#define D_UCHAR 'C'
|
||||||
|
#define D_INT 'i'
|
||||||
|
#define D_UINT 'I'
|
||||||
|
#define D_LONG 'l'
|
||||||
|
#define D_ULONG 'L'
|
||||||
|
#define D_FLOAT 'f'
|
||||||
|
#define D_DOUBLE 'd'
|
||||||
|
#define D_VOID 'v'
|
||||||
|
#define D_STRUCT ':' /* type string is followed by struct # */
|
||||||
|
|
||||||
|
#define BASETYPES "cCiIlLfdv:"
|
26
Manx Aztec C86 v52a/INCLUDE/DIOCTL.H
Normal file
26
Manx Aztec C86 v52a/INCLUDE/DIOCTL.H
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
/* Copyright (C) 1983 by Manx Software Systems */
|
||||||
|
|
||||||
|
#define TIOCGETP 0 /* read contents of tty control structure */
|
||||||
|
#define TIOCSETP 1 /* set contents of tty control structure */
|
||||||
|
#define TIOCSETN 1 /* ditto only don't wait for output to flush */
|
||||||
|
|
||||||
|
/* special codes for MSDOS 2.x only */
|
||||||
|
#define TIOCREAD 2 /* read control info from device */
|
||||||
|
#define TIOCWRITE 3 /* write control info to device */
|
||||||
|
#define TIOCDREAD 4 /* same as 2 but for drives */
|
||||||
|
#define TIOCDWRITE 5 /* same as 3 but for drives */
|
||||||
|
#define GETISTATUS 6 /* get input status */
|
||||||
|
#define GETOSTATUS 7 /* get output status */
|
||||||
|
|
||||||
|
struct sgttyb {
|
||||||
|
short sg_flags; /* control flags */
|
||||||
|
char sg_erase; /* ignored */
|
||||||
|
char sg_kill; /* ignored */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* settings for flags */
|
||||||
|
#define RAW 0x20 /* no echo or mapping of input/output BDOS(6) */
|
||||||
|
|
||||||
|
/* Refer to the MSDOS technical reference for detailed information on
|
||||||
|
* the remaining flags.
|
||||||
|
*/
|
14
Manx Aztec C86 v52a/INCLUDE/DOS.H
Normal file
14
Manx Aztec C86 v52a/INCLUDE/DOS.H
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/* Copyright 1992 Manx Software Systems, Inc. All rights reserved */
|
||||||
|
|
||||||
|
#ifndef __DOS_H
|
||||||
|
#define __DOS_H
|
||||||
|
|
||||||
|
int bdos(int _func, int _dx, int _cx);
|
||||||
|
int bdosx(int _func, far void *_dsdx, int _cx);
|
||||||
|
int dos(int _func, int _bx, int _cx, int _dx, int _di, int _si);
|
||||||
|
int dosx(int _func, int _bx, int _cx, void *_dsdx, int _di, int _si);
|
||||||
|
int dup(int _oldfd);
|
||||||
|
int fcbinit(char *_name, void *_fcb);
|
||||||
|
int fdup(int _oldfd, int _newfd);
|
||||||
|
|
||||||
|
#endif /* __DOS_H */
|
40
Manx Aztec C86 v52a/INCLUDE/ERRNO.H
Normal file
40
Manx Aztec C86 v52a/INCLUDE/ERRNO.H
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
/* Copyright Manx Software Systems, Inc. 1990. All rights reserved */
|
||||||
|
|
||||||
|
#ifndef __ERRNO_H
|
||||||
|
#define __ERRNO_H
|
||||||
|
|
||||||
|
extern int errno;
|
||||||
|
|
||||||
|
/* MsDos return codes */
|
||||||
|
#define EINVAL 1
|
||||||
|
#define ENOENT 2
|
||||||
|
#define ENOTDIR 3
|
||||||
|
#define EMFILE 4
|
||||||
|
#define EACCES 5
|
||||||
|
#define EBADF 6
|
||||||
|
#define EARENA 7
|
||||||
|
#define ENOMEM 8
|
||||||
|
#define EFAULT 9
|
||||||
|
#define EINVENV 10
|
||||||
|
#define EBADFMT 11
|
||||||
|
#define EINVACC 12
|
||||||
|
#define EINVDAT 13
|
||||||
|
#define ENODEV 15
|
||||||
|
#define ERMCD 16
|
||||||
|
#define EXDEV 17
|
||||||
|
#define ENOMORE 18
|
||||||
|
|
||||||
|
/* additional codes used by Aztec C */
|
||||||
|
#define EEXIST 19
|
||||||
|
#define ENOTTY 20
|
||||||
|
/* used by the math library */
|
||||||
|
#define ERANGE 21
|
||||||
|
#define EDOM 22
|
||||||
|
|
||||||
|
/* non ANSI C definitions */
|
||||||
|
|
||||||
|
extern char *_sys_errlist[];
|
||||||
|
extern int _sys_nerr;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
27
Manx Aztec C86 v52a/INCLUDE/FCB.H
Normal file
27
Manx Aztec C86 v52a/INCLUDE/FCB.H
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/* Copyright (C) 1982 by Manx Software Systems */
|
||||||
|
|
||||||
|
struct fcb {
|
||||||
|
char f_driv;
|
||||||
|
char f_name[8];
|
||||||
|
char f_type[3];
|
||||||
|
char f_ext;
|
||||||
|
char f_resv[2];
|
||||||
|
char f_rc;
|
||||||
|
char f_sydx[16];
|
||||||
|
char f_cr;
|
||||||
|
unsigned f_record; char f_overfl;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define OPNFIL 15
|
||||||
|
#define CLSFIL 16
|
||||||
|
#define DELFIL 19
|
||||||
|
#define READSQ 20
|
||||||
|
#define WRITSQ 21
|
||||||
|
#define MAKFIL 22
|
||||||
|
#define SETDMA 26
|
||||||
|
#define GETUSR 32
|
||||||
|
#define READRN 33
|
||||||
|
#define WRITRN 34
|
||||||
|
#define FILSIZ 35
|
||||||
|
#define SETREC 36
|
||||||
|
|
83
Manx Aztec C86 v52a/INCLUDE/FCNTL.H
Normal file
83
Manx Aztec C86 v52a/INCLUDE/FCNTL.H
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
/* Copyright Manx Software Systems, Inc. 1990. All rights reserved */
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
#ifndef __FCNTL_H
|
||||||
|
#define __FCNTL_H
|
||||||
|
|
||||||
|
#ifndef _SIZE_T
|
||||||
|
#define _SIZE_T
|
||||||
|
typedef unsigned int size_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define O_RDONLY 0
|
||||||
|
#define O_WRONLY 1
|
||||||
|
#define O_RDWR 2
|
||||||
|
#define O_DENYRW 0x10
|
||||||
|
#define O_DENYW 0x20
|
||||||
|
#define O_DENYR 0x30
|
||||||
|
#define O_DENYN 0x40
|
||||||
|
#define O_INHER 0x80
|
||||||
|
#define O_COMP 0x00
|
||||||
|
#define O_CREAT 0x0100
|
||||||
|
#define O_TRUNC 0x0200
|
||||||
|
#define O_EXCL 0x0400
|
||||||
|
#define O_APPEND 0x0800
|
||||||
|
|
||||||
|
#define O_TEXT 0x1000
|
||||||
|
#define O_ISOPEN 0x2000 /* not for use except in io library */
|
||||||
|
#define O_CONRAW 0x4000
|
||||||
|
#define O_ISTTY 0x8000
|
||||||
|
|
||||||
|
#define MAXCHAN 20 /* maximum number of I/O channels *jd 9/8/92 */
|
||||||
|
|
||||||
|
int _creat(const char *_name, int _mode);
|
||||||
|
int _open(const char * _name, int _mode, ...);
|
||||||
|
int _access(char *, int);
|
||||||
|
int _close(int);
|
||||||
|
size_t _read(int, void *, size_t);
|
||||||
|
size_t _write(int, void *, size_t);
|
||||||
|
long _lseek(int, long, int);
|
||||||
|
struct sgttyb;
|
||||||
|
int _ioctl(int, int, ...);
|
||||||
|
int _isatty(int);
|
||||||
|
int _unlink(char *);
|
||||||
|
|
||||||
|
int creat(const char *_name, int _mode);
|
||||||
|
int open(const char * _name, int _mode, ...);
|
||||||
|
int access(char *, int);
|
||||||
|
int close(int);
|
||||||
|
size_t read(int, void *, size_t);
|
||||||
|
size_t write(int, void *, size_t);
|
||||||
|
long lseek(int, long, int);
|
||||||
|
int ioctl(int, int, struct sgttyb *);
|
||||||
|
int isatty(int);
|
||||||
|
int unlink(char *);
|
||||||
|
int _csread(int _fd, char *_buff, size_t _size);
|
||||||
|
int filelock(int _fd, int _flag, long _offset, long _len);
|
||||||
|
|
||||||
|
void _exit(int _code);
|
||||||
|
int chmod(char *_name, int _attr);
|
||||||
|
|
||||||
|
int chdir(char *_path);
|
||||||
|
char * getcwd(char *_path, int _size);
|
||||||
|
int mkdir(char *_name);
|
||||||
|
char * mktemp(char * _template);
|
||||||
|
int rmdir(char *_dir);
|
||||||
|
char * scdir(char *_pat);
|
||||||
|
|
||||||
|
int wait(void);
|
||||||
|
int fexecl(char *_file, char *_arg0, ...);
|
||||||
|
int fexecv(char *_file, char **_argv);
|
||||||
|
|
||||||
|
int execl(char *_file, char *_arg0, ...);
|
||||||
|
int execv(char *_file, char **_argv);
|
||||||
|
int execlp(char *_file, char *arg0, ...);
|
||||||
|
int execvp(char *_file, char **_argv);
|
||||||
|
|
||||||
|
int fnsplit(char *_name, char *_drive, char *_dir,
|
||||||
|
char *_fname, char *_ext);
|
||||||
|
int fnmerge(char *_name, char *_drive, char *_dir,
|
||||||
|
char *_fname, char *_ext);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
73
Manx Aztec C86 v52a/INCLUDE/FLOAT.H
Normal file
73
Manx Aztec C86 v52a/INCLUDE/FLOAT.H
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
/* Copyright Manx Software Systems, Inc. 1990. All rights reserved */
|
||||||
|
|
||||||
|
#ifndef __FLOAT_H
|
||||||
|
#define __FLOAT_H
|
||||||
|
|
||||||
|
#ifdef _FLT_IEEE
|
||||||
|
#define FLT_ROUNDS -1
|
||||||
|
#define FLT_RADIX 2
|
||||||
|
#define FLT_MANT_DIG 24
|
||||||
|
#define FLT_EPSILON 1.19209290E-07F
|
||||||
|
#define FLT_DIG 6
|
||||||
|
#define FLT_MIN_EXP -125
|
||||||
|
#define FLT_MIN 1.17549435E-38F
|
||||||
|
#define FLT_MIN_10_EXP -37
|
||||||
|
#define FLT_MAX_EXP +128
|
||||||
|
#define FLT_MAX 3.40282347E+38F
|
||||||
|
#define FLT_MAX_10_EXP +38
|
||||||
|
|
||||||
|
#define DBL_MANT_DIG 53
|
||||||
|
#define DBL_EPSILON 2.2204460492503131E-16
|
||||||
|
#define DBL_DIG 15
|
||||||
|
#define DBL_MIN_EXP -1021
|
||||||
|
#define DBL_MIN 2.225073858507201E-308
|
||||||
|
#define DBL_MIN_10_EXP -307
|
||||||
|
#define DBL_MAX_EXP +1024
|
||||||
|
#define DBL_MAX 1.797693134862316E+308
|
||||||
|
#define DBL_MAX_10_EXP +308
|
||||||
|
|
||||||
|
#define LDBL_MANT_DIG 53
|
||||||
|
#define LDBL_EPSILON 2.2204460492503131E-16
|
||||||
|
#define LDBL_DIG 15
|
||||||
|
#define LDBL_MIN_EXP -1021
|
||||||
|
#define LDBL_MIN 2.225073858507201E-308
|
||||||
|
#define LDBL_MIN_10_EXP -307
|
||||||
|
#define LDBL_MAX_EXP +1024
|
||||||
|
#define LDBL_MAX 1.797693134862316E+308
|
||||||
|
#define LDBL_MAX_10_EXP +308
|
||||||
|
#else
|
||||||
|
#define FLT_ROUNDS -1
|
||||||
|
#define FLT_RADIX 2
|
||||||
|
#define FLT_MANT_DIG 24
|
||||||
|
#define FLT_EPSILON 1.19209290E-07F
|
||||||
|
#define FLT_DIG 6
|
||||||
|
#define FLT_MIN_EXP -125
|
||||||
|
#define FLT_MIN 1.17549435E-38F
|
||||||
|
#define FLT_MIN_10_EXP -37
|
||||||
|
#define FLT_MAX_EXP +128
|
||||||
|
#define FLT_MAX 3.40282347E+38F
|
||||||
|
#define FLT_MAX_10_EXP +38
|
||||||
|
|
||||||
|
#define DBL_MANT_DIG 53
|
||||||
|
#define DBL_EPSILON 2.2204460492503131E-16
|
||||||
|
#define DBL_DIG 15
|
||||||
|
#define DBL_MIN_EXP -1021
|
||||||
|
#define DBL_MIN 2.225073858507201E-308
|
||||||
|
#define DBL_MIN_10_EXP -307
|
||||||
|
#define DBL_MAX_EXP +1024
|
||||||
|
#define DBL_MAX 1.797693134862316E+308
|
||||||
|
#define DBL_MAX_10_EXP +308
|
||||||
|
|
||||||
|
#define LDBL_MANT_DIG 53
|
||||||
|
#define LDBL_EPSILON 2.2204460492503131E-16
|
||||||
|
#define LDBL_DIG 15
|
||||||
|
#define LDBL_MIN_EXP -1021
|
||||||
|
#define LDBL_MIN 2.225073858507201E-308
|
||||||
|
#define LDBL_MIN_10_EXP -307
|
||||||
|
#define LDBL_MAX_EXP +1024
|
||||||
|
#define LDBL_MAX 1.797693134862316E+308
|
||||||
|
#define LDBL_MAX_10_EXP +308
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
30
Manx Aztec C86 v52a/INCLUDE/GRAPHICS.H
Normal file
30
Manx Aztec C86 v52a/INCLUDE/GRAPHICS.H
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/* Copyright 1992 Manx Software Systems, Inc. All rights reserved */
|
||||||
|
|
||||||
|
#ifndef __GRAPHICS_H
|
||||||
|
#define __GRAPHICS_H
|
||||||
|
|
||||||
|
#define BLACK 0
|
||||||
|
#define BLUE 1
|
||||||
|
#define GREEN 2
|
||||||
|
#define CYAN 3
|
||||||
|
#define RED 4
|
||||||
|
#define MAGENTA 5
|
||||||
|
#define YELLOW 6
|
||||||
|
#define WHITE 7
|
||||||
|
|
||||||
|
#define BLINK 1
|
||||||
|
#define NO_BLINK 0
|
||||||
|
#define HIGH 1
|
||||||
|
#define LOW 0
|
||||||
|
|
||||||
|
void circle(int _x, int _y, int _r);
|
||||||
|
void color(int _clr);
|
||||||
|
void ground(int _color);
|
||||||
|
void line(int _x1, int _y1, int _x2, int _y2);
|
||||||
|
void lineto(int _x2, int _y2);
|
||||||
|
void mode(int _newmode);
|
||||||
|
void palette(int _val);
|
||||||
|
void point(int _x, int _y);
|
||||||
|
void set_asp(int _x_asp, int _y_asp);
|
||||||
|
|
||||||
|
#endif /* __GRAPHICS_H */
|
82
Manx Aztec C86 v52a/INCLUDE/IO.H
Normal file
82
Manx Aztec C86 v52a/INCLUDE/IO.H
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
/* Copyright (C) 1982 by Manx Software Systems */
|
||||||
|
/*
|
||||||
|
* if MAXCHAN is changed then the initialization of chantab in croot.c
|
||||||
|
* should be adjusted so that it initializes EXACTLY MAXCHAN elements of
|
||||||
|
* the array. If this is not done, the I/O library may exhibit
|
||||||
|
* strange behavior.
|
||||||
|
*/
|
||||||
|
#define MAXCHAN 11 /* maximum number of I/O channels */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* argument to device routines.
|
||||||
|
* this is a typedef to allow future redeclaration to guarantee
|
||||||
|
* enough space to store either a pointer or an integer.
|
||||||
|
*/
|
||||||
|
typedef char *_arg;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* device control structure
|
||||||
|
*/
|
||||||
|
struct device {
|
||||||
|
char d_read;
|
||||||
|
char d_write;
|
||||||
|
char d_ioctl; /* used by character special devices (eg CON:) */
|
||||||
|
char d_seek; /* used by random I/O devices (eg: a file) */
|
||||||
|
int (*d_open)(); /* for special open handling */
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* device table, contains names and pointers to device entries
|
||||||
|
*/
|
||||||
|
struct devtabl {
|
||||||
|
char *d_name;
|
||||||
|
struct device *d_dev;
|
||||||
|
_arg d_arg;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* channel table: relates fd's to devices
|
||||||
|
*/
|
||||||
|
struct channel {
|
||||||
|
char c_read;
|
||||||
|
char c_write;
|
||||||
|
char c_ioctl;
|
||||||
|
char c_seek;
|
||||||
|
int (*c_close)();
|
||||||
|
_arg c_arg;
|
||||||
|
} ;
|
||||||
|
extern struct channel chantab[MAXCHAN];
|
||||||
|
|
||||||
|
struct fcb {
|
||||||
|
char f_driv;
|
||||||
|
char f_name[8];
|
||||||
|
char f_type[3];
|
||||||
|
char f_ext;
|
||||||
|
char f_resv[2];
|
||||||
|
char f_rc;
|
||||||
|
char f_sydx[16];
|
||||||
|
char f_cr;
|
||||||
|
unsigned f_record; char f_overfl;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct fcbtab {
|
||||||
|
struct fcb fcb;
|
||||||
|
char offset;
|
||||||
|
char flags;
|
||||||
|
char user;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define OPNFIL 15
|
||||||
|
#define CLSFIL 16
|
||||||
|
#define DELFIL 19
|
||||||
|
#define READSQ 20
|
||||||
|
#define WRITSQ 21
|
||||||
|
#define MAKFIL 22
|
||||||
|
#define SETDMA 26
|
||||||
|
#define GETUSR 32
|
||||||
|
#define READRN 33
|
||||||
|
#define WRITRN 34
|
||||||
|
#define FILSIZ 35
|
||||||
|
#define SETREC 36
|
||||||
|
|
||||||
|
#define Wrkbuf ((char *)0x80)
|
24
Manx Aztec C86 v52a/INCLUDE/LIMITS.H
Normal file
24
Manx Aztec C86 v52a/INCLUDE/LIMITS.H
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
/* Copyright Manx Software Systems, Inc. 1990. All rights reserved */
|
||||||
|
|
||||||
|
#ifndef __LIMITS_H
|
||||||
|
#define __LIMITS_H
|
||||||
|
|
||||||
|
#define CHAR_BIT 8
|
||||||
|
#define SCHAR_MIN -127
|
||||||
|
#define SCHAR_MAX 127
|
||||||
|
#define UCHAR_MAX 255U
|
||||||
|
#define CHAR_MIN SCHAR_MIN
|
||||||
|
#define CHAR_MAX SCHAR_MAX
|
||||||
|
#define MB_LEN_MAX 1
|
||||||
|
#define SHRT_MIN -32767
|
||||||
|
#define SHRT_MAX +32767
|
||||||
|
#define USHRT_MAX 65535U
|
||||||
|
#define LONG_MIN -2147483647
|
||||||
|
#define LONG_MAX +2147483647
|
||||||
|
#define ULONG_MAX 4294967295U
|
||||||
|
#define INT_MIN -32767
|
||||||
|
#define INT_MAX +32767
|
||||||
|
#define UINT_MAX 65535U
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
210
Manx Aztec C86 v52a/INCLUDE/LMACROS.H
Normal file
210
Manx Aztec C86 v52a/INCLUDE/LMACROS.H
Normal file
@ -0,0 +1,210 @@
|
|||||||
|
nlist
|
||||||
|
; Copyright (C) 1985 by Manx Software Systems, Inc.
|
||||||
|
; :ts=8
|
||||||
|
ifndef MODEL
|
||||||
|
MODEL equ 0
|
||||||
|
endif
|
||||||
|
if MODEL and 1
|
||||||
|
largecode
|
||||||
|
FARPROC equ 1
|
||||||
|
FPTRSIZE equ 4
|
||||||
|
else
|
||||||
|
FPTRSIZE equ 2
|
||||||
|
endif
|
||||||
|
if MODEL and 2
|
||||||
|
LONGPTR equ 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
;this macro to be used on returning
|
||||||
|
;restores bp and registers
|
||||||
|
pret macro
|
||||||
|
if havbp
|
||||||
|
pop bp
|
||||||
|
endif
|
||||||
|
ret
|
||||||
|
endm
|
||||||
|
|
||||||
|
internal macro pname
|
||||||
|
public pname
|
||||||
|
pname proc
|
||||||
|
endm
|
||||||
|
|
||||||
|
intrdef macro pname
|
||||||
|
public pname
|
||||||
|
ifdef FARPROC
|
||||||
|
pname label far
|
||||||
|
else
|
||||||
|
pname label near
|
||||||
|
endif
|
||||||
|
endm
|
||||||
|
|
||||||
|
procdef macro pname, args
|
||||||
|
public pname&_
|
||||||
|
ifdef FARPROC
|
||||||
|
_arg = 6
|
||||||
|
pname&_ proc far
|
||||||
|
else
|
||||||
|
_arg = 4
|
||||||
|
pname&_ proc near
|
||||||
|
endif
|
||||||
|
ifnb <args>
|
||||||
|
push bp
|
||||||
|
mov bp,sp
|
||||||
|
havbp = 1
|
||||||
|
decll <args>
|
||||||
|
else
|
||||||
|
havbp = 0
|
||||||
|
endif
|
||||||
|
endm
|
||||||
|
|
||||||
|
entrdef macro pname, args
|
||||||
|
public pname&_
|
||||||
|
ifdef FARPROC
|
||||||
|
_arg = 6
|
||||||
|
pname&_:
|
||||||
|
else
|
||||||
|
_arg = 4
|
||||||
|
pname&_:
|
||||||
|
endif
|
||||||
|
ifnb <args>
|
||||||
|
if havbp
|
||||||
|
push bp
|
||||||
|
mov bp,sp
|
||||||
|
else
|
||||||
|
error must declare main proc with args, if entry has args
|
||||||
|
endif
|
||||||
|
decll <args>
|
||||||
|
endif
|
||||||
|
endm
|
||||||
|
|
||||||
|
;this macro equates 'aname' to arg on stack
|
||||||
|
decl macro aname, type
|
||||||
|
;;'byte' or anything else
|
||||||
|
havtyp = 0
|
||||||
|
ifidn <type>,<byte>
|
||||||
|
aname equ byte ptr _arg[bp]
|
||||||
|
_arg = _arg + 2
|
||||||
|
havtyp = 1
|
||||||
|
endif
|
||||||
|
ifidn <type>,<dword>
|
||||||
|
aname equ dword ptr _arg[bp]
|
||||||
|
_arg = _arg + 4
|
||||||
|
havtyp = 1
|
||||||
|
endif
|
||||||
|
ifidn <type>,<cdouble>
|
||||||
|
aname equ qword ptr _arg[bp]
|
||||||
|
_arg = _arg + 8
|
||||||
|
havtyp = 1
|
||||||
|
endif
|
||||||
|
ifidn <type>, <ptr>
|
||||||
|
ifdef LONGPTR
|
||||||
|
aname equ dword ptr _arg[bp]
|
||||||
|
_arg = _arg + 4
|
||||||
|
else
|
||||||
|
aname equ word ptr _arg[bp]
|
||||||
|
_arg = _arg + 2
|
||||||
|
endif
|
||||||
|
havtyp = 1
|
||||||
|
endif
|
||||||
|
ifidn <type>, <fptr>
|
||||||
|
ifdef FARPROC
|
||||||
|
aname equ dword ptr _arg[bp]
|
||||||
|
_arg = _arg + 4
|
||||||
|
else
|
||||||
|
aname equ word ptr _arg[bp]
|
||||||
|
_arg = _arg + 2
|
||||||
|
endif
|
||||||
|
havtyp = 1
|
||||||
|
endif
|
||||||
|
ifidn <type>, <word>
|
||||||
|
aname equ word ptr _arg[bp]
|
||||||
|
_arg = _arg + 2
|
||||||
|
havtyp = 1
|
||||||
|
endif
|
||||||
|
ife havtyp
|
||||||
|
error -- type is unknown.
|
||||||
|
endif
|
||||||
|
endm
|
||||||
|
|
||||||
|
;this macro loads an arg pointer into DEST, with optional SEGment
|
||||||
|
ldptr macro dest, argname, seg
|
||||||
|
ifdef LONGPTR
|
||||||
|
ifnb <seg> ;;get segment if specified
|
||||||
|
ifidn <seg>,<es>
|
||||||
|
les dest,argname
|
||||||
|
else
|
||||||
|
ifidn <seg>,<ds>
|
||||||
|
lds dest,argname
|
||||||
|
else
|
||||||
|
mov dest, word ptr argname
|
||||||
|
mov seg, word ptr argname[2]
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
ifidn <dest>,<si> ;;si gets seg in ds
|
||||||
|
lds si, argname
|
||||||
|
else
|
||||||
|
ifidn <dest>,<di> ;;or, es:di
|
||||||
|
les di, argname
|
||||||
|
else
|
||||||
|
garbage error: no seg for long pointer
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
mov dest, word ptr argname ;;get the pointer
|
||||||
|
ENDIF
|
||||||
|
ENDM
|
||||||
|
|
||||||
|
decll macro list
|
||||||
|
IRP i,<list>
|
||||||
|
decl i
|
||||||
|
ENDM
|
||||||
|
ENDM
|
||||||
|
|
||||||
|
pend macro pname
|
||||||
|
pname&_ endp
|
||||||
|
endm
|
||||||
|
|
||||||
|
retptrm macro src,seg
|
||||||
|
mov ax, word ptr src
|
||||||
|
ifdef LONGPTR
|
||||||
|
mov dx, word ptr src+2
|
||||||
|
endif
|
||||||
|
endm
|
||||||
|
|
||||||
|
retptrr macro src,seg
|
||||||
|
mov ax,src
|
||||||
|
ifdef LONGPTR
|
||||||
|
ifnb <seg>
|
||||||
|
mov dx, seg
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endm
|
||||||
|
|
||||||
|
retnull macro
|
||||||
|
ifdef LONGPTR
|
||||||
|
sub dx,dx
|
||||||
|
endif
|
||||||
|
sub ax,ax
|
||||||
|
endm
|
||||||
|
|
||||||
|
pushds macro
|
||||||
|
ifdef LONGPTR
|
||||||
|
push ds
|
||||||
|
endif
|
||||||
|
endm
|
||||||
|
|
||||||
|
popds macro
|
||||||
|
ifdef LONGPTR
|
||||||
|
pop ds
|
||||||
|
endif
|
||||||
|
endm
|
||||||
|
|
||||||
|
finish macro
|
||||||
|
codeseg ends
|
||||||
|
endm
|
||||||
|
|
||||||
|
list
|
||||||
|
codeseg segment byte public 'code'
|
||||||
|
assume cs:codeseg
|
42
Manx Aztec C86 v52a/INCLUDE/LOCALE.H
Normal file
42
Manx Aztec C86 v52a/INCLUDE/LOCALE.H
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
/* Copyright Manx Software Systems, Inc. 1990. All rights reserved */
|
||||||
|
|
||||||
|
#ifndef __LOCALE_H
|
||||||
|
#define __LOCALE_H
|
||||||
|
|
||||||
|
#ifndef NULL
|
||||||
|
#define NULL ((void *)0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define LC_ALL 0
|
||||||
|
#define LC_COLLATE 1
|
||||||
|
#define LC_CTYPE 2
|
||||||
|
#define LC_MONETARY 3
|
||||||
|
#define LC_NUMERIC 4
|
||||||
|
#define LC_TIME 5
|
||||||
|
|
||||||
|
typedef struct lconv {
|
||||||
|
char *decimal_point; /* "." */
|
||||||
|
char *thousands_sep; /* "" */
|
||||||
|
char *grouping; /* "" */
|
||||||
|
char *int_curr_symbol; /* "" */
|
||||||
|
char *currency_symbol; /* "" */
|
||||||
|
char *mon_decimal_point; /* "" */
|
||||||
|
char *mon_thousands_sep; /* "" */
|
||||||
|
char *mon_grouping; /* "" */
|
||||||
|
char *positive_sign; /* "" */
|
||||||
|
char *negative_sign; /* "" */
|
||||||
|
char int_frac_digits; /* CHAR_MAX */
|
||||||
|
char frac_digits; /* CHAR_MAX */
|
||||||
|
char p_cs_precedes; /* CHAR_MAX */
|
||||||
|
char p_sep_by_space; /* CHAR_MAX */
|
||||||
|
char n_cs_precedes; /* CHAR_MAX */
|
||||||
|
char n_sep_by_space; /* CHAR_MAX */
|
||||||
|
char p_sign_posn; /* CHAR_MAX */
|
||||||
|
char n_sign_posn; /* CHAR_MAX */
|
||||||
|
} lconv;
|
||||||
|
|
||||||
|
char *setlocale(int _category, const char *_locale);
|
||||||
|
struct lconv *localeconv(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
49
Manx Aztec C86 v52a/INCLUDE/MATH.H
Normal file
49
Manx Aztec C86 v52a/INCLUDE/MATH.H
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
/* Copyright Manx Software Systems, Inc. 1990. All rights reserved */
|
||||||
|
|
||||||
|
#ifndef __MATH_H
|
||||||
|
#define __MATH_H
|
||||||
|
|
||||||
|
double atof(const char *);
|
||||||
|
double frexp(double, int *);
|
||||||
|
double ldexp(double, int);
|
||||||
|
double modf(double, double *);
|
||||||
|
double cotan(double);
|
||||||
|
double log10(double);
|
||||||
|
#if 0
|
||||||
|
#define pow(x,y) power(x,y)
|
||||||
|
#endif
|
||||||
|
double log(double);
|
||||||
|
double pow(double, double);
|
||||||
|
double sqrt(double);
|
||||||
|
double fabs(double);
|
||||||
|
double fmod(double, double);
|
||||||
|
double sin(double);
|
||||||
|
double cos(double);
|
||||||
|
double tan(double);
|
||||||
|
double exp(double);
|
||||||
|
double floor(double);
|
||||||
|
double ceil(double);
|
||||||
|
double sinh(double);
|
||||||
|
double cosh(double);
|
||||||
|
double tanh(double);
|
||||||
|
double asin(double);
|
||||||
|
double acos(double);
|
||||||
|
double atan(double);
|
||||||
|
double atan2(double, double);
|
||||||
|
|
||||||
|
#define HUGE_VAL 1.797693134862316E+308
|
||||||
|
#define HUGE HUGE_VAL
|
||||||
|
#define LOGHUGE (709.778)
|
||||||
|
#define TINY_VAL (2.2e-308)
|
||||||
|
#define TINY TINY_VAL
|
||||||
|
#define LOGTINY (-708.396)
|
||||||
|
|
||||||
|
#if !__STDC__ /* non ANSI C functions */
|
||||||
|
|
||||||
|
double ran(void);
|
||||||
|
double randl(double _x);
|
||||||
|
void sran(long _seed);
|
||||||
|
|
||||||
|
#endif /* !__STDC__ */
|
||||||
|
|
||||||
|
#endif
|
23
Manx Aztec C86 v52a/INCLUDE/MCH86.H
Normal file
23
Manx Aztec C86 v52a/INCLUDE/MCH86.H
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/* Copyright 1992 Manx Software Systems, Inc. All rights reserved */
|
||||||
|
|
||||||
|
#ifndef __MCH86_H
|
||||||
|
#define __MCH86_H
|
||||||
|
|
||||||
|
far void * abstoptr(long _addr);
|
||||||
|
int farcall(void (*_func)(void),
|
||||||
|
struct regs *_inregs, struct regs *_outregs);
|
||||||
|
int inportb(int _port);
|
||||||
|
int inportw(int _port);
|
||||||
|
void outportb(int _port, int _val);
|
||||||
|
void outportw(int _port, int _val);
|
||||||
|
far void * _ptradd(far void *_lptr, long _val);
|
||||||
|
long _ptrdiff(far void *_lptr1, far void *_lptr2);
|
||||||
|
void pokeb(far char *_addr, int);
|
||||||
|
void pokew(far int *_addr, int);
|
||||||
|
unsigned char peekb(far char *_addr);
|
||||||
|
unsigned int peekw(far int *_addr);
|
||||||
|
void segread(unsigned *_ptr);
|
||||||
|
int sysint(int _sint, struct regs *_inregs, struct regs *_outregs);
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCH86_H */
|
2
Manx Aztec C86 v52a/INCLUDE/MEMORY.H
Normal file
2
Manx Aztec C86 v52a/INCLUDE/MEMORY.H
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
extern char *memcpy(), *memchr(), *memccpy(), memset();
|
||||||
|
extern int memcmp();
|
7
Manx Aztec C86 v52a/INCLUDE/MODEL.H
Normal file
7
Manx Aztec C86 v52a/INCLUDE/MODEL.H
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#if (sizeof(int (*)()) == 4)
|
||||||
|
#define _LARGECODE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (sizeof(char *) == 4)
|
||||||
|
#define _LARGEDATA
|
||||||
|
#endif
|
8
Manx Aztec C86 v52a/INCLUDE/MONITOR.H
Normal file
8
Manx Aztec C86 v52a/INCLUDE/MONITOR.H
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
int _intr_sp(int _speed);
|
||||||
|
void monitor(
|
||||||
|
void (*_lowpc)(),
|
||||||
|
void (*_highpc)(),
|
||||||
|
unsigned int *_buf,
|
||||||
|
int _pockets,
|
||||||
|
int _nfunc
|
||||||
|
);
|
255
Manx Aztec C86 v52a/INCLUDE/OBJ86.H
Normal file
255
Manx Aztec C86 v52a/INCLUDE/OBJ86.H
Normal file
@ -0,0 +1,255 @@
|
|||||||
|
/* Copyright (C) 1990 by Manx Software Systems, Inc. - All rights reserved */
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
OBJ86.H - Aztec 8086 Object Format definitions.
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------
|
||||||
|
OBJECT RECORD TYPES
|
||||||
|
---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#define SPECIAL 0xf0 /* Mask for primary loader codes */
|
||||||
|
#define SPEC2 0x00 /* Value of above mask for debug items */
|
||||||
|
#define EXTEND 0x0f /* Shift-code for extended object records (2-bytes) */
|
||||||
|
|
||||||
|
/* PRIMARY LOADER ITEM SET */
|
||||||
|
|
||||||
|
#define THEEND 0x00 /* End of the object module */
|
||||||
|
|
||||||
|
/* Debugging information types */
|
||||||
|
|
||||||
|
#define BLOCKST 0x01 /* block start */
|
||||||
|
#define AUTOSYM 0x02 /* auto variable def */
|
||||||
|
#define ARGSYM 0x03 /* function argument def */
|
||||||
|
#define REGSYM 0x04 /* register variable def */
|
||||||
|
#define AREGSYM 0x05 /* register var argument */
|
||||||
|
#define STATSYM 0x06 /* static variable def */
|
||||||
|
#define FILESYM 0x07 /* file scope static var def */
|
||||||
|
#define GBLTYPE 0x08 /* global variable type info */
|
||||||
|
#define TDEFSYM 0x09 /* typedef name */
|
||||||
|
#define STRCTAG 0x0a /* structure tag definition */
|
||||||
|
#define STRCDEF 0x0b /* start of structure definition */
|
||||||
|
#define SETFILE 0x0c /* set working file name for line table */
|
||||||
|
#define SETLINE 0x0d /* set current line # */
|
||||||
|
|
||||||
|
/* 0x0f reserved for EXTEND shift-code */
|
||||||
|
|
||||||
|
/* 'Normal' loader items (may use lower nybble for data) */
|
||||||
|
|
||||||
|
#define ABSDATA 0x10 /* Raw data items */
|
||||||
|
#define EXPR 0x20 /* Expression to follow */
|
||||||
|
#define SMLINT 0x30 /* Small sized integer (generally part of an EXPR) */
|
||||||
|
#define SMLNEG 0x40 /* Small sized neg int (generally part of an EXPR) */
|
||||||
|
#define MEDINT 0x50 /* Medium sized integer (generally part of an EXPR) */
|
||||||
|
#define LCLSYM 0x60 /* Unnamed symbol reference (ex: $20000) */
|
||||||
|
#define GBLSYM 0x70 /* Named symbol reference */
|
||||||
|
#define SPACE 0x80 /* Blank space (dup (?) in assembly) */
|
||||||
|
#define USECOMN 0x90 /* Switch current segment */
|
||||||
|
#define CODEREF 0xa0 /* Code reference w/ small offset */
|
||||||
|
#define DATAREF 0xb0 /* Data reference w/ small offset */
|
||||||
|
#define BSSREF 0xc0 /* BSS reference w/ small offset */
|
||||||
|
#define SEGREL 0xd0 /* General segment relative reference */
|
||||||
|
|
||||||
|
/* 'Special' loader items (use lower nybble for type code) */
|
||||||
|
|
||||||
|
#define DATASEG 0xf0 /* para # of data segment */
|
||||||
|
#define BEXPR 0xf1 /* Fixup modifier - byte-sized absolute ref */
|
||||||
|
#define BREL 0xf2 /* Fixup modifier - byte-sized self-relative ref */
|
||||||
|
#define LRGINT 0xf3 /* Large-sized integer (generally part of an EXPR) */
|
||||||
|
#define USECODE 0xf4 /* Switch to code segment */
|
||||||
|
#define USEDATA 0xf5 /* Switch to data segment */
|
||||||
|
#define STARTAD 0xf6 /* Specify starting address of program */
|
||||||
|
#define LRGCODE 0xf7 /* Code reference w/ large offset */
|
||||||
|
#define LRGDATA 0xf8 /* Data reference w/ large offset */
|
||||||
|
#define INTJSR 0xf9 /* interpreter call instruction (unused on 8086) */
|
||||||
|
#define WREL 0xfa /* Fixup modifier - word-sized self-relative ref */
|
||||||
|
#define LRGBSS 0xfb /* BSS reference w/ large offset */
|
||||||
|
#define HUGINT 0xfc /* Really-large-sized int (generally part of an EXPR) */
|
||||||
|
#define LEXPR 0xfd /* Fixup modifier - 32-bit absolute reference */
|
||||||
|
#define CODESEG 0xfe /* para # of code segment */
|
||||||
|
#define NLINE 0xff /* Increment source code line counter by one */
|
||||||
|
|
||||||
|
/*
|
||||||
|
If no Fixup modifier is specified (BREL, BEXPR, etc.) then word-sized
|
||||||
|
absolute is assumed.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* EXTENDED LOADER ITEM SET */
|
||||||
|
|
||||||
|
/*
|
||||||
|
Extended loader item set (Selected by loader item EXTEND)
|
||||||
|
Codes 01->3f in the extended set are reserved as normal 1-byte IDs
|
||||||
|
Codes 40->f0 in the extended set are reserved as high-nybble IDs, with
|
||||||
|
the low nybble usable for data.
|
||||||
|
*/
|
||||||
|
#define ORIGIN 0x01 /* Set location to an abs off w/in current seg */
|
||||||
|
|
||||||
|
/* LOW-NYBBLE OBJECT RECORD INFORMATION */
|
||||||
|
|
||||||
|
/* within STRCDEF the following are used */
|
||||||
|
#define MEMBDEF 0x01 /* structure member info */
|
||||||
|
#define FLDDEF 0x02 /* bit field member */
|
||||||
|
|
||||||
|
/* low nibble of EXPR item (operators) */
|
||||||
|
#define ADD 1
|
||||||
|
#define SUB 2
|
||||||
|
#define MUL 3
|
||||||
|
#define DIV 4
|
||||||
|
#define MOD 5
|
||||||
|
#define AND 6
|
||||||
|
#define OR 7
|
||||||
|
#define XOR 8
|
||||||
|
#define RSH 9
|
||||||
|
#define LSH 10
|
||||||
|
#define NOT 11 /* must be the first unary op, and only unarys may follow */
|
||||||
|
#define NEG 12
|
||||||
|
#define OHIGH 13
|
||||||
|
#define OLOW 14
|
||||||
|
#define OSEG 15
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------
|
||||||
|
MODULE MAGIC NUMBERS
|
||||||
|
---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#define M_MAGIC 0x5466 /* Small code object module */
|
||||||
|
#define M_LMAGIC 0x020c /* Large code object module */
|
||||||
|
#define M_OVROOT ((short)0xcf56) /* Root symbol table (overlay) */
|
||||||
|
#define M_LIBRARY ((short)0xec62) /* Object code library */
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------
|
||||||
|
LIBRARY AND MODULE HEADER RECORDS
|
||||||
|
---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* Header record for an object module */
|
||||||
|
struct module {
|
||||||
|
short m_magic; /* magic number for object files */
|
||||||
|
char m_name[8]; /* module name */
|
||||||
|
unsigned short m_code; /* size of code in this module */
|
||||||
|
unsigned short m_data; /* size of data in this module */
|
||||||
|
unsigned short m_static;/* size of static storage (bss) in this module */
|
||||||
|
unsigned short m_global;/* offset of start of global symbols */
|
||||||
|
short m_nglobal; /* # of global symbols */
|
||||||
|
unsigned short m_local; /* offset of start of local symbols */
|
||||||
|
short m_nlocal; /* # of local symbols */
|
||||||
|
unsigned short m_end; /* end of local symbols */
|
||||||
|
unsigned short m_next; /* offset of next module in this file */
|
||||||
|
unsigned short m_nfix; /* number of segment fixes required */
|
||||||
|
};
|
||||||
|
|
||||||
|
#define LBSIZE (2048-2*sizeof(short))
|
||||||
|
|
||||||
|
/* Header record for a library file */
|
||||||
|
struct newlib {
|
||||||
|
short nl_magic; /* magic number for library files */
|
||||||
|
unsigned short nl_next; /* location of next dictionary block */
|
||||||
|
char nl_dict[LBSIZE]; /* dictionary buffer */
|
||||||
|
/* the format of the dictionary is:
|
||||||
|
two bytes - (position of module defining symbol) / 128
|
||||||
|
nul terminated string - name of symbol
|
||||||
|
*/
|
||||||
|
};
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------
|
||||||
|
NAMED AND UNNAMED SYMBOL STRUCTURE
|
||||||
|
---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
struct symtab {
|
||||||
|
char s_type,s_flags;
|
||||||
|
unsigned short s_value;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
symbol table entry is followed by a segment or group # if the SF_HAVSEG
|
||||||
|
flag is set.
|
||||||
|
|
||||||
|
Global symbols are followed by a nul terminated string which is the
|
||||||
|
name of the symbol.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------
|
||||||
|
SYMBOL TYPES AND FLAGS
|
||||||
|
---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* S_TYPE FIELD VALUES FOR SYMBOLS/SEGMENTS */
|
||||||
|
#define S_ABS 1 /* Equ-type absolute symbols & abs segments */
|
||||||
|
#define S_CODE 2 /* Item in code segment */
|
||||||
|
#define S_DATA 3 /* Item in data segment */
|
||||||
|
#define S_COMN 4 /* common segment (obsolete) */
|
||||||
|
#define S_CMNREF 5 /* Item in a general segment */
|
||||||
|
|
||||||
|
#define S_ROOTSYM 6 /* used by DOS linker to tag root symbols */
|
||||||
|
#define S_ABSOLUTE 6 /* used by ROM linker to designate absolute syms */
|
||||||
|
|
||||||
|
#define S_EXPR 6 /* Used internally by assembler */
|
||||||
|
#define S_UND 7 /* Symbol is undefined or BSS */
|
||||||
|
#define S_WEAK 8 /* Currently unused */
|
||||||
|
#define S_BSS 9 /* Symbol is BSS */
|
||||||
|
#define S_GROUP 10 /* Group */
|
||||||
|
#define S_PSEG 11 /* public segment */
|
||||||
|
#define S_SSEG 12 /* stack segment */
|
||||||
|
#define S_MSEG 13 /* memory segment */
|
||||||
|
#define S_CSEG 14 /* common segment (new form) */
|
||||||
|
#define S_CLASS 15 /* segment class name */
|
||||||
|
|
||||||
|
#define ST_TYPE 0x0f /* Mask for type portion of a symbol */
|
||||||
|
|
||||||
|
/* S_TYPE FIELD MODIFIERS (SEGMENTS) */
|
||||||
|
|
||||||
|
#define ST_ALIGN 0x70 /* Mask for alignment type (for segments) */
|
||||||
|
|
||||||
|
#define ST_BYTE 0x00 /* alignment boundarys (byte) */
|
||||||
|
#define ST_WORD 0x10 /* even */
|
||||||
|
#define ST_PARA 0x20 /* 16-byte */
|
||||||
|
#define ST_PAGE 0x30 /* 256-byte */
|
||||||
|
#define ST_INPAGE 0x40 /* Must fit completely within 256 byte page */
|
||||||
|
#define ST_ABSSEG 0x70 /* segment @ absolute address */
|
||||||
|
#define ST_BIGSEG 0x80 /* set for 64k segment */
|
||||||
|
|
||||||
|
/* S_FLAGS FIELD VALUES (MIXED SEGMENT/NON-SEGMENT) */
|
||||||
|
|
||||||
|
#define SF_HAVEAT 0x01 /* Segment followed by par # (seg only) */
|
||||||
|
#define SF_HAVTYPE 0x01 /* symbol is followed by type info (sym only) */
|
||||||
|
|
||||||
|
#define SF_DATAREF 0x02 /* used for dataseg references */
|
||||||
|
#define SF_HAVCLAS 0x04 /* symbol is followed by class index */
|
||||||
|
#define SF_GLOBL 0x08 /* symbol is public/extern */
|
||||||
|
#define SF_HAVSEG 0x10 /* symbol is followed by segment/group # */
|
||||||
|
#define SF_OVSYM 0x20 /* overlay symbol */
|
||||||
|
#define S_FIXED 0x40
|
||||||
|
#define S_UNNAMED 0x80
|
||||||
|
|
||||||
|
/*
|
||||||
|
TYPICAL DATA DECLATAIONS
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
extern code:
|
||||||
|
Declaration: extern int func();
|
||||||
|
s_type: S_UND
|
||||||
|
s_flags: S_FIXED | SF_GLOBL
|
||||||
|
s_value: always 0
|
||||||
|
|
||||||
|
defined code:
|
||||||
|
Declaration: int func() { }
|
||||||
|
s_type: S_CODE
|
||||||
|
s_flags: S_FIXED | SF_GLOBL
|
||||||
|
s_value: offset from the base of the module's code segment
|
||||||
|
|
||||||
|
extern data:
|
||||||
|
Declaration: extern int an_int;
|
||||||
|
s_type: S_UND
|
||||||
|
s_flags: S_FIXED | SF_GLOBL
|
||||||
|
s_value: always 0
|
||||||
|
|
||||||
|
defined BSS data:
|
||||||
|
Declaration: int an_int;
|
||||||
|
s_type: S_DATA
|
||||||
|
s_flags: S_FIXED | SF_GLOBL | SF_DATAREF
|
||||||
|
s_value: size of the object
|
||||||
|
|
||||||
|
defined init data:
|
||||||
|
Declaration: int an_int = 5;
|
||||||
|
s_type: S_DATA
|
||||||
|
s_flags: S_FIXED | SF_GLOBL | SF_DATAREF
|
||||||
|
s_value: offset from the base of the module's data segment
|
||||||
|
|
||||||
|
*/
|
14
Manx Aztec C86 v52a/INCLUDE/SETJMP.H
Normal file
14
Manx Aztec C86 v52a/INCLUDE/SETJMP.H
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/* Copyright Manx Software Systems, Inc. 1990. All rights reserved */
|
||||||
|
|
||||||
|
#ifndef __SETJMP_H
|
||||||
|
#define __SETJMP_H
|
||||||
|
|
||||||
|
#define __JBUFSIZE (6*sizeof(char *))
|
||||||
|
|
||||||
|
typedef char jmp_buf[__JBUFSIZE];
|
||||||
|
|
||||||
|
int setjmp(jmp_buf _env);
|
||||||
|
void longjmp(jmp_buf _env, int _val);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
52
Manx Aztec C86 v52a/INCLUDE/SGTTY.H
Normal file
52
Manx Aztec C86 v52a/INCLUDE/SGTTY.H
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
/* Copyright Manx Software Systems, Inc. 1990. All rights reserved */
|
||||||
|
|
||||||
|
#ifndef __SGTTY_H
|
||||||
|
#define __SGTTY_H
|
||||||
|
|
||||||
|
#define TIOCGETP 0 /* read contents of tty control structure */
|
||||||
|
#define TIOCSETP 1 /* set contents of tty control structure */
|
||||||
|
#define TIOCSETN 1 /* ditto only don't wait for output to flush */
|
||||||
|
|
||||||
|
struct sgttyb {
|
||||||
|
char sg_erase; /* ignored */
|
||||||
|
char sg_kill; /* ignored */
|
||||||
|
short sg_flags; /* control flags */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* settings for flags */
|
||||||
|
#define _VALID 0x3a
|
||||||
|
#define RAW 0x20 /* no echo or mapping of input/output BDOS(6) */
|
||||||
|
#define CRMOD 0x10 /* map input CR to NL, output NL to CR LF */
|
||||||
|
#define ECHO 0x08 /* ignored unless CBREAK is set */
|
||||||
|
#define CBREAK 0x02 /* input using BDOS(1), unless echo off then */
|
||||||
|
/* same as RAW */
|
||||||
|
|
||||||
|
#if 0 /* Not yet implemented */
|
||||||
|
#define TIOCNTLC 3 /* check for control C */
|
||||||
|
#define TIOCGETC 4 /* get tchars structure */
|
||||||
|
#define TIOCSETC 5 /* set tchars structure */
|
||||||
|
#define TIOCFLUSH 6 /* flush input/typeahead queues */
|
||||||
|
|
||||||
|
/* settings for flags */
|
||||||
|
#define TABSIZ 0x000f /* size of tab if XTABS is set */
|
||||||
|
#define XTABS 0x0010 /* convert tabs to spaces on output */
|
||||||
|
#define CRMOD 0x0020 /* CR -> LF on input, LF -> CR/LF on output */
|
||||||
|
#define ECHO 0x0040 /* echo input to output */
|
||||||
|
#define ECHOE 0x0080 /* follow erase character by space, BS */
|
||||||
|
#define CBREAK 0x0100 /* don't wait for the whole line */
|
||||||
|
#define NODELAY 0x0200 /* return even if no characters */
|
||||||
|
#define RAW 0x0400 /* no input or output mapping at all */
|
||||||
|
#define CHKKEY 0x0800 /* check for keyboard characters during output */
|
||||||
|
#define ERASE 0x1000 /* erase character space before drawing */
|
||||||
|
|
||||||
|
struct tchars {
|
||||||
|
char t_intrc; /* interrupt - ^C (not [yet] implemented) */
|
||||||
|
char t_quitc; /* quit - ^\ (not [yet] implemented) */
|
||||||
|
/* char t_startc; /* start output (not supported) */
|
||||||
|
/* char t_stop; /* stop output (not supported) */
|
||||||
|
char t_eofc; /* end-of-file - ^D */
|
||||||
|
/* char t_brck; /* input delimiter (like nl) (not supported) */
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
25
Manx Aztec C86 v52a/INCLUDE/SIGNAL.H
Normal file
25
Manx Aztec C86 v52a/INCLUDE/SIGNAL.H
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/* Copyright Manx Software Systems, Inc. 1990. All rights reserved */
|
||||||
|
|
||||||
|
#ifndef __SIGNAL_H
|
||||||
|
#define __SIGNAL_H
|
||||||
|
|
||||||
|
typedef char sig_atomic_t;
|
||||||
|
|
||||||
|
#define SIGINT 1
|
||||||
|
#define SIGTERM 2
|
||||||
|
#define SIGABRT 3
|
||||||
|
#define SIGFPE 4
|
||||||
|
#define SIGILL 5
|
||||||
|
#define SIGSEGV 6
|
||||||
|
|
||||||
|
#define _NUMSIG 6
|
||||||
|
#define _FSTSIG 1
|
||||||
|
|
||||||
|
#define SIG_DFL ((void (*)(int))0)
|
||||||
|
#define SIG_IGN ((void (*)(int))1)
|
||||||
|
#define SIG_ERR ((void (*)(int))-1)
|
||||||
|
|
||||||
|
void (*signal(int _sig, void (*_func)(int)))(int);
|
||||||
|
int raise(int _sig);
|
||||||
|
|
||||||
|
#endif
|
36
Manx Aztec C86 v52a/INCLUDE/STAT.H
Normal file
36
Manx Aztec C86 v52a/INCLUDE/STAT.H
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/* Copyright Manx Software Systems, Inc. 1990. All rights reserved */
|
||||||
|
|
||||||
|
#ifndef __STAT_H
|
||||||
|
#define __STAT_H
|
||||||
|
struct stat {
|
||||||
|
char st_attr; /* file's attributes */
|
||||||
|
long st_mtime; /* date&time file was created or last modified */
|
||||||
|
long st_size; /* size of file, in bytes */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* settings of the st_attr field */
|
||||||
|
#define ST_RDONLY 0x01 /* read only file */
|
||||||
|
#define ST_HIDDEN 0x02 /* hidden file */
|
||||||
|
#define ST_SYSTEM 0x04 /* system file */
|
||||||
|
#define ST_VLABEL 0x08 /* volume label */
|
||||||
|
#define ST_DIRECT 0x10 /* file is a sub-directory */
|
||||||
|
#define ST_ARCHIV 0x20 /* set when file has been written and closed */
|
||||||
|
|
||||||
|
/* the format of the st_mtime field is:
|
||||||
|
< year > < month> < day > < hours > < minutes > < sec/2 >
|
||||||
|
3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
|
||||||
|
1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
|
||||||
|
|
||||||
|
where:
|
||||||
|
year is from 0-119 for 1980-2099
|
||||||
|
month is 1-12
|
||||||
|
day is 1-31
|
||||||
|
hours is 0-23
|
||||||
|
minutes is 0-59
|
||||||
|
sec/2 is 0-29
|
||||||
|
*/
|
||||||
|
|
||||||
|
int stat(char *_file, struct stat *_sp);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
11
Manx Aztec C86 v52a/INCLUDE/STDARG.H
Normal file
11
Manx Aztec C86 v52a/INCLUDE/STDARG.H
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
/* Copyright Manx Software Systems, Inc. 1990. All rights reserved */
|
||||||
|
|
||||||
|
#ifndef __STDARG_H
|
||||||
|
#define __STDARG_H
|
||||||
|
|
||||||
|
typedef char *va_list;
|
||||||
|
#define va_start(ap, parmN) ((ap) = (char *)(&parmN + 1))
|
||||||
|
#define va_arg(ap, type) ((ap) += sizeof(type), ((type *)(ap))[-1])
|
||||||
|
#define va_end(ap)
|
||||||
|
|
||||||
|
#endif
|
30
Manx Aztec C86 v52a/INCLUDE/STDDEF.H
Normal file
30
Manx Aztec C86 v52a/INCLUDE/STDDEF.H
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/* Copyright 1990 Manx Software Systems, Inc */
|
||||||
|
|
||||||
|
#ifndef __STDDEF_H
|
||||||
|
#define __STDDEF_H
|
||||||
|
|
||||||
|
#ifndef _SIZE_T
|
||||||
|
#define _SIZE_T
|
||||||
|
typedef unsigned int size_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _PTRDIFF_T
|
||||||
|
#define _PTRDIFF_T
|
||||||
|
typedef int ptrdiff_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _WCHAR_T
|
||||||
|
#define _WCHAR_T
|
||||||
|
typedef char wchar_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef NULL
|
||||||
|
#define NULL ((void *)0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern int errno;
|
||||||
|
|
||||||
|
#define offsetof(type,memb) ((size_t)((unsigned long)&((type *)0)->memb))
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
133
Manx Aztec C86 v52a/INCLUDE/STDIO.H
Normal file
133
Manx Aztec C86 v52a/INCLUDE/STDIO.H
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
/* Copyright 1989 Manx Software Systems, Inc. All rights reserved */
|
||||||
|
|
||||||
|
#ifndef __STDIO_H
|
||||||
|
#define __STDIO_H
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#ifndef _SIZE_T
|
||||||
|
#define _SIZE_T
|
||||||
|
typedef unsigned int size_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef NULL
|
||||||
|
#define NULL ((void *)0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BUFSIZ 1024
|
||||||
|
|
||||||
|
#define EOF (-1)
|
||||||
|
|
||||||
|
#define L_tmpnam 40
|
||||||
|
#define FOPEN_MAX 20 /* must agree with MAXCHAN in fcntl.h */
|
||||||
|
#define FILENAME_MAX 126
|
||||||
|
#define TMP_MAX 25
|
||||||
|
|
||||||
|
#define SEEK_SET 0 /* from beginning of file */
|
||||||
|
#define SEEK_CUR 1 /* from current position */
|
||||||
|
#define SEEK_END 2 /* from end of file */
|
||||||
|
|
||||||
|
#define stdin (&_iob[0])
|
||||||
|
#define stdout (&_iob[1])
|
||||||
|
#define stderr (&_iob[2])
|
||||||
|
|
||||||
|
typedef long int fpos_t;
|
||||||
|
|
||||||
|
typedef struct __stdio {
|
||||||
|
unsigned char *_bp; /* current position in buffer */
|
||||||
|
unsigned char *_bend; /* last character in buffer + 1 */
|
||||||
|
unsigned char *_buff; /* address of buffer */
|
||||||
|
unsigned short _flags; /* open mode, etc. */
|
||||||
|
char _unit; /* fd returned by open */
|
||||||
|
unsigned char _bytbuf; /* single byte buffer for unbuffered streams */
|
||||||
|
size_t _buflen; /* length of buffer */
|
||||||
|
unsigned short _tmpnum; /* name of file for temporaries */
|
||||||
|
} FILE;
|
||||||
|
extern FILE _iob[];
|
||||||
|
|
||||||
|
#define _IOMYBUF 0x0001 /* malloced buffer */
|
||||||
|
#define _IOEOF 0x0002 /* end-of-file encountered */
|
||||||
|
#define _IOERR 0x0004 /* error occurred */
|
||||||
|
#define _IOSTRNG 0x0008 /* special string stream */
|
||||||
|
#define _IOBIN 0x0010 /* file is binary ("b") */
|
||||||
|
#define _IOLBF 0x0020 /* line buffered */
|
||||||
|
#define _IOFBF 0x0040 /* fully buffered */
|
||||||
|
#define _IONBF 0x0080 /* completely unbuffered */
|
||||||
|
#define _IOCON 0x0100 /* console device */
|
||||||
|
#define _IOR 0x0200 /* stream opened in read mode */
|
||||||
|
#define _IOW 0x0400 /* stream opened in write mode */
|
||||||
|
#define _IORW 0x0800 /* stream opened in update mode */
|
||||||
|
#define _IOUNG 0x1000 /* ungetc was called */
|
||||||
|
#define _IOSYNC 0x2000 /* MPW compatibility */
|
||||||
|
#define _IODIRTY 0x4000 /* buffer has been written */
|
||||||
|
|
||||||
|
int remove(const char *_filename);
|
||||||
|
int rename(const char *_old, const char *_new);
|
||||||
|
FILE *tmpfile(void);
|
||||||
|
char *tmpnam(char *_s);
|
||||||
|
int fclose(FILE *_stream);
|
||||||
|
int fflush(FILE *_stream);
|
||||||
|
FILE *fopen(const char *_filename, const char *_mode);
|
||||||
|
FILE *freopen(const char *_filename, const char *_mode, FILE *_stream);
|
||||||
|
void setbuf(FILE *_stream, char *_buf);
|
||||||
|
int setvbuf(FILE *_stream, char *_buf, int _mode, size_t _size);
|
||||||
|
int fprintf(FILE *_stream, const char *_format, ...);
|
||||||
|
int fscanf(FILE *_stream, const char *_format, ...);
|
||||||
|
int printf(const char *_format, ...);
|
||||||
|
int scanf(const char *_format, ...);
|
||||||
|
int sprintf(char *_s, const char *_format, ...);
|
||||||
|
int sscanf(const char *_s, const char *_format, ...);
|
||||||
|
int vfprintf(FILE *_stream, const char *_format, va_list _arg);
|
||||||
|
int vprintf(const char *_format, va_list _arg);
|
||||||
|
int vsprintf(char *_s, const char *_format, va_list _arg);
|
||||||
|
int fgetc(FILE *_stream);
|
||||||
|
char *fgets(char *_s, int _n, FILE *_stream);
|
||||||
|
int fputc(int _c, FILE *_stream);
|
||||||
|
int fputs(const char *_s, FILE *_stream);
|
||||||
|
int getc(FILE *_stream);
|
||||||
|
int getchar(void);
|
||||||
|
char *gets(char *_s);
|
||||||
|
int putc(int _c, FILE *_stream);
|
||||||
|
int putchar(int _c);
|
||||||
|
int puts(const char *_s);
|
||||||
|
int ungetc(int _c, FILE *_stream);
|
||||||
|
size_t fread(void *_ptr, size_t _size, size_t _nmemb, FILE *_stream);
|
||||||
|
size_t fwrite(const void *_ptr, size_t _size, size_t _nmemb, FILE *_stream);
|
||||||
|
int fgetpos(FILE *_stream, fpos_t *_pos);
|
||||||
|
int fseek(FILE *_stream, long int _offset, int _whence);
|
||||||
|
int fsetpos(FILE *_stream, const fpos_t *_pos);
|
||||||
|
long int ftell(FILE *_stream);
|
||||||
|
void rewind(FILE *_stream);
|
||||||
|
void clearerr(FILE *_stream);
|
||||||
|
int feof(FILE *_stream);
|
||||||
|
int ferror(FILE *_stream);
|
||||||
|
void perror(const char *_s);
|
||||||
|
|
||||||
|
#ifdef __C_MACROS__
|
||||||
|
#define getc(fp) (((fp)->_flags & (_IOBIN|_IOSTRNG)) ? _getc(fp) : _agetc(fp))
|
||||||
|
#define putc(c,fp) (((fp)->_flags & (_IOBIN|_IOSTRNG)) ? _putc(c,fp) : _aputc(c,fp))
|
||||||
|
#define getchar() getc(stdin)
|
||||||
|
#define putchar(c) putc((c), stdout)
|
||||||
|
#define clearerr(fp) ((void)((fp)->_flags &= ~(_IOERR|_IOEOF)))
|
||||||
|
#define feof(fp) ((fp)->_flags&_IOEOF)
|
||||||
|
#define ferror(fp) ((fp)->_flags&_IOERR)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int _flsbuf(FILE *, int);
|
||||||
|
int _filbuf(FILE *);
|
||||||
|
|
||||||
|
#if !__STDC__ /* non ANSI C user-visible stuff */
|
||||||
|
|
||||||
|
FILE * fdopen(int, const char *);
|
||||||
|
#define fileno(fp) ((int)(fp)->_unit)
|
||||||
|
#define puterr(c) (putc((c),stderr))
|
||||||
|
|
||||||
|
int format(int (*_func)(int), const char *_fmt, va_list _varargs);
|
||||||
|
|
||||||
|
int putw(int _w, FILE *_stream);
|
||||||
|
int getw(FILE *_stream);
|
||||||
|
|
||||||
|
#endif /* !__STDC__ */
|
||||||
|
|
||||||
|
#endif /* _STDIO_H */
|
||||||
|
|
93
Manx Aztec C86 v52a/INCLUDE/STDLIB.H
Normal file
93
Manx Aztec C86 v52a/INCLUDE/STDLIB.H
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
/* Copyright 1989 Manx Software Systems, Inc. All rights reserved */
|
||||||
|
|
||||||
|
#ifndef __STDLIB_H
|
||||||
|
#define __STDLIB_H
|
||||||
|
|
||||||
|
# ifndef _SIZE_T
|
||||||
|
# define _SIZE_T
|
||||||
|
typedef unsigned int size_t;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#ifndef _WCHAR_T
|
||||||
|
#define _WCHAR_T
|
||||||
|
typedef char wchar_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
# ifndef ERANGE
|
||||||
|
#define ERANGE 21 /* Was 13 */
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#ifndef NULL
|
||||||
|
#define NULL ((void *)0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define EXIT_FAILURE (-1)
|
||||||
|
#define EXIT_SUCCESS 0
|
||||||
|
|
||||||
|
#define HUGE_VAL 1.797693134862316E+308
|
||||||
|
|
||||||
|
#define RAND_MAX 32767
|
||||||
|
|
||||||
|
#define MB_CUR_MAX 1
|
||||||
|
#define MB_LEN_MAX 1
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int quot;
|
||||||
|
int rem;
|
||||||
|
} div_t; /* quotient and remainder for div() */
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
long quot;
|
||||||
|
long rem;
|
||||||
|
} ldiv_t; /* quotient and remainder for ldiv() */
|
||||||
|
|
||||||
|
double atof(const char *_nptr);
|
||||||
|
int atoi(const char *_nptr);
|
||||||
|
long int atol(const char *_nptr);
|
||||||
|
double strtod(const char *_nptr, char **_endptr);
|
||||||
|
long int strtol(const char *_nptr, char **_endptr, int _base);
|
||||||
|
unsigned long int strtoul(const char *_nptr, char **_endptr, int _base);
|
||||||
|
|
||||||
|
int rand(void);
|
||||||
|
void srand(unsigned int _seed);
|
||||||
|
|
||||||
|
void *calloc(size_t _nmemb, size_t _size);
|
||||||
|
void free(void *_ptr);
|
||||||
|
void *malloc(size_t _size);
|
||||||
|
void *realloc(void *_ptr, size_t _size);
|
||||||
|
|
||||||
|
void abort(void);
|
||||||
|
int atexit(void (*_func)(void));
|
||||||
|
void exit(int _status);
|
||||||
|
char *getenv(const char *_name);
|
||||||
|
int system(const char *_string);
|
||||||
|
|
||||||
|
void *bsearch(const void *_key, const void *_base, size_t _nmemb, size_t _size,
|
||||||
|
int (*_compar)(const void *, const void *));
|
||||||
|
void qsort(void *_base, size_t _nmemb, size_t _size,
|
||||||
|
int (*_compar)(const void *, const void *));
|
||||||
|
|
||||||
|
int abs(int _j);
|
||||||
|
div_t div(int _numer, int _denom);
|
||||||
|
long int labs(long int _j);
|
||||||
|
ldiv_t ldiv(long int _numer, long int _denom);
|
||||||
|
|
||||||
|
int mblen(const char *_s, size_t _n);
|
||||||
|
int mbtowc(wchar_t *_pwc, const char *_s, size_t _n);
|
||||||
|
int wctomb(char *_s, wchar_t _wchar);
|
||||||
|
size_t mbstowcs(wchar_t *_pwcs, const char *_s, size_t _n);
|
||||||
|
size_t wcstombs(char *_s, const wchar_t *_pwcs, size_t _n);
|
||||||
|
|
||||||
|
#if !__STDC__
|
||||||
|
/* non ANSI C functions */
|
||||||
|
void ftoa(double _val, char *_buf, int, int);
|
||||||
|
void *lfind(const void *_key, const void *_base,
|
||||||
|
size_t *_num, size_t _width, int (*_fcmp)(const void *, const void *));
|
||||||
|
void *lsearch(const void *_key, const void *_base,
|
||||||
|
size_t *_num , size_t _width, int (*_fcmp)(const void *, const void *));
|
||||||
|
int max(int _x1, int _x2);
|
||||||
|
int min(int _x1, int _x2);
|
||||||
|
long double strtold(const char *_nptr, char **_endptr);
|
||||||
|
#endif /* !__STDC__ */
|
||||||
|
|
||||||
|
#endif /* _STDLIB_H */
|
57
Manx Aztec C86 v52a/INCLUDE/STRING.H
Normal file
57
Manx Aztec C86 v52a/INCLUDE/STRING.H
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
/* Copyright 1989 Manx Software Systems, Inc. All rights reserved */
|
||||||
|
|
||||||
|
#ifndef __STRING_H
|
||||||
|
#define __STRING_H
|
||||||
|
|
||||||
|
#ifndef _SIZE_T
|
||||||
|
#define _SIZE_T
|
||||||
|
typedef unsigned int size_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef NULL
|
||||||
|
#define NULL ((void *)0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void *memcpy(void *_dst, const void *_src, size_t _n);
|
||||||
|
void *memmove(void *_dst,const void *_src, size_t _n);
|
||||||
|
char *strcpy(char *_dst, const char *_src);
|
||||||
|
char *strncpy(char *_dst, const char *_src, size_t _n);
|
||||||
|
char *strcat(char *_dst, const char *_src);
|
||||||
|
char *strncat(char *_dst, const char *_src, size_t _n);
|
||||||
|
|
||||||
|
void *memchr(const void *_s, int _c, size_t _n);
|
||||||
|
void *memset(void *_s, int _c, size_t _n);
|
||||||
|
int memcmp(const void *_s1, const void *_s2, size_t _n);
|
||||||
|
int strcmp(const char *_s1, const char *_s2);
|
||||||
|
int strncmp(const char *_s1, const char *_s2, size_t _n);
|
||||||
|
char *strpbrk(const char *_s1, const char *_s2);
|
||||||
|
char *strchr(const char *_s, int _c);
|
||||||
|
char *strrchr(const char *_s, int _c);
|
||||||
|
char *strstr(const char *_s1, const char *_s2);
|
||||||
|
char *strtok(char *_s1, const char *_s2);
|
||||||
|
char *strerror(int _errnum);
|
||||||
|
size_t strcspn(const char *_s1, const char *_s2);
|
||||||
|
size_t strlen(const char *_s);
|
||||||
|
size_t strspn(const char *_s1, const char *_s2);
|
||||||
|
int strcoll(const char *_s1, const char *_s2);
|
||||||
|
size_t strxfrm(char *_s1, const char *_s2, size_t _n);
|
||||||
|
|
||||||
|
#if !__STDC__ /* non ANSI C functions */
|
||||||
|
|
||||||
|
void *memccpy(void *_dst, const void *_src, int _c, size_t _n);
|
||||||
|
void movblock(far char *_src, far char *_dest, int _len);
|
||||||
|
void movmem(const void *_src, void *_dest, int _len);
|
||||||
|
char *index(char *_s, int _c);
|
||||||
|
char *rindex(char *_s, int _c);
|
||||||
|
void setmem(void *_area, int _len, int _val);
|
||||||
|
void swapmem(void *_s1, void *_s2, size_t _n);
|
||||||
|
char *strdup(char *_s);
|
||||||
|
int stricmp(const char *_str1, const char *_str2);
|
||||||
|
char *strlwr(char *_str);
|
||||||
|
int strnicmp(const char *_str1, const char *_str2, int _max);
|
||||||
|
char *strrev(char *_str);
|
||||||
|
|
||||||
|
#endif /* !__STDC__ */
|
||||||
|
|
||||||
|
#endif /* _STRING_H */
|
||||||
|
|
58
Manx Aztec C86 v52a/INCLUDE/TIME.H
Normal file
58
Manx Aztec C86 v52a/INCLUDE/TIME.H
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
/* Copyright 1990 Manx Software Systems, Inc */
|
||||||
|
|
||||||
|
#ifndef __TIME_H
|
||||||
|
#define __TIME_H
|
||||||
|
|
||||||
|
#ifndef __STDDEF_H
|
||||||
|
#include <stddef.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define CLOCKS_PER_SEC 100 /* clock() ticks per second */
|
||||||
|
|
||||||
|
typedef unsigned long clock_t;
|
||||||
|
typedef unsigned long time_t;
|
||||||
|
|
||||||
|
struct tm {
|
||||||
|
int tm_sec; /* seconds after the minute [0,60] */
|
||||||
|
int tm_min; /* minutes after the hour [0,59] */
|
||||||
|
int tm_hour; /* hours since midnight [0,23] */
|
||||||
|
int tm_mday; /* day of the month [1,31] */
|
||||||
|
int tm_mon; /* months since jan [0,11] */
|
||||||
|
int tm_year; /* years since 1900 */
|
||||||
|
int tm_wday; /* days since sunday [0,6] */
|
||||||
|
int tm_yday; /* days since jan 1 [0,365] */
|
||||||
|
int tm_isdst; /* pos if DST in effect; 0 if not; neg if can't tell */
|
||||||
|
int tm_hsec; /* hundreths of second; not in ANSI C */
|
||||||
|
};
|
||||||
|
|
||||||
|
clock_t clock(void);
|
||||||
|
double difftime(time_t _time1, time_t _time2);
|
||||||
|
time_t mktime(struct tm *_timeptr);
|
||||||
|
time_t time(time_t *_timer);
|
||||||
|
char *asctime(const struct tm *_timeptr);
|
||||||
|
char *ctime(const time_t *_timer);
|
||||||
|
struct tm *gmtime(const time_t *_timer);
|
||||||
|
struct tm *localtime(const time_t *_timer);
|
||||||
|
size_t strftime(char *_s, size_t _maxsize, const char *_format,
|
||||||
|
const struct tm *_timeptr);
|
||||||
|
|
||||||
|
#if !__STDC__
|
||||||
|
|
||||||
|
struct ft {
|
||||||
|
unsigned sec : 5,
|
||||||
|
min : 6,
|
||||||
|
hour : 5,
|
||||||
|
day : 5,
|
||||||
|
month : 4,
|
||||||
|
year : 7;
|
||||||
|
};
|
||||||
|
|
||||||
|
void dostime(struct tm *_buf);
|
||||||
|
struct tm * TimeFile2TM(struct ft *);
|
||||||
|
struct ft * TimeTM2File(struct tm *);
|
||||||
|
int utime(char *_name, struct utimebuf *_timeptr);
|
||||||
|
|
||||||
|
#endif /* !__STDC__ */
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
15
Manx Aztec C86 v52a/LIB/86SUP/BRKC.ASM
Normal file
15
Manx Aztec C86 v52a/LIB/86SUP/BRKC.ASM
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
; :ts=8
|
||||||
|
;Copyright (C) 1983 by Manx Software Systems
|
||||||
|
include lmacros.h
|
||||||
|
|
||||||
|
ifdef FARPROC
|
||||||
|
extrn _brk_:far
|
||||||
|
else
|
||||||
|
extrn _brk_:near
|
||||||
|
endif
|
||||||
|
|
||||||
|
procdef brk
|
||||||
|
jmp _brk_
|
||||||
|
pend brk
|
||||||
|
finish
|
||||||
|
end
|
52
Manx Aztec C86 v52a/LIB/86SUP/CLSWIT.ASM
Normal file
52
Manx Aztec C86 v52a/LIB/86SUP/CLSWIT.ASM
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
; Copyright (C) 1983, 85 by Manx Software Systems
|
||||||
|
; :ts=8
|
||||||
|
include lmacros.h
|
||||||
|
public $clswt
|
||||||
|
|
||||||
|
$clswt proc
|
||||||
|
pop bx ; get address of table
|
||||||
|
ifdef FARPROC
|
||||||
|
pop es
|
||||||
|
endif
|
||||||
|
push di
|
||||||
|
push si
|
||||||
|
mov si,bx ; save base address
|
||||||
|
dec cx
|
||||||
|
mov di,cx ; save number of entries in di
|
||||||
|
ltop:
|
||||||
|
ifdef FARPROC
|
||||||
|
cmp ax,es:word ptr [bx]
|
||||||
|
jne notit
|
||||||
|
cmp dx,es:word ptr 2[bx]
|
||||||
|
je found
|
||||||
|
else
|
||||||
|
cmp ax,cs:word ptr [bx]
|
||||||
|
jne notit
|
||||||
|
cmp dx,cs:word ptr 2[bx]
|
||||||
|
je found
|
||||||
|
endif
|
||||||
|
notit:
|
||||||
|
add bx,4
|
||||||
|
loop ltop
|
||||||
|
found:
|
||||||
|
shl di,1
|
||||||
|
shl di,1 ; adjust di for length of values
|
||||||
|
add di,si ; di now points at array of labels
|
||||||
|
sub bx,si ; find which entry matched
|
||||||
|
shr bx,1 ; divide by 2 to get offset to label
|
||||||
|
ifdef FARPROC
|
||||||
|
mov ax,es:word ptr [di][bx] ; get address to return to
|
||||||
|
pop si
|
||||||
|
pop di
|
||||||
|
push es
|
||||||
|
push ax
|
||||||
|
ret
|
||||||
|
else
|
||||||
|
mov ax,cs:word ptr [di][bx] ; get address to return to
|
||||||
|
pop si
|
||||||
|
pop di
|
||||||
|
jmp ax
|
||||||
|
endif
|
||||||
|
$clswt endp
|
||||||
|
finish
|
||||||
|
end
|
256
Manx Aztec C86 v52a/LIB/86SUP/CROOT.ASM
Normal file
256
Manx Aztec C86 v52a/LIB/86SUP/CROOT.ASM
Normal file
@ -0,0 +1,256 @@
|
|||||||
|
codeseg segment para public 'code'
|
||||||
|
dataseg segment para public 'data'
|
||||||
|
dataseg ends
|
||||||
|
assume cs:codeseg,ds:dataseg,es:dataseg,ss:dataseg
|
||||||
|
;/* Copyright (C) 1981,1982, 1983 by Manx Software Systems */
|
||||||
|
;#include "errno.h"
|
||||||
|
;#include "fcntl.h"
|
||||||
|
;
|
||||||
|
;static char **Argv;
|
||||||
|
;static int Argc;
|
||||||
|
;
|
||||||
|
;extern int _ioflg[];
|
||||||
|
;
|
||||||
|
;_Croot(cp, first)
|
||||||
|
;register char *cp;
|
||||||
|
# 10 'croot.c'
|
||||||
|
^| $3
|
||||||
|
public _Croot_
|
||||||
|
_Croot_ proc near
|
||||||
|
ifdef $20004
|
||||||
|
push bp
|
||||||
|
mov bp,sp
|
||||||
|
endif
|
||||||
|
ifdef $20001
|
||||||
|
add sp,$20001
|
||||||
|
endif
|
||||||
|
ifdef $20002
|
||||||
|
push di
|
||||||
|
endif
|
||||||
|
ifdef $20003
|
||||||
|
push si
|
||||||
|
endif
|
||||||
|
;{
|
||||||
|
mov si,4[bp]
|
||||||
|
; register char **cpp;
|
||||||
|
; char *_sbrk();
|
||||||
|
;#ifdef REDIR
|
||||||
|
;
|
||||||
|
; /* start the timer */
|
||||||
|
;
|
||||||
|
; (void)_clock(0);
|
||||||
|
~ cpp di "**c"
|
||||||
|
~ cp si "*c"
|
||||||
|
~~ first 6 "i"
|
||||||
|
^^^^^^^^^^^ mov ax,00H
|
||||||
|
push ax
|
||||||
|
call near ptr _clock_
|
||||||
|
pop cx
|
||||||
|
;
|
||||||
|
; _ioflg[0] = _ioflg[1] = _ioflg[2] = O_TEXT;
|
||||||
|
^^ mov ax,01000H
|
||||||
|
mov word ptr _ioflg_+4,01000H
|
||||||
|
mov word ptr _ioflg_+2,ax
|
||||||
|
mov word ptr _ioflg_,ax
|
||||||
|
; _ioflg[0] |= _isatty(0) ? O_ISTTY:0; /* set flag for i/o routines */
|
||||||
|
^ mov ax,00H
|
||||||
|
push ax
|
||||||
|
call near ptr _isatty_
|
||||||
|
pop cx
|
||||||
|
test ax,ax
|
||||||
|
beq $20005
|
||||||
|
mov ax,08000H
|
||||||
|
jmp $20006
|
||||||
|
$20005:
|
||||||
|
mov ax,00H
|
||||||
|
$20006:
|
||||||
|
or ax, word ptr _ioflg_
|
||||||
|
mov word ptr _ioflg_,ax
|
||||||
|
; _ioflg[1] |= _isatty(1) ? O_ISTTY:0; /* set flag for i/o routines */
|
||||||
|
^ mov ax,01H
|
||||||
|
push ax
|
||||||
|
call near ptr _isatty_
|
||||||
|
pop cx
|
||||||
|
test ax,ax
|
||||||
|
beq $20007
|
||||||
|
mov ax,08000H
|
||||||
|
jmp $20008
|
||||||
|
$20007:
|
||||||
|
mov ax,00H
|
||||||
|
$20008:
|
||||||
|
or ax, word ptr _ioflg_+2
|
||||||
|
mov word ptr _ioflg_+2,ax
|
||||||
|
; _ioflg[2] |= _isatty(2) ? O_ISTTY:0; /* set flag for i/o routines */
|
||||||
|
^ mov ax,02H
|
||||||
|
push ax
|
||||||
|
call near ptr _isatty_
|
||||||
|
pop cx
|
||||||
|
test ax,ax
|
||||||
|
beq $20009
|
||||||
|
mov ax,08000H
|
||||||
|
jmp $20010
|
||||||
|
$20009:
|
||||||
|
mov ax,00H
|
||||||
|
$20010:
|
||||||
|
or ax, word ptr _ioflg_+4
|
||||||
|
mov word ptr _ioflg_+4,ax
|
||||||
|
;
|
||||||
|
; Argv = (char **)_sbrk((first+1)*sizeof(char *));
|
||||||
|
^^ mov ax,word ptr 6[bp]
|
||||||
|
shl ax,1
|
||||||
|
inc ax
|
||||||
|
inc ax
|
||||||
|
push ax
|
||||||
|
call near ptr _sbrk_
|
||||||
|
pop cx
|
||||||
|
mov word ptr Argv_,ax
|
||||||
|
; Argv[0] = "";
|
||||||
|
^ mov ax, offset $20000+0
|
||||||
|
mov bx, word ptr Argv_
|
||||||
|
mov word ptr [bx], offset $20000+0
|
||||||
|
; cpp = &Argv[Argc = first];
|
||||||
|
^ mov ax,word ptr 6[bp]
|
||||||
|
mov word ptr Argc_,ax
|
||||||
|
shl ax,1
|
||||||
|
mov di, word ptr Argv_
|
||||||
|
add di,ax
|
||||||
|
|
||||||
|
; for (;;) {
|
||||||
|
^$6:
|
||||||
|
; while (*cp == ' ' || *cp == '\t')
|
||||||
|
^$7:
|
||||||
|
cmp byte ptr [si],020H
|
||||||
|
beq $20011
|
||||||
|
cmp byte ptr [si],09H
|
||||||
|
bne $8
|
||||||
|
$20011:
|
||||||
|
; ++cp;
|
||||||
|
^ inc si
|
||||||
|
jmp $7
|
||||||
|
$8:
|
||||||
|
; if (*cp == 0)
|
||||||
|
^; break;
|
||||||
|
cmp byte ptr [si],0
|
||||||
|
beq $5
|
||||||
|
;#ifdef REDIR
|
||||||
|
; {
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
^^^^^; *cpp++ = cp;
|
||||||
|
^ mov word ptr [di],si
|
||||||
|
inc di
|
||||||
|
inc di
|
||||||
|
; Argc++;
|
||||||
|
^ inc word ptr Argc_
|
||||||
|
; if (_sbrk(sizeof(char *)) == (char *)-1) {
|
||||||
|
^ mov ax,02H
|
||||||
|
push ax
|
||||||
|
call near ptr _sbrk_
|
||||||
|
pop cx
|
||||||
|
cmp ax,0ffffH
|
||||||
|
bne $9
|
||||||
|
; _write(2, "Too many args.", 14);
|
||||||
|
^ mov ax,0eH
|
||||||
|
push ax
|
||||||
|
mov ax, offset $20000+1
|
||||||
|
push ax
|
||||||
|
mov ax,02H
|
||||||
|
push ax
|
||||||
|
call near ptr _write_
|
||||||
|
add sp,6
|
||||||
|
; _exit(200);
|
||||||
|
^ mov ax,0c8H
|
||||||
|
push ax
|
||||||
|
call near ptr _exit_
|
||||||
|
pop cx
|
||||||
|
; }
|
||||||
|
^; while (*++cp)
|
||||||
|
$9:
|
||||||
|
^$10:
|
||||||
|
inc si
|
||||||
|
cmp byte ptr [si],0
|
||||||
|
beq $11
|
||||||
|
; if (*cp == ' ' || *cp == '\t') {
|
||||||
|
^ mov al,byte ptr [si]
|
||||||
|
cmp al,020H
|
||||||
|
beq $20012
|
||||||
|
cmp al,09H
|
||||||
|
bne $12
|
||||||
|
$20012:
|
||||||
|
; *cp++ = 0;
|
||||||
|
^ mov byte ptr [si],00H
|
||||||
|
inc si
|
||||||
|
; break;
|
||||||
|
^ jmp $11
|
||||||
|
; }
|
||||||
|
^; }
|
||||||
|
$12:
|
||||||
|
jmp $10
|
||||||
|
$11:
|
||||||
|
^; }
|
||||||
|
^$4:
|
||||||
|
jmp $6
|
||||||
|
$5:
|
||||||
|
; *cpp = 0;
|
||||||
|
^ mov word ptr [di],00H
|
||||||
|
; main(Argc,Argv);
|
||||||
|
^ push word ptr Argv_
|
||||||
|
push word ptr Argc_
|
||||||
|
call near ptr main_
|
||||||
|
add sp,4
|
||||||
|
; exit(0);
|
||||||
|
^ mov ax,00H
|
||||||
|
push ax
|
||||||
|
call near ptr exit_
|
||||||
|
pop cx
|
||||||
|
;}
|
||||||
|
^$20013:
|
||||||
|
ifdef $20003
|
||||||
|
pop si
|
||||||
|
endif
|
||||||
|
ifdef $20002
|
||||||
|
pop di
|
||||||
|
endif
|
||||||
|
ifdef $20004
|
||||||
|
mov sp,bp
|
||||||
|
pop bp
|
||||||
|
endif
|
||||||
|
ret
|
||||||
|
$20004 equ 1
|
||||||
|
$20003 equ 1
|
||||||
|
$20002 equ 1
|
||||||
|
_Croot_ endp
|
||||||
|
$3:
|
||||||
|
dataseg segment word public 'data'
|
||||||
|
$20000 db 0,84,111,111,32,109
|
||||||
|
db 97,110,121,32,97,114
|
||||||
|
db 103,115,46,0
|
||||||
|
dataseg ends
|
||||||
|
;
|
||||||
|
;#ifdef REDIR
|
||||||
|
|
|
||||||
|
~ size_t "L"
|
||||||
|
~ _exit_ . "(v"
|
||||||
|
bss Argv_:word,2
|
||||||
|
~ Argv Argv_ "**c"
|
||||||
|
bss Argc_:word,2
|
||||||
|
~ Argc Argc_ "i"
|
||||||
|
~ _ioflg_ . "[0i"
|
||||||
|
~ _Croot_ . "(i"
|
||||||
|
~ _sbrk_ . "(*c"
|
||||||
|
~ _clock_ . "(i"
|
||||||
|
~ _isatty_ . "(i"
|
||||||
|
~ _write_ . "(i"
|
||||||
|
~ main_ . "(i"
|
||||||
|
~ exit_ . "(i"
|
||||||
|
extrn exit_:near
|
||||||
|
extrn main_:near
|
||||||
|
extrn _exit_:near
|
||||||
|
extrn _write_:near
|
||||||
|
extrn _sbrk_:near
|
||||||
|
extrn _isatty_:near
|
||||||
|
extrn _clock_:near
|
||||||
|
codeseg ends
|
||||||
|
dataseg segment word public 'data'
|
||||||
|
extrn _ioflg_:word
|
||||||
|
dataseg ends
|
||||||
|
end
|
106
Manx Aztec C86 v52a/LIB/86SUP/CROOT.C
Normal file
106
Manx Aztec C86 v52a/LIB/86SUP/CROOT.C
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
/* Copyright (C) 1981,1982, 1983 by Manx Software Systems */
|
||||||
|
#include "errno.h"
|
||||||
|
#include "fcntl.h"
|
||||||
|
|
||||||
|
static char **Argv;
|
||||||
|
static int Argc;
|
||||||
|
|
||||||
|
extern int _ioflg[];
|
||||||
|
|
||||||
|
_Croot(cp, first)
|
||||||
|
register char *cp;
|
||||||
|
{
|
||||||
|
register char **cpp;
|
||||||
|
char *_sbrk();
|
||||||
|
#ifdef REDIR
|
||||||
|
register int k;
|
||||||
|
register char *fname;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* start the timer */
|
||||||
|
|
||||||
|
(void)_clock(0);
|
||||||
|
|
||||||
|
_ioflg[0] = _ioflg[1] = _ioflg[2] = O_TEXT;
|
||||||
|
_ioflg[0] |= _isatty(0) ? O_ISTTY:0; /* set flag for i/o routines */
|
||||||
|
_ioflg[1] |= _isatty(1) ? O_ISTTY:0; /* set flag for i/o routines */
|
||||||
|
_ioflg[2] |= _isatty(2) ? O_ISTTY:0; /* set flag for i/o routines */
|
||||||
|
|
||||||
|
Argv = (char **)_sbrk((first+1)*sizeof(char *));
|
||||||
|
Argv[0] = "";
|
||||||
|
cpp = &Argv[Argc = first];
|
||||||
|
for (;;) {
|
||||||
|
while (*cp == ' ' || *cp == '\t')
|
||||||
|
++cp;
|
||||||
|
if (*cp == 0)
|
||||||
|
break;
|
||||||
|
#ifdef REDIR
|
||||||
|
if (*cp == '>') { /* redirect output */
|
||||||
|
k = 1;
|
||||||
|
goto redirect;
|
||||||
|
} else if (*cp == '<') { /* redirect input */
|
||||||
|
k = 0;
|
||||||
|
redirect:
|
||||||
|
while (*++cp == ' ' || *cp == '\t')
|
||||||
|
;
|
||||||
|
fname = cp;
|
||||||
|
while (*++cp)
|
||||||
|
if (*cp == ' ' || *cp == '\t') {
|
||||||
|
*cp++ = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
_close(k);
|
||||||
|
if (k)
|
||||||
|
k = _creat(fname, 0666);
|
||||||
|
else
|
||||||
|
k = _open(fname, O_RDONLY);
|
||||||
|
if (k == -1)
|
||||||
|
_redir_err(fname);
|
||||||
|
} else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
Argc++;
|
||||||
|
if (_sbrk(sizeof(char *)) == (char *)-1) {
|
||||||
|
_write(2, "Too many args.", 14);
|
||||||
|
_exit(200);
|
||||||
|
}
|
||||||
|
if (*cp=='"'){
|
||||||
|
++cp;
|
||||||
|
while (*cp == ' ' || *cp == '\t')
|
||||||
|
++cp;
|
||||||
|
if (*cp == 0)
|
||||||
|
break;
|
||||||
|
*cpp++ = cp;
|
||||||
|
while (*++cp)
|
||||||
|
if (*cp == '"'){
|
||||||
|
*cp++ = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
*cpp++ = cp;
|
||||||
|
while (*++cp)
|
||||||
|
if (*cp == ' ' || *cp == '\t') {
|
||||||
|
*cp++ = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*cpp = 0;
|
||||||
|
main(Argc,Argv);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef REDIR
|
||||||
|
static _redir_err(name)
|
||||||
|
char *name;
|
||||||
|
{
|
||||||
|
char buff[200];
|
||||||
|
|
||||||
|
strcpy(buff, "Can't open file for redirection: ");
|
||||||
|
strcat(buff, name);
|
||||||
|
strcat(buff, "\n");
|
||||||
|
_write(2, buff, strlen(buff));
|
||||||
|
exit(10);
|
||||||
|
}
|
||||||
|
#endif
|
41
Manx Aztec C86 v52a/LIB/86SUP/CRT0.ASM
Normal file
41
Manx Aztec C86 v52a/LIB/86SUP/CRT0.ASM
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
; Copyright (C) 1983-1992 by Manx Software Systems
|
||||||
|
; :ts=8
|
||||||
|
; Note: This module must be assembled using Microsoft's MASM
|
||||||
|
; or Borland's TASM assembler, not the Manx as assembler.
|
||||||
|
PGROUP group @CODE,PROG
|
||||||
|
@CODE segment byte public 'CODE'
|
||||||
|
@CODE ends
|
||||||
|
PROG segment byte public 'CODE'
|
||||||
|
PROG ends
|
||||||
|
|
||||||
|
DGROUP group @DATAB,@DATAI,@DATAT,@DATAU,@DATAV,@STACK
|
||||||
|
|
||||||
|
@DATAB segment para public 'DATAB'
|
||||||
|
@DATAB ends
|
||||||
|
|
||||||
|
@DATAI segment word public 'DATAI'
|
||||||
|
db 'Aztec C86 version 5.2a',0
|
||||||
|
even
|
||||||
|
public __Dorg
|
||||||
|
__Dorg label byte
|
||||||
|
@DATAI ends
|
||||||
|
|
||||||
|
@DATAT segment word public 'DATAT'
|
||||||
|
public __Dend
|
||||||
|
__Dend label byte
|
||||||
|
public __Uorg
|
||||||
|
__Uorg label byte
|
||||||
|
@DATAT ends
|
||||||
|
|
||||||
|
@DATAU segment word public 'DATAU'
|
||||||
|
@DATAU ends
|
||||||
|
|
||||||
|
@DATAV segment word public 'DATAV'
|
||||||
|
public __Uend
|
||||||
|
__Uend label byte
|
||||||
|
@DATAV ends
|
||||||
|
|
||||||
|
@STACK segment para stack 'STACK'
|
||||||
|
First db 2048 dup (?)
|
||||||
|
@STACK ends
|
||||||
|
end
|
59
Manx Aztec C86 v52a/LIB/86SUP/CSAV.ASM
Normal file
59
Manx Aztec C86 v52a/LIB/86SUP/CSAV.ASM
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
; Copyright (C) 1983 by Manx Software Systems
|
||||||
|
; :ts=8
|
||||||
|
include lmacros.h
|
||||||
|
dataseg segment para public 'data'
|
||||||
|
extrn _sbot_:word
|
||||||
|
extrn _lowwater_:word
|
||||||
|
dataseg ends
|
||||||
|
assume ds:dataseg,cs:codeseg
|
||||||
|
ifdef FARPROC
|
||||||
|
extrn _stkover_:far
|
||||||
|
else
|
||||||
|
extrn _stkover_:near
|
||||||
|
endif
|
||||||
|
extrn $begin:far
|
||||||
|
dw near ptr $begin
|
||||||
|
public $csav, $cret
|
||||||
|
$csav proc
|
||||||
|
pop bx
|
||||||
|
ifdef FARPROC
|
||||||
|
pop dx
|
||||||
|
endif
|
||||||
|
push bp
|
||||||
|
mov bp,sp
|
||||||
|
add sp,ax
|
||||||
|
cmp sp,bp ;check for wrap around
|
||||||
|
ja stackfault
|
||||||
|
cmp sp,word ptr _sbot_ ;or moving into the RED zone
|
||||||
|
jb stackfault
|
||||||
|
cmp sp,word ptr _lowwater_
|
||||||
|
ja nodeeper
|
||||||
|
mov word ptr _lowwater_,sp
|
||||||
|
nodeeper:
|
||||||
|
push di
|
||||||
|
push si
|
||||||
|
ifdef FARPROC
|
||||||
|
push cs
|
||||||
|
mov ax,offset $cret
|
||||||
|
push ax
|
||||||
|
push dx
|
||||||
|
push bx
|
||||||
|
ret
|
||||||
|
else
|
||||||
|
call bx
|
||||||
|
endif
|
||||||
|
$csav endp
|
||||||
|
|
||||||
|
$cret proc
|
||||||
|
pop si
|
||||||
|
pop di
|
||||||
|
mov sp,bp
|
||||||
|
pop bp
|
||||||
|
ret
|
||||||
|
$cret endp
|
||||||
|
|
||||||
|
stackfault:
|
||||||
|
mov sp,bp ;put stack back the way it was
|
||||||
|
jmp _stkover_
|
||||||
|
finish
|
||||||
|
end
|
29
Manx Aztec C86 v52a/LIB/86SUP/CSWIT.ASM
Normal file
29
Manx Aztec C86 v52a/LIB/86SUP/CSWIT.ASM
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
; Copyright (C) 1983, 85 by Manx Software Systems
|
||||||
|
; :ts=8
|
||||||
|
include lmacros.h
|
||||||
|
public $cswt
|
||||||
|
|
||||||
|
$cswt proc
|
||||||
|
ifndef FARPROC
|
||||||
|
pop bx ; get address of table
|
||||||
|
push di
|
||||||
|
ifndef LONGPTR
|
||||||
|
push es
|
||||||
|
endif
|
||||||
|
mov di,cs
|
||||||
|
mov es,di
|
||||||
|
mov di,bx ; make di to point to table of values
|
||||||
|
mov bx,cx ; save number of entries in bx
|
||||||
|
shl bx,1 ; adjusted for size of an entry
|
||||||
|
cld
|
||||||
|
repne scasw ; find the right entry
|
||||||
|
mov cx,es:word ptr -4[di][bx] ; pick up target address
|
||||||
|
ifndef LONGPTR
|
||||||
|
pop es
|
||||||
|
endif
|
||||||
|
pop di
|
||||||
|
jmp cx ; jump there
|
||||||
|
endif
|
||||||
|
$cswt endp
|
||||||
|
finish
|
||||||
|
end
|
51
Manx Aztec C86 v52a/LIB/86SUP/CSWT.ASM
Normal file
51
Manx Aztec C86 v52a/LIB/86SUP/CSWT.ASM
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
; Copyright (C) 1983, 85 by Manx Software Systems
|
||||||
|
; :ts=8
|
||||||
|
include lmacros.h
|
||||||
|
ifdef FARPROC
|
||||||
|
data equ word ptr es:[bx]
|
||||||
|
addr equ word ptr es:2[bx]
|
||||||
|
dflt equ word ptr es:[bx]
|
||||||
|
else
|
||||||
|
data equ word ptr cs:[bx]
|
||||||
|
addr equ word ptr cs:2[bx]
|
||||||
|
dflt equ word ptr cs:[bx]
|
||||||
|
endif
|
||||||
|
slot equ 4
|
||||||
|
public $swt
|
||||||
|
|
||||||
|
$swt proc
|
||||||
|
pop bx
|
||||||
|
ifdef FARPROC
|
||||||
|
ifndef LONGPTR
|
||||||
|
mov dx,es
|
||||||
|
endif
|
||||||
|
pop es
|
||||||
|
push es
|
||||||
|
endif
|
||||||
|
mov cx,data
|
||||||
|
add bx,2
|
||||||
|
jcxz eswt
|
||||||
|
swtloop:
|
||||||
|
cmp ax,data
|
||||||
|
je found
|
||||||
|
add bx,slot
|
||||||
|
loop swtloop
|
||||||
|
eswt:
|
||||||
|
push dflt
|
||||||
|
ifdef FARPROC
|
||||||
|
ifndef LONGPTR
|
||||||
|
mov es,dx
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
ret
|
||||||
|
found:
|
||||||
|
push addr
|
||||||
|
ifdef FARPROC
|
||||||
|
ifndef LONGPTR
|
||||||
|
mov es,dx
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
ret
|
||||||
|
$swt endp
|
||||||
|
finish
|
||||||
|
end
|
46
Manx Aztec C86 v52a/LIB/86SUP/DOSCLOCK.ASM
Normal file
46
Manx Aztec C86 v52a/LIB/86SUP/DOSCLOCK.ASM
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
; Copyright (C) 1985, 1986 by Manx Software Systems, Inc.
|
||||||
|
; :ts=8
|
||||||
|
include lmacros.h
|
||||||
|
dataseg segment word public 'data'
|
||||||
|
public __lastclock_
|
||||||
|
__lastclock_ dw 0,0
|
||||||
|
dataseg ends
|
||||||
|
assume ds:dataseg
|
||||||
|
|
||||||
|
procdef _clock,<<kind,word>> ; long _clock(kind)
|
||||||
|
mov ah,2ch
|
||||||
|
int 21h ; get time
|
||||||
|
mov al,100
|
||||||
|
mul dh ;get seconds as hundredths into ax
|
||||||
|
sub dh,dh
|
||||||
|
add ax,dx ;add in hundredths
|
||||||
|
mov bx,ax ;save total hundredths
|
||||||
|
mov al,60
|
||||||
|
mul ch ; get hours as mins into ax
|
||||||
|
sub ch,ch
|
||||||
|
add ax,cx ; add minutes to converted hours
|
||||||
|
mov cx,6000
|
||||||
|
mul cx ; convert to hundredths of seconds
|
||||||
|
add ax,bx ; add in seconds+hundredths
|
||||||
|
adc dx,0 ; axdx now contains value in hunredths
|
||||||
|
cmp dx,word ptr __lastclock_+2
|
||||||
|
ja valok
|
||||||
|
jne clktrn
|
||||||
|
cmp ax,word ptr __lastclock_
|
||||||
|
jae valok
|
||||||
|
clktrn: ; clock turned over since last call
|
||||||
|
add ax,0d600h
|
||||||
|
adc dx,083h ; add in 24 hours
|
||||||
|
valok:
|
||||||
|
mov cx,kind
|
||||||
|
jne doret
|
||||||
|
mov word ptr __lastclock_+2,dx
|
||||||
|
mov word ptr __lastclock_,ax
|
||||||
|
pret
|
||||||
|
doret:
|
||||||
|
sub ax,__lastclock_
|
||||||
|
sbb dx,__lastclock_+2
|
||||||
|
pret
|
||||||
|
pend _clock
|
||||||
|
finish
|
||||||
|
end
|
45
Manx Aztec C86 v52a/LIB/86SUP/FARCALL.ASM
Normal file
45
Manx Aztec C86 v52a/LIB/86SUP/FARCALL.ASM
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
; :ts=8
|
||||||
|
;Copyright (C) 1983, 85 by Manx Software Systems
|
||||||
|
include lmacros.h
|
||||||
|
procdef farcall, <<where,dword>, <srcregs,ptr>, <dstregs,ptr>>
|
||||||
|
push si
|
||||||
|
push di
|
||||||
|
push ds
|
||||||
|
push es
|
||||||
|
;
|
||||||
|
ldptr bx,srcregs,ds
|
||||||
|
mov ax,[bx]
|
||||||
|
push 2[bx] ;save BX value for later
|
||||||
|
mov cx,4[bx]
|
||||||
|
mov dx,6[bx]
|
||||||
|
mov si,8[bx]
|
||||||
|
mov di,10[bx]
|
||||||
|
mov es,14[bx]
|
||||||
|
mov ds,12[bx] ;trash DS last
|
||||||
|
pop bx ;now get value for BX
|
||||||
|
push bp
|
||||||
|
call where
|
||||||
|
pop bp
|
||||||
|
push ds ;save returned DS
|
||||||
|
push bx ;save returned BX
|
||||||
|
mov ds,-6[bp] ;fetch C's data seg, for small model
|
||||||
|
ldptr bx,dstregs,ds
|
||||||
|
mov [bx],ax
|
||||||
|
pop 2[bx] ;value returned in BX
|
||||||
|
mov 4[bx],cx
|
||||||
|
mov 6[bx],dx
|
||||||
|
mov 8[bx],si
|
||||||
|
mov 10[bx],di
|
||||||
|
pop 12[bx] ;value returned in DS
|
||||||
|
mov 14[bx],es
|
||||||
|
pop es
|
||||||
|
pop ds
|
||||||
|
pop di
|
||||||
|
pop si
|
||||||
|
pop bp
|
||||||
|
pushf
|
||||||
|
pop ax
|
||||||
|
ret
|
||||||
|
pend farcall
|
||||||
|
finish
|
||||||
|
end
|
13
Manx Aztec C86 v52a/LIB/86SUP/FCALL.ASM
Normal file
13
Manx Aztec C86 v52a/LIB/86SUP/FCALL.ASM
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
; Copyright (C) 1985 by Manx Software Systems
|
||||||
|
; :ts=8
|
||||||
|
largecode
|
||||||
|
codeseg segment byte public 'code'
|
||||||
|
assume cs:codeseg
|
||||||
|
public $fcall
|
||||||
|
$fcall proc far
|
||||||
|
push dx
|
||||||
|
push ax
|
||||||
|
ret
|
||||||
|
$fcall endp
|
||||||
|
codeseg ends
|
||||||
|
end
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user