Diff for /np2/i286x/memory.x86 between versions 1.1.1.1 and 1.7

version 1.1.1.1, 2003/10/16 17:57:33 version 1.7, 2003/12/28 08:05:19
Line 6 Line 6
   
 section .bss  section .bss
   
         extern  _mem          global  _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  _mem    resb    0x200000
         extern  _extmemmng_size  
   
   
 MAINMEMORY              equ             _mem  MAINMEMORY              equ             _mem
Line 27  EXTMEMORY  equ  0 Line 25  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 78  extern @tracevramwrite_w@8 Line 78  extern @tracevramwrite_w@8
 %endmacro  %endmacro
 %endif  %endif
   
   
 section .text  section .text
   
 ; ----------------------------------------------------------------- write byte  ; ----------------------------------------------------------------- write byte
Line 99  section .text Line 98  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 106  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 155  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 167  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 188  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 237  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 265  grcgtdw_end:  pop  ecx Line 264  grcgtdw_end:  pop  ecx
 @egc_wt:                        VRAMTRACE  @egc_wt:                        VRAMTRACE
                                         pop             ebx                                          pop             ebx
 %if USE_EGCASM  %if USE_EGCASM
                                         jmp             _egca_write                                                     ; ver0.26                                          jmp             _egca_write
 %else  %else
                                         pushad                                          pushad
                                         call    @egc_write@8                                          call    @egc_write@8
Line 281  grcgtdw_end:  pop  ecx Line 280  grcgtdw_end:  pop  ecx
                                         shr             ebx, 12                                          shr             ebx, 12
                                         and             ebx, byte (3*4)                                          and             ebx, byte (3*4)
                                         add             ecx, [_extmem + extmem_t.pageptr + ebx]                                          add             ecx, [_extmem + extmem_t.pageptr + ebx]
                                         mov             [EXTMEMORY + ecx], dl                                   ; ver0.28                                          mov             [EXTMEMORY + ecx], dl
                                           pop             ecx
                                           pop             ebx
                                           ret
   
   @i286_wb:                       mov             [MAINMEMORY + 1c8000h - 0e8000h + ecx], dl
                                         pop             ecx                                          pop             ecx
                                         pop             ebx                                          pop             ebx
                                         ret                                          ret
Line 297  grcgtdw_end:  pop  ecx Line 301  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 309  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 332  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 340  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 355  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 382  grcgtcr_end:  not  al Line 386  grcgtcr_end:  not  al
                                         align   16                                          align   16
 @egc_rd:                        pop             ebx  @egc_rd:                        pop             ebx
 %if USE_EGCASM  %if USE_EGCASM
                                         jmp             _egca_read                                                      ; ver0.26                                          jmp             _egca_read
 %else  %else
                                         pushad                                          pushad
                                         call    @egc_read@4                                          call    @egc_read@4
Line 400  grcgtcr_end:  not  al Line 404  grcgtcr_end:  not  al
                                         shr             ebx, 12                                          shr             ebx, 12
                                         and             ebx, byte (3*4)                                          and             ebx, byte (3*4)
                                         add             ecx, [_extmem + extmem_t.pageptr + ebx]                                          add             ecx, [_extmem + extmem_t.pageptr + ebx]
                                         mov             al, [EXTMEMORY + ecx]                                   ; ver0.28                                          mov             al, [EXTMEMORY + ecx]
                                         pop             ecx                                          pop             ecx
                                         pop             ebx                                          pop             ebx
                                         ret                                          ret
   
 ; BIOS or ITF  ; BIOS or ITF
                                         align   16                                          align   16
 @i286_itf:                      cmp             byte [_itf], 0  @i286_rb:                       pop             ebx
                                         jne             readmem_itr                                          cmp             byte [_i286core + i286core_t.itfbank], 0
                                           jne             readmem_itf
                                         mov             al, [MAINMEMORY + ecx]                                          mov             al, [MAINMEMORY + ecx]
                                         pop             ebx  
                                         ret                                          ret
                                         align   16  readmem_itf:            mov             al, [MAINMEMORY + VRAM_STEP + ecx]
 readmem_itr:            mov             ebx, ecx  
                                         and             ebx, 00007fffh  
                                         mov             al, [MAINMEMORY + ITF_ADRS + ebx]  
                                         pop             ebx  
                                         ret                                          ret
   
 ; ----------------------------------------------------------------- write word  ; ----------------------------------------------------------------- write word
