Subversion Repositories Kolibri OS

Rev

Rev 558 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 558 Rev 630
Line 12... Line 12...
12
 
12
 
Line 13... Line 13...
13
API_VERSION     equ 0x01000100
13
API_VERSION     equ 0x01000100
Line -... Line 14...
-
 
14
 
-
 
15
DEBUG           equ 1
14
 
16
 
Line 15... Line 17...
15
DEBUG           equ 1
17
STRIDE          equ 8
16
 
18
 
17
VID_ATI         equ 0x1002
19
VID_ATI         equ 0x1002
Line 58... Line 60...
58
  CURSOR CURSOR
60
  CURSOR CURSOR
59
end virtual
61
end virtual
Line 60... Line 62...
60
 
62
 
Line 61... Line -...
61
CURSOR_SIZE     equ 32
-
 
62
 
-
 
63
R8500       equ 0x514C  ;R200
-
 
64
R9000       equ 0x4966  ;RV250
-
 
65
R9200       equ 0x5961  ;RV280
-
 
66
R9200SE     equ 0x5964  ;RV280
-
 
67
R9500       equ 0x4144  ;R300
-
 
68
R9500P      equ 0x4E45  ;R300
-
 
69
R9550       equ 0x4153  ;RV350
-
 
70
R9600       equ 0x4150  ;RV350
-
 
71
R9600XT     equ 0x4152  ;RV360
-
 
72
R9700P      equ 0x4E44  ;R300
-
 
73
R9800       equ 0x4E49  ;R350
-
 
74
R9800P      equ 0x4E48  ;R350
-
 
75
R9800XT     equ 0x4E4A  ;R360
63
CURSOR_SIZE     equ 32
76
 
64
 
-
 
65
OS_BASE         equ 0x80000000
Line 77... Line 66...
77
OS_BASE         equ 0x80000000
66
SLOT_BASE       equ (OS_BASE+0x0080000)
78
SLOT_BASE       equ (OS_BASE+0x0080000)
67
LFB_BASE        equ 0xFE000000
Line 79... Line 68...
79
 
68
 
Line 99... Line 88...
99
RD_MEM_CNTL                equ 0140h
88
RD_MEM_CNTL                equ 0140h
100
RD_CRTC_GEN_CNTL           equ 0050h
89
RD_CRTC_GEN_CNTL           equ 0050h
101
RD_CRTC_CUR_EN             equ 10000h
90
RD_CRTC_CUR_EN             equ 10000h
102
RD_DISPLAY_BASE_ADDR       equ 023ch
91
RD_DISPLAY_BASE_ADDR       equ 023ch
103
RD_DEFAULT_OFFSET          equ 16e0h
92
RD_DEFAULT_OFFSET          equ 16e0h
-
 
93
 
104
CUR_HORZ_VERT_OFF          equ 0268h
94
CUR_HORZ_VERT_OFF          equ 0268h
105
CUR_HORZ_VERT_POSN         equ 0264h
95
CUR_HORZ_VERT_POSN         equ 0264h
106
CUR_OFFSET                 equ 0260h
96
CUR_OFFSET                 equ 0260h
-
 
97
 
-
 
98
 
107
RD_RB3D_CNTL               equ 1c3ch
99
RD_RB3D_CNTL               equ 1c3ch
108
RD_RBBM_STATUS             equ 0e40h
100
RD_RBBM_STATUS             equ 0e40h
109
RD_RBBM_FIFOCNT_MASK       equ 007fh
101
RD_RBBM_FIFOCNT_MASK       equ 007fh
110
RD_RBBM_ACTIVE             equ 80000000h
102
RD_RBBM_ACTIVE             equ 80000000h
111
RD_TIMEOUT                 equ 2000000
103
RD_TIMEOUT                 equ 2000000
Line 177... Line 169...
177
section '.flat' code readable align 16
169
section '.flat' code readable align 16
Line 178... Line 170...
178
 
170
 
Line 179... Line 171...
179
proc START stdcall, state:dword
171
proc START stdcall, state:dword
180
 
172
 
Line 181... Line 173...
181
           cmp [state], 1
173
           cmp [state], 1
182
           jne .exit
174
           jne .restore
183
 
175
 
184
     if DEBUG
176
     if DEBUG
Line 185... Line 177...
185
           mov esi, msgInit
177
           mov esi, msgInit
