home *** CD-ROM | disk | FTP | other *** search
- ; ************
- ; * POKE.asm *
- ; *******************************************
- ; * Copyright TimeSlice, Inc. 1985, 86, 87. *
- ; *******************************************
- ;
- ;
- include ts.inc
- ;
- start_data
- end_data
- ;
- start_code
- ;
- start_struct
- mbr pkbp d_int
- mbr pkret d_ret
- mbr pkseg d_int
- mbr pkoff d_int
- mbr pkbuf d_ptr
- mbr pklen d_int
- end_struct pkstk
- ;
- ;****
- ;* POKE( SEG, OFFSET, BUF, LEN )
- ;****
- routine poke
- push bp ;save bp, si, di, es
- mov bp,sp ;reset base pointer
- push_sdi
- push ds
- push es
- cld
- ldint es,[bp].pkseg ;load source segment
- ldint di,[bp].pkoff ;load destination offset
- ldptr ds,si,[bp].pkbuf,d ;load source offset (in DGROUP)
- ldint cx,[bp].pklen ;load length (in bytes)
- test cx,1 ;odd number of bytes to move???
- jz poke0 ;if yes move 1 byte alone
- movsb
- poke0: shr cx,1 ;compute LEN in number of words
- repz movsw ;move LEN words
- pop es ;restore es, si, di, bp
- pop ds
- pop_sdi
- pop bp
- return poke
- ;
- end_code
-