Line 424  readmem_itr:  mov  ebx, ecx Line 424  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 432  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 507  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 519  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 540  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 591  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 618  grcgwtdw_end:  pop  ecx Line 618  grcgwtdw_end:  pop  ecx
 @egcw_wt:                       VRAMTRACE_W  @egcw_wt:                       VRAMTRACE_W
                                         pop             ebx                                          pop             ebx
 %if USE_EGCASM  %if USE_EGCASM
                                         jmp             _egca_write_w                                           ; ver0.26                                          jmp             _egca_write_w
 %else  %else
                                         test    ecx, 1                                          test    ecx, 1
                                         jne             short egcw_wtodd                                          jne             short egcw_wtodd
Line 648  egcw_wtodd: Line 648  egcw_wtodd:
                                         shr             ebx, 12                                          shr             ebx, 12
                                         and             ebx, byte (3*4)                                          and             ebx, byte (3*4)
                                         add             ecx, [_extmem + extmem_t.pageptr + ebx]                                          add             ecx, [_extmem + extmem_t.pageptr + ebx]
                                         mov             [EXTMEMORY + ecx], dx                                   ; ver0.28                                          mov             [EXTMEMORY + ecx], dx
                                           pop             ecx
                                           pop             ebx
                                           ret
   
   @i286w_wb:                      mov             [MAINMEMORY + 1c8000h - 0e8000h + ecx], dx
                                         pop             ecx                                          pop             ecx
                                         pop             ebx                                          pop             ebx
                                         ret                                          ret
Line 658  egcw_wtodd: Line 663  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 671  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 725  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 733  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 748  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 776  grcgwtcr_end:  not  ax Line 781  grcgwtcr_end:  not  ax
                                         test    ecx, 1                                          test    ecx, 1
                                         jne             short egcw_rdodd                                          jne             short egcw_rdodd
 %if USE_EGCASM  %if USE_EGCASM
                                         jmp             _egca_read_w                                            ; ver0.26                                          jmp             _egca_read_w
 %else  %else
                                         pushad                                          pushad
                                         call    @egc_read_w@4                                          call    @egc_read_w@4
Line 786  grcgwtcr_end:  not  ax Line 791  grcgwtcr_end:  not  ax
 %endif  %endif
   
 egcw_rdodd:  egcw_rdodd:
 %if USE_EGCASM                                                                                          ; ver0.26  %if USE_EGCASM
                                         inc             ecx                                          inc             ecx
                                         call    _egca_read                                          call    _egca_read
                                         mov             ah, al                                          mov             ah, al