186
           call SysMsgBoardStr
178
           call SysMsgBoardStr
187
     end if
179
     end if
Line -... Line 180...
-
 
180
 
-
 
181
           call detect_ati
-
 
182
           test eax, eax
-
 
183
           jz .fail
-
 
184
 
-
 
185
           mov ebx, [SelectHwCursor]
188
 
186
           mov ecx, [SetHwCursor]
189
           call detect_ati
187
           mov edx, [HwCursorRestore]
-
 
188
           mov esi, [HwCursorCreate]
-
 
189
 
190
           test eax, eax
190
           mov [oldSelect], ebx
Line 191... Line 191...
191
           jz .fail
191
           mov [oldSet], ecx
192
 
192
           mov [oldRestore], edx
193
           call init_ati
193
           mov [oldCreate], esi
194
           test eax, eax
194
 
Line 202... Line 202...
202
           add edx, 8
202
           add edx, 8
203
           mov [cursor_end], edx
203
           mov [cursor_end], edx
Line 204... Line 204...
204
 
204
 
205
           stdcall RegService, sz_ati_srv, service_proc
205
           stdcall RegService, sz_ati_srv, service_proc
206
           test eax, eax
206
           test eax, eax
-
 
207
           jz .restore
-
 
208
 
-
 
209
           mov ebx, [fnSelect]
-
 
210
           mov ecx, [fnSet]
-
 
211
 
207
           jz .fail
212
           mov [SelectHwCursor], ebx
208
           mov dword [SetHwCursor], drvCursorPos ;enable hardware cursor
213
           mov [SetHwCursor], ecx
209
           mov dword [HwCursorRestore], drv_restore
214
           mov dword [HwCursorRestore], drv_restore
-
 
215
           mov dword [HwCursorCreate], ati_cursor
-
 
216
 
-
 
217
           ret
-
 
218
.restore:
-
 
219
           mov eax, [oldSelect]
-
 
220
           mov ebx, [oldSet]
-
 
221
           mov ecx, [oldRestore]
-
 
222
           mov edx, [oldCreate]
-
 
223
 
-
 
224
           mov [SelectHwCursor], eax
-
 
225
           mov [SetHwCursor], ebx
-
 
226
           mov [HwCursorRestore], ecx
-
 
227
           mov [HwCursorCreate], edx
-
 
228
 
210
           mov dword [HwCursorCreate], ati_cursor
229
           xor eax, eax
-
 
230
           ret
211
           ret
231
 
212
.fail:
232
.fail:
213
     if DEBUG
233
     if DEBUG
214
           mov esi, msgFail
234
           mov esi, msgFail
215
           call SysMsgBoardStr
235
           call SysMsgBoardStr
Line 216... Line -...
216
     end if
-
 
217
 
236
     end if
218
.exit:
-
 
219
           xor eax, eax
-
 
220
;           mov ebx, SetHwCursor
237
 
221
;           mov dword [ebx], eax    ;force disable hardware cursor
238
           xor eax, eax
Line 222... Line 239...
222
           ret
239
           ret
223
endp
240
endp
Line 284... Line 301...
284
           test ebx, ebx
301
           test ebx, ebx
285
           jz .next
302
           jz .next
Line 286... Line 303...
286
 
303
 
287
           cmp eax, ebx
304
           cmp eax, ebx
288
           je .found
305
           je .found
289
           add edi, 4
306
           add edi, STRIDE
290
           jmp @B
-
 
291
 
307
           jmp @B
292
.next:
308
.next:
293
           inc [devfn]
309
           inc [devfn]
294
           cmp [devfn], 256
310
           cmp [devfn], 256
295
           jb  .next_dev
311
           jb  .next_dev
Line 299... Line 315...
299
           cmp eax, [last_bus]
315
           cmp eax, [last_bus]
300
           jna .next_bus
316
           jna .next_bus
301
           xor eax, eax
317
           xor eax, eax
302
           ret
318
           ret
303
.found:
319
.found:
304
           xor eax, eax
320
           mov eax, [edi+4]
305
           inc eax
-
 
306
           ret
321
           ret
307
.err:
322
.err:
308
           xor eax, eax
323
           xor eax, eax
309
           ret
324
           ret
310
endp
325
endp
Line 311... Line 326...
311
 
326
 
312
align 4
327
align 4
Line 313... Line 328...
313
proc init_ati
328
proc init_r200
314
 
