You've got plenty of answers already, but here is a list of specifically 8086 UNIXes (or "UNIX-likes") that I remember. Some I have played around with quite a bit.
- Coherent
- XENIX 8086
- SINIX (technically on 80186, and derived from XENIX)
- PC/IX
- Minix86
One of the first things I usually do on an old but new to me system is run a small C program that just prints sizeof() of various types, including the ones you mentioned and pointers. Here it is on SINIX, which is the one I can currently run easiest (unit is multiples of sizeof(char) == 1, with normal 8 bit bytes):
So it's almost like you say, but long (and long long) are actually 32 bits.
Standard pointers are 16 bit, which means they address within a segment. There is almost certainly also a way to specify 32 bit far pointers (seg:off), or maybe even 32 bit "huge" pointers (still seg:off, but normalized, so that comparisons work).
- Coherent
- XENIX 8086
- SINIX (technically on 80186, and derived from XENIX)
- PC/IX
- Minix86
One of the first things I usually do on an old but new to me system is run a small C program that just prints sizeof() of various types, including the ones you mentioned and pointers. Here it is on SINIX, which is the one I can currently run easiest (unit is multiples of sizeof(char) == 1, with normal 8 bit bytes):
char: 1, short: 2, int: 2, long: 4, long long: 4, pointer: 2
So it's almost like you say, but long (and long long) are actually 32 bits.
Standard pointers are 16 bit, which means they address within a segment. There is almost certainly also a way to specify 32 bit far pointers (seg:off), or maybe even 32 bit "huge" pointers (still seg:off, but normalized, so that comparisons work).