;       F-BASIC386 Memory Editor Subloutine
;
;file name: MEDIT.REX
;asm:       386|ASM
;copy:      free
;copyright: でんちゃん♪    DW0001 電脳わ〜るど
;date:      Fri, 30 Aug. 1991 Ver1.10


        .386p
CODE    segment dword public ER use32 'CODE'
        assume  cs:CODE

;       <<  Memory block read  >>
;                               CALLM(0,segment,offset,buffer_address)
read    proc    near
        push    esi
        push    edi
        mov     ebx,12[esp]
        mov     esi,16[esp]
        mov     edi,20[esp]
        add     edi,252
        mov     ds,bx
        mov     ecx,64      ;       memory push
        cld
#loop1:
        lodsd
        push    eax
        dec     ecx
        jne     #loop1
        mov     ax,0014h
        mov     ds,ax
        mov     ecx,64      ;       buffer pop
        std
#loop2:
        pop     eax
        stosd
        dec     ecx
        jne     #loop2
;
        pop     edi
        pop     esi
        ret
read    endp

;       <<  Memory block write  >>
;                               CALLM(&h35,segment,offset,buffer_address)
write   proc    near
        push    esi
        push    edi
        mov     ebx,12[esp]
        mov     esi,20[esp]
        mov     edi,16[esp]
        add     edi,252
        mov     ecx,64      ; buffer push
        cld
#loop3:
        lodsd
        push    eax
        dec     ecx
        jne     #loop3
        mov     ds,bx
        mov     ecx,64      ; memory pop
        std
#loop4:
        pop     eax
        stosd
        dec     ecx
        jne     #loop4
;
        mov     ax,0014h
        mov     ds,ax
        pop     edi
        pop     esi
        ret
write   endp

CODE    ends
        END