329
 
315
           stdcall AllocKernelSpace, dword 0x10000
330
           stdcall AllocKernelSpace, dword 0x10000
Line 344... Line 359...
344
           mov ebx, 2
359
           mov ebx, 2
345
           shl ebx,20
360
           shl ebx,20
346
           or eax, ebx
361
           or eax, ebx
347
           mov [edi+0x50], eax
362
           mov [edi+0x50], eax
Line 348... Line 363...
348
 
363
 
-
 
364
           call r200_ShowCursor
-
 
365
 
-
 
366
           mov [fnSelect], r200_SelectCursor
-
 
367
           mov [fnSet], r200_SetCursor
-
 
368
 
-
 
369
           xor eax, eax
-
 
370
           inc eax
-
 
371
.fail:
-
 
372
           ret
-
 
373
endp
-
 
374
 
-
 
375
align 4
-
 
376
proc init_r500
-
 
377
 
-
 
378
           stdcall AllocKernelSpace, dword 0x10000
-
 
379
           test eax, eax
-
 
380
           jz .fail
-
 
381
 
-
 
382
           mov [ati_io], eax
-
 
383
 
-
 
384
           stdcall PciRead32, [bus], [devfn], dword 0x18
-
 
385
           and eax, 0xFFFF0000
-
 
386
           mov esi, eax
-
 
387
 
-
 
388
           mov edi, [ati_io]
-
 
389
           mov edx, 16
-
 
390
@@:
-
 
391
           stdcall MapPage,edi,esi,PG_SW+PG_NOCACHE
-
 
392
           add edi, 0x1000
-
 
393
           add esi, 0x1000
-
 
394
           dec edx
-
 
395
           jnz @B
-
 
396
 
-
 
397
           mov [fnSelect], r500_SelectCursor
-
 
398
           mov [fnSet], r500_SetCursor
-
 
399
 
-
 
400
           rdr eax, 0x6110
-
 
401
           mov [r500_LFB], eax
-
 
402
 
-
 
403
           wrr 0x6410, 0x001F001F
-
 
404
           wrr 0x6400, dword (3 shl 8)
349
           call drvShowCursor
405
 
350
           xor eax, eax
406
           xor eax, eax
351
           inc eax
407
           inc eax
352
.fail:
408
.fail:
353
           ret
409
           ret
Line -... Line 410...
-
 
410
endp
354
endp
411
 
355
 
412
 
356
align 4
413
align 4
Line -... Line 414...
-
 
414
drv_restore:
-
 
415
           ret 8
-
 
416
 
-
 
417
 
-
 
418
align 4
-
 
419
proc r500_SelectCursor stdcall,hcursor:dword
-
 
420
 
-
 
421
           mov esi, [hcursor]
-
 
422
 
-
 
423
           mov edx, [esi+CURSOR.base]
-
 
424
           sub edx, LFB_BASE
-
 
425
           add edx, [r500_LFB]
-
 
426
           wrr 0x6408, edx
-
 
427
 
-
 
428
           mov eax, [esi+CURSOR.hot_x]
-
 
429
           shl eax, 16
-
 
430
           mov ax, word [esi+CURSOR.hot_y]
-
 
431
           wrr 0x6418, eax
357
drv_restore:
432
           ret
-
 
433
endp
-
 
434
 
-
 
435
align 4
-
 
436
proc r500_SetCursor stdcall, hcursor:dword, x:dword, y:dword
-
 
437
           pushfd
-
 
438
           cli
-
 
439
 
-
 
440
           mov esi, [hcursor]
-
 
441
           mov edi, [ati_io]
-
 
442
 
-
 
443
           mov eax, [x]
-
 
444
           shl eax, 16
-
 
445
           mov ax, word [y]
-
 
446
 
-
 
447
           mov [edi+0x6414], eax
-
 
448
           or dword [edi+0x6400], 1
-
 
449
 
-
 
450
           popfd
-
 
451
           ret
358
           ret 8
452
endp
-
 
453
 
-
 
454
align 4
-
 
455
r500_ShowCursor:
-
 
456
 
-
 
457
           mov edi, [ati_io]
-
 
458
           or dword [edi+0x6400], 1
-
 
459
           ret
359
 
460
 
Line 360... Line 461...
360
align 4
461
align 4
361
drvShowCursor:
462
r200_ShowCursor:
362
           mov edi, [ati_io]