Line 813  egcw_rdodd: Line 818  egcw_rdodd:
                                         shr             ebx, 12                                          shr             ebx, 12
                                         and             ebx, byte (3*4)                                          and             ebx, byte (3*4)
                                         add             ecx, [_extmem + extmem_t.pageptr + ebx]                                          add             ecx, [_extmem + extmem_t.pageptr + ebx]
                                         mov             ax, [EXTMEMORY + ecx]                                   ; ver0.28                                          mov             ax, [EXTMEMORY + ecx]
                                         pop             ecx                                          pop             ecx
                                         pop             ebx                                          pop             ebx
                                         ret                                          ret
   
 ; BIOS or ITF  ; BIOS or ITF
                                         align   16                                          align   16
 @i286w_itf:                     cmp             byte [_itf], 0  @i286w_rb:                      pop             ebx
                                         jne             readwmem_itr                                          cmp             byte [_i286core + i286core_t.itfbank], 0
                                           jne             readwmem_itf
                                         mov             ax, [MAINMEMORY + ecx]                                          mov             ax, [MAINMEMORY + ecx]
                                         pop             ebx  
                                         ret                                          ret
                                         align   16  readwmem_itf:           mov             ax, [MAINMEMORY + VRAM_STEP + ecx]
 readwmem_itr:           mov             ebx, ecx  
                                         and             ebx, 00007fffh  
                                         mov             ax, [MAINMEMORY + ITF_ADRS + ebx]  
                                         pop             ebx  
                                         ret                                          ret
   
   
 section .data  section .data
   
 ; ---------------------------------------------------------------------- table  ; ---------------------------------------------------------------------- table
   
         global  _memory_write  
         global  _memory_read          global  _memory_read
           global  _memory_write
   
   _memory_read    dd      @i286_rd,               @i286_rd                ; 00
                                   dd      @i286_rd,               @i286_rd                ; 10
                                   dd      @i286_rd,               @i286_rd                ; 20
                                   dd      @i286_rd,               @i286_rd                ; 30
                                   dd      @i286_rd,               @i286_rd                ; 40
                                   dd      @i286_rd,               @i286_rd                ; 50
                                   dd      @i286_rd,               @i286_rd                ; 60
                                   dd      @i286_rd,               @i286_rd                ; 70
                                   dd      @i286_rd,               @i286_rd                ; 80
                                   dd      @i286_rd,               @i286_rd                ; 90
                                   dd      @tram_rd,               @vram_r0                ; a0
                                   dd      @vram_r0,               @vram_r0                ; b0
                                   dd      @emmc_rd,               @emmc_rd                ; c0
                                   dd      @i286_rd,               @i286_rd                ; d0
                                   dd      @vram_r0,               @i286_rd                ; e0
                                   dd      @i286_rd,               @i286_rb                ; f0
   
 _memory_write   dd      @i286_wt,               @i286_wt                ; 00  _memory_write   dd      @i286_wt,               @i286_wt                ; 00
                                 dd      @i286_wt,               @i286_wt                ; 10                                  dd      @i286_wt,               @i286_wt                ; 10
Line 856  _memory_write dd @i286_wt,  @i286_wt  ;  Line 875  _memory_write dd @i286_wt,  @i286_wt  ; 
                                 dd      @vram_w0,               @i286_wn                ; e0                                  dd      @vram_w0,               @i286_wn                ; e0
                                 dd      @i286_wn,               @i286_wn                ; f0                                  dd      @i286_wn,               @i286_wn                ; f0
   
 _memory_read    dd      @i286_rd,               @i286_rd                ; 00  _memword_read   dd      @i286w_rd,              @i286w_rd               ; 00
                                 dd      @i286_rd,               @i286_rd                ; 10                                  dd      @i286w_rd,              @i286w_rd               ; 10
                                 dd      @i286_rd,               @i286_rd                ; 20                                  dd      @i286w_rd,              @i286w_rd               ; 20
                                 dd      @i286_rd,               @i286_rd                ; 30                                  dd      @i286w_rd,              @i286w_rd               ; 30
                                 dd      @i286_rd,               @i286_rd                ; 40                                  dd      @i286w_rd,              @i286w_rd               ; 40
                                 dd      @i286_rd,               @i286_rd                ; 50                                  dd      @i286w_rd,              @i286w_rd               ; 50
                                 dd      @i286_rd,               @i286_rd                ; 60                                  dd      @i286w_rd,              @i286w_rd               ; 60
                                 dd      @i286_rd,               @i286_rd                ; 70                                  dd      @i286w_rd,              @i286w_rd               ; 70
                                 dd      @i286_rd,               @i286_rd                ; 80                                  dd      @i286w_rd,              @i286w_rd               ; 80
                                 dd      @i286_rd,               @i286_rd                ; 90                                  dd      @i286w_rd,              @i286w_rd               ; 90
                                 dd      @tram_rd,               @vram_r0                ; a0                                  dd      @tramw_rd,              @vramw_r0               ; a0
                                 dd      @vram_r0,               @vram_r0                ; b0                                  dd      @vramw_r0,              @vramw_r0               ; b0
                                 dd      @emmc_rd,               @emmc_rd                ; c0                                  dd      @emmcw_rd,              @emmcw_rd               ; c0
                                 dd      @i286_rd,               @i286_rd                ; d0                                  dd      @i286w_rd,              @i286w_rd               ; d0
                                 dd      @vram_r0,               @i286_rd                ; e0                                  dd      @vramw_r0,              @i286w_rd               ; e0
                                 dd      @i286_rd,               @i286_itf               ; f0                                  dd      @i286w_rd,              @i286w_rb               ; f0
   
 _memword_write  dd      @i286w_wt,              @i286w_wt               ; 00  _memword_write  dd      @i286w_wt,              @i286w_wt               ; 00
                                 dd      @i286w_wt,              @i286w_wt               ; 10                                  dd      @i286w_wt,              @i286w_wt               ; 10
