|
|
| version 1.1.1.1, 2003/10/16 17:57:33 | version 1.4, 2003/12/08 00:55:31 |
|---|---|
| Line 7 | Line 7 |
| section .bss | section .bss |
| extern _mem | extern _mem |
| extern _i286core | |
| extern _grcg | extern _grcg |
| extern _extmem | extern _extmem |
| extern _gdcs | extern _gdcs |
| Line 14 section .bss | Line 15 section .bss |
| extern _vramupdate | extern _vramupdate |
| extern _cgwindow | extern _cgwindow |
| ; extern ___font | ; extern ___font |
| extern _itf | |
| extern _vramop | extern _vramop |
| extern _nevent | |
| extern _extmemmng_ptr | |
| extern _extmemmng_size | |
| MAINMEMORY equ _mem | MAINMEMORY equ _mem |
| Line 27 EXTMEMORY equ 0 | Line 23 EXTMEMORY equ 0 |
| VIDEOMEMORY equ _mem | VIDEOMEMORY equ _mem |
| USERSMEMORY_R equ 0a8000h | USERSMEMORY_R equ 0a8000h |
| USERSMEMORY_W equ 0a0000h | USERSMEMORY_W equ 0a0000h |
| _extmemmng_ptr equ _i286core + i286core_t.ext | |
| _extmemmng_size equ _i286core + i286core_t.extsize | |
| %if 1 | %if 1 |
| _font equ _mem + FONT_ADRS | _font equ _mem + FONT_ADRS |
| Line 99 section .text | Line 97 section .text |
| ; normal memory | ; normal memory |
| align 16 | align 16 |
| @i286_wt: mov ebx, ecx | @i286_wt: mov ebx, ecx |
| and ebx, [_extmem + extmem_t.adrsmask] | and ebx, [_i286core + i286core_t.adrsmask] |
| mov [MAINMEMORY + ebx], dl | mov [MAINMEMORY + ebx], dl |
| pop ebx | pop ebx |
| ret | ret |
| Line 107 section .text | Line 105 section .text |
| ; tram write | ; tram write |
| align 16 | align 16 |
| @tram_wt: mov ebx, [_vramop + vramop_t.tramwait] | @tram_wt: mov ebx, [_vramop + vramop_t.tramwait] |
| sub [_nevent + nevent_t.remainclock], ebx | sub [_i286core + i286core_t.remainclock], ebx |
| mov ebx, ecx | mov ebx, ecx |
| cmp ecx, 000a2000h | cmp ecx, 000a2000h |
| jnc short wtram_a | jnc short wtram_a |
| Line 156 wcgwindow_e: pop ebx | Line 154 wcgwindow_e: pop ebx |
| or byte [_vramupdate + ebx], 1 | or byte [_vramupdate + ebx], 1 |
| or byte [_gdcs + gdcs_t.grphdisp], 1 | or byte [_gdcs + gdcs_t.grphdisp], 1 |
| mov ebx, [_vramop + vramop_t.vramwait] | mov ebx, [_vramop + vramop_t.vramwait] |
| sub [_nevent + nevent_t.remainclock], ebx | sub [_i286core + i286core_t.remainclock], ebx |
| pop ebx | pop ebx |
| ret | ret |
| Line 168 wcgwindow_e: pop ebx | Line 166 wcgwindow_e: pop ebx |
| or byte [_vramupdate + ebx], 2 | or byte [_vramupdate + ebx], 2 |
| or byte [_gdcs + gdcs_t.grphdisp], 2 | or byte [_gdcs + gdcs_t.grphdisp], 2 |
| mov ebx, [_vramop + vramop_t.vramwait] | mov ebx, [_vramop + vramop_t.vramwait] |
| sub [_nevent + nevent_t.remainclock], ebx | sub [_i286core + i286core_t.remainclock], ebx |
| pop ebx | pop ebx |
| ret | ret |
| Line 189 wcgwindow_e: pop ebx | Line 187 wcgwindow_e: pop ebx |
| or byte [_gdcs + gdcs_t.grphdisp], 1 | or byte [_gdcs + gdcs_t.grphdisp], 1 |
| grcg_rmw: mov ebx, [_vramop + vramop_t.grcgwait] | grcg_rmw: mov ebx, [_vramop + vramop_t.grcgwait] |
| sub [_nevent + nevent_t.remainclock], ebx | sub [_i286core + i286core_t.remainclock], ebx |
| mov ebx, dword [_grcg + grcg_t.mode] | mov ebx, dword [_grcg + grcg_t.mode] |
| mov bl, dl | mov bl, dl |
| not bl | not bl |
| Line 238 grcgrmw_end: pop ecx | Line 236 grcgrmw_end: pop ecx |
| or byte [_gdcs + gdcs_t.grphdisp], 1 | or byte [_gdcs + gdcs_t.grphdisp], 1 |
| grcg_tdw: mov ebx, [_vramop + vramop_t.grcgwait] | grcg_tdw: mov ebx, [_vramop + vramop_t.grcgwait] |
| sub [_nevent + nevent_t.remainclock], ebx | sub [_i286core + i286core_t.remainclock], ebx |
| mov bh, [_grcg + grcg_t.modereg] | mov bh, [_grcg + grcg_t.modereg] |
| shr bh, 1 | shr bh, 1 |
| jc short grcgtdw_r | jc short grcgtdw_r |
| Line 297 grcgtdw_end: pop ecx | Line 295 grcgtdw_end: pop ecx |
| ; normal memory | ; normal memory |
| align 16 | align 16 |
| @i286_rd: mov ebx, ecx | @i286_rd: mov ebx, ecx |
| and ebx, [_extmem + extmem_t.adrsmask] | and ebx, [_i286core + i286core_t.adrsmask] |
| mov al, [MAINMEMORY + ebx] | mov al, [MAINMEMORY + ebx] |
| pop ebx | pop ebx |
| ret | ret |
| Line 305 grcgtdw_end: pop ecx | Line 303 grcgtdw_end: pop ecx |
| ; font cg-window | ; font cg-window |
| align 16 | align 16 |
| @tram_rd: mov ebx, [_vramop + vramop_t.tramwait] | @tram_rd: mov ebx, [_vramop + vramop_t.tramwait] |
| sub [_nevent + nevent_t.remainclock], ebx | sub [_i286core + i286core_t.remainclock], ebx |
| cmp ecx, 0a4000h | cmp ecx, 0a4000h |
| jnc rcgwindow_s | jnc rcgwindow_s |
| rcgwindow_n: mov al, [MAINMEMORY + ecx] | rcgwindow_n: mov al, [MAINMEMORY + ecx] |
| Line 328 rcgwindow_s: cmp ecx, 0a5000h | Line 326 rcgwindow_s: cmp ecx, 0a5000h |
| align 16 | align 16 |
| @vram_r0: mov al, [VIDEOMEMORY + ecx] | @vram_r0: mov al, [VIDEOMEMORY + ecx] |
| mov ebx, [_vramop + vramop_t.vramwait] | mov ebx, [_vramop + vramop_t.vramwait] |
| sub [_nevent + nevent_t.remainclock], ebx | sub [_i286core + i286core_t.remainclock], ebx |
| pop ebx | pop ebx |
| ret | ret |
| Line 336 rcgwindow_s: cmp ecx, 0a5000h | Line 334 rcgwindow_s: cmp ecx, 0a5000h |
| align 16 | align 16 |
| @vram_r1: mov al, [VIDEOMEMORY + VRAM_STEP + ecx] | @vram_r1: mov al, [VIDEOMEMORY + VRAM_STEP + ecx] |
| mov ebx, [_vramop + vramop_t.vramwait] | mov ebx, [_vramop + vramop_t.vramwait] |
| sub [_nevent + nevent_t.remainclock], ebx | sub [_i286core + i286core_t.remainclock], ebx |
| pop ebx | pop ebx |
| ret | ret |
| Line 351 rcgwindow_s: cmp ecx, 0a5000h | Line 349 rcgwindow_s: cmp ecx, 0a5000h |
| and ecx, 7fffh | and ecx, 7fffh |
| grcg_tcr: mov ebx, [_vramop + vramop_t.grcgwait] | grcg_tcr: mov ebx, [_vramop + vramop_t.grcgwait] |
| sub [_nevent + nevent_t.remainclock], ebx | sub [_i286core + i286core_t.remainclock], ebx |
| mov al, 0 | mov al, 0 |
| mov bh, [_grcg + grcg_t.modereg] | mov bh, [_grcg + grcg_t.modereg] |
| shr bh, 1 | shr bh, 1 |
| Line 407 grcgtcr_end: not al | Line 405 grcgtcr_end: not al |
| ; BIOS or ITF | ; BIOS or ITF |
| align 16 | align 16 |
| @i286_itf: cmp byte [_itf], 0 | @i286_itf: cmp byte [_i286core + i286core_t.itfbank], 0 |
| jne readmem_itr | jne readmem_itr |
| mov al, [MAINMEMORY + ecx] | mov al, [MAINMEMORY + ecx] |
| pop ebx | pop ebx |
| Line 424 readmem_itr: mov ebx, ecx | Line 422 readmem_itr: mov ebx, ecx |
| ; normal memory | ; normal memory |
| align 16 | align 16 |
| @i286w_wt: mov ebx, ecx | @i286w_wt: mov ebx, ecx |
| and ebx, [_extmem + extmem_t.adrsmask] | and ebx, [_i286core + i286core_t.adrsmask] |
| mov [MAINMEMORY + ebx], dx | mov [MAINMEMORY + ebx], dx |
| pop ebx | pop ebx |
| ret | ret |
| Line 432 readmem_itr: mov ebx, ecx | Line 430 readmem_itr: mov ebx, ecx |
| ; tram write | ; tram write |
| align 16 | align 16 |
| @tramw_wt: mov ebx, [_vramop + vramop_t.tramwait] | @tramw_wt: mov ebx, [_vramop + vramop_t.tramwait] |
| sub [_nevent + nevent_t.remainclock], ebx | sub [_i286core + i286core_t.remainclock], ebx |
| mov ebx, ecx | mov ebx, ecx |
| cmp ecx, 000a1fffh | cmp ecx, 000a1fffh |
| jnc short wtramw_a | jnc short wtramw_a |
| Line 507 wcgwinw_odd: add ebx, dword [_cgwindow | Line 505 wcgwinw_odd: add ebx, dword [_cgwindow |
| or word [_vramupdate + ebx], 0101h | or word [_vramupdate + ebx], 0101h |
| or byte [_gdcs + gdcs_t.grphdisp], 1 | or byte [_gdcs + gdcs_t.grphdisp], 1 |
| mov ebx, [_vramop + vramop_t.vramwait] | mov ebx, [_vramop + vramop_t.vramwait] |
| sub [_nevent + nevent_t.remainclock], ebx | sub [_i286core + i286core_t.remainclock], ebx |
| pop ebx | pop ebx |
| ret | ret |
| Line 519 wcgwinw_odd: add ebx, dword [_cgwindow | Line 517 wcgwinw_odd: add ebx, dword [_cgwindow |
| or word [_vramupdate + ebx], 0202h | or word [_vramupdate + ebx], 0202h |
| or byte [_gdcs + gdcs_t.grphdisp], 2 | or byte [_gdcs + gdcs_t.grphdisp], 2 |
| mov ebx, [_vramop + vramop_t.vramwait] | mov ebx, [_vramop + vramop_t.vramwait] |
| sub [_nevent + nevent_t.remainclock], ebx | sub [_i286core + i286core_t.remainclock], ebx |
| pop ebx | pop ebx |
| ret | ret |
| Line 540 wcgwinw_odd: add ebx, dword [_cgwindow | Line 538 wcgwinw_odd: add ebx, dword [_cgwindow |
| or byte [_gdcs + gdcs_t.grphdisp], 1 | or byte [_gdcs + gdcs_t.grphdisp], 1 |
| grcgw_rmw: mov ebx, [_vramop + vramop_t.grcgwait] | grcgw_rmw: mov ebx, [_vramop + vramop_t.grcgwait] |
| sub [_nevent + nevent_t.remainclock], ebx | sub [_i286core + i286core_t.remainclock], ebx |
| push eax | push eax |
| mov ebx, dword [_grcg + grcg_t.mode] | mov ebx, dword [_grcg + grcg_t.mode] |
| mov bx, dx | mov bx, dx |
| Line 591 grcgwrmw_end: pop eax | Line 589 grcgwrmw_end: pop eax |
| or byte [_gdcs + gdcs_t.grphdisp], 1 | or byte [_gdcs + gdcs_t.grphdisp], 1 |
| grcgw_tdw: mov ebx, [_vramop + vramop_t.grcgwait] | grcgw_tdw: mov ebx, [_vramop + vramop_t.grcgwait] |
| sub [_nevent + nevent_t.remainclock], ebx | sub [_i286core + i286core_t.remainclock], ebx |
| mov ebx, [_grcg + grcg_t.mode] | mov ebx, [_grcg + grcg_t.mode] |
| test ebx, 010000h | test ebx, 010000h |
| jne short grcgwtdw_r | jne short grcgwtdw_r |
| Line 658 egcw_wtodd: | Line 656 egcw_wtodd: |
| ; normal memory | ; normal memory |
| align 16 | align 16 |
| @i286w_rd: mov ebx, ecx | @i286w_rd: mov ebx, ecx |
| and ebx, [_extmem + extmem_t.adrsmask] | and ebx, [_i286core + i286core_t.adrsmask] |
| mov ax, [MAINMEMORY + ebx] | mov ax, [MAINMEMORY + ebx] |
| pop ebx | pop ebx |
| ret | ret |
| Line 666 egcw_wtodd: | Line 664 egcw_wtodd: |
| ; font cg-window | ; font cg-window |
| align 16 | align 16 |
| @tramw_rd: mov ebx, [_vramop + vramop_t.tramwait] | @tramw_rd: mov ebx, [_vramop + vramop_t.tramwait] |
| sub [_nevent + nevent_t.remainclock], ebx | sub [_i286core + i286core_t.remainclock], ebx |
| cmp ecx, 0a3fffh | cmp ecx, 0a3fffh |
| jnc rcgwwindow_s | jnc rcgwwindow_s |
| mov ax, [MAINMEMORY + ecx] | mov ax, [MAINMEMORY + ecx] |
| Line 720 rcgwwindow_a4fff: mov ebx, dword [_cgwi | Line 718 rcgwwindow_a4fff: mov ebx, dword [_cgwi |
| align 16 | align 16 |
| @vramw_r0: mov ax, [VIDEOMEMORY + ecx] | @vramw_r0: mov ax, [VIDEOMEMORY + ecx] |
| mov ebx, [_vramop + vramop_t.vramwait] | mov ebx, [_vramop + vramop_t.vramwait] |
| sub [_nevent + nevent_t.remainclock], ebx | sub [_i286core + i286core_t.remainclock], ebx |
| pop ebx | pop ebx |
| ret | ret |
| Line 728 rcgwwindow_a4fff: mov ebx, dword [_cgwi | Line 726 rcgwwindow_a4fff: mov ebx, dword [_cgwi |
| align 16 | align 16 |
| @vramw_r1: mov ax, [VIDEOMEMORY + VRAM_STEP + ecx] | @vramw_r1: mov ax, [VIDEOMEMORY + VRAM_STEP + ecx] |
| mov ebx, [_vramop + vramop_t.vramwait] | mov ebx, [_vramop + vramop_t.vramwait] |
| sub [_nevent + nevent_t.remainclock], ebx | sub [_i286core + i286core_t.remainclock], ebx |
| pop ebx | pop ebx |
| ret | ret |
| Line 743 rcgwwindow_a4fff: mov ebx, dword [_cgwi | Line 741 rcgwwindow_a4fff: mov ebx, dword [_cgwi |
| and ecx, 7fffh | and ecx, 7fffh |
| grcgw_tcr: mov ebx, [_vramop + vramop_t.grcgwait] | grcgw_tcr: mov ebx, [_vramop + vramop_t.grcgwait] |
| sub [_nevent + nevent_t.remainclock], ebx | sub [_i286core + i286core_t.remainclock], ebx |
| mov ax, 0 | mov ax, 0 |
| mov ebx, [_grcg + grcg_t.mode] | mov ebx, [_grcg + grcg_t.mode] |
| test ebx, 010000h | test ebx, 010000h |
| Line 820 egcw_rdodd: | Line 818 egcw_rdodd: |
| ; BIOS or ITF | ; BIOS or ITF |
| align 16 | align 16 |
| @i286w_itf: cmp byte [_itf], 0 | @i286w_itf: cmp byte [_i286core + i286core_t.itfbank], 0 |
| jne readwmem_itr | jne readwmem_itr |
| mov ax, [MAINMEMORY + ecx] | mov ax, [MAINMEMORY + ecx] |
| pop ebx | pop ebx |