463
           mov edi, [ati_io]
363
 
464
 
Line -... Line 465...
-
 
465
           mov eax, [edi+RD_CRTC_GEN_CNTL]
-
 
466
           bts eax,16
-
 
467
           mov [edi+RD_CRTC_GEN_CNTL], eax
-
 
468
           ret
-
 
469
 
-
 
470
 
-
 
471
align 4
364
           mov eax, [edi+RD_CRTC_GEN_CNTL]
472
proc r200_SelectCursor stdcall,hcursor:dword
365
           bts eax,16
473
 
366
           mov [edi+RD_CRTC_GEN_CNTL], eax
474
           ret
367
           ret
475
endp
Line 368... Line 476...
368
 
476
 
369
align 4
477
align 4
Line 814... Line 922...
814
           jnz @B
922
           jnz @B
815
.exit:
923
.exit:
816
           ret
924
           ret
817
endp
925
endp
Line -... Line 926...
-
 
926
 
818
 
927
 
819
align 4
928
align 4
820
engWaitForFifo:
929
engWaitForFifo:
821
cnt equ bp+8
930
cnt equ bp+8
822
           push ebp
931
           push ebp
Line 856... Line 965...
856
.exit:
965
.exit:
857
           call engFlush
966
           call engFlush
858
           ret
967
           ret
859
endp
968
endp
Line -... Line 969...
-
 
969
 
860
 
970
 
861
align 4
971
align 4
Line 862... Line 972...
862
proc engRestore
972
proc engRestore
863
 
973
 
Line 922... Line 1032...
922
           call engWaitForIdle
1032
           call engWaitForIdle
Line 923... Line 1033...
923
 
1033
 
924
           ret
1034
           ret
Line 925... Line -...
925
endp
-
 
926
 
-
 
927
align 4
-
 
928
engSetupSolidFill:
-
 
Line 929... Line -...
929
           push ebp
-
 
930
           mov ebp, esp
-
 
Line -... Line 1035...
-
 
1035
endp
-
 
1036
 
-
 
1037
 
-
 
1038
 
-
 
1039
align 4
-
 
1040
dword2str:
-
 
1041
      mov  esi, hex_buff
-
 
1042
      mov ecx, -8
931
 
1043
@@:
-
 
1044
      rol eax, 4
-
 
1045
      mov ebx, eax
-
 
1046
      and ebx, 0x0F
-
 
1047
      mov bl, [ebx+hexletters]
Line 932... Line 1048...
932
           push dword 3
1048
      mov [8+esi+ecx], bl
933
           call engWaitForFifo
1049
      inc ecx
Line 934... Line 1050...
934
 
1050
      jnz @B
935
           wrr RD_DP_GUI_MASTER_CNTL, cmdSolidFill
1051
      ret
-
 
1052
 
-
 
1053
hexletters   db '0123456789ABCDEF'
936
 
1054
hex_buff     db 8 dup(0),13,10,0
-
 
1055
 
-
 
1056
R8500       equ 0x514C  ;R200
-
 
1057
R9000       equ 0x4966  ;RV250
-
 
1058
R9200       equ 0x5961  ;RV280
-
 
1059
R9200SE     equ 0x5964  ;RV280
937
           mov eax, [ebp+8]
1060
R9500       equ 0x4144  ;R300
-
 
1061
R9500P      equ 0x4E45  ;R300
-
 
1062
R9550       equ 0x4153  ;RV350
Line 938... Line 1063...
938
           wrr RD_DP_BRUSH_FRGD_CLR,eax
1063
R9600       equ 0x4150  ;RV350
939
 
-
 
940
           mov edi, [ati_io]
-
 
941
           mov dword [edi+RD_DP_CNTL],(RD_DST_X_LEFT_TO_RIGHT or RD_DST_Y_TOP_TO_BOTTOM)
-
 
942
           leave
-
 
943
           ret 4
-
 
944
 
-
 
945
 
-
 
946
align 4
-
 
947
drvSolidFill:
-
 
Line -... Line 1064...
-
 
1064
R9600XT     equ 0x4152  ;RV360
-
 
1065
R9700P      equ 0x4E44  ;R300
-
 
1066
R9800       equ 0x4E49  ;R350
-
 
