===== 01 GRD F28 GPUREAD AFTER C0H | BIOS 19951204 System ROM Version 3.0 11/18/96 A BadVaddr as the group starts: 00000480 GPUREAD after C0h 1x1 and 2x1 and after what came before (row 61, #138): C0h words, GPUSTAT, then three GPUREAD loads. Block 32x2 at 0,300: pixel x,y = 1000h+100h*(y-300)+x. GP1(10h) 02h-05h read at the group's start: 00000000 00000000 0003BE7F 00000000. After the A0h writes: 1x1, x 0: C0h 1x1 at 0,300: 10011000; GPUSTAT 9406251C; then 00000000 00000000 00000000 1x1, x 1: C0h 1x1 at 1,300: 10021001; GPUSTAT 9406251C; then 00000000 00000000 00000000 1x1, x 2: C0h 1x1 at 2,300: 10031002; GPUSTAT 9406251C; then 00000000 00000000 00000000 1x1, x 3: C0h 1x1 at 3,300: 10041003; GPUSTAT 9406251C; then 00000000 00000000 00000000 1x1, x 5 y 301: C0h 1x1 at 5,301: 11061105; GPUSTAT 9406251C; then 00000000 00000000 00000000 2x1, x 0: C0h 2x1 at 0,300: 10011000; GPUSTAT 1406251C; then 00000000 00000000 00000000 2x1, x 1: C0h 2x1 at 1,300: 10021001; GPUSTAT 1406251C; then 00000000 00000000 00000000 2x1, x 6 y 301: C0h 2x1 at 6,301: 11071106; GPUSTAT 9406251C; then 00000000 00000000 00000000 1x2, x 4: C0h 1x2 at 4,300: 11041004; GPUSTAT 9406251C; then 00000000 00000000 00000000 3x1, x 4: C0h 3x1 at 4,300: 10051004 10071006; GPUSTAT 1406251C; then 10051004 10051004 10051004 The same with a write between the C0h words and the three loads: 1x1 x 0, GP0 00ABCDEFh: C0h 1x1 at 0,300: 10011000; GPUSTAT 9406251C; then 10071006 10071006 10071006 1x1 x 0, GP0(01h): C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 10071006 10071006 10071006 1x1 x 0, GP0(E2h) as found: C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 10071006 10071006 10071006 1x1 x 0, GP1 04000000h: C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 10071006 10071006 10071006 1x1 x 0, GP1 02000000h: C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 10071006 10071006 10071006 2x1 x 0, GP0 00ABCDEFh: C0h 2x1 at 0,300: 10011000; GPUSTAT 1406251C; then 10071006 10071006 10071006 2x1 x 0, GP1 04000000h: C0h 2x1 at 0,300: 10011000; GPUSTAT 1406251C; then 10071006 10071006 10071006 C0h 1x1 at 0,300 after another command: 4x1 C0h at 8,300 read 10091008, then GP1(01h). After a cut 4x1 C0h: C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 100B100A 100B100A 100B100A 4x1 C0h at 8,300 read 10091008, GP1(10h) 02h read 10000000, then GP1(01h). After a cut 4x1 C0h and GP1(10h): C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 100B100A 100B100A 100B100A After a raw textured rect 4x1 from 7C00 03E0 001F 7FFF: C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 100B100A 100B100A 100B100A After a fill 16x1 of 102030h: C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 100B100A 100B100A 100B100A After a copy 2x1 from 2,301 (1102 1103): C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 100B100A 100B100A 100B100A After a semi rect 4x1 over 2222 3333: C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 100B100A 100B100A 100B100A After an A0h 2x1 of 5A5A 6B6B: C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 100B100A 100B100A 100B100A After GP1(10h) 02h: C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 100B100A 100B100A 100B100A Again, nothing between: C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 100B100A 100B100A 100B100A Read back: the rect at 0,320 7C00 03E0 001F 7FFF; the semi rect at 0,350 21C9 2A51 21C9 2A51. Done.