Line 890  _memword_write dd @i286w_wt,  @i286w_wt  Line 909  _memword_write dd @i286w_wt,  @i286w_wt 
                                 dd      @vramw_w0,              @i286_wn                ; e0                                  dd      @vramw_w0,              @i286_wn                ; e0
                                 dd      @i286_wn,               @i286_wn                ; f0                                  dd      @i286_wn,               @i286_wn                ; f0
   
 _memword_read   dd      @i286w_rd,              @i286w_rd               ; 00  section .rdata
                                 dd      @i286w_rd,              @i286w_rd               ; 10  
                                 dd      @i286w_rd,              @i286w_rd               ; 20  
                                 dd      @i286w_rd,              @i286w_rd               ; 30  
                                 dd      @i286w_rd,              @i286w_rd               ; 40  
                                 dd      @i286w_rd,              @i286w_rd               ; 50  
                                 dd      @i286w_rd,              @i286w_rd               ; 60  
                                 dd      @i286w_rd,              @i286w_rd               ; 70  
                                 dd      @i286w_rd,              @i286w_rd               ; 80  
                                 dd      @i286w_rd,              @i286w_rd               ; 90  
                                 dd      @tramw_rd,              @vramw_r0               ; a0  
                                 dd      @vramw_r0,              @vramw_r0               ; b0  
                                 dd      @emmcw_rd,              @emmcw_rd               ; c0  
                                 dd      @i286w_rd,              @i286w_rd               ; d0  
                                 dd      @vramw_r0,              @i286w_rd               ; e0  
                                 dd      @i286w_rd,              @i286w_itf              ; f0  
   
 _vram_write             dd      @vram_w0,               @vram_w1                ; 00  memmap                  dd      @i286_rd,               @i286_rb                ; NEC
                                 dd      @vram_w0,               @vram_w1                                  dd      @i286_wn,               @i286_wn
                                 dd      @vram_w0,               @vram_w1                ; 40                                  dd      @i286w_rd,              @i286w_rb
                                 dd      @vram_w0,               @vram_w1                                  dd      @i286_wn,               @i286_wn
                                 dd      @grcg_tdw0,             @grcg_tdw1              ; 80 tdw/tcr  
                                 dd      @egc_wt,                @egc_wt  
                                 dd      @grcg_rmw0,             @grcg_rmw1              ; c0 rmw  
                                 dd      @egc_wt,                @egc_wt  
   
 _vram_read              dd      @vram_r0,               @vram_r1                ; 00                                  dd      @i286_rb,               @i286_rb                ; EPSON
                                   dd      @i286_wt,               @i286_wb
                                   dd      @i286w_rb,              @i286w_rb
                                   dd      @i286w_wt,              @i286w_wb
   
   
   vram_read               dd      @vram_r0,               @vram_r1                ; 00
                                 dd      @vram_r0,               @vram_r1                                  dd      @vram_r0,               @vram_r1
                                 dd      @vram_r0,               @vram_r1                ; 40                                  dd      @vram_r0,               @vram_r1                ; 40
                                 dd      @vram_r0,               @vram_r1                                  dd      @vram_r0,               @vram_r1