1067
R9800P      equ 0x4E48  ;R350
948
;x:word,y:word,w:word,h:word,color:dword
1068
R9800XT     equ 0x4E4A  ;R360
-
 
1069
 
-
 
1070
 
-
 
1071
align 4
-
 
1072
 
-
 
1073
devices dd (R8500   shl 16)+VID_ATI, init_r200
-
 
1074
        dd (R9000   shl 16)+VID_ATI, init_r200
-
 
1075
        dd (R9200   shl 16)+VID_ATI, init_r200
-
 
1076
        dd (R9200SE shl 16)+VID_ATI, init_r200
-
 
1077
        dd (R9500   shl 16)+VID_ATI, init_r200
-
 
1078
        dd (R9500P  shl 16)+VID_ATI, init_r200
-
 
1079
        dd (R9550   shl 16)+VID_ATI, init_r200
-
 
1080
 
949
            push ebp
1081
        dd (R9600   shl 16)+VID_ATI, init_r200
-
 
1082
        dd (R9600XT shl 16)+VID_ATI, init_r200
-
 
1083
        dd (0x4155  shl 16)+VID_ATI, init_r200   ;RV350    9600
-
 
1084
        dd (0x4151  shl 16)+VID_ATI, init_r200   ;RV350    9600
-
 
1085
        dd (0x4E51  shl 16)+VID_ATI, init_r200   ;RV350    9600
-
 
1086
 
-
 
1087
        dd (R9700P  shl 16)+VID_ATI, init_r200
-
 
1088
 
-
 
1089
        dd (0x4148  shl 16)+VID_ATI, init_r200   ;R350    9800
-
 
1090
        dd (R9800   shl 16)+VID_ATI, init_r200
-
 
1091
        dd (R9800P  shl 16)+VID_ATI, init_r200
-
 
1092
        dd (R9800XT shl 16)+VID_ATI, init_r200
-
 
1093
 
-
 
1094
        dd (0x5B60  shl 16)+VID_ATI, init_r200   ;RV370    X300/X550
-
 
1095
        dd (0x5B63  shl 16)+VID_ATI, init_r200   ;RV370    X550
-
 
1096
        dd (0x5B62  shl 16)+VID_ATI, init_r200   ;RV380x   X600
-
 
1097
        dd (0x3E50  shl 16)+VID_ATI, init_r200   ;RV380    X600/X550
-
 
1098
 
-
 
1099
        dd (0x5B4F  shl 16)+VID_ATI, init_r200   ;RV410    X700
-
 
1100
        dd (0x5B4D  shl 16)+VID_ATI, init_r200   ;RV410    X700
-
 
1101
        dd (0x5B4B  shl 16)+VID_ATI, init_r200   ;RV410    X700
-
 
1102
        dd (0x5B4C  shl 16)+VID_ATI, init_r200   ;RV410    X700
-
 
1103
 
-
 
1104
        dd (0x4a49  shl 16)+VID_ATI, init_r200   ;R420     X800 PRO/GTO
-
 
1105
        dd (0x4a4B  shl 16)+VID_ATI, init_r200   ;R420     X800
-
 
1106
        dd (0x5549  shl 16)+VID_ATI, init_r200   ;R423     X800
-
 
1107
        dd (0x4a4A  shl 16)+VID_ATI, init_r200   ;R420     X800
-
 
1108
        dd (0x554F  shl 16)+VID_ATI, init_r200   ;R430     X800
-
 
1109
        dd (0x554D  shl 16)+VID_ATI, init_r200   ;R430     X800
-
 
1110
        dd (0x554E  shl 16)+VID_ATI, init_r200   ;R430     X800
-
 
1111
        dd (0x5D57  shl 16)+VID_ATI, init_r200   ;R423     X800 XT
-
 
1112
        dd (0x4A50  shl 16)+VID_ATI, init_r200   ;R420     X800 XT
-
 
1113
        dd (0x554A  shl 16)+VID_ATI, init_r200   ;R423     X800 XT
-
 
1114
        dd (0x5D4F  shl 16)+VID_ATI, init_r200   ;R423     X800/X850
-
 
1115
        dd (0x554B  shl 16)+VID_ATI, init_r200   ;R423     X800 GT
-
 
1116
 
-
 
1117
        dd (0x4B4B  shl 16)+VID_ATI, init_r200   ;R481     X850
-
 
1118
        dd (0x4B49  shl 16)+VID_ATI, init_r200   ;R481     X850
