Thread overview |
---|
November 06, 2004 __far Pointer | ||||
---|---|---|---|---|
| ||||
Hi all, I was hoping someone could help me with a question. I want to place data at a specific location in memory. I am writing this program with no run-time support, so dynamic memory allocation is out of the question. The location I want to place data in is in a seperate segment, so I believe I will need to use a far pointer. I searched this site and found the __far pointer keyword. I figure I need to create a pointer using the __far keyword and place the address in it following the instructions I found on this site. I am going to need to do this in both real mode and protected mode. For example, say I am executing code in real mode located in segment 0900h and I want to place data in segment 1200h at offset 0000h. How would I do this? I know protected mode is different with its global descriptor table but is this also possible in protected mode. I don't know if I explained this carefully enough, so tell me if I need to clarify. Thanks! |
November 06, 2004 Re: __far Pointer | ||||
---|---|---|---|---|
| ||||
Posted in reply to IR | "IR" <IR_member@pathlink.com> wrote in message news:cmj6r3$2fld$1@digitaldaemon.com... > Hi all, > > I was hoping someone could help me with a question. I want to place data at a > specific location in memory. I am writing this program with no run-time support, so dynamic memory allocation is out of the question. The location I > want to place data in is in a seperate segment, so I believe I will need to use > a far pointer. I searched this site and found the __far pointer keyword. I > figure I need to create a pointer using the __far keyword and place the address > in it following the instructions I found on this site. I am going to need to do > this in both real mode and protected mode. For example, say I am executing code > in real mode located in segment 0900h and I want to place data in segment 1200h > at offset 0000h. How would I do this? I know protected mode is different with > its global descriptor table but is this also possible in protected mode. I > don't know if I explained this carefully enough, so tell me if I need to clarify. You'll need to use a locator to map the relocatable executable to a specific address. Also, use the 'L' memory model so each source file's code and data are placed in separate segments. |
November 06, 2004 Re: __far Pointer | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | Is there any way just to write data to a far segment using a far pointer? In article <cmj7qc$2h2n$1@digitaldaemon.com>, Walter says... > > >"IR" <IR_member@pathlink.com> wrote in message news:cmj6r3$2fld$1@digitaldaemon.com... >> Hi all, >> >> I was hoping someone could help me with a question. I want to place data >at a >> specific location in memory. I am writing this program with no run-time support, so dynamic memory allocation is out of the question. The >location I >> want to place data in is in a seperate segment, so I believe I will need >to use >> a far pointer. I searched this site and found the __far pointer keyword. >I >> figure I need to create a pointer using the __far keyword and place the >address >> in it following the instructions I found on this site. I am going to need >to do >> this in both real mode and protected mode. For example, say I am >executing code >> in real mode located in segment 0900h and I want to place data in segment >1200h >> at offset 0000h. How would I do this? I know protected mode is different >with >> its global descriptor table but is this also possible in protected mode. >I >> don't know if I explained this carefully enough, so tell me if I need to clarify. > >You'll need to use a locator to map the relocatable executable to a specific address. Also, use the 'L' memory model so each source file's code and data are placed in separate segments. > > |
November 07, 2004 Re: __far Pointer | ||||
---|---|---|---|---|
| ||||
Posted in reply to IR | Using MK_FP(), you can create a far pointer to any memory location, then read and write that location. "IR" <IR_member@pathlink.com> wrote in message news:cmjcjc$2nnu$1@digitaldaemon.com... > Is there any way just to write data to a far segment using a far pointer? |
November 07, 2004 Re: __far Pointer | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | Im sorry to keep bothering you but I am still new to this and am trying to learn. I know how I would read data from that location but how would you write. Thanks again. In article <cmjt3m$au8$1@digitaldaemon.com>, Walter says... > >Using MK_FP(), you can create a far pointer to any memory location, then read and write that location. > >"IR" <IR_member@pathlink.com> wrote in message news:cmjcjc$2nnu$1@digitaldaemon.com... >> Is there any way just to write data to a far segment using a far pointer? > > |
November 07, 2004 Re: __far Pointer | ||||
---|---|---|---|---|
| ||||
Posted in reply to IR | char __far *p = MK_FP(0x1200, 0x40); *p = 6; // writes 6 to 1200:0040 "IR" <IR_member@pathlink.com> wrote in message news:cmk0u6$fl9$1@digitaldaemon.com... > Im sorry to keep bothering you but I am still new to this and am trying to learn. > > I know how I would read data from that location but how would you write. Thanks > again. > > > > > In article <cmjt3m$au8$1@digitaldaemon.com>, Walter says... > > > >Using MK_FP(), you can create a far pointer to any memory location, then read and write that location. > > > >"IR" <IR_member@pathlink.com> wrote in message news:cmjcjc$2nnu$1@digitaldaemon.com... > >> Is there any way just to write data to a far segment using a far pointer? > > > > > > |
November 08, 2004 Re: __far Pointer | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | The program has to include dos.h in order to use MK_FP(). Do you know if MK_FP() uses any DOS interrupts or any other DOS functions? The reason I ask is because I'm writing a program with no underlying OS support. If it does use some type of DOS support, can you tell me how to set the far pointer without using MK_FP(). Thanks In article <cmlsjq$56a$1@digitaldaemon.com>, Walter says... > >char __far *p = MK_FP(0x1200, 0x40); >*p = 6; // writes 6 to 1200:0040 > > >"IR" <IR_member@pathlink.com> wrote in message news:cmk0u6$fl9$1@digitaldaemon.com... >> Im sorry to keep bothering you but I am still new to this and am trying to learn. >> >> I know how I would read data from that location but how would you write. >Thanks >> again. >> >> >> >> >> In article <cmjt3m$au8$1@digitaldaemon.com>, Walter says... >> > >> >Using MK_FP(), you can create a far pointer to any memory location, then read and write that location. >> > >> >"IR" <IR_member@pathlink.com> wrote in message news:cmjcjc$2nnu$1@digitaldaemon.com... >> >> Is there any way just to write data to a far segment using a far >pointer? >> > >> > >> >> > > |
November 09, 2004 Re: __far Pointer | ||||
---|---|---|---|---|
| ||||
Posted in reply to IR | From dos.h: #define MK_FP(seg,offset) \ ((void __far *)(((unsigned long)(seg)<<16) | (unsigned)(offset))) So, no, it does not use DOS functions. "IR" <IR_member@pathlink.com> wrote in message news:cmo00b$kjq$1@digitaldaemon.com... > The program has to include dos.h in order to use MK_FP(). > > Do you know if MK_FP() uses any DOS interrupts or any other DOS functions? > > The reason I ask is because I'm writing a program with no underlying OS support. > > If it does use some type of DOS support, can you tell me how to set the far > pointer without using MK_FP(). > > Thanks > > > > > > In article <cmlsjq$56a$1@digitaldaemon.com>, Walter says... > > > >char __far *p = MK_FP(0x1200, 0x40); > >*p = 6; // writes 6 to 1200:0040 > > > > > >"IR" <IR_member@pathlink.com> wrote in message news:cmk0u6$fl9$1@digitaldaemon.com... > >> Im sorry to keep bothering you but I am still new to this and am trying to > >> learn. > >> > >> I know how I would read data from that location but how would you write. > >Thanks > >> again. > >> > >> > >> > >> > >> In article <cmjt3m$au8$1@digitaldaemon.com>, Walter says... > >> > > >> >Using MK_FP(), you can create a far pointer to any memory location, then > >> >read and write that location. > >> > > >> >"IR" <IR_member@pathlink.com> wrote in message news:cmjcjc$2nnu$1@digitaldaemon.com... > >> >> Is there any way just to write data to a far segment using a far > >pointer? > >> > > >> > > >> > >> > > > > > > |
Copyright © 1999-2021 by the D Language Foundation