Line 925  _vram_read  dd @vram_r0,  @vram_r1  ; 00 Line 931  _vram_read  dd @vram_r0,  @vram_r1  ; 00
                                 dd      @vram_r0,               @vram_r1                ; c0 rmw                                  dd      @vram_r0,               @vram_r1                ; c0 rmw
                                 dd      @egc_rd,                @egc_rd                                  dd      @egc_rd,                @egc_rd
   
 _vramw_write    dd      @vramw_w0,              @vramw_w1               ; 00  vram_write              dd      @vram_w0,               @vram_w1                ; 00
                                 dd      @vramw_w0,              @vramw_w1                                  dd      @vram_w0,               @vram_w1
                                 dd      @vramw_w0,              @vramw_w1               ; 40                                  dd      @vram_w0,               @vram_w1                ; 40
                                 dd      @vramw_w0,              @vramw_w1                                  dd      @vram_w0,               @vram_w1
                                 dd      @grcgw_tdw0,    @grcgw_tdw1             ; 80 tdw/tcr                                  dd      @grcg_tdw0,             @grcg_tdw1              ; 80 tdw/tcr
                                 dd      @egcw_wt,               @egcw_wt                                  dd      @egc_wt,                @egc_wt
                                 dd      @grcgw_rmw0,    @grcgw_rmw1             ; c0 rmw                                  dd      @grcg_rmw0,             @grcg_rmw1              ; c0 rmw
                                 dd      @egcw_wt,               @egcw_wt                                  dd      @egc_wt,                @egc_wt
   
 _vramw_read             dd      @vramw_r0,              @vramw_r1               ; 00  vramw_read              dd      @vramw_r0,              @vramw_r1               ; 00
                                 dd      @vramw_r0,              @vramw_r1                                  dd      @vramw_r0,              @vramw_r1
                                 dd      @vramw_r0,              @vramw_r1               ; 40                                  dd      @vramw_r0,              @vramw_r1               ; 40
                                 dd      @vramw_r0,              @vramw_r1                                  dd      @vramw_r0,              @vramw_r1
Line 943  _vramw_read  dd @vramw_r0,  @vramw_r1  ; Line 949  _vramw_read  dd @vramw_r0,  @vramw_r1  ;
                                 dd      @vramw_r0,              @vramw_r1               ; c0 rmw                                  dd      @vramw_r0,              @vramw_r1               ; c0 rmw
                                 dd      @egcw_rd,               @egcw_rd                                  dd      @egcw_rd,               @egcw_rd
   
   vramw_write             dd      @vramw_w0,              @vramw_w1               ; 00
                                   dd      @vramw_w0,              @vramw_w1
                                   dd      @vramw_w0,              @vramw_w1               ; 40
                                   dd      @vramw_w0,              @vramw_w1
                                   dd      @grcgw_tdw0,    @grcgw_tdw1             ; 80 tdw/tcr
                                   dd      @egcw_wt,               @egcw_wt
                                   dd      @grcgw_rmw0,    @grcgw_rmw1             ; c0 rmw
                                   dd      @egcw_wt,               @egcw_wt
   
   
   
 section .text  section .text
   
           global  @i286_memorymap@4
         global  @i286_vram_dispatch@4          global  @i286_vram_dispatch@4
   
         global  @i286_memorywrite@8          global  @i286_memorywrite@8
