nickysn
46b82e3208
+ added the necessary changes for section based smartlinking to the msdos
...
startup code, behind ifdef __I8086_SMARTLINK_SECTIONS__
git-svn-id: trunk@39278 -
2018-06-22 15:42:19 +00:00
pierre
ba7586a5c8
Fix for FPU generated exception as interrupt 0x10, contributed by Max Nazhalov
...
git-svn-id: trunk@36813 -
2017-07-29 11:50:21 +00:00
pierre
963d109331
Add two word variables to store fpu control and status register in interrupt 0x10
...
git-svn-id: trunk@36653 -
2017-07-05 22:03:27 +00:00
pierre
8a7de4a4d3
Add calls to FPC_HANDLE_I8086_ERROR and add handlers for interrupt $10 and $75
...
git-svn-id: trunk@36271 -
2017-05-19 22:06:37 +00:00
nickysn
1264eaf8c6
* fixed "nil pointer assignment" error in huge memory model
...
git-svn-id: trunk@31502 -
2015-09-03 22:37:01 +00:00
nickysn
63f86ee6a5
+ huge memory model fixes in the i8086-msdos startup code
...
git-svn-id: trunk@31501 -
2015-09-03 22:08:53 +00:00
nickysn
4061628ffb
* the i8086-msdos default code segment (in near code memory models) renamed
...
'_TEXT'. This name is used in object modules, produced by Borland C and Open
Watcom.
git-svn-id: trunk@31482 -
2015-09-02 13:14:12 +00:00
nickysn
a3dd5c7c17
* set stack alignment to 16 in the msdos startup code
...
git-svn-id: trunk@31397 -
2015-08-24 19:58:08 +00:00
nickysn
5dc42404cf
* capitalize omf segment class names, as that's how other 16-bit compilers write them
...
git-svn-id: trunk@31371 -
2015-08-22 19:07:04 +00:00
nickysn
1643c5f073
* also capitalize 'DGROUP' in the msdos startup code as well after r31369
...
git-svn-id: trunk@31370 -
2015-08-22 18:56:36 +00:00
nickysn
536346a441
* use 'dw' instead of 'dd' to reference the stack, in order to prevent nasm from
...
generating a 32-bit fixup record
git-svn-id: trunk@31353 -
2015-08-20 21:51:23 +00:00
nickysn
3ee0fc22d9
* use 'dw' instead of 'dd' to reference the heap from the i8086-msdos startup
...
code, because 'dd' causes nasm to emit a 32-bit OMF relocation entry, which
we won't support (at least initially) in our internal linker
git-svn-id: trunk@31345 -
2015-08-19 14:33:56 +00:00
nickysn
5a1ce6162b
* set the bss, rodata and rodata_norel section alignment to 2 bytes for the i8086-msdos target
...
git-svn-id: trunk@30680 -
2015-04-20 01:27:26 +00:00
nickysn
8edfd33af8
* use RegisterTinyHeapBlock_Simple_Prealigned in the msdos rtl
...
git-svn-id: trunk@28652 -
2014-09-13 19:55:55 +00:00
nickysn
7958466ef9
* on i8086-msdos, in the compact and large memory models, set the end of heap to
...
be the end of the current program's MCB, instead of 16 bytes earlier
git-svn-id: trunk@28442 -
2014-08-18 13:54:20 +00:00
nickysn
a61c775d29
+ enabled the huge (>64kb) heap support in the compact and large memory models
...
git-svn-id: trunk@28349 -
2014-08-08 23:32:12 +00:00
nickysn
f7dd4f640a
- rm the 'Memory allocation error' and 'Not enough memory' error messages from
...
the compact and large model startup code, since they're not used (we rely on
the DOS loader to check for the available memory instead)
git-svn-id: trunk@28069 -
2014-06-25 23:16:55 +00:00
nickysn
ba5ececab9
* i8086 far data memory model fixes in the int 0 (div by zero) handler
...
git-svn-id: trunk@28062 -
2014-06-25 16:46:58 +00:00
nickysn
e7e02467fc
* fixed bug in MsDos and Intr in i8086 far data memory models not cleaning their
...
parameters from the stack properly (leaving an extra word on the stack)
git-svn-id: trunk@28059 -
2014-06-25 12:33:03 +00:00
nickysn
23b0cf2340
* msdos system unit variable dos_psp renamed PrefixSeg for TP7 compatibility
...
git-svn-id: trunk@28047 -
2014-06-24 10:58:59 +00:00
nickysn
1910177cf0
+ added heapmax support to the $M directive on i8086-msdos. It is currently
...
only implemented in the near data memory models. The far data models support
is still a TODO.
git-svn-id: trunk@28039 -
2014-06-23 20:17:17 +00:00
nickysn
95449a3fd4
* fixed yet another dos_psp<>dgroup bug in the startup code for .exe files in
...
the tiny memory model
git-svn-id: trunk@28033 -
2014-06-22 20:12:55 +00:00
nickysn
3164a10d9d
* fixed a bug in the startup code for tiny memory model, which caused the
...
program MCB address not to be calculated correctly, when the program is a tiny
model .exe file, leading to possible memory corruption. Previously, the code
assumed that dos_psp=CS, but that's only true for tiny .com files; tiny .exe
files have a 256-byte gap between dos_psp and CS.
git-svn-id: trunk@28032 -
2014-06-22 11:06:57 +00:00
nickysn
cd6b15f49a
* slight optimization to the small and medium model startup code
...
git-svn-id: trunk@28031 -
2014-06-22 09:42:30 +00:00
nickysn
1295b4abf7
- removed the call to CheckNullArea from the exit code for the tiny memory model
...
git-svn-id: trunk@28006 -
2014-06-19 21:47:46 +00:00
nickysn
7cfd7a66cd
+ create a special 'heap' segment with reserved space equal to heapsize (i.e.
...
the value set by -Ch or the second parameter to the $M directive). This is
equivalent to the heapmin value in Turbo Pascal 7 and ensures that the program
has at least this amount of heap space available (otherwise DOS will show a
'not enough memory' error and will refuse to load the program).
git-svn-id: trunk@28002 -
2014-06-19 14:14:01 +00:00
nickysn
2dc8839af5
* set class=data to all data segments/sections on i8086
...
git-svn-id: trunk@27957 -
2014-06-14 16:01:22 +00:00
nickysn
8ad63788c7
- do not emit a stack segment in the tiny memory model
...
- rm the reference to the top of the stack segment from the startup code in tiny
model
git-svn-id: trunk@27956 -
2014-06-14 15:56:44 +00:00
nickysn
73d7f2aa18
* let the compiler generate the stack segment in i8086 near data memory models
...
as well. Even though, in these models, the stack is dynamically allocated
(because it goes on top of the heap, but the heap is variable size), there are
still benefits:
1) the program will run on a larger stack during initialization, before the
actual stack (and heap) are ready
2) in cases, when the system is extremely low on memory, DOS will reject to
load the program if there's not enough memory for the stack the program
requires. This way the startup code can be further simplified by omitting
the 'not enough memory' check in the future (when we add the minimum heap
size to the executable reserved space as well).
git-svn-id: trunk@27903 -
2014-06-08 21:14:57 +00:00
nickysn
d4565aeec2
* in i8086 far data memory models add reference to the beginning of stack from
...
the startup code, so the object module, containing the stack segment doesn't
get smartlinked away
git-svn-id: trunk@27824 -
2014-05-29 14:57:48 +00:00
nickysn
3cc8ff11e3
+ generate the stack segment for i8086 far data memory models from within fpc
...
itself (instead of having a fixed 16k stack in the startup code). This allows
setting the stack size in these models with the -Cs option.
git-svn-id: trunk@27820 -
2014-05-27 23:29:50 +00:00
nickysn
e4d4dd9d81
* replaced tabs with spaces, fixes identation
...
git-svn-id: trunk@27419 -
2014-04-01 12:46:46 +00:00
nickysn
85c6ffa102
* setup a true far data memory layout in the compact and large models with
...
stack, heap and static data being all in different segments
git-svn-id: trunk@27418 -
2014-03-31 22:03:48 +00:00
nickysn
e4437bcd51
+ initialize the segment of __stktop, __stkbottom, __nearheap_start and
...
__nearheap_end in i8086 far data memory models.
+ 'Hello world!' now works in the i8086 compact and large memory models!
git-svn-id: trunk@27377 -
2014-03-30 15:32:44 +00:00
nickysn
4eeff66922
+ compact and large memory model support added to the MsDos and Intr procedures
...
git-svn-id: trunk@27354 -
2014-03-29 21:28:57 +00:00
nickysn
25be2bc720
* define macros identifying the code and data model in each of the memory models
...
git-svn-id: trunk@27263 -
2014-03-24 14:02:57 +00:00
nickysn
f4c463b6bd
* prt0stm.asm renamed prt0comn.asm, as it will probably be used as the common
...
startup code for all memory models and not just for small, tiny and medium
git-svn-id: trunk@27261 -
2014-03-24 13:23:36 +00:00