mirror of
https://github.com/FDOS/kernel.git
synced 2025-07-22 05:14:30 +02:00
ia16-elf-gcc: remove some DOSDATA(.) & DOSTEXT(.) uses; replace
with actual __far declarations which ia16-elf-gcc now supports
This commit is contained in:
parent
41cb3a9dc1
commit
a4e7d1bf08
@ -41,7 +41,7 @@ Linux 16.04 LTS (Xenial Xerus) or Ubuntu Linux 14.04 LTS (Trusty
|
|||||||
Tahr), there are precompiled ia16-elf-gcc packages at
|
Tahr), there are precompiled ia16-elf-gcc packages at
|
||||||
https://launchpad.net/~tkchia/+archive/ubuntu/build-ia16/.
|
https://launchpad.net/~tkchia/+archive/ubuntu/build-ia16/.
|
||||||
Otherwise, for now ia16-elf-gcc needs to be compiled from source.
|
Otherwise, for now ia16-elf-gcc needs to be compiled from source.
|
||||||
Only releases 20171210 and later are supported.
|
Only releases 20180419 and later are supported.
|
||||||
|
|
||||||
Notes:
|
Notes:
|
||||||
======
|
======
|
||||||
|
@ -28,9 +28,8 @@ extern __segment DosTextSeg;
|
|||||||
#elif defined(__GNUC__)
|
#elif defined(__GNUC__)
|
||||||
|
|
||||||
#define DosTextSeg 0x70
|
#define DosTextSeg 0x70
|
||||||
/* XXX not supported yet */
|
#define DOSFAR FAR
|
||||||
#define DOSFAR
|
#define DOSTEXTFAR FAR
|
||||||
#define DOSTEXTFAR
|
|
||||||
#undef DOSDATA
|
#undef DOSDATA
|
||||||
#undef DOSTEXT
|
#undef DOSTEXT
|
||||||
#define DOSDATA(x) (*(typeof(x) FAR *)MK_FP(DosDataSeg, (size_t)&(x)))
|
#define DOSDATA(x) (*(typeof(x) FAR *)MK_FP(DosDataSeg, (size_t)&(x)))
|
||||||
|
@ -265,38 +265,21 @@ extern char master_env[128];
|
|||||||
extern struct lol FAR *LoL;
|
extern struct lol FAR *LoL;
|
||||||
|
|
||||||
extern struct dhdr DOSTEXTFAR ASM blk_dev; /* Block device (Disk) driver */
|
extern struct dhdr DOSTEXTFAR ASM blk_dev; /* Block device (Disk) driver */
|
||||||
#define blk_dev DOSTEXT(blk_dev)
|
|
||||||
|
|
||||||
extern struct buffer FAR *DOSFAR firstAvailableBuf; /* first 'available' buffer */
|
extern struct buffer FAR *DOSFAR firstAvailableBuf; /* first 'available' buffer */
|
||||||
#define firstAvailableBuf DOSDATA(firstAvailableBuf)
|
|
||||||
#ifdef __GNUC__
|
|
||||||
extern struct lol ASM DATASTART;
|
|
||||||
#else
|
|
||||||
extern struct lol ASM FAR DATASTART;
|
extern struct lol ASM FAR DATASTART;
|
||||||
#endif
|
|
||||||
#define DATASTART DOSDATA(DATASTART)
|
|
||||||
|
|
||||||
extern BYTE DOSFAR ASM _HMATextAvailable; /* first byte of available CODE area */
|
extern BYTE DOSFAR ASM _HMATextAvailable; /* first byte of available CODE area */
|
||||||
#ifdef __GNUC__
|
|
||||||
extern BYTE ASM _HMATextStart[]; /* first byte of HMAable CODE area */
|
|
||||||
extern BYTE ASM _HMATextEnd[];
|
|
||||||
#else
|
|
||||||
extern BYTE FAR ASM _HMATextStart[]; /* first byte of HMAable CODE area */
|
extern BYTE FAR ASM _HMATextStart[]; /* first byte of HMAable CODE area */
|
||||||
extern BYTE FAR ASM _HMATextEnd[];
|
extern BYTE FAR ASM _HMATextEnd[];
|
||||||
#endif
|
|
||||||
extern BYTE DOSFAR ASM break_ena; /* break enabled flag */
|
extern BYTE DOSFAR ASM break_ena; /* break enabled flag */
|
||||||
#define break_ena DOSDATA(break_ena)
|
extern BYTE DOSFAR ASM _InitTextStart[]; /* first available byte of ram */
|
||||||
extern BYTE DOSFAR ASM _InitTextStart[], /* first available byte of ram */
|
extern BYTE DOSFAR ASM _InitTextEnd[];
|
||||||
DOSFAR ASM _InitTextEnd[],
|
extern BYTE DOSFAR ASM ReturnAnyDosVersionExpected;
|
||||||
DOSFAR ASM ReturnAnyDosVersionExpected,
|
extern BYTE DOSFAR ASM HaltCpuWhileIdle;
|
||||||
DOSFAR ASM HaltCpuWhileIdle;
|
|
||||||
#define ReturnAnyDosVersionExpected DOSDATA(ReturnAnyDosVersionExpected)
|
|
||||||
#define HaltCpuWhileIdle DOSDATA(HaltCpuWhileIdle)
|
|
||||||
|
|
||||||
extern BYTE DOSFAR ASM internal_data[];
|
extern BYTE DOSFAR ASM internal_data[];
|
||||||
#define internal_data DOSDATA(internal_data)
|
|
||||||
extern unsigned char DOSTEXTFAR ASM kbdType;
|
extern unsigned char DOSTEXTFAR ASM kbdType;
|
||||||
#define kbdType DOSTEXT(kbdType)
|
|
||||||
|
|
||||||
extern struct {
|
extern struct {
|
||||||
char ThisIsAConstantOne;
|
char ThisIsAConstantOne;
|
||||||
@ -305,29 +288,23 @@ extern struct {
|
|||||||
struct CountrySpecificInfo C;
|
struct CountrySpecificInfo C;
|
||||||
|
|
||||||
} DOSFAR ASM nlsCountryInfoHardcoded;
|
} DOSFAR ASM nlsCountryInfoHardcoded;
|
||||||
#define nlsCountryInfoHardcoded DOSDATA(nlsCountryInfoHardcoded)
|
|
||||||
#define nlsPackageHardcoded DOSDATA(nlsPackageHardcoded)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
data shared between DSK.C and INITDISK.C
|
data shared between DSK.C and INITDISK.C
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern UWORD DOSFAR LBA_WRITE_VERIFY;
|
extern UWORD DOSFAR LBA_WRITE_VERIFY;
|
||||||
#define LBA_WRITE_VERIFY DOSDATA(LBA_WRITE_VERIFY)
|
|
||||||
|
|
||||||
/* original interrupt vectors, at 70:xxxx */
|
/* original interrupt vectors, at 70:xxxx */
|
||||||
extern struct lowvec {
|
extern struct lowvec {
|
||||||
unsigned char intno;
|
unsigned char intno;
|
||||||
intvec isv;
|
intvec isv;
|
||||||
} DOSTEXTFAR ASM intvec_table[5];
|
} DOSTEXTFAR ASM intvec_table[5];
|
||||||
#define intvec_table DOSTEXT(intvec_table)
|
|
||||||
|
|
||||||
/* floppy parameter table, at 70:xxxx */
|
/* floppy parameter table, at 70:xxxx */
|
||||||
extern unsigned char DOSTEXTFAR ASM int1e_table[0xe];
|
extern unsigned char DOSTEXTFAR ASM int1e_table[0xe];
|
||||||
#define int1e_table DOSTEXT(int1e_table)
|
|
||||||
|
|
||||||
extern char DOSFAR DiskTransferBuffer[/*MAX_SEC_SIZE*/]; /* in dsk.c */
|
extern char DOSFAR DiskTransferBuffer[/*MAX_SEC_SIZE*/]; /* in dsk.c */
|
||||||
#define DiskTransferBuffer DOSDATA(DiskTransferBuffer)
|
|
||||||
|
|
||||||
struct RelocationTable {
|
struct RelocationTable {
|
||||||
UBYTE jmpFar;
|
UBYTE jmpFar;
|
||||||
@ -345,14 +322,10 @@ struct RelocatedEntry {
|
|||||||
UWORD jmpSegment;
|
UWORD jmpSegment;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct RelocationTable
|
extern struct RelocationTable DOSFAR ASM _HMARelocationTableStart[];
|
||||||
DOSFAR ASM _HMARelocationTableStart[],
|
extern struct RelocationTable DOSFAR ASM _HMARelocationTableEnd[];
|
||||||
DOSFAR ASM _HMARelocationTableEnd[];
|
|
||||||
#define _HMARelocationTableStart DOSDATA(_HMARelocationTableStart)
|
|
||||||
#define _HMARelocationTableEnd DOSDATA(_HMARelocationTableEnd)
|
|
||||||
|
|
||||||
extern void FAR *DOSFAR ASM XMSDriverAddress;
|
extern void FAR *DOSFAR ASM XMSDriverAddress;
|
||||||
#define XMSDriverAddress DOSDATA(XMSDriverAddress)
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
extern VOID _EnableA20(VOID);
|
extern VOID _EnableA20(VOID);
|
||||||
extern VOID _DisableA20(VOID);
|
extern VOID _DisableA20(VOID);
|
||||||
|
@ -68,12 +68,7 @@ __segment DosTextSeg = 0;
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct lol FAR *LoL
|
struct lol FAR *LoL = &DATASTART;
|
||||||
#ifndef __GNUC__
|
|
||||||
/* cannot initialize from far data with GCC */
|
|
||||||
= &DATASTART;
|
|
||||||
#endif
|
|
||||||
;
|
|
||||||
|
|
||||||
VOID ASMCFUNC FreeDOSmain(void)
|
VOID ASMCFUNC FreeDOSmain(void)
|
||||||
{
|
{
|
||||||
@ -95,9 +90,6 @@ VOID ASMCFUNC FreeDOSmain(void)
|
|||||||
at 50:e0
|
at 50:e0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef __GNUC__
|
|
||||||
LoL = &DATASTART;
|
|
||||||
#endif
|
|
||||||
drv = LoL->BootDrive + 1;
|
drv = LoL->BootDrive + 1;
|
||||||
p = MK_FP(0, 0x5e0);
|
p = MK_FP(0, 0x5e0);
|
||||||
if (fmemcmp(p+2,"CONFIG",6) == 0) /* UPX */
|
if (fmemcmp(p+2,"CONFIG",6) == 0) /* UPX */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user