Line 1084  readmemory_b: Line 1101  readmemory_b:
                                         mov             ax, 0ffffh                                          mov             ax, 0ffffh
                                         ret                                          ret
   
   
                                           align   16
   @i286_memorymap@4:      and             ecx, 1
                                           shl             ecx, 5
                                           lea             ecx, [memmap + ecx]
                                           mov             edx, _memory_read
                                           mov             eax, [ecx]
                                           mov             [edx + 74h], eax
                                           mov             [edx + 78h], eax
                                           mov             eax, [ecx+4]
                                           mov             [edx + 7ch], eax
                                           mov             eax, [ecx+8]
                                           mov             edx, _memory_write
                                           mov             [edx + 68h], eax
                                           mov             [edx + 6ch], eax
                                           mov             eax, [ecx+12]
                                           mov             [edx + 74h], eax
                                           mov             [edx + 78h], eax
                                           mov             [edx + 7ch], eax
                                           mov             eax, [ecx+16]
                                           mov             edx, _memword_read
                                           mov             [edx + 74h], eax
                                           mov             [edx + 78h], eax
                                           mov             eax, [ecx+20]
                                           mov             [edx + 7ch], eax
                                           mov             eax, [ecx+24]
                                           mov             edx, _memword_write
                                           mov             [edx + 68h], eax
                                           mov             [edx + 6ch], eax
                                           mov             eax, [ecx+28]
                                           mov             [edx + 74h], eax
                                           mov             [edx + 78h], eax
                                           mov             [edx + 7ch], eax
                                           ret
   
                                         align   16                                          align   16
 @i286_vram_dispatch@4:  @i286_vram_dispatch@4:
                                         mov             edx, ecx                                          mov             edx, ecx
                                         and             edx, byte 15                                          and             edx, byte 15
                                         mov             eax, [_vram_write + edx*4]                                          mov             eax, [vram_read + edx*4]
                                         mov             [_memory_write + 54h], eax              ; VRAM_B  
                                         mov             [_memory_write + 58h], eax              ; VRAM_R  
                                         mov             [_memory_write + 5ch], eax              ; VRAM_G  
                                         mov             [_memory_write + 70h], eax              ; VRAM_E  
                                         mov             eax, [_vram_read + edx*4]  
                                         mov             [_memory_read + 54h], eax               ; VRAM_B                                          mov             [_memory_read + 54h], eax               ; VRAM_B
                                         mov             [_memory_read + 58h], eax               ; VRAM_R                                          mov             [_memory_read + 58h], eax               ; VRAM_R
                                         mov             [_memory_read + 5ch], eax               ; VRAM_G                                          mov             [_memory_read + 5ch], eax               ; VRAM_G
                                         mov             [_memory_read + 70h], eax               ; VRAM_E                                          mov             [_memory_read + 70h], eax               ; VRAM_E
                                         mov             eax, [_vramw_write + edx*4]                                          mov             eax, [vram_write + edx*4]
                                         mov             [_memword_write + 54h], eax             ; VRAM_B                                          mov             [_memory_write + 54h], eax              ; VRAM_B
                                         mov             [_memword_write + 58h], eax             ; VRAM_R                                          mov             [_memory_write + 58h], eax              ; VRAM_R
                                         mov             [_memword_write + 5ch], eax             ; VRAM_G                                          mov             [_memory_write + 5ch], eax              ; VRAM_G
                                         mov             [_memword_write + 70h], eax             ; VRAM_E                                          mov             [_memory_write + 70h], eax              ; VRAM_E
                                         mov             eax, [_vramw_read + edx*4]                                          mov             eax, [vramw_read + edx*4]
                                         mov             [_memword_read + 54h], eax              ; VRAM_B                                          mov             [_memword_read + 54h], eax              ; VRAM_B
                                         mov             [_memword_read + 58h], eax              ; VRAM_R                                          mov             [_memword_read + 58h], eax              ; VRAM_R
                                         mov             [_memword_read + 5ch], eax              ; VRAM_G                                          mov             [_memword_read + 5ch], eax              ; VRAM_G
                                         mov             [_memword_read + 70h], eax              ; VRAM_E                                          mov             [_memword_read + 70h], eax              ; VRAM_E
                                           mov             eax, [vramw_write + edx*4]
                                           mov             [_memword_write + 54h], eax             ; VRAM_B
                                           mov             [_memword_write + 58h], eax             ; VRAM_R
                                           mov             [_memword_write + 5ch], eax             ; VRAM_G
                                           mov             [_memword_write + 70h], eax             ; VRAM_E
                                         test    ecx, 10h                                          test    ecx, 10h
                                         jne             short degtaldispatch_e                                          jne             short degtaldispatch_e
                                         mov             eax, @i286_nonram_w@8                                          mov             eax, @i286_nonram_w@8

Removed from v.1.1.1.1  
changed lines
  Added in v.1.7


RetroPC.NET-CVS <cvs@retropc.net>