--- np2/mem/x86/dmax86.x86 2005/03/16 03:53:45 1.2 +++ np2/mem/x86/dmax86.x86 2005/03/16 23:26:37 1.3 @@ -1,5 +1,5 @@ -%include '../mem/x86/dmax86.inc' +%include '../io/x86/iocore.inc' section .text @@ -10,48 +10,48 @@ section .text align 16 _dmax86: cmp byte [_dmac + dmac_t.working], byte 0 - je short dmap_nowork - mov eax, _dmac + dmac_t.dmach + je short .nowork mov cl, 1 -dmap_sea: test [_dmac + dmac_t.working], cl - jne short dmap_hit + mov eax, _dmac + dmac_t.dmach +.sea: test [_dmac + dmac_t.working], cl + jne short .hit add cl, cl - add eax, dmach_t.size - and cl, 15 - jne short dmap_sea -dmap_nowork: ret + add eax, byte dmach_t.size + test cl, 15 + jne short .sea +.nowork: ret -dmap_hit: push edi +.hit: push edi sub word [eax + dmach_t.leng], byte 1 mov edi, eax - jnc short dmap_exec + jnc short .exec or [_dmac + dmac_t.stat], cl not cl and [_dmac + dmac_t.working], cl mov ecx, DMAEXT_END call dword [edi + dmach_t.extproc] -dmap_exec: mov al, [edi + dmach_t.mode] - and al, 0ch - je short dmap_verify - cmp al, 04h - je short dmap_port2mem +.exec: mov al, [edi + dmach_t.mode] + and al, 0x0c + je short .verify + cmp al, 0x04 + je short .port2mem mov ecx, [edi + dmach_t.adrs] call @i286_memoryread@4 mov cl, al call dword [edi + dmach_t.outproc] - jmp short dmap_inccnt -dmap_verify: call dword [edi + dmach_t.inproc] - jmp short dmap_inccnt -dmap_port2mem: call dword [edi + dmach_t.inproc] + jmp short .inccnt +.verify: call dword [edi + dmach_t.inproc] + jmp short .inccnt +.port2mem: call dword [edi + dmach_t.inproc] mov ecx, [edi + dmach_t.adrs] mov dl, al call @i286_memorywrite@8 -dmap_inccnt: test byte [edi + dmach_t.mode], 20h - jne short dmap_adrsdec +.inccnt: test byte [edi + dmach_t.mode], 0x20 + jne short .adrsdec inc dword [edi + dmach_t.adrs] pop edi ret -dmap_adrsdec: dec dword [edi + dmach_t.adrs] +.adrsdec: dec dword [edi + dmach_t.adrs] pop edi ret