1. Physical memory addressing

------=_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>&nbsp;</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,&quot;\n%02x %02x %02x %02x %02x =
%02x %02x=20
%02x&quot;,x)<BR></FONT>&nbsp;</DIV>
<DIV><FONT face=3D"Courier New" size=3D2></FONT>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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--

new topic     » topic index » view message » categorize

2. Re: Physical memory addressing

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

new topic     » goto parent     » topic index » view message » categorize

3. Re: Physical memory addressing

----------
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

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu