1. Physical memory addressing
- Posted by Mark Young <marky at WHO.NET> Feb 25, 1998
- 568 views
- Last edited Feb 26, 1998
------=_NextPart_000_000A_01BD4246.53062EE0 charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Euphoria's advertising led me to believe that a flat 32-bit address = space was available, yet most physical addresses beyond 20bits do not = work. Is this to be expected or am I doing something wrong? In m.exe = peeking at the values shown below work upto just past the 1mb limit, = then crash.. Perhaps there is a way I can read a real physical 32bit = address like VDS Services provides. What I'm really trying to do is = create a basic(Euphoria) that supports peeks/pokes to a physical address = of a PCI-based card at base addresses mapped by the BIOS like FFBF8000. = Bottom line: can I get there from here using Euphoria at all? =3D=3Dm.ex =3D=3D object x x=3Dpeek({#200000,8}) printf(1,"\n%02x %02x %02x %02x %02x %02x %02x %02x",x) #400 F8 03 F8 02 00 00 00 00 #FE000 41 77 61 72 64 20 53 6F #200000 CauseWay DOS Extender v3.14 Copyright 1992-96 Michael Devore. All rights reserved. Exception: 0E, Error code: 0004 EAX=3D00000000 EBX=3D00200000 ECX=3D843814F0 EDX=3D84382930 = ESI=3D84383048 EDI=3D9087051F EBP=3D00000007 ESP=3D8437A9D8 EIP=3D8434B389 = EFL=3D00010246 CS=3D0867-7BCB8000 DS=3D086F-7BCB8000 ES=3D086F-7BCB8000 FS=3D0000-xxxxxxxx GS=3D0877-xxxxxxxx SS=3D086F-7BCB8000 CR0=3D00000000 CR2=3D00000000 CR3=3D00000000 TR=3D0000 Info flags=3D00008018 Writing CW.ERR file.... CauseWay error 09 : Unrecoverable exception. Program terminated. ------=_NextPart_000_000A_01BD4246.53062EE0 charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable <!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML//EN"> <HTML> <HEAD> <META content=3Dtext/html;charset=3Diso-8859-1 = http-equiv=3DContent-Type> <META content=3D'"MSHTML 4.71.1712.3"' name=3DGENERATOR> </HEAD> <BODY bgColor=3D#ffffff> <DIV><FONT face=3D"Courier New" size=3D2>Euphoria's advertising led me = to believe=20 that a flat 32-bit address space was available, yet most physical = addresses=20 beyond 20bits do not work. Is this to be expected or am I doing = something wrong?=20 In m.exe peeking at the values shown below work upto just past the 1mb = limit,=20 then crash.. Perhaps there is a way I can read a real physical 32bit = address=20 like VDS Services provides. What I'm really trying to do is create a=20 basic(Euphoria) that supports peeks/pokes to a physical address of a = PCI-based=20 card at base addresses mapped by the BIOS like FFBF8000. Bottom line: = can I get=20 there from here using Euphoria at all?</FONT></DIV> <DIV><FONT face=3D"Courier New" size=3D2></FONT> </DIV> <DIV><FONT color=3D#000000 face=3D"Courier New" size=3D2>=3D=3Dm.ex = =3D=3D</FONT></DIV> <DIV><FONT color=3D#000000 face=3D"Courier New" size=3D2></FONT><FONT=20 face=3D"Courier New" size=3D2>object=20 x<BR>x=3Dpeek({#200000,8})<BR>printf(1,"\n%02x %02x %02x %02x %02x = %02x %02x=20 %02x",x)<BR></FONT> </DIV> <DIV><FONT face=3D"Courier New" size=3D2></FONT> </DIV> <DIV><FONT color=3D#000000 face=3D"Courier New" = size=3D2>#400</FONT></DIV> <DIV><FONT face=3D"Courier New" size=3D2>F8 03 F8 02 00 00 00=20 00<BR></FONT> </DIV> <DIV><FONT face=3D"Courier New" size=3D2>#FE000</FONT></DIV> <DIV><FONT face=3D"Courier New" size=3D2>41 77 61 72 64 20 53=20 6F<BR></FONT> </DIV> <DIV><FONT face=3D"Courier New" size=3D2>#200000</FONT></DIV> <DIV><FONT face=3D"Courier New" size=3D2>CauseWay DOS Extender v3.14 = Copyright=20 1992-96 Michael Devore.<BR>All rights reserved.</FONT> </DIV> <DIV><FONT face=3D"Courier New" size=3D2>Exception: 0E, Error code:=20 0004</FONT></DIV> <DIV><FONT face=3D"Courier New" size=3D2>EAX=3D00000000 EBX=3D00200000 = ECX=3D843814F0=20 EDX=3D84382930 ESI=3D84383048<BR>EDI=3D9087051F EBP=3D00000007 = ESP=3D8437A9D8 EIP=3D8434B389=20 EFL=3D00010246</FONT> </DIV> <DIV><FONT face=3D"Courier New" size=3D2>CS=3D0867-7BCB8000 = DS=3D086F-7BCB8000=20 ES=3D086F-7BCB8000<BR>FS=3D0000-xxxxxxxx GS=3D0877-xxxxxxxx=20 SS=3D086F-7BCB8000</FONT> </DIV> <DIV><FONT face=3D"Courier New" size=3D2>CR0=3D00000000 CR2=3D00000000 = CR3=3D00000000=20 TR=3D0000</FONT></DIV> <DIV><FONT face=3D"Courier New" size=3D2>Info = flags=3D00008018</FONT></DIV> <DIV><FONT face=3D"Courier New" size=3D2>Writing CW.ERR = file....</FONT></DIV> <DIV><FONT face=3D"Courier New" size=3D2>CauseWay error 09 : = Unrecoverable=20 ------=_NextPart_000_000A_01BD4246.53062EE0--
2. Re: Physical memory addressing
- Posted by Robert Craig <rds at EMAIL.MSN.COM> Feb 26, 1998
- 556 views
Mark Young wrote: > Euphoria's advertising led me to believe that a > flat 32-bit address space was available, yet most physical > addresses beyond 20bits do not work. You can't simply peek/poke into a random address greater than 1Mb. You have to call allocate() to reserve some high memory for your own use. The Causeway DOS extender was quite right to pull the plug on your program when you peeked at #200000 (around 2Mb decimal). Only the addresses below 1Mb are always available, without calling allocate(). This is convenient because many of them have special uses defined by DOS, and you can do some neat things by peeking/poking into low memory. > What I'm really trying to do is create a basic(Euphoria) that > supports peeks/pokes to a physical address > of a PCI-based card at base addresses mapped > by the BIOS like FFBF8000. I don't know much about PCI-based cards. Regards, Rob Craig Rapid Deployment Software
3. Re: Physical memory addressing
- Posted by Michael Sabal <mjs at OSA.ATT.NE.JP> Feb 27, 1998
- 557 views
---------- From: Mark Young[SMTP:marky at WHO.NET] Sent: Thursday, 26 February, 1998 2:37 PM To: Multiple recipients of list EUPHORIA Subject: Physical memory addressing Euphoria's advertising led me to believe that a flat 32-bit address = space was available, yet most physical addresses beyond 20bits do not = work. Is this to be expected or am I doing something wrong? In m.exe = peeking at the values shown below work upto just past the 1mb limit, = then crash.. Perhaps there is a way I can read a real physical 32bit = address like VDS Services provides. What I'm really trying to do is = create a basic(Euphoria) that supports peeks/pokes to a physical address = of a PCI-based card at base addresses mapped by the BIOS like FFBF8000. = Bottom line: can I get there from here using Euphoria at all? -------------------- Yes, Mark, you CAN get there from here! But, I'm not entirely sure on = the method. Some other programmers have a lot more experience in this = area. If you look at Euphoria's main home page under User Contributions = and look WAY back (it may even be in the archives by now), there's a = program that interfaces the SoundBlaster card allowing you to play WAV, = etc. files. That package includes routines for accessing DMA, ports, = and high-memory. It may be reused elsewhere, but that's where I = remember seeing it. Anyway, I hope this is useful. Mike