-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Tobias Weingartner wrote:
[...]
> One thing your teacher may not know is that x86 assembly includes the
> 32-bit environment, and (now) also a 64-bit environment. However, running
> 16-bit code under OpenBSD i386 is going to be somewhat difficult. We don't
> bother supplying 16-bit services, and only consume 16-bit services (from
the
> bios) for a few things necessary. It is hard, and somewhat error prone.
Linux has a thing called elksemu. It is, basically, a binary loader that will
allow you to run 16-bit ELKS binaries on 32-bit Linux. (ELKS is a
now-moribund
port of a Linux subset to 8086 class machines, using modified Minix
binaries.)
It intercepts int 0x80 and converts the 16-bit ELKS syscalls to 32-bit Linux
ones.
So, write(0, "Hello, world!\n", 14) becomes:
mov ax, 0
mov bx, _label
mov cx, 14
int 0x80
...which is, I believe, exactly what the OP wanted.
elksemu does all the dirty work with the vm86() syscall, which was put in for
dosemu. I know that dosemu works, or at least worked, on NetBSD and FreeBSD
- --- does OpenBSD have this functionality?
- --
bbb o=o=o< o=o=o=o=o=o=o=o<o=o=o=
bbb
http://www.cowlark.com
bbbbbbbbbbbbbbbbbbb
b
b "There does not now, nor will there ever, exist a programming language in
b which it is the least bit hard to write bad programs." --- Flon's Axiom
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFG7wDdf9E0noFvlzgRAgIeAJ9tDWiILb5ZvOHdQMFKt3IJx498DQCdHnvX
LCkFDYMfs7Boc07yqcTSVZw=
=/XPv
-----END PGP SIGNATURE-----