[colorforth] Non-working colorForth
- Subject: [colorforth] Non-working colorForth
- From: Dirk Harms-Merbitz <dirk@xxxxxxxxx>
- Date: Fri, 27 Jul 2001 14:29:19 -0700
The program "lspci" generates the output below under Linux.
>lspci -v
<snip>
00:08.0 VGA compatible controller: Neomagic Corporation [MagicMedia 256AV] (rev 20) (prog-if 00 [VGA])
Subsystem: Sony Corporation: Unknown device 8040
Flags: medium devsel, IRQ 9
Memory at fd000000 (32-bit, prefetchable) [size=16M]
Memory at fe800000 (32-bit, non-prefetchable) [size=4M]
Memory at fed00000 (32-bit, non-prefetchable) [size=1M]
Capabilities: [dc] Power Management version 1
<snip>
On Fri, Jul 27, 2001 at 10:00:01PM +0100, Steve Smith wrote:
> Hi there,
>
> I managed to get colorForth to boot and save on my HP Vectra XA with a
> Matrox Millenium PCI (NOT AGP) card. I worked once I understood a bit
> more about the PCI bus and how many modern VGA cards put a linear frame
> buffer in memory.
>
> For those interested, the following is a summary of how I did it. It's
> somewhat technical and if you do it to your own PC then I admit NO
> responsibility if you screw up. Anyway...
>
> I used a tool called pci.exe (Craig Hart's PCI+AGP bus sniffer)
> available from http://members.hyperlink.net.au/~chart/ to identify the
> VGA registers in PCI space. It generated the following:-
>
> MATROX MILLENIUM INFO
> =====================
> ----------
> PCI bus 00 device 0A function 00: Header Type 'non-bridge' (single-
> func)
> Vendor: 102B Matrox Graphics, Inc.
> Device: 0519 2064W (Millenium)
> Class: 03 display Revision: 01
> SubClass: 00 VGA ProgramI/F: 00
> CommandReg: 0083 = I/O-on mem-on wait-cyc
> Status Reg: 0280 = fast-trns (med)
> CacheLine: 00 Latency: 00 BIST: 00
> SubsysVendor: 0000 SubsysDevice: 0000
> Base Addresses:
> (0) FEDFC000 = mem base=FEDFC000 len=16K
> (1) FE000008 = mem base=FE000000 len=8M prefetchable
> ----------
>
> I then edited the gen.asm file to use 80005008h instead of 80010008h in
> the following lines:
>
> gen.asm
> =======
> ----------
> ati0: ; call dev
> ; mov EAX, 80010008h ; AGP
> mov EAX, 80005008h ; PCI? Bus 0 dev 10 fun 0
> add AL, 24h-8 ; look for prefetch
> mov CL, 5
> @@: DUP_
> call north
> xor AL, 8
> jz @f
> DROP
> sub EAX, 4
> next @b
> DUP_
> call north
> and EAX, 0fffffff0h
> ; mov EAX, 0FE000000h ; works on Vectra XA! (with matrox mill II)
> @@: mov displ, EAX
> DROP
> ret
> -------------
>
> Reassembling this produced a bootable colorForth. Using the same method
> as xxx to add on the source blocks produced the final file.
>
> Notice the commented-out line where I originally forced the value of
> FE000000h into the "displ" variable to check whether this was the
> correct frame buffer address.
>
> PCI
> ===
>
> Notice in the constant 80005008h that the 1 is replaced by 0 compared
> with the original 80010008h. This indicates that bus 0 is to be used
> instead of bus 0, which is usual for non-AGP cards. Also note the 5.
> This translates to the device address 0Ah (or 10 if you prefer).
>
> I worked this out after studying the document pci.txt from the vga file
> collection I downloaded from http://www.programmersheaven.com/,
> vgadoc4b.zip:-
> ------------
> the following comments on the PCI registers:
> CF8h D(R/W):
> bit 0-7 Index into the configuration space to read/write at CFCh
> 11-15 Card ID (0 - 31)
> 16-19 PCI Bus ID (0 - 15)
> 31 Set to enable the PCI bus configuration space
>
> CFCh D(R/W):
> bit 0-31 The index register identified by the PCI bus/card ID/Index in
> CF8h
> can be accessed here.
> -----------
>
> Hope this helps a few of you.
>
> Cheers,
>
> Steve.
> --
> Steve Smith
> ------------------------
>
> To Unsubscribe from this list, send mail to Mdaemon@xxxxxxxxxxxxxxxxxx with:
> unsubscribe ColorForth
> as the first and only line within the message body
> Problems - List-Admin@xxxxxxxxxxxxxxxxxx
> Main ColorForth site - http://www.ultratechnology.com
>
------------------------
To Unsubscribe from this list, send mail to Mdaemon@xxxxxxxxxxxxxxxxxx with:
unsubscribe ColorForth
as the first and only line within the message body
Problems - List-Admin@xxxxxxxxxxxxxxxxxx
Main ColorForth site - http://www.ultratechnology.com