|
|
| version 1.11, 2004/01/31 08:34:41 | version 1.13, 2005/02/08 09:18:59 |
|---|---|
| Line 87 section .text | Line 87 section .text |
| extern egc_write | extern egc_write |
| extern egc_write_w | extern egc_write_w |
| %else | %else |
| extern @egc_read@4 | extern @memegc_rd8@4 |
| extern @egc_read_w@4 | extern @memegc_rd16@4 |
| extern @egc_write@8 | extern @memegc_wr8@8 |
| extern @egc_write_w@8 | extern @memegc_wr16@8 |
| %endif | %endif |
| ; normal memory | ; normal memory |
| Line 262 grcgtdw_end: pop ecx | Line 262 grcgtdw_end: pop ecx |
| ; EGC bridge | ; EGC bridge |
| align 16 | align 16 |
| @egc_wt: VRAMTRACE | @egc_wt: VRAMTRACE |
| mov ebx, [_vramop + vramop_t.grcgwait] | |
| sub [_i286core + i286core_t.remainclock], ebx | |
| pop ebx | pop ebx |
| %if USE_EGCASM | %if USE_EGCASM |
| jmp egc_write | jmp egc_write |
| %else | %else |
| pushad | pushad |
| call @egc_write@8 | call @memegc_wr8@8 |
| popad | popad |
| ret | ret |
| %endif | %endif |
| Line 383 grcgtcr_end: not al | Line 385 grcgtcr_end: not al |
| ; EGC bridge | ; EGC bridge |
| align 16 | align 16 |
| @egc_rd: pop ebx | @egc_rd: mov ebx, [_vramop + vramop_t.grcgwait] |
| sub [_i286core + i286core_t.remainclock], ebx | |
| pop ebx | |
| %if USE_EGCASM | %if USE_EGCASM |
| jmp egc_read | jmp egc_read |
| %else | %else |
| pushad | pushad |
| call @egc_read@4 | call @memegc_rd8@4 |
| mov [esp + 28], al | mov [esp + 28], al |
| popad | popad |
| ret | ret |
| Line 617 grcgwtdw_end: pop ecx | Line 621 grcgwtdw_end: pop ecx |
| ; EGC bridge | ; EGC bridge |
| align 16 | align 16 |
| @egcw_wt: VRAMTRACE_W | @egcw_wt: VRAMTRACE_W |
| mov ebx, [_vramop + vramop_t.grcgwait] | |
| sub [_i286core + i286core_t.remainclock], ebx | |
| pop ebx | pop ebx |
| %if USE_EGCASM | %if USE_EGCASM |
| jmp egc_write_w | jmp egc_write_w |
| %else | %else |
| test ecx, 1 | |
| jne short egcw_wtodd | |
| pushad | |
| call @egc_write_w@8 | |
| popad | |
| ret | |
| egcw_wtodd: | |
| pushad | pushad |
| push ecx | call @memegc_wr16@8 |
| push edx | |
| call @egc_write@8 | |
| pop edx | |
| pop ecx | |
| inc ecx | |
| shr edx, 8 | |
| call @egc_write@8 | |
| popad | popad |
| ret | ret |
| %endif | %endif |
| Line 777 grcgwtcr_end: not ax | Line 769 grcgwtcr_end: not ax |
| ; EGC bridge | ; EGC bridge |
| align 16 | align 16 |
| @egcw_rd: pop ebx | @egcw_rd: mov ebx, [_vramop + vramop_t.grcgwait] |
| test ecx, 1 | sub [_i286core + i286core_t.remainclock], ebx |
| jne short egcw_rdodd | pop ebx |
| %if USE_EGCASM | %if USE_EGCASM |
| jmp egc_read_w | jmp egc_read_w |
| %else | %else |
| pushad | pushad |
| call @egc_read_w@4 | call @memegc_rd16@4 |
| mov [esp + 28], ax | mov [esp + 28], ax |
| popad | popad |
| ret | ret |
| %endif | %endif |
| egcw_rdodd: | |
| %if USE_EGCASM | |
| inc ecx | |
| call egc_read | |
| mov ah, al | |
| dec ecx | |
| jmp egc_read | |
| %else | |
| pushad | |
| push ecx | |
| call @egc_read@4 | |
| pop ecx | |
| mov [esp+28], al | |
| inc ecx | |
| call @egc_read@4 | |
| mov [esp+29], al | |
| popad | |
| %endif | |
| ret | |
| ; EMM read | ; EMM read |
| align 16 | align 16 |