-
 
1119
        dd (0x4B4C  shl 16)+VID_ATI, init_r200   ;R481     X850
-
 
1120
 
-
 
1121
        dd (0x5D4D  shl 16)+VID_ATI, init_r200   ;R480     X850
-
 
1122
        dd (0x5D52  shl 16)+VID_ATI, init_r200   ;R480     X850
-
 
1123
 
-
 
1124
        dd (0x791E  shl 16)+VID_ATI, init_r500   ;RS690   X1200
-
 
1125
 
-
 
1126
        dd (0x7140  shl 16)+VID_ATI, init_r500   ;RV515   X1300
-
 
1127
        dd (0x7142  shl 16)+VID_ATI, init_r500   ;RV515   X1300
-
 
1128
        dd (0x7146  shl 16)+VID_ATI, init_r500   ;RV515   X1300
-
 
1129
        dd (0x714D  shl 16)+VID_ATI, init_r500   ;RV515   X1300
-
 
1130
        dd (0x714E  shl 16)+VID_ATI, init_r500   ;RV515   X1300
-
 
1131
 
-
 
1132
        dd (0x7183  shl 16)+VID_ATI, init_r500   ;RV515   X1300
-
 
1133
        dd (0x7187  shl 16)+VID_ATI, init_r500   ;RV515   X1300
-
 
1134
        dd (0x718F  shl 16)+VID_ATI, init_r500   ;RV515   X1300
-
 
1135
 
-
 
1136
        dd (0x7143  shl 16)+VID_ATI, init_r500   ;RV515   X1550
-
 
1137
        dd (0x7147  shl 16)+VID_ATI, init_r500   ;RV515   X1550
-
 
1138
        dd (0x715F  shl 16)+VID_ATI, init_r500   ;RV515   X1550
-
 
1139
        dd (0x7193  shl 16)+VID_ATI, init_r500   ;RV515   X1550
-
 
1140
        dd (0x719F  shl 16)+VID_ATI, init_r500   ;RV515   X1550
-
 
1141
 
-
 
1142
        dd (0x71C0  shl 16)+VID_ATI, init_r500   ;RV530   X1600
-
 
1143
        dd (0x71C1  shl 16)+VID_ATI, init_r500   ;RV535   X1650
-
 
1144
        dd (0x71C2  shl 16)+VID_ATI, init_r500   ;RV530   X1600
-
 
1145
        dd (0x71C3  shl 16)+VID_ATI, init_r500   ;RV535   X1600
-
 
1146
        dd (0x71C6  shl 16)+VID_ATI, init_r500   ;RV530   X1600
-
 
1147
        dd (0x71C7  shl 16)+VID_ATI, init_r500   ;RV534   X1650
-
 
1148
 
-
 
1149
        dd (0x7181  shl 16)+VID_ATI, init_r500   ;RV515   X1600
-
 
1150
        dd (0x71CD  shl 16)+VID_ATI, init_r500   ;RV530   X1600
-
 
1151
 
-
 
1152
        dd (0x7291  shl 16)+VID_ATI, init_r500   ;R580    X1650
-
 
1153
        dd (0x7293  shl 16)+VID_ATI, init_r500   ;R580    X1650
-
 
1154
 
-
 
1155
        dd (0x7100  shl 16)+VID_ATI, init_r500   ;RV520   X1800
-
 
1156
        dd (0x7109  shl 16)+VID_ATI, init_r500   ;RV520   X1800
-
 
1157
        dd (0x710A  shl 16)+VID_ATI, init_r500   ;RV520   X1800 GTO
-
 
1158
 
-
 
1159
        dd (0x7249  shl 16)+VID_ATI, init_r500   ;RV580   X1900
-
 
1160
        dd (0x724B  shl 16)+VID_ATI, init_r500   ;RV580   X1900 GT
-
 
1161
 
-
 
1162
        dd (0x7240  shl 16)+VID_ATI, init_r500   ;RV580   X1950
-
 
1163
        dd (0x7244  shl 16)+VID_ATI, init_r500   ;RV580   X1950
-
 
1164
        dd (0x7248  shl 16)+VID_ATI, init_r500   ;RV580   X1950
-
 
1165
 
Line 950... Line -...
950
            mov ebp, esp
-
 
951
x equ ebp+8
1166
        dd (0x7288  shl 16)+VID_ATI, init_r500   ;R580    X1950 GT
