nickysn
a8f466c400
* updated the CSeg, DSeg and SSeg rtl functions on i8086 to use the new x86
...
intrinsics for reading the segment registers
git-svn-id: trunk@39434 -
2018-07-11 14:34:05 +00:00
nickysn
9272bf59b2
+ added x86 (i8086, i386 and x86_64) intrinsics fpc_x86_get_cs/ss/ds/es/fs/gs
...
for getting the value of x86 segment registers
git-svn-id: trunk@39433 -
2018-07-11 14:19:40 +00:00
nickysn
8e6205aca6
* changed the visibility of the writeport and readport methods in the ports unit
...
objects to private (since they should be accessed only through the default
indexed property)
git-svn-id: trunk@39421 -
2018-07-09 14:55:20 +00:00
nickysn
5318a04a5b
* moved the interface and implementation parts of the i8086-msdos ports unit to
...
include files portsh.inc and ports.inc in the i8086 rtl directory
git-svn-id: trunk@39396 -
2018-07-06 15:41:44 +00:00
nickysn
ff2fff365f
+ added x86 compiler intrinsics fpc_x86_sti and fpc_x86_cli, which generate the
...
'sti' and 'cli' instructions
git-svn-id: trunk@39388 -
2018-07-04 16:48:34 +00:00
nickysn
1c9d0d445b
* moved the compiler intrinsics for the i8086 'in' and 'out' instructions to the
...
system unit (with a 'fpc_x86_' prefix added)
git-svn-id: trunk@39368 -
2018-07-03 22:32:17 +00:00
nickysn
26a3ac3fd4
* moved the fpc_in_x86_*port* constants to the system unit in cpuinnr.inc in the
...
i8086, i386 and x86_64 rtl directories. This is done for consistency with
other compiler internal function numbers (which are declared in innr.inc).
git-svn-id: trunk@39367 -
2018-07-03 21:30:43 +00:00
nickysn
29f307589e
+ added an i8086-specific procedure MoveData, that allows moving of far data,
...
regardless of the memory model; procedure interface is the same as a similar
Turbo C (and DJGPP) function
git-svn-id: trunk@37741 -
2017-12-15 21:47:21 +00:00
nickysn
0119e7afb3
* changed the codepointer type in the i8086 small and compact memory models from
...
nearpointer to nearcspointer
git-svn-id: trunk@37730 -
2017-12-14 17:36:15 +00:00
nickysn
bc8c1ea1bc
* fixed get_caller_frame() for win16 (on that platform, bp is incremented by
...
one, before pushing, to indicate a far call, so it has to be aligned by 2
again, after reading)
git-svn-id: trunk@37657 -
2017-12-01 23:00:47 +00:00
nickysn
44f04d39a4
+ added asm optimized implementations of StrLower() and StrUpper() for i8086
...
git-svn-id: trunk@37618 -
2017-11-24 16:11:18 +00:00
nickysn
5595a74609
+ i8086 asm implementation of StrEnd()
...
git-svn-id: trunk@37616 -
2017-11-23 17:06:06 +00:00
florian
ff86c80176
* cpu specific header file for the system unit: cpuh.inc, moved several declarations into it
...
git-svn-id: trunk@37542 -
2017-11-01 16:33:30 +00:00
nickysn
e4a405dcd9
+ added unit 'cpu' for i8086
...
git-svn-id: trunk@37332 -
2017-09-27 16:55:56 +00:00
nickysn
e8a09fba0d
* use xchg, instead of mov, because it's 1 byte shorter
...
git-svn-id: trunk@36345 -
2017-05-26 18:26:00 +00:00
nickysn
34113b930b
* removed the checkoverflow: boolean parameter of the software mul helpers;
...
replaced it with a separate "_checkoverflow" version of each helper
git-svn-id: trunk@36344 -
2017-05-26 15:34:26 +00:00
nickysn
9946393018
+ added comment about the fptan instruction restrictions on the 8087 and 80287
...
git-svn-id: trunk@36326 -
2017-05-25 12:57:24 +00:00
pierre
277f1c1c2d
Check if FPC_SYSTEM_HAS_SYSINITFPU before parsing generic i8086 code
...
git-svn-id: trunk@36263 -
2017-05-19 21:49:13 +00:00
pierre
8ebac8ed52
Add Handle_I8086_Error procedure
...
git-svn-id: trunk@36262 -
2017-05-19 21:47:26 +00:00
florian
7213a13081
* split fpc_mul_<64 bit> into separate procedures with and without overflow checking
...
git-svn-id: trunk@35454 -
2017-02-19 19:15:14 +00:00
nickysn
ca46040728
+ added 16-bit versions of the InterLocked* functions for i8086
...
git-svn-id: trunk@35149 -
2016-12-18 00:17:10 +00:00
nickysn
c78f406d99
+ implemented proper stack checking for the i8086
...
git-svn-id: trunk@33787 -
2016-05-24 23:57:47 +00:00
pierre
e835f120e9
Fix fpc_frac_real, fpc_trunk_real and fpc_int_real by removing the assumption that SP=BP at entry
...
git-svn-id: trunk@32865 -
2016-01-06 15:20:57 +00:00
nickysn
0f6b5161e6
* the 'count' parameter of Move and FillChar on i8086 made 16-bit unsigned,
...
instead of signed (BP7 compatibility)
git-svn-id: trunk@32443 -
2015-11-21 17:55:47 +00:00
nickysn
3d2919acae
+ added an i8086 asm optimized implementation of fpc_pchar_length
...
git-svn-id: trunk@32113 -
2015-10-21 13:21:04 +00:00
nickysn
3bd5934a51
* some micro optimizations for zero size blocks in CompareByte for i8086
...
git-svn-id: trunk@32041 -
2015-10-13 15:12:43 +00:00
nickysn
4fe125d779
* fixed ds corruption in CompareWord in far data memory models
...
git-svn-id: trunk@32040 -
2015-10-13 15:01:10 +00:00
nickysn
7ed7b090fe
+ i8086 asm optimized implementation of CompareDWord
...
git-svn-id: trunk@32039 -
2015-10-13 14:51:50 +00:00
nickysn
2152420e4f
+ added i8086 asm optimized version of CompareWord
...
git-svn-id: trunk@32037 -
2015-10-13 13:10:43 +00:00
nickysn
f107956169
+ added an i8086 asm optimized version of CompareByte()
...
git-svn-id: trunk@32026 -
2015-10-12 16:47:50 +00:00
nickysn
5e3a88b7f5
* replaced or cx,cx/jz with jcxz in IndexByte, IndexWord and IndexDWord for i8086
...
git-svn-id: trunk@31961 -
2015-10-06 14:55:51 +00:00
nickysn
3752047dd4
+ added an i8086 asm optimized IndexDWord routine
...
git-svn-id: trunk@31960 -
2015-10-06 14:52:58 +00:00
nickysn
792b7e67be
* treat the len parameter to the i8086 versions of IndexByte and IndexWord as
...
unsigned, like the other platforms do
git-svn-id: trunk@31954 -
2015-10-05 19:59:15 +00:00
nickysn
94a398896b
- removed spurious DX initialization at the end of IndexByte for i8086
...
git-svn-id: trunk@31950 -
2015-10-05 17:32:51 +00:00
nickysn
80b892aafb
+ added i8086 asm optimized IndexWord routine
...
git-svn-id: trunk@31948 -
2015-10-05 16:24:15 +00:00
nickysn
a4e216c7fd
+ added i8086 asm optimized IndexByte routine
...
git-svn-id: trunk@31947 -
2015-10-05 15:35:26 +00:00
nickysn
11eb1a4179
+ added some i8086 memory model specific defines in strings.inc and
...
stringss.inc, used by the assembler routines (they are already defined in
the system unit, but these includes are included in units, other than system)
git-svn-id: trunk@31922 -
2015-10-03 09:30:57 +00:00
nickysn
8cfc0d8881
* fixed i8086 strpcopy after r31915
...
git-svn-id: trunk@31921 -
2015-10-03 01:18:25 +00:00
nickysn
7fb2418287
+ added an i8086 asm optimized strpcopy routine
...
git-svn-id: trunk@31915 -
2015-10-02 16:42:25 +00:00
nickysn
624376b403
+ handle properly win16 "odd bp" stack frames in get_caller_addr and get_caller_frame
...
git-svn-id: trunk@31829 -
2015-09-25 16:19:56 +00:00
nickysn
024ebb287e
+ implemented set_jmp and long_jmp on win16 via the Catch and Throw winapi
...
functions, which provide the same functionality, but are safe to use in all
windows modes (e.g. they include the magic for handling jumps to discarded
or moved code segments in real mode)
git-svn-id: trunk@31579 -
2015-09-08 16:03:50 +00:00
nickysn
3497359a9f
+ added missing i8086 system unit includes hugeptr.inc, int32p.inc and
...
int64p.inc to rtl/i8086/makefile.cpu
git-svn-id: trunk@30133 -
2015-03-08 01:39:40 +00:00
sergei
9a72100405
- removed obsolete and commented out variable
...
git-svn-id: trunk@29320 -
2014-12-25 09:25:49 +00:00
nickysn
16c5849fc6
+ added HexStr() overload for huge pointers
...
git-svn-id: trunk@28180 -
2014-07-07 15:13:29 +00:00
nickysn
13646c7afe
+ added rtl helper for huge pointer subtraction
...
git-svn-id: trunk@28178 -
2014-07-06 19:15:14 +00:00
nickysn
c306f48c14
+ added rtl helpers for huge pointer comparisons
...
git-svn-id: trunk@28148 -
2014-07-04 08:34:17 +00:00
nickysn
f0346c096f
+ added rtl helpers for huge pointer arithmetic
...
git-svn-id: trunk@28099 -
2014-06-28 17:08:40 +00:00
nickysn
ce4f9577d7
* seges prefix and lodsb instruction put on the same line for better readability
...
git-svn-id: trunk@28067 -
2014-06-25 21:07:25 +00:00
nickysn
2f83e2efc9
* use 'seges' instead of db 26h. It is actually supported, but for some reason,
...
unlike TP7's inline asm, in FPC it doesn't work on the same line as 'lodsb'.
git-svn-id: trunk@28065 -
2014-06-25 18:07:24 +00:00
nickysn
ec55340359
* i8086 far data memory model fixes in get_caller_addr and get_caller_frame
...
git-svn-id: trunk@28063 -
2014-06-25 16:47:56 +00:00