home *** CD-ROM | disk | FTP | other *** search
- ; **************
- ; * REPMEM.asm *
- ; *******************************************
- ; * Copyright TimeSlice, Inc. 1985, 86, 87. *
- ; *******************************************
- ;
- ;
- ;
- include ts.inc
- ;
- start_data
- end_data
- ;
- start_code
- ;
- ;
- ;****
- ;* REPMEM( TO, TMPL, TSIZE, NTMPL )
- ;****
- start_struct
- mbr rmbp d_int
- mbr rmret d_ret
- mbr rmto d_ptr
- mbr rmtmpl d_ptr
- mbr rmtsize d_int
- mbr rmntmpl d_int
- end_struct rmstk
- ;
- routine repmem
- push bp ;save bp, si, di, es
- mov bp,sp ;reset base pointer
- push_sdi
- push ds
- push es
- cld
- ldptr ds,si,[bp].rmtmpl,d ;load tmplate
- ldptr es,di,[bp].rmto,d ;load destination
- ldint cx,[bp].rmtsize ;load tmplate length (in bytes)
- repz movsb
- ldptr ds,si,[bp].rmto,d ;load destination
- ldint ax,[bp].rmntmpl
- dec ax
- ldint bx,[bp].rmtsize
- imul bx
- mov cx,ax
- test cx,1 ;odd number of bytes to move???
- jz repm0 ;if yes move 1 byte alone
- movsb
- repm0: shr cx,1 ;compute LEN in number of words
- repz movsw ;move LEN words
- pop es
- pop ds
- pop_sdi
- pop bp
- return repmem
- ;
- end_code
-
-
-
-