rdos/src/farptr.inc

47 lines
703 B
PHP

; reset segments
rstseg mov ax, cs
mov ds, ax
mov es, ax
ret
; copy to far memory
; IN es:bx far memory ptr (preserved)
; ds:dx local ptr (preserved)
; cx number of bytes to transfer
; OUT cx set to zero
; si & di trashed
stofar mov si, dx
mov di, bx
rep movsb
ret
; copy from far memory
; IN es:bx far memory ptr (preserved)
; ds:dx local ptr (preserved)
; cx number of bytes to copy
; OUT cx set to zero
; si & di trashed
lodfar call swpds
mov si, bx
mov di, dx
rep movsb
; exchange es and ds
swpds push ds
push es
pop ds
pop es
ret
; normalize ptr in ds:dx
norm mov ax, ds
mov cl, 4
push dx
ror dx, cl
and dh, 0xF
add ax, dx
mov ds, ax
pop dx
and dx, 0xF
ret