952
y equ ebp+12
-
 
953
w equ ebp+16
1167
        dd (0x7280  shl 16)+VID_ATI, init_r500   ;R580    X1950 PRO
954
h equ ebp+20
-
 
955
color equ ebp+24
-
 
956
 
-
 
957
           push dword [ebp+24]
-
 
958
           call engSetupSolidFill
-
 
Line 959... Line -...
959
 
-
 
960
           push dword 2
-
 
961
           call engWaitForFifo
-
 
962
 
-
 
963
           mov edi, [ati_io]
-
 
964
 
-
 
965
           mov eax, [y]
-
 
966
           mov ebx, [x]
-
 
967
           shl eax,16
-
 
Line 968... Line -...
968
           or eax, ebx
-
 
969
 
-
 
970
           mov ecx,  [w]
-
 
971
           mov edx,  [h]
-
 
972
           shl ecx,16
-
 
973
           or ecx, edx
-
 
974
           mov [edi+RD_DST_Y_X], eax
-
 
975
           mov [edi+RD_DST_WIDTH_HEIGHT], ecx
-
 
976
           call engFlush
-
 
977
           leave
-
 
978
           ret 20
-
 
979
 
-
 
980
align 4
-
 
981
devices dd (R8500   shl 16)+VID_ATI
-
 
982
        dd (R9000   shl 16)+VID_ATI
1168
 
Line 983... Line 1169...
983
        dd (R9200   shl 16)+VID_ATI
1169
        dd (0x94C3  shl 16)+VID_ATI, init_r500   ;RV610   HD 2400 PRO
Line -... Line 1170...
-
 
1170
        dd (0x94C1  shl 16)+VID_ATI, init_r500   ;RV610   HD 2400 XT
984
        dd (R9200SE shl 16)+VID_ATI
1171
 
Line 985... Line 1172...
985
        dd (R9500   shl 16)+VID_ATI
1172
        dd (0x9589  shl 16)+VID_ATI, init_r500   ;RV630   HD 2600 PRO
986
        dd (R9500P  shl 16)+VID_ATI
1173
        dd (0x958A  shl 16)+VID_ATI, init_r500   ;RV630   HD 2600 X2
987
        dd (R9550   shl 16)+VID_ATI
1174
        dd (0x9588  shl 16)+VID_ATI, init_r500   ;RV630   HD 2600 XT
988
        dd (R9600   shl 16)+VID_ATI
1175
 
-
 
1176
        dd (0x9403  shl 16)+VID_ATI, init_r500   ;R600    HD 2900 PRO
-
 
1177
        dd (0x9409  shl 16)+VID_ATI, init_r500   ;R600    HD 2900 XT
-
 
1178
 
-
 
1179
 
-
 
1180
        dd 0    ;terminator
-
 
1181
 
-
 
1182
version      dd (5 shl 16) or (API_VERSION and 0xFFFF)
-
 
1183
 
-
 
1184
 
-
 
1185
sz_ati_srv   db 'HWCURSOR',0
-
 
1186
 
-
 
1187
msgInit      db 'detect hardware...',13,10,0
-
 
1188
msgPCI       db 'PCI accsess not supported',13,10,0
-
 
1189
msgFail      db 'device not found',13,10,0
-
 
1190
msg_neg      db 'neg ecx',13,10,0
989
        dd (R9600XT shl 16)+VID_ATI
1191
 
990
        dd (R9700P  shl 16)+VID_ATI
1192
if 0
Line 991... Line 1193...
991
        dd (R9800   shl 16)+VID_ATI
1193
msg6100      db '6100:  ',0
Line 1010... Line 1212...
1010
 
1212
 
1011
cursor_map     rd 2
1213
cursor_map     rd 2
1012
cursor_start   rd 1
1214
cursor_start   rd 1
Line -... Line 1215...
-
 
1215
cursor_end     rd 1
-
 
1216
 
-
 
1217
fnSelect       rd 1
-
 
1218
fnSet          rd 1
-
 
1219
oldSelect      rd 1
-
 
1220
oldSet         rd 1
-
 
1221
oldRestore     rd 1
-
 
1222
oldCreate      rd 1
-
 
1223
 
1013
cursor_end     rd 1
1224
r500_LFB       rd 1
1014
 
1225
 
1015
bus            dd ?
1226
